MediaWiki:ShowHide.js

From WikiLectures

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)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* <pre> */

/* ============== SHOW AND HIDE ===============================
   author:        [[User:Slepi]]
   date:          06/2011, last update 03/2012
   documentation: [[MediaWiki:ShowHide.js/documentation]]
   description:   show and hide portal sections or parts
                  of other pages
   ==========================================================
*/

var portalShowHide = {
  portalHideText : "hide",
  portalShowText : "show",
  portalTitleClass : "portaltitle",
  portalContentClass : "portalcontent",
  portalHiddenClass : "portalhidden",

  showPortalToggle : function() {
    if (document.createTextNode) {
      var portalTitle = getElementsByClass(portalShowHide.portalTitleClass);
      if (portalTitle.length == 0) {
        return;
      }

      for(j in portalTitle) {
        var portalOuterSpan = document.createElement('span');
        portalOuterSpan.className = 'portaltoggle';

        var togglePortalLink = document.createElement('a');
        togglePortalLink.id = 'togglePortalLink' + j;
        togglePortalLink.className = 'internal';
        togglePortalLink.href = 'javascript:portalShowHide.togglePortal(' + j + ')';
        togglePortalLink.appendChild(document.createTextNode(portalShowHide.portalHideText));

        portalOuterSpan.appendChild(document.createTextNode('['));
        portalOuterSpan.appendChild(togglePortalLink);
        portalOuterSpan.appendChild(document.createTextNode(']'));

        portalTitle[j].appendChild(document.createTextNode(' '));
        portalTitle[j].appendChild(portalOuterSpan);

        nazevCookie = "hideportal" + "_" + wgPageName + j + "=";
        var cookiePos = document.cookie.indexOf(nazevCookie);

        if (cookiePos > -1 && document.cookie.charAt(cookiePos + nazevCookie.length) == 1) {
          portalShowHide.togglePortal(j);
        } else if (portalTitle[j].className.indexOf(portalShowHide.portalHiddenClass) != -1) {
          portalShowHide.togglePortal(j);
        }
      }
    }
  },

  togglePortal : function(toHide) {
    var portal = getElementsByClass(portalShowHide.portalContentClass);

    portalX = portal[toHide];
    var idToggle = 'togglePortalLink' + toHide;
    var togglePortalLink = document.getElementById(idToggle);

    if (portalX && togglePortalLink && portalX.style.display == 'none') {
      changeText(togglePortalLink, portalShowHide.portalHideText);
      portalX.style.display = 'block';
      document.cookie = "hideportal" + "_" + wgPageName + toHide + "=0";
    } else {
      changeText(togglePortalLink, portalShowHide.portalShowText);
      portalX.style.display = 'none';
      document.cookie = "hideportal" + "_" + wgPageName + toHide + "=1";
    }
  }
}

$(portalShowHide.showPortalToggle);