MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Force viewport meta for mobile responsiveness */
/* Force main menu to be pinned on desktop */
(function() {
$(document).ready(function() {
var existing = document.querySelector('meta[name="viewport"]');
    // Force pin the main menu
if (existing) {
    var pinnedContainer = document.getElementById('vector-main-menu-pinned-container');
existing.setAttribute('content', 'width=device-width, initial-scale=1');
    var unpinnedContainer = document.getElementById('vector-main-menu-unpinned-container');
} else {
    var mainMenu = document.getElementById('vector-main-menu');
var meta = document.createElement('meta');
   
meta.name = 'viewport';
    if (window.innerWidth >= 1024) {
meta.content = 'width=device-width, initial-scale=1';
        if (unpinnedContainer && mainMenu) {
document.head.appendChild(meta);
            // Move menu to pinned container if not already there
}
            if (pinnedContainer && !pinnedContainer.contains(mainMenu)) {
})();
                pinnedContainer.appendChild(mainMenu);
 
            }
$(document).ready(function () {
        }
 
        // Click the pin button if it exists
/* ===== PIN MAIN MENU ON DESKTOP ===== */
        var pinButton = document.querySelector('.vector-pinnable-header-pin-button');
if (window.innerWidth >= 1000) {
        if (pinButton) {
var pinnedContainer = document.getElementById('vector-main-menu-pinned-container');
            pinButton.click();
var unpinnedContainer = document.getElementById('vector-main-menu-unpinned-container');
        }
var mainMenu = document.getElementById('vector-main-menu');
    }
 
/* Google Translate Widget */
if (unpinnedContainer && mainMenu) {
$(document).ready(function() {
if (pinnedContainer && !pinnedContainer.contains(mainMenu)) {
    var translateHtml =  
pinnedContainer.appendChild(mainMenu);
        '<div class="mw-portlet vector-menu" id="p-translate" style="padding: 8px 5px;">' +
}
            '<div class="vector-menu-heading" style="font-weight:bold; padding: 4px 0; font-size:13px;">Translate</div>' +
}
            '<div class="vector-menu-content">' +
 
                '<div id="google_translate_element"></div>' +
// Click pin button if available
            '</div>' +
var pinButton = document.querySelector('.vector-pinnable-header-pin-button');
        '</div>';
if (pinButton) pinButton.click();
   
}
    // Insert after Main Menu portlet
 
    var mainMenuPortlet = document.querySelector('#p-Main_Menu, .mw-portlet-Main_Menu, #p-main-menu');
/* ===== MOVE TRANSLATE LINK INTO SIDEBAR ===== */
    if (mainMenuPortlet) {
// Find translate link from Tools menu
        mainMenuPortlet.insertAdjacentHTML('afterend', translateHtml);
var $translateLi = $('#p-tb li').filter(function () {
    } else {
return $(this).find('a').attr('href') &&
        var portlets = document.querySelectorAll('.mw-portlet');
$(this).find('a').attr('href').indexOf('Translate') !== -1;
        if (portlets.length > 0) {
            portlets[portlets.length - 1].insertAdjacentHTML('afterend', translateHtml);
        }
    }
   
    var script = document.createElement('script');
    script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit';
    document.body.appendChild(script);
});
});


function googleTranslateElementInit() {
var translateHref = '#';
    new google.translate.TranslateElement({
if ($translateLi.length) {
        pageLanguage: 'en',
translateHref = $translateLi.find('a').attr('href');
        layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
$translateLi.hide(); // Hide from Tools menu
        autoDisplay: false
}
    }, 'google_translate_element');
 
// Also check ULS trigger (MediaWiki translate extension button)
var $ulsBtn = $('#p-lang-btn, .uls-trigger, #pt-uls');
if ($ulsBtn.length) {
translateHref = $ulsBtn.attr('href') || translateHref;
}
}
/* ===== CLEAN UP TOOLS MENU — REMOVE LESS USEFUL ITEMS ===== */
// Optional: hide items you don't want in Tools
var hideFromTools = ['t-permalink', 't-info']; // add IDs to hide
hideFromTools.forEach(function(id) {
$('#' + id).hide();
});
});