MediaWiki:Common.js

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, e comunque qualche minuto di preghiera non guasta. 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 menu Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.

/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */

/* AGGIUNTE NOSTRE */


/** Per Template:Sottotitolo, che cambia il sottotitolo della pagina
*/

//trova il template e il suo contenuto HTML e lo scambia con il sotto titolo del sito, identificato tramite ID
function AbilitaSottotitolo()
{
	var $FakeText=$("#SubTitleText");
	var $Target=$("#siteSub");
	if($FakeText.length && $Target.length)
	{
		$Target.html($FakeText.html());
	}
}
$(AbilitaSottotitolo); 


/** per Template:USERNAME, che mostra il nome dell'utente che legge
*/

//mw.loader.load( '/w/index.php?title=MediaWiki:Insertusername.js&action=raw&ctype=text/javascript' ); 

function usernameReplace() {
	var spanList = $('span.insertusername');
    wgServer=mw.config.get("wgServer");
    wgScriptPath=mw.config.get("wgScriptPath");
	wgUserName=mw.config.get("wgUserName");
    if(!spanList.length) {
		return;
	}
	var defaultText = '<Anonimo>';
	if(wgUserName) { //Se la variabile wgUserName ha un valore, significa che l'utente è loggato, e basta sostituirla dove previsto e uscire dalla funzione 
		spanList.text(wgUserName); //Questa funzione esiste solo se l'oggetto su cui la usi è generato in JQuery
		return;
	}
	else {
		spanList.text(defaultText);
	}
	var IP = undefined;
	$.ajax({ //chiama la API MediaWiki tramite AJAX per trovare i dati dell'utente che sta leggendo la pagina, componendo un URL con dei parametri
		url: wgServer + wgScriptPath + '/api.php?action=query&meta=userinfo&format=xml', //nome sito + path di base per script e altre cose + riferimento all'API, ad una azione che deve compiere (una query) e a due parametri della suddetta
		dataType: 'xml',
		async: false,
		success: function(data) { //se la query ha buon fine ne estrae l'IP
			IP = $('userinfo', data).attr('name');
		}
	});
	if(!IP) {
		return;
	}
	spanList.each(function() {
		if($(this).text() == defaultText) {
			$(this).text(IP);
		}
	});
	$( ".appellativi" ).css( "display", "inherit" ); //dato che in questo punto ci arriva solo e slo se l'IP è stato estratto, posso tranquillamente rendere visibile l'appellativo per IP senza sminchiare niente lol
	return;
}
$(usernameReplace);

/** Supporto al Template:Libro**/
function LibroUpdate(libro,num){
	var currPag=document.getElementById(''+libro.id + libro.currPage);
	var newPag;
	libro.currPage+=num;
	newPag=document.getElementById(''+libro.id + libro.currPage);
	if(newPag){
		currPag.style.display="none";
		newPag.style.display="inherit";
	}
	else libro.currPage-=num;
}

function attivaFrecce(libro){
	var frecciaP=document.getElementById(libro.id +"Prev");
	var frecciaN=document.getElementById(libro.id +"Next");
	libro.currPage=1;
	frecciaP.addEventListener('click',function(e){LibroUpdate(libro,-1)});
	frecciaN.addEventListener('click',function(e){LibroUpdate(libro,1);});
}

function AttivaLibro(){
	var bookList=document.getElementsByClassName("libroFlag");
	if(bookList.length){
		for(var i=0;i<bookList.length;i++){
			attivaFrecce(bookList[i]);
		}
	}
}
$(AttivaLibro);

/**Supporto al Template:Blink **/
function blink()
{
	var blinkers=window.blinker;
	for(var i=0;i<blinkers.length;i++)
	{
		if(blinkers[i].style.visibility=="inherit"){
			blinkers[i].style.visibility="hidden";
		} else {
			blinkers[i].style.visibility="inherit";
		}
	}
}
function enableBlink(){
	var blinkers=document.getElementsByClassName("blink");
	if(blinkers){
	window.blinker=blinkers;
	setInterval(blink,125); //Sotto i 125 circa non funziona, per ragioni arcane
	}
}
$(enableBlink);

/** Per Template:Alert, che mostra un popup minaccioso
 * E anche per alertlink
*/

//mette tutti gli elementi che sono in span di classe alert-load e alert-link in due liste separate 

function AbilitaAlert()
{
var spanList = document.getElementsByClassName("alert-load");
var alertLinkList = document.getElementsByClassName("alert-link");
var i;
if(window.disableNonciAlert)
{
	return;
}
if(spanList.length) //Se ci sono alert da visualizzare cicla dentro la lista, visualizzandoli in ordine
	{
	for(i=0;i<spanList.length;i=i+1)
	{
		alert(spanList[i].textContent);
	}
}
if(!alertLinkList.length)
	{
		return;
	}
	for(i=0;i<alertLinkList.length;i=i+1) //Se ci sono alertlink, invece, cicla tra quelli presenti nella lista e modifica l'attributo onclick, in modo che esegua la funzione desiderata dopo averci cliccato sopra
	{
		alertLinkList[i].setAttribute('onclick',"alert(\"" +alertLinkList[i].title+ "\")");
	}
}
$(AbilitaAlert);
/** Per il Template:Abbr */
function attivaTooltip(){
	var tooltips=document.getElementsByClassName("noncitip");
	for (var i=0;i<tooltips.length;i++){
		tooltips[i].onmouseover=function(e){ // nota nerd:currentTarget fa in modo che l'evento venga catturato SOLO sull'elemento con classe "noncitip", a cui è attaccato l'handler, e non su qualunque cosa possa essere presente al suo interno
			var testo=e.currentTarget.getElementsByClassName("testotip")[0];
			testo.style.display="block";
			testo.style.bottom=(document.body.scrollHeight - window.scrollY - document.body.clientHeight) + "px";
		};
		tooltips[i].onmouseout=function(e){
			var testo=e.currentTarget.getElementsByClassName("testotip")[0];
			testo.style.display="none";
		};
	}
}	

$(attivaTooltip);
/** SCOPIAZZATO DA WIKIPEDIA: https://it.wikipedia.org/w/index.php?title=MediaWiki:Common.js&oldid=102712037 **/

/**
 * 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, 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' );
	} DISABILITATO */

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

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

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

	/**
	 * Portlets
	 */
	function addPortlets() {
		mw.loader.using( 'mediawiki.util' )
			.done( function () { 
				// 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', '', '#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' );
				}
			} )
			.fail ( function () {
				console.warn( 'MediaWiki:Common.js - Impossibile aggiungere link nella sidebar.' );
			} );
	}

	$( addPortlets );

	/**
	 * 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 );


	/** A NOI NON SERVE
	 * 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() {
		/**
		 * Possibilità di disabilitarlo.
		 * (Sì. Può essere fastidioso... :)
		 */
		if( window.disableCheckRealTitleBanner ) {
			return;
		}

		var $realTitleBanner = $( '#RealTitleBanner' );
		if ( $realTitleBanner.length && !$( '#DisableRealTitle' ).length ) {
			var $realTitle = $realTitleBanner.find( '#RealTitle' );
			var $firstH1 = $( 'h1:first' );
			if ( $realTitle.length && $firstH1.length ) {
				$realTitleBanner.hide();
				$firstH1.html( $realTitle.html() );
				document.title = $realTitle.text();
			}
		}
	}

	$( 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 currImg = 0;
			var $images = $( imageGroupUnits ).children( '.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 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' ) ) {
						$( el ).find( '.mw-collapsible-toggle' ).click();
					} else {
						$( el ).addClass( 'mw-collapsed' );
					}
				}
			} );
		}
	}

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

/* Normalizzazione dei caratteri particolari per l'ordinamento alfabetico nelle tabelle sortable.
   In futuro potrebbe diventare default e non più necessario, vedi [[phab:T72157]] */

mw.config.set( 'tableSorterCollation', {'á':'a','à':'a','ă':'a','â':'a','ǎ':'a','å':'a','ä':'a','ã':'a','ā':'a','ȁ':'a',
'Á':'A','À':'A','Ă':'A','Â':'A','Ǎ':'A','Å':'A','Ä':'A','Ã':'A','Ā':'A','Ȁ':'A',
'ć':'c','ĉ':'c','č':'c','ç':'c',
'Ć':'C','Ĉ':'C','Č':'C','Ç':'C',
'đ':'d','ð':'d',
'Đ':'D','Ð':'D',
'é':'e','è':'e','ê':'e','ě':'e','ë':'e','ẽ':'e','ȩ':'e','ę':'e','ē':'e','ȅ':'e','ė':'e',
'É':'E','È':'E','Ê':'E','Ě':'E','Ë':'E','Ẽ':'E','Ȩ':'E','Ę':'E','Ē':'E','Ȅ':'E','Ė':'E',
'ǵ':'g','ğ':'g','ĝ':'g','ǧ':'g',
'Ǵ':'G','Ğ':'G','Ĝ':'G','Ǧ':'G',
'í':'i','ì':'i','ĭ':'i','î':'i','ǐ':'i','ï':'i','ĩ':'i','ī':'i','ȉ':'i',
'Í':'I','Ì':'I','Ĭ':'I','Î':'I','Ǐ':'I','Ï':'I','Ĩ':'I','Ī':'I','Ȉ':'I',
'ľ':'l','ł':'l',
'Ľ':'L','Ł':'L',
'ń':'n','ǹ':'n','ň':'n','ñ':'n',
'Ń':'N','Ǹ':'N','Ň':'N','Ñ':'N',
'ó':'o','ò':'o','ŏ':'o','ô':'o','ǒ':'o','ö':'o','ő':'o','õ':'o','ø':'o','ō':'o','ȍ':'o',
'Ó':'O','Ò':'O','Ŏ':'O','Ô':'O','Ǒ':'O','Ö':'O','Ő':'O','Õ':'O','Ø':'O','Ō':'O','Ȍ':'O',
'ŕ':'r','ř':'r',
'Ŕ':'R','Ř':'R',
'ś':'s','ṥ':'s','ŝ':'s','š':'s','ş':'s','ș':'s',
'Ś':'S','Ṥ':'S','Ŝ':'S','Š':'S','Ş':'S','Ș':'S',
'ţ':'t','ț':'t',
'Ţ':'T','Ț':'T',
'ú':'u','ù':'u','ŭ':'u','û':'u','ǔ':'u','ü':'u','ű':'u','ũ':'u','ū':'u','ȕ':'u',
'Ú':'U','Ù':'U','Ŭ':'U','Û':'U','Ǔ':'U','Ü':'U','Ű':'U','Ũ':'U','Ū':'U','Ȕ':'U',
'ý':'y','ỳ':'y','ÿ':'y','ỹ':'y',
'Ý':'Y','Ỳ':'Y','Ÿ':'Y','Ỹ':'Y',
'ź':'z','ž':'z',
'Ź':'Z','Ž':'Z'} );