Utente:FRacco/Sandbox2
Aspetto
Aggiornamento codici dicembre 2013
/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Monobook */ /* attualmente non c'è necessità di alcun codice specifico per questa skin */
/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */ /* attualmente non c'è necessità di alcun codice specifico per questa skin */
/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti */ // <nowiki> Codice JavaScript: inizio... /* Modifica il testo della linguetta "Voce" in "Pagina principale" * e aggiunge il link all'elenco completo di tutte le lingue * * Ultimo controllo al codice: 12/12/2013 */ if ( mw.config.get( 'wgIsMainPage' ) || mw.config.get( 'wgPageName' ) === 'Discussione:Pagina_principale' ) { $( document ).ready( function() { if ( mw.config.get( 'wgUserLanguage' ) === 'it' ) $( '#ca-nstab-main a' ).text( 'Pagina principale' ); mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/Wikiquote/it#Lista_delle_Wikiquote', 'Elenco completo', 'interwiki-completelist', 'Elenco completo delle Wikiquote' ); } ); }; /* Change Special:Search to use a drop-down menu * * Description: Change Special:Search to use a drop-down menu, * with the default being the internal MediaWiki engine * * Created and maintained by: [[w:en:User:Gracenotes]] * * Ultimo controllo al codice: 12/12/2013 */ if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ) $( function() { var searchEngines = []; 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['powersearch'] || document.forms['search']; var searchBox = searchForm.lsearchbox || searchForm.search; var selectBox = document.createElement( 'select' ); selectBox.id = 'searchEngine'; searchForm.onsubmit = function() { var optSelected = searchEngines[document.getElementById( 'searchEngine' ).selectedIndex]; searchForm.action = optSelected[0]; searchBox.name = optSelected[1]; searchForm.title.value = optSelected[3]; searchForm.title.name = optSelected[2]; }; selectBox.appendChild( createOption( 'MediaWiki', mw.config.get( 'wgScriptPath' ) + '/index.php', 'search', 'title', 'Special:Search' ) ); selectBox.appendChild( createOption( 'Google', '//www.google.com/search', 'q', 'sitesearch', 'it.wikiquote.org') ); selectBox.appendChild( createOption( 'Yahoo', '//search.yahoo.com/search', 'p', 'vs', 'it.wikiquote.org') ); selectBox.appendChild( createOption( 'Windows Live', '//search.live.com/results.aspx', 'q', 'q1', 'site:it.wikiquote.org' ) ); searchBox.style.marginLeft = '0px'; // 'searchText' is the firt search text. 'powerSearchText' is the second, used only if the first is not existent (e.g.: not yet done any search) buttonSearch = document.getElementById( 'searchText' ) || document.getElementById( 'powerSearchText' ); buttonSearch.parentNode.insertBefore( selectBox, buttonSearch.nextSibling ); } ); /* Correzione della posizione del link [modifica] delle sezioni. * * Copyright 2006, Marc Mongenet * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * See www.gnu.org/licenses/gpl.html * * The function looks for <span class="mw-editsection">, and move them * at the end of their parent and display them inline in small font. * var oldEditsectionLinks=true disables the function. * * Ultimo controllo al codice: 12/12/2013 */ var setModifySectionStyle = $( function() { try { if ( !( typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false ) ) return; var spans = document.getElementsByTagName( 'span' ); for ( var s = 0; s < spans.length; s++ ) { var span = spans[s]; if ( span.className == 'mw-editsection' ) { span.style.fontSize = 'x-small'; span.style.fontWeight = 'normal'; span.style.cssFloat = span.style.styleFloat = 'none'; span.parentNode.appendChild( document.createTextNode( ' ' ) ); span.parentNode.appendChild( span ); } } } catch (e) { /* something went wrong */ } } ); $( document ).ready( setModifySectionStyle ); /* Test if an element has a certain class * * Description: Uses regular expressions and caching for better performance. * Maintainers: [[wikt:en:User:Mike Dillon]], [[w:en:User:R. Koot]], [[w:en:User:SG]] * * Ultimo controllo al codice: 12/12/2013 */ // DEPRECATO; sostituito con $( element ).hasClass( className ) var hasClass = function( element, className ) { return $( element ).hasClass( className ); }; /* Working-code of "Metaboxes" * * Descrizione: Codice di gestione del [[Template:Metabox]] * * Vedi: [[w:ca:Plantilla:Metacaixa]] * Creato da: [[w:ca:User:Peleguer]] * * Traduzione delle variabili: * * MetaCaixa = MetaBox * MetaCaixaInit = inizializza i metabox * MetaCaixaMostraPestanya = mostra la scheda del metabox * mc/Mc = metabox * bt/Bt = bottone * ps/Ps = scheda * mcBoto = bottone del metabox * mcBotoSel = bottone selezionato del metabox * mcContingut = contenuto del metabox * mcPestanya = scheda del metabox * * Ultimo controllo al codice: 12/12/2013 */ function MetaCaixaInit() { // Se ci sono dei metabox nella pagina, assegna gli eventi ai bottoni var i = 0; //inizializza il contatore dei metabox for ( i = 0; i <= 9; i++ ) { var vMc = document.getElementById( "mc" + i ); if ( !vMc ) break; var j = 1; //inizializza il contatore dei bottoni del metabox var vPsIni = 0; //inizializza la scheda visibile inizialmente for ( j = 1; j <= 9; j++ ) { var vBt = document.getElementById( "mc" + i + "bt" + j ); if ( !vBt ) break; vBt.onclick = MetaCaixaMostraPestanya; //assegna ad ogni bottone l'evento onclick if ( vBt.className === "mcBotoSel" ) vPsIni = j; //memorizza la scheda visibile inizialmente } if (vPsIni === 0) { //se non c'è una scheda visibile inizialmente, ne assegna una casuale vPsIni = 1 + Math.floor( ( j - 1 ) * Math.random() ); document.getElementById( "mc" + i + "ps" + vPsIni ).style.display = "block"; document.getElementById( "mc" + i + "ps" + vPsIni ).style.visibility = "visible"; document.getElementById( "mc" + i + "bt" + vPsIni ).className = "mcBotoSel"; } } }; function MetaCaixaMostraPestanya() { // Eseguita al click sul bottone della scheda, // rende visibile la scheda selezionata, nasconde le altre var vMcNom = this.id.substr( 0, 3 ); //dal nome del pulsante, si deduce il nome del metabox var vIndex = this.id.substr( 5, 1 ); //e l'indice della scheda var i = 1; for ( i = 1; i <= 9; i++ ) { //ricerca tutte le schede del metabox var vPsElem = document.getElementById( vMcNom + "ps" + i ); if ( !vPsElem ) break; if ( vIndex == i ) { //se la scheda è quella selezionata, la visualizza e aggiorna il bottone vPsElem.style.display = "block"; vPsElem.style.visibility = "visible"; document.getElementById( vMcNom + "bt" + i ).className = "mcBotoSel"; } else { //altrimenti la nasconde e aggiorna il bottone vPsElem.style.display = "none"; vPsElem.style.visibility = "hidden"; document.getElementById( vMcNom + "bt" + i ).className = "mcBoto"; } } return false; //evita di ricaricare la pagina }; $( document ).ready( MetaCaixaInit ); /* Simula i titoli delle sezioni senza indicizzazione e senza link di modifica * * Per garantire l'accessibilità anche agli utenti che non utilizzano JavaScript * nel [[Mediawiki:Common.css]] vengono definite le classi: nojs-h1... h2/h3/h4/h5/h6, * che qui vengono rimosse. * * Vedi: [[Template:Titolo sezione]] * Creato da: [[q:it:User:FRacco]] * * Ultimo controllo al codice: 12/12/2013 */ var headersClass = $( function() { for ( j = 1; j <= 6; j++ ) { $( ".h" + j ).removeClass( "nojs-h" + j ).html( function( undefined, text ) { return "<h" + j + ">" + text + "</h" + j + ">"; } ); }; } ); $( document ).ready( headersClass ); /* Collegamento diretto alla pagina di upload di Commons nel portlet Strumenti */ $( function() { mw.util.addPortletLink( 'p-tb', '//commons.wikimedia.org/wiki/Special:UploadWizard', 'Carica su Commons', 't-uploadcommons', 'Carica file multimediali su Commons', 'm', '#t-specialpages'); } ); /* Attiva i pulsanti per Wikiquote della la barra di modifica (versione classica e versione avanzata) */ importScript( "MediaWiki:Toolbar.js" ); /* Attiva la visualizzazione delle note sopra la nota stessa all'interno di un riquadro (REFERENCE TOOLTIP) */ importScript( "MediaWiki:ReferenceTool.js" ); importStylesheet( "MediaWiki:ReferenceTool.css" ); /* Attiva tutti gli effetti di apertura e chiusura di oggetti e tabelle "collassabili" */ importScript( "MediaWiki:Apri-chiudi.js" ); importStylesheet( "MediaWiki:Apri-chiudi.css" ); /* Più lingue selezionabili: importazione da Commons */ mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-LanguageSelect.js&action=raw&ctype=text/javascript' ); /* Interprogetto: importazione da Commons * * Funzione di gestione dei collegamenti dell'interprogetto nella barra di sinistra */ mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:InterProject.js&action=raw&ctype=text/javascript' ); // Codice JavaScript: ...fine </nowiki>
// <nowiki> Codice JavaScript: inizio... /* Pulsanti predefiniti di Wikiquote per la barra degli strumenti di modifica (toolbar) * * Vedi: [[Aiuto:Barra degli strumenti di modifica]] * Ultimo controllo al codice: 12/12/2013 */ /* Barra degli strumenti classica (mediawiki edit toolbar) */ var classicToolbarButtons = function() { mw.toolbar.addButtons( // aggiunge il pulsante per il "Redirect" { "imageFile": "//upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png", "speedTip": "Redirect/Rinvia", "tagOpen": "#RINVIA [[", "tagClose": "]]", "sampleText": "Nome della pagina di destinazione", "imageId": "mw-toolbar-q-redirect" }, // aggiunge il pulsante per una nuova riga { "imageFile": "//upload.wikimedia.org/wikipedia/commons/a/ac/Button_redir_rtl.png", "speedTip": "Nuova riga", "tagOpen": "<br /> ", "tagClose": "", "sampleText": "", "imageId": "mw-toolbar-q-nuovariga" }, // agiunge il pulsante per una nuova battuta al dialogo { "imageFile": "//upload.wikimedia.org/wikipedia/commons/1/11/Button_Nuvola_apps_edu_lang.png", "speedTip": "Aggiungi una battuta al dialogo", "tagOpen": "'''", "tagClose": "''': Testo della battuta. <br />", "sampleText": "Nome del personaggio", "imageId": "mw-toolbar-q-battuta" }, // aggiunge il pulsante per l'Ndr { "imageFile": "//upload.wikimedia.org/wikipedia/commons/c/c1/Button_city_silhouette.png", "speedTip": "Inserisci NDR (usato per contestualizzazioni e/o bibliografie)", "tagOpen": "{{NDR|", "tagClose": "}}", "sampleText": "nota di contestualizzazione o bibliografia", "imageId": "mw-toolbar-q-ndr" }, // aggiunge il pulsante per l'interprogetto { "imageFile": "//upload.wikimedia.org/wikipedia/commons/c/cb/Button_wikipedia.png", "speedTip": "Inserisci collegamenti ad altri progetti Wikimedia", "tagOpen": "\n==Altri progetti==\n{{interprogetto|w", "tagClose": "}}\n", "sampleText": "", "imageId": "mw-toolbar-q-interprogetto" }, // aggiunge il pulsante per le opere su Wikipedia { "imageFile": "//upload.wikimedia.org/wikipedia/commons/f/fb/Button_references2_new.png", "speedTip": "Collegamento alla voce sull'opera in Wikipedia, da aggiungere alla sezione Altri progetti", "tagOpen": "\n===Opere===\n{{Pedia|", "tagClose": "|''Titolo dell'opera se diverso dal titolo della voce''|(anno)}}\n", "sampleText": "Titolo della voce", "imageId": "mw-toolbar-q-opere" } ); }; /* Barra degli strumenti avanzata (wikiEditor toolbar) */ var wikiEditorButtons = function() { // crea un nuovo gruppo "Wikiquote" nella sezione principale "main" $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'main', 'groups': { 'wikiquote': { 'label': 'Wikiquote' } } } ); // aggiunge i pulsanti al gruppo "Wikiquote" // aggiunge il pulsante per una nuova battuta al dialogo $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'main', 'group': 'wikiquote', 'tools': { 'battuta': { label: 'Aggiungi una battuta al dialogo', //testo visualizzato al passaggio del mouse type: 'button', icon: '//upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Nuvola_apps_edu_languages.png/22px-Nuvola_apps_edu_languages.png', action: { type: 'encapsulate', options: { pre: "'''", //testo prima peri: "Nome del personaggio", //testo di esempio post: "''': Testo della battuta. <br />" //testo dopo } } } } } ); // aggiunge il pulsante per l'Ndr $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'main', 'group': 'wikiquote', 'tools': { 'ndr': { label: 'Inserisci NDR (usato per contestualizzazioni e/o bibliografie)', //testo visualizzato al passaggio del mouse type: 'button', icon: '//upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Emblem-pictures.svg/22px-Emblem-pictures.svg.png', action: { type: 'encapsulate', options: { pre: "{{NDR|", //testo prima peri: "nota di contestualizzazione o bibliografia", //testo di esempio post: "}}" //testo dopo } } } } } ); // aggiunge il pulsante per l'interprogetto $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'main', 'group': 'wikiquote', 'tools': { 'interprogetto': { label: 'Inserisci collegamenti ad altri progetti Wikimedia', //testo visualizzato al passaggio del mouse type: 'button', icon: '//upload.wikimedia.org/wikipedia/commons/thumb/8/80/Wikipedia-logo-v2.svg/22px-Wikipedia-logo-v2.svg.png', action: { type: 'encapsulate', options: { pre: "\n==Altri progetti==\n{{interprogetto|w", //testo prima peri: "", //testo di esempio post: "}}\n" //testo dopo } } } } } ); // aggiunge il pulsante per le opere su Wikipedia $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'main', 'group': 'wikiquote', 'tools': { 'opere': { label: 'Collegamento alla voce sull\'opera in Wikipedia, da aggiungere alla sezione Altri progetti', //testo visualizzato al passaggio del mouse type: 'button', icon: '//upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Books-aj.svg_aj_ashton_01.svg/22px-Books-aj.svg_aj_ashton_01.svg.png', action: { type: 'encapsulate', options: { pre: "\n===Opere===\n{{Pedia|", //testo prima peri: "Titolo della voce", //testo di esempio post: "|''Titolo dell'opera se diverso dal titolo della voce''|(anno)}}\n" //testo dopo } } } } } ); }; // Check if view is in edit mode and the required modules are available. Then, customize the toolbar... // Note: usebetatoolbar can be used to check if a user is using the wikiEditor (true) or the old toolbar (false) if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) { mw.loader.using( 'user.options', function() { if ( mw.user.options.get( 'usebetatoolbar' ) ) { mw.loader.using( 'ext.wikiEditor.toolbar', function() { $( document ).ready( wikiEditorButtons ); } ); } else { mw.loader.using( 'mediawiki.action.edit', function() { $( classicToolbarButtons ); } ); } } ); }; // Codice JavaScript: ...fine </nowiki>
// <nowiki> Codice JavaScript: inizio... /* REFERENCE TOOLTIPS - Vedi [[mw:Reference Tooltips]] * * Codice originale: [[w:en:MediaWiki:Gadget-ReferenceTooltips.js]] * * Ultimo controllo al codice: 12/12/2013 */ window.pg || $(document).ready( function($) { // Make sure we are in article, project, or help namespace if ( wgCanonicalNamespace === '' || wgCanonicalNamespace === 'Project' || wgCanonicalNamespace === 'Help' ) { function toggleRT(o){ mw.loader.using("jquery.cookie",function(){ $.cookie("RTsettings",o+"|"+ settings[1] + "|" + settings[2], {path:"/",expires:90}); location.reload(); }) } var settings = document.cookie.split("RTsettings=")[1]; settings = settings ? settings.split(";")[0].split("%7C") : [1, 200, +("ontouchstart" in document.documentElement)]; if( settings[0] == 0 ) { var footer = $("#footer-places, #f-list"); if( footer.length === 0 ) { footer = $("#footer li").parent(); } footer.append($("<li>").append($("<a>").text("Abilita i tooltip delle note").attr("href","javascript:(function(){})()").click(function(){toggleRT(1)}))); return; } var isTouchscreen = +settings[2], timerLength = isTouchscreen ? 0 : +settings[1], settingsMenu; $(".reference").each( function() { var tooltipNode, hideTimer, showTimer, checkFlip = false; function findRef( h ){ h = h.firstChild.getAttribute("href"); h = h && h.split("#"); h = h && h[1]; h = h && document.getElementById( h ); h = h && h.nodeName == "LI" && h; return h; } function hide( refLink ){ if( tooltipNode && tooltipNode.parentNode == document.body ) { hideTimer = setTimeout( function() { $(tooltipNode).animate({opacity: 0}, 100, function(){ document.body.removeChild( tooltipNode ) }) }, isTouchscreen ? 16 : 100) } else { var h = findRef( refLink ); h && (h.style.border = ""); } } function show(){ if( !tooltipNode.parentNode || tooltipNode.parentNode.nodeType === 11 ){ document.body.appendChild( tooltipNode ); checkFlip = true; } $(tooltipNode).stop().animate({opacity: 1}, 100) clearTimeout( hideTimer ); } function openSettingsMenu(){ if( settingsMenu ) { settingsMenu.dialog( "open" ); } else { settingsMenu = $("<form>").append( $("<button>").css("width","100%").text("Disabilita i tooltip delle note").button().click(function(){toggleRT(0)}), $("<br>"), $("<small>").text("Una volta disabilitati, i tooltip delle note possono venire riabilitati grazie ad un link posto in fondo alla pagina."), $("<hr>"), $("<label>").text("Tempo prima dell'apparizione del tooltip (in millisecondi): ").append($("<input>").attr({"type":"number","value":settings[1],step:50,min:0,max:5000})), $("<br>"), $("<span>").text("I tooltip vengono attivati tramite:"), $("<label>").append( $("<input>").attr({"type":"radio", "name":"RTActivate", "checked":settings[2]==0&&"checked", "disabled":"ontouchstart" in document.documentElement&&"disabled"}), "sosta del cursore sulla nota" ), $("<label>").append( $("<input>").attr({"type":"radio", "name":"RTActivate", "checked":settings[2]==1&&"checked"}), "click sulla nota" ) ).submit(function(e){e.preventDefault()}).dialog({modal:true,width:500,title:"Preferenze",buttons:{"Salva le preferenze":function(){ var a = this.getElementsByTagName("input"), b = +a[0].value; $.cookie("RTsettings","1|"+ (b > -1 && b < 5001 ? b : settings[1]) + (a[1].checked ? "|0" : "|1"), {path:"/",expires:90}); location.reload(); }}}); } } $(this)[ isTouchscreen ? 'click' : 'hover' ](function( e ){ var _this = this; if( isTouchscreen ) { e.preventDefault(); (tooltipNode && tooltipNode.parentNode == document.body) || setTimeout( function(){ $( document.body ).on("click touchstart", function( e ) { e = e || event; e = e.target || e.srcElement; for( ; e && !$( e ).hasClass( "referencetooltip" ) ; ) e = e.parentNode; if( !e ){ clearTimeout( showTimer ); hide( _this ); $(document.body).off("click touchstart", arguments.callee) } }) }, 0); } showTimer && clearTimeout( showTimer ); showTimer = setTimeout( function() { var h = findRef( _this ); if( !h ){return}; if( !isTouchscreen && ( window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0 ) + $(window).height() > $( h ).offset().top + h.offsetHeight ) { h.style.border = "#080086 2px solid"; return; } if(!tooltipNode){ tooltipNode = document.createElement("ul"); tooltipNode.className = "referencetooltip"; var c = tooltipNode.appendChild( h.cloneNode( true ) ); try { if( c.firstChild.nodeName != "A" ) { while( c.childNodes[1].nodeName == "A" && c.childNodes[1].getAttribute( "href" ).indexOf("#cite_ref-") !== -1 ) { do { c.removeChild( c.childNodes[1] ) } while ( c.childNodes[1].nodeValue == " " ); } } } catch (e) { mw.log(e) } c.removeChild( c.firstChild ); $( tooltipNode.firstChild.insertBefore( document.createElement( "span" ), tooltipNode.firstChild.firstChild ) ).addClass("RTsettings").attr("title", "Preferenze").click(function(){ mw.loader.using(["jquery.cookie","jquery.ui.dialog"], openSettingsMenu); }) tooltipNode.appendChild( document.createElement( "li" ) ); isTouchscreen || $(tooltipNode).hover(show, hide); } show(); var o = $(_this).offset(), oH = tooltipNode.offsetHeight; $(tooltipNode).css({top: o.top - oH, left: o.left - 7 }); if( tooltipNode.offsetHeight > oH ) { // is it squished against the right side of the page? $(tooltipNode).css({left:'auto',right:0}); tooltipNode.lastChild.style.marginLeft = (o.left - tooltipNode.offsetLeft) + "px"; } if( checkFlip ) { if( o.top < tooltipNode.offsetHeight + ( window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0 ) ) { // is part of it above the top of the screen? $(tooltipNode).addClass("RTflipped").css({top: o.top + 12}); } else if( tooltipNode.className === "referencetooltip RTflipped" ) { // cancel previous $(tooltipNode).removeClass("RTflipped"); } checkFlip = false; } }, timerLength); }, isTouchscreen ? undefined : function(){clearTimeout(showTimer); hide(this); } ) } ); } } ); // Codice JavaScript: ...fine </nowiki>
// <nowiki> Codice JavaScript: inizio... /* Dynamic Navigation Bars * * Vedi: [[w:en:Wikipedia:NavFrame]] * * Codice originale: [[w:en:MediaWiki:Common.js]] * integrato con: [[w:it:MediaWiki:Common.js]] * da: [[q:it:User:FRacco]] * * Ultimo controllo al codice: 12/12/2013 */ // set up the words in your language var NavigationBarHide = "« Nascondi"; var NavigationBarShow = "» Mostra"; // set up max count of Navigation Bars on page, if there are more (or equal), all will be hidden // NavigationBarShowDefault = 0; all bars will be hidden // NavigationBarShowDefault = n; on pages with more than "n" bars 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 window.toggleNavigationBar = function( indexNavigationBar, event ) { var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar ); var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar ); var NavChild; if ( !NavFrame || !NavToggle ) { return false; } // if shown now if ( NavToggle.firstChild.data === NavigationBarHide ) { for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) { NavChild.style.display = 'none'; } } NavToggle.firstChild.data = NavigationBarShow; // if hidden now } else if ( NavToggle.firstChild.data === NavigationBarShow ) { for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) { NavChild.style.display = 'block'; } } NavToggle.firstChild.data = NavigationBarHide; } if ( event ) event.preventDefault(); }; // adds show/hide-button to navigation bars function createNavigationBarToggleButton() { var indexNavigationBar = 0; var NavFrame; var NavChild; // iterate over all div-elements var divs = document.getElementsByTagName( 'div' ); for ( var i = 0; ( NavFrame = divs[i] ); i++ ) { // if found a navigation bar if ( $( NavFrame ).hasClass( 'NavFrame' ) ) { indexNavigationBar++; var NavToggle = document.createElement( 'a' ); NavToggle.className = 'NavToggle'; NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar ); NavToggle.setAttribute( 'href', '#' ); $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) ); var isCollapsed = $( NavFrame ).hasClass( 'collapsed' ); /* Check if any children are already hidden. This loop is here for backwards compatibility: * the old way of making NavFrames start out collapsed was to manually add style="display:none" * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make * the content visible without JavaScript support), the new recommended way is to add the class * "collapsed" to the NavFrame itself, just like with collapsible tables. */ for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) { if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) { if ( NavChild.style.display === 'none' ) { NavFrame.className += ' collapsed'; isCollapsed = true; } } } if ( isCollapsed ) { for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) { NavChild.style.display = 'none'; } } } var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide ); NavToggle.appendChild( NavToggleText ); // add NavToggle-Button as first div-element in < div class="NavFrame" > /* Find the NavHead and attach the toggle link * (Must be this complicated because Moz's firstChild handling is borked) */ for ( var j = 0; j < NavFrame.childNodes.length; j++ ) { if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) { NavToggle.style.color = NavFrame.childNodes[j].style.color; NavFrame.childNodes[j].appendChild( NavToggle ); } } NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar ); } } // if more (or equal) Navigation Bars found than Default: hide all // (except for ones defined with "collapsed" or "expanded" class) if ( indexNavigationBar >= NavigationBarShowDefault ) { for ( var i = 1; i <= indexNavigationBar; i++ ) { NavFrame = document.getElementById( 'NavFrame' + i ); if ( !$( NavFrame ).hasClass( 'collapsed' ) && !$( NavFrame ).hasClass( 'expanded' ) ) window.toggleNavigationBar( i ); } } }; mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton ); /* Tabelle collassabili (CollapsibleTables) * * Descrizione: Permette alle tabelle di espandersi e contrarsi, mostrando solo il titolo. * * Vedi: [[w:en:Wikipedia:Collapsible tables]] * * Codice originale: [[w:en:MediaWiki:Common.js]] * Mantenimento: [[w:en:User:R. Koot]] * * Ultimo controllo al codice: 12/12/2013 */ // set up the words in your language var collapseCaption = "▲ Nascondi"; var expandCaption = "▼ Mostra"; // set up max count of collapsible tables on page, // if there are more (or equal), all ".autocollapse" // tables will be hidden var autoCollapse = 2; window.collapseTable = function( tableIndex ) { var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex ); if ( !Table || !Button ) { return false; } var Rows = Table.rows; var i; if ( Button.firstChild.data === collapseCaption ) { for ( i = 1; i < Rows.length; i++ ) { Rows[i].style.display = "none"; } Button.firstChild.data = expandCaption; } else { for ( i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; } Button.firstChild.data = collapseCaption; } }; function createCollapseButtons() { var tableIndex = 0; var NavigationBoxes = {}; var Tables = document.getElementsByTagName( "table" ); var i; function handleButtonLink( index, e ) { window.collapseTable( index ); e.preventDefault(); } for ( i = 0; i < Tables.length; i++ ) { if ( $( Tables[i] ).hasClass( "collapsible" ) ) { // aggiunge il pulsante e il numero di incremento soltanto se c'è una riga di intestazione per lavorarci var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0]; if (!HeaderRow) continue; var Header = HeaderRow.getElementsByTagName( "th" )[0]; if (!Header) continue; NavigationBoxes[ tableIndex ] = Tables[i]; Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); var Button = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.className = "collapseButton"; /* gli stili sono dichiarati nel relativo Cascading Style Sheet (CSS) */ ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "#" ); $( ButtonLink ).on( "click", $.proxy( handleButtonLink, ButtonLink, tableIndex ) ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); Header.insertBefore( Button, Header.firstChild ); tableIndex++; } } for ( i = 0; i < tableIndex; i++ ) { if ( $( NavigationBoxes[i] ).hasClass( "collapsed" ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( "autocollapse" ) ) ) { window.collapseTable( i ); } else if ( $( NavigationBoxes[i] ).hasClass( "innercollapse" ) ) { var element = NavigationBoxes[i]; while ( ( element = element.parentNode ) ) { if ( $( element ).hasClass( "outercollapse" ) ) { window.collapseTable ( i ); break; } } } } } mw.hook( 'wikipage.content' ).add( createCollapseButtons ); /* jQuery makeCollapsible modificato * * script iniziale: [[mw:RL/DM#jquery.makeCollapsible]] * autore iniziale: Krinkle <krinklemail@gmail.com> * * modifiche eseguite da: [[w:fr:User:Lgd]] * * Doppia licenza: * @licenza CC-BY 3.0 <creativecommons.org/licenses/by/3.0> * @licenza GPL2 <www.gnu.org/licenses/old-licenses/gpl-2.0.html> * * Ultimo controllo al codice: 12/12/2013 */ // set up the words in your language var collapsetextDef = "Nascondi"; var collapsetextAll = "Nascondi tutto"; var expandtextDef = "Mostra"; var expandtextAll = "Mostra tutto"; var newCollapsible = function( $ ) { return $( '.it-collapsible' ).each( function() { var _fn = 'jquery.newCollapsible> '; // Define reused variables and functions var $that = $( this ).addClass( 'it-collapsible' ), // case: $( '#myAJAXelement' ).newCollapsible() that = this, collapsetext = $( this ).attr( 'data-collapsetext' ), expandtext = $( this ).attr( 'data-expandtext' ), toggleElement = function( $collapsible, action, $defaultToggle, instantHide ) { // Validate parameters if ( !$collapsible.jquery ) { // $collapsible must be an instance of jQuery return; } if ( action != 'expand' && action != 'collapse' ) { // action must be string with 'expand' or 'collapse' return; } if ( typeof $defaultToggle == 'undefined' ) { $defaultToggle = null; } if ( $defaultToggle !== null && !( $defaultToggle instanceof $ ) ) { // is optional (may be undefined), but if defined it must be an instance of jQuery. // If it's not, abort right away. // After this $defaultToggle is either null or a valid jQuery instance. return; } var $containers = null; if ( action == 'collapse' ) { // Collapse the element if ( $collapsible.is( 'table' ) && $collapsible.find( 'caption' ).length ) { // only table with caption // Hide all table rows of this table // Slide doens't work with tables, but fade does as of jQuery 1.1.3 // http://stackoverflow.com/questions/467336#920480 $containers = $collapsible.find( '>tbody>tr' ); if ( $defaultToggle ) { $containers.stop( true, true ).fadeOut(); } else { if ( instantHide ) { $containers.hide(); } else { $containers.stop( true, true ).fadeOut(); } } } else if ( !$collapsible.is( 'ul' ) && !$collapsible.is( 'ol' ) && !$that.is( 'table' ) ) { // <div>, <p> etc. but not ul ol and tables without caption var $collapsibleContent = $collapsible.find( '> .it-collapsible-content' ); // If a collapsible-content is defined, collapse it if ( $collapsibleContent.length ) { if ( instantHide ) { $collapsibleContent.hide(); } else { $collapsibleContent.slideUp(); } // Otherwise assume this is a customcollapse with a remote toggle... // ...and there is no collapsible-content because the entire element should be toggled } else { if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) { $collapsible.fadeOut(); } else { $collapsible.slideUp(); } } } } else { // Expand the element if ( $collapsible.is( 'table' ) && $collapsible.find( 'caption' ).length ) { $containers = $collapsible.find( '>tbody>tr' ); if ( $defaultToggle ) { $containers.stop( true, true ).fadeIn(); } else { $containers.stop( true, true ).fadeIn(); } } else if ( !$collapsible.is( 'ul' ) && !$collapsible.is( 'ol' ) && !$that.is( 'table' ) ) { // <div>, <p> etc.but not ul ol and not tables without caption var $collapsibleContent = $collapsible.find( '> .it-collapsible-content' ); // If a collapsible-content is defined, collapse it if ( $collapsibleContent.length ) { $collapsibleContent.slideDown(); // Otherwise assume this is a customcollapse with a remote toggle... // ...and there is no collapsible-content because the entire element should be toggled } else { if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) { $collapsible.fadeIn(); } else { $collapsible.slideDown(); } } } } }, // Toggles collapsible and togglelink class and updates text label toggleLinkDefault = function( that, e ) { var $that = $(that), $collapsible = $that.closest( '.it-collapsible.it-made-collapsible' ).toggleClass( 'it-collapsed' ); e.preventDefault(); e.stopPropagation(); // It's expanded right now if ( !$that.hasClass( 'it-collapsible-toggle-collapsed' ) ) { // Change link to "Show" $that.removeClass( 'it-collapsible-toggle-expanded' ).addClass( 'it-collapsible-toggle-collapsed' ); if ( $that.find( '> a' ).length ) { $that.find( '> a' ).text( expandtext ); } else { $that.text( expandtext ); } // Collapse element toggleElement( $collapsible, 'collapse', $that ); // It's collapsed right now } else { // Change link to "Hide" $that.removeClass( 'it-collapsible-toggle-collapsed' ).addClass( 'it-collapsible-toggle-expanded' ); if ( $that.find( '> a' ).length ) { $that.find( '> a' ).text( collapsetext ); } else { $that.text( collapsetext ); } // Expand element toggleElement( $collapsible, 'expand', $that ); } return; }, // Toggles collapsible and togglelink class toggleLinkPremade = function( $that, e ) { var $collapsible = $that.eq(0).closest( '.it-collapsible.it-made-collapsible' ).toggleClass( 'it-collapsed' ); if ( $( e.target ).is( 'a' ) ) { return true; } e.preventDefault(); e.stopPropagation(); // It's expanded right now if ( !$that.hasClass( 'it-collapsible-toggle-collapsed' ) ) { // Change toggle to collapsed $that.removeClass( 'it-collapsible-toggle-expanded' ).addClass( 'it-collapsible-toggle-collapsed' ); // Collapse element toggleElement( $collapsible, 'collapse', $that ); // It's collapsed right now } else { // Change toggle to expanded $that.removeClass( 'it-collapsible-toggle-collapsed' ).addClass( 'it-collapsible-toggle-expanded' ); // Expand element toggleElement( $collapsible, 'expand', $that ); } return; }, // Toggles customcollapsible toggleLinkCustom = function( $that, e, $collapsible ) { // For the initial state call of customtogglers there is no event passed if ( e ) { e.preventDefault(); e.stopPropagation(); } // Get current state and toggle to the opposite var action = $collapsible.hasClass( 'it-collapsed' ) ? 'expand' : 'collapse'; $collapsible.toggleClass( 'it-collapsed' ); toggleElement( $collapsible, action, $that ); }; // Use custom text or default ? if( !collapsetext ) { //collapsetext = mw.message( 'collapsible-collapse' ); collapsetext = collapsetextDef; } if ( !expandtext ) { //expandtext = mw.message( 'collapsible-expand' ); expandtext = expandtextDef; } // Create toggle link with a space around the brackets ( [text] ) var $toggleLink = $( '<a href="#"></a>' ) .text( collapsetext ) .wrap( '<span class="it-collapsible-toggle"></span>' ) .parent() .bind( 'click.it-collapse', function( e ) { toggleLinkDefault( this, e ); } ); // Return if it has been enabled already. if ( $that.hasClass( 'it-made-collapsible' ) ) { return; } else { $that.addClass( 'it-made-collapsible' ); } // Check if this element has a custom position for the toggle link // (ie. outside the container or deeper inside the tree) // Then: Locate the custom toggle link(s) and bind them if ( ( $that.attr( 'id' ) || '' ).indexOf( 'it-customcollapsible-' ) === 0 ) { var thatId = $that.attr( 'id' ), $customTogglers = $( '.' + thatId.replace( 'it-customcollapsible', 'it-customtoggle' ) ); mw.log( _fn + 'Found custom collapsible: #' + thatId ); // Double check that there is actually a customtoggle link if ( $customTogglers.length ) { $customTogglers.bind( 'click.it-collapse', function( e ) { toggleLinkCustom( $( this ), e, $that ); } ); } else { mw.log( _fn + '#' + thatId + ': Missing toggler!' ); } // Initial state if ( $that.hasClass( 'it-collapsed' ) ) { $that.removeClass( 'it-collapsed' ); toggleLinkCustom( $customTogglers, null, $that ); } // If this is not a custom case, do the default: // Wrap the contents add the toggle link } else { // Elements are treated differently if ( $that.is( 'table' ) && $that.find( 'caption' ).length ) { // only table with caption // The toggle-link will be in the caption var $caption = $( 'caption', that ), $toggle = $caption.find( '> .it-collapsible-toggle' ); // If theres no toggle link, add it to the caption if ( !$toggle.length ) { $caption.eq( -1 ).prepend( $toggleLink ); } else { $toggleLink = $toggle.unbind( 'click.it-collapse' ).bind( 'click.it-collapse', function( e ) { toggleLinkPremade( $toggle, e ); } ); } } else if ( !$that.is( 'ul' ) && !$that.is( 'ol' ) && !$that.is( 'table' ) ) { // <div>, <p> etc.but not ol ul and not tables without caption // The toggle-link will be the first child of the element var $toggle = $that.find( '> .it-collapsible-toggle' ); // If a direct child .content-wrapper does not exists, create it if ( !$that.find( '> .it-collapsible-content' ).length ) { $that.wrapInner( '<div class="it-collapsible-content"></div>' ); } // If theres no toggle link, add it if ( !$toggle.length ) { $that.prepend( $toggleLink ); } else { $toggleLink = $toggle.unbind( 'click.it-collapse' ).bind( 'click.it-collapse', function( e ) { toggleLinkPremade( $toggle, e ); } ); } } } // Initial state (only for those that are not custom) if ( $that.hasClass( 'it-collapsed' ) && ( $that.attr( 'id' ) || '' ).indexOf( 'it-customcollapsible-' ) !== 0 ) { $that.removeClass( 'it-collapsed' ); // The collapsible element could have multiple togglers // To toggle the initial state only click one of them (ie. the first one, eq(0)) // Else it would go like: hide, show, hide, show for each toggle link. toggleElement( $that, 'collapse', $toggleLink.eq( 0 ), /* instantHide = */ true ); $toggleLink.eq( 0 ).click(); } } ); }; var newAutoCollapse = function( $ ) { // autocollaspe for "palettes" var $navboxnew = $( '#content .navboxnew' ); if ( $navboxnew.length === 1 ) { $navboxnew.filter( '.it-collapsed' ).not( '.uncollapsed, .collapsed' ).each( function() { $( this ).find( 'span.it-collapsible-toggle a' ).first().click(); } ); } }; var newCollapsibleKeyboard = function( $ ) { $( '.it-collapsible-toggle, .it-collapsible-toggle-keyboard' ).attr( 'tabindex', 0 ).keypress( function( event ) { if ( event.which == 13 ) { $( this ).click() } } ); }; var newCollapsibleGroup = function( $ ) { $( '.it-collapsible-group' ).each( function() { var $that = $( this ); var text = expandtextAll; var $tooglelink = $( '<a class="it-collapsible-toggle it-collapsible-toggle-collapsed it-collapsible-group-toogle-all" href="#">' + collapsetextAll + '</a>' ); $that.find( '.it-collapsible-group-toogle:first' ).append( $tooglelink ).click( function( event ) { if( text === expandtextAll ) { text = collapsetextAll; $that.find( '.it-collapsible-toggle-collapsed:not(".it-collapsible-group-toogle-all")' ).click(); } else { text = expandtextAll; $that.find( '.it-collapsible-toggle-expanded:not(".it-collapsible-group-toogle-all")' ).click(); } $tooglelink.text( text ); // Toggles collapsible and togglelink class and updates text label and group icon $tooglelink.toggleClass( 'it-collapsible-toggle-collapsed' ); return false; } ); } ); }; var newBeKindToIE = function( $ ) { var ieVersion = $.client.profile().versionBase; // gestion des listes horizontalisées // remove bullet from last list items in IE 8 7 6 if ( ieVersion < 9 ) { $( '#content .navboxnew_inline' ).find( 'li:last-child' ).addClass( 'navboxnew_last' ); } // navbox for IE < 8 if ( ieVersion < 8 ) { $( '#content .navboxnew' ).removeClass( 'navboxnew' ).addClass( 'navboxnew_oldie' ); } }; if ( $.client.profile().name == 'msie' ) { $( document ).ready( newBeKindToIE ); } $( document ).ready( newCollapsible ); $( document ).ready( newAutoCollapse ); $( document ).ready( newCollapsibleKeyboard ); $( document ).ready( newCollapsibleGroup ); // Codice JavaScript: ...fine </nowiki>