Author: alistrius
Description:
Hello, it should be convenient to use tabbed navigation troughout the meta space (not on main namespace). There is already function tabbedprefs() which do the work in wikibits.js, but it catche only <fieldsets> in <div id='preferences'>
If it's possible to put the div in the wikitext, it doesn't work for fieldset since it's illegal out of <form> elements.
So i suggest it should be able to catch
<dl class="tabbed">
<dt>Foo</dt>
<dd>Content for Foo</dd>
<dt>Bar</ct>
<dd>Content for Bar</dd>
</dl>
and make tabs from it
here is the code i suggest (not tested)
function tabbedprefs() { // nename in maketabs() ?
if (!wgNamespaceNumber) return; // in on mainspace return (or not ?)
var prefform = document.getElementById('tabbed');
if (!prefform || !document.createElement) {
return;
}
if (prefform.nodeName.toLowerCase() == 'a') {
return; // Occasional IE problem
}
prefform.className = prefform.className + 'jsprefs';
var sections = [];
var childrenTitles = prefform.childNodes.getElementsByTagName('dt');
var childrenContent = prefform.childNodes.getElementsByTagName('dd'); if (childrenTitles.length != childrenContent.length) return; //if there is not the same number on dt and dd
var seci = 0;
for (var i = 0; i < childrenTitles.length; i++) {
if (childrenTitles[i].nodeName.toLowerCase() == 'dt') { // == 'fieldset'; childrenTitles[i].id = 'prefsection-' + seci; childrenTitles[i].className = 'prefsection'; if (is_opera || is_khtml) { childrenTitles[i].className = 'prefsection operaprefsection'; } var legends = childrenTitles[i].nodeValue; //.getElementsByTagName('legend'); sections[seci] = {}; legends[0].className = 'mainLegend'; if (legends[0] && legends[0].firstChild.nodeValue) { sections[seci].text = childrenContent[i].firstChild.nodeValue; //not sure of [i] or [seci] } else { sections[seci].text = '# ' + seci; } sections[seci].secid = childrenContent[i].id; seci++; if (sections.length != 1) { childrenContent[i].style.display = 'none'; } else { var selectedid = childrenContent[i].id; } }
}
var toc = document.createElement('ul');
toc.id = 'preftoc';
toc.selectedid = selectedid;
for (i = 0; i < sections.length; i++) {
var li = document.createElement('li'); if (i === 0) { li.className = 'selected'; } var a = document.createElement('a'); a.href = '#' + sections[i].secid; a.onmousedown = a.onclick = uncoversection; a.appendChild(document.createTextNode(sections[i].text)); a.secid = sections[i].secid; li.appendChild(a); toc.appendChild(li);
}
prefform.parentNode.insertBefore(toc, prefform.parentNode.childNodes[0]);
document.getElementById('prefsubmit').id = 'prefcontrol';
}
quick link to the original code http://en.wikipedia.org/skins-1.5/common/wikibits.js
Version: unspecified
Severity: enhancement