MediaWiki:Vector.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.
/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */
/** Supporto per il Template:Interprogetto ********************************************
*
* Attenzione: questo codice è un "hack", strettamente dipendente dal funzionamento
* della skin Vector; potrebbe smettere di funzionare in caso di modifiche alla skin.
*
* Maintainer: [[Utente:Salvatore Ingala]]
*/
$(function(){
try {
if ( $( '#interProject' ).length == 0 )
return;
//Controlli aggiuntivi sul div 'interProject'
var $ul = $( '#interProject' ).find( 'ul' );
if ( $ul.length == 0 || $ul.find( 'li' ).length == 0)
return;
var id = 'p-iproject';
var portal = document.createElement( 'div' );
portal.id = id;
var $portal = $( portal );
var $divbody = $( document.createElement( 'div' ) );
$divbody.addClass( 'body' )
.append( $( '#interProject' ).find( 'ul' ) );
// Cerca la classe da mettere tra gli altri portlet, *evitando* di indovinare
// la classe per ogni skin, e usando 'portlet' se non si riesce a fare di meglio.
// Non includere p-navigation perché è diverso (ha la classe 'portal-first').
var plausibleIDs = [ 'p-Comunità', 'p-tb', 'p-coll-print_export' ],
interProjectClass = 'portlet',
IDElement;
for ( var idkey in plausibleIDs ) {
IDElement = document.getElementById( plausibleIDs[idkey] );
if ( IDElement ) {
interProjectClass = IDElement.classList.value;
break;
}
}
$portal.addClass( interProjectClass )
.html( '<h3>Altri progetti</h3>' )
.append( $divbody )
.insertAfter( $('#p-tb') );
//Ricalcola TabIndex
//Calcola il massimo TabIndex presente, ma escludendo i portal
var maxTI = 0;
$( '[tabindex]' ).each(function(){
if ($(this).is( '#mw-panel > div.portal' ))
return;
var ti = parseInt($(this).attr( 'tabindex' ));
if (ti > maxTI)
maxTI = ti;
});
var tabIndex = maxTI+1;
//Assegna tabIndex incrementali ai portals non persistenti (anche quelli che esistevano prima)
$( '#mw-panel > div.portal:not(.persistent) > h5' ).each(function(){
$( this ).attr( 'tabindex', tabIndex++ );
});
} catch(e) {
//non fa nulla
}
});
/*************************/
/* Supporto per NavFrame */
/*************************/
// copiato da MediaWiki:Monobook.js
// BEGIN Dynamic Navigation Bars
// set up the words in your language
var NavigationBarHide = '▲ Nascondi';
var NavigationBarShow = '▼ Espandi';
// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
var NavigationBarShowDefault = 0;
// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavToggle') {
NavChild.firstChild.data = NavigationBarShow;
}
}
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavToggle') {
NavChild.firstChild.data = NavigationBarHide;
}
}
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
var indexNavigationBar = 0;
// iterate over all < div >-elements
for(
var i=0;
NavFrame = document.getElementsByTagName("div")[i];
i++
) {
// if found a navigation bar
if (NavFrame.className == "NavFrame") {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var NavToggleText = document.createTextNode(NavigationBarHide);
NavToggle.appendChild(NavToggleText);
// add NavToggle-Button as first div-element
// in < div class="NavFrame" >
NavFrame.insertBefore(
NavToggle,
NavFrame.firstChild
);
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
// if more Navigation Bars found than Default: hide all
if (NavigationBarShowDefault < indexNavigationBar) {
for(
var i=1;
i<=indexNavigationBar;
i++
) {
toggleNavigationBar(i);
}
}
}
$(createNavigationBarToggleButton);
// END Dynamic Navigation Bars
/********************************/
/* Fine - Supporto per NavFrame */
/********************************/