MediaWiki:Group-test-sysop.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.
/* JS placed here will affect test wiki administrators only */
/* START OF "WARNING TOOLS" WHEN ACTING OUTSIDE OF OWN TEST WIKI(S)
based on http://meta.wikimedia.org/wiki/User:Quentinv57/HideButtonsFromNonGsProjects.js by Quentinv57
hacked together by MF-Warburg, improved by Hydriz
*/
// This URL loads data from MediaWiki:Administrated_test_wikis.json
var testwikijson = "https://incubator.wikimedia.org/w/index.php?title=MediaWiki:Administrated_test_wikis.json&action=raw&ctype=application/json";
// Nothing to change below this line
function in_array (string, array) {
var i = '';
for (i in array) {
if (array[i] == string) {
return true;
}
}
return false;
}
function getTestWikiPrefix( title ) {
var str = title.split("/");
return str[0] + "/" + str[1];
}
function getTestWikiAdmins( prefix, data ) {
var today = new Date();
var output = [];
for ( var user in data[prefix] ) {
// For Incubator admins that are also test sysops.
// This script is not loaded for them anyway, but having their entry can break the script for others.
if ( data[prefix][user] == "never" ) {
output.push(user);
} else {
var expiry = new Date(data[prefix][user]);
if ( today.getTime() < expiry.getTime() ) {
output.push(user);
}
}
}
return output;
}
function userNotTestAdmin() {
// buttons become red (works not on Monobook)
if (document.getElementById('ca-delete') !== null) {
document.getElementById('ca-delete').style.backgroundColor='red';
}
// warning if the deletion page is opened
if (mw.config.get('wgAction') == 'delete') {
document.getElementById('deleteconfirm').innerHTML = '<p id="wpDeleteWarning" style="color:red; text-align: center"><span style="font-size:200%">Warning: You\'re about to delete a page outside of your test wiki(s)!</span><br />Remember the policy: If you delete something outside your test, be prepared to defend your actions or your test-administrator privilege <b>may be revoked</b>. <a href="/wiki/Incubator:Community_Portal">Questions?</a></p>'+document.getElementById('deleteconfirm').innerHTML;
}
}
$.getJSON( testwikijson, function ( data ) {
var authorized = false;
if ( mw.config.get('wgTitle').startsWith('W') && in_array(mw.config.get('wgNamespaceNumber'), [0, 1, 10, 11, 14, 15, 828, 829]) ) {
var prefix = getTestWikiPrefix(mw.config.get('wgTitle'));
var testadmins = getTestWikiAdmins(prefix, data);
if ( in_array( mw.config.get('wgUserName'), testadmins ) ) {
var authorized = true;
}
}
if (!authorized) {
userNotTestAdmin();
}
});
// warning if the block page is opened
if (mw.config.get('wgCanonicalNamespace')=='Special' && mw.config.get('wgCanonicalSpecialPageName') == 'Block') {
document.getElementsByTagName('form')[0].innerHTML = '<p id="wpBlockWarning" style="color:red; text-align: center"><span style="font-size:200%">Warning: You are about to block a user as a test-admin!</span><br />This should be done in emergencies only and be prepared to defend your actions or your test-administrator privilege <b>may be revoked</b>. <a href="/wiki/Incubator:Community_Portal">Questions?</a></p>'+document.getElementsByTagName('form')[0].innerHTML;
}
/* END OF WARNINGS */