User:Equazcion/SafetyEdit.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
if (typeof sysopSafety == 'undefined') var sysopSafety = false;

if (  
	// Only activate on edits and only on protected pages
	(( mw.config.get('wgAction') == "edit" ) || ( mw.config.get('wgAction') == "submit" )) &&
	(( $.inArray("templateeditor", mw.config.get('wgRestrictionEdit')) > -1 ) || ((sysopSafety == true) && ( $.inArray("sysop", mw.config.get('wgRestrictionEdit')) > -1 )))
	){
	
	// Insert the checkbox
	$('#mw-editpage-watch').after('&#160;<input title="Enable the Save button" class="ruSure" type="checkbox"></input>&#160;<label style="color:#62090B;" title="Enable the Save button" for="ruSure">Enable save</label>');
	
	// Disable the save button on load
	$('input[name="wpSave"]').prop("disabled", true);
	
	// Set summary line to disable enter key saving when it recieves focus.
	// Unbinding on load doesn't work since MediaWiki JS will bind after this. 
	$('#wpSummary').focus(function(){
		$(this).unbind();
	});
	
	// Set the change function for the checkbox
	$('input.ruSure').change(function(){
		if ($(this).prop("checked")){
			
			// We use the name attribute so all potential save buttons (produced by other scripts etc) are affected
			$('input[name="wpSave"]').prop("disabled", false);
			
			// If checked, undo our summary line focus event from above 
			$('#wpSummary').unbind('focus');
			
			// Make enter key on summary line save again
			$('#wpSummary').keydown(function(event){
				if (event.keyCode == 13) {
					$('form#editform').submit();
					return false;
				}
			});
		} else {
			$('input[name="wpSave"]').prop("disabled", true);
			
			// Here we can just unbind without a focus event, because MediaWiki JS won't supercede us again
			$('#wpSummary').unbind();
		}
	});
}