// <nowiki>
importScript("User:JJPMaster/CurateThisPage/gsr.js");
var parsedTitle = mw.config.get("wgPageName").replace(/_/g, " ");
async function getAuthor() {
var par = {
action: 'query',
prop: 'revisions',
titles: parsedTitle,
rvprop: 'user',
rvdir: 'newer',
rvlimit: 1,
format: 'json'
},
api = new mw.Api();
const data = await api.get( par );
return Object.values(data.query.pages)[0].revisions[0].user;
}
$(() => {
if (mw.config.get("wgArticleId") !== 0) {
var porty = mw.util.addPortletLink('luna-actions', '#', 'CSD', 'luna-csd', 'Nominate this page for speedy deletion');
$("#bodyContent").append(`
<div id="CSDdialog">
Why would you like the page to be deleted? <br />
<select name="CSDtagReason" id="CSDtagReason">
<option>Select the criterion</option>
<option id="spam">Spam</option>
<option id="copyvio">Copyright violation (include link to source)</option>
<option id="req">Author request</option>
<option id="scope">Out of scope</option>
<option id="redirect">Implausible orphaned redirect</option>
<option id="c-repost">Repost of deleted material (include title of RfD)</option>
<option id="vandalism">Vandalism</option>
<option id="nonsense">Nonsense</option>
<option id="test">Test page</option>
<option id="blank">No content</option>
<option id="query">[[WB:NMC|Abandoned material with no improvement after seven days]]</option>
<option id="encyclopedic">Encyclopedic articles belong at [[w:|Wikipedia]]</option>
<option id="c-other">Other (please specify)</option>
</select><br />
<input type="checkbox" id="notifyAuthorCSD" name="notifyAuthorCSD" checked /><label for="notifyAuthorCSD">Notify page author</label><br />
<button type="button" id="addTagCSD">Mark for deletion</button></div>
`);
(async () => {
if (await waitForPreferences()) {
for (var [i, j] of Object.entries(Luna.myPreferences.CSD)) {
$("#CSDtagReason").append(`<option id="${i}">${j}</option>`);
}
}
else {
console.error("Luna: Preferences never fully loaded.");
}
})();
$("#CSDdialog").hide();
$(porty).click(() => $("#CSDdialog").dialog({ title: "Mark this page for speedy deletion", width: "auto" } ));
$("#addTagCSD").click(function() {
var mySelect = document.getElementById("CSDtagReason");
var critValue = mySelect.value;
var criterion;
var tag = mySelect.options[CSDtagReason.selectedIndex].id;
var finalTag;
var realCrit = "";
var contin = true;
if (!tag) alert("You must select a criterion.");
else {
if(!tag.startsWith("c")) {
criterion = `Marking for speedy deletion: ${critValue}`;
finalTag = `Delete|${critValue}`;
realCrit = critValue;
}
else {
var innerCrit = prompt("Please provide more information. Leaving this field blank will abort the deletion tagging.");
if(innerCrit) {
if(tag !== "c-other") {
realCrit = `${critValue.split("(")[0].slice(0, -1)}: ${innerCrit}`;
criterion = `Marking for speedy deletion: ${critValue.split("(")[0].slice(0, -1)}`;
finalTag = `Delete|1=${realCrit}`;
}
else {
criterion = `Marking for speedy deletion: ${innerCrit}`;
finalTag = `Delete|1=${innerCrit}`;
realCrit = innerCrit;
}
}
else contin = false;
}
if (contin) {
var params;
var noticeText = `\n{{subst:User:JJPMaster/CurateThisPage/authorMsg|title=${parsedTitle}|tag=delete|deletereason=${realCrit}}}`;
var sysopConfirm = false;
if (myRights.indexOf("delete") >= 0) {
sysopConfirm = confirm("You are an administrator. Would you like to delete this page yourself?");
if (sysopConfirm) {
noticeText = `\n{{subst:User:JJPMaster/CurateThisPage/dbNotice|title=${parsedTitle}|deletereason=${realCrit}}}`,
(async function() {
try {
params = {
action: 'delete',
deletetalk: mw.config.get("wgCanonicalNamespace") != "User",
title: parsedTitle,
reason: realCrit,
tags: "Luna",
format: 'json'
},
api = new mw.Api();
const data = await api.postWithToken( 'csrf', params );
return data;
}
catch {
params = {
action: 'delete',
deletetalk: false,
title: parsedTitle,
reason: realCrit,
tags: "Luna",
format: 'json'
},
api = new mw.Api();
const data = await api.postWithToken( 'csrf', params );
return data;
}
})();
(async function() {
if ($("#notifyAuthorCSD").prop("checked")) {
params = {
action: 'edit',
appendtext: noticeText,
title: `User_talk:${await getAuthor()}`,
summary: "Notifying author of speedy deletion",
tags: "Luna",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
}
})();
mw.notify("Luna:\nThe deletion has been performed. Reloading...");
}
}
if (!sysopConfirm) {
var metaReq = confirm("Would you like to request that a global sysop delete this page?");
if (metaReq) makeMetaReq(summaryAd, parsedTitle, realCrit);
params = {
action: 'edit',
prependtext: `<noinclude>{{${finalTag}}}</noinclude>\n`,
title: parsedTitle,
summary: criterion,
tags: "Luna",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
(async function() {
if ($("#notifyAuthorCSD").prop("checked")) {
params = {
action: 'edit',
appendtext: noticeText,
title: `User_talk:${await getAuthor()}`,
summary: "Notifying author of speedy deletion nomination",
tags: "Luna",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
}
})();
mw.notify("Luna:\nThe tag has been added. Reloading...");
}
setTimeout(() => window.location.reload(), 2000);
}
}
});
}
});
// </nowiki>