User:Aldnonymous/GS Delete.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/*
* Script that adds several global sysop delete and block reasons to action=delete and Special:Block forms
* Modified from WhitePhosphorus Delete reason
* <nowiki>
*/
/*global mw*/
$(function() {
"use strict";
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets'], function() {
if (mw.config.get('wgAction') !== 'delete' &&
mw.config.get('wgCanonicalSpecialPageName') !== 'Block' &&
mw.config.get('wgCanonicalSpecialPageName') !== 'Nuke') {
return;
}
// not loading if user is local admin
// but will still load on wikis having, say, "deleters" groups.
if (mw.config.get('wgUserGroups').includes('sysop')) {
return;
}
// Reasons for both delete and block
var additionalReasons = [
"Spam ([[m:GS|global sysop]] action)",
"Vandalism ([[m:GS|global sysop]] action)",
];
// Reasons for delete only
var additionalDelete =
additionalReasons.concat([
"No useful content ([[m:GS|global sysop]] action)",
"Nonsense/vandalism ([[m:GS|global sysop]] action)",
"Test page ([[m:GS|global sysop]] action)",
"Not written in this projects language ([[m:GS|global sysop]] action)",
"Requested by the author ([[m:GS|global sysop]] action)",
"Outside the projects scope ([[m:GS|global sysop]] action)",
"Empty ([[m:GS|global sysop]] action)",
"Copyright violation please read [[wmf:Resolution:Licensing policy|licensing policy]] ([[m:GS|global sysop]] action)",
]);
// Reasons for blocks only
var additionalBlock =
additionalReasons.concat([
"Intimidating behaviour/harassment ([[m:GS|global sysop]] action)",
"Cross-wiki vandalism/vandalism ([[m:GS|global sysop]] action)",
"Spambot ([[m:GS|global sysop]] action)",
"Spam-only account ([[m:GS|global sysop]] action)",
"Open proxy ([[m:No open proxies|more info]]) ([[m:GS|global sysop]] action)",
]);
if (mw.config.get('wgAction') === 'delete') {
// Append reasons to action=delete
var OOUIoptions = $.map(additionalDelete, function(option) {
return {label: option, data: option};
})
OOUIoptions.unshift({optgroup: "Global sysop reasons", data: undefined});
var OOUIselect = OO.ui.DropdownWidget.static.infuse($('#ooui-php-1'));
// I doubt this is kind of a hack and am not familiar with OOUI :/
// directly pass items to setOptions will remain `disabled` being true
OOUIselect.setOptions($.map(OOUIselect.dropdownWidget.menu.items, function(option) {
return option.data ? {label: option.label, data: option.data} : {optgroup: option.label, data: undefined};
}).concat(OOUIoptions));
} else if (mw.config.get('wgCanonicalSpecialPageName') === 'Nuke') {
// Special:Nuke
$('input[name=wpReason]').val($('input[name=wpReason]').val() + ' ([[m:GS|global sysop]] action)');
} else {
// Special:Block
var OOUIoptions = $.map(additionalBlock, function(option) {
return {label: option, data: option};
})
OOUIoptions.unshift({optgroup: "Global sysop reasons", data: undefined});
var OOUIselect = OO.ui.DropdownInputWidget.static.infuse($('#mw-input-wpReason')).dropdowninput;
OOUIselect.setOptions($.map(OOUIselect.dropdownWidget.menu.items, function(option) {
return option.data ? {label: option.label, data: option.data} : {optgroup: option.label, data: undefined};
}).concat(OOUIoptions));
// If GS reasons are selected,
// we need to unselect it and put it into the "Other:" field
// or there will be a "htmlform-select-badoption" error
$('button[type=submit]').click(
function() {
var blockReason = OOUIselect.value;
if (additionalBlock.includes(blockReason)) {
if ($('input[name=wpReason-other]').val()) {
blockReason += (': ' + $('input[name=wpReason-other]').val());
}
$('input[name=wpReason-other]').val(blockReason);
OOUIselect.setValue('');
}
}
);
}
});
});
/* </nowiki> */