User:Alyxia/monobook.js: Difference between revisions

From Fyra Wiki
Jump to navigation Jump to search
(Add a link to Special:AllPages in the toolbox)
(Remove the adding of Special:AllPages)
 
(2 intermediate revisions by the same user not shown)
Line 2: Line 2:
function ModifySidebar(action, section, name, link) {
function ModifySidebar(action, section, name, link) {
   try {
   try {
    let target;
     switch (section) {
     switch (section) {
       case 'languages':
       case 'languages':
         target = 'p-lang';
         var target = 'p-lang';
         break;
         break;
       case 'toolbox':
       case 'toolbox':
         target = 'p-tb';
         var target = 'p-tb';
         break;
         break;
       case 'navigation':
       case 'navigation':
         target = 'p-navigation';
         var target = 'p-navigation';
         break;
         break;
       default:
       default:
         target = 'p-' + section;
         var target = 'p-' + section;
         break;
         break;
     }
     }


     if (action == 'add') {
     if (action == 'add') {
       const node = document
       var node = document
         .getElementById(target)
         .getElementById(target)
         .getElementsByTagName('div')[0]
         .getElementsByTagName('div')[0]
         .getElementsByTagName('ul')[0];
         .getElementsByTagName('ul')[0];


       const aNode = document.createElement('a');
       var aNode = document.createElement('a');
       const liNode = document.createElement('li');
       var liNode = document.createElement('li');


       aNode.appendChild(document.createTextNode(name));
       aNode.appendChild(document.createTextNode(name));
Line 35: Line 34:


     if (action == 'remove') {
     if (action == 'remove') {
       const list = document
       var list = document
         .getElementById(target)
         .getElementById(target)
         .getElementsByTagName('div')[0]
         .getElementsByTagName('div')[0]
         .getElementsByTagName('ul')[0];
         .getElementsByTagName('ul')[0];


       const listelements = list.getElementsByTagName('li');
       var listelements = list.getElementsByTagName('li');


       for (const i = 0; i < listelements.length; i++) {
       for (var i = 0; i < listelements.length; i++) {
         if (
         if (
           listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
           listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
Line 60: Line 59:


function CustomizeModificationsOfSidebar() {
function CustomizeModificationsOfSidebar() {
   ModifySidebar('add', 'toolbox', 'AllPages', 'https://wiki.fyralabs.com/Special:AllPages');
   // Currently, the calling of this function is disabled as there is a much
  // more MW-agnostic solution to adding pages to the sidebar, namely
  // `mw.util.addPortletLink`.
  // This is certainly not to say that ModifySidebar is inherently *bad*,
  // because `mw.util` does *not* provide a toolset for *removing* items from
  // the sidebar.
  // ModifySidebar('add', 'toolbox', 'All pages', 'https://wiki.fyralabs.com/Special:AllPages');
}
}


jQuery(CustomizeModificationsOfSidebar);
jQuery(CustomizeModificationsOfSidebar);
// }}}
// }}}

Latest revision as of 10:30, 6 June 2023

// Sidebar modification {{{
function ModifySidebar(action, section, name, link) {
  try {
    switch (section) {
      case 'languages':
        var target = 'p-lang';
        break;
      case 'toolbox':
        var target = 'p-tb';
        break;
      case 'navigation':
        var target = 'p-navigation';
        break;
      default:
        var target = 'p-' + section;
        break;
    }

    if (action == 'add') {
      var node = document
        .getElementById(target)
        .getElementsByTagName('div')[0]
        .getElementsByTagName('ul')[0];

      var aNode = document.createElement('a');
      var liNode = document.createElement('li');

      aNode.appendChild(document.createTextNode(name));
      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) {
    // Probably not the best course of action to ignore error handling... but
    // whatever.
    console.error('Something went horribly wrong when trying to modify the sidebar!\n', e);
    return;
  }
}

function CustomizeModificationsOfSidebar() {
  // Currently, the calling of this function is disabled as there is a much
  // more MW-agnostic solution to adding pages to the sidebar, namely
  // `mw.util.addPortletLink`.
  // This is certainly not to say that ModifySidebar is inherently *bad*,
  // because `mw.util` does *not* provide a toolset for *removing* items from
  // the sidebar.
  // ModifySidebar('add', 'toolbox', 'All pages', 'https://wiki.fyralabs.com/Special:AllPages');
}

jQuery(CustomizeModificationsOfSidebar);
// }}}