MediaWiki:Common.js: Difference between revisions

Jump to navigation Jump to search
m
Reverted edits by Waahlis (talk) to last revision by EmperorZelos
No edit summary
m (Reverted edits by Waahlis (talk) to last revision by EmperorZelos)
Line 91: Line 91:
addOnloadHook( createCollapseButtons );
addOnloadHook( createCollapseButtons );
   
   
=== NavBars ===
<pre>*/
var NavigationBarHide = 'hide ▲';
var NavigationBarShow = 'show ▼';
function NavToggleCategory(navFrame)
{
    var table = navFrame.getElementsByTagName('table')[0];
    if (table && table.className == "translations")
        return "translations";
    var heading = navFrame.previousSibling;
    while (heading) {
        if (/[hH][4-6]/.test(heading.nodeName)) {
            if (heading.getElementsByTagName('span')[1])
                heading = heading.getElementsByTagName('span')[1];
            else
                heading = heading.getElementsByTagName('span')[0];
            return $(heading).text().toLowerCase()
                // jQuery's .text() is inconsistent about whitespace:
                .replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' ')
                // remove numbers added by the "Auto-number headings" pref:
                .replace(/^[1-9][0-9.]+ ?/, '');
        }
        else if (/[hH][1-3]/.test(heading.nodeName))
            break;
        heading = heading.previousSibling;
    }
    return "other boxes";
};
function createNavToggle(navFrame){
    var navHead, navToggle, navContent;
    for (var j=0; j < navFrame.childNodes.length; j++) {
        var div = navFrame.childNodes[j];
        switch (div.className) {
            case 'NavHead':
                navHead = div;
                break;
            case 'NavContent':
                navContent = div;
                break;
        }
    }
    if (!navHead || !navContent)
        return;
    // Step 1, don't react when a subitem is clicked.
    for (var i=0; i<navHead.childNodes.length; i++) {
        var child = navHead.childNodes[i];
        if (child.nodeName == "A") {
            child.onclick = function (e)
            {
                if (e && e.stopPropagation)
                    e.stopPropagation();
                else
                    window.event.cancelBubble = true;
            }
        }
    }
    // Step 2, toggle visibility when bar is clicked.
    // NOTE This function was chosen due to some funny behaviour in Safari.
    navToggle = newNode('a', {href: 'javascript:(function(){})()'}, '');
    navHead.insertBefore(newNode('span', {'class': 'NavToggle'}, '[', navToggle, ']'), navHead.firstChild);
    navHead.style.cursor = "pointer";
    navHead.onclick = VisibilityToggles.register(NavToggleCategory(navFrame),
        function show() {
            navToggle.innerHTML = NavigationBarHide;
            if (navContent)
                navContent.style.display = "block";
        },
        function hide() {
            navToggle.innerHTML = NavigationBarShow;
            if (navContent)
                navContent.style.display = "none";
        });
};
addOnloadHook( function ()
{
    var divs = $(".NavFrame");
    for (var i=0; i<divs.length; i++) {
        // NOTE: some templates use a class of NavFrame for the style, but for legacy reasons, are not NavFrames
        if (divs[i].className == "NavFrame") {
            createNavToggle(divs[i]);
        }
    }
});
/*</pre>
/** Test if an element has a certain class **************************************
/** Test if an element has a certain class **************************************
  *
  *
Line 197: Line 105:


/* For Favicon  */
/* For Favicon  */
<!-- document.write("<link rel='shortcut icon' href='http://conlang.wikkii.com/w/images/conlang/uploads/2/26/Favicon.png' type='image/x-icon'>"); -->
document.write("<link rel='shortcut icon' href='http://conlang.wikkii.com/w/images/conlang/uploads/2/26/Favicon.png' type='image/x-icon'>");
 
===Hidden Quotes===
<pre>*/
 
function setupHiddenQuotes(li)
{
  var HQToggle, liComp;
  var HQShow = 'quotations ▼';
  var HQHide = 'quotations ▲';
  for (var k = 0; k < li.childNodes.length; k++) {
      // Look at each component of the definition.
      liComp = li.childNodes[k];
      // If we find a ul or dl, we have quotes or example sentences, and thus need a button.
      if (/^(ul|UL)$/.test(liComp.nodeName)) {
        HQToggle = newNode('a', {href: 'javascript:(function(){})()'}, '');
        li.insertBefore(newNode('span', {'class': 'HQToggle'}, ' [', HQToggle, ']'), liComp);
        HQToggle.onclick = VisibilityToggles.register('quotations',         
            function show() {
              HQToggle.innerHTML = HQHide;
              for (var child = li.firstChild; child != null; child = child.nextSibling) {
                  if (/^(ul|UL)$/.test(child.nodeName)) {
                    child.style.display = 'block';
                    }
                  }
              },
            function hide() {
              HQToggle.innerHTML = HQShow;
              for (var child = li.firstChild; child != null; child = child.nextSibling) {
                  if (/^(ul|UL)$/.test(child.nodeName)) {
                    child.style.display = 'none';
                    }
                  }
              });
 
        break;
        }
      }
  }           
             
addOnloadHook( function ()
{
  if (wgNamespaceNumber == 0) {
      var ols, lis, li;
      // First, find all the ordered lists, i.e. all the series of definitions.
      var ols = document.getElementsByTagName('ol');
      for(var i = 0; i < ols.length; i++) {
        // Then, for every set, find all the individual definitions.
        for (var j = 0; j < ols[i].childNodes.length; j++) {
            li = ols[i].childNodes[j];
            if (li.nodeName.toUpperCase() == 'LI') {
              setupHiddenQuotes(li);
              }
            }
        }
      }
  });
 
/*</pre>

Navigation menu