Utente:FRacco/sandbox.js: differenze tra le versioni

Da Wikiquote, aforismi e citazioni in libertà.
Contenuto cancellato Contenuto aggiunto
ottimizzazione del codice con controllo completo degli errori
m fix minori e commenti
 
Riga 6: Riga 6:


/*
/*
* Workaround for [[bugzilla:708]] via [[commons:Template:InterProject]].
* Workaround for [[phabricator:708]] via [[commons:Template:InterProject]].
* Originally based on code from [[wikt:de:MediaWiki:Common.js]]
* Originally based on code from [[wikt:de:MediaWiki:Common.js]] by
* by [[wikt:de:User:Melancholie]],
* [[wikt:de:User:Melancholie]], cleaned up and modified for compatibility
* cleaned up and modified for compatibility with the Vector skin.
* with the Vector skin.
* @source: [[commons:MediaWiki:InterProject.js]]
* @source: [[commons:MediaWiki:InterProject.js]]
* @maintainer: [[commons:User:Krinkle]]
* @maintainer: [[commons:User:Krinkle]]
Riga 60: Riga 60:
// interproject inclusion without wikibase otherprojects
// interproject inclusion without wikibase otherprojects
var langBox = document.getElementById( 'p-lang' );
var langBox = document.getElementById( 'p-lang' );
var panel;
var legacyPanel;


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


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



Versione attuale delle 02:03, 30 apr 2015

/*
 * 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 [[phabricator: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 legacyPanel;

    if ( !langBox ) {
        // legacy skins
        var panelIds = [ 'mw-panel', 'panel', 'column-one', 'mw_portlets' ];
        for ( var i = 0; !legacyPanel && i < panelIds.length; i++ ) {
            legacyPanel = document.getElementById( panelIds[i] );
        }
        // can't find a place for the portlet, try to undo hiding
        if ( !legacyPanel ) {
            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 ) {
        langBox.parentNode.insertBefore( interProject, langBox );
    } else {
        legacyPanel.appendChild( interProject );
    }

} );

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