User:B/rescaledsidebar.js

// This function will add a link to your Wikipedia toolbar. It is required both for Howcheng's image deletion script and my template replacement script. // It is not the right way to do things - we should be using mw.loader, but that doesn't seem to be working right now for some reason and plugging in this old code is easier than looking up // the new API parameters. Please, MediaWiki developers, don't have breaking changes.

/* This code may be problematic when it comes to titles with ampersands, etc, which are stored as & amp ; in HTML (without the spaces). A solution that solves this is the following: return document.title.substr(0, document.title.lastIndexOf(' - Wikipedia, the free'));

function addLinkUserBRescaledSidebar(where, url, name, id, title, key, after){ //* where is the id of the toolbar where the button should be added; //  i.e. one of "p-cactions", "p-personal", "p-navigation", or "p-tb". //   //* url is the URL which will be called when the button is clicked. //  javascript: urls can be used to do more complex things. //   //* name is what will appear as the name of the button. //   //* id is the id of the button; it's best to define one. //  Use a prefix to make sure its unique. Optional. //   //* title is the tooltip title that gives a longer description //  of the button; if you define a accesskey, mention it here. Optional. //   //* key is the char you want for the accesskey. Optional. //   //* after is the id of the button you want to follow this one. Optional. //   var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); if(id) li.id = id; li.appendChild(na); var tabs = document.getElementById(where).getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

if(after) {       tabs.insertBefore(li,document.getElementById(after)); } else { tabs.appendChild(li); } /*   if(id) { if(key && title) { ta[id] = [key, title]; } else if(key) { ta[id] = [key, '']; } else if(title) { ta[id] = ['', title];} }   // re-render the title and accesskeys from existing code in wikibits.js    akeytt;*/ return li; }

if ( mw.config.get('wgNamespaceNumber') == 6 ) { // Note: this code stopped working in January 2019 /*	mw.loader.using( ['mediawiki.util', 'mediawiki.api'], function {		var rescaled = mw.util.addPortletLink( 'p-tb', '#', 'rescaled', 'ca-rescaled', 'Rescaled per F5', 's');		$( rescaled ).click( do_it );	});*/ // Temporary workaround until we figure out why the above stopped working addLinkUserBRescaledSidebar('p-tb', 'javascript:OnUserBRescaledSidebarClick;', 'Remove Orphaned old version', 'ca-rescaled', 'Remove old version per F5'); } function OnUserBRescaledSidebarClick { var api = new mw.Api; api.get( {		action: 'query',		prop: 'imageinfo|revisions',		titles: mw.config.get('wgPageName'),		iiprop: 'archivename',		iilimit: 'max',		rvprop: 'content',		rvlimit: '1'	}).done( function ( data ) {		var pgdata = data.query.pages[mw.config.get('wgArticleId')];		var imgs = pgdata.imageinfo;		console.log(imgs);		var todelete = [];		$.each( imgs, function ( index, value ) { if ( index === 0 ) { return; }			todelete.push( value.archivename.split('!')[0] ); });		api.postWithToken( 'delete', { action: 'revisiondelete', type: 'oldimage', target: mw.config.get('wgPageName'), ids: todelete.join('|'), hide: 'content', reason: 'Orphaned non-free file(s) deleted per F5' }).done( function( data ) { mw.notify("Deleted old revision."); });		// Also edit!		var text = pgdata.revisions[0]['*'];		// from drilnoth's script		text = text.replace(/\n*\{\{\s?(Non\-free reduced|Orphaned non\-free revisions)\s?\|\s?(?:\d|date)?\=?(\d\d\:\d\d\,\s\d\d?\s.*\s\d\d\d\d(\s\(UTC\))?|.*\d\d?(?:\s[a-z]+)?\s\d\d\d\d)\s?\}\}/ig,'');		text = text.trim;		api.postWithToken( 'edit', { action: 'edit', title: mw.config.get('wgPageName'), summary: 'Previous version(s) deleted per F5)',			text: text		}).done( function ( data ) {			mw.notify("Removed the template."); setTimeout(function { window.location.reload;}, 3000);		}); }); }