Utente:Daimona Eaytoy/emergenze.js

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.


Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti (per le pagine globali è comunque necessario attendere qualche minuto). Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome: premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.

/**
 * TODO:
 *  - Messaggio in talk a tutti i sysop quando viene pigiato il pulsantone
 *  - Contropulsante per togliere la protezione
 *  - Testare :)
 */

function notifyAdmins() {
	// Scrivimi!
	OO.ui.alert( 'Semiprotezione di emergenza eseguita correttamente.' );
}

function disableAnonEdits() {
	var api = new mw.Api();
	new mw.Api().get( {
		action: 'query',
		titles: 'MediaWiki:Titleblacklist',
		prop: 'revisions',
		rvprop: 'content',
		rvslots: 'main'
	} )
		.done( function( data ) {
			var pageidx = Object.keys( data.query.pages )[ 0 ],
				page = data.query.pages[ pageidx ];

			var content = page.revisions[ 0 ].slots.main[ '*' ],
				newContent = content.replace( /(\#NOTA: in caso di emergenza, semiprotegge tutta Wikipedia\s+)#/, '$1' );
				
			if ( newContent === content ) {
				OO.ui.alert( 'Errore nell\'effettuare la semiprotezione, probabilmente qualcuno ha modificato manualmente la titleblacklist' );
				return;
			}
			api.postWithEditToken( {
				action: 'edit',
				title: 'MediaWiki:Titleblacklist',
				summary: 'EMERGENZA: Semiprotezione di tutta Wikipedia',
				watchlist: 'nochange',
				text: newContent
			} )
				.done( notifyAdmins )
				.fail( function ( e ) {
					// Brutto momento per i bug, lo so e mi dispiace :-/
					OO.ui.alert( 'Errore nell\'eseguire la semiprotezione: ' + e );
				} );
		} )
		.fail( function( e ) {
			OO.ui.alert( 'Si è verificato un errore nel leggere la titleblacklist: ' + e );
		} );
}

function promptDisableAnonEdits() {
	var msg = 'Attenzione: premendo "OK" semiproteggerai tutta Wikipedia, e ' +
		'verrà inviato un messaggio in talk a tutti gli amministratori per ' +
		'notificarli dell\'emergenza. Confermi di volerlo fare?';
	OO.ui.confirm( msg )
		.done( function( doIt ) {
			if ( doIt ) {
				disableAnonEdits();
			}
		} );
}

function addEmergencyButtons() {
	mw.util.addCSS( '#button-container { font-size: 300% }' );
	var anonBlockBtn = new OO.ui.ButtonInputWidget( {
		label: 'Semiproteggi tutta Wikipedia',
		title: 'Semiproteggi tutta Wikipedia',
		flags: [
			'primary',
			'destructive'
		]
	} )
		.on( 'click', promptDisableAnonEdits );
	$( '#button-container' ).append( anonBlockBtn.$element );
}

$( function () {
	if ( mw.config.get( 'wgNamespaceNumber' ) === 4 && mw.config.get( 'wgTitle' ) === "Amministratori/Emergenze" ) {
		$( '#nojs-warn' ).remove();
		mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-widgets', 'mediawiki.api', 'mediawiki.util' ] )
			.done( addEmergencyButtons )
			.fail( function() { console.error( 'Errore RL' ); } );
	}
} );