User:Andy M. Wang/closeRM.js

//

// closeRM by User:Andy M. Wang

// 1.0.2016.1008b

// based on User:Armbrust/closemrv.js

$(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("Closing statement for requested move:");

if (closeStr === null || closeStr === '') {

alert("Invalid closing statement. Aborted.");

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 + "}}";

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 answered by another editor earlier.");

return;

}

t.value = acc + "{{subst:" + "RM bottom" + "}}";

editform.wpSummary.value += "Closing RM: " + closeStr.replace(

/\{\{subst\:rmnac\}\}|\'\'\'/gi,'').substring(0, 140)

+ (closeStr.length > 140 ? ' ...' : '')

+ ' (closeRM)';

}

mw.loader.using( 'mediawiki.util' ).then( function(){

var portletLink = mw.util.addPortletLink("p-cactions", "#", "RM close",

"ca-rmclose", "Close a requested move discussion section");

$( portletLink ).click( rmClick );

} );

});

//