/* Category Member Link Hider script, version [0.0.1]
Originally from: http://en.wikipedia.org/wiki/User:Splarka/cmlhider.js
On Prefixindex, will prompt for a category name, and hide all links found to pages in that category.
Notes:
* VERY slow, could be optimized probably.
* Limited to categories with 500 members, a query-continue would be needed for longer ones.
* Test version.
*/
if(wgCanonicalSpecialPageName == 'Prefixindex') addOnloadHook(hideCatMemLinksButton)
function hideCatMemLinksButton() {
mw.util.addPortletLink('p-tb','javascript:hideCML()','Hide links','t-cml','Hide links to articles in a specified category');
}
function hideCML() {
var cat = prompt('Enter a category name','Category:NA-Class articles');
if(cat == '' || !cat) return;
var cml = document.getElementById('t-cml');
if(cml) {
var prog = document.createElement('img');
prog.setAttribute('id','cml-prog');
prog.setAttribute('src',stylepath + '/common/images/spinner.gif');
cml.appendChild(prog);
}
var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&format=json&callback=hideCMLCB&list=categorymembers&cmnamespace=14&cmlimit=500&cmtitle=' + cat;
var scriptElem = document.createElement('script');
scriptElem.setAttribute('src',url);
scriptElem.setAttribute('type','text/javascript');
document.getElementsByTagName('head')[0].appendChild(scriptElem);
}
function hideCMLCB(obj) {
var links = (document.getElementById('content')) ? document.getElementById('content').getElementsByTagName('a') : document.getElementById('mw_content').getElementsByTagName('a')
if(!obj['query'] || !obj['query']['categorymembers']) return
for(var i in obj['query']['categorymembers']) {
var pg = obj['query']['categorymembers'][i]['title'];
pg = wgArticlePath.replace(/\$1/,'') + pg.replace(/ /ig,'_');
for(var j=0;j<links.length;j++) {
if(links[j].href.replace(wgServer,'') == pg) {
links[j].style.visibility = 'hidden';
}
}
}
var cml = document.getElementById('t-cml');
if(cml) document.getElementById('cml-prog').style.display = 'none'
}