Utente:FRacco/sandbox.js

Versione del 4 mar 2015 alle 03:07 di FRacco (discussione | contributi) (ottimizzazione del codice con controllo completo degli errori)

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 menu Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.

/*
 * Crea il menù "Altri progetti" nella barra laterale sinistra con tutti
 * i collegamenti dell'interprogetto verso gli altri progetti Wikimedia,
 * vedi [[Template:Interprogetto]] e [[Modulo:Interprogetto]].
 */

/*
 * Workaround for [[bugzilla:708]] via [[commons:Template:InterProject]].
 * Originally based on code from [[wikt:de:MediaWiki:Common.js]]
 * by [[wikt:de:User:Melancholie]],
 * cleaned up and modified for compatibility with the Vector skin.
 * @source: [[commons:MediaWiki:InterProject.js]]
 * @maintainer: [[commons:User:Krinkle]]
 * @maintainer: [[commons:User:Ilmari Karonen]]
 */

/*
 * Workaround for [[mw:Beta Features/Other projects sidebar]] integration.
 * @author: [[User:FRacco]]
 */

// <nowiki> Codice JavaScript: begin...

$( function () {

    // avoid double interproject inclusion
    if ( document.getElementById( 'p-interproject-body' ) ) return;

    var interPr = document.getElementById( 'interProject' );
    var sisterPr = document.getElementById( 'sisterProjects' );
    // none interproject inclusion
    if ( !interPr || !sisterPr ) return;

    interPr.style.display = 'none';
    sisterPr.style.display = 'none';

    var divBody = interPr.getElementsByTagName( 'div' );
    // interproject links not found
    if ( !divBody ) return;

    var interProjectBody = document.createElement( 'div' );
        interProjectBody.id = 'p-interproject-body';
        interProjectBody.className = ( mw.config.get( 'skin' ) === 'vector' ?
            'body' : 'pBody' );
        interProjectBody.innerHTML = divBody[0].innerHTML;

    var otherPr = document.getElementById( 'p-wikibase-otherprojects' );
    // interproject inclusion with wikibase otherprojects
    if ( otherPr ) {
        divBody = otherPr.getElementsByTagName( 'div' );
        if ( divBody ) {
            // replace wikibase otherprojects with interproject links
            otherPr.replaceChild( interProjectBody, divBody[0] );
        } else {
            otherPr.appendChild( interProject );
        }
        return;
    }

    // interproject inclusion without wikibase otherprojects
    var langBox = document.getElementById( 'p-lang' );
    var panel;

    if ( langBox ) {
        panel = langBox.parentNode;
    } else {
        // stupid incompatible skins...
        var panelIds = [ 'mw-panel', 'panel', 'column-one', 'mw_portlets' ];
        for ( var i = 0; !panel && i < panelIds.length; i++ ) {
            panel = document.getElementById( panelIds[i] );
        }
        // can't find a place for the portlet, try to undo hiding
        if ( !panel ) {
            interPr.style.display = 'block';
            sisterPr.style.display = 'block';
            return;
        }
    }

    var interProjectLabel = document.createElement( 'h3' );
        interProjectLabel.id = 'p-interproject-label';
        interProjectLabel.innerHTML = ( sisterPr && sisterPr.firstChild ?
            sisterPr.firstChild.innerHTML : 'Altri progetti' );

    var interProject = document.createElement( 'div' );
        interProject.id = 'p-interproject';
        interProject.className = ( mw.config.get( 'skin' ) === 'vector' ?
            'portal' : 'portlet' );
        interProject.appendChild( interProjectLabel );
        interProject.appendChild( interProjectBody );

    if ( langBox ) {
        panel.insertBefore( interProject, langBox );
    } else {
        panel.appendChild( interProject );
    }

} );

// Codice JavaScript: ...end </nowiki>