Copy URL with Fragment ID

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

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

// ==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);
    });
})();