Utente:Valcio/Script/AvvisoRiduzioneBozza.js

Il tema Utente:Valcio/Script/AvvisoRiduzioneBozza.js ha suscitato grande interesse e dibattito negli ultimi anni. Con opinioni contrastanti e posizioni diverse, Utente:Valcio/Script/AvvisoRiduzioneBozza.js è diventato un punto di discussione tra gli esperti e la società in generale. In questo articolo esploreremo diversi aspetti di Utente:Valcio/Script/AvvisoRiduzioneBozza.js, dalla sua origine al suo impatto oggi. Analizzeremo le diverse prospettive che esistono attorno a Utente:Valcio/Script/AvvisoRiduzioneBozza.js, nonché la sua rilevanza in diverse aree. Inoltre, esamineremo come Utente:Valcio/Script/AvvisoRiduzioneBozza.js si è evoluto nel tempo e quale è la sua proiezione futura. Unisciti a noi in questo viaggio per scoprire tutto ciò che devi sapere su Utente:Valcio/Script/AvvisoRiduzioneBozza.js!
// <nowiki>

/**
 * Dopo che Speciale:Sposta ha eseguito con la riduzione a bozza di una voce,
 * crea un form per scegliere l'inserimento di avvisi nella talk utente.
 * 
 * Adattato da ] da Valcio
 */
/* global mediaWiki, jQuery, OO */

( function ( mw, $ ) {
	'use strict';
	
	var dependencies = [
		'mediawiki.api',
		'mediawiki.ui.button',
		'oojs-ui-core',
		'oojs-ui-widgets',
	];


	/**
	 * Funzione di utilità per le etichette, restituisce il link a un template wiki.
	 * @param {string} tpl - Il nome del template.
	 */
	function getLinkTpl( tpl ) {
		return '{{<a target="_blank" href="' +
			   mw.config.get( 'wgArticlePath' ).replace( '$1', 'Template:' + tpl ) +
			   '">' + tpl + '</a>}}';
	}

	/**
	 * Aggiunge una sezione alla pagina indicata.
	 * @param {string} title - Il titolo della pagina.
	 * @param {string} text - Il contenuto della sezione.
	 * @param {string} watchlist - Il corrispettivo parametro di API:Edit,
	 *							   un valore fra watch/unwatch/preferences/nochange
	 * @param {function} successHandler - La funzione da richiamare in caso di successo.
	 */
	 function newSection( title, text, watchlist, successHandler ) {
		new mw.Api().newSection( title, 'Avviso', text, { watchlist: watchlist } )
			.done( function ( data ) {
				successHandler();
			} )
			.fail ( function ( code, data ) {
				OO.ui.alert( 'Errore nel creare l\'avviso: ' + code );
			} );
	 }

	/**
	 * Crea il form per scegliere un'eventuale azione dopo il blocco utente.
     * @param {string} username - Il nome dell'utente che ha creato la voce.
	 * @param {string} title - Il titolo della bozza senza prefisso.
	 * @param {string} reason - La motivazione che è stata usata per lo spostamento.
	 */
	function buildForm( username, title, reason ) {
		var fieldset = new OO.ui.FieldsetLayout( { 
			label: $( '<span>Aggiungi ' + getLinkTpl( 'Asb' ) + ' nella talk dell\'utente '+username+'</span>' ),
			classes: 
		} );
		/*var argSelect = new OO.ui.TagMultiselectWidget( {
			placeholder: 'Inserisci argomenti (max 2)',
			tagLimit: 2,
			allowArbitrary: true
		} );*/
		var button = new OO.ui.ButtonWidget( {
			label: 'Inserisci avviso',
			classes: 
		} ).on( 'click', function () {
			newSection( 'Discussioni utente:' + username, '{{Asb|voce='+title+'|motivo='+reason+'|arg1=|arg2=}}  --~~~~', 'preferences', function () {
				OO.ui.alert( 'Avviso aggiunto con successo.' );
			} );
		} );
		fieldset.addItems( /*argSelect,*/ button );

		$( "#mw-content-text" ).append( fieldset.$element );
	}

	/**
	 * Legge la query string della pagina corrente per ottenere i parametri del blocco.
	 */
	function parseQueryString(title) {
        var api = new mw.Api();
        api.get({
			"action": "query",
			"format": "json",
			"prop": "revisions",
			"list": "logevents",
			"titles": title,
			"formatversion": "2",
			"rvprop": "user",
			"rvlimit": "1",
			"rvdir": "newer",
			"leprop": "comment",
			"letype": "move",
			"leuser": mw.config.get("wgUserName"),
			"lelimit": "1"
		}).done( function ( data ) {
             var username=data.query.pages.revisions.user;
             var reason=data.query.logevents.comment;
             buildForm(username, title.slice(title.indexOf(":")+1), reason);
		} )
		.fail ( function ( code, data ) {
			OO.ui.alert( 'Errore nel generare le opzioni di avviso: ' + code );
		} );
    }

	$( function () {
		mw.loader.using( dependencies ).done( function () {
			if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Movepage' ) {
				if ( $( '#movepage-newlink' ).length  ) {
        	        if($( '#movepage-newlink' ).text().substring(0,6) == "Bozza:"){
        	        	var title=$( '#movepage-newlink' ).text();
					    parseQueryString(title);
        	        }
				}
			}
		});
	} );
}( mediaWiki, jQuery ) );

// </nowiki>