User:Xain36/Non-adminClosure.js
//
// Non-admin Closure by User:Xain36
// 4.3.2019 v.1.0
// based on User:Armbrust/closemrv.js and User:Andy M. Wang/closeRM.js
// If forking this script, please give all of us credit
$(document).ready(function() {
"use strict";
// Add only when editing section
// Assumes Requested move has a level 2 header, ends at end of section
if ((document.title.indexOf("Editing ") === -1)
|| (document.title.indexOf("(section)") === -1)) {
return;
}
function rmClick(e) {
e.preventDefault();
var closeStr = prompt("The discussion may be closed 7 days after being opened, if consensus has been reached.\n"
+ "Closing statement/Result for requested move:");
if (closeStr === null || closeStr === '') {
alert("Aborted or canceled by the user.");
return;
}
var editform = document.editform, t = editform.wpTextbox1;
var lines = t.value.split('\n');
var inReqMoveTemplate = false;
var foundReqMoveTemplate = false;
var acc = '';
for (var idx in lines) {
if (lines[idx].toLowerCase().includes("{{requested move/dated")) {
acc += '{{subst:RM top|' + closeStr + " {{subst:RMnac}}}}";
inReqMoveTemplate = !lines[idx].includes("}}");
foundReqMoveTemplate = true;
} else if (foundReqMoveTemplate && inReqMoveTemplate) {
inReqMoveTemplate = !lines[idx].includes("}}");
} else {
acc += lines[idx] + '\n';
}
}
if (!foundReqMoveTemplate) {
alert("{{requested move/dated}} NOT FOUND. Wikitext not updated\n\n"
+ "Possible reasons:\n"
+ "1. This edited section is not a requested move discussion.\n"
+ "2. The discussion was alraedy closed by another editor.\n"
+ "What to do?:\n"
+ "1. Please reload the page and try again.\n"
+ "2. Check your Internet connection.\n"
+ "3. If somebody closed the discussion, then do not modify it. ");
return;
}
t.value = acc + "{{subst:" + "RM bottom" + "}}";
editform.wpSummary.value += "Closing a Requested move discussion: " + closeStr.replace(
/\{\{subst\:rmnac\}\}|\'\'\'/gi,'').substring(0, 140)
+ (closeStr.length > 140 ? ' ...' : '')
+ ' (Non-admin Closure)';
}
mw.loader.using( 'mediawiki.util' ).then( function(){
var portletLink = mw.util.addPortletLink("p-cactions", "#", "Non-admin Closure",
"ca-rmclose", "Close a requested move discussion section");
$( portletLink ).click( rmClick );
} );
});
//