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
