MediaWiki:Common.js : Différence entre versions
(9 révisions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | + | /* | |
− | + | * Use Gadgets whenever possible to minimize loading for all users for every page. | |
− | + | * Wait for mediawiki.util to be ready because some things assume its availability. | |
− | + | */ | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
/** | /** | ||
* Boîtes déroulantes | * Boîtes déroulantes | ||
− | * | + | * |
+ | * Pour [[Modèle:Méta palette de navigation]] | ||
*/ | */ | ||
− | var | + | var Palette_Derouler = '[afficher]'; |
− | var | + | var Palette_Enrouler = '[masquer]'; |
− | var | + | |
+ | var Palette_max = 1; | ||
+ | |||
+ | function Palette_toggle( $table ) { | ||
+ | $table.find( 'tr:not(:first)' ).toggleClass( 'navboxHidden' ); | ||
+ | } | ||
+ | |||
+ | function Palette( $content ) { | ||
+ | |||
+ | var $tables = $content.find( 'table.collapsible' ); | ||
+ | var groups = {}; | ||
+ | |||
+ | $tables.each( function( _, table ) { | ||
+ | var group = table.dataset.autocollapseGroup || '__default__'; | ||
+ | groups[group] = ( groups[group] || 0 ) + 1; | ||
+ | } ); | ||
+ | |||
+ | $tables.each( function( _, table ) { | ||
+ | var $table = $( table ); | ||
+ | |||
+ | var group = table.dataset.autocollapseGroup || '__default__'; | ||
+ | var autoCollapse = groups[group] > Palette_max; | ||
+ | var collapsed = $table.hasClass( 'collapsed' ) || ( autoCollapse && $table.hasClass( 'autocollapse' ) ); | ||
− | + | // le modèle dispose d'une classe "navbox-title", | |
− | + | // sauf que les palettes "inlinées" (e.g. « {| class="navbox collapsible collapsed" ») n'ont pas cette classe | |
− | + | $table.find( 'tr:first th:first' ).prepend( | |
+ | $( '<span class="navboxToggle">\u00a0</span>' ).append( | ||
+ | $( '<a href="javascript:">' + (collapsed ? Palette_Derouler : Palette_Enrouler) + '</a>' ).click( function ( e ) { | ||
+ | e.preventDefault(); | ||
+ | if ( this.textContent === Palette_Enrouler ) { | ||
+ | this.textContent = Palette_Derouler; | ||
+ | } else { | ||
+ | this.textContent = Palette_Enrouler; | ||
+ | } | ||
+ | Palette_toggle( $table ); | ||
+ | } ) | ||
+ | ) | ||
+ | ); | ||
+ | if ( collapsed ) { | ||
+ | Palette_toggle( $table ); | ||
+ | } | ||
+ | } ); | ||
− | + | // permet de dérouler/enrouler les palettes en cliquant n'importe où sur l'entête | |
− | + | // (utilisation de la classe "navbox-title", comme ça seules les vraies palettes utilisant le modèle sont ciblées) | |
− | + | $content.find( '.navbox-title' ) | |
+ | .click( function ( e ) { | ||
+ | if ( $( e.target ).closest( 'a' ).length ) { | ||
+ | return; | ||
+ | } | ||
+ | $( this ).find( '.navboxToggle a' ).click(); | ||
+ | } ) | ||
+ | .css( 'cursor', 'pointer' ); | ||
+ | } | ||
+ | mw.hook( 'wikipage.content' ).add( Palette ); | ||
− | + | /** | |
− | + | * Boîtes déroulantes | |
+ | * Source : https://en.wikipedia.org/wiki/MediaWiki:Common.js | ||
+ | */ | ||
− | + | var BoiteDeroulante_Derouler = '[afficher]'; | |
− | + | var BoiteDeroulante_Enrouler = '[masquer]'; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | function | + | function BoiteDeroulante_toggle(NavToggle){ |
− | var | + | var NavFrame = NavToggle.parentNode; |
− | |||
− | |||
− | |||
− | + | var caption = []; | |
− | + | caption[0] = NavFrame.dataset.boiteDeroulanteDerouler; | |
− | + | caption[1] = NavFrame.dataset.boiteDeroulanteEnrouler; | |
− | |||
− | + | var $NavContent = $(NavFrame).find('.NavContent').first(); | |
− | |||
− | + | if ( NavToggle.textContent === caption[1] ) { | |
− | + | NavToggle.textContent = caption[0]; | |
− | + | $NavContent.hide(); | |
− | + | } else { | |
− | + | NavToggle.textContent = caption[1]; | |
+ | $NavContent.show(); | ||
+ | } | ||
+ | } | ||
− | + | function BoiteDeroulante( $content ) { | |
− | |||
− | + | $content.find( '.NavFrame' ).each( function ( _, NavFrame ) { | |
− | + | var CustomTexts, Derouler, Enrouler, NavToggle; | |
− | |||
− | + | if (NavFrame.title && NavFrame.title.indexOf("/") !== -1) { | |
+ | CustomTexts = NavFrame.title.split("/"); | ||
+ | Derouler = CustomTexts[0]; | ||
+ | Enrouler = CustomTexts[1]; | ||
+ | } else { | ||
+ | Derouler = BoiteDeroulante_Derouler; | ||
+ | Enrouler = BoiteDeroulante_Enrouler; | ||
+ | } | ||
+ | NavFrame.title = ''; | ||
+ | NavFrame.dataset.boiteDeroulanteDerouler = Derouler; | ||
+ | NavFrame.dataset.boiteDeroulanteEnrouler = Enrouler; | ||
− | + | NavToggle = document.createElement("a"); | |
− | + | NavToggle.className = 'NavToggle'; | |
− | + | NavToggle.href = 'javascript:'; | |
− | + | NavToggle.onclick = function (e) { | |
− | + | e.preventDefault(); | |
+ | BoiteDeroulante_toggle(e.target); | ||
+ | }; | ||
+ | NavToggle.textContent = Enrouler; | ||
− | + | NavFrame.insertBefore(NavToggle, NavFrame.firstChild); | |
− | |||
− | |||
− | + | BoiteDeroulante_toggle(NavToggle); | |
− | + | } ); | |
− | |||
− | |||
− | + | // permet de dérouler/enrouler les boîtes en cliquant n'importe où sur l'entête | |
− | + | $content.find( '.NavHead' ) | |
− | + | .click( function ( e ) { | |
− | + | if ( $( e.target ).closest( 'a' ).length ) { | |
− | + | return; | |
− | + | } | |
− | + | var toggle = $( this ).siblings( 'a.NavToggle' )[0]; | |
− | + | if ( toggle ) { | |
− | + | toggle.click(); // pas du jquery, mais du vanilla js | |
− | + | } | |
− | + | } ) | |
− | + | .css( 'cursor', 'pointer' ); | |
− | |||
− | |||
} | } | ||
− | mw.hook( 'wikipage.content' ).add( | + | mw.hook( 'wikipage.content' ).add( BoiteDeroulante ); |
+ | |||
+ | /** | ||
+ | * FIN : Boîtes déroulantes | ||
+ | */ | ||
/** | /** | ||
− | * | + | * Ajouter un bouton à la fin de la barre d'outils |
*/ | */ | ||
+ | if ( typeof addCustomButton === 'undefined' ) { | ||
+ | mw.log.deprecate( window, 'addCustomButton', function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) { | ||
+ | if ( mw.toolbar ) { | ||
+ | mw.toolbar.addButton( { | ||
+ | imageFile: imageFile.replace( /^http:(\/\/upload\.wikimedia\.org\/)/, '$1' ), | ||
+ | speedTip: speedTip, | ||
+ | tagOpen: tagOpen, | ||
+ | tagClose: tagClose, | ||
+ | sampleText: sampleText, | ||
+ | imageId: imageId | ||
+ | } ); | ||
+ | } | ||
+ | }, 'Use mw.toolbar.addButton instead.' ); | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | Bilingual links | ||
+ | Functions through the DoubleWiki extension. | ||
+ | Author: wikisource:fr:ThomasV, jQuery version by wikipedia:en:GreenReaper | ||
+ | */ | ||
+ | $(function(){ | ||
+ | var doc_url = document.URL; | ||
+ | // iterate over all interlanguage links | ||
+ | $('.interlanguage-link>a[hreflang]').each(function() { | ||
+ | var lang = this.getAttribute("hreflang"); | ||
+ | var qm = doc_url.indexOf( doc_url.indexOf('?title=') != -1 ? '&match=' : '?' ); | ||
+ | var url = doc_url+"?match="+lang; | ||
+ | if( qm != -1 ) url = doc_url.substring(0,qm)+"?match="+lang; | ||
+ | this.outerHTML += "<a href='"+url+"'> ⇔</a>"; | ||
+ | }) | ||
+ | }) |
Version actuelle datée du 28 septembre 2020 à 20:23
/* * Use Gadgets whenever possible to minimize loading for all users for every page. * Wait for mediawiki.util to be ready because some things assume its availability. */ /** * Boîtes déroulantes * * Pour [[Modèle:Méta palette de navigation]] */ var Palette_Derouler = '[afficher]'; var Palette_Enrouler = '[masquer]'; var Palette_max = 1; function Palette_toggle( $table ) { $table.find( 'tr:not(:first)' ).toggleClass( 'navboxHidden' ); } function Palette( $content ) { var $tables = $content.find( 'table.collapsible' ); var groups = {}; $tables.each( function( _, table ) { var group = table.dataset.autocollapseGroup || '__default__'; groups[group] = ( groups[group] || 0 ) + 1; } ); $tables.each( function( _, table ) { var $table = $( table ); var group = table.dataset.autocollapseGroup || '__default__'; var autoCollapse = groups[group] > Palette_max; var collapsed = $table.hasClass( 'collapsed' ) || ( autoCollapse && $table.hasClass( 'autocollapse' ) ); // le modèle dispose d'une classe "navbox-title", // sauf que les palettes "inlinées" (e.g. « {| class="navbox collapsible collapsed" ») n'ont pas cette classe $table.find( 'tr:first th:first' ).prepend( $( '<span class="navboxToggle">\u00a0</span>' ).append( $( '<a href="javascript:">' + (collapsed ? Palette_Derouler : Palette_Enrouler) + '</a>' ).click( function ( e ) { e.preventDefault(); if ( this.textContent === Palette_Enrouler ) { this.textContent = Palette_Derouler; } else { this.textContent = Palette_Enrouler; } Palette_toggle( $table ); } ) ) ); if ( collapsed ) { Palette_toggle( $table ); } } ); // permet de dérouler/enrouler les palettes en cliquant n'importe où sur l'entête // (utilisation de la classe "navbox-title", comme ça seules les vraies palettes utilisant le modèle sont ciblées) $content.find( '.navbox-title' ) .click( function ( e ) { if ( $( e.target ).closest( 'a' ).length ) { return; } $( this ).find( '.navboxToggle a' ).click(); } ) .css( 'cursor', 'pointer' ); } mw.hook( 'wikipage.content' ).add( Palette ); /** * Boîtes déroulantes * Source : https://en.wikipedia.org/wiki/MediaWiki:Common.js */ var BoiteDeroulante_Derouler = '[afficher]'; var BoiteDeroulante_Enrouler = '[masquer]'; function BoiteDeroulante_toggle(NavToggle){ var NavFrame = NavToggle.parentNode; var caption = []; caption[0] = NavFrame.dataset.boiteDeroulanteDerouler; caption[1] = NavFrame.dataset.boiteDeroulanteEnrouler; var $NavContent = $(NavFrame).find('.NavContent').first(); if ( NavToggle.textContent === caption[1] ) { NavToggle.textContent = caption[0]; $NavContent.hide(); } else { NavToggle.textContent = caption[1]; $NavContent.show(); } } function BoiteDeroulante( $content ) { $content.find( '.NavFrame' ).each( function ( _, NavFrame ) { var CustomTexts, Derouler, Enrouler, NavToggle; if (NavFrame.title && NavFrame.title.indexOf("/") !== -1) { CustomTexts = NavFrame.title.split("/"); Derouler = CustomTexts[0]; Enrouler = CustomTexts[1]; } else { Derouler = BoiteDeroulante_Derouler; Enrouler = BoiteDeroulante_Enrouler; } NavFrame.title = ''; NavFrame.dataset.boiteDeroulanteDerouler = Derouler; NavFrame.dataset.boiteDeroulanteEnrouler = Enrouler; NavToggle = document.createElement("a"); NavToggle.className = 'NavToggle'; NavToggle.href = 'javascript:'; NavToggle.onclick = function (e) { e.preventDefault(); BoiteDeroulante_toggle(e.target); }; NavToggle.textContent = Enrouler; NavFrame.insertBefore(NavToggle, NavFrame.firstChild); BoiteDeroulante_toggle(NavToggle); } ); // permet de dérouler/enrouler les boîtes en cliquant n'importe où sur l'entête $content.find( '.NavHead' ) .click( function ( e ) { if ( $( e.target ).closest( 'a' ).length ) { return; } var toggle = $( this ).siblings( 'a.NavToggle' )[0]; if ( toggle ) { toggle.click(); // pas du jquery, mais du vanilla js } } ) .css( 'cursor', 'pointer' ); } mw.hook( 'wikipage.content' ).add( BoiteDeroulante ); /** * FIN : Boîtes déroulantes */ /** * Ajouter un bouton à la fin de la barre d'outils */ if ( typeof addCustomButton === 'undefined' ) { mw.log.deprecate( window, 'addCustomButton', function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) { if ( mw.toolbar ) { mw.toolbar.addButton( { imageFile: imageFile.replace( /^http:(\/\/upload\.wikimedia\.org\/)/, '$1' ), speedTip: speedTip, tagOpen: tagOpen, tagClose: tagClose, sampleText: sampleText, imageId: imageId } ); } }, 'Use mw.toolbar.addButton instead.' ); } /* Bilingual links Functions through the DoubleWiki extension. Author: wikisource:fr:ThomasV, jQuery version by wikipedia:en:GreenReaper */ $(function(){ var doc_url = document.URL; // iterate over all interlanguage links $('.interlanguage-link>a[hreflang]').each(function() { var lang = this.getAttribute("hreflang"); var qm = doc_url.indexOf( doc_url.indexOf('?title=') != -1 ? '&match=' : '?' ); var url = doc_url+"?match="+lang; if( qm != -1 ) url = doc_url.substring(0,qm)+"?match="+lang; this.outerHTML += "<a href='"+url+"'> ⇔</a>"; }) })