Aller au contenu

MediaWiki:Mobile.js

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 16 septembre 2020 à 03:59 et modifiée en dernier par Jon (WMF) (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * Le Javascript placé ici affectera tous les utilisateurs du site mobile.
 *
 * ATTENTION : Avant de modifier cette page, veuillez tester vos changements avec votre propre
 * minerva.js. Une erreur sur cette page peut faire bugger le site entier (et gêner l'ensemble des
 * visiteurs), même plusieurs heures après la modification !
 *
 * <nowiki> /!\ Ne pas retirer cette balise
 */


/****************************************/
/* Applications pour l'ensemble du site */
/****************************************/

/**
 * Réécriture des titres
 *
 * Fonction utilisée par [[Modèle:Titre incorrect]]
 *
 * La fonction cherche un bandeau de la forme
 * <div id="RealTitleBanner">
 *   <span id="RealTitle">titre</span>
 * </div>
 *
 * Un élément comportant id="DisableRealTitle" désactive la fonction
 */
function rewritePageTitle( $ ) {
	var $realTitle, titleText, $h1,
		$realTitleBanner = $( '#RealTitleBanner' );
	if ( $realTitleBanner.length && !$( '#DisableRealTitle' ).length ) {
		$realTitle = $( '#RealTitle' );
		$h1 = $( 'h1:first' );
		if ( $realTitle.length && $h1.length ) {
			titleText = $realTitle.html();
			if ( titleText === '' ) {
				$h1.hide();
			} else {
				$h1.html( titleText );
				if ( mw.config.get('wgAction') == 'view' && $realTitle.children().length === 0 ) {
					document.title = $realTitle.text() + " — Wikipédia";
				}
			}
			$realTitleBanner.hide();
			$( '<p>' ).css( 'font-size', '80%' )
				.html( 'Titre à utiliser pour créer un lien interne : <b>' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '</b>' )
				.insertAfter( $h1 );
		}
	}
}
$( rewritePageTitle );


/**
 * Script pour alterner entre plusieurs cartes de géolocalisation
 */

function GeoBox_Init($content) {
	$content.find( 'div.img_toogle' ).each( function ( i, Container ) {
		Container.id = 'img_toogle_' + i;
		var Boxes = $( Container ).find( '.geobox' );
		if (Boxes.length < 2) {
			return;
		}
		var ToggleLinksDiv = document.createElement('ul');
		ToggleLinksDiv.id = 'geoboxToggleLinks_' + i;
		Boxes.each( function ( a, ThisBox ) {
			ThisBox.id = 'geobox_' + i + '_' + a;
			// C'est possible qu'il n'y ait pas d'image (par exemple https://fr.m.wikipedia.org/wiki/%C3%8Ele-de-France?oldid=157053815#Situation)
			// Le problème est causé par un système de lazy-loading des images ("image-lazy-loaded")
			var ThisAlt;
			var img = ThisBox.getElementsByTagName('img')[0];
			if (img) {
				ThisAlt = img.alt;
			} else {
				var placeholder = ThisBox.getElementsByClassName('lazy-image-placeholder')[0];
				if (placeholder) {
					ThisAlt = placeholder.dataset.alt;
				}
			}
			if (!ThisAlt) {
				ThisAlt = 'erreur : description non trouvée';
			}
			var toggle = document.createElement('a');
			toggle.id = 'geoboxToggle_' + i + '_' + a;
			toggle.textContent = ThisAlt;
			toggle.href = 'javascript:';
			toggle.onclick = function (e) {
				e.preventDefault();
				GeoBox_Toggle(this);
				// rustine rapide pour forcer le chargement de l'image, si c'était un "lazy-image-placeholder"
				$(window).scroll();
			};
			var Li = document.createElement('li');
			Li.appendChild(toggle);
			ToggleLinksDiv.appendChild(Li);
			if (a === (Boxes.length - 1)) {
				toggle.style.color = '#888';
				toggle.style.pointerEvents = 'none';
			} else {
				ThisBox.style.display = 'none';
			}
		} );
		Container.appendChild(ToggleLinksDiv);
	} );
}

function GeoBox_Toggle(link) {
	var ImgToggleIndex = link.id.replace('geoboxToggle_', '').replace(/_.*/g, '');
	var GeoBoxIndex = link.id.replace(/.*_/g, '');
	var ImageToggle = document.getElementById('img_toogle_' + ImgToggleIndex);
	var Links = document.getElementById('geoboxToggleLinks_' + ImgToggleIndex);
	var Geobox = document.getElementById('geobox_' + ImgToggleIndex + '_' + GeoBoxIndex);
	var Link = document.getElementById('geoboxToggle_' + ImgToggleIndex + '_' + GeoBoxIndex);
	if ( !ImageToggle || !Links || !Geobox || !Link ) {
		return;
	}
	$( ImageToggle ).find( '.geobox' ).each( function ( _, ThisgeoBox ) {
		if (ThisgeoBox.id === Geobox.id) {
			ThisgeoBox.style.display = '';
		} else {
			ThisgeoBox.style.display = 'none';
		}
	} );
	$( Links ).find( 'a' ).each( function ( _, thisToggleLink ) {
		if (thisToggleLink.id === Link.id) {
			thisToggleLink.style.color = '#888';
			thisToggleLink.style.pointerEvents = 'none';
		} else {
			thisToggleLink.style.color = '';
			thisToggleLink.style.pointerEvents = '';
		}
	} );
}

mw.hook( 'wikipage.content' ).add( GeoBox_Init );

// Functions used commonly in global scripts.
// @todo: it might be a good idea to make these use mw.notify users there is a problem
function obtenir() {}
/* </nowiki> */