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 22 novembre 2014 à 15:26 et modifiée en dernier par Arkanosis (discuter | contributions) (Utilisation de l'id #coordinates plutôt que de la classe .coordinates-title, car cette dernière est ajoutée par un script qui peut n'avoir pas encore été exécuté). 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() {

	if ( $( '#coordinates_osm' ).length ) {
		return;
	}

	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 $div = $( '<div>' );
			$div.attr( 'id', 'OpenStreetMap' );
			$div.css( {
				position : 'absolute',
				zIndex : 5000,
				top: '10%',
				left: '15%',
				width : '70%',
				height : '80%',
				border : '2px solid black',
				backgroundColor : 'white',
				overflow : 'hidden',
				cursor: 'move'
			} );
			$div.attr( 'title', 'Cliquer et glisser pour déplacer la carte' );

			var $topArea = $( '<div>' );
			$topArea.css( {
				position: 'relative',
				top: '0',
				width: '100%',
				height: '50px'
			} );

			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;
			} );
			$topArea.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': '100%',
				'clear': 'both'
			} );
			$iframe.attr( 'src', url );

			$div.append( $topArea );
			$div.append( $iframe );

			$div.draggable();
			$div.resizable( {
				minWidth: 150,
				minHeight: 200
			} );

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

			return false;
		};
	}

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

	var params = '';
        $.each( $coordinates.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' );
	$coordinates.append( $a );
} );