MediaWiki:Common.js
Jump to navigation
Jump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/** * Collapsible Sidebar (Debug Build) - Patched for Vector & Vector 2022 * Logs everything to console for verification */ /* $(function () { // Add toggle link var $sidebar = $('#mw-panel'); var $toggleLink = $('<a href="#" id="collapse-sidebar">Toggle Sidebar</a>') .css({ display: 'block', margin: '5px', cursor: 'pointer' }); $('#p-logo').after($toggleLink); $toggleLink.click(function (e) { e.preventDefault(); $sidebar.toggleClass('collapsed'); }); }); */ /* (function () { window.MWSidebarDebug = true; function log() { if (window.MWSidebarDebug) console.log('[SidebarCollapsible]', ...arguments); } function warn() { if (window.MWSidebarDebug) console.warn('[SidebarCollapsible]', ...arguments); } var skin = mw.config.get('skin'); log('Init start. Detected skin =', skin); function findPanels($root) { // Match both Vector and Vector 2022 classes var $panels = $root.find('#mw-panel .vector-menu-portal, #mw-panel .vector-menu.mw-portlet'); log('Panels found:', $panels.length); return $panels; } function initOnce($root) { var $panels = findPanels($root); if (!$panels.length) { warn('No sidebar panels found using selectors for Vector/Vector-2022'); return; } $panels.each(function (idx, el) { var $panel = $(el); var id = $panel.attr('id') || ('panel#' + idx); var $list = $panel.find('> .vector-menu-content > .vector-menu-content-list, > .body > ul').first(); if (!$list.length) { warn('No list in panel:', id); return; } var $items = $list.children('li'); log('Panel', id, ':', $items.length, 'top-level item(s)'); $items.each(function (i, li) { var $li = $(li); var $sub = $li.children('ul'); if (!$sub.length) return; $li.addClass('collapsible-header'); if (!$li.children('.mw-collapsible-arrow').length) { $li.prepend($('<span class="mw-collapsible-arrow" aria-hidden="true">▶</span>')); } $sub.hide(); var headerText = ($li.find('> a').first().text() || '').trim(); log('Registered collapsible item', i, 'in', id, 'header=', headerText); $li.off('.mwCollapsibleSidebar') .on('click.mwCollapsibleSidebar', function (e) { if ($(e.target).closest('a').length) return; e.preventDefault(); $li.toggleClass('open'); $sub.stop(true, true).slideToggle(200); log('Toggled', $li.hasClass('open') ? 'open' : 'closed', ':', headerText); }); }); }); } mw.loader.using('mediawiki.util').then(function () { $(function () { console.group && console.group('[SidebarCollapsible] bootstrap'); initOnce($(document)); console.groupEnd && console.groupEnd(); }); mw.hook('wikipage.content').add(function ($c) { log('wikipage.content hook fired (re-init on dynamic content).'); initOnce($c); }); }); })(); */