User:Bradv/catlist.js

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

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

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'));

}

}

}

}