MediaWiki:Gadget-autopadlock.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.

/**
 * Aggiunge il template Protetta dopo che si protegge una voce.
 *
 * @author https://it.wikipedia.org/wiki/Utente:Sakretsu
 */
/* global mediaWiki, jQuery */

( function ( mw, $ ) {
	'use strict';

	var api;

	var conf = mw.config.get( [
		'wgArticleId',
		'wgNamespaceNumber',
		'wgPageName',
		'wgRestrictionEdit',
		'wgRestrictionMove',
		'wgUserId'
	] );

	/** Entro quanto inserire il template dopo la protezione, in secondi */
	var MAX_DELAY = 60;

	/**
	 * Verifica che la voce sia stata appena protetta dall'utente.
	 * 
	 * @param {function} editHandler - La funzione di modifica.
	 */
	function checkLastProtection( editHandler ) {
		api.get( {
			action: 'query',
			prop: 'revisions',
			pageids: conf.wgArticleId,
			rvprop: 'content',
			rvslots: 'main',
			rvlimit: 1,
			list: 'logevents',
			leprop: 'ids|userid|timestamp',
			letitle: conf.wgPageName,
			letype: 'protect',
			lelimit: 1,
			format: 'json'
		} ).done( function( result ) {
			var data = result.query;
			var protection = data.logevents[ 0 ];
			var wikitext = data.pages[ conf.wgArticleId ].revisions[ 0 ].slots.main[ '*' ];
			var storageKey = 'autopadlock-' + protection.logid;
			var delay = new Date() - new Date( protection.timestamp );
			if (
				protection.userid === conf.wgUserId &&
				delay < MAX_DELAY * 1000 &&
				!mw.cookie.get( storageKey ) &&
				!/\{\{ *[Pp]rotetta *\}\}/.test( wikitext )
			) {
				mw.notify( 'Aggiunta del template Protetta in corso...' );
				mw.cookie.set( storageKey, 1, MAX_DELAY - delay / 1000 );
				editHandler();
			}
		} ).fail( function ( error ) {
			console.log( 'Errore API', error );
		} );
	}

	/**
	 * Inserisce il template Protetta a inizio voce.
	 */
	function addPadlocks() {
		var text = '<noinclude>{\{Protetta}\}</noinclude>\n';
		api.postWithToken( 'csrf', {
			action: 'edit',
			pageid: conf.wgArticleId,
			prependtext: text,
			summary: '+Protetta',
			watchlist: 'nochange'
		} ).done( function () {
			mw.notify( 'Template Protetta aggiunto' );
		} ).fail( function ( error ) {
			console.log( 'Errore API', error );
			mw.notify(
				'Si è verificato un errore all\'aggiunta del template Protetta',
				{ type: 'error' }
			);
		} );
	}

	$( function () {
		if (
			conf.wgNamespaceNumber === 0 &&
			conf.wgArticleId !== 0 &&
			( conf.wgRestrictionEdit.length || conf.wgRestrictionMove.length ) &&
			!$( '#mw-indicator-protedit, #mw-indicator-prot_move' ).length
		) {
			mw.loader.using( [ 'mediawiki.api', 'mediawiki.cookie' ] )
				.done( function () {
					api = new mw.Api();
					checkLastProtection( addPadlocks );
				} )
				.fail( function () {
					console.error( 'Impossibile avviare l\'accessorio autopadlock.' );
				} );
		}
	} );
}( mediaWiki, jQuery ) );