MediaWiki:Common.js : Différence entre versions

De La Grande Bibliotheque de Tamriel
Aller à : navigation, rechercher
 
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 1 : Ligne 1 :
/*
 
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>";
 
    })
 
})
 
 
 
/*
 
/*
 
  * Use Gadgets whenever possible to minimize loading for all users for every page.
 
  * 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.
 
  * 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 );
  
 
/**
 
/**
Ligne 30 : Ligne 78 :
  
 
function BoiteDeroulante_toggle(NavToggle){
 
function BoiteDeroulante_toggle(NavToggle){
var NavFrame = NavToggle.parentNode;
+
    var NavFrame = NavToggle.parentNode;
  
 
var caption = [];
 
var caption = [];
Ligne 39 : Ligne 87 :
  
 
if ( NavToggle.textContent === caption[1] ) {
 
if ( NavToggle.textContent === caption[1] ) {
NavToggle.textContent = caption[0];
+
        NavToggle.textContent = caption[0];
 
$NavContent.hide();
 
$NavContent.hide();
 
} else {
 
} else {
Ligne 89 : Ligne 137 :
 
}
 
}
 
} )
 
} )
.css( 'cursor', 'pointer' );
+
    .css( 'cursor', 'pointer' );
 
}
 
}
  
Ligne 97 : Ligne 145 :
 
* FIN : Boîtes déroulantes
 
* FIN : Boîtes déroulantes
 
*/
 
*/
 
// Imported scripts
 
importScript('MediaWiki:Common.js/Slideshows.js');
 
  
 
/**
 
/**
Ligne 119 : Ligne 164 :
 
}
 
}
  
 
+
/*
/**
+
Bilingual links
* Utilisation du modèle Modèle:Animation
+
Functions through the DoubleWiki extension.
*/
+
Author: wikisource:fr:ThomasV, jQuery version by wikipedia:en:GreenReaper
 
+
*/
var Diaporama = {};
+
$(function(){
Diaporama.Params = {};
+
    var doc_url = document.URL;
Diaporama.Fonctions = {};
+
    // iterate over all interlanguage links
 
+
    $('.interlanguage-link>a[hreflang]').each(function() {
Diaporama.Params.DiaporamaIndex = 0;
+
      var lang = this.getAttribute("hreflang");
Diaporama.Params.ImageDelay = 1;
+
      var qm = doc_url.indexOf( doc_url.indexOf('?title=') != -1 ? '&match=' : '?' );
Diaporama.Params.Paused = [];
+
      var url = doc_url+"?match="+lang;
Diaporama.Params.Visible = [];
+
      if( qm != -1 ) url = doc_url.substring(0,qm)+"?match="+lang;
Diaporama.Params.Length = [];
+
      this.outerHTML += "<a href='"+url+"'> ⇔</a>";
Diaporama.Params.Delay = [];
+
    })
Diaporama.Params.Timeout = [];
+
})
 
 
Diaporama.Fonctions.Init = function(node){
 
if (!node) {
 
node = document;
 
}
 
var Diaporamas = $( node ).find( 'div.diaporama' ).get();
 
for (var a=0, l=Diaporamas.length; a<l; a++) {
 
Diaporama.Fonctions.InitDiaporama(Diaporamas[a]);
 
}
 
};
 
Diaporama.Fonctions.InitDiaporama = function(DiaporamaDiv){
 
var index = Diaporama.Params.DiaporamaIndex;
 
Diaporama.Params.DiaporamaIndex++;
 
DiaporamaDiv.id = "Diaporama_"+index;
 
var DiaporamaFileContainer = $( DiaporamaDiv ).find( 'div.diaporamaFiles' )[0];
 
var DiaporamaControl = $( DiaporamaDiv ).find( 'div.diaporamaControl' )[0];
 
if (!DiaporamaFileContainer || !DiaporamaControl) {
 
return;
 
}
 
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
 
var width;
 
var firstTumbinner = $( DiaporamaFileContainer ).find( 'div.thumbinner' )[0];
 
if (firstTumbinner) { // force la largeur du diaporama (pour IE)
 
width = firstTumbinner.style.width.split("px").join("");
 
} else {
 
if (DiaporamaFileContainer.firstChild.firstChild) {
 
width = DiaporamaFileContainer.firstChild.firstChild.offsetWidth;
 
}
 
}
 
if (width) {
 
DiaporamaDiv.style.width = (parseInt(width)+30) + "px";
 
}
 
if (DiaporamaFiles.length<2) {
 
return;
 
}
 
Diaporama.Params.Length[index] = DiaporamaFiles.length;
 
DiaporamaFileContainer.id = "DiaporamaFileContainer_"+index;
 
DiaporamaControl.id = "DiaporamaControl_"+index;
 
Diaporama.Params.Delay[index] = Diaporama.Params.ImageDelay;
 
var DiaporamaDivClass = DiaporamaDiv.className.HTMLize();
 
var ParamDelay = DiaporamaDivClass.match(/Delay[0-9]+(\.|,)?[0-9]*/);
 
if (ParamDelay !== null) {
 
ParamDelay = parseFloat(ParamDelay[0].split("Delay").join("").split(",").join("."));
 
if (ParamDelay && ParamDelay>0) {
 
Diaporama.Params.Delay[index] = ParamDelay;
 
}
 
}
 
Diaporama.Fonctions.ShowThisDiapo(index, 0);
 
var ControlLinks = DiaporamaControl.getElementsByTagName("a");
 
ControlLinks[0].firstChild.id = "DiaporamaPlay"+index;
 
ControlLinks[0].href = "javascript:Diaporama.Fonctions.Play("+index+");";
 
ControlLinks[1].firstChild.id = "DiaporamaPause"+index;
 
ControlLinks[1].href = "javascript:Diaporama.Fonctions.Pause("+index+");";
 
ControlLinks[2].firstChild.id = "DiaporamaStop"+index;
 
ControlLinks[2].href = "javascript:Diaporama.Fonctions.Stop("+index+");";
 
ControlLinks[3].firstChild.id = "DiaporamaLast"+index;
 
ControlLinks[3].href = "javascript:Diaporama.Fonctions.ToggleDiapo("+index+",-1);";
 
ControlLinks[4].firstChild.id = "DiaporamaNext"+index;
 
ControlLinks[4].href = "javascript:Diaporama.Fonctions.ToggleDiapo("+index+", 1);";
 
ControlLinks[5].parentNode.appendChild(Diaporama.Fonctions.CreateSelect(index, ControlLinks[5].title));
 
ControlLinks[5].parentNode.removeChild(ControlLinks[5]);
 
for (var e=0, t=ControlLinks.length; e<t; e++) {
 
ControlLinks[e].onmousedown = function(){Diaporama.Fonctions.Onclick(this);};
 
ControlLinks[e].onmouseup = function(){Diaporama.Fonctions.Offclick(this, index);};
 
ControlLinks[e].firstChild.style.backgroundColor = "white";
 
ControlLinks[e].onmouseover = function(){ this.focus(); };
 
}
 
DiaporamaControl.style.display = "block";
 
Diaporama.Fonctions.Pause(index);
 
};
 
 
 
Diaporama.Fonctions.Play = function(index){
 
if (Diaporama.Params.Paused[index] === false) {
 
return;
 
}
 
Diaporama.Params.Paused[index] = false;
 
clearTimeout(Diaporama.Params.Timeout[index]);
 
Diaporama.Params.Timeout[index] = setTimeout("Diaporama.Fonctions.ToggleDiapo("+index+",1);", Diaporama.Params.Delay[index]*1000);
 
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
 
ButtonPlay.style.backgroundColor = "silver";
 
var ButtonPause = document.getElementById("DiaporamaPause"+index);
 
ButtonPause.style.backgroundColor = "white";
 
var ButtonStop = document.getElementById("DiaporamaStop"+index);
 
ButtonStop.style.backgroundColor = "white";
 
};
 
 
 
Diaporama.Fonctions.Pause = function(index){
 
Diaporama.Params.Paused[index] = true;
 
clearTimeout(Diaporama.Params.Timeout[index]);
 
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
 
ButtonPlay.style.backgroundColor = "white";
 
var ButtonPause = document.getElementById("DiaporamaPause"+index);
 
ButtonPause.style.backgroundColor = "silver";
 
var ButtonStop = document.getElementById("DiaporamaStop"+index);
 
ButtonStop.style.backgroundColor = "white";
 
};
 
 
 
Diaporama.Fonctions.Stop = function(index){
 
Diaporama.Params.Paused[index] = true;
 
clearTimeout(Diaporama.Params.Timeout[index]);
 
Diaporama.Fonctions.ShowThisDiapo(index, 0);
 
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
 
ButtonPlay.style.backgroundColor = "white";
 
var ButtonPause = document.getElementById("DiaporamaPause"+index);
 
ButtonPause.style.backgroundColor = "white";
 
var ButtonStop = document.getElementById("DiaporamaStop"+index);
 
ButtonStop.style.backgroundColor = "silver";
 
};
 
 
 
Diaporama.Fonctions.ToggleDiapo = function(index, diff){
 
clearTimeout(Diaporama.Params.Timeout[index]);
 
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
 
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
 
var VisibleIndex = Diaporama.Params.Visible[index];
 
var NextDiaporamaIndex = (VisibleIndex+diff);
 
if (NextDiaporamaIndex === DiaporamaFiles.length || NextDiaporamaIndex < 0) {
 
var DiaporamaDiv = document.getElementById("Diaporama_"+index);
 
if ( diff < 0 || ! $( DiaporamaDiv ).hasClass( 'AutoLoop' ) ) {
 
return;
 
}
 
NextDiaporamaIndex = 0;
 
}
 
Diaporama.Fonctions.ShowThisDiapo(index, NextDiaporamaIndex);
 
};
 
 
 
Diaporama.Fonctions.ShowThisDiapo = function(index, Value){
 
clearTimeout(Diaporama.Params.Timeout[index]);
 
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
 
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
 
for (var x=0, z=DiaporamaFiles.length; x<z; x++) {
 
if (x !== Value) {
 
DiaporamaFiles[x].style.display = "none";
 
} else {
 
DiaporamaFiles[x].style.display = "block";
 
}
 
}
 
Diaporama.Params.Visible[index] = Value;
 
Diaporama.Fonctions.UpdateBar(index);
 
Diaporama.Fonctions.UpdateSelect(index);
 
if (!Diaporama.Params.Paused[index]) {
 
var multipl = 1;
 
if (Value === (Diaporama.Params.Length[index]-1)) {
 
multipl = 3;
 
}
 
Diaporama.Params.Timeout[index] = setTimeout("Diaporama.Fonctions.ToggleDiapo("+index+",1);", Diaporama.Params.Delay[index]*1000*multipl);
 
}
 
};
 
 
 
Diaporama.Fonctions.CreateSelect = function(index, Title) {
 
var s, Opt;
 
var Total = Diaporama.Params.Length[index];
 
var Select = document.createElement('select');
 
Select.id = "DiaporamaSelect"+index;
 
Select.title = Title;
 
for ( s=0; s<Total; s++ ) {
 
Opt = document.createElement('option');
 
if (s === 0) {
 
Opt.selected = "selected";
 
}
 
Opt.text = (s+1)+"/"+Total;
 
Opt.innerHTML = (s+1)+"/"+Total;
 
Opt.value = s;
 
Select.appendChild(Opt);
 
}
 
Select.onchange = function(){ Diaporama.Fonctions.SelectDiapo(Diaporama.Fonctions.getIndex(this)); };
 
Select.onmouseover = function(){ this.focus(); };
 
return Select;
 
};
 
 
 
Diaporama.Fonctions.SelectDiapo = function(index){
 
var Select = document.getElementById("DiaporamaSelect"+index);
 
if (!Select) {
 
return;
 
}
 
var Opts = Select.getElementsByTagName('option');
 
for (var o=0, p=Opts.length; o<p; o++) {
 
if (Opts[o].selected) {
 
var Value = parseInt(Opts[o].value);
 
return Diaporama.Fonctions.ShowThisDiapo(index, Value);
 
}
 
}
 
};
 
 
 
Diaporama.Fonctions.UpdateSelect = function(index){
 
var Select = document.getElementById("DiaporamaSelect"+index);
 
if (!Select) {
 
return;
 
}
 
var Opts = Select.getElementsByTagName('option');
 
for (var o=0, p=Opts.length; o<p; o++){
 
if (o === Diaporama.Params.Visible[index]) {
 
Opts[o].selected = "selected";
 
} else {
 
Opts[o].selected = false;
 
}
 
}
 
};
 
 
 
Diaporama.Fonctions.UpdateBar = function(index){
 
var Percent = (100/(Diaporama.Params.Length[index]-1)) * Diaporama.Params.Visible[index];
 
if (Percent>100) {
 
Percent = 100;
 
}
 
var DiaporamaControl = document.getElementById("DiaporamaControl_"+index);
 
var DiaporamaScrollBar = $( DiaporamaControl ).find( 'div.ScrollBar' )[0];
 
DiaporamaScrollBar.style.width = Percent + "%";
 
};
 
 
 
Diaporama.Fonctions.Onclick = function(Link){
 
var Image = Link.getElementsByTagName('img')[0];
 
Image.style.backgroundColor = "gray";
 
};
 
 
 
Diaporama.Fonctions.Offclick = function(Link, index){
 
var Span = Link.parentNode;
 
var Image = Link.getElementsByTagName('img')[0];
 
var DiapoState = Diaporama.Params.Paused[index];
 
if ( ( $( Span ).hasClass( 'Play' ) && DiapoState === false ) || ( ( $( Span ).hasClass( 'Pause' ) || $( Span ).hasClass( 'Stop' ) ) && DiapoState === true ) ){
 
Image.style.backgroundColor = "silver";
 
} else {
 
Image.style.backgroundColor = "white";
 
}
 
};
 
 
 
Diaporama.Fonctions.getIndex = function(Element){
 
return parseInt(Element.id.replace(/[^0-9]/g, ""));
 
};
 
 
 
$( function () {
 
Diaporama.Fonctions.Init();
 
} );
 
 
 
// DO NOT ADD CODE BELOW THIS LINE
 
});
 

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>";
    })
})