MediaWiki:Gadget-DeleteSection.js

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.

/**
 * Gadget-DeleteSection.js
 * Aggiunge il link "cancella" a ogni sezione di una pagina,
 * di fianco a "modifica" o "modifica sorgente", per cancellare l'intera sezione.
 * Riscritto da zero a partire da:
 * http://it.wikipedia.org/w/index.php?title=Wikipedia:Monobook.js/deledesection.js&oldid=58651956
 *
 * @author [[Utente:Rotpunkt]]
 */
/*jshint unused: false */
/*global mediaWiki, jQuery */

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

	var $dialog;

	/**
	 * Cancella una sezione della pagina corrente.
	 */
	function removeSection( section, summary ) {
		new mw.Api().postWithEditToken( {
			action: 'edit',
			format: 'json',
			title: mw.config.get( 'wgPageName' ),
			section: section,
			text: '',
			summary: summary
		} ).done ( function ( data ) {
			___location.reload();
		} ).fail ( function ( code, data ) {
			alert( 'Errore nel cancellare la sezione: ' + code );
			$dialog.dialog( 'close' );
		} );
	}

	/**
	 * Richiede il testo per l'oggetto della modifica.
	 */
	function showDialog( section, sectiontitle ) {
		var $descr, $label, $inputText;
		if ( !$dialog ) {
			$dialog = $( '<div>' ).attr( 'id', 'gds-dialog' ).appendTo( 'body' );
		}
		$descr = $( '<p>' ).text( 'Sezione: ' + sectiontitle );
		$label = $( '<label>' ).css( { display: 'block', 'margin': '10px 0 2px 0' } )
			.text( 'Oggetto per l\'edit di cancellazione:' );
		$inputText = $( '<input/>' ).attr( 'type', 'text' )
			.attr( 'size', 40 ).val( 'Sezione ' + sectiontitle + ' eliminata' );
		$dialog.empty().append( $descr, $label, $inputText );

		$dialog.dialog( {
			title: 'Accessorio cancella sezione',
			position: { my: 'center', at: 'center', of: window },
			buttons: {
				'Ok': function() {
					var summary = $.trim( $inputText.val() );
					if ( summary.length === 0 ) {
						alert( 'L\'oggetto è obbligatorio.' );
					} else {
						$label.text( 'Cancellazione in corso...' );
						$inputText.replaceWith( $.createSpinner( { size: 'large', type: 'block' } ).css( 'margin', '10px' ) );
						removeSection( section, summary );
					}
				},
				'Annulla': function () {
					$( this ).dialog( 'close' );
				}
			}
		} );
	}

	$( function () {
		if ( mw.config.get( 'wgAction' ) === 'view' && mw.config.get( 'wgNamespaceNumber' ) % 2 === 0 ) {
			$( 'span.mw-editsection > a:last-of-type' ).each( function ( i, el ) {
				var $link, sectiontitle;
				sectiontitle = $( el ).attr( 'title' ).split( 'Modifica la sezione ' )[1];
				$link = $( '<a>' )
					.attr( 'href', '#' )
					.attr( 'title', 'Cancella la sezione ' + sectiontitle )
					.text( 'cancella' )
					.click( function ( event ) {
						mw.loader.using( [ 'mediawiki.api', 'mediawiki.api.edit', 'jquery.ui.dialog', 'jquery.spinner' ], function () {
							showDialog( i + 1, sectiontitle );
						} );
						return false;
					} );
				$( el ).after( '<span> | </span>', $link );
			} );
		}
	} );
}( mediaWiki, jQuery ) );