MediaWiki:Common.js
Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.
- Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
- Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
- Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
- Opera: premi 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';
console.log('Hello World from Common.js!');
// ============================
// 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' );
// ============================
// 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"
) {
var link = mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/Lista_di_Wikipedie',
'Lista completa', 'interwiki-completelist', 'Lista completa delle Wikipedie' );
$( link ).css( 'font-weight', 'bold' );
}
} )
.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 );
// ============================
// 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
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() + ' - 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 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 ) );