User:Mike.lifeguard/autoDelete.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
// Outline for an automatic delete link generator.
// Not highly tested. Started by Splarka @ test.wikipedia
// Written for & maintained by Mike_lifeguard @ en.wikibooks

//GO IF contribs, RC, whatlinkshere, log, prefixindex, newpages, (article and not special and [submit or view or purge])

var wgCanonicalNamespace = mw.config.get('wgCanonicalNamespace');
var wgCanonicalSpecialPageName = mw.config.get('wgCanonicalSpecialPageName');
var wgAction = mw.config.get('wgAction');
var wgIsArticle = mw.config.get('wgIsArticle');
var wgServer = mw.config.get('wgServer');
var wgArticlePath = mw.config.get('wgArticlePath');

if( wgCanonicalSpecialPageName == "Contributions"
	|| wgCanonicalSpecialPageName == "Recentchanges"
	|| wgCanonicalSpecialPageName == "Whatlinkshere"
	|| wgCanonicalSpecialPageName == "Log"
	|| wgCanonicalSpecialPageName == "Prefixindex"
	|| wgCanonicalSpecialPageName == "Newpages"
	|| (wgIsArticle == true
		&& wgCanonicalNamespace != "Special"
		&& ( wgAction == "submit" || wgAction == "view" || wgAction == "purge"	)
	)
) $(function(){
	mw.util.addPortletLink('p-cactions','javascript:deleteLinkify()','autodelete','ca-dellink','generate deletion links');
})

function deleteLinkify() {
	var reason = prompt('Enter default delete reason','per speedy deletion policy');
	if(!reason) return;
	var links = document.getElementById('bodyContent').getElementsByTagName('a');
	var arp = wgServer + wgArticlePath.replace(/\$1/,'');
	if(links.length == 0) return
	for(var i=0;i<links.length;i++) {
		if(links[i].href.indexOf(arp)==0 && links[i].href.indexOf('action=delete') == -1 && links[i].href.indexOf('/Special:') == -1 ) {
			links[i].href += '?action=delete&submitdelete=true&deletetalkalso=true&wpReason=' + encodeURIComponent(reason);
			links[i].innerHTML += ' (delete)';
		}
	}
}

if(queryString('submitdelete') == 'true') addOnloadHook(function() {
	if(document.getElementById('ca-talk').className.indexOf('new')==-1 && queryString('deletetalkalso')=='true' && ( wgNamespaceNumber % 2 == 0 ) ) {//if the talk tab is redlinked and this is the first time 'round AND this is not a talk page then:
		document.getElementById('deleteconfirm').action += '&deletetalk=true&wpReason=' + queryString('wpReason');
	}
	var sub = (document.getElementById('wpConfirmB')) ? document.getElementById('wpConfirmB') : document.getElementById('mw-filedelete-submit')
	sub.click();
})

if(wgAction == 'delete' && queryString('deletetalk') == 'true') addOnloadHook(function() {
	var url = document.getElementById('ca-talk').getElementsByTagName('a')[0].href + '?action=delete&submitdelete=true&wpReason=' + queryString('wpReason');
	document.location.href = url;
})

function queryString(p) {
	var re = RegExp('[&?]' + p + '=([^&]*)');
	var matches;
	if (matches = re.exec(document.location)) {
		try { 
			return decodeURI(matches[1]);
		}
		catch (e) {
		}
	}
	return null;
}