MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
$(document).ready(function() {
$(document).ready(function() {


     /* Force main menu to be pinned on desktop */
     /* Force main menu pinned */
     if (window.innerWidth >= 1024) {
     if (window.innerWidth >= 1024) {
        var pinnedContainer = document.getElementById('vector-main-menu-pinned-container');
        var unpinnedContainer = document.getElementById('vector-main-menu-unpinned-container');
        var mainMenu = document.getElementById('vector-main-menu');
        if (unpinnedContainer && mainMenu) {
            if (pinnedContainer && !pinnedContainer.contains(mainMenu)) {
                pinnedContainer.appendChild(mainMenu);
            }
        }
         var pinButton = document.querySelector('.vector-pinnable-header-pin-button');
         var pinButton = document.querySelector('.vector-pinnable-header-pin-button');
         if (pinButton) {
         if (pinButton) pinButton.click();
            pinButton.click();
        }
     }
     }


     /* Google Translate Widget */
     /* Google Translate - try all possible insertion points */
     var translateHtml =
     var translateHtml =
         '<div class="mw-portlet vector-menu" id="p-translate">' +
         '<div class="mw-portlet vector-menu" id="p-translate">' +
             '<div class="vector-menu-heading">Translate</div>' +
             '<div class="vector-menu-heading">Translate</div>' +
             '<div class="vector-menu-content">' +
             '<div class="vector-menu-content" style="padding:8px 5px;">' +
                 '<div id="google_translate_element"></div>' +
                 '<div id="google_translate_element"></div>' +
             '</div>' +
             '</div>' +
         '</div>';
         '</div>';


     // Try multiple selectors to find Main Menu portlet
     // Log all portlets for debugging
     var mainMenuPortlet = document.querySelector('#p-Main_Menu') ||
     var allPortlets = document.querySelectorAll('.mw-portlet');
                          document.querySelector('.mw-portlet-Main_Menu') ||
    console.log('Found portlets:', allPortlets.length);
                          document.querySelector('[id*="Main_Menu"]') ||
    allPortlets.forEach(function(p) {
                          document.querySelector('[id*="main-menu"]');
        console.log('Portlet:', p.id, p.className);
    });
 
    // Insert after last portlet in sidebar
    var sidebar = document.querySelector('#mw-panel .vector-menu-portal:last-child, #vector-main-menu, .mw-portlet:last-child');
    console.log('Sidebar target:', sidebar);


     if (mainMenuPortlet) {
     if (allPortlets.length > 0) {
         mainMenuPortlet.insertAdjacentHTML('afterend', translateHtml);
         var lastPortlet = allPortlets[allPortlets.length - 1];
    } else {
        lastPortlet.insertAdjacentHTML('afterend', translateHtml);
         // Fallback - append to sidebar
         console.log('Inserted after:', lastPortlet.id);
        var sidebar = document.querySelector('#mw-panel, .vector-sidebar');
        if (sidebar) {
            sidebar.insertAdjacentHTML('beforeend', translateHtml);
        }
     }
     }


     /* Load Google Translate script */
     /* Load Google Translate */
     var script = document.createElement('script');
     var script = document.createElement('script');
     script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit';
     script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit';
     document.body.appendChild(script);
     document.body.appendChild(script);


}); /* end document.ready */
});


function googleTranslateElementInit() {
function googleTranslateElementInit() {