|
|
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>
| |