Skip to content

Instantly share code, notes, and snippets.

@raine
Created March 12, 2012 10:23
Show Gist options
  • Select an option

  • Save raine/2021067 to your computer and use it in GitHub Desktop.

Select an option

Save raine/2021067 to your computer and use it in GitHub Desktop.
commit 0d312a10767383902caa6f83b2605347ea03b74a
Author: Raine Virta <raine@blaast.com>
Date: Mon Mar 12 12:18:33 2012 +0200
rebased to original file
diff --git a/index.php b/index.php
index cb0e05c..e862ba1 100644
--- a/index.php
+++ b/index.php
@@ -1,5 +1,55 @@
+/* generated javascript */
+var skin = 'dtrush';
+var stylepath = '/starcraft/skins';
+
+/* MediaWiki:Common.js */
/* Any JavaScript here will be loaded for all users on every page load. */
-
+
+var toggleMapListSetup = function() {
+ var btn = $('a[id^="collapseButton"]');
+
+ btn.each(function() {
+ var table = $(this).closest('table');
+ var m = $('.maprow', table);
+
+ if (m.length) {
+ m.hide(); // Collapse maps by default
+
+ var span = $('<span>', {
+ class: 'mapsCollapseButton',
+ css: {
+ 'font-weight': 'normal',
+ 'float': 'right',
+ 'margin-right': '7px',
+ 'cursor': 'pointer'
+ }
+ });
+
+ table.data('maps-collapsed', true);
+
+ var toggleMaps = function() {
+ table.find('.maprow').toggle();
+ table.data('maps-collapsed', !table.data('maps-collapsed'));
+
+ $(this).text(function(i, txt) {
+ return txt.replace(/\+|-/, function(a) {
+ return a === '+' ? '-' : '+';
+ });
+ });
+ }
+
+ var a = $('<a>+maps</a>').click(toggleMaps);
+
+ span.append('[', a, ']');
+ $(this).parent().after(span);
+
+ if (table.hasClass('uncollapsed-maps')) {
+ a.trigger('click');
+ }
+ }
+ });
+};
+
/** Collapsible tables *********************************************************
*
* From English Wikipedia, 2008-09-15
@@ -8,98 +58,110 @@
* [[Wikipedia:NavFrame]].
* Maintainers: [[User:R. Koot]]
*/
-
+
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;
+
+ $('.mapsCollapseButton', Table).hide();
} else {
for ( var i = 1; i < Rows.length; i++ ) {
+ if ( hasClass( Rows[i], "maprow" ) ) {
+ // Skip showing for this row if the maps are in collapsed state
+ if ($(Table).data('maps-collapsed')) {
+ continue;
+ }
+ }
+
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
+
+ $('.mapsCollapseButton', Table).show();
}
}
-
+
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.style.styleFloat = "right";
Button.style.cssFloat = "right";
Button.style.fontWeight = "normal";
Button.style.textAlign = "right";
- Button.style.width = "6em";
-
+ // Button.style.width = "6em";
+
ButtonLink.style.color = Header.style.color;
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( "]" ) );
-
+
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 );
+addOnloadHook( toggleMapListSetup );
+
-
/** Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* 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);
- };
+ var reCache = {};
+ return function (element, className) {
+ return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
+ };
})();
/** Dynamic Navigation Bars (experimental) *************************************
@@ -107,11 +169,11 @@ var hasClass = (function () {
* Description: See [[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
@@ -119,11 +181,11 @@ 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) {
@@ -135,7 +197,7 @@ function toggleNavigationBar(indexNavigationBar)
}
}
NavToggle.firstChild.data = NavigationBarShow;
-
+
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
@@ -149,7 +211,7 @@ function toggleNavigationBar(indexNavigationBar)
NavToggle.firstChild.data = NavigationBarHide;
}
}
-
+
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
@@ -159,13 +221,13 @@ function createNavigationBarToggleButton()
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 isCollapsed = hasClass( NavFrame, "collapsed" );
/*
* Check if any children are already hidden. This loop is here for backwards compatibility:
@@ -190,7 +252,7 @@ function createNavigationBarToggleButton()
}
var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
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")) {
@@ -201,5 +263,7 @@ function createNavigationBarToggleButton()
}
}
}
-
+
addOnloadHook( createNavigationBarToggleButton );
+
+/* MediaWiki:Dtrush.js */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment