User:Martin Urbanec/vanisher.js

From Meta, a Wikimedia project coordination wiki

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.
// Taken from https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript
function makeid(length) {
    let result = '';
    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    const charactersLength = characters.length;
    let counter = 0;
    while (counter < length) {
      result += characters.charAt(Math.floor(Math.random() * charactersLength));
      counter += 1;
    }
    return result;
}

function getVanishUserURLFromCA( renameEl, ticketId ) {
	const newUsername = 'Renamed user ' + makeid( 20 );
	return renameEl.href + '?newname=' + newUsername + '&reason=' + encodeURIComponent(
		'vanishing per request in [[ticket:' + ticketId + ']]'
	);
}

function addVanishButton() {
	const renameEls = document.querySelectorAll( '#mw-centralauth-info a[href^="/wiki/Special:GlobalRenameUser"]' );
	if ( renameEls.length !== 1 ) {
		console.error( 'Error: More than one rename element present' );
		return;
	}
	const renameEl = renameEls[0];
	
	const vanishEl = document.createElement( 'a' );
	vanishEl.appendChild( document.createTextNode( 'vanish' ) );
	
	vanishEl.addEventListener( 'click', ( e ) => {
		e.preventDefault();
		const ticketId = window.prompt( 'Enter the ticket ID' );
		window.location.replace( getVanishUserURLFromCA( renameEl, ticketId ) );
	} );
	
	renameEl.parentElement.appendChild( vanishEl );
}

if ( mw.config.get('wgCanonicalSpecialPageName') === 'CentralAuth' ) {
	addVanishButton();
}