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

/**
 * Al click del pulsante generato dal template:Bozza per chiedere la revisione
 * di una bozza, mostra una richiesta di conferma e aggiorna la pagina dopo
 * aver aggiunto in cima alla bozza il template:Richiesta revisione bozza.
 *
 * @author https://it.wikipedia.org/wiki/Utente:Sakretsu
 */
/* global mediaWiki, jQuery, OO */

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

	var msg = {
		anonwarning: 'Il tuo indirizzo IP sarà visibile pubblicamente.',
		conflict: 'Si è verificato un conflitto di modifiche. Per favore, aggiorna la pagina e ripeti la richiesta.',
		error: 'Si è verificato un errore inaspettato alla modifica della pagina. Per favore, riprova o segnala agli amministratori.',
		license: 'Pubblicando, accetti le nostre <a href="https://foundation.wikimedia.org/wiki/Terms_of_Use/it">condizioni d\'uso</a>.',
		prompt: 'Confermi di voler pubblicare la tua richiesta di revisione?',
		success: 'Richiesta effettuata con successo.',
	};

	function submit() {
		var api = new mw.Api();
		var articleId = mw.config.get( 'wgArticleId' );
		var $content = $( '#content' ).children();

		$content.css( { "opacity": 0.5, "pointer-events": "none" } );

		api.get( {
			action: 'query',
			prop: 'revisions',
			pageids: articleId,
			rvlimit: 1,
			format: 'json'
		} ).then( function ( result ) {
			// ottiene in questo momento l'ID della revisione visualizzata per
			// coprire l'eventualità che siano state fatte modifiche con l'editor visuale
			var cur_rev = mw.config.get( 'wgRevisionId' );

			if ( cur_rev !== result.query.pages[ articleId ].revisions[ 0 ].revid ) {
				return $.Deferred().reject( 'editconflict' );
			}

			return api.postWithToken( 'csrf', {
				action: 'edit',
				pageid: articleId,
				prependtext: '{\{subst:Bozza/preload}\}\n',
				minor: true,
				summary: 'richiesta revisione',
				watchlist: 'nochange'
			} );
		} ).done( function () {
			OO.ui.alert( msg.success );

			api.get( {
				action: 'parse',
				pageid: articleId,
				prop: [ 'text', 'categorieshtml', 'modules', 'jsconfigvars' ],
				useskin: mw.config.get( 'skin' )
			} ).then( function ( result ) {
				$( '#mw-content-text' ).html( result.parse.text[ '*' ] );
				$( '#bodyContent > .catlinks' ).replaceWith( result.parse.categorieshtml[ '*' ] );
				mw.config.set( result.parse.jsconfigvars );
				mw.loader.load( result.parse.modulestyles );
				mw.loader.load( result.parse.modules );
			} );
		} ).fail( function ( code, data ) {
			OO.ui.alert( msg[ code === 'editconflict' ? 'conflict' : 'error' ] );
			console.log( 'Errore API', code, data );
		} ).always( function () {
			$content.css( { "opacity": 1, "pointer-events": "auto" } );
		} );
	}

	function init( isPostEdit ) {
		if ( isPostEdit === false ) { return }

		var license = $( '<div>' )
			.css( 'font-size', '12px' )
			.css( 'margin-top', '.5em' )
			.html( msg.license );
		var text = $( '<div>' )
			.css( 'text-align', 'center' )
			.text( msg.prompt )
			.append( license );

		if ( mw.config.get( 'wgUserId' ) === null ) {
			license.append( '<br />', msg.anonwarning );
		}

		$( '.pulsante-richiesta-revisione' ).on( 'click', function( event ) {
			event.preventDefault();
			OO.ui.confirm( text )
				.done( function ( confirmed ) {
					if ( confirmed ) {
						submit();
					}
				} );
		} );
	}

	$( function () {
		mw.loader.using( [ 'mediawiki.api', 'oojs-ui-core', 'oojs-ui-windows' ] )
			.done( function () {
				init();
				mw.hook( 've.deactivationComplete' ).add( init );
			} );
	} );
}( mediaWiki, jQuery ) );