importScript('User:AzaToth/morebits.js');
function catlist() {
if (mw.config.get('wgCanonicalNamespace') == "Category" || mw.config.get('wgPageName') == "User:Bradv15/catlist.js") {
mw.util.addPortletLink( 'p-cactions', "javascript:catlist.callback()", "catlist", "catlist", "Generate List", "");
}
}
$(catlist);
catlist.callback = function catlistCallback( uid ) {
var Window = new SimpleWindow( 600, 400 );
Window.setTitle(mw.config.get('wgTitle'));
var form = new QuickForm( catlist.callback.evaluate );
form.append( {type:'button', label:'Plain text',
name:'text', event: function(e){catlist.callback.update(e)}} );
form.append( {type:'button', label:'Wikilinks',
name:'links', event: function(e){catlist.callback.update(e)}} );
form.append( {type:'button', label:'Extended links',
name:'extd', event: function(e){catlist.callback.update(e)}} );
form.append( {type:'button', label:'Extended links (with headers)',
name:'extdhdr', event: function(e){catlist.callback.update(e)}} );
var output = form.append( {type:'div', id:'catlistOutput'} );
var result = form.render();
Window.setContent( result );
Window.display();
}
catlist.callback.update = function catlistUpdate(e) {
var output = document.getElementById('catlistOutput');
while (output.firstChild)
{
output.removeChild(output.firstChild);
};
var pre = output.appendChild(document.createElement('pre'));
var lstTD = document.evaluate('//div[@id="mw-pages"]//td/*', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i=0; i<lstTD.snapshotLength; i++) {
var nod = lstTD.snapshotItem(i);
if (nod.tagName == 'H3' && e.target.name == 'extdhdr') {
if (nod.innerHTML.length==1) {
pre.appendChild(document.createTextNode('==='+nod.innerHTML+'===\n\n'));
}
}
else if (nod.tagName == 'UL') {
var lstA = document.evaluate('.//a', nod, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var j=0;j<lstA.snapshotLength; j++) {
var title = lstA.snapshotItem(j).title;
var text = '';
switch (e.target.name) {
case 'text':
text = title;
break;
case 'links':
text = '[['+title+']]';
break;
case 'extd':
case 'extdhdr':
text = '{{la|'+title+'}}';
break;
}
pre.appendChild(document.createTextNode(text+'\n\n'));
}
}
}
}