User:HMSSolent/common.js

importScript('User:Lupin/recent2.js'); // closexfd.js - a compilation of 5 scripts // written by User:King of Hearts, modified from // WikiProject User scripts/Scripts/CloseAFD.js by User:Johnleemk // and User:Lifebaka/closedrv.js by User:Lifebaka importScript('User:Doug/closetfd.js'); importScript('User:King of Hearts/closeffd.js'); importScript('User:King of Hearts/closecfd.js'); importScript('User:King of Hearts/closerfd.js'); importScript('User:Doug/closemfd.js'); importScript('Wikipedia:AutoEd/complete.js'); importScript('User:Ale_jrb/Scripts/csdhelper.js'); //User:Ale_jrb/Scripts importScript('User:Fox Wilson/delsort-monobook.js'); // Deletion sorting script WP:FWDS importScript('User:Anomie/unsignedhelper.js'); // Linkback: User:Anomie/unsignedhelper.js /* Disambiguation lookup script, version [0.2.8] Originally from: http://en.wikipedia.org/wiki/User:Splarka/dabfinder.js Notes: Operation: This is a bit messy but at the time was the easiest and most thorough way to do it I could think of. Of course, a bot might be much more efficient, but this is handy for quick on-the-fly live checking. To do: var dabnames = new Array; var dabfound = 0; if(wgNamespaceNumber != -1) addOnloadHook(findDABsButton) function findDABsButton { if(!queryString('oldid') && !queryString('diff') && (wgAction == 'view' || wgAction == 'purge')) { mw.util.addPortletLink('p-tb','javascript:findDABs','Find disambiguations','t-dab'); if(queryString('finddab')=='true') findDABs; } mw.util.addPortletLink('p-tb','javascript:findRDRs','Find redirects','t-rdr'); if(queryString('findrdr')=='true') findRDRs; } function findRDRs { appendCSS('.mw-redirect {background-color: #ffff00;}\n#t-rdr {background-color:#ffff00;}'); document.getElementById('t-rdr').appendChild(document.createTextNode('\nRedirects hilighted, but don\'t ')); if(wgServer != 'http://en.wikipedia.org' && wgScriptPath != '/wikipedia/en/w') return //en.wp policy var a = document.createElement('a'); a.setAttribute('href','http://en.wikipedia.org/wiki/Wikipedia:Redirect#Do_not_.22fix.22_links_to_redirects_that_are_not_broken'); a.appendChild(document.createTextNode('fix them.')); document.getElementById('t-rdr').appendChild(a); } function findDABs { var dab = document.getElementById('t-dab'); if(dab) injectSpinner(dab,'dab'); var url = wgScriptPath + '/api.php?maxage=86400&smaxage=86400&action=query&rawcontinue=&prop=links&pllimit=500&tlnamespace=10&indexpageids&format=json&callback=findDABsCB&titles=MediaWiki:Disambiguationspage'; mw.loader.load(url); } function findDABsCB(obj) { if(!obj['query'] || !obj['query']['pages'] || !obj['query']['pageids']) return var links = obj['query']['pages'][obj['query']['pageids'][0]]['links'] if(!links) return for(var i=0;i<links.length;i++) { dabnames.push(links[i]['title']); } findDABsQuery; } function findDABsQuery(qcont) { var url = wgScriptPath + '/api.php?maxage=300&smaxage=300&action=query&rawcontinue=&redirects&generator=links&gpllimit=500&prop=templates&tllimit=500&indexpageids&format=json&callback=findDABlinksCB&titles=' + encodeURIComponent(mw.config.get('wgPageName')); if(qcont) url += '&tlcontinue=' + encodeURIComponent(qcont) mw.loader.load(url); } function findDABlinksCB(obj) { var dablinks = new Array; if(!obj['query'] || !obj['query']['pages'] || !obj['query']['pageids']) return appendCSS('.dablink-found {border: 2px solid #00ff00}\n .dablink .dablink-found {border:2px dashed #00ff00}'); var ids = obj['query']['pageids']; var links = new Array for(var i=0;i<ids.length;i++) { var templates = obj['query']['pages'][ids[i]]['templates']; if(!templates) continue for(var j=0;j<templates.length;j++) { var tpl = templates[j]['title']; for(var k=0;k<dabnames.length;k++) { if(tpl == dabnames[k]) { dablinks.push(obj['query']['pages'][ids[i]]['title']); continue; }     }    }  }  if(obj['query']['redirects']) { var dablen = dablinks.length;  //don't iterate over additions. var redirects = obj['query']['redirects']; if(redirects) { for(var i=0;i<redirects.length;i++) { for(var j=0;j<dablen;j++) { if(obj['query']['redirects'][i]['to'] == dablinks[j]) { dablinks.push(obj['query']['redirects'][i]['from']); continue; }       }      }    }  }  var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document.body; var links = docobj.getElementsByTagName('a') for(var i=0;i<links.length;i++) { for(var j=0;j<dablinks.length;j++) { //to match API: "Foo (bar)" with href: "/wiki/Foo_%28bar%29", have to do some hacky string manipulation //should now work with parenthesis, unicode? var dablink = dablinks[j].replace(/ /g,'_'); var chklink = (links[i].hasAttribute('href')) ? links[i].getAttribute('href', 2).replace(/\#.*/,) :  chklink = chklink.replace(wgArticlePath.replace(/\$1/,),); chklink = decodeURIComponent(chklink); if(chklink == dablink && links[i].className.indexOf('dablink-found') == -1) { links[i].className += ' dablink-found'; dabfound++; }   }  }  var dab = document.getElementById('t-dab'); if(obj['query-continue'] && obj['query-continue']['templates']) { if(dab) { dab.appendChild(document.createElement('br')); dab.appendChild(document.createTextNode('more...')); }   findDABsQuery(obj['query-continue']['templates']['tlcontinue']); } else { if(dab) { removeSpinner('dab'); dab.appendChild(document.createElement('br')); if(dabfound > 0) { var span = document.createElement('span'); span.appendChild(document.createTextNode(dabfound + ' links to disambiguation pages found.')); span.className = 'dablink-found'; dab.appendChild(span); } else { dab.appendChild(document.createTextNode('No disambiguation links found.')); }   } else { alert(dabfound + ' links to disambiguation pages found.'); } } } function queryString(p) { var re = RegExp('[&?]' + p + '=([^&]*)'); var matches; if (matches = re.exec(document.location)) { try { return decodeURI(matches[1]); } catch (e) { } }  return null; } // Prompt for an edit summary when clicking a rollback link addOnloadHook(function {    var serverRe = wgServer.replace(/([^A-Za-z0-9_])/g, "\\$1");     var scriptRe = wgScript.replace(/([^A-Za-z0-9_])/g, "\\$1");     var rollbackRe = new RegExp ("^(" + serverRe + ")?" + scriptRe + "\\?([^#]*&)?action=rollback(&|$)");   var promptSummary = function  {        var summary = prompt("Enter rollback summary (or leave as \"default\" to use default summary):", "default");        if (summary == null || summary == "") return false;        if (summary == "default") return true;        this.href = this.href.replace("?", "?summary=" + encodeURIComponent(summary) + "&");        return true;    };    var links = document.getElementsByTagName("a");    for (var i = 0; i < links.length; i++) {        if (rollbackRe.test(links[i].href)) links[i].onclick = promptSummary;    } }); importScript('Wikipedia:Igloo/gloo.js'); // Igloo importScript('User:Kangaroopower/MRollback.js'); //Mass Rollback Script [[User:Kangaroopower/MRollback.js]
 * Uses the API using head/appendchild(script) and callback to avoid ajax.
 * Alt command finds and hilights redirects with simple CSS append (class="mw-redirect").
 * Per http://svn.wikimedia.org/viewvc/mediawiki?view=rev&revision=37270 we are limited to 500 subtemplates
 * The query-continue seems to work fine even as a generator. Built a re-query system to do this automatically.
 * Adds portlet button (or works with URI parameter &finddab=true)
 * Makes call to MediaWiki:Disambiguationspage links, generates array of these.
 * Makes call to generator=links / prop=templates on page title.
 * Builds array of registered links that link to disambiguation pages (that contain a disambiguation template).
 * Iterates over all  link objects on page, matching any that link to disambiguation, and applies green border.
 * .dablink descendant links are given a dashed border, all other found links are given a solid border.
 * Repeats call with tlcontinue if more than 500 templates have been returned in previous query.
 * test it
 * centralized link list in contentSub?
 * test unicode support

importScript('User:Nageh/rollbackSum.js'); rollbackSummaryDefault = "Undid prior revision by $2 (talk) to last version by $1" importScript('User:Ucucha/duplinks.js'); // User:Ucucha/duplinks importScript('User:Ohconfucius/script/formatgeneral.js'); //User:Ohconfucius/script/formatgeneral.js importScript("User:Darkwind/DAVT/Beta.js"); //User:Darkwind/DAVT/Beta importScript('User:Ohconfucius/script/EngvarB.js'); // User:Ohconfucius/script/EngvarB.js importScript('User:Equazcion/OneClickArchiver.js'); // Backlink: User:Equazcion/OneClickArchiver.js