MediaWiki:Common.js
From BRGS Wiki
Note: After saving, 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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Clear the cache in Tools → Preferences
/* Test if an element has a certain class ************************************** * * Description: Uses regular expressions and caching for better performance. * Dependecy for collapsible tables. * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]] */ var hasClass = (function () { var reCache = {}; return function (element, className) { return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className); }; })(); // Minor missing function // From wikibits.js // modified by Clizard to add test wrapper if (typeof window.killEvt !== "function") { window.killEvt = function( evt ) { evt = evt || window.event || window.Event; // W3C, IE, Netscape if ( typeof ( evt.preventDefault ) != 'undefined' ) { evt.preventDefault(); // Don't follow the link evt.stopPropagation(); } else { evt.cancelBubble = true; // IE } return false; // Don't follow the link (IE) }; } /** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * [[Wikipedia:NavFrame]]. * Maintainers: [[User:R. Koot]] * * Source: see wikipedia */ var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show"; function collapseTable( tableIndex ) { var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex ); if ( !Table || !Button ) { return false; } var Rows = Table.rows; if ( Button.firstChild.data == collapseCaption ) { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = "none"; } Button.firstChild.data = expandCaption; } else { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; } Button.firstChild.data = collapseCaption; } } function createCollapseButtons() { var tableIndex = 0; var NavigationBoxes = new Object(); var Tables = document.getElementsByTagName( "table" ); for ( var i = 0; i < Tables.length; i++ ) { if ( hasClass( Tables[i], "collapsible" ) ) { /* only add button and increment count if there is a header row to work with */ var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0]; if (!HeaderRow) continue; var Header = HeaderRow.getElementsByTagName( "th" )[0]; if (!Header) continue; NavigationBoxes[ tableIndex ] = Tables[i]; Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); var Button = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.className = "collapseButton"; //Styles are declared in Common.css ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "Javascript:collapseTable(" + tableIndex + ");" ); // Hack, Clizard, 07/11/10 because handler wasn't registering. ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); Header.insertBefore( Button, Header.childNodes[0] ); tableIndex++; } } for ( var i = 0; i < tableIndex; i++ ) { if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) { collapseTable( i ); } else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) { var element = NavigationBoxes[i]; while (element = element.parentNode) { if ( hasClass( element, "outercollapse" ) ) { collapseTable ( i ); break; } } } } } addOnloadHook( createCollapseButtons ); //***************************************** // BRGSWiki Form Highlighter Extension // (Work in Progress) // Copyright (c) 2010 David Bewicke // License: // http://creativecommons.org/licenses/MIT/ // **************************************** /*global document*/ /* // removed // References to primitives function Ref(mx) { return { deref: mx }; } function bwxHighlightForm() { var m = {}; m.rg_form_pattern = /(\s)([0-9]{2}[BRGSNW])/g; // e.g. <strong>06N</strong> // Get content html element where page text really goes function content_element() { return document.getElementById('content') || null; } // Returns string of #content innerHTML // f_content_found is reference to a flag indicating whether // or not we succeeded. function find_body_content(f_content_found) { var content = content_element(); var str_inner_html = ""; if (content) { str_inner_html = content.innerHTML; } f_content_found.deref = str_inner_html !== ""; return str_inner_html; } // Set #content innerHTML to given str value if possible function set_body_content(str_new_content) { var content = content_element(); if (content !== null) { content.innerHTML = str_new_content; } } // Replace all instances in #content of form identifier with // <strong> version! function replace_form_identifiers() { var f_found = Ref(false); var str_content = find_body_content(f_found); if (!f_found.deref) { return; } str_content = str_content.replace(m.rg_form_pattern, "$1<strong>$2</strong>"); set_body_content(str_content); } replace_form_identifiers(); } addOnloadHook(bwxHighlightForm); // End BRGSWiki extension **************** */