Copy URL with Fragment ID

Extracts fragment ID and idiom text and adds useful buttons for Wikidata Lexemes

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         Copy URL with Fragment ID
// @namespace    svenska.se
// @version      1.3
// @description  Extracts fragment ID and idiom text and adds useful buttons for Wikidata Lexemes
// @author       Nizo Priskorn
// @match        https://svenska.se/so/*
// @license      GPLv3+
// @grant        none
// ==/UserScript==
(function() {
    // console.log("violentmonkey running");
    'use strict';

    // Function to add copy button for URL with fragment
    function addCopyURLButton(div, fragmentId) {
        // Create a copy button for URL
        var copyURLButton = document.createElement('button');
        copyURLButton.textContent = 'Copy URL with Fragment';
        copyURLButton.style.marginLeft = '10px';

        // Add click event listener to URL copy button
        copyURLButton.addEventListener('click', function() {
            // Copy URL with fragment ID to clipboard
            var urlWithFragment = window.location.href + '#' + fragmentId;
            navigator.clipboard.writeText(urlWithFragment).then(function() {
                console.log('URL with fragment copied to clipboard:', urlWithFragment);
                // alert('URL with fragment copied to clipboard: ' + urlWithFragment);
            }, function(err) {
                console.error('Failed to copy:', err);
            });
        });

        // Append URL copy button to the div
        div.appendChild(copyURLButton);
    }

    // Function to add copy button for idiom text
    function addCopyIdiomButton(div, idiomText) {
        // Create a copy button for idiom text
        var copyIdiomButton = document.createElement('button');
        copyIdiomButton.textContent = 'Copy Idiom Text';
        copyIdiomButton.style.marginLeft = '10px';

        // Add click event listener to idiom text copy button
        copyIdiomButton.addEventListener('click', function() {
            // Copy idiom text to clipboard
            navigator.clipboard.writeText(idiomText).then(function() {
                console.log('Idiom text copied to clipboard:', idiomText);
                // alert('Idiom text copied to clipboard: ' + idiomText);
            }, function(err) {
                console.error('Failed to copy:', err);
            });
        });

        // Append idiom text copy button to the div
        div.appendChild(copyIdiomButton);
    }

    // Function to add search button
    function addOrdiaButton(div, idiomText) {
        // Create a search button
        var searchButton = document.createElement('button');
        searchButton.textContent = 'Lookup idiom using Ordia';
        searchButton.style.marginLeft = '10px';

        // Add click event listener to search button
        searchButton.addEventListener('click', function() {
            // Open new tab to search for idiom text
            var searchUrl = 'https://ordia.toolforge.org/search?q=' + encodeURIComponent(idiomText);
            window.open(searchUrl, '_blank');
        });

        // Append search button to the div
        div.appendChild(searchButton);
    }

    // Function to add search button for Riksdagen
    function addRiksdagenSearchButton(div, idiomText) {
        // Create a search button for Riksdagen
        var riksdagenSearchButton = document.createElement('button');
        riksdagenSearchButton.textContent = 'Search Riksdagen';
        riksdagenSearchButton.style.marginLeft = '10px';

        var quotedIdiomText = '"' + idiomText + '"';
        // Add click event listener to Riksdagen search button
        riksdagenSearchButton.addEventListener('click', function() {
            // Open new tab to search for idiom text on Riksdagen
            var searchUrl = 'https://www.riksdagen.se/sv/sok/?sok=' + encodeURIComponent(quotedIdiomText);
            window.open(searchUrl, '_blank');
        });

        // Append Riksdagen search button to the div
        div.appendChild(riksdagenSearchButton);
    }

  // Find all div elements with class "idiom"
    var idiomDivs = document.querySelectorAll('div.idiom');

    // Loop through each div
    idiomDivs.forEach(function(div) {
        // Extract fragment ID
        var fragmentId = div.id;

        // Extract idiom text
        var idiomText = div.querySelector('span.fras').textContent;

        // Add copy button for URL with fragment
        addCopyURLButton(div, fragmentId);

        // Add copy button for idiom text
        addCopyIdiomButton(div, idiomText);

        // Add search button
        addOrdiaButton(div, idiomText);

        // Add search button for Riksdagen
        addRiksdagenSearchButton(div, idiomText);
    });
})();