User:Garzfoth/Scripts/SafetyEdit.js
// Migrated from https://en.wikipedia.org/wiki/User:Garzfoth/common.js on 2021-05-05
// Notes:
// • For changelogs prior to migration, see https://en.wikipedia.org/w/index.php?title=User:Garzfoth/common.js&action=history
// • TODO: Give this further attention.
// Originally from: User:Equazcion/SafetyEdit
if ((mw.config.get('wgAction') === "edit") || (mw.config.get('wgAction') === "submit")) {
// Insert the checkbox
mw.loader.using( [ 'oojs-ui-core' ] ).done(function (){
/*var a = new OO.ui.CheckboxInputWidget({
selected: false
});
var b = new OO.ui.ButtonWidget({
label: 'Ajax Preview',
});*/
var c = new OO.ui.FieldLayout(
new OO.ui.CheckboxInputWidget({
inputId: 'ruSure'
//data: ''
//id: 'ruSure',
//class: 'ruSure',
//selected: false
}),
{
label: 'Enable save',
align: 'inline'
}
);
//c.on('change', onChange);
//b.on('click', AJAXPreview.doPreview);
//$( p ).before( b.$element, ' ' );
$('#mw-editpage-watch').after(c.$element);
var submitbtn = OO.ui.Element.static.unsafeInfuse('#wpSaveWidget', false);
// submitbtn.disabled => true/false
// submitbtn.setDisabled(true/false)
submitbtn.setDisabled(true);
$('#wpSave').css('pointer-events', 'none');
var locked = true;
// https://api.jquery.com/unbind/ -- this is likely why char counter is mostly broken. not sure what the best option is yet. jQuery 3 will depreciate .unbind() btw.
// hmm, so unbind is used here differently than later on... maybe check if the change event is somehow firing?
$('#wpSummary').focus(function () {
//$(this).unbind();
$(this).off("submit");
});
$('#ruSure').change(function () {
if ($(this).prop("checked")) {
// We use the name attribute so all potential save buttons (produced by other scripts etc) are affected
submitbtn.setDisabled(false);
$('#wpSave').css('pointer-events', 'auto');
locked = false;
// If checked, undo our summary line focus event from above
//$('#wpSummary').unbind('focus');
$('#wpSummary').off('focus');
// Make enter key on summary line save again
$('#wpSummary').keydown(function (event) {
if (event.keyCode == 13) {
$('form#editform').submit();
return false;
}
});
} else {
submitbtn.setDisabled(true);
$('#wpSave').css('pointer-events', 'none');
locked = true;
// Here we can just unbind without a focus event, because MediaWiki JS won't supercede us again
//$('#wpSummary').unbind();
// Apparently that's incorrect...
$('#wpSummary').focus(function () {
//$(this).unbind();
$(this).off("submit");
});
// Or maybe this is the problem:
$('#wpSummary').off("keydown");
}
});
var hoverTimeout;
$('#wpSaveWidget').mouseenter(function () {
//console.log("mouseenter");
//$(this).delay(750).fadeTo("slow", 0.25); // also hits children, so its a problem
hoverTimeout = setTimeout(function () {
if ($('#wpSaveWidget').is(':hover') && locked) {
//console.log("hovertimeout has succeeded!");
$('#ruSure').click();
}
//console.log("hovertimeout has triggered");
//$(this).delay(0).fadeTo("fast", 0);
//$(this).stop().css('opacity', '0.25');
clearTimeout(hoverTimeout);
}, 500);
}).mouseout(function () {
//console.log("mouseout");
//$(this).stop().css('opacity', '0.25');
clearTimeout(hoverTimeout);
});
});
//
// extensive commented out code removed from here, see archives if it's needed down the line
//
}