MediaWiki:Common.js

Versione del 13 gen 2015 alle 14:39 di Rotpunkt (discussione | contributi) (la width del div id="Standard" è già settato a 100% in MediaWiki:Edittools, fix spazi)

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.

/**
 * Mantenere il codice di MediaWiki:Common.js il più breve possibile, in quanto è caricato
 * da ciascuna pagina, per tutti gli utenti.
 * Se possibile creare invece un accessorio abilitato di default (gli accessori sono infatti
 * moduli ottimizzati del ResourceLoader con la possibilità di aggiungere dipendenze etc.).
 */
/* global mediaWiki, jQuery, importScript */

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

	/**
	 * Redirect bad mirrors to it.wikipedia.org
	 * @author [[m:User:Hoo man]]
	 */
	( function () {
		var i, isBad,
			badMirrors = [
			'wikipedia.sapere.alice.it',
			'212.48.3.33',
			'wikipedia.virgilio.it',
			'213.92.16.218',
			];
		for ( i = 0; i < badMirrors.length; i++ ) {
			if ( document.___location.href.indexOf( badMirrors[ i ] ) !== -1 ) {
				isBad = true;
				break;
			}
		}
		if ( isBad ) {
			// redirect users to the same page on itwiki
			//document.___location.href = '//it.wikipedia.org/wiki/' + mw.config.get( 'wgPageName' );
			// redirect users to a landing page
			document.___location.href = '//it.wikipedia.org/wiki/Wikipedia:Live_mirror';
		}
	} )();

	// ============================
	//     Caricamento script
	// ============================

	/**
	 * Ricerca in Wikidata
	 */
	if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ||
		 ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgCanonicalSpecialPageName' ) === false ) ) {
		mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:Wdsearch.js&action=raw&ctype=text/javascript' );
	}

	/**
	 * Menu interprogetto nella sidebar, vedi anche [[Modulo:Interprogetto]]
	 */
	importScript( 'MediaWiki:InterProject.js' );

	/**
	 * Esempio di diff in Aiuto:Diff
	 */
	if ( mw.config.get( 'wgPageName' ) === 'Aiuto:Diff' ) {
		mw.loader.load( 'mediawiki.action.history.diff' );
	}

	/**
	 * Caricamento script da parametro URL
	 * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
	 * @rev 5
	 */
	var extraJS = mw.util.getParamValue( 'withJS' );
	if ( extraJS ) {
		if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
			importScript( extraJS );
		} else {
			mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
		}
	}

	// ============================
	//     Modifica HTML pagine
	// ============================

	/**
	 * Portlets
	 */
	function addPortlets() {
		// Collegamento diretto alla pagina di upload di Commons nel portlet Strumenti
		mw.util.addPortletLink( 'p-tb', '//commons.wikimedia.org/wiki/Commons:Upload/it', 'Carica su Commons',
							    't-uploadcommons', 'Carica file multimediali su Wikimedia Commons', 'm', '#t-specialpages' );
		// In "Pagina principale" aggiunge il link alla lista completa di tutte le pagine
		if ( mw.config.get( 'wgIsMainPage' ) || mw.config.get( 'wgPageName' ) === "Discussione:Pagina_principale" ) {
			mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/Lista_di_Wikipedie',
									'Lista completa', 'interwiki-completelist', 'Lista completa delle Wikipedie' );
		}
	}

	$( addPortlets );

	/**
	 * Aggiunge un combobox a [[MediaWiki:Edittools]] per selezionare un gruppo di caratteri speciali.
	 */
	function comboboxEdittools() {
		var $specialChars = $( '#specialchars' ), $select;
		if ( $specialChars.length ) {
			$select = $( '<select>' ).change( function () {
				$specialChars.find( 'p' ).hide();
				$specialChars.find( 'option:selected' ).data().show();
			} );
			$specialChars.find( 'p' ).each( function () {
				$( '<option>' ).html( $( this ).attr( 'id' ).replace( /_/g, ' ' ) )
					.data( $( this ) ).appendTo( $select );
			} );
			$specialChars.prepend( $select );
			$select.change();
		}
	}

	$( comboboxEdittools );

	/**
	 * Toglie "Soggetto/Intestazione" nelle creazioni delle discussioni al Bar
	 */
	if ( mw.config.get( 'wgNamespaceNumber' ) === 4 &&
		 mw.config.get( 'wgPageName' ).indexOf( 'Wikipedia:Bar/' ) === 0 &&
		 mw.config.get( 'wgAction' ) === 'edit' &&
		 document.URL.indexOf( '&section=new&preload=' ) !== -1) {
		$( function () {
			document.getElementById( 'wpSummaryLabel' ).style.display = 'none';
			document.getElementById( 'wpSummary' ).style.display = 'none';
		} );
	}

	// ============================
	//    Supporto ai template
	// ============================

	/**
	 * Utilizzata con [[template:Titolo errato]] per cambiare il titolo di una pagina,
	 * cerca un HTML (creato dal template) contenente:
	 * <div id="RealTitleBanner"><span id="RealTitle">titolo</span></div>
	 * Si può disattivare con un elemento con id="DisableRealTitle".
	 * Importata inizialmente da [[en:MediaWiki:Common.js]].
	 */
	function checkRealTitleBanner() {
		var $realTitleBanner = $( '#RealTitleBanner' ), $realTitle, $firstH1;
		if ( $realTitleBanner.length && !$( '#DisableRealTitle' ).length ) {
			$realTitle = $realTitleBanner.find( '#RealTitle' );
			$firstH1 = $( 'h1:first' );
			if ( $realTitle.length && $firstH1.length ) {
				$realTitleBanner.hide();
				$firstH1.html( $realTitle.html() );
				document.title = $realTitle.text() + ' - Wikipedia';
			}
		}
	}

	$( checkRealTitleBanner );

	/**
	 * Utilizzata con [[template:Galleria]] per creare una galleria di immagini,
	 * cerca un HTML (creato dal template) contenente:
	 * <div class="ImageGroup"><div class="ImageGroupUnits">immagini</div></div>
	 * Idea originale da [[fr:MediaWiki:Common.js]] del 2007.
	 * @author [[it:User:Rotpunkt]]
	 */
	function updateImageGroup( currImg, $images, $countInfo, $prevLink, $nextLink ) {
		$images.hide().eq( currImg ).show();
		$countInfo.html( '(' + ( currImg + 1 ) + '/' + $images.length + ')' );
		$prevLink.toggle( currImg !== 0 );
		$nextLink.toggle( currImg !== $images.length - 1 );
	}

	function initImageGroup() {
		$( 'div.ImageGroup > div.ImageGroupUnits' ).each( function ( i, imageGroupUnits ) {
			var $images,  $prevLink, $nextLink, $countInfo, currImg = 0;
			$images = $( imageGroupUnits ).children( '.center' );
			$countInfo = $( '<tt>' ).css( 'font-size', '110%' );
			$prevLink =	$( '<a>' )
				.attr( 'href', '#' ).attr( 'title', 'Immagine precedente' )
				.text( '◀' ).css( 'text-decoration', 'none' )
				.click( function ( e ) {
					e.preventDefault();
					updateImageGroup( currImg -= 1, $images, $countInfo, $prevLink, $nextLink );
				} );
			$nextLink =	$( '<a>' )
				.attr( 'href', '#' ).attr( 'title', 'Immagine successiva' )
				.text( '▶' ).css( 'text-decoration', 'none' )
				.click( function ( e ) {
					e.preventDefault();
					updateImageGroup( currImg += 1, $images, $countInfo, $prevLink, $nextLink );
				} );
			updateImageGroup( currImg, $images, $countInfo, $prevLink, $nextLink );
			$( imageGroupUnits ).prepend( $prevLink, $countInfo, $nextLink );
		} );
	}

	$( initImageGroup );

	/**
	 * Utilizzata con [[Template:Navbox]]: se presente più di una table
	 * con classi navbox e mw-collapsible, quelle con autocollapse si chiudono da sole.
	 * @author [[it:User:Rotpunkt]]
	 */
	function checkAutocollapse() {
		if ( $( 'table.navbox.mw-collapsible' ).length > 1) {
			$( 'table.navbox.mw-collapsible.autocollapse' ).each( function ( i, el ) {
				if ( !$( el ).hasClass( 'mw-collapsed' ) ) {
					// makeCollapsible a volte è eseguita prima, a volte successivamente al Common.js,
					// se è già stata eseguita, non resta che simulare un click.
					if ( $( el ).data( 'mw-made-collapsible' ) ) {
						// hide() chiude la tabella più velocemente di fadeOut
						$( el ).children( 'tr:not(:first)' ).hide();
						$( el ).find( '.mw-collapsible-toggle > a' ).click();
					} else {
						$( el ).addClass( 'mw-collapsed' );
					}
				}
			} );
		}
	}

	$( checkAutocollapse );
}( mediaWiki, jQuery ) );