Template:Infobox/doc: Difference between revisions
Jump to navigation
Jump to search
Created page with "=== Use === For creating standardised infoboxes, easy and whatever. === Usage === <pre>{{infobox |above = Outside table (optional) |top = Top of infobox (but with..." |
+JavaScript |
||
| Line 15: | Line 15: | ||
|headerN = A section header | |headerN = A section header | ||
}}</pre> | }}</pre> | ||
=== JavaScript === | |||
For the alternating rows, the following JavaScript is needed for [[MediaWiki:Common.js]]: | |||
<pre>function alternate_init() { | |||
var tables = getElementsByClassName(document, "table", "alternateable"); | |||
for(var ti = 0; ti < tables.length; ti++) { | |||
ts_alternate(tables[ti]); | |||
} | |||
} | |||
addOnloadHook(alternate_init); | |||
function ts_alternate(table) { | |||
// Take object table and get all it's tbodies. | |||
var tableBodies = table.getElementsByTagName("tbody"); | |||
// Loop through these tbodies | |||
for (var i = 0; i < tableBodies.length; i++) { | |||
// Take the tbody, and get all it's rows | |||
var tableRows = tableBodies[i].getElementsByTagName("tr"); | |||
// Loop through these rows | |||
// Start at 1 because we want to leave the heading row untouched | |||
var curRow = 0 | |||
var sections = new Array(); | |||
var s = 0; | |||
sections[s] = new Array(); | |||
for (var j = 0; j < tableRows.length; j++) { | |||
if(tableRows[j].parentNode != tableBodies[i]) | |||
continue; | |||
if(tableRows[j].tagName != 'TR') | |||
continue; | |||
var ignore = false; | |||
var oldClasses = tableRows[j].className.split(" "); | |||
var newClassName = ""; | |||
for (var k = 0; k < oldClasses.length; k++) { | |||
if (oldClasses[k] == "alternate-ignore") | |||
ignore = true; | |||
if (oldClasses[k] == "alternate-reset") { | |||
curRow = 0; | |||
ignore = true; | |||
} | |||
if (oldClasses[k] != "" && oldClasses[k] != "even" && oldClasses[k] != "odd") | |||
newClassName += oldClasses[k] + " "; | |||
} | |||
if(curRow==0 && j>0) { | |||
s++; | |||
sections[s] = new Array(); | |||
} | |||
if(ignore) { | |||
continue; | |||
} | |||
sections[s].push(tableRows[j]); | |||
curRow++; | |||
} | |||
for(var s = 0; s < sections.length; s++) { | |||
var l = sections[s].length; | |||
if (l<=1) | |||
continue; | |||
for(var r = 0; r < l; r++) { | |||
var row = sections[s][r]; | |||
var oldClasses = row.className.split(" "); | |||
var newClassName = ""; | |||
for (var k = 0; k < oldClasses.length; k++) { | |||
if (oldClasses[k] != "" && oldClasses[k] != "even" && oldClasses[k] != "odd") | |||
newClassName += oldClasses[k] + " "; | |||
} | |||
row.className = newClassName + ((l-r) % 2 == 0 ? "odd" : "even"); | |||
} | |||
} | |||
} | |||
}</pre> | |||
Revision as of 14:54, 28 August 2012
Use
For creating standardised infoboxes, easy and whatever.
Usage
{{infobox
|above = Outside table (optional)
|top = Top of infobox (but within) (optional)
|title = Name or title of infobox
|image = The image (optional)
|caption = Caption (optional)
|labelN = Label for dataN (optional)
|dataN = Data (can be used with or without a label)
|headerN = A section header
}}
JavaScript
For the alternating rows, the following JavaScript is needed for MediaWiki:Common.js:
function alternate_init() {
var tables = getElementsByClassName(document, "table", "alternateable");
for(var ti = 0; ti < tables.length; ti++) {
ts_alternate(tables[ti]);
}
}
addOnloadHook(alternate_init);
function ts_alternate(table) {
// Take object table and get all it's tbodies.
var tableBodies = table.getElementsByTagName("tbody");
// Loop through these tbodies
for (var i = 0; i < tableBodies.length; i++) {
// Take the tbody, and get all it's rows
var tableRows = tableBodies[i].getElementsByTagName("tr");
// Loop through these rows
// Start at 1 because we want to leave the heading row untouched
var curRow = 0
var sections = new Array();
var s = 0;
sections[s] = new Array();
for (var j = 0; j < tableRows.length; j++) {
if(tableRows[j].parentNode != tableBodies[i])
continue;
if(tableRows[j].tagName != 'TR')
continue;
var ignore = false;
var oldClasses = tableRows[j].className.split(" ");
var newClassName = "";
for (var k = 0; k < oldClasses.length; k++) {
if (oldClasses[k] == "alternate-ignore")
ignore = true;
if (oldClasses[k] == "alternate-reset") {
curRow = 0;
ignore = true;
}
if (oldClasses[k] != "" && oldClasses[k] != "even" && oldClasses[k] != "odd")
newClassName += oldClasses[k] + " ";
}
if(curRow==0 && j>0) {
s++;
sections[s] = new Array();
}
if(ignore) {
continue;
}
sections[s].push(tableRows[j]);
curRow++;
}
for(var s = 0; s < sections.length; s++) {
var l = sections[s].length;
if (l<=1)
continue;
for(var r = 0; r < l; r++) {
var row = sections[s][r];
var oldClasses = row.className.split(" ");
var newClassName = "";
for (var k = 0; k < oldClasses.length; k++) {
if (oldClasses[k] != "" && oldClasses[k] != "even" && oldClasses[k] != "odd")
newClassName += oldClasses[k] + " ";
}
row.className = newClassName + ((l-r) % 2 == 0 ? "odd" : "even");
}
}
}
}