Jump to content

MediaWiki:Common.js: Difference between revisions

From International Treaty Law Wiki
No edit summary
Tag: Reverted
No edit summary
Tag: Reverted
Line 210: Line 210:


             /* =========================================================
             /* =========================================================
            /* =========================================================
              VECTOR-2022 ACTION TOOLBAR (TOOLS-MENÜ)
  VECTOR-2022 ACTION TOOLBAR (TOOLS-MENÜ)
            ========================================================= */
========================================================= */


if (mw.config.get('wgNamespaceNumber') === 0) {
            if (mw.config.get('wgNamespaceNumber') === 0) {


    var toolbar =
                var toolbar =
        document.querySelector(
                    document.querySelector(
            '#vector-page-tools .vector-menu-content-list'
                        '#vector-page-tools .vector-menu-content-list'
        );
                    );


    if (toolbar && !document.getElementById('mw-custom-toolbar-buttons')) {
                if (toolbar && !document.getElementById('mw-custom-toolbar-buttons')) {


        var currentTitle = encodeURIComponent(wikiTitle);
                    var currentTitle = encodeURIComponent(wikiTitle);


        var toolbarHtml = `
                    var toolbarHtml = `
        <div id="mw-custom-toolbar-buttons">
                    <div id="mw-custom-toolbar-buttons">


            <li class="vector-menu-content-list-item">
                        <li class="vector-menu-content-list-item">
                <a href="#" class="mw-share-trigger" title="Share this page">Share</a>
                            <a href="#" class="mw-share-trigger" title="Share this page">Share</a>
            </li>
                        </li>


            <li class="vector-menu-content-list-item">
                        <li class="vector-menu-content-list-item">
                <a href="#" class="mw-print-trigger" title="Download clean PDF">PDF</a>
                            <a href="#" class="mw-print-trigger" title="Download clean PDF">PDF</a>
            </li>
                        </li>


            <li class="vector-menu-content-list-item">
                        <li class="vector-menu-content-list-item">
                <a href="https://cse.google.com/cse?cx=86021a982e3a14848&q=${currentTitle}"
                            <a href="https://cse.google.com/cse?cx=86021a982e3a14848&q=${currentTitle}"
                  target="_blank" rel="noopener noreferrer">Special Search</a>
                              target="_blank" rel="noopener noreferrer">Special Search</a>
            </li>
                        </li>


            <li class="vector-menu-content-list-item">
                        <li class="vector-menu-content-list-item">
                <a href="https://github.com/MrAnonymousNWO/One_World/wiki/search?q=${currentTitle}"
                            <a href="https://github.com/MrAnonymousNWO/One_World/wiki/search?q=${currentTitle}"
                  target="_blank" rel="noopener noreferrer">One World Wiki</a>
                              target="_blank" rel="noopener noreferrer">One World Wiki</a>
            </li>
                        </li>


            <li class="vector-menu-content-list-item">
                        <li class="vector-menu-content-list-item">
                <a href="https://github.com/ET-Pioneer/Electric-Technocracy-Pioneers-Community/wiki/search?q=${currentTitle}"
                            <a href="https://github.com/ET-Pioneer/Electric-Technocracy-Pioneers-Community/wiki/search?q=${currentTitle}"
                  target="_blank" rel="noopener noreferrer">E.Tech. Wiki</a>
                              target="_blank" rel="noopener noreferrer">E.Tech. Wiki</a>
            </li>
                        </li>


        </div>
                    </div>
        `;
                    `;


        toolbar.insertAdjacentHTML('beforeend', toolbarHtml);
                    toolbar.insertAdjacentHTML('beforeend', toolbarHtml);
    }
                }
}
            }
/* =========================================================
/* =========================================================
   GLOBAL EVENT DELEGATION
   GLOBAL EVENT DELEGATION
Line 793: Line 792:


     });
     });
/* =========================================================
/* =========================================================
   DUPLICATE TOOLBAR (auskommentiert, bleibt erhalten aber inaktiv)
   DUPLICATE TOOLBAR (auskommentiert, bleibt erhalten aber inaktiv)
   Ich habe den originalen Insertions‑Block hier auskommentiert, damit
   Die originale Insertions‑Logik ist hier auskommentiert, damit
   die Sidebar‑Links funktionieren ohne doppelte sichtbare Toolbar.
   die Sidebar‑Buttons nicht doppelt angezeigt werden.
   Entferne die Kommentarzeichen (/* ... * /) um ihn wieder zu aktivieren.
   Entferne die Kommentarzeichen (/* ... * /) um ihn wieder zu aktivieren.
========================================================= */
========================================================= */
Line 846: Line 846:
*/
*/


/* Sidebar JS triggers */
/* =========================================================
  SIDEBAR CLICK HANDLERS (fängt Marker-Links ab)
  Diese Handler verhindern, dass MediaWiki "javascript:"-Links öffnet
  und rufen stattdessen die Wrapper-Funktionen auf.
========================================================= */
 
document.addEventListener('click', function (e) {
 
    // SHARE (Sidebar marker link: share-action)
    if (e.target.closest('a[href="share-action"], a[href$="/share-action"]')) {
        e.preventDefault();
        if (typeof window.mwCustomShare === 'function') {
            window.mwCustomShare();
        }
        return;
    }
 
    // PDF (Sidebar marker link: pdf-action)
    if (e.target.closest('a[href="pdf-action"], a[href$="/pdf-action"]')) {
        e.preventDefault();
        if (typeof window.mwCustomPDF === 'function') {
            window.mwCustomPDF();
        }
        return;
    }
 
    // SPECIAL SEARCH (Sidebar marker link: specialsearch-action)
    if (e.target.closest('a[href="specialsearch-action"], a[href$="/specialsearch-action"]')) {
        e.preventDefault();
        if (typeof window.mwCustomSpecialSearch === 'function') {
            window.mwCustomSpecialSearch();
        }
        return;
    }
});
 
/* Sidebar JS wrapper functions (für die Sidebar-Buttons) */
window.mwCustomShare = function () {
window.mwCustomShare = function () {
     if (navigator.share) {
     if (navigator.share) {
Line 863: Line 899:


window.mwCustomSpecialSearch = function () {
window.mwCustomSpecialSearch = function () {
     var title = encodeURIComponent(mw.config.get('wgTitle'));
     var title = encodeURIComponent(mw.config.get('wgTitle') || document.title);
     window.open(
     window.open(
         'https://cse.google.com/cse?cx=86021a982e3a14848&q=' + title,
         'https://cse.google.com/cse?cx=86021a982e3a14848&q=' + title,

Revision as of 00:59, 21 May 2026

/* Any JavaScript here will be loaded for all users on every page load. */
/* Optimized Vector-2022 Utilities + Search Extensions + InfinityFree Failover */

(function () {

    'use strict';

    mw.loader.using(['mediawiki.util', 'jquery']).then(function () {

        $(function () {

            /* =========================================================
               GLOBAL MEDIAWIKI VARIABLES
            ========================================================= */

            var ns       = mw.config.get('wgCanonicalNamespace');
            var special  = mw.config.get('wgCanonicalSpecialPageName');
            var page     = mw.config.get('wgPageName');
            var groups   = mw.config.get('wgUserGroups') || [];
            var userName = mw.config.get('wgUserName');
            var wikiTitle = mw.config.get('wgTitle') || document.title;

            var isAdmin =
                groups.includes('sysop') ||
                groups.includes('bureaucrat');

            var isAnon = (userName === null);

            /* =========================================================
               GLOBAL CSS
            ========================================================= */

            if (!document.getElementById('mw-global-custom-css')) {

                var globalCss = `
                @media print {

                    #mw-page-base,
                    #mw-head-base,
                    #mw-navigation,
                    #mw-panel,
                    #footer,
                    .vector-header,
                    .vector-page-toolbar,
                    .vector-toc,
                    .vector-sticky-header,
                    .vector-page-tools,
                    .vector-menu,
                    .mw-indicators,
                    .vector-user-links,
                    .vector-search-box,
                    .vector-pinned-container {
                        display: none !important;
                    }

                    #content,
                    .mw-body,
                    .mw-content-container,
                    .mw-body-content {
                        margin: 0 !important;
                        padding: 0 !important;
                        width: 100% !important;
                        max-width: none !important;
                    }

                    body,
                    #content {
                        background: white !important;
                    }

                    .mw-body-content {
                        font-size: 14pt !important;
                        line-height: 1.5 !important;
                    }
                }

                #extra-search-results {
                    margin-top: 2em;
                    border-top: 1px solid #ddd;
                    padding-top: 1em;
                }

                .search-collapse-section {
                    margin-bottom: 1.5em;
                    border: 1px solid #d8dee8;
                    border-radius: 6px;
                    overflow: hidden;
                    background: #ffffff;
                }

                .search-collapse-header {
                    background: #f3f6fb;
                    padding: 12px 15px;
                    cursor: pointer;
                    font-weight: 600;
                    transition: background .15s ease;
                    user-select: none;
                }

                .search-collapse-header:hover {
                    background: #e9eef7;
                }

                .search-collapse-header::before {
                    content: "▼ ";
                    display: inline-block;
                    transition: transform .2s ease;
                }

                .search-collapse-header.collapsed::before {
                    transform: rotate(-90deg);
                }

                .search-collapse-content {
                    padding: 15px;
                    display: block;
                    background: #fff;
                }

                .search-collapse-content.collapsed {
                    display: none;
                }

                .gcse-searchresults-only {
                    min-height: 200px;
                }

                .search-engine-link {
                    display: block;
                    padding: 8px 0;
                    font-size: 15px;
                    border-bottom: 1px solid #f0f0f0;
                }

                .search-engine-link:last-child {
                    border-bottom: none;
                }

                .search-engine-link a {
                    text-decoration: none;
                    color: #0645ad;
                }

                .search-engine-link a:hover {
                    text-decoration: underline;
                }

                .pse-direct-link {
                    margin-bottom: 15px;
                    padding: 10px;
                    background: #eef5ff;
                    border-radius: 5px;
                }

                .pse-direct-link a {
                    color: #005fcc;
                    text-decoration: none;
                    font-weight: 500;
                }

                .pse-direct-link a:hover {
                    text-decoration: underline;
                }

                .mw-recommended-footer {
                    margin-top: 30px;
                    padding: 15px;
                    border: 2px solid #3a6ea5;
                    background: #eef4fb;
                    border-radius: 6px;
                    color: #1a1a1a;
                    font-size: 14px;
                    line-height: 1.5;
                }

                .mw-recommended-footer-title {
                    font-size: 18px;
                    font-weight: bold;
                    color: #2a4d7a;
                    margin-bottom: 10px;
                }

                .mw-recommended-footer-subtitle {
                    font-size: 18px;
                    font-weight: bold;
                    color: #2a4d7a;
                    margin: 20px 0 10px;
                }

                .mw-recommended-footer ul {
                    margin-left: 15px;
                }

                .mw-recommended-footer a {
                    word-break: break-word;
                }
                `;

                var styleEl = document.createElement('style');

                styleEl.id = 'mw-global-custom-css';
                styleEl.type = 'text/css';

                styleEl.appendChild(
                    document.createTextNode(globalCss)
                );

                document.head.appendChild(styleEl);
            }

            /* =========================================================
               VECTOR-2022 ACTION TOOLBAR (TOOLS-MENÜ)
            ========================================================= */

            if (mw.config.get('wgNamespaceNumber') === 0) {

                var toolbar =
                    document.querySelector(
                        '#vector-page-tools .vector-menu-content-list'
                    );

                if (toolbar && !document.getElementById('mw-custom-toolbar-buttons')) {

                    var currentTitle = encodeURIComponent(wikiTitle);

                    var toolbarHtml = `
                    <div id="mw-custom-toolbar-buttons">

                        <li class="vector-menu-content-list-item">
                            <a href="#" class="mw-share-trigger" title="Share this page">Share</a>
                        </li>

                        <li class="vector-menu-content-list-item">
                            <a href="#" class="mw-print-trigger" title="Download clean PDF">PDF</a>
                        </li>

                        <li class="vector-menu-content-list-item">
                            <a href="https://cse.google.com/cse?cx=86021a982e3a14848&q=${currentTitle}"
                               target="_blank" rel="noopener noreferrer">Special Search</a>
                        </li>

                        <li class="vector-menu-content-list-item">
                            <a href="https://github.com/MrAnonymousNWO/One_World/wiki/search?q=${currentTitle}"
                               target="_blank" rel="noopener noreferrer">One World Wiki</a>
                        </li>

                        <li class="vector-menu-content-list-item">
                            <a href="https://github.com/ET-Pioneer/Electric-Technocracy-Pioneers-Community/wiki/search?q=${currentTitle}"
                               target="_blank" rel="noopener noreferrer">E.Tech. Wiki</a>
                        </li>

                    </div>
                    `;

                    toolbar.insertAdjacentHTML('beforeend', toolbarHtml);
                }
            }
/* =========================================================
   GLOBAL EVENT DELEGATION
========================================================= */

            document.addEventListener('click', function (e) {

                /* PDF */

                var printTrigger =
                    e.target.closest('.mw-print-trigger');

                if (printTrigger) {

                    e.preventDefault();

                    window.print();

                    return;
                }

                /* SHARE */

                var shareTrigger =
                    e.target.closest('.mw-share-trigger');

                if (shareTrigger) {

                    e.preventDefault();

                    if (navigator.share) {

                        navigator.share({
                            title: document.title,
                            url: location.href
                        });

                    } else {

                        prompt('Copy link:', location.href);
                    }

                    return;
                }

                /* COLLAPSE TOGGLE */

                var header =
                    e.target.closest('.search-collapse-header');

                if (header) {

                    var targetId =
                        header.getAttribute('data-target');

                    var content =
                        document.getElementById(targetId);

                    header.classList.toggle('collapsed');

                    if (content) {

                        content.classList.toggle('collapsed');
                    }

                    return;
                }
            });

            /* =========================================================
               SEARCH PAGE EXTENSIONS
            ========================================================= */

            if (special === 'Search') {

                var query =
                    mw.util.getParamValue('search');

                if (query) {

                    var encodedQuery =
                        encodeURIComponent(query);

                    var pagination =
                        $('.mw-search-pager-bottom, .results-info').last();

                    var insertPoint =
                        pagination.length
                            ? pagination
                            : $('#mw-search-results');

                    if (insertPoint.length) {

                        var container =
                            document.createElement('div');

                        container.id =
                            'extra-search-results';

                        /* =============================================
                           PSE SECTION
                        ============================================= */

                        var pseSection =
                            document.createElement('div');

                        pseSection.className =
                            'search-collapse-section';

                        var pseDirectUrl =
                            'https://cse.google.com/cse?cx=86021a982e3a14848&q=' +
                            encodedQuery;

                        pseSection.innerHTML = `
                        <div class="search-collapse-header"
                             data-target="pse-content">
                             Programmable Search Engine
                        </div>

                        <div class="search-collapse-content"
                             id="pse-content">

                            <div class="pse-direct-link">
                                <a href="${pseDirectUrl}"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                    🔗 Open in Programmable Search Engine
                                </a>
                            </div>

                            <div class="gcse-searchresults-only"
                                 data-queryParameterName="gq">
                            </div>

                        </div>
                        `;

                        container.appendChild(pseSection);

                        /* =============================================
                           GITHUB WIKIS
                        ============================================= */

                        var githubSection =
                            document.createElement('div');

                        githubSection.className =
                            'search-collapse-section';

                        githubSection.innerHTML = `
                        <div class="search-collapse-header"
                             data-target="github-wikis-content">
                             GitHub Wikis
                        </div>

                        <div class="search-collapse-content"
                             id="github-wikis-content">

                            <div class="search-engine-link">
                                <a href="https://github.com/ET-Pioneer/Electric-Technocracy-Pioneers-Community/wiki/search?q=${encodedQuery}"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                    📘 Search in Electric Technocracy Pioneers GitHub Wiki
                                </a>
                            </div>

                            <div class="search-engine-link">
                                <a href="https://github.com/MrAnonymousNWO/One_World/wiki/search?q=${encodedQuery}"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                    📗 Search in One World GitHub Wiki
                                </a>
                            </div>

                        </div>
                        `;

                        container.appendChild(githubSection);

                        /* =============================================
                           SEARCH ENGINES
                        ============================================= */

                        var searchEngines = [
                            {
                                name: 'Google',
                                icon: '🔍',
                                url: 'https://www.google.com/search?q=' + encodedQuery
                            },
                            {
                                name: 'Bing',
                                icon: '🔎',
                                url: 'https://www.bing.com/search?q=' + encodedQuery
                            },
                            {
                                name: 'DuckDuckGo',
                                icon: '🦆',
                                url: 'https://duckduckgo.com/?q=' + encodedQuery
                            },
                            {
                                name: 'Yandex',
                                icon: '🔍',
                                url: 'https://yandex.com/search/?text=' + encodedQuery
                            },
                            {
                                name: 'Brave Search',
                                icon: '🦁',
                                url: 'https://search.brave.com/search?q=' + encodedQuery
                            },
                            {
                                name: 'Ecosia',
                                icon: '🌳',
                                url: 'https://www.ecosia.org/search?q=' + encodedQuery
                            }
                        ];

                        var searchLinksHtml = '';

                        searchEngines.forEach(function (engine) {

                            searchLinksHtml += `
                            <div class="search-engine-link">
                                <a href="${engine.url}"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                    ${engine.icon} Search on ${engine.name}
                                </a>
                            </div>
                            `;
                        });

                        var searchSection =
                            document.createElement('div');

                        searchSection.className =
                            'search-collapse-section';

                        searchSection.innerHTML = `
                        <div class="search-collapse-header"
                             data-target="search-engines-content">
                             Alternative Search Engines
                        </div>

                        <div class="search-collapse-content"
                             id="search-engines-content">
                             ${searchLinksHtml}
                        </div>
                        `;

                        container.appendChild(searchSection);

                        /* =============================================
                           FOOTER BLOCK
                        ============================================= */

                        var footerBlock =
                            document.createElement('div');

                        footerBlock.className =
                            'mw-recommended-footer';

                        footerBlock.innerHTML = `
                        <div class="mw-recommended-footer-title">
                            Recommended GPT Tools by ChatGPT
                        </div>

                        <ul>

                            <li>
                                <b>World Succession Deed GPT</b><br>
                                <a href="https://chatgpt.com/g/g-69d82340e27081918e08803ce62e46e1-new-international-law-world-succession-deed-1400"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://chatgpt.com/...world-succession-deed-1400
                                </a>
                            </li>

                            <li>
                                <b>Juridical Singularity GPT</b><br>
                                <a href="https://chatgpt.com/g/g-69d95a89896081918fcb207e1665bf26-juridical-singularity-domestic-international-law"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://chatgpt.com/...juridical-singularity
                                </a>
                            </li>

                            <li>
                                <b>Electric Technocracy GPT</b><br>
                                <a href="https://chatgpt.com/g/g-69d8635591d48191adc315b8f2b8be32-electric-technocracy-a-new-form-of-government"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://chatgpt.com/...electric-technocracy
                                </a>
                            </li>

                            <li>
                                <b>AGE OF TRANSITION & THE MENTAL SINGULARITY GPT</b><br>
                                <a href="https://chatgpt.com/g/g-69d99f78d6a081919cd29d8d33531852-age-of-transition-the-mental-singularity"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://chatgpt.com/...mental-singularity
                                </a>
                            </li>

                        </ul>

                        <div class="mw-recommended-footer-subtitle">
                            Recommended External Resources
                        </div>

                        <ul>

                            <li>
                                🌐 <b>WSD – World Succession Deed 1400/98</b><br>
                                <a href="https://worldsold.wixsite.com/world-sold/en"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://worldsold.wixsite.com/world-sold/en
                                </a>
                            </li>

                            <li>
                                🌐 <b>WSD – Global Legal Succession Archive</b><br>
                                <a href="https://worldsold.wixsite.com/global-archive"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://worldsold.wixsite.com/global-archive
                                </a>
                            </li>

                            <li>
                                🌐 <b>Electric Technocracy</b><br>
                                <a href="https://worldsold.wixsite.com/electric-technocracy"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://worldsold.wixsite.com/electric-technocracy
                                </a>
                            </li>

                            <li>
                                📘 <b>Read the eBooks & Download free PDF</b><br>
                                <a href="https://4u.free.nf"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://4u.free.nf
                                </a>
                            </li>

                            <li>
                                🎥 <b>YouTube Channel</b><br>
                                <a href="https://www.youtube.com/@Staatensukzessionsurkunde-1400"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://youtube.com/@Staatensukzessionsurkunde-1400
                                </a>
                            </li>

                            <li>
                                🎙️ <b>Podcast Show</b><br>
                                <a href="https://creators.spotify.com/pod/show/world-succession-deed"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://spotify.com/...world-succession-deed
                                </a>
                            </li>

                            <li>
                                🚀 <b>Start-Page WSD & Electric Paradise</b><br>
                                <a href="https://electric-paradise.start.page"
                                   target="_blank"
                                   rel="noopener noreferrer">
                                   https://electric-paradise.start.page
                                </a>
                            </li>

                        </ul>
                        `;

                        container.appendChild(footerBlock);

                        /* =============================================
                           INSERT SEARCH BLOCK
                        ============================================= */

                        if (pagination.length) {

                            pagination.after(container);

                        } else {

                            insertPoint.after(container);
                        }

                        /* =============================================
                           GOOGLE CSE LAZY LOAD
                        ============================================= */

                        function loadGoogleCSE() {

                            if (window.googleCSELoaded) {
                                return;
                            }

                            window.googleCSELoaded = true;

                            window.__gcse = {

                                parsetags: 'explicit',

                                callback: function () {

                                    if (
                                        !window.google ||
                                        !google.search ||
                                        !google.search.cse
                                    ) {
                                        return;
                                    }

                                    var element =
                                        document.querySelector(
                                            '.gcse-searchresults-only'
                                        );

                                    if (!element) {
                                        return;
                                    }

                                    google.search.cse.element.render({
                                        div: element,
                                        tag: 'searchresults-only',
                                        gname: 'pse_search'
                                    });

                                    var searchControl =
                                        google.search.cse.element.getElement(
                                            'pse_search'
                                        );

                                    if (searchControl) {

                                        searchControl.execute(query);
                                    }
                                }
                            };

                            var s =
                                document.createElement('script');

                            s.async = true;

                            s.src =
                                'https://cse.google.com/cse.js?cx=86021a982e3a14848';

                            document.head.appendChild(s);
                        }

                        if ('IntersectionObserver' in window) {

                            var observer =
                                new IntersectionObserver(
                                    function (entries) {

                                        if (
                                            entries[0].isIntersecting
                                        ) {

                                            loadGoogleCSE();

                                            observer.disconnect();
                                        }

                                    },
                                    {
                                        rootMargin: '300px'
                                    }
                                );

                            observer.observe(container);

                        } else {

                            setTimeout(loadGoogleCSE, 1000);
                        }
                    }
                }
            }

            /* =========================================================
               INFINITYFREE FAILOVER
            ========================================================= */

            if (isAdmin) return;

            if (page === 'MediaWiki:Common.js') return;

            var isArticle = (ns === '');
            var isSearch  = (special === 'Search');

            if (!isArticle && !isSearch) return;

            setTimeout(function () {

                if (!document.body) return;

                var html =
                    document.body.innerHTML || '';

                var text =
                    document.body.innerText || '';

                var injectedHTML =

                    html.includes('infinityfree.net/errors/') ||

                    html.includes('free hosting limits') ||

                    html.includes(
                        'This site is suspended due to exceeding'
                    ) ||

                    (
                        html.includes('InfinityFree') &&
                        html.includes('suspended')
                    );

                if (injectedHTML && isAnon) {

                    window.location.href =
                        'https://singularity-news.github.io/wiki/';
                }

            }, 1000);

        });

    });

/* =========================================================
   DUPLICATE TOOLBAR (auskommentiert, bleibt erhalten aber inaktiv)
   Die originale Insertions‑Logik ist hier auskommentiert, damit
   die Sidebar‑Buttons nicht doppelt angezeigt werden.
   Entferne die Kommentarzeichen (/* ... * /) um ihn wieder zu aktivieren.
========================================================= */

/*
if (mw.config.get('wgNamespaceNumber') === 0) {

    var toolbar =
        document.querySelector(
            '#vector-page-tools .vector-menu-content-list'
        );

    if (toolbar && !document.getElementById('mw-custom-toolbar-buttons')) {

        var currentTitle = encodeURIComponent(wikiTitle);

        var toolbarHtml = `
        <div id="mw-custom-toolbar-buttons">

            <li class="vector-menu-content-list-item">
                <a href="#" class="mw-share-trigger" title="Share this page">Share</a>
            </li>

            <li class="vector-menu-content-list-item">
                <a href="#" class="mw-print-trigger" title="Download clean PDF">PDF</a>
            </li>

            <li class="vector-menu-content-list-item">
                <a href="https://cse.google.com/cse?cx=86021a982e3a14848&q=${currentTitle}"
                   target="_blank" rel="noopener noreferrer">Special Search</a>
            </li>

            <li class="vector-menu-content-list-item">
                <a href="https://github.com/MrAnonymousNWO/One_World/wiki/search?q=${currentTitle}"
                   target="_blank" rel="noopener noreferrer">One World Wiki</a>
            </li>

            <li class="vector-menu-content-list-item">
                <a href="https://github.com/ET-Pioneer/Electric-Technocracy-Pioneers-Community/wiki/search?q=${currentTitle}"
                   target="_blank" rel="noopener noreferrer">E.Tech. Wiki</a>
            </li>

        </div>
        `;

        toolbar.insertAdjacentHTML('beforeend', toolbarHtml);
    }
}
*/

/* =========================================================
   SIDEBAR CLICK HANDLERS (fängt Marker-Links ab)
   Diese Handler verhindern, dass MediaWiki "javascript:"-Links öffnet
   und rufen stattdessen die Wrapper-Funktionen auf.
========================================================= */

document.addEventListener('click', function (e) {

    // SHARE (Sidebar marker link: share-action)
    if (e.target.closest('a[href="share-action"], a[href$="/share-action"]')) {
        e.preventDefault();
        if (typeof window.mwCustomShare === 'function') {
            window.mwCustomShare();
        }
        return;
    }

    // PDF (Sidebar marker link: pdf-action)
    if (e.target.closest('a[href="pdf-action"], a[href$="/pdf-action"]')) {
        e.preventDefault();
        if (typeof window.mwCustomPDF === 'function') {
            window.mwCustomPDF();
        }
        return;
    }

    // SPECIAL SEARCH (Sidebar marker link: specialsearch-action)
    if (e.target.closest('a[href="specialsearch-action"], a[href$="/specialsearch-action"]')) {
        e.preventDefault();
        if (typeof window.mwCustomSpecialSearch === 'function') {
            window.mwCustomSpecialSearch();
        }
        return;
    }
});

/* Sidebar JS wrapper functions (für die Sidebar-Buttons) */
window.mwCustomShare = function () {
    if (navigator.share) {
        navigator.share({
            title: document.title,
            url: location.href
        });
    } else {
        prompt('Copy link:', location.href);
    }
};

window.mwCustomPDF = function () {
    window.print();
};

window.mwCustomSpecialSearch = function () {
    var title = encodeURIComponent(mw.config.get('wgTitle') || document.title);
    window.open(
        'https://cse.google.com/cse?cx=86021a982e3a14848&q=' + title,
        '_blank'
    );
};
})();