Greasy Fork 支持简体中文。

Forum.Softpedia.Com Show Full Links Toggle

Toggles to showing the full links within the posts by pressing Ctrl + ] for forum.softpedia.com . Press Ctrl + ] again to return to the original content

// ==UserScript==
// @name           Forum.Softpedia.Com Show Full Links Toggle
// @name:ro        Forum.Softpedia.Com Comutator Afisare Link-uri Complete/ in Intregime/ pe Deplin
// @author         NWP
// @description    Toggles to showing the full links within the posts by pressing Ctrl + ] for forum.softpedia.com . Press Ctrl + ] again to return to the original content
// @description:ro Comuta pentru a arata link-urile in intregime din postari prin apasarea Ctrl + ] pentru forum.softpedia.com . Apasa Ctrl + ] din nou pentru a reveni la continutul initial
// @namespace      https://greasyfork.org/users/877912
// @version        0.3
// @license        MIT
// @match          https://forum.softpedia.com/topic/*
// @grant          none
// ==/UserScript==

(function() {
    'use strict';

    let isExpanded = true;
    let originalContents = new Map();

    function storeOriginalContent() {
        const posts = document.querySelectorAll('div[itemprop="commentText"].post.entry-content');

        posts.forEach((post, index) => {
            if (!originalContents.has(index)) {
                originalContents.set(index, post.innerHTML);
            }
        });
    }

    function expandAndDisplayLinks() {
        const posts = document.querySelectorAll('div[itemprop="commentText"].post.entry-content');

        posts.forEach(post => {
            const links = post.querySelectorAll('a.bbc_url, a[target="_blank"]');

            links.forEach(link => {
                if (link.href && link.textContent) {
                    if (link.href.startsWith('http://<iframe')) {
                        const inaccessibleMessage = document.createTextNode(' (link-ul nu poate fi accesat)');
                        link.parentNode.insertBefore(inaccessibleMessage, link.nextSibling);
                    } else if (link.href === link.textContent || link.textContent.startsWith('http')) {
                        link.textContent = link.href.replace("http:", "https:");
                    } else if (link.rel === 'noopener' || link.target === '_blank' && link.href.includes('softpedia.com')) {
                        const spaceAndBracketOpen = document.createTextNode(' (');
                        const bracketClose = document.createTextNode(')');

                        const fullUrlLink = document.createElement('a');
                        fullUrlLink.href = link.href;
                        fullUrlLink.textContent = link.href.replace("http:", "https:");
                        fullUrlLink.target = '_blank';
                        fullUrlLink.rel = 'noopener';
                        fullUrlLink.title = link.title;
                        fullUrlLink.className = link.className;

                        link.parentNode.insertBefore(spaceAndBracketOpen, link.nextSibling);
                        link.parentNode.insertBefore(fullUrlLink, spaceAndBracketOpen.nextSibling);
                        link.parentNode.insertBefore(bracketClose, fullUrlLink.nextSibling);
                    }
                }
            });
        });
    }

    function revertToOriginalContent() {
        const posts = document.querySelectorAll('div[itemprop="commentText"].post.entry-content');

        posts.forEach((post, index) => {
            if (originalContents.has(index)) {
                post.innerHTML = originalContents.get(index);
            }
        });
    }

    function toggleExpansion() {
        if (isExpanded) {
            revertToOriginalContent();
        } else {
            expandAndDisplayLinks();
        }
        isExpanded = !isExpanded;
    }

    window.addEventListener('keydown', function(event) {
        if (event.ctrlKey && event.key === ']') {
            toggleExpansion();
        }
    });

    storeOriginalContent();
    toggleExpansion();
})();