User:HMSSolent/common.js
importScript('User:Lupin/recent2.js');
// closexfd.js - a compilation of 5 scripts
// written by [[User:King of Hearts]], modified from
// [[Wikipedia: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:
* 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.
Operation:
* 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 <a> 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.
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:
* test it
* centralized link list in contentSub?
* test unicode support
*/
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'); // [[Wikipedia:Igloo]]
importScript('User:Kangaroopower/MRollback.js'); //Mass Rollback Script [[User:Kangaroopower/MRollback.js]
importScript('User:Nageh/rollbackSum.js');
rollbackSummaryDefault = "Undid prior revision by [[Special:Contributions/$2|$2]] ([[User talk:$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'); //<nowiki>[[User:Ohconfucius/script/EngvarB.js]]</nowiki>
importScript('User:Equazcion/OneClickArchiver.js'); // Backlink: [[User:Equazcion/OneClickArchiver.js]]
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.