Jump to content

User:JJPMaster/di.js

From Wikibooks, open books for an open world
Note: After saving, changes may not occur immediately. Click here to learn how to bypass your browser's cache.
  • Mozilla / Firefox / Safari: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac);
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5;
  • Konqueror: simply click the Reload button, or press F5;
  • Opera users may need to completely clear their cache in Tools→Preferences.
// <nowiki>
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 && mw.config.get("wgNamespaceNumber") == 6) {
		var porty = mw.util.addPortletLink('luna-actions', '#', 'DI', 'luna-DI', 'Nominate this file for delayed speedy deletion');
		$("#bodyContent").append(`
		<div id="DIdialog">
			Why would you like the page to be deleted? <br />
			<select name="DItagReason" id="DItagReason">
				<option>Select the criterion</option>
				<option id="Nfur">No non-free use rationale</option>
				<option id="Noncommercial">Non-commercial media</option>
				<option id="Nosource">No source</option>
				<option id="Nolicense">No license</option>
		    </select><br />
		    <input type="checkbox" id="notifyAuthorDI" name="notifyAuthorDI" checked /><label for="notifyAuthorDI">Notify page author</label><br />
		    <button type="button" id="addTagDI">Mark for deletion</button></div>
		`);
		$("#DIdialog").hide();
		$(porty).click(() => $("#DIdialog").dialog({ title: "Mark this file for delayed speedy deletion", width: "auto" } ));
		$("#addTagDI").click(function() {
			var mySelect = document.getElementById("DItagReason");
			var critValue = mySelect.value;
			var criterion;
			var tag = mySelect.options[DItagReason.selectedIndex].id;
			var finalTag; 
			var contin = true;
			
			if (!tag) alert("You must select a criterion.");
			else {
				criterion = `Marking for deletion: ${critValue}`;
				finalTag = `subst:Deletable file|${tag}`;
				var params;
				var noticeText = `\n{{subst:User:JJPMaster/CurateThisPage/diMsg|1=${tag}|2=${parsedTitle}}}`;
				params = {
					action: 'edit',
					prependtext: `{{${finalTag}}}\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 ($("#notifyAuthorDI").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>