User:Terasail/Edit Request Tool.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. |
![]() | This user script seems to have a documentation page at User:Terasail/Edit Request Tool. |
function execute(header, replyStr) {
var sections = document.getElementsByClassName("mw-headline");
pageTitle = document.getElementsByTagName("title")[0].innerText.replace(" - Wikipedia", "");
for (j = 0; j < sections.length; j++) {
if (sections[j].parentElement == header) {
var api = new mw.Api();
var editSummary = "/* " + header.children[0].id + " */ ";
api.get( {
action: "parse",
page: pageTitle,
prop: "wikitext",
section: j + 1
} ).done( function(data) {
wikitext = data.parse.wikitext["*"];
console.log(curAns.value);
if (curAns.value) {
var tStart = wikitext.search("{{edit");
var preTemplate = wikitext.slice(0, tStart);
wikitext = wikitext.slice(tStart);
var tEnd = wikitext.search("}}");
var editTemplate = wikitext.slice(0, tEnd);
wikitext = wikitext.slice(tEnd);
editTemplate = editTemplate.replace("no", "yes");
wikitext = preTemplate + editTemplate + wikitext;
}
editSummary += protection + "protected edit request reply ([[User:Terasail/EditRequestCloser|Edit Request Closer]])";
wikitext = wikitext + replyStr;
console.log(editSummary);
console.log(wikitext);
api.postWithEditToken({
action: 'edit',
title: pageTitle,
text: wikitext,
section: j + 1,
summary: editSummary
});
location.reload();
} );
}
}
}
function dropDown(currentBox) {
var dropMenu = new OO.ui.DropdownWidget( {
label: "Select reply option",
menu: {
items: [
new OO.ui.MenuOptionWidget( {
id: "comment",
label: 'Comment (No template)',
icon: 'speechBubble'
} ),
new OO.ui.MenuOptionWidget( {
id: "d",
label: 'Done',
icon: 'checkAll'
} ),
new OO.ui.MenuOptionWidget( {
id: "pd",
data: "2",
label: 'Partly done:',
icon: 'check'
} ),
new OO.ui.MenuOptionWidget( {
id: "a",
label: "Already done.",
icon: 'clock'
} ),
new OO.ui.MenuOptionWidget( {
id: "q",
label: "Question:",
icon: 'help'
} ),
new OO.ui.MenuOptionWidget( {
id: "note",
label: "Note:",
icon: 'ellipsis'
} ),
new OO.ui.MenuOptionWidget( {
id: "n",
label: 'Not done:',
icon: 'notice'
} ),
new OO.ui.MenuOptionWidget( {
id: "nfn",
label: 'Not done for now:',
icon: 'notice'
} ),
new OO.ui.MenuOptionWidget( {
id: "c",
label: 'Not done for now: please establish a consensus for this alteration.',
icon: 'notice'
} ),
new OO.ui.MenuOptionWidget( {
id: "rs",
label: 'ND: please provide reliable sources that support the change you want to be made.',
icon: 'notice'
} ),
new OO.ui.MenuOptionWidget( {
id: "xy",
label: 'ND: Changes are unclear. Mention the specific changes in a "change X to Y" format.',
icon: 'notice'
} ),
new OO.ui.MenuOptionWidget( {
id: "sb",
label: "ND: please make your requested changes to the template's sandbox first.",
icon: 'notice'
} ),
new OO.ui.MenuOptionWidget( {
id: "mis",
label: 'ND: this is the talk page for the template {{EP}}. Make your request at the article talk page.',
icon: 'ongoingConversation'
} ),
new OO.ui.MenuOptionWidget( {
id: "tp",
label: "ND: this is the talk page for the template {{EP}}. Make your request at the article talk page. If you cannot edit the talk page..",
icon: 'ongoingConversation'
} ),
new OO.ui.MenuOptionWidget( {
id: "hr",
label: "ND: According to the page's protection level you should be able to edit the page yourself.",
icon: 'unLock'
} ),
new OO.ui.MenuOptionWidget( {
id: "nlp",
label: "ND: The page's protection level has changed since this request was placed. You should now be able to edit.",
icon: 'unLock'
} ),
new OO.ui.MenuOptionWidget( {
id: "doc",
label: "ND: {{edit protected}} is usually not required for edits to the documentation or categories of templates.",
icon: 'newWindow'
} ),
new OO.ui.MenuOptionWidget( {
id: "drv",
label: "ND: requests for recreating deleted pages protected against creation should be made at WP:Deletion review.",
icon: 'newWindow'
} ),
new OO.ui.MenuOptionWidget( {
id: "r",
label: "ND: requests for increases to the page protection level should be made at Wikipedia:Requests.",
icon: 'newWindow'
} ),
new OO.ui.MenuOptionWidget( {
id: "ru",
label: "ND: requests for decreases to the page protection level should be directed to Wikipedia:Requests.",
icon: 'newWindow'
} ),
new OO.ui.MenuOptionWidget( {
id: "ffu",
label: "ND: Please make your request for a new image to be uploaded to Files For Upload.",
icon: 'newWindow'
} ),
new OO.ui.MenuOptionWidget( {
id: "p",
label: "ND: this is not the right page to request additional user rights.",
icon: 'newWindow'
} ),
new OO.ui.MenuOptionWidget( {
id: "m",
label: "ND: page move requests should be made at Wikipedia:Requested moves.",
icon: 'newWindow'
} ),
new OO.ui.MenuOptionWidget( {
id: "udp",
label: "Undone: This request has been partially undone.",
icon: 'undo'
} ),
new OO.ui.MenuOptionWidget( {
id: "ud",
label: "Undone: This request has been undone.",
icon: 'undo'
} )
]
}
});
$(currentBox.children[2].children[0]).append(dropMenu.$element);
return dropMenu;
}
function messageInput(currentBox) {
var inputBox = new OO.ui.MultilineTextInputWidget( {
autosize: true,
label: "'[[User:Terasail|<span style="color:DarkCyan; font-weight:800;">Terasail</span>]][[User talk:Terasail|<sup><span style="color:Black;">'''[✉]'''</span></sup>]] 14:18, 24 December 2020 (UTC)' is automatically added"
} );
$(currentBox.children[2].children[0]).append(inputBox.$element);
return inputBox;
}
function done(currentBox, outputStr) {
var dB = new OO.ui.ButtonWidget( {
label: 'Done',
flags: ["primary", "progressive"]
} );
$(currentBox.children[1].children[0]).append(dB.$element);
dB.setIcon("checkAll");
dB.on("click", function() {
var header = currentBox.parentNode.previousElementSibling;
if (dB.getLabel() == "Submit") {
var toFind = curSelect.getLabel();
var items = curSelect.menu.items;
for (i = 0; i < items.length; i++) {
if (items[i].getLabel() === toFind) {
outputStr += items[i].elementId + "}}";
if (inputText.value != "") {
outputStr += " " + inputText.value + " [[User:Terasail|<span style="color:DarkCyan; font-weight:800;">Terasail</span>]][[User talk:Terasail|<sup><span style="color:Black;">'''[✉]'''</span></sup>]] 14:18, 24 December 2020 (UTC)";
}
execute(header, outputStr);
}
}
} else {
outputStr += "d}} [[User:Terasail|<span style="color:DarkCyan; font-weight:800;">Terasail</span>]][[User talk:Terasail|<sup><span style="color:Black;">'''[✉]'''</span></sup>]] 14:18, 24 December 2020 (UTC)";
execute(header, outputStr);
}
} );
return dB;
}
function remove(currentBox) {
var remove = new OO.ui.ButtonWidget( {
label: "Remove",
flags: ["primary", "destructive"]
} );
$(currentBox.children[1].children[0]).append(remove.$element);
remove.setIcon("trash");
remove.on("click", function() {
console.log("REMOVE");
});
}
function answer(currentBox) {
var toggleAns = new OO.ui.ToggleButtonWidget( {
label: 'Close request',
value: true
} );
toggleAns.setIcon("check");
$(currentBox.children[1].children[0]).append(toggleAns.$element);
toggleAns.on("click", function() {
if (toggleAns.value == true) {
toggleAns.setIcon("check");
} else {
toggleAns.setIcon("close");
}
} );
return toggleAns;
}
function respond(currentBox, curDone, curAns) {
var respondB = new OO.ui.ButtonWidget( {
label: 'Respond'
} );
respondB.setIcon("add");
$(currentBox.children[1].children[0]).append(respondB.$element);
respondB.on("click", function() {
$(currentBox).append('<tr><td colspan=2 style="padding:0px 25px 10px"></td></tr>');
curSelect = dropDown(currentBox);
inputText = messageInput(currentBox);
if (respondB.getIcon() == "add") {
curDone.setLabel("Submit");
respondB.setIcon("subtract");
} else {
curDone.setLabel("Done");
respondB.setIcon("add");
currentBox.children[2].remove();
currentBox.children[2].remove();
}
});
}
var editRequestBoxes = document.getElementsByClassName("plainlinks tmbox tmbox-notice editrequest");
for (i = 0; i < editRequestBoxes.length; i++) {
var boxType = editRequestBoxes[i].id.slice(4, 8);
if (boxType == "semi" || boxType == "exte" || boxType == "temp" || boxType == "prot") {
var protTemp = "\n:{{subst:";
protection = "Fully ";
if (boxType == "semi") {
protTemp += "ESp|";
protection = "Semi-";
} else if (boxType == "exte") {
protTemp += "EEp|";
protection = "Extended ";
} else if (boxType == "temp") {
protTemp += "ETp|";
protection = "Template ";
} else {
protTemp += "EP|";
}
var currentBox = editRequestBoxes[i].children[0];
$(currentBox).append('<tr><td colspan=2 style="padding:0px 25px 10px"></td></tr>');
var curDone = done(currentBox, protTemp);
var curAns = answer(currentBox);
respond(currentBox, curDone, curAns);
remove(currentBox);
}
}