User:Writ Keeper/Scripts/blockDefaults.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
Documentation for this user script can be added at User:Writ Keeper/Scripts/blockDefaults. |
importScript("Special:MyPage/defaultBlockSettings.js");
$(document).ready(function()
{
mw.loader.using( ['mediawiki.util', 'mediawiki.user'], function() {
if(mw.config.get("wgCanonicalSpecialPageName") === "Block")
{
if(typeof wkDefaultBlockSettings === "undefined")
{
wkDefaultBlockSettings = {"Revoking talk page access: inappropriate use of user talk page while blocked":{"mw-input-wpDisableUTEdit":"checked"},"{{softerblock}}":{"mw-input-wpCreateAccount":"unchecked","mw-input-wpDisableEmail":"unchecked","mw-input-wpDisableUTEdit":"unchecked","mw-input-wpAutoBlock":"unchecked"}};
}
$("#mw-input-wpReason").change(function()
{
if(wkDefaultBlockSettings != null)
{
var defaults = wkDefaultBlockSettings[$("#mw-input-wpReason").val()];
if(typeof defaults !== "undefined")
{
var defaultKeys = Object.keys(defaults);
for(var i = 0; i < defaultKeys.length; i++)
{
if(defaults[defaultKeys[i]] === "checked")
{
$("#"+defaultKeys[i]).prop('checked', true);
}
else if(defaults[defaultKeys[i]] === "unchecked")
{
$("#"+defaultKeys[i]).prop('checked', false);
}
}
}
}
});
$("#mw-input-wpReason").after("<br><span style='font-size:x-small'>To adjust the default settings for the different block types, please go to <a href='"+mw.util.getUrl("Special:MyPage/defaultBlockSettings")+"'>this page.</a></span>");
}
else if(mw.config.get("wgPageName") === "User:" + mw.config.get("wgUserName").replace(" ", "_") + "/defaultBlockSettings")
{
if(typeof wkDefaultBlockSettings === "undefined")
{
wkDefaultBlockSettings = {"Revoking talk page access: inappropriate use of user talk page while blocked":{"mw-input-wpDisableUTEdit":"checked"},"{{softerblock}}":{"mw-input-wpCreateAccount":"unchecked","mw-input-wpDisableEmail":"unchecked","mw-input-wpDisableUTEdit":"unchecked","mw-input-wpAutoBlock":"unchecked"}};
}
var reasonList = '<select name="wpReason" id="mw-input-wpReason"><optgroup label="Common block reasons"><option value="[[WP:Vandalism|Vandalism]]">[[WP:Vandalism|Vandalism]]</option><option value="[[WP:Vandalism-only account|Vandalism-only account]]">[[WP:Vandalism-only account|Vandalism-only account]]</option><option value="Violations of the [[WP:BLP|Biographies of living persons policy]]">Violations of the [[WP:BLP|Biographies of living persons policy]]</option><option value="Using Wikipedia for [[WP:Spam|spam]] or [[WP:Advertising|advertising]] purposes">Using Wikipedia for [[WP:Spam|spam]] or [[WP:Advertising|advertising]] purposes</option><option value="[[WP:Spam|Spam]] / [[WP:Advertising|advertising]]-only account">[[WP:Spam|Spam]] / [[WP:Advertising|advertising]]-only account</option><option value="Creating [[WP:Attack page|attack]], [[WP:Patent nonsense|nonsense]] or other inappropriate pages">Creating [[WP:Attack page|attack]], [[WP:Patent nonsense|nonsense]] or other inappropriate pages</option><option value="[[WP:Copyright violations|Copyright violations]]">[[WP:Copyright violations|Copyright violations]]</option><option value="Abusing [[WP:Sock puppetry|multiple accounts]]">Abusing [[WP:Sock puppetry|multiple accounts]]</option><option value="[[WP:Block#Evasion of blocks|Block evasion]]">[[WP:Block#Evasion of blocks|Block evasion]]</option><option value="[[WP:No personal attacks|Personal attacks]] or [[WP:Harassment|harassment]]">[[WP:No personal attacks|Personal attacks]] or [[WP:Harassment|harassment]]</option><option value="[[WP:Edit warring|Edit warring]]">[[WP:Edit warring|Edit warring]]</option><option value="Violation of the [[WP:Three-revert rule|three-revert rule]]">Violation of the [[WP:Three-revert rule|three-revert rule]]</option><option value="[[WP:Disruptive editing|Disruptive editing]]">[[WP:Disruptive editing|Disruptive editing]]</option><option value="Making [[WP:No legal threats|legal threats]]">Making [[WP:No legal threats|legal threats]]</option><option value="[[WP:Arbitration enforcement|Arbitration enforcement]]">[[WP:Arbitration enforcement|Arbitration enforcement]]</option><option value="Deliberately triggering the [[WP:Edit filter|Edit filter]]">Deliberately triggering the [[WP:Edit filter|Edit filter]]</option><option value="[[WP:Long term abuse|Long term abuse]]">[[WP:Long term abuse|Long term abuse]]</option><option value="Revoking talk page access: inappropriate use of user talk page while blocked">Revoking talk page access: inappropriate use of user talk page while blocked</option></optgroup><optgroup label="Templated reasons"><option value="{{anonblock}}">{{anonblock}}</option><option value="{{schoolblock}}">{{schoolblock}}</option><option value="{{blocked proxy}}">{{blocked proxy}}</option><option value="{{usernameblock}}">{{usernameblock}}</option><option value="{{causeblock}}">{{causeblock}}</option><option value="{{UsernameHardBlocked}}">{{UsernameHardBlocked}}</option><option value="{{softerblock}}">{{softerblock}}</option><option value="{{checkuserblock}}">{{checkuserblock}}</option><option value="{{checkuserblock-account}}">{{checkuserblock-account}}</option><option value="{{Tor}}">{{Tor}}</option><option value="{{webhostblock}}">{{webhostblock}}</option><option value="{{colocationwebhost}}">{{colocationwebhost}}</option><option value="{{vaublock}}">{{vaublock}}</option><option value="{{spamusernameblock}}">{{spamusernameblock}}</option></optgroup></select>';
$("#mw-content-text").html('<h2>Welcome to the default block setup screen!</h2>To use this screen, simply select one of the preloaded block reasons from the menu below, select the options you wish to make the default for that block reason, and hit the "Save as default" button. When you\'re done with all of them, hit the "Finished" button, and your preferences will be saved in an automated edit to your common.js page. <b>TAKE NOTE</b>: your changes are not truly permanent until you\'ve hit the "Finished" button; if you leave the page before doing so, your changes will be lost. Also, after hitting "Finished" and seeing the confirmation box pop up, you may need to <a href="'+ mw.util.getUrl("WP:BYPASS") +'" target="_blank">bypass your cache</a> to see the changes.If you\'ve never done this before, there are a few settings that come with; if you have, then you\'ll be able to see your currently-set preferences as well.');
$("#mw-content-text").append("<h3>Settings</h3>" + reasonList + "<table id='blockOptionsTable'><tbody><tr><th><!--label--></th><th>Checked</th><th>Unchecked</th><th>don't change</th><th>Current default</th></tr><tr><td>Block account creation:</td><td><input type='radio' name='mw-input-wpCreateAccount' value='checked'></td><td><input type='radio' name='mw-input-wpCreateAccount' value='unchecked'></td><td><input type='radio' name='mw-input-wpCreateAccount' value='nochange'></td><td id='mw-input-wpCreateAccountCurrent' class='currentSetting' name='mw-input-wpCreateAccount'>don't change</td></tr><tr><td>Block user from sending email:</td><td><input type='radio' name='mw-input-wpDisableEmail' value='checked'></td><td><input type='radio' name='mw-input-wpDisableEmail' value='unchecked'></td><td><input type='radio' name='mw-input-wpDisableEmail' value='nochange'></td><td id='mw-input-wpDisableEmailCurrent' name='mw-input-wpDisableEmail' class='currentSetting'>don't change</td></tr><tr><td>Prevent this user from editing their own talk page while blocked:</td><td><input type='radio' name='mw-input-wpDisableUTEdit' value='checked'></td><td><input type='radio' name='mw-input-wpDisableUTEdit' value='unchecked'></td><td><input type='radio' name='mw-input-wpDisableUTEdit' value='nochange'></td><td id='mw-input-wpDisableUTEditCurrent' name='mw-input-wpDisableUTEdit' class='currentSetting'>don't change</td></tr><tr><td>Autoblock any IP addresses used:</td><td><input type='radio' name='mw-input-wpAutoBlock' value='checked'></td><td><input type='radio' name='mw-input-wpAutoBlock' value='unchecked'></td><td><input type='radio' name='mw-input-wpAutoBlock' value='nochange'></td><td id='mw-input-wpAutoBlockCurrent' class='currentSetting' name='mw-input-wpAutoBlock'>don't change</td></tr><tr><td>Watch this user's user and talk pages:</td><td><input type='radio' name='mw-input-wpWatch' value='checked'></td><td><input type='radio' name='mw-input-wpWatch' value='unchecked'></td><td><input type='radio' name='mw-input-wpWatch' value='nochange'></td><td id='mw-input-wpWatchCurrent' class='currentSetting' name='mw-input-wpWatch'>don't change</td></tr><tr><td>Prevent logged-in users from editing from this IP address:</td><td><input type='radio' name='mw-input-wpHardBlock' value='checked'></td><td><input type='radio' name='mw-input-wpHardBlock' value='unchecked'></td><td><input type='radio' name='mw-input-wpHardBlock' value='nochange'></td><td id='mw-input-wpHardBlockCurrent' class='currentSetting' name='mw-input-wpHardBlock'>don't change</td></tr></tbody></table><input type='button' id='saveItemPrefs' value='Save as default'><input type='button' id='finalizePrefs' value='Finished'>");
$("#mw-input-wpReason").change(function()
{
var settings;
if(typeof wkDefaultBlockSettings === "undefined" || wkDefaultBlockSettings === null || typeof wkDefaultBlockSettings[$("#mw-input-wpReason").val()] === "undefined")
{
settings = null;
}
else
{
settings = wkDefaultBlockSettings[$("#mw-input-wpReason").val()];
}
$("#blockOptionsTable .currentSetting").each(function(ind, el)
{
if(settings != null && typeof settings[$(el).attr("name")] !== "undefined")
{
$(el).html(settings[$(el).attr("name")]);
}
else
{
$(el).html("don't change");
}
});
});
$("#saveItemPrefs").click(function()
{
var checkedItems = $("input:checked");
var outputArray = {};
checkedItems.each(function(ind, el)
{
if($(el).attr("value") !== "nochange")
{
outputArray[$(el).attr("name")] = $(el).attr("value");
}
});
wkDefaultBlockSettings[$("#mw-input-wpReason").val()] = outputArray;
$("#mw-input-wpReason").change();
});
$("#finalizePrefs").click(function()
{
var contentString = "wkDefaultBlockSettings = " + JSON.stringify(wkDefaultBlockSettings)+";";
contentString = contentString.replace(/\\"/g, '"').replace(/= \"{/, '= {').replace(/}";/, '};');
var requestData = {action: "edit", title: "User:" + mw.config.get("wgUserName") + "/defaultBlockSettings.js", text: contentString, summary:"Updating default block setting preferences.", minor:"true", token: mw.user.tokens.get( 'csrfToken' )};
$("#finalizePrefs").val("Saving...");
$.post(mw.config.get("wgScriptPath") + "/api.php", requestData, function()
{
$("#finalizePrefs").val("Finished");
alert("Save complete!");
});
});
}
});
});