MediaWiki:Common.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.

/**
 * Mantenere il codice di MediaWiki:Common.js il più breve possibile, in quanto è caricato
 * da ciascuna pagina, per tutti gli utenti che navigano sulla versione desktop.
 * Creare piuttosto accessori abilitati di default (gli accessori sono infatti moduli
 * ottimizzati del ResourceLoader con la possibilità di aggiungere dipendenze, ecc.).
 */
/* global mediaWiki, jQuery */

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

	// ============================
	//     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' );
	}

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

	/**
	 * Aggiunge un combobox a [[MediaWiki:Edittools]] per selezionare un gruppo di caratteri speciali.
	 */
	function comboboxEdittools() {
		var $specialChars = $( '#specialchars' );
		if ( $specialChars.length ) {
			var $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 );

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

	/**
	 * 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 currImg = 0;
			var $images = $( imageGroupUnits ).children( '.center, .mw-halign-center' );
			var $countInfo = $( '<kbd>' ).css( 'font-size', '110%' );
			var $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 );
				} );
			var $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 un navbox con
	 * classe mw-collapsible, quelli con autocollapse si chiudono da soli.
	 */
	function checkAutocollapse( $content ) {
		var $navbox = $content.filter( '.navbox' );
		if ( $navbox.length > 1 ) {
			$navbox.filter( '.autocollapse' ).find( '.mw-collapsible-toggle' ).click();
		}
	}

	mw.hook( 'wikipage.collapsibleContent' ).add( checkAutocollapse );
}( mediaWiki, jQuery ) );