மீடியாவிக்கி:Group-sysop.js
Appearance
குறிப்பு - சேமித்த பின்னர், நீங்கள் செய்த மாற்றங்களைக் காண்பதற்கு உங்கள் உலவியின் இடைமாற்று அகற்றப்பட வேண்டும்.
- மொஸில்லா பயர்பாக்ஸ் / சபாரி: Shift+Reload, அல்லது Ctrl-F5 அல்லது Ctrl-R (⌘-R Mac ல்)
- கூகிள் குரோம் Ctrl-Shift-R அழுத்தவும். (⌘-Shift-R Mac ல்) ;
- இண்டர்நெட் எக்ஸ்ப்ளோரர்: Ctrl-Refresh அல்லது Ctrl-F5 ஐ அழுத்தவும்.
- ஒபேரா: Tools → Preferences இல் இடைமாற்றை அகற்றவும்;
/* Any JavaScript here will be loaded for sysops only */
/** Creates a button to invert checkboxes on Special:Undelete */
if (mw.config.get('wgCanonicalNamespace') == "Special" && mw.config.get('wgCanonicalSpecialPageName') == "Undelete") {
(function () {
var form = document.forms["undelete"];
if (!form) {
return;
}
var elements = form.elements;
var submitButton = elements["mw-undelete-submit"];
if (!submitButton) {
return;
}
var toggleButton = document.createElement("input");
toggleButton.type = "button";
toggleButton.value = "Invert selection";
toggleButton.onclick = function () {
for (var i = 0; i < elements.length; ++i) {
var input = elements[i];
if (input.type != "checkbox") {
continue;
}
input.checked = !input.checked;
}
};
submitButton.parentNode.insertBefore(toggleButton, submitButton);
})();
}
/** Clean CSD G10 deletion summaries ******************************************
*
* Description: Replaces autogenerated deletion summaries for articles tagged
* for speedy deletion as attack pages (CSD G10) with a neutral
* summary that avoids including any part of the article content
* in the deletion log.
* Maintainers: [[User:Ilmari Karonen]]
*/
if (mw.config.get('wgAction') == "delete") {
(function () {
var wpReason = document.getElementById("wpReason");
if (!wpReason)
return;
var regexp = /\{\{\s*(msg:\s*)?(template:\s*)?(db-a(p|tk)?|((csd|db)[-:])?(a6|attack(pages?|template)?|g10))\s*[|}]/i;
if (regexp.test(wpReason.value))
wpReason.value = "[[WP:CSD#G10|CSD G10]]: [[Wikipedia:Attack page|Attack Page]]";
})();
}
/*
* Note: These are the known redirects to [[Template:Db-attack]] as of 7 Jun 2007.
* The regexp above should catch these as well as a number of possible variants.
*
* [[Template:A6]]
* [[Template:Attackpage]]
* [[Template:Attackpages]]
* [[Template:CSD:G10]]
* [[Template:Csd-a6]]
* [[Template:Db-Attack]]
* [[Template:Db-a]]
* [[Template:Db-a6]]
* [[Template:Db-ap]]
* [[Template:Db-atk]]
* [[Template:Db-attack]]
* [[Template:Db-attacktemplate]]
* [[Template:Db-g10]]
* [[Template:G10]]
*/
/** Automatic deletion dropdown
*******************************************************
*
* Description: Augments the drop-down menu of standard deletion reasons
* generated from [[MediaWiki:Deletereason-dropdown]], to
* automatically pick a reason from the list based on speedy
* deletion tags.
* Maintainers: [[User:Random832]]
*/
if (mw.config.get('wgAction') == 'delete' && typeof(csdDeleteForm) == 'undefined') {
(function () { // scope
var list = document.getElementById('wpDeleteReasonList');
if (!list)
return;
var summaryBox = document.getElementById('wpReason') || document.getElementById('wpComment');
if (!summaryBox)
return;
var re = /\[\[([^\]\|]*\|)?([^\]]*)\]\]/g; // convert pipe links to their display text.
for (var i = 0; i < list.options.length; i++) {
var o = list.options[i];
o.text = o.text.replace(re, '$2');
}
function csdChangeBox() {
if (summaryBox.value.indexOf('content was:') != -1)
summaryBox.value = '';
}
function addEvent(obj, evType, fn, useCapture) {
//alert(obj);
if (obj.addEventListener) {
obj.addEventListener(evType, fn, useCapture);
return true;
} else if (obj.attachEvent) {
var r = obj.attachEvent("on" + evType, fn);
return r;
} else {
alert("Handler could not be attached");
}
}
function findCSD(s) { // s e.g. "U1", "G10"
for (var i = 0; i < list.options.length; i++) {
var o = list.options[i];
if (o.text.indexOf("CSD " + s + ":") == 0)
return o;
if (o.text.indexOf(s + ":") == 0)
return o;
//TODO fine-tuning for A7 and G6
}
}
var reasons_regex = {
'G10' : // copied from [[User:Ilmari Karonen]]'s script, covers more bases than the others since it's more important (this script should blank the summary in _all_ cases where the other script does
/\{\{\s*(msg:\s*)?(template:\s*)?(db-a(p|tk)?|((csd|db)[-:])?(a6|attack(pages?|template)?|g10))\s*[|}]/i,
// other regexes are simpler and cover probably 99% of actual tags.
'G1' : /\{\{\s*(db-|csd[-:])?(nonsense|ns|g1)\s*\}\}/i,
'G2' : /\{\{\s*(db-|csd[-:])?(test|g2)\s*\}\}/i,
'G3' : /\{\{\s*(db-|csd[-:])?(vandalism|vandal|vand|g3)\s*\}\}/i,
'G4' : /\{\{\s*((db-|csd[-:])?(repost|g4)|deleteagain)\s*\}\}/i,
'G5' : /\{\{\s*(db-|csd[-:])?(banned|ban|g5)\s*\}\}/i,
'G6' : /\{\{\s*(db-|csd[-:])?(maintenance|move|histmerge|g6)\s*\}\}/i, // db-move and db-histmerge should be covered elsewhere if possible
'G7' : /\{\{\s*(db-|csd[-:])?(author|blanked|g7)\s*\}\}/i,
'G8' : /\{\{\s*(db-|csd[-:])?(talk|g8)\s*\}\}/i,
// G9 is for office, there is no tag.
// G10 is covered above
'G11' : /\{\{\s*(db-|csd[-:])?(spam|ad|advert|g11)\s*\}\}/i,
'G12' : /\{\{\s*(db-|csd[-:])?(copyvio|cv|cvio|g12|a8)\s*(\}\}|\|)/i,
'A1' : /\{\{\s*(db-|csd[-:])?((no)?context|a1)\s*\}\}/i,
'A3' : /\{\{\s*(db-|csd[-:])?((no)?content|a3|contact|a4)\s*\}\}/i,
// A4 = A3
// A6 = G10
'A7 (bio)' : /\{\{\s*(nn-|db-|csd[-:])?(a7|notability|bio|person)\s*\}\}/i,
'A7 (web)' : /\{\{\s*(nn-|db-|csd[-:])?(web(site)?|inter(net|tubes))\s*\}\}/i,
'A7 (group)' : /\{\{\s*(db-|csd[-:]|nn-)?(band|club|music|inc|corp|comp(any)?)\s*\}\}/i,
// TODO separate for music/band?
// A8 = G12
'C1' : /(\{\{\s*(db-|csd[-:])?(emptycat|c1)\s*\}\}|empty category)/i,
'U1' : /\{\{\s*(db-|csd[-:])?(userreq|u1|user)\s*\}\}/i,
'I2' : /\{\{\s*(db-|csd[-:])?(noimage|i2)\s*\}\}/i,
'R1' : /\{\{\s*(db-|csd[-:])?(redirnone|r1)\s*\}\}/i,
// no point in including the other image categories here, this will only work
// when deleting a description page with no image
'dummy' : /this will never be reached, it is there to allow every entry above to end in a comma/
}
function autopick_deletion_reason() {
for (var csd in reasons_regex) {
if (reasons_regex[csd].test(summaryBox.value)) {
var option = findCSD(csd);
if (!option) {
if (csd == 'G10')
summaryBox.value = "[[WP:CSD#G10|CSD G10]]: [[Wikipedia:Attack page|Attack Page]]"; // last resort, if G10 can't be found in the menu.
return;
}
list.selectedIndex = option.index;
csdChangeBox(); // clear summary box
}
}
// TODO "content before blanking" and A7, etc.
// TODO We can autodetect G8 from the namespace and a redlinked tab.
var xfdregex = /.*\{\{AfDM\|page=([^\|]*)\|.*/;
if (xfdregex.test(summaryBox.value)) {
summaryBox.value = summaryBox.value.replace(xfdregex, '[[Wikipedia:Articles for deletion/$1]]');
return;
}
xfdregex = /.*\{\{mfdtag\|([^}]*)\}\}.*/;
if (xfdregex.test(summaryBox.value)) {
summaryBox.value = summaryBox.value.replace(xfdregex, '[[Wikipedia:Miscellany for deletion/$1]]');
return;
}
xfdregex = /.*\{\{dated prod\|concern = (\{\{\{concern\|)?(.*?)(\}\}\})?\|month.*/;
if (xfdregex.test(summaryBox.value)) {
summaryBox.value = summaryBox.value.replace(xfdregex, '[[WP:PROD]], reason was \'$2\'.');
return;
}
if (summaryBox.value.indexOf('\{\{rfd\}\}') != -1) {
// best we can do without a direct link
summaryBox.value = '[[WP:RFD|RFD]]';
return;
}
xfdregex = /.*\{\{((db|delete).*?)\}\}.*/;
if (xfdregex.test(summaryBox.value)) { // last resort for unhandled speedy tags
summaryBox.value = summaryBox.value.replace(xfdregex, '$1');
return;
}
}
addEvent(list, "change", csdChangeBox, false);
autopick_deletion_reason();
})(); // scope
}