MediaWiki:Common.js: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
secondo tentativo
 
(295 versioni intermedie di 37 utenti non mostrate)
Riga 1:
/**
/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */
* 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, $ ) {
/*** RICERCA ***/
'use strict';
/**
*******************************************************
*
* Descrizione: Cambia Speciale:Ricerca per usare un menu' a
* tendina, con come default il motore interno di MediaWiki
*
* Creato e gestito da: [[:en:User:Gracenotes]]
* Importato in it.wiki da: [[Utente:Jalo]]
*/
if (wgPageName == "Speciale:Ricerca") {
var searchEngines = [];
addOnloadHook(SpecialSearchEnhanced);
}
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
searchEngines[searchEngines.length] = [action, mainQ, addQ, addV];
return opt;
}
var searchForm = document.forms['search'];
 
// ============================
if (searchForm.lsearchbox) {
// Caricamento script
var searchBox = searchForm.lsearchbox;
// ============================
} else {
var searchBox = searchForm.search;
}
 
/**
var selectBox = document.createElement('select');
* Ricerca in Wikidata
selectBox.id = 'searchEngine';
*/
searchForm.onsubmit = function() {
if (
var optSelected = searchEngines[document.getElementById('searchEngine').selectedIndex];
mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ||
searchForm.action = optSelected[0];
( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgCanonicalSpecialPageName' ) === false )
searchBox.name = optSelected[1];
) {
searchForm.title.value = optSelected[3];
mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:Wdsearch.js&action=raw&ctype=text/javascript' );
searchForm.title.name = optSelected[2];
}
}
selectBox.appendChild(createOption('MediaWiki', wgScriptPath + '/index.php', 'search', 'title', 'Speciale:Ricerca'));
selectBox.appendChild(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'it.wikipedia.org'));
selectBox.appendChild(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'it.wikipedia.org'));
selectBox.appendChild(createOption('Windows Live', 'http://search.live.com/results.aspx', 'q', 'q1', 'site:http://it.wikipedia.org'));
selectBox.appendChild(createOption('Wikiwix', 'http://it.wikiwix.com/', 'action', 'lang', 'it'));
selectBox.appendChild(createOption('Exalead', 'http://www.exalead.com/wikipedia/results', 'q', 'language', 'it'));
 
// ============================
searchBox.style.marginLeft = '0px';
// Modifica HTML pagine
if (document.getElementById('loadStatus')) {
// ============================
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.fulltext;
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
 
/**
// Serve per far funzionare il Cassetto2 con IE6.
* Aggiunge un combobox a [[MediaWiki:Edittools]] per selezionare un gruppo di caratteri speciali.
if (window.attachEvent && !window.XMLHttpRequest) window.attachEvent("onload", function() {
*/
var x=document.getElementById("bodyContent").getElementsByTagName("div");
function comboboxEdittools() {
for (var i=0; i<x.length; i++) {
var $specialChars = $( '#specialchars' );
if (x[i].className != "HopFrame") continue;
if ( $specialChars.length ) {
var y=x[i].getElementsByTagName("div"); var j;
var $select = $( '<select>' ).change( function () {
for (j=0; j<y.length; j++)
$specialChars.find( 'p' ).hide();
if (y[j].className == "HopContent") {x[i].hopContent = y[j]; break;}
$specialChars.find( 'option:selected' ).data().show();
if (j<y.length) {
} );
x[i].onmouseover=function() { this.hopContent.style.display="block"; };
$specialChars.find( 'p' ).each( function () {
x[i].onmouseout=function() { this.hopContent.style.display="none"; };
$( '<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 ) );