Aller au contenu

MediaWiki:Gadget-osm.js

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 28 septembre 2014 à 02:43 et modifiée en dernier par Arkanosis (discuter | contributions) (Refactor, bugfix, optim…). 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.
/**
 * Intégration d'OpenStreetMap dans Wikipédia
 * (C) 2008 Magnus Manske <magnusmanske@googlemail.com>
 * (C) 2014 Arkanosis <jroquet@arkanosis.net>
 * Released under the GPL
 */
$( function() {

	function makeToggleOsm( params ) {
		return function() {
			var osm = $( '#OpenStreetMap' );

			if ( osm.length ) {
				if ( osm.css( 'display' ) === 'none' ) {
					osm.css( 'display', 'block' );
				} else {
					osm.css( 'display', 'none' );
				}
				return false;
			}

			var screenWidth = MoveResizeAbsolute_GetScreenWidth();
			var screenHeight = MoveResizeAbsolute_GetScreenHeight();

			var div = $( '<div>' );
			div.attr( 'id', 'OpenStreetMap' );
			div.css( {
				position : 'absolute',
				zIndex : 5000,
				top : ( screenHeight * 10 / 100 ) + 'px',
				left : ( screenWidth * 15 / 100 ) + 'px',
				width : '70%',
				height : ( screenHeight * 80 / 100 ) + 'px',
				border : '2px solid black',
				backgroundColor : 'white',
				overflow : 'hidden'
			} );

			var moveArea = $( '<div>' );
			moveArea.css( {
				position: 'relative',
				top: '0',
				width: '100%',
				height: '50px'
			} );
			moveArea.attr( 'title', 'Cliquer et glisser pour déplacer la carte' );

			var closeLink = $( '<a>' );
			closeLink.css( {
				'float': 'right',
				margin: '10px'
			} );
			closeLink.text( 'Masquer' );
			closeLink.attr( {
				'href': '#',
				'title': 'Masquer la carte'
			} );
			closeLink.click( function() {
				div.css( 'display', 'none' );
				return false;
			} );
			moveArea.append( closeLink );

			var url = '//tools.wmflabs.org/wiwosm/osm-on-ol/kml-on-ol.php'
				+ '?lang=' + mw.config.get( 'wgPageContentLanguage' )
				+ '&uselang=' + mw.util.rawurlencode( mw.config.get( 'wgUserLanguage' ) )
				+ '&params=' + params
				+ '&title=' + mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) );

			var iframe = $( '<iframe>' );
			iframe.css( {
				'width': '100%',
				'height': ( ( screenHeight * 80 / 100 ) - 100 ) + 'px',
				'clear': 'both'
			} );
			iframe.attr( 'src', url );

			var resizeArea = $( '<div>' );
			resizeArea.css( {
				position: 'relative',
				top: '0',
				width: '100%',
				height: '50px'
			} );
			resizeArea.attr( 'title', 'Cliquer et glisser pour redimensionner la carte' );

			div.append( moveArea );
			div.append( iframe );
			div.append( resizeArea );

			$( 'body' ).append( div );

			MoveResizeAbsolute_AddMoveArea( moveArea.get(), [ div.get() ] );
			MoveResizeAbsolute_AddResizeArea( resizeArea.get(), [ div.get(), iframe.get() ], [ 150, 150 ], [ 200, 100 ] );

			return false;
		};
	}

	var c = $( '#coordinates-title' );
	if ( !c.length ) {
		return;
	}

	var params = '';
        $.each( c.find( 'a' ), function( _, a ) {
		if ( a.href.match( /geohack/) &&
		     !a.href.match( /(skyhack|_globe:(?!earth))/) ) {
		  params = a.href.split( 'params=' )[ 1 ];
		  return false;
		}
	} );
	if ( params === '' ) {
		return;
	}

	var a = $( '<a>' );
	a.attr( {
		'id': 'coordinates_osm',
		'href': '#',
		'title': 'Afficher / Masquer la carte',
		'class': 'noprint osm-icon-coordinates'
	} );
	a.click( makeToggleOsm( params ) );
	var img = $( '<img>' );
	img.attr( {
		'src': '/media/wikipedia/commons/thumb/c/c9/OpenStreetMapLogo.png/17px-OpenStreetMapLogo.png',
		'width': '17px',
		'height': '17px',
		'alt': 'OSM'
	} );
	a.append( img );
	a.append( ' carte' );
	c.append( a );
} );