MediaWiki:Common.js
3D Game Comparison - Game vs. game. No hype; just facts.™
/*
Contents |
Test if an element has a certain class
* * Description: Uses regular expressions and caching for better performance. * Maintainers: w:User:Mike Dillon, w:User:R. Koot, w: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);
};
})();
/*
Collapsible tables
* * Description: Allows tables to be collapsed, showing only the header. See * w:Wikipedia:NavFrame. * Maintainers: w:User:R. Koot */
var autoCollapse = 2; var collapseCaption = "—"; var expandCaption = "+";
function collapseTable( tableIndex ) {
var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.getElementsByTagName( "tr" );
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" ) ) {
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.style.styleFloat = "right";
Button.style.cssFloat = "right";
Button.style.fontWeight = "normal";
Button.style.textAlign = "right";
Button.style.width = "6em";
ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( "[" ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( "]" ) );
var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
/* only add button and increment count if there is a header row to work with */
if (Header) {
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 );
}
}
}
addOnloadHook( createCollapseButtons );
/*
Dynamic Navigation Bars (experimental)
* * Description: See w:Wikipedia:NavFrame. * Maintainers: UNMAINTAINED */
// set up the words in your language var NavigationBarHide = '[' + collapseCaption + ']'; var NavigationBarShow = '[' + expandCaption + ']';
// shows and hides content and picture (if available) of navigation bars // Parameters: // indexNavigationBar: the index of navigation bar to be toggled function toggleNavigationBar(indexNavigationBar) {
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if ( hasClass( NavChild, 'NavPic' ) ) {
NavChild.style.display = 'none';
}
if ( hasClass( NavChild, 'NavContent') ) {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = NavigationBarShow;
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (hasClass(NavChild, 'NavPic')) {
NavChild.style.display = 'block';
}
if (hasClass(NavChild, 'NavContent')) {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
}
// adds show/hide-button to navigation bars function createNavigationBarToggleButton() {
var indexNavigationBar = 0;
// iterate over all < div >-elements
var divs = document.getElementsByTagName("div");
for(
var i=0;
NavFrame = divs[i];
i++
) {
// if found a navigation bar
if (hasClass(NavFrame, "NavFrame")) {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var NavToggleText = document.createTextNode(NavigationBarHide);
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
if (NavChild.style.display == 'none') {
NavToggleText = document.createTextNode(NavigationBarShow);
break;
}
}
}
NavToggle.appendChild(NavToggleText);
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(
var j=0;
j < NavFrame.childNodes.length;
j++
) {
if (hasClass(NavFrame.childNodes[j], "NavHead")) {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
}
addOnloadHook( createNavigationBarToggleButton );
/*
Extra toolbar options
* * Description: UNDOCUMENTED * Maintainers: w:User:MarkS?, w:User:Voice of All, w:User:R. Koot */
//This is a modified copy of a script by User:MarkS for extra features added by User:Voice of All.
// This is based on the original code on w:Wikipedia:Tools/Editing tools
// To disable this script, add mwCustomEditButtons = [];<code> to Special:Mypage/monobook.js
if (mwCustomEditButtons) {
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "level 3 headline ()",
"tagOpen": "\n===",
"tagClose": "===",
"sampleText": "text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "see also",
"tagOpen": "==See also==\n* [[",
"tagClose": "]]",
"sampleText": "article"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "category",
"tagOpen": "[[cat:",
"tagClose": "]]",
"sampleText": "category"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "redirect",
"tagOpen": "#redirect[[",
"tagClose": "]]",
"sampleText": "Common.js"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "teletype (monospace) text",
"tagOpen": "",
"tagClose": "",
"sampleText": "teletype text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "preformatted text",
"tagOpen": "",
"tagClose": "",
"sampleText": "preformatted text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "strikethrough text",
"tagOpen": "",
"tagClose": "",
"sampleText": "strikethrough text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "line break",
"tagOpen": "
",
"tagClose": "",
"sampleText": ""};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "center text",
"tagOpen": '',
"tagClose": "",
"sampleText": "centered text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "superscript text",
"tagOpen": "",
"tagClose": "",
"sampleText": "superscript text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "subscript text",
"tagOpen": "",
"tagClose": "",
"sampleText": "subscript text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "small text",
"tagOpen": "",
"tagClose": "",
"sampleText": "small text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "big text",
"tagOpen": "",
"tagClose": "",
"sampleText": "big text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "blockquote",
"tagOpen": "\n",
"tagClose": "\n
",
"sampleText": "block quote"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "comment",
"tagOpen": "",
"sampleText": "comment"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "image (advanced)",
"tagOpen": "[[Image:",
"tagClose": "|thumb|right|px|Caption]]",
"sampleText": "image.ext"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "gallery",
"tagOpen": "\n
",
"speedTip": "strikethrough text",
"tagOpen": "
",
"speedTip": "line break",
"tagOpen": "", "tagClose": "", "sampleText": ""};
",
"speedTip": "center text",
",
"speedTip": "superscript text",
"tagOpen": "",
"tagClose": "",
"sampleText": "superscript text"};
",
"speedTip": "subscript text",
"tagOpen": "",
"tagClose": "",
"sampleText": "subscript text"};
",
"speedTip": "small text",
"tagOpen": "",
"tagClose": "",
"sampleText": "small text"};
",
"speedTip": "big text",
"tagOpen": "",
"tagClose": "",
"sampleText": "big text"};
",
"speedTip": "blockquote",
",
"speedTip": "comment",
"tagOpen": "",
"sampleText": "comment"};
",
"speedTip": "image (advanced)",
"tagOpen": "[[Image:",
"tagClose": "|thumb|right|px|Caption]]",
"sampleText": "image.ext"};
",
"speedTip": "gallery",
\n", |
"tagClose": "\n |
"sampleText": "Image:Example.jpg|Caption1\nImage:Example.jpg|Caption2"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "table",
"tagOpen": '{| class=sortable\n|-\n',
"tagClose": "\n|}",
"sampleText": "!header 1 !!header 2 !!header 3\n|-\n| row 1, cell 1 || row 1, cell 2 || row 1, cell 3\n|-\n| row 2, cell 1 || row 2, cell 2 || row 2, cell 3"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "table start",
"tagOpen": '{|',
"tagClose": "",
"sampleText": ""};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "table row",
"tagOpen": '|-',
"tagClose": "",
"sampleText": ""};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "table cell",
"tagOpen": '|',
"tagClose": "",
"sampleText": ""};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "table end",
"tagOpen": "",
"tagClose": '|}',
"sampleText": ""};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "template",
"tagOpen": "{{",
"tagClose": "}}",
"sampleText": "template"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "substitute template",
"tagOpen": "{{subst:",
"tagClose": "}}",
"sampleText": "template"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "noinclude",
"tagOpen": "",
"tagClose": "",
"sampleText": "text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "includeonly",
"tagOpen": "",
"sampleText": "text"};
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "
",
"speedTip": "Comment visible only for editors",
"tagOpen": "",
"sampleText": "Insert comment here"};
}

