User:JJPMaster/rfd.js

// <nowiki>
importScript("User:JJPMaster/CurateThisPage/review.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 RFDporty = mw.util.addPortletLink('luna-actions', '#', 'RfD', 'luna-rfd', 'File a deletion request for this page');
		$("#bodyContent").append(`
		<div id="RFDdialog">
			Please enter the reason for deletion:
			<textarea name="RFDreason" id="RFDreason" placeholder="Reason for deletion"></textarea>
		    <input type="checkbox" id="notifyAuthor2" name="notifyAuthor2" checked /><label for="notifyAuthor2">Notify page author</label><br />
		    <button type="button" id="reqDel">Request deletion</button></div>
		`);
		$("#RFDdialog").hide();
		$(RFDporty).click(() => $("#RFDdialog").dialog({ title: "Request deletion", width: "auto", height: "auto" }));
		$("#reqDel").click(function() {
			var myText = document.getElementById("RFDreason");
			var reason = myText.value;
			
			if (!reason) alert("You must provide a reason.");
			else {
				if (window.isReviewer) {
					doTheReview();
				}
				var params = {
					action: 'edit',
					prependtext: `<noinclude>{{Rfd}}</noinclude>\n`,
					title: parsedTitle,
					summary: "Making [[WB:Requests for deletion|deletion request]]",
					tags: "Luna",
					format: 'json'
				},
				api = new mw.Api();
			
				api.postWithToken( 'csrf', params ).done( function ( data ) {
					console.log( data );
				} );
				(async function() {
					if ($("#notifyAuthor2").prop("checked")) {
						params = {
							action: 'edit',
							appendtext: `\n{{subst:Rfd warning|${parsedTitle}|~~~~}}`,
							title: `User_talk:${await getAuthor()}`,
							summary: "Notifying author about page tagging",
							tags: "Luna",
							format: 'json'
						},
						api = new mw.Api();
					
						api.postWithToken( 'csrf', params ).done( function ( data ) {
							console.log( data );
						} );
					}
				})();
				params = {
					action: 'edit',
					appendtext: `\n== [[${parsedTitle}]] ==\n${reason} ~~~~`,
					title: `Wikibooks:Requests for deletion`,
					summary: `Adding deletion request for [[${parsedTitle}]]`,
					tags: "Luna",
					format: 'json'
				},
				api = new mw.Api();
			
				api.postWithToken( 'csrf', params ).done( function ( data ) {
					console.log( data );
				} );
				mw.notify("Luna:\nThe page has been nominated for deletion. Reloading...");
				setTimeout(() => window.location.reload(), 2000);
			}		
		});
	}
});
// </nowiki>