User:Tyrok1/monobook.js: Difference between revisions
Content added Content deleted
(Created page with 'function CompareActivate() { var tocEl = document.getElementById("toc"); if(tocEl) { var toctitleEl = document.getElementById("toctitle"); var instructionsEl = toctitleEl.…') |
(Commented the code) |
||
Line 1: | Line 1: | ||
function CompareActivate() |
function CompareActivate() |
||
{ |
{ |
||
//check to see if we're looking at a task page |
|||
var tocEl = document.getElementById("toc"); |
var tocEl = document.getElementById("toc"); |
||
if(tocEl) |
if(tocEl) |
||
{ |
{ |
||
//add some instructions |
|||
var toctitleEl = document.getElementById("toctitle"); |
var toctitleEl = document.getElementById("toctitle"); |
||
var instructionsEl = toctitleEl.appendChild(document.createElement("p")); |
var instructionsEl = toctitleEl.appendChild(document.createElement("p")); |
||
Line 9: | Line 11: | ||
instructionsEl.appendChild(document.createElement("br")); |
instructionsEl.appendChild(document.createElement("br")); |
||
instructionsEl.appendChild(document.createTextNode("Uncheck all boxes to show all languages.")); |
instructionsEl.appendChild(document.createTextNode("Uncheck all boxes to show all languages.")); |
||
⚫ | |||
//find all of the links to language sections |
|||
var liEls = tocEl.getElementsByTagName("li"); |
var liEls = tocEl.getElementsByTagName("li"); |
||
for(var l = 0; l < liEls.length; ++l) |
for(var l = 0; l < liEls.length; ++l) |
||
{ |
{ |
||
//add a checkbox with the language section's <a> name attribute as its value for easier lookup in the refresh function |
|||
var checkboxEl = document.createElement("input"); |
var checkboxEl = document.createElement("input"); |
||
checkboxEl.setAttribute("type", "checkbox"); |
checkboxEl.setAttribute("type", "checkbox"); |
||
Line 21: | Line 26: | ||
liEls[l].insertBefore(checkboxEl, liEls[l].firstChild); |
liEls[l].insertBefore(checkboxEl, liEls[l].firstChild); |
||
} |
} |
||
//and refresh the display for good measure (sometimes browsers like to save <input> states between reloads) |
|||
CompareRefresh(); |
CompareRefresh(); |
||
} |
} |
||
Line 27: | Line 34: | ||
function CompareRefresh() |
function CompareRefresh() |
||
{ |
{ |
||
//refresh the display of the language sections displayed under the TOC |
|||
//first, check to see if we're looking at a task page |
|||
var tocEl = document.getElementById("toc"); |
var tocEl = document.getElementById("toc"); |
||
var languages = new Array(); |
var languages = new Array(); |
||
Line 32: | Line 41: | ||
if(tocEl) |
if(tocEl) |
||
{ |
{ |
||
//find all of the checkboxes within the TOC |
|||
var inputEls = tocEl.getElementsByTagName("input"); |
var inputEls = tocEl.getElementsByTagName("input"); |
||
for(var i = 0; i < inputEls.length; ++i) |
for(var i = 0; i < inputEls.length; ++i) |
||
{ |
{ |
||
//if it's one of the ones we added earlier, log the checked status to the languages array for later use |
|||
if(inputEls[i].getAttribute("name").substring(0, ("CompareLanguage").length) == "CompareLanguage") |
if(inputEls[i].getAttribute("name").substring(0, ("CompareLanguage").length) == "CompareLanguage") |
||
{ |
{ |
||
Line 41: | Line 52: | ||
} |
} |
||
} |
} |
||
//now, find all <a> tags with name attributes |
|||
} |
|||
var aEls = document.getElementsByTagName("a"); |
|||
for(var a = 0; a < aEls.length; ++a) |
|||
{ |
|||
⚫ | |||
{ |
{ |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
{ |
{ |
||
//we can assume that this is a language section |
|||
⚫ | |||
//make a list of all of the elements between this <a> tag and the next one that has a name attribute |
|||
curEl = curEl.nextSibling; |
|||
⚫ | |||
⚫ | |||
var curEl = aEls[a].nextSibling; |
|||
⚫ | |||
⚫ | |||
{ |
|||
if(topicEls[e].tagName && topicEls[e].style) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
//either show or hide them depending on the language's checked status (of if none are checked, display all) |
|||
for(var e = 0; e < topicEls.length; ++e) |
|||
{ |
{ |
||
topicEls[e]. |
if(topicEls[e].tagName && topicEls[e].style) |
||
{ |
|||
topicEls[e].style.display = (numChecked < 1 || languages[aEls[a].name] ? "" : "none"); |
|||
} |
|||
} |
} |
||
} |
} |
||
Line 65: | Line 81: | ||
} |
} |
||
//register the comparison script with the window's load event |
|||
if(window.addEventListener) |
if(window.addEventListener) |
||
{ |
{ |