Toggle menu
876
3.8K
30.2K
279.1K
Catglobe Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
No edit summary
No edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on every page load. */
$(function () {
  const key = 'catglobe-categorytree-open';


function ModifySidebar(action, section, name, link) {
  function saveOpenNodes() {
     try {
     const openNodes = [];
        switch (section) {
    $('.CategoryTreeNode:has(.CategoryTreeToggleOpen)').each(function () {
          case "languages":
      const title = $(this).data('ct-title');
            var target = "p-lang";
      if (title) openNodes.push(title);
            break;
    });
          case "toolbox":
    localStorage.setItem(key, JSON.stringify(openNodes));
            var target = "p-tb";
  }
            break;
 
          case "navigation":
  function restoreOpenNodes() {
            var target = "p-navigation";
    const openNodes = JSON.parse(localStorage.getItem(key) || '[]');
            break;
    openNodes.forEach(function (title) {
          default:
      const toggle = $('.CategoryTreeNode[data-ct-title="' + title + '"] .CategoryTreeToggleClosed');
            var target = "p-" + section;
      if (toggle.length) {
            break;
        toggle.click();
        }
      }
     });
        if (action == "add") {
  }
            var node = document.getElementById(target)
 
                              .getElementsByTagName('div')[0]
  // Lưu sau khi nhấn vào ▸
                              .getElementsByTagName('ul')[0];
  $(document).on('click', '.CategoryTreeToggle', function () {
     setTimeout(saveOpenNodes, 300);
            var aNode = document.createElement('a');
  });
            var liNode = document.createElement('li');
 
  // Khôi phục khi trang load
            aNode.appendChild(document.createTextNode(name));
  restoreOpenNodes();
            aNode.setAttribute('href', link);
});
            liNode.appendChild(aNode);
            liNode.className='plainlinks';
            node.appendChild(liNode);
        }
        if (action == "remove") {
            var list = document.getElementById(target)
                              .getElementsByTagName('div')[0]
                              .getElementsByTagName('ul')[0];
            var listelements = list.getElementsByTagName('li');
            for (var i = 0; i < listelements.length; i++) {
                if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
                    listelements[i].getElementsByTagName('a')[0].href == link) {
                    list.removeChild(listelements[i]);
                }
            }
        }
     } catch(e) {
      // lets just ignore what's happened
      return;
    }
}
function CustomizeModificationsOfSidebar() {
     //adds [[Special:CategoryTree]] to toolbox
    ModifySidebar("add", "toolbox", "CategoryTree", "http://en.wikipedia.org/wiki/Special:CategoryTree");
    //removes [[Special:Upload]] from toolbox
    ModifySidebar("remove", "toolbox", "Upload file", "http://en.wikipedia.org/wiki/Special:Upload");
}
addOnloadHook(CustomizeModificationsOfSidebar);

Latest revision as of 09:22, 29 July 2025

/* Any JavaScript here will be loaded for all users on every page load. */
$(function () {
  const key = 'catglobe-categorytree-open';

  function saveOpenNodes() {
    const openNodes = [];
    $('.CategoryTreeNode:has(.CategoryTreeToggleOpen)').each(function () {
      const title = $(this).data('ct-title');
      if (title) openNodes.push(title);
    });
    localStorage.setItem(key, JSON.stringify(openNodes));
  }

  function restoreOpenNodes() {
    const openNodes = JSON.parse(localStorage.getItem(key) || '[]');
    openNodes.forEach(function (title) {
      const toggle = $('.CategoryTreeNode[data-ct-title="' + title + '"] .CategoryTreeToggleClosed');
      if (toggle.length) {
        toggle.click();
      }
    });
  }

  // Lưu sau khi nhấn vào ▸
  $(document).on('click', '.CategoryTreeToggle', function () {
    setTimeout(saveOpenNodes, 300);
  });

  // Khôi phục khi trang load
  restoreOpenNodes();
});