r61807 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r61806‎ | r61807 | r61808 >
Date:18:11, 1 February 2010
Author:yaron
Status:deferred
Tags:
Comment:
Tag for version 0.5.3
Modified paths:
  • /tags/extensions/SemanticMaps/REL_0_5_3 (added) (history)

Diff [purge]

Index: tags/extensions/SemanticMaps/REL_0_5_3/YahooMaps/SM_YahooMapsFunctions.js
@@ -0,0 +1,54 @@
 2+ /**
 3+ * Javascript functions for Yahoo! Maps functionallity in Semantic Maps
 4+ *
 5+ * @file SM_YahooMapsFunctions.js
 6+ * @ingroup SMYahooMaps
 7+ *
 8+ * @author Jeroen De Dauw
 9+ */
 10+
 11+/**
 12+ * This function holds spesific functionallity for the Yahoo! Maps form input of Semantic Maps
 13+ * TODO: Refactor as much code as possible to non specific functions
 14+ */
 15+function makeFormInputYahooMap(mapName, locationFieldName, lat, lon, zoom, type, types, controls, scrollWheelZoom, marker_lat, marker_lon, height) {
 16+ var map = createYahooMap(document.getElementById(mapName), new YGeoPoint(lat, lon), zoom, type, types, controls, scrollWheelZoom, [getYMarkerData(marker_lat, marker_lon, '', '', '')], height);
 17+
 18+ // Show a starting marker only if marker coordinates are provided
 19+ if (marker_lat != null && marker_lon != null) {
 20+ map.addOverlay(createYMarker(new YGeoPoint(marker_lat, marker_lon)));
 21+ }
 22+
 23+ // Click event handler for updating the location of the marker
 24+ YEvent.Capture(map, EventsList.MouseClick,
 25+ function(_e, point) {
 26+ var loc = new YGeoPoint(point.Lat, point.Lon)
 27+ map.removeMarkersAll();
 28+ document.getElementById(locationFieldName).value = convertLatToDMS(point.Lat)+', '+convertLngToDMS(point.Lon);
 29+ map.addMarker(loc);
 30+ map.panToLatLon(loc);
 31+ }
 32+ );
 33+
 34+ // Make the map variable available for other functions
 35+ if (!window.YMaps) window.YMaps = new Object;
 36+ eval("window.YMaps." + mapName + " = map;");
 37+}
 38+
 39+/**
 40+ * This function holds spesific functionallity for the Yahoo! Maps form input of Semantic Maps
 41+ * TODO: Refactor as much code as possible to non specific functions
 42+ */
 43+function showYAddress(address, mapName, outputElementName, notFoundFormat) {
 44+ var map = YMaps[mapName];
 45+
 46+ map.removeMarkersAll();
 47+ map.drawZoomAndCenter(address);
 48+
 49+ YEvent.Capture(map, EventsList.onEndGeoCode,
 50+ function(resultObj) {
 51+ map.addOverlay(new YMarker(resultObj.GeoPoint));
 52+ document.getElementById(outputElementName).value = convertLatToDMS(resultObj.GeoPoint.Lat) + ', ' + convertLngToDMS(resultObj.GeoPoint.Lon);
 53+ }
 54+ );
 55+}
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/YahooMaps/SM_YahooMapsFunctions.js
___________________________________________________________________
Name: svn:eol-style
156 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/YahooMaps/SM_YahooMaps.php
@@ -0,0 +1,24 @@
 2+<?php
 3+
 4+/**
 5+ * This groupe contains all Yahoo! Maps related files of the Semantic Maps extension.
 6+ *
 7+ * @defgroup SMYahooMaps Yahoo! Maps
 8+ * @ingroup SemanticMaps
 9+ */
 10+
 11+/**
 12+ * This file holds the general information for the Yahoo! Maps service.
 13+ *
 14+ * @file SM_YahooMaps.php
 15+ * @ingroup SMYahooMaps
 16+ *
 17+ * @author Jeroen De Dauw
 18+ */
 19+
 20+if( !defined( 'MEDIAWIKI' ) ) {
 21+ die( 'Not an entry point.' );
 22+}
 23+
 24+$egMapsServices['yahoomaps']['qp'] = array('class' => 'SMYahooMapsQP', 'file' => 'YahooMaps/SM_YahooMapsQP.php', 'local' => true);
 25+$egMapsServices['yahoomaps']['fi'] = array('class' => 'SMYahooMapsFormInput', 'file' => 'YahooMaps/SM_YahooMapsFormInput.php', 'local' => true);
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/YahooMaps/SM_YahooMaps.php
___________________________________________________________________
Name: svn:eol-style
126 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/YahooMaps/SM_YahooMapsQP.php
@@ -0,0 +1,92 @@
 2+<?php
 3+/**
 4+ * A query printer for maps using the Yahoo Maps API
 5+ *
 6+ * @file SM_YahooMaps.php
 7+ * @ingroup SMYahooMaps
 8+ *
 9+ * @author Jeroen De Dauw
 10+ */
 11+
 12+if( !defined( 'MEDIAWIKI' ) ) {
 13+ die( 'Not an entry point.' );
 14+}
 15+
 16+final class SMYahooMapsQP extends SMMapPrinter {
 17+
 18+ public $serviceName = MapsYahooMaps::SERVICE_NAME;
 19+
 20+ /**
 21+ * @see SMMapPrinter::setQueryPrinterSettings()
 22+ *
 23+ */
 24+ protected function setQueryPrinterSettings() {
 25+ global $egMapsYahooMapsZoom, $egMapsYahooMapsPrefix;
 26+
 27+ $this->elementNamePrefix = $egMapsYahooMapsPrefix;
 28+
 29+ $this->defaultZoom = $egMapsYahooMapsZoom;
 30+ }
 31+
 32+ /**
 33+ * @see SMMapPrinter::doMapServiceLoad()
 34+ *
 35+ */
 36+ protected function doMapServiceLoad() {
 37+ global $egYahooMapsOnThisPage;
 38+
 39+ MapsYahooMaps::addYMapDependencies($this->output);
 40+ $egYahooMapsOnThisPage++;
 41+
 42+ $this->elementNr = $egYahooMapsOnThisPage;
 43+ }
 44+
 45+ /**
 46+ * @see SMMapPrinter::addSpecificMapHTML()
 47+ *
 48+ */
 49+ protected function addSpecificMapHTML() {
 50+ global $wgJsMimeType;
 51+
 52+ $markerItems = array();
 53+
 54+ foreach ($this->m_locations as $location) {
 55+ // Create a string containing the marker JS
 56+ list($lat, $lon, $title, $label, $icon) = $location;
 57+
 58+ $title = str_replace("'", "\'", $title);
 59+ $label = str_replace("'", "\'", $label);
 60+
 61+ $markerItems[] = "getYMarkerData($lat, $lon, '$title', '$label', '$icon')";
 62+ }
 63+
 64+ $markersString = implode(',', $markerItems);
 65+
 66+ $this->output .= "
 67+ <div id='$this->mapName' style='width: {$this->width}px; height: {$this->height}px;'></div>
 68+
 69+ <script type='$wgJsMimeType'>/*<![CDATA[*/
 70+ addOnloadHook(
 71+ initializeYahooMap('$this->mapName', $this->centre_lat, $this->centre_lon, $this->zoom, $this->type, [$this->types], [$this->controls], $this->autozoom, [$markersString], $this->height)
 72+ );
 73+ /*]]>*/</script>";
 74+
 75+ }
 76+
 77+ /**
 78+ * Returns type info, descriptions and allowed values for this QP's parameters after adding the spesific ones to the list.
 79+ */
 80+ public function getParameters() {
 81+ $params = parent::getParameters();
 82+
 83+ $allowedTypes = MapsYahooMaps::getTypeNames();
 84+
 85+ $params[] = array('name' => 'controls', 'type' => 'enum-list', 'description' => wfMsg('semanticmaps_paramdesc_controls'), 'values' => MapsYahooMaps::getControlNames());
 86+ $params[] = array('name' => 'types', 'type' => 'enum-list', 'description' => wfMsg('semanticmaps_paramdesc_types'), 'values' => $allowedTypes);
 87+ $params[] = array('name' => 'type', 'type' => 'enumeration', 'description' => wfMsg('semanticmaps_paramdesc_type'), 'values' => $allowedTypes);
 88+ $params[] = array('name' => 'autozoom', 'type' => 'enumeration', 'description' => wfMsg('semanticmaps_paramdesc_autozoom'), 'values' => array('on', 'off'));
 89+
 90+ return $params;
 91+ }
 92+
 93+}
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/YahooMaps/SM_YahooMapsQP.php
___________________________________________________________________
Name: svn:eol-style
194 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/YahooMaps/SM_YahooMapsFormInput.php
@@ -0,0 +1,92 @@
 2+<?php
 3+
 4+/**
 5+* Form input hook that adds an Yahoo! Maps map format to Semantic Forms
 6+ *
 7+ * @file SM_YahooMapsFormInput.php
 8+ * @ingroup SMYahooMaps
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+final class SMYahooMapsFormInput extends SMFormInput {
 18+
 19+ public $serviceName = MapsYahooMaps::SERVICE_NAME;
 20+
 21+ /**
 22+ * @see MapsMapFeature::setMapSettings()
 23+ *
 24+ */
 25+ protected function setMapSettings() {
 26+ global $egMapsYahooMapsZoom, $egMapsYahooMapsPrefix;
 27+
 28+ $this->elementNamePrefix = $egMapsYahooMapsPrefix;
 29+ $this->showAddresFunction = 'showYAddress';
 30+
 31+ $this->earthZoom = 17;
 32+
 33+ $this->defaultZoom = $egMapsYahooMapsZoom;
 34+ }
 35+
 36+ /**
 37+ * @see MapsMapFeature::addFormDependencies()
 38+ *
 39+ */
 40+ protected function addFormDependencies() {
 41+ global $wgJsMimeType;
 42+ global $smgScriptPath, $smgYahooFormsOnThisPage, $smgStyleVersion;
 43+
 44+ MapsYahooMaps::addYMapDependencies($this->output);
 45+
 46+ if (empty($smgYahooFormsOnThisPage)) {
 47+ $smgYahooFormsOnThisPage = 0;
 48+ $this->output .= "<script type='$wgJsMimeType' src='$smgScriptPath/YahooMaps/SM_YahooMapsFunctions.js?$smgStyleVersion'></script>";
 49+ }
 50+ }
 51+
 52+ /**
 53+ * @see MapsMapFeature::doMapServiceLoad()
 54+ *
 55+ */
 56+ protected function doMapServiceLoad() {
 57+ global $egYahooMapsOnThisPage, $smgYahooFormsOnThisPage;
 58+
 59+ self::addFormDependencies();
 60+
 61+ $egYahooMapsOnThisPage++;
 62+ $smgYahooFormsOnThisPage++;
 63+
 64+ $this->elementNr = $egYahooMapsOnThisPage;
 65+ }
 66+
 67+ /**
 68+ * @see MapsMapFeature::addSpecificMapHTML()
 69+ *
 70+ */
 71+ protected function addSpecificMapHTML() {
 72+ global $wgJsMimeType;
 73+
 74+ $this->output .="
 75+ <div id='".$this->mapName."' style='width: {$this->width}px; height: {$this->height}px;'></div>
 76+
 77+ <script type='$wgJsMimeType'>/*<![CDATA[*/
 78+ addOnloadHook(makeFormInputYahooMap('$this->mapName', '$this->coordsFieldName', $this->centre_lat, $this->centre_lon, $this->zoom, $this->type, [$this->types], [$this->controls], $this->autozoom, $this->marker_lat, $this->centre_lon, $this->height));
 79+ /*]]>*/</script>";
 80+ }
 81+
 82+ /**
 83+ * @see SMFormInput::manageGeocoding()
 84+ *
 85+ */
 86+ protected function manageGeocoding() {
 87+ global $egYahooMapsKey;
 88+ $this->enableGeocoding = strlen(trim($egYahooMapsKey)) > 0;
 89+ if ($this->enableGeocoding) MapsYahooMaps::addYMapDependencies($this->output);
 90+ }
 91+
 92+
 93+}
Index: tags/extensions/SemanticMaps/REL_0_5_3/OpenLayers/SM_OpenLayersFunctions.js
@@ -0,0 +1,98 @@
 2+ /**
 3+ * Javascript functions for OpenLayers functionallity in Semantic Maps
 4+ *
 5+ * @file SM_OpenLayersFunctions.js
 6+ * @ingroup SMOpenLayers
 7+ *
 8+ * @author Jeroen De Dauw
 9+ */
 10+
 11+/**
 12+ * This function holds spesific functionallity for the Open Layers form input of Semantic Maps
 13+ */
 14+function makeFormInputOpenLayer(mapName, locationFieldName, lat, lon, zoom, marker_lat, marker_lon, layers, controls, height) {
 15+ var markers = Array();
 16+
 17+ // Show a starting marker only if marker coordinates are provided
 18+ if (marker_lat != null && marker_lon != null) {
 19+ markers.push(getOLMarkerData(marker_lon, marker_lat, '', '', ''));
 20+ }
 21+
 22+ // Click event handler for updating the location of the marker
 23+ // TODO / FIXME: This will probably cause problems when used for multiple maps on one page.
 24+ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
 25+ defaultHandlerOptions: {
 26+ 'single': true,
 27+ 'double': false,
 28+ 'pixelTolerance': 0,
 29+ 'stopSingle': false,
 30+ 'stopDouble': false
 31+ },
 32+
 33+ initialize: function(options) {
 34+ this.handlerOptions = OpenLayers.Util.extend(
 35+ {}, this.defaultHandlerOptions
 36+ );
 37+ OpenLayers.Control.prototype.initialize.apply(
 38+ this, arguments
 39+ );
 40+ this.handler = new OpenLayers.Handler.Click(
 41+ this, {
 42+ 'click': this.trigger
 43+ }, this.handlerOptions
 44+ );
 45+ },
 46+
 47+ trigger: function(e) {
 48+ var lonlat = map.getLonLatFromViewPortPx(e.xy);
 49+
 50+ replaceMarker(mapName, lonlat);
 51+
 52+ var proj = new OpenLayers.Projection("EPSG:4326");
 53+ lonlat.transform(map.getProjectionObject(), proj);
 54+
 55+ document.getElementById(locationFieldName).value = convertLatToDMS(lonlat.lat)+', '+convertLngToDMS(lonlat.lon);
 56+ }
 57+
 58+ });
 59+
 60+ var clickHanler = new OpenLayers.Control.Click();
 61+ controls.push(clickHanler);
 62+
 63+ var map = initOpenLayer(mapName, lon, lat, zoom, layers, controls, markers, height);
 64+
 65+ // Make the map variable available for other functions
 66+ if (!window.OLMaps) window.OLMaps = new Object;
 67+ eval("window.OLMaps." + mapName + " = map;");
 68+}
 69+
 70+/**
 71+ * Remove all markers from an OL map (that's in window.OLMaps), and place a new one.
 72+ *
 73+ * @param mapName Name of the map as in OLMaps[mapName].
 74+ * @param newLocation The location for the new marker.
 75+ * @return
 76+ */
 77+function replaceMarker(mapName, newLocation) {
 78+ var map = OLMaps[mapName];
 79+ var markerLayer = map.getLayer('markerLayer');
 80+
 81+ removeMarkers(markerLayer);
 82+ markerLayer.addMarker(getOLMarker(markerLayer, getOLMarkerData(newLocation.lon, newLocation.lat, '', '', ''), map.getProjectionObject()));
 83+
 84+ map.panTo(newLocation);
 85+}
 86+
 87+/**
 88+ * Removes all markers from a marker layer.
 89+ *
 90+ * @param markerLayer The layer to remove all markers from.
 91+ * @return
 92+ */
 93+function removeMarkers(markerLayer) {
 94+ var markerCollection = markerLayer.markers;
 95+
 96+ for (i in markerCollection) {
 97+ markerLayer.removeMarker(markerCollection[i]);
 98+ }
 99+}
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/OpenLayers/SM_OpenLayersFunctions.js
___________________________________________________________________
Name: svn:eol-style
1100 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/OpenLayers/SM_OpenLayers.php
@@ -0,0 +1,24 @@
 2+<?php
 3+
 4+/**
 5+ * This groupe contains all OpenLayers related files of the Semantic Maps extension.
 6+ *
 7+ * @defgroup SMOpenLayers OpenLayers
 8+ * @ingroup SemanticMaps
 9+ */
 10+
 11+/**
 12+ * This file holds the general information for the OpenLayers service.
 13+ *
 14+ * @file SM_OpenLayers.php
 15+ * @ingroup SMOpenLayers
 16+ *
 17+ * @author Jeroen De Dauw
 18+ */
 19+
 20+if( !defined( 'MEDIAWIKI' ) ) {
 21+ die( 'Not an entry point.' );
 22+}
 23+
 24+$egMapsServices['openlayers']['qp'] = array('class' => 'SMOpenLayersQP', 'file' => 'OpenLayers/SM_OpenLayersQP.php', 'local' => true);
 25+$egMapsServices['openlayers']['fi'] = array('class' => 'SMOpenLayersFormInput', 'file' => 'OpenLayers/SM_OpenLayersFormInput.php', 'local' => true);
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/OpenLayers/SM_OpenLayers.php
___________________________________________________________________
Name: svn:eol-style
126 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/OpenLayers/SM_OpenLayersQP.php
@@ -0,0 +1,87 @@
 2+<?php
 3+
 4+/**
 5+ * A query printer for maps using the Open Layers API
 6+ *
 7+ * @file SM_OpenLayersQP.php
 8+ * @ingroup SMOpenLayers
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+final class SMOpenLayersQP extends SMMapPrinter {
 18+
 19+ public $serviceName = MapsOpenLayers::SERVICE_NAME;
 20+
 21+ /**
 22+ * @see SMMapPrinter::setQueryPrinterSettings()
 23+ *
 24+ */
 25+ protected function setQueryPrinterSettings() {
 26+ global $egMapsOpenLayersZoom, $egMapsOpenLayersPrefix;
 27+
 28+ $this->elementNamePrefix = $egMapsOpenLayersPrefix;
 29+ $this->defaultZoom = $egMapsOpenLayersZoom;
 30+ }
 31+
 32+ /**
 33+ * @see SMMapPrinter::doMapServiceLoad()
 34+ *
 35+ */
 36+ protected function doMapServiceLoad() {
 37+ global $egOpenLayersOnThisPage;
 38+
 39+ MapsOpenLayers::addOLDependencies($this->output);
 40+ $egOpenLayersOnThisPage++;
 41+
 42+ $this->elementNr = $egOpenLayersOnThisPage;
 43+ }
 44+
 45+ /**
 46+ * @see SMMapPrinter::addSpecificMapHTML()
 47+ *
 48+ */
 49+ protected function addSpecificMapHTML() {
 50+ global $wgJsMimeType;
 51+
 52+ $layerItems = MapsOpenLayers::createLayersStringAndLoadDependencies($this->output, $this->layers);
 53+
 54+ $markerItems = array();
 55+
 56+ foreach ($this->m_locations as $location) {
 57+ // Create a string containing the marker JS
 58+ list($lat, $lon, $title, $label, $icon) = $location;
 59+
 60+ $title = str_replace("'", "\'", $title);
 61+ $label = str_replace("'", "\'", $label);
 62+
 63+ $markerItems[] = "getOLMarkerData($lon, $lat, '$title', '$label', '$icon')";
 64+ }
 65+
 66+ $markersString = implode(',', $markerItems);
 67+
 68+ $this->output .= "<div id='$this->mapName' style='width: {$this->width}px; height: {$this->height}px; background-color: #cccccc;'></div>
 69+ <script type='$wgJsMimeType'> /*<![CDATA[*/
 70+ addOnloadHook(
 71+ initOpenLayer('$this->mapName', $this->centre_lon, $this->centre_lat, $this->zoom, [$layerItems], [$this->controls], [$markersString], $this->height)
 72+ );
 73+ /*]]>*/ </script>";
 74+ }
 75+
 76+ /**
 77+ * Returns type info, descriptions and allowed values for this QP's parameters after adding the spesific ones to the list.
 78+ */
 79+ public function getParameters() {
 80+ $params = parent::getParameters();
 81+
 82+ $params[] = array('name' => 'controls', 'type' => 'enum-list', 'description' => wfMsg('semanticmaps_paramdesc_controls'), 'values' => MapsOpenLayers::getControlNames());
 83+ $params[] = array('name' => 'layers', 'type' => 'enum-list', 'description' => wfMsg('semanticmaps_paramdesc_layers'), 'values' => MapsOpenLayers::getLayerNames());
 84+
 85+ return $params;
 86+ }
 87+
 88+}
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/OpenLayers/SM_OpenLayersQP.php
___________________________________________________________________
Name: svn:eol-style
189 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/OpenLayers/SM_OpenLayersFormInput.php
@@ -0,0 +1,90 @@
 2+<?php
 3+
 4+/**
 5+ * Form input hook that adds an Open Layers map format to Semantic Forms
 6+ *
 7+ * @file SM_OpenLayersFormInput.php
 8+ * @ingroup SMOpenLayers
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+final class SMOpenLayersFormInput extends SMFormInput {
 18+
 19+ public $serviceName = MapsOpenLayers::SERVICE_NAME;
 20+
 21+ /**
 22+ * @see MapsMapFeature::setMapSettings()
 23+ *
 24+ */
 25+ protected function setMapSettings() {
 26+ global $egMapsOpenLayersZoom, $egMapsOpenLayersPrefix;
 27+
 28+ $this->elementNamePrefix = $egMapsOpenLayersPrefix;
 29+
 30+ $this->earthZoom = 1;
 31+
 32+ $this->defaultZoom = $egMapsOpenLayersZoom;
 33+ }
 34+
 35+ /**
 36+ * @see MapsMapFeature::addFormDependencies()
 37+ *
 38+ */
 39+ protected function addFormDependencies() {
 40+ global $wgJsMimeType;
 41+ global $smgScriptPath, $smgOLFormsOnThisPage, $smgStyleVersion;
 42+
 43+ MapsOpenLayers::addOLDependencies($this->output);
 44+
 45+ if (empty($smgOLFormsOnThisPage)) {
 46+ $smgOLFormsOnThisPage = 0;
 47+ $this->output .= "<script type='$wgJsMimeType' src='$smgScriptPath/OpenLayers/SM_OpenLayersFunctions.js?$smgStyleVersion'></script>";
 48+ }
 49+ }
 50+
 51+ /**
 52+ * @see MapsMapFeature::doMapServiceLoad()
 53+ *
 54+ */
 55+ protected function doMapServiceLoad() {
 56+ global $egOpenLayersOnThisPage, $smgOLFormsOnThisPage;
 57+
 58+ self::addFormDependencies();
 59+
 60+ $egOpenLayersOnThisPage++;
 61+ $smgOLFormsOnThisPage++;
 62+
 63+ $this->elementNr = $egOpenLayersOnThisPage;
 64+ }
 65+
 66+ /**
 67+ * @see MapsMapFeature::addSpecificMapHTML()
 68+ *
 69+ */
 70+ protected function addSpecificMapHTML() {
 71+ global $wgJsMimeType;
 72+
 73+ $layerItems = MapsOpenLayers::createLayersStringAndLoadDependencies($this->output, $this->layers);
 74+
 75+ $this->output .="
 76+ <div id='".$this->mapName."' style='width: {$this->width}px; height: {$this->height}px; background-color: #cccccc;'></div>
 77+
 78+ <script type='$wgJsMimeType'>/*<![CDATA[*/
 79+ addOnloadHook(makeFormInputOpenLayer('".$this->mapName."', '".$this->coordsFieldName."', ".$this->centre_lat.", ".$this->centre_lon.", ".$this->zoom.", ".$this->marker_lat.", ".$this->marker_lon.", [$layerItems], [$this->controls], $this->height));
 80+ /*]]>*/</script>";
 81+ }
 82+
 83+ /**
 84+ * @see SMFormInput::manageGeocoding()
 85+ *
 86+ */
 87+ protected function manageGeocoding() {
 88+ $this->enableGeocoding = false;
 89+ }
 90+
 91+}
Index: tags/extensions/SemanticMaps/REL_0_5_3/SM_Settings.php
@@ -0,0 +1,61 @@
 2+<?php
 3+
 4+/**
 5+ * File defining the settings for the Semantic Maps extension
 6+ * More info can be found at http://www.mediawiki.org/wiki/Extension:Semantic_Maps#Settings
 7+ *
 8+ * NOTICE:
 9+ * Changing one of these settings can be done by copieng or cutting it,
 10+ * and placing it in LocalSettings.php, AFTER the inclusion of Semantic Maps.
 11+ *
 12+ * @file SM_Settings.php
 13+ * @ingroup SemanticMaps
 14+ *
 15+ * @author Jeroen De Dauw
 16+ */
 17+
 18+if( !defined( 'MEDIAWIKI' ) ) {
 19+ die( 'Not an entry point.' );
 20+}
 21+
 22+
 23+
 24+
 25+# Map features configuration
 26+# (named) Array of String. This array contains the available features for Maps.
 27+# The array element name contains an abbriviation, used for code references,
 28+# and in the service data arrays, the value is the human readible version for displaying purpouses.
 29+$egMapsAvailableFeatures['qp'] = array(
 30+ 'name' => 'Query Printer',
 31+ 'class' => 'SMQueryPrinters',
 32+ 'file' => 'SemanticMaps/QueryPrinters/SM_QueryPrinters.php'
 33+ );
 34+
 35+$egMapsAvailableFeatures['fi'] = array(
 36+ 'name' => 'Form input',
 37+ 'class' => 'SMFormInputs',
 38+ 'file' => 'SemanticMaps/FormInputs/SM_FormInputs.php'
 39+ );
 40+
 41+
 42+
 43+
 44+
 45+# Mapping services configuration
 46+
 47+# Include the mapping services that should be loaded into Semantic Maps.
 48+# Commenting or removing a mapping service will cause Semantic Maps to completely ignore it, and so improve performance.
 49+include_once $smgIP . '/GoogleMaps/SM_GoogleMaps.php'; // Google Maps
 50+include_once $smgIP . '/OpenLayers/SM_OpenLayers.php'; // OpenLayers
 51+include_once $smgIP . '/YahooMaps/SM_YahooMaps.php'; // Yahoo! Maps
 52+include_once $smgIP . '/OpenStreetMap/SM_OSM.php'; // OpenLayers optimized for OSM
 53+
 54+
 55+
 56+
 57+
 58+# Array of String. The default mapping service for each feature, which will be used when no valid service is provided by the user.
 59+# Each service needs to be enabled, if not, the first one from the available services will be taken.
 60+# Note: The default service needs to be available for the feature you set it for, since it's used as a fallback mechanism.
 61+$egMapsDefaultServices['qp'] = 'googlemaps2';
 62+$egMapsDefaultServices['fi'] = 'googlemaps2';
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/SM_Settings.php
___________________________________________________________________
Name: svn:eol-style
163 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/FormInputs/SM_FormInput.php
@@ -0,0 +1,174 @@
 2+<?php
 3+
 4+/**
 5+ * Abstract class that provides the common functionallity for all map form inputs
 6+ *
 7+ * @file SM_FormInput.php
 8+ * @ingroup SemanticMaps
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+abstract class SMFormInput extends MapsMapFeature {
 18+
 19+ /**
 20+ * Determine if geocoding will be enabled and load the required dependencies.
 21+ */
 22+ protected abstract function manageGeocoding();
 23+
 24+ /**
 25+ * Ensures all dependencies for the used map are loaded, and increases that map service's count
 26+ */
 27+ protected abstract function addFormDependencies();
 28+
 29+ protected $marker_lat;
 30+ protected $marker_lon;
 31+
 32+ protected $earthZoom;
 33+
 34+ protected $showAddresFunction;
 35+
 36+ protected $enableGeocoding = false;
 37+
 38+ private $startingCoords ='';
 39+
 40+ private $coordinates;
 41+
 42+ /**
 43+ * This function is a hook for Semantic Forms, and returns the HTML needed in
 44+ * the form to handle coordinate data.
 45+ *
 46+ * @return array
 47+ */
 48+ public final function formInputHTML($coordinates, $input_name, $is_mandatory, $is_disabled, $field_args) {
 49+ global $sfgTabIndex;
 50+ // TODO: Use function args for sf stuffz
 51+
 52+ $this->coordinates = $coordinates;
 53+
 54+ $this->setMapSettings();
 55+
 56+ $this->featureParameters = SMFormInputs::$parameters;
 57+
 58+ $this->doMapServiceLoad();
 59+
 60+ $this->manageGeocoding();
 61+
 62+ if (parent::manageMapProperties($field_args, __CLASS__)) {
 63+ $this->setCoordinates();
 64+ $this->setCentre();
 65+ $this->setZoom();
 66+
 67+ // Create html element names
 68+ $this->setMapName();
 69+ $this->mapName .= '_'.$sfgTabIndex;
 70+ $this->geocodeFieldName = $this->elementNamePrefix.'_geocode_'.$this->elementNr.'_'.$sfgTabIndex;
 71+ $this->coordsFieldName = $this->elementNamePrefix.'_coords_'.$this->elementNr.'_'.$sfgTabIndex;
 72+ $this->infoFieldName = $this->elementNamePrefix.'_info_'.$this->elementNr.'_'.$sfgTabIndex;
 73+
 74+ // Create the non specific form HTML
 75+ $this->output .= "
 76+ <input id='".$this->coordsFieldName."' name='$input_name' type='text' value='$this->startingCoords' size='40' tabindex='$sfgTabIndex'>
 77+ <span id='".$this->infoFieldName."' class='error_message'></span>";
 78+
 79+ if ($this->enableGeocoding) $this->addGeocodingField();
 80+
 81+ $this->addSpecificMapHTML();
 82+ }
 83+
 84+ return array($this->output . $this->errorList, '');
 85+ }
 86+
 87+ private function addGeocodingField() {
 88+ global $sfgTabIndex;
 89+ $sfgTabIndex++;
 90+
 91+ // Retrieve language valuess
 92+ $enter_address_here_text = wfMsg('semanticmaps_enteraddresshere');
 93+ $lookup_coordinates_text = wfMsg('semanticmaps_lookupcoordinates');
 94+ $not_found_text = wfMsg('semanticmaps_notfound');
 95+
 96+ $adress_field = SMFormInput::getDynamicInput($this->geocodeFieldName, $enter_address_here_text, 'size="30" name="geocode" style="color: #707070" tabindex="'.$sfgTabIndex.'"');
 97+ $this->output .= "
 98+ <p>
 99+ $adress_field
 100+ <input type='submit' onClick=\"$this->showAddresFunction(document.forms['createbox'].$this->geocodeFieldName.value, '$this->mapName', '$this->coordsFieldName', '$not_found_text'); return false\" value='$lookup_coordinates_text' />
 101+ </p>";
 102+ }
 103+
 104+ /**
 105+ * Sets the zoom so the whole map is visible in case there is no maker yet,
 106+ * and sets it to the default when there is a marker but no zoom parameter.
 107+ */
 108+ private function setZoom() {
 109+ if (empty($this->coordinates)) {
 110+ $this->zoom = $this->earthZoom;
 111+ } else if (strlen($this->zoom) < 1) {
 112+ $this->zoom = $this->defaultZoom;
 113+ }
 114+ }
 115+
 116+ /**
 117+ * Sets the $marler_lon and $marler_lat fields and when set, the starting coordinates
 118+ *
 119+ */
 120+ private function setCoordinates() {
 121+ if (empty($this->coordinates)) {
 122+ // If no coordinates exist yet, no marker should be displayed
 123+ $this->marker_lat = 'null';
 124+ $this->marker_lon = 'null';
 125+ }
 126+ else {
 127+ $marker = MapsUtils::getLatLon($this->coordinates);
 128+ $this->marker_lat = $marker['lat'];
 129+ $this->marker_lon = $marker['lon'];
 130+ $this->startingCoords = MapsUtils::latDecimal2Degree($this->marker_lat) . ', ' . MapsUtils::lonDecimal2Degree($this->marker_lon);
 131+ }
 132+ }
 133+
 134+ /**
 135+ * Sets the $centre_lat and $centre_lon fields.
 136+ * Note: this needs to be done AFTRE the maker coordinates are set.
 137+ *
 138+ */
 139+ private function setCentre() {
 140+ if (empty($this->centre)) {
 141+ if (isset($this->coordinates)) {
 142+ $this->centre_lat = $this->marker_lat;
 143+ $this->centre_lon = $this->marker_lon;
 144+ }
 145+ else {
 146+ $this->centre_lat = '0';
 147+ $this->centre_lon = '0';
 148+ }
 149+ }
 150+ else {
 151+ // Geocode and convert if required.
 152+ $centre = MapsGeocodeUtils::attemptToGeocode($this->centre, $this->geoservice, $this->serviceName);
 153+ $centre = MapsUtils::getLatLon($centre);
 154+
 155+ $this->centre_lat = $centre['lat'];
 156+ $this->centre_lon = $centre['lon'];
 157+ }
 158+ }
 159+
 160+ /**
 161+ * Returns html for an html input field with a default value that will automatically dissapear when
 162+ * the user clicks in it, and reappers when the focus on the field is lost and it's still empty.
 163+ *
 164+ * @author Jeroen De Dauw
 165+ *
 166+ * @param string $id
 167+ * @param string $value
 168+ * @param string $args
 169+ * @return html
 170+ */
 171+ private static function getDynamicInput($id, $value, $args='') {
 172+ return '<input id="'.$id.'" '.$args.' value="'.$value.'" onfocus="if (this.value==\''.$value.'\') {this.value=\'\';}" onblur="if (this.value==\'\') {this.value=\''.$value.'\';}" />';
 173+ }
 174+}
 175+
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/FormInputs/SM_FormInput.php
___________________________________________________________________
Name: svn:eol-style
1176 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/FormInputs/SM_FormInputs.php
@@ -0,0 +1,131 @@
 2+<?php
 3+
 4+/**
 5+ * Initialization file for form input functionality in the Maps extension
 6+ *
 7+ * @file SM_FormInputs.php
 8+ * @ingroup SemanticMaps
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+final class SMFormInputs {
 18+
 19+ public static $parameters = array();
 20+
 21+ public static function initialize() {
 22+ global $smgIP, $wgAutoloadClasses, $egMapsServices, $sfgFormPrinter;
 23+
 24+ // This feature can only be enbled when Semantic Forms is loaded.
 25+ if (isset($sfgFormPrinter)) {
 26+ $hasFormInputs = false;
 27+
 28+ $wgAutoloadClasses['SMFormInput'] = $smgIP . '/FormInputs/SM_FormInput.php';
 29+
 30+ self::initializeParams();
 31+
 32+ foreach($egMapsServices as $serviceName => $serviceData) {
 33+ // Check if the service has a form input
 34+ $hasFI = array_key_exists('fi', $serviceData);
 35+
 36+ // If the service has no FI, skipt it and continue with the next one.
 37+ if (!$hasFI) continue;
 38+
 39+ // At least one form input will be enabled when this point is reached.
 40+ $hasFormInputs = true;
 41+
 42+ // Add the result form input type for the service name.
 43+ self::initFormHook($serviceName, $serviceData['fi'], $serviceName);
 44+
 45+ // Loop through the service alliases, and add them as form input types.
 46+ foreach ($serviceData['aliases'] as $alias) self::initFormHook($alias, $serviceData['fi'], $serviceName);
 47+ }
 48+
 49+ // Add the 'map' form input type if there are mapping services that have FI's loaded.
 50+ if ($hasFormInputs) self::initFormHook('map');
 51+ }
 52+ }
 53+
 54+ private static function initializeParams() {
 55+ global $egMapsAvailableServices, $egMapsDefaultServices, $egMapsDefaultCentre, $egMapsAvailableGeoServices, $egMapsDefaultGeoService;
 56+
 57+ self::$parameters = array(
 58+ 'centre' => array(
 59+ 'aliases' => array('center'),
 60+ 'default' => $egMapsDefaultCentre
 61+ ),
 62+ 'geoservice' => array(
 63+ 'criteria' => array(
 64+ 'in_array' => array_keys($egMapsAvailableGeoServices)
 65+ ),
 66+ 'default' => $egMapsDefaultGeoService
 67+ ),
 68+ 'service_name' => array(),
 69+ 'part_of_multiple' => array(),
 70+ 'possible_values' => array(
 71+ 'type' => array('string', 'array'),
 72+ ),
 73+ 'is_list' => array(),
 74+ 'semantic_property' => array(),
 75+ 'value_labels' => array(),
 76+ );
 77+ }
 78+
 79+ /**
 80+ * Adds a mapping service's form hook.
 81+ *
 82+ * @param string $inputName The name of the form input.
 83+ * @param array $fi
 84+ * @param strig $mainName
 85+ */
 86+ private static function initFormHook($inputName, array $fi = null, $mainName = '') {
 87+ global $wgAutoloadClasses, $sfgFormPrinter, $smgIP;
 88+
 89+ if (isset($fi)) {
 90+ if (! array_key_exists($fi['class'], $wgAutoloadClasses)) {
 91+ $file = array_key_exists('local', $fi) && $fi['local'] ? $smgIP . '/' . $fi['file'] : $fi['file'];
 92+ $wgAutoloadClasses[$fi['class']] = $file;
 93+ }
 94+ }
 95+
 96+ // Add the form input hook for the service
 97+ $field_args = array();
 98+ if (strlen($mainName) > 0) $field_args['service_name'] = $mainName;
 99+ $sfgFormPrinter->setInputTypeHook($inputName, 'smfSelectFormInputHTML', $field_args);
 100+ }
 101+
 102+}
 103+
 104+/**
 105+ * Calls the relevant form input class depending on the provided service.
 106+ *
 107+ * @param unknown_type $coordinates
 108+ * @param unknown_type $input_name
 109+ * @param unknown_type $is_mandatory
 110+ * @param unknown_type $is_disabled
 111+ * @param array $field_args
 112+ *
 113+ * @return array
 114+ */
 115+function smfSelectFormInputHTML($coordinates, $input_name, $is_mandatory, $is_disabled, array $field_args) {
 116+ global $egMapsServices;
 117+
 118+ // Get the service name from the field_args, and set it to null if it doesn't exist.
 119+ if (array_key_exists('service_name', $field_args)) {
 120+ $service_name = $field_args['service_name'];
 121+ }
 122+ else{
 123+ $service_name = null;
 124+ }
 125+
 126+ // Ensure the service is valid and create a new instance of the handling form input class.
 127+ $service_name = MapsMapper::getValidService($service_name, 'fi');
 128+ $formInput = new $egMapsServices[$service_name]['fi']['class']();
 129+
 130+ // Get and return the form input HTML from the hook corresponding with the provided service.
 131+ return $formInput->formInputHTML($coordinates, $input_name, $is_mandatory, $is_disabled, $field_args);
 132+}
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/FormInputs/SM_FormInputs.php
___________________________________________________________________
Name: svn:eol-style
1133 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/INSTALL
@@ -0,0 +1,16 @@
 2+[[Semantic Maps 0.5.3]]
 3+
 4+Make sure you have Semantic MediaWiki and Maps successfully installed before
 5+proceeding with the installation. Once you have downloaded the code, place
 6+the 'SemanticMaps' directory within your MediaWiki 'extensions' directory.
 7+Then add the following code to your LocalSettings.php file after the lines
 8+that install Maps:
 9+
 10+# Semantic Maps
 11+require_once( "$IP/extensions/SemanticMaps/SemanticMaps.php" );
 12+
 13+The inclusion of extensions should happen in this order: Semantic MediaWiki,
 14+Semantic Forms (if you use it), Semantic Maps. Maps should proceed Semantic
 15+Maps. See the installation instructions of Maps for info about the API keys.
 16+
 17+More information can be found at http://www.mediawiki.org/wiki/Extension:Semantic_Maps#Download_and_installation
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/INSTALL
___________________________________________________________________
Name: svn:eol-style
118 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/OpenStreetMap/SM_OSMFunctions.js
@@ -0,0 +1,99 @@
 2+ /**
 3+ * Javascript functions for OpenStreetMap functionallity in Semantic Maps
 4+ *
 5+ * @file SM_OSMFunctions.js
 6+ * @ingroup SMOSM
 7+ *
 8+ * @author Jeroen De Dauw
 9+ */
 10+
 11+/**
 12+ * This function holds spesific functionallity for the OpenStreetMap form input of Semantic Maps
 13+ */
 14+function makeOSMFormInput(mapName, locationFieldName, mapParams) {
 15+ var markers = Array();
 16+
 17+ // Show a starting marker only if marker coordinates are provided
 18+ if (mapParams.lat != null && mapParams.lon != null) {
 19+ mapParams.markers = [(getOSMMarkerData(mapParams.lon, mapParams.lat, '', '', ''))];
 20+ }
 21+
 22+ // Click event handler for updating the location of the marker
 23+ // TODO / FIXME: This will probably cause problems when used for multiple maps on one page.
 24+ OpenLayers.Control.ClickHandler = OpenLayers.Class(OpenLayers.Control, {
 25+ defaultHandlerOptions: {
 26+ 'single': true,
 27+ 'double': false,
 28+ 'pixelTolerance': 0,
 29+ 'stopSingle': false,
 30+ 'stopDouble': false
 31+ },
 32+
 33+ initialize: function(options) {
 34+ this.handlerOptions = OpenLayers.Util.extend(
 35+ {}, this.defaultHandlerOptions
 36+ );
 37+ OpenLayers.Control.prototype.initialize.apply(
 38+ this, arguments
 39+ );
 40+ this.handler = new OpenLayers.Handler.Click(
 41+ this, {
 42+ 'click': this.trigger
 43+ }, this.handlerOptions
 44+ );
 45+ },
 46+
 47+ trigger: function(e) {
 48+ var lonlat = this.getLonLatFromViewPortPx(e.xy);
 49+
 50+ replaceMarker(mapName, lonlat);
 51+
 52+ var proj = new OpenLayers.Projection("EPSG:4326");
 53+ lonlat.transform(map.getProjectionObject(), proj);
 54+
 55+ document.getElementById(locationFieldName).value = convertLatToDMS(lonlat.lat)+', '+convertLngToDMS(lonlat.lon);
 56+ }
 57+
 58+ });
 59+
 60+ var clickHanler = new OpenLayers.Control.ClickHandler();
 61+ mapParams.controls.push(clickHanler);
 62+ mapParams.initializedContols = [];
 63+
 64+ var map = new slippymap_map(mapName, mapParams);
 65+
 66+ // Make the map variable available for other functions
 67+ eval("window.slippymaps." + mapName + " = map;");
 68+}
 69+
 70+/**
 71+ * Remove all markers from an OSM map (that's in window.OSMMaps), and place a new one.
 72+ *
 73+ * @param mapName Name of the map as in OSMMaps[mapName].
 74+ * @param newLocation The location for the new marker.
 75+ * @return
 76+ */
 77+function replaceMarker(mapName, newLocation) {
 78+ var map = slippymaps[mapName];
 79+
 80+ var markerLayer = map.getLayer('markerLayer');
 81+
 82+ removeOSMMarkers(markerLayer);
 83+ markerLayer.addMarker(getOSMMarker(markerLayer, getOSMMarkerData(newLocation.lon, newLocation.lat, '', '', ''), map.getProjectionObject()));
 84+
 85+ map.panTo(newLocation);
 86+}
 87+
 88+/**
 89+ * Removes all markers from a marker layer.
 90+ *
 91+ * @param markerLayer The layer to remove all markers from.
 92+ * @return
 93+ */
 94+function removeOSMMarkers(markerLayer) {
 95+ var markerCollection = markerLayer.markers;
 96+
 97+ for (i in markerCollection) {
 98+ markerLayer.removeMarker(markerCollection[i]);
 99+ }
 100+}
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/OpenStreetMap/SM_OSMFunctions.js
___________________________________________________________________
Name: svn:eol-style
1101 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/OpenStreetMap/SM_OSM.php
@@ -0,0 +1,24 @@
 2+<?php
 3+
 4+/**
 5+ * This groupe contains all OpenStreetMap related files of the Semantic Maps extension.
 6+ *
 7+ * @defgroup SMOSM OpenStreetMap
 8+ * @ingroup SemanticMaps
 9+ */
 10+
 11+/**
 12+ * This file holds the general information for the OpenStreetMap service.
 13+ *
 14+ * @file SM_OSM.php
 15+ * @ingroup SMOSM
 16+ *
 17+ * @author Jeroen De Dauw
 18+ */
 19+
 20+if( !defined( 'MEDIAWIKI' ) ) {
 21+ die( 'Not an entry point.' );
 22+}
 23+
 24+$egMapsServices['osm']['qp'] = array('class' => 'SMOSMQP', 'file' => 'OpenStreetMap/SM_OSMQP.php', 'local' => true);
 25+//$egMapsServices['osm']['fi'] = array('class' => 'SMOSMFormInput', 'file' => 'extensions/SemanticMaps/OpenStreetMap/SM_OSMFormInput.php', 'local' => false);
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/OpenStreetMap/SM_OSM.php
___________________________________________________________________
Name: svn:eol-style
126 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/OpenStreetMap/SM_OSMQP.php
@@ -0,0 +1,98 @@
 2+<?php
 3+
 4+/**
 5+ * A query printer for maps using the Open Layers API optimized for OSM
 6+ *
 7+ * @file SM_OSMQP.php
 8+ * @ingroup SMOSM
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+final class SMOSMQP extends SMMapPrinter {
 18+
 19+ public $serviceName = MapsOSM::SERVICE_NAME;
 20+
 21+ /**
 22+ * @see SMMapPrinter::setQueryPrinterSettings()
 23+ *
 24+ */
 25+ protected function setQueryPrinterSettings() {
 26+ global $egMapsOSMZoom, $egMapsOSMPrefix;
 27+
 28+ $this->elementNamePrefix = $egMapsOSMPrefix;
 29+ $this->defaultZoom = $egMapsOSMZoom;
 30+ }
 31+
 32+ /**
 33+ * @see SMMapPrinter::doMapServiceLoad()
 34+ *
 35+ */
 36+ protected function doMapServiceLoad() {
 37+ global $egOSMMapsOnThisPage;
 38+
 39+ MapsOSM::addOSMDependencies($this->output);
 40+ $egOSMMapsOnThisPage++;
 41+
 42+ $this->elementNr = $egOSMMapsOnThisPage;
 43+ }
 44+
 45+ /**
 46+ * @see SMMapPrinter::addSpecificMapHTML()
 47+ *
 48+ */
 49+ protected function addSpecificMapHTML() {
 50+ global $wgJsMimeType;
 51+
 52+ $markerItems = array();
 53+
 54+ foreach ($this->m_locations as $location) {
 55+ // Create a string containing the marker JS
 56+ list($lat, $lon, $title, $label, $icon) = $location;
 57+
 58+ $title = str_replace("'", "\'", $title);
 59+ $label = str_replace("'", "\'", $label);
 60+
 61+ $markerItems[] = "getOSMMarkerData($lon, $lat, '$title', '$label', '$icon')";
 62+ }
 63+
 64+ $markersString = implode(',', $markerItems);
 65+
 66+ $this->output .= <<<EOT
 67+ <script type='$wgJsMimeType'>slippymaps['$this->mapName'] = new slippymap_map('$this->mapName', {
 68+ mode: 'osm-wm',
 69+ layer: 'osm-like',
 70+ locale: '$this->lang',
 71+ lat: $this->centre_lat,
 72+ lon: $this->centre_lon,
 73+ zoom: $this->zoom,
 74+ width: $this->width,
 75+ height: $this->height,
 76+ markers: [$markersString],
 77+ controls: [$this->controls]
 78+ });</script>
 79+
 80+ <!-- map div -->
 81+ <div id='$this->mapName' class='map' style='width:{$this->width}px; height:{$this->height}px;'>
 82+ <script type='$wgJsMimeType'>slippymaps['$this->mapName'].init();</script>
 83+ <!-- /map div -->
 84+ </div>
 85+EOT;
 86+ }
 87+
 88+ /**
 89+ * Returns type info, descriptions and allowed values for this QP's parameters after adding the spesific ones to the list.
 90+ */
 91+ public function getParameters() {
 92+ $params = parent::getParameters();
 93+
 94+ $params[] = array('name' => 'controls', 'type' => 'enum-list', 'description' => wfMsg('semanticmaps_paramdesc_controls'), 'values' => MapsOSM::getControlNames());
 95+
 96+ return $params;
 97+ }
 98+
 99+}
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/OpenStreetMap/SM_OSMQP.php
___________________________________________________________________
Name: svn:eol-style
1100 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/OpenStreetMap/SM_OSMFormInput.php
@@ -0,0 +1,109 @@
 2+<?php
 3+
 4+/**
 5+ * Form input hook that adds an OSM map format to Semantic Forms
 6+ *
 7+ * @file SM_OSMFormInput.php
 8+ * @ingroup SMOSM
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+// TODO: the js for this form input does not work yet. Requires fixing before the FI can be enabled.
 18+
 19+final class SMOSMFormInput extends SMFormInput {
 20+
 21+ public $serviceName = MapsOSM::SERVICE_NAME;
 22+
 23+ /**
 24+ * @see MapsMapFeature::setMapSettings()
 25+ *
 26+ */
 27+ protected function setMapSettings() {
 28+ global $egMapsOSMZoom, $egMapsOSMPrefix;
 29+
 30+ $this->elementNamePrefix = $egMapsOSMPrefix;
 31+
 32+ $this->earthZoom = 1;
 33+
 34+ $this->defaultZoom = $egMapsOSMZoom;
 35+ }
 36+
 37+ /**
 38+ * @see MapsMapFeature::addFormDependencies()
 39+ *
 40+ */
 41+ protected function addFormDependencies() {
 42+ global $wgJsMimeType;
 43+ global $smgScriptPath, $smgOSMFormsOnThisPage, $smgStyleVersion;
 44+
 45+ MapsOSM::addOSMDependencies($this->output);
 46+
 47+ if (empty($smgOSMFormsOnThisPage)) {
 48+ $smgOSMFormsOnThisPage = 0;
 49+ $this->output .= "<script type='$wgJsMimeType' src='$smgScriptPath/OpenStreetMap/SM_OSMFunctions.js?$smgStyleVersion'></script>";
 50+ }
 51+ }
 52+
 53+ /**
 54+ * @see MapsMapFeature::doMapServiceLoad()
 55+ *
 56+ */
 57+ protected function doMapServiceLoad() {
 58+ global $egOSMMapsOnThisPage, $smgOSMFormsOnThisPage;
 59+
 60+ self::addFormDependencies();
 61+
 62+ $egOSMMapsOnThisPage++;
 63+ $smgOSMFormsOnThisPage++;
 64+
 65+ $this->elementNr = $egOSMMapsOnThisPage;
 66+ }
 67+
 68+ /**
 69+ * @see MapsMapFeature::addSpecificMapHTML()
 70+ *
 71+ */
 72+ protected function addSpecificMapHTML() {
 73+ global $wgJsMimeType;
 74+
 75+ $this->output .= <<<EOT
 76+ <script type='$wgJsMimeType'>
 77+ makeOSMFormInput(
 78+ '$this->mapName',
 79+ '$this->coordsFieldName',
 80+ {
 81+ mode: 'osm-wm',
 82+ layer: 'osm-like',
 83+ locale: '$this->lang',
 84+ lat: $this->centre_lat,
 85+ lon: $this->centre_lon,
 86+ zoom: $this->zoom,
 87+ width: $this->width,
 88+ height: $this->height,
 89+ controls: [$this->controls],
 90+ }
 91+ );
 92+
 93+
 94+ </script>
 95+
 96+ <div id='$this->mapName' class='map' style='width:{$this->width}px; height:{$this->height}px;'>
 97+ <script type='$wgJsMimeType'>slippymaps['$this->mapName'].init();</script>
 98+ </div>
 99+EOT;
 100+ }
 101+
 102+ /**
 103+ * @see SMFormInput::manageGeocoding()
 104+ *
 105+ */
 106+ protected function manageGeocoding() {
 107+ $this->enableGeocoding = false;
 108+ }
 109+
 110+}
Index: tags/extensions/SemanticMaps/REL_0_5_3/RELEASE-NOTES
@@ -0,0 +1,220 @@
 2+For a documentation of all features, see http://www.mediawiki.org/wiki/Extension:Semantic_Maps
 3+
 4+== Semantic Maps change log ==
 5+This change log contains a list of completed to-do's (new features, bug fixes, refactoring) for every
 6+version of Semantic Maps. You can find the most upt-do-date version at
 7+http://www.mediawiki.org/wiki/Extension:Semantic_Maps/Version_history#Semantic_Maps_change_log
 8+
 9+
 10+=== Semantic Maps 0.5.3 ===
 11+(2010-02-01)
 12+
 13+==== Bug fixes ====
 14+
 15+* Fixed issue with the type and types parameters in the Yahoo! Maps form input.
 16+
 17+* Fixed OpenLayers form input projection bug, causing the the coordinates to be wrongly interpreted.
 18+
 19+* Fixed marker display for the OpenLayers form inputs.
 20+
 21+* Fixed issue causing a fatal error when executing a query on Special:Ask with the "map" format.
 22+
 23+=== Semantic Maps 0.5.2 ===
 24+(2010-01-20)
 25+
 26+==== New features ====
 27+
 28+* Added support for template= parameter to the result printers.
 29+
 30+* Added support for showtitle= parameter to the result printers.
 31+
 32+* Added icon parameter to the query printers, allowing you to set the icon for all markers that do not have a specific icon assigned via a compound query.
 33+
 34+==== Bug fixes ====
 35+
 36+* Added missing SMW #Ask: parameters to the parameter list of the Semantic Maps query printers.
 37+
 38+* Fixed issue with centre parameter for maps with no results (using forceshow=on).
 39+
 40+=== Semantic Maps 0.5.1 ===
 41+(2009-12-25)
 42+
 43+==== New features ====
 44+
 45+* Added parameter support for the 'map' format on Special:Ask.
 46+
 47+* Added forceshow parameter to the result formats to allow users to force showing a map, even when there are no geographical coordinate results from a query.
 48+
 49+==== Refactoring ====
 50+
 51+* Modified the parameter definitions to work with Validator 0.2.
 52+
 53+* Removed redundant (because of Validator 0.2) utility function calls from the mapping classes.
 54+
 55+* Ensured none of the form input classes get loaded when SF is not present.
 56+
 57+==== Bug fixes ====
 58+
 59+* Fixed issue with the query printers causing error messages to be shown for ask specific parameters.
 60+
 61+=== Semantic Maps 0.5 ===
 62+(2009-12-17)
 63+
 64+==== New features ====
 65+
 66+* Added a result format for the OL optimized for OSM service.
 67+
 68+* Added support for the new Special:Ask page's parameter handling to the query printers.
 69+
 70+==== Refactoring ====
 71+
 72+* Moved the geographical coordinate data type handling from SMW to SM.
 73+
 74+* Added checks for extension dependencies that need to be present for Semantic Maps to be initialized.
 75+
 76+==== Bug fixes ====
 77+
 78+* Fixed issue with the form input registration. The main service names where getting changed into the default mapping service.
 79+
 80+===Semantic Maps 0.4.2===
 81+(2009-11-15)
 82+
 83+Changes in 0.4.2 discussed on the authors blog:
 84+
 85+* [http://blog.bn2vs.com/2009/11/16/maps-and-semantic-maps-0-4-2/ Maps and Semantic Maps 0.4.2 released]
 86+* [http://blog.bn2vs.com/2009/11/12/new-in-maps-0-4-2/ New in Maps 0.4.2]
 87+
 88+==== Bug fixes ====
 89+
 90+* Fixed issue with backward compatibility of the $wgGoogleMapsKey variable. It got handled at the wrong point in the form input classes, causing the form geocoding functionality to be disabled for people still using the old variable name.
 91+
 92+===Semantic Maps 0.4.1===
 93+(2009-11-10)
 94+
 95+====New features====
 96+
 97+* Added smart geocoding to the QP's centre parameter.
 98+
 99+* Added smart geocoding to the FI's centre parameter.
 100+
 101+==== Bug fixes ====
 102+
 103+* Fixed bug in the Yahoo! Maps form input, caused by not adapting a renamed variable.
 104+
 105+* Fixed bug in the form scripts caused by wrongly encoded JavaScript file of Maps.
 106+
 107+===Semantic Maps 0.4===
 108+(2009-11-03)
 109+
 110+Changes in 0.4 discussed on the authors blog:
 111+
 112+* [http://blog.bn2vs.com/2009/11/03/finally-maps-and-semantic-maps-0-4/ Finally! Maps and Semantic Maps 0.4!]
 113+
 114+====Bug fixes====
 115+
 116+* Fixed the repeated display of mapping services on the Special:Ask page, by [http://svn.wikimedia.org/viewvc/mediawiki?view=rev&revision=58187 adding an aliasing system to SMW].
 117+
 118+* Fixed problem that caused the SM result formats to not get displayed on Special:Ask.
 119+
 120+===Semantic Maps 0.3.4===
 121+(2009-09-12)
 122+
 123+Changes in 0.3.4 discussed on the authors blog:
 124+
 125+* [http://blog.bn2vs.com/2009/09/12/maps-and-semantic-maps-0-3-4-released/ Maps and Semantic Maps 0.3.4 released]
 126+
 127+====Bug fixes====
 128+
 129+* Fixed bug causing error for people who do not have Semantic Forms installed and enabled, presumably introduced in 0.3.
 130+
 131+* Fixed bug causing only the last coordinate property from a result to be shown on a map format, and so causing the predecessors to be ignored in case of multiple coordinate properties.
 132+
 133+====Refactoring====
 134+
 135+* Restructured the extension to work with the new feature hook system of Maps.
 136+
 137+===Semantic Maps 0.3.3===
 138+(2009-08-15)
 139+
 140+Changes in 0.3.3 discussed on the authors blog:
 141+
 142+* [http://blog.bn2vs.com/2009/08/25/maps-and-semantic-maps-0-3-3/ Maps and Semantic Maps 0.3.3]
 143+
 144+====Bug fixes====
 145+
 146+* Fixed error caused by the 'map' format on the Special:Ask page
 147+
 148+===Semantic Maps 0.3.2===
 149+(2009-08-18)
 150+
 151+====Bug fixes====
 152+
 153+* Fixed logic error that caused maps to have a wrong centre and zoom when a query only returned one result.
 154+
 155+* Fixed an issue with the centre parameter in queries. In some cases it would not be processed correctly and cause PHP notices.
 156+
 157+===Semantic Maps 0.3.1===
 158+(2009-08-18)
 159+
 160+====Bug fixes====
 161+
 162+* Fixed script design flaw that caused errors when using the 'map' format in a query.
 163+
 164+===Semantic Maps 0.3===
 165+(2009-08-14)
 166+
 167+Changes in 0.3 discussed on the authors blog:
 168+
 169+* [http://blog.bn2vs.com/2009/08/13/final-changes-for-maps-and-sm-0-3/ Final changes for Maps and SM 0.3]
 170+
 171+* [http://blog.bn2vs.com/2009/08/07/new-features-in-maps-and-sm-0-3/ New features in Maps and SM 0.3]
 172+
 173+* [http://blog.bn2vs.com/2009/08/05/structural-changes-for-maps-and-sm-0-3/ Structural changes for Maps and SM 0.3]
 174+
 175+====New functionality====
 176+
 177+* Yahoo! Maps and OpenLayers now handle the "icon=" parameter that can come from Semantic Compound Queries, as Google Maps already did.
 178+
 179+====Refactoring====
 180+
 181+* Restructured the Query Printer classes (JavaScript based logic).
 182+
 183+* Made form input classes weakly typed, so they fully work with the new aliasing system.
 184+
 185+* Integrated the new hook system of Maps.
 186+
 187+* Made the form input class inherit from MapsMapFeature.
 188+
 189+====Bug fixes====
 190+
 191+* Mapping formats get added only once, as opossed to multiple times in version 0.2.2.
 192+
 193+* Added "elementNamePrefix" to the map names and fields of form inputs to prevent JavaScript errors.
 194+
 195+* When a query returns no results, nothing will be displayed, instead of an empty map.
 196+
 197+* The Google Maps form input now zooms in correctly when a user looks up an address.
 198+
 199+===Semantic Maps 0.2===
 200+(2009-07-29)
 201+
 202+====New functionality====
 203+
 204+* Added a hook for [[Extension:Admin_Links|Admin Links]].
 205+
 206+* Added multi geocoder integration with form inputs.
 207+
 208+* Added support for the Yahoo! Geocoder (in form inputs).
 209+
 210+====Refactoring====
 211+
 212+* Restructured the Form Input classes.
 213+
 214+====Bug fixes====
 215+
 216+* Fixed issue that occurred when a custom centre is set for a Yahoo! Maps map, causing the map to not display their markers correctly.
 217+
 218+===Semantic Maps 0.1===
 219+(2009-07-21)
 220+
 221+* Initial release, featuring both result formats and form inputs for Google Maps (+ Google Earth), Yahoo! Maps and OpenLayers.
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/RELEASE-NOTES
___________________________________________________________________
Name: svn:eol-style
1222 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/SM_GeoCoordsValue.php
@@ -0,0 +1,335 @@
 2+<?php
 3+/**
 4+ * File holding the SMGeoCoordsValue class.
 5+ *
 6+ * @file SM_GeoCoordsValue.php
 7+ * @ingroup SMWDataValues
 8+ *
 9+ * @author Markus Krötzsch
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+/// Unicode symbols for coordinate minutes and seconds;
 14+/// may not display in every font ...
 15+define('SM_GEO_MIN','′');
 16+define('SM_GEO_SEC','″');
 17+
 18+/**
 19+ * Implementation of datavalues that are geographic coordinates.
 20+ *
 21+ * @author Markus Krötzsch
 22+ * @author Jeroen De Dauw
 23+ *
 24+ * @ingroup SemanticMaps
 25+ */
 26+class SMGeoCoordsValue extends SMWDataValue {
 27+
 28+ protected $m_N = false; // cache for localised direction labels
 29+ protected $m_E = false; // cache for localised direction labels
 30+ protected $m_W = false; // cache for localised direction labels
 31+ protected $m_S = false; // cache for localised direction labels
 32+
 33+ protected $m_wikivalue;
 34+ protected $m_lat; // decimal latitude of current value
 35+ protected $m_long; // decimal longitude of current value
 36+ protected $m_latparts; // latitude array of four entries: degrees, minutes, seconds, direction
 37+ protected $m_longparts; // longitude array of four entries: degrees, minutes, seconds, direction
 38+ // Note: signs are used as e.g. on Google maps, i.e. S and W are negative numbers.
 39+
 40+ protected function parseUserValue($value) {
 41+ $this->m_lat = false;
 42+ $this->m_long = false;
 43+ $this->m_latparts = false;
 44+ $this->m_longparts = false;
 45+ $this->m_wikivalue = $value;
 46+
 47+ // first normalise some typical symbols
 48+ $this->initDirectionLabels();
 49+ $value = str_replace(array('&nbsp;', $this->m_N, $this->m_E, $this->m_W, $this->m_S, ),
 50+ array(' ','N','E','W','S'),$value);
 51+ $value = str_replace(array('&#176;', '&deg;'), '°', $value);
 52+ $value = str_replace(array('&acute;', '&#180;'),'´',$value);
 53+ $value = str_replace(array('&#8243;', '&Prime;', "''", '"', '´´', SM_GEO_MIN . SM_GEO_MIN),SM_GEO_SEC,$value);
 54+ $value = str_replace(array('&#8242;', '&prime;', "'", '´'),SM_GEO_MIN,$value);
 55+ // now split the string
 56+ $parts = preg_split('/\s*(°|' . SM_GEO_MIN . '|' . SM_GEO_SEC . '|N|E|W|S|;)\s*/u',str_replace(', ', ';', $value) . ';', -1, PREG_SPLIT_DELIM_CAPTURE);
 57+ $curnum = false;
 58+ $angles = array(false, false, false); // temporary values for deg, min, sec
 59+ foreach ($parts as $part) {
 60+ switch ($part) {
 61+ case '°':
 62+ if ( ($angles[0] !== false) && ($this->m_lat === false) ) { // work off values found earlier
 63+ $this->setAngleValues('N',$angles);
 64+ } // else: we do not accept interchange of order (lat must be first), so there are just too many °s
 65+ if ( $curnum !== false ) {
 66+ $angles[0] = $curnum;
 67+ $curnum = false;
 68+ } else {
 69+ $this->addError(wfMsgForContent('semanticmaps_lonely_unit', $part));
 70+ }
 71+ break;
 72+ case SM_GEO_MIN:
 73+ if ( ($curnum !== false) && ($angles[1] === false) ) {
 74+ $angles[1] = $curnum;
 75+ if ($angles[0] === false) $angles[0] = 0;
 76+ $curnum = false;
 77+ } else {
 78+ $this->addError(wfMsgForContent('semanticmaps_lonely_unit', $part));
 79+ }
 80+ break;
 81+ case SM_GEO_SEC:
 82+ if ( ($curnum !== false) && ($angles[2] === false) ) {
 83+ $angles[2] = $curnum;
 84+ if ($angles[0] === false) $angles[0] = 0;
 85+ if ($angles[1] === false) $angles[1] = 0;
 86+ $curnum = false;
 87+ } else {
 88+ $this->addError(wfMsgForContent('semanticmaps_lonely_unit', $part));
 89+ }
 90+ break;
 91+ case 'N': case 'S': // interpret findings as latitude
 92+ if ( $curnum !== false ) { // work off number without °
 93+ if ($angles[0] !== false) { // "12° 34" as coordinate, complain
 94+ $this->addError(wfMsgForContent('semanticmaps_bad_latlong'));
 95+ break;
 96+ } else {
 97+ $angles[0] = $curnum;
 98+ $curnum = false;
 99+ }
 100+ }
 101+ if (($this->m_lat === false) && ($angles[0] !== false)) {
 102+ $this->setAngleValues($part,$angles);
 103+ } else {
 104+ $this->addError(wfMsgForContent('semanticmaps_bad_latlong'));
 105+ }
 106+ break;
 107+ case 'E': case 'W': // interpret findings as longitude
 108+ if ( $curnum !== false ) { // work off number without °
 109+ if ($angles[0] !== false) { // "12° 34" as coordinate, complain
 110+ $this->addError(wfMsgForContent('semanticmaps_bad_latlong'));
 111+ break;
 112+ } else {
 113+ $angles[0] = $curnum;
 114+ $curnum = false;
 115+ }
 116+ }
 117+ if (($this->m_long === false) && ($angles[0] !== false)) {
 118+ $this->setAngleValues($part,$angles);
 119+ } else {
 120+ $this->addError(wfMsgForContent('semanticmaps_bad_latlong'));
 121+ }
 122+ break;
 123+ case ';': // interpret findings as latitude
 124+ if ( $curnum !== false ) { // work off number without °
 125+ if ($angles[0] !== false) { // "12° 34" as coordinate, complain
 126+ $this->addError(wfMsgForContent('semanticmaps_bad_latlong'));
 127+ break;
 128+ } else {
 129+ $angles[0] = $curnum;
 130+ $curnum = false;
 131+ }
 132+ }
 133+ if (($this->m_lat === false) && ($angles[0] !== false)) {
 134+ $this->setAngleValues('N',$angles);
 135+ } // else: ignore ";" without complaining
 136+ break;
 137+ case '': break; // ignore
 138+ default: // should be a number (if not, errors appear elsewhere)
 139+ // no kiloseps in coordinates, use as decsep as a convenience to some users (Bug 11808):
 140+ $curnum = str_replace(wfMsgForContent('semanticmaps_kiloseparator'), wfMsgForContent('semanticmaps_decseparator'), $part);
 141+ break;
 142+ }
 143+ }
 144+
 145+ if ( ($this->m_lat !== false) && ($this->m_long === false) && ($angles[0] !== false) ) { // no final E or W?
 146+ $this->setAngleValues('E',$angles);
 147+ }
 148+ if ( ($angles[0] !== false)||($curnum !== false)) { // unprocessed chunk, error
 149+
 150+ }
 151+
 152+ if ($this->m_caption === false) {
 153+ $this->m_caption = $value;
 154+ }
 155+ return true;
 156+ }
 157+
 158+ protected function parseDBkeys($args) {
 159+ $this->m_lat = false;
 160+ $this->m_long = false;
 161+ $this->m_latparts = false;
 162+ $this->m_longparts = false;
 163+
 164+ list($this->m_lat, $this->m_long) = explode(',', $args[0]);
 165+ $this->m_caption = $this->formatAngleValues(true) . ', ' . $this->formatAngleValues(false); // this is our output text
 166+ $this->m_wikivalue = $this->m_caption;
 167+ }
 168+
 169+ public function getShortWikiText($linked = null) {
 170+ if ($this->isValid() && ($linked !== null) && ($linked !== false)) {
 171+ SMWOutputs::requireHeadItem(SMW_HEADER_TOOLTIP);
 172+ return '<span class="smwttinline">' . $this->m_caption . '<span class="smwttcontent">' .
 173+ wfMsgForContent('semanticmaps_label_latitude') . ' ' . $this->formatAngleValues(true) . '<br />' .
 174+ wfMsgForContent('semanticmaps_label_longitude') . ' ' . $this->formatAngleValues(false) .
 175+ '</span></span>';
 176+ } else {
 177+ return $this->m_caption;
 178+ }
 179+ }
 180+
 181+ public function getShortHTMLText($linker = null) {
 182+ return $this->getShortWikiText($linker); // should be save (based on xsdvalue)
 183+ }
 184+
 185+ public function getLongWikiText($linked = null) {
 186+ if (!$this->isValid()) {
 187+ return $this->getErrorText();
 188+ } else {
 189+ return $this->formatAngleValues(true) . ', ' . $this->formatAngleValues(false);
 190+ }
 191+ }
 192+
 193+ public function getLongHTMLText($linker = null) {
 194+ return $this->getLongWikiText($linker);
 195+ }
 196+
 197+ public function getDBkeys() {
 198+ $this->unstub();
 199+ return array($this->m_lat . ',' . $this->m_long);
 200+ }
 201+
 202+ public function getWikiValue(){
 203+ $this->unstub();
 204+ return $this->m_wikivalue;
 205+ }
 206+
 207+ public function getExportData() {
 208+ if ($this->isValid()) {
 209+ $lit = new SMWExpLiteral($this->formatAngleValues(true, false) . ', ' . $this->formatAngleValues(false, false), $this, 'http://www.w3.org/2001/XMLSchema#string');
 210+ return new SMWExpData($lit);
 211+ } else {
 212+ return null;
 213+ }
 214+ }
 215+
 216+ /**
 217+ * Get and cache localised direction labels. Just for convenience.
 218+ */
 219+ protected function initDirectionLabels() {
 220+ $this->m_N = wfMsgForContent('semanticmaps_abb_north');
 221+ $this->m_E = wfMsgForContent('semanticmaps_abb_east');
 222+ $this->m_W = wfMsgForContent('semanticmaps_abb_west');
 223+ $this->m_S = wfMsgForContent('semanticmaps_abb_south');
 224+ }
 225+
 226+ /**
 227+ * Helper function: read a possibly incomplete array of angles for one coordinate.
 228+ * The direction is one of N, E, W, S, and $angles is an array of three values,
 229+ * each possibly false if unset.
 230+ */
 231+ protected function setAngleValues($direction, &$angles) {
 232+ $numvalue = SMWDataValueFactory::newTypeIDValue('_num');
 233+ $res = 0;
 234+ $factor = 1;
 235+ for ($i=0; $i<3; $i++) {
 236+ if ($angles[$i] !== false) {
 237+ $numvalue->setUserValue($angles[$i]);
 238+ if ($numvalue->isValid() && ($numvalue->getUnit() == '')) {
 239+ $res += $numvalue->getNumericValue() / $factor;
 240+ } else {
 241+ $this->addError(wfMsgForContent('smw_nofloat', $angles[$i]));
 242+ }
 243+ }
 244+ $factor = $factor * 60;
 245+ }
 246+ switch ($direction) {
 247+ case 'N': $this->m_lat = $res; break;
 248+ case 'S': $this->m_lat = -1 * $res; break;
 249+ case 'E': $this->m_long = $res; break;
 250+ case 'W': $this->m_long = -1 * $res; break;
 251+ }
 252+ if ( (($direction == 'E') || ($direction == 'W')) &&
 253+ (($this->m_long > 180) || ($this->m_long <= -180)) ) { // bring values back into [180, -180)
 254+ $this->m_long += ($this->m_long<0)?(round(abs($this->m_long)/360)*360):(round($this->m_long/360)*-360);
 255+ }
 256+ ///TODO: also make such a normalisation for lat ...
 257+ $angles = array(false, false, false);
 258+ }
 259+
 260+ /**
 261+ * Return array with four entries for deg, min, sec, direction,
 262+ * that corresponds to the current latitude or longitude.
 263+ */
 264+ protected function getAngleValues($lat = true) {
 265+ if ($lat) {
 266+ if ($this->m_latparts !== false) {
 267+ return $this->m_latparts;
 268+ }
 269+ $num = abs($this->m_lat);
 270+ $d = ($this->m_lat<0)?'S':'N';
 271+ } else {
 272+ if ($this->m_longparts !== false) {
 273+ return $this->m_longparts;
 274+ }
 275+ $num = abs($this->m_long);
 276+ $d = ($this->m_long<0)?'W':'E';
 277+ }
 278+ $result = array(0,0,0,$d);
 279+ $result[0] = floor($num);
 280+ $num = ($num-$result[0]) * 60;
 281+ $result[1] = floor($num);
 282+ $result[2] = ($num-$result[1]) * 60;
 283+ if ( abs($result[2]) < 0.001 ) { // limit precission, avoid conversion generated junk and EXP notation in coords
 284+ $result[2] = 0;
 285+ }
 286+ if ($lat) {
 287+ $this->m_latparts = $result;
 288+ } else {
 289+ $this->m_longparts = $result;
 290+ }
 291+ return $result;
 292+ }
 293+
 294+ /**
 295+ * Format the current latitude or longitude. The parameter $content states
 296+ * whether the result is for content printout. Alternatively, a language-
 297+ * independent result is generated.
 298+ */
 299+ protected function formatAngleValues($lat = true, $content = true) {
 300+ $values = $this->getAngleValues($lat);
 301+ if ($content) {
 302+ $this->initDirectionLabels();
 303+ $result = smwfNumberFormat($values[0]) . '°' . smwfNumberFormat($values[1]) . SM_GEO_MIN .
 304+ smwfNumberFormat($values[2]) . SM_GEO_SEC;
 305+ switch ($values[3]) {
 306+ case 'N': return $result . $this->m_N;
 307+ case 'E': return $result . $this->m_E;
 308+ case 'W': return $result . $this->m_W;
 309+ case 'S': return $result . $this->m_S;
 310+ }
 311+ } else {
 312+ return smwfNumberFormat($values[0]) . '°' . smwfNumberFormat($values[1]) . SM_GEO_MIN .
 313+ smwfNumberFormat($values[2]) . SM_GEO_SEC . $values[3];
 314+ }
 315+ }
 316+
 317+ protected function getServiceLinkParams() {
 318+ // Create links to mapping services based on a wiki-editable message. The parameters
 319+ // available to the message are:
 320+ // $1: latitude integer degrees, $2: longitude integer degrees
 321+ // $3: latitude integer minutes, $4: longitude integer minutes
 322+ // $5: latitude integer seconds, $6: longitude integer seconds,
 323+ // $7: latitude direction string (N or S), $8: longitude direction string (W or E)
 324+ // $9: latitude in decimal degrees, $10: longitude in decimal degrees
 325+ // $11: sign (- if south) for latitude, $12: sign (- if west) for longitude
 326+ $latvals = $this->getAngleValues(true);
 327+ $longvals = $this->getAngleValues(false);
 328+ return array($latvals[0], $longvals[0],
 329+ $latvals[1], $longvals[1],
 330+ round($latvals[2]), round($longvals[2]),
 331+ $latvals[3], $longvals[3],
 332+ abs($this->m_lat), abs($this->m_long),
 333+ $latvals[3]=='S'?'-':'', $longvals[3]=='W'?'-':'');
 334+ }
 335+
 336+}
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/SM_GeoCoordsValue.php
___________________________________________________________________
Name: svn:eol-style
1337 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/SMUtilityFunctions.js
@@ -0,0 +1,19 @@
 2+ /**
 3+ * Javascript utility functions for Semantic Maps.
 4+ *
 5+ * @file SMUtilityFunctions.js
 6+ * @ingroup SemanticMaps
 7+ *
 8+ * @author Robert Buzink
 9+ * @author Yaron Koren
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+function convertLatToDMS (val) {
 14+ return Math.abs(val) + "° " + ( val < 0 ? "S" : "N" );
 15+}
 16+
 17+function convertLngToDMS (val) {
 18+ return Math.abs(val) + "° " + ( val < 0 ? "W" : "E" );
 19+
 20+}
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/SMUtilityFunctions.js
___________________________________________________________________
Name: svn:eol-style
121 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/COPYING
@@ -0,0 +1,348 @@
 2+The license text below "----" applies to all files within this distribution, other
 3+than those that are in a directory which contains files named "LICENSE" or
 4+"COPYING", or a subdirectory thereof. For those files, the license text contained in
 5+said file overrides any license information contained in directories of smaller depth.
 6+Alternative licenses are typically used for software that is provided by external
 7+parties, and merely packaged with the Semantic MediaWiki release for convenience.
 8+----
 9+
 10+ GNU GENERAL PUBLIC LICENSE
 11+ Version 2, June 1991
 12+
 13+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 14+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 15+ Everyone is permitted to copy and distribute verbatim copies
 16+ of this license document, but changing it is not allowed.
 17+
 18+ Preamble
 19+
 20+ The licenses for most software are designed to take away your
 21+freedom to share and change it. By contrast, the GNU General Public
 22+License is intended to guarantee your freedom to share and change free
 23+software--to make sure the software is free for all its users. This
 24+General Public License applies to most of the Free Software
 25+Foundation's software and to any other program whose authors commit to
 26+using it. (Some other Free Software Foundation software is covered by
 27+the GNU Library General Public License instead.) You can apply it to
 28+your programs, too.
 29+
 30+ When we speak of free software, we are referring to freedom, not
 31+price. Our General Public Licenses are designed to make sure that you
 32+have the freedom to distribute copies of free software (and charge for
 33+this service if you wish), that you receive source code or can get it
 34+if you want it, that you can change the software or use pieces of it
 35+in new free programs; and that you know you can do these things.
 36+
 37+ To protect your rights, we need to make restrictions that forbid
 38+anyone to deny you these rights or to ask you to surrender the rights.
 39+These restrictions translate to certain responsibilities for you if you
 40+distribute copies of the software, or if you modify it.
 41+
 42+ For example, if you distribute copies of such a program, whether
 43+gratis or for a fee, you must give the recipients all the rights that
 44+you have. You must make sure that they, too, receive or can get the
 45+source code. And you must show them these terms so they know their
 46+rights.
 47+
 48+ We protect your rights with two steps: (1) copyright the software, and
 49+(2) offer you this license which gives you legal permission to copy,
 50+distribute and/or modify the software.
 51+
 52+ Also, for each author's protection and ours, we want to make certain
 53+that everyone understands that there is no warranty for this free
 54+software. If the software is modified by someone else and passed on, we
 55+want its recipients to know that what they have is not the original, so
 56+that any problems introduced by others will not reflect on the original
 57+authors' reputations.
 58+
 59+ Finally, any free program is threatened constantly by software
 60+patents. We wish to avoid the danger that redistributors of a free
 61+program will individually obtain patent licenses, in effect making the
 62+program proprietary. To prevent this, we have made it clear that any
 63+patent must be licensed for everyone's free use or not licensed at all.
 64+
 65+ The precise terms and conditions for copying, distribution and
 66+modification follow.
 67+
 68+ GNU GENERAL PUBLIC LICENSE
 69+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 70+
 71+ 0. This License applies to any program or other work which contains
 72+a notice placed by the copyright holder saying it may be distributed
 73+under the terms of this General Public License. The "Program", below,
 74+refers to any such program or work, and a "work based on the Program"
 75+means either the Program or any derivative work under copyright law:
 76+that is to say, a work containing the Program or a portion of it,
 77+either verbatim or with modifications and/or translated into another
 78+language. (Hereinafter, translation is included without limitation in
 79+the term "modification".) Each licensee is addressed as "you".
 80+
 81+Activities other than copying, distribution and modification are not
 82+covered by this License; they are outside its scope. The act of
 83+running the Program is not restricted, and the output from the Program
 84+is covered only if its contents constitute a work based on the
 85+Program (independent of having been made by running the Program).
 86+Whether that is true depends on what the Program does.
 87+
 88+ 1. You may copy and distribute verbatim copies of the Program's
 89+source code as you receive it, in any medium, provided that you
 90+conspicuously and appropriately publish on each copy an appropriate
 91+copyright notice and disclaimer of warranty; keep intact all the
 92+notices that refer to this License and to the absence of any warranty;
 93+and give any other recipients of the Program a copy of this License
 94+along with the Program.
 95+
 96+You may charge a fee for the physical act of transferring a copy, and
 97+you may at your option offer warranty protection in exchange for a fee.
 98+
 99+ 2. You may modify your copy or copies of the Program or any portion
 100+of it, thus forming a work based on the Program, and copy and
 101+distribute such modifications or work under the terms of Section 1
 102+above, provided that you also meet all of these conditions:
 103+
 104+ a) You must cause the modified files to carry prominent notices
 105+ stating that you changed the files and the date of any change.
 106+
 107+ b) You must cause any work that you distribute or publish, that in
 108+ whole or in part contains or is derived from the Program or any
 109+ part thereof, to be licensed as a whole at no charge to all third
 110+ parties under the terms of this License.
 111+
 112+ c) If the modified program normally reads commands interactively
 113+ when run, you must cause it, when started running for such
 114+ interactive use in the most ordinary way, to print or display an
 115+ announcement including an appropriate copyright notice and a
 116+ notice that there is no warranty (or else, saying that you provide
 117+ a warranty) and that users may redistribute the program under
 118+ these conditions, and telling the user how to view a copy of this
 119+ License. (Exception: if the Program itself is interactive but
 120+ does not normally print such an announcement, your work based on
 121+ the Program is not required to print an announcement.)
 122+
 123+These requirements apply to the modified work as a whole. If
 124+identifiable sections of that work are not derived from the Program,
 125+and can be reasonably considered independent and separate works in
 126+themselves, then this License, and its terms, do not apply to those
 127+sections when you distribute them as separate works. But when you
 128+distribute the same sections as part of a whole which is a work based
 129+on the Program, the distribution of the whole must be on the terms of
 130+this License, whose permissions for other licensees extend to the
 131+entire whole, and thus to each and every part regardless of who wrote it.
 132+
 133+Thus, it is not the intent of this section to claim rights or contest
 134+your rights to work written entirely by you; rather, the intent is to
 135+exercise the right to control the distribution of derivative or
 136+collective works based on the Program.
 137+
 138+In addition, mere aggregation of another work not based on the Program
 139+with the Program (or with a work based on the Program) on a volume of
 140+a storage or distribution medium does not bring the other work under
 141+the scope of this License.
 142+
 143+ 3. You may copy and distribute the Program (or a work based on it,
 144+under Section 2) in object code or executable form under the terms of
 145+Sections 1 and 2 above provided that you also do one of the following:
 146+
 147+ a) Accompany it with the complete corresponding machine-readable
 148+ source code, which must be distributed under the terms of Sections
 149+ 1 and 2 above on a medium customarily used for software interchange; or,
 150+
 151+ b) Accompany it with a written offer, valid for at least three
 152+ years, to give any third party, for a charge no more than your
 153+ cost of physically performing source distribution, a complete
 154+ machine-readable copy of the corresponding source code, to be
 155+ distributed under the terms of Sections 1 and 2 above on a medium
 156+ customarily used for software interchange; or,
 157+
 158+ c) Accompany it with the information you received as to the offer
 159+ to distribute corresponding source code. (This alternative is
 160+ allowed only for noncommercial distribution and only if you
 161+ received the program in object code or executable form with such
 162+ an offer, in accord with Subsection b above.)
 163+
 164+The source code for a work means the preferred form of the work for
 165+making modifications to it. For an executable work, complete source
 166+code means all the source code for all modules it contains, plus any
 167+associated interface definition files, plus the scripts used to
 168+control compilation and installation of the executable. However, as a
 169+special exception, the source code distributed need not include
 170+anything that is normally distributed (in either source or binary
 171+form) with the major components (compiler, kernel, and so on) of the
 172+operating system on which the executable runs, unless that component
 173+itself accompanies the executable.
 174+
 175+If distribution of executable or object code is made by offering
 176+access to copy from a designated place, then offering equivalent
 177+access to copy the source code from the same place counts as
 178+distribution of the source code, even though third parties are not
 179+compelled to copy the source along with the object code.
 180+
 181+ 4. You may not copy, modify, sublicense, or distribute the Program
 182+except as expressly provided under this License. Any attempt
 183+otherwise to copy, modify, sublicense or distribute the Program is
 184+void, and will automatically terminate your rights under this License.
 185+However, parties who have received copies, or rights, from you under
 186+this License will not have their licenses terminated so long as such
 187+parties remain in full compliance.
 188+
 189+ 5. You are not required to accept this License, since you have not
 190+signed it. However, nothing else grants you permission to modify or
 191+distribute the Program or its derivative works. These actions are
 192+prohibited by law if you do not accept this License. Therefore, by
 193+modifying or distributing the Program (or any work based on the
 194+Program), you indicate your acceptance of this License to do so, and
 195+all its terms and conditions for copying, distributing or modifying
 196+the Program or works based on it.
 197+
 198+ 6. Each time you redistribute the Program (or any work based on the
 199+Program), the recipient automatically receives a license from the
 200+original licensor to copy, distribute or modify the Program subject to
 201+these terms and conditions. You may not impose any further
 202+restrictions on the recipients' exercise of the rights granted herein.
 203+You are not responsible for enforcing compliance by third parties to
 204+this License.
 205+
 206+ 7. If, as a consequence of a court judgment or allegation of patent
 207+infringement or for any other reason (not limited to patent issues),
 208+conditions are imposed on you (whether by court order, agreement or
 209+otherwise) that contradict the conditions of this License, they do not
 210+excuse you from the conditions of this License. If you cannot
 211+distribute so as to satisfy simultaneously your obligations under this
 212+License and any other pertinent obligations, then as a consequence you
 213+may not distribute the Program at all. For example, if a patent
 214+license would not permit royalty-free redistribution of the Program by
 215+all those who receive copies directly or indirectly through you, then
 216+the only way you could satisfy both it and this License would be to
 217+refrain entirely from distribution of the Program.
 218+
 219+If any portion of this section is held invalid or unenforceable under
 220+any particular circumstance, the balance of the section is intended to
 221+apply and the section as a whole is intended to apply in other
 222+circumstances.
 223+
 224+It is not the purpose of this section to induce you to infringe any
 225+patents or other property right claims or to contest validity of any
 226+such claims; this section has the sole purpose of protecting the
 227+integrity of the free software distribution system, which is
 228+implemented by public license practices. Many people have made
 229+generous contributions to the wide range of software distributed
 230+through that system in reliance on consistent application of that
 231+system; it is up to the author/donor to decide if he or she is willing
 232+to distribute software through any other system and a licensee cannot
 233+impose that choice.
 234+
 235+This section is intended to make thoroughly clear what is believed to
 236+be a consequence of the rest of this License.
 237+
 238+ 8. If the distribution and/or use of the Program is restricted in
 239+certain countries either by patents or by copyrighted interfaces, the
 240+original copyright holder who places the Program under this License
 241+may add an explicit geographical distribution limitation excluding
 242+those countries, so that distribution is permitted only in or among
 243+countries not thus excluded. In such case, this License incorporates
 244+the limitation as if written in the body of this License.
 245+
 246+ 9. The Free Software Foundation may publish revised and/or new versions
 247+of the General Public License from time to time. Such new versions will
 248+be similar in spirit to the present version, but may differ in detail to
 249+address new problems or concerns.
 250+
 251+Each version is given a distinguishing version number. If the Program
 252+specifies a version number of this License which applies to it and "any
 253+later version", you have the option of following the terms and conditions
 254+either of that version or of any later version published by the Free
 255+Software Foundation. If the Program does not specify a version number of
 256+this License, you may choose any version ever published by the Free Software
 257+Foundation.
 258+
 259+ 10. If you wish to incorporate parts of the Program into other free
 260+programs whose distribution conditions are different, write to the author
 261+to ask for permission. For software which is copyrighted by the Free
 262+Software Foundation, write to the Free Software Foundation; we sometimes
 263+make exceptions for this. Our decision will be guided by the two goals
 264+of preserving the free status of all derivatives of our free software and
 265+of promoting the sharing and reuse of software generally.
 266+
 267+ NO WARRANTY
 268+
 269+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 270+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
 271+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
 272+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
 273+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 274+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
 275+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
 276+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 277+REPAIR OR CORRECTION.
 278+
 279+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 280+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 281+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
 282+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
 283+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
 284+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
 285+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 286+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 287+POSSIBILITY OF SUCH DAMAGES.
 288+
 289+ END OF TERMS AND CONDITIONS
 290+
 291+ How to Apply These Terms to Your New Programs
 292+
 293+ If you develop a new program, and you want it to be of the greatest
 294+possible use to the public, the best way to achieve this is to make it
 295+free software which everyone can redistribute and change under these terms.
 296+
 297+ To do so, attach the following notices to the program. It is safest
 298+to attach them to the start of each source file to most effectively
 299+convey the exclusion of warranty; and each file should have at least
 300+the "copyright" line and a pointer to where the full notice is found.
 301+
 302+ <one line to give the program's name and a brief idea of what it does.>
 303+ Copyright (C) <year> <name of author>
 304+
 305+ This program is free software; you can redistribute it and/or modify
 306+ it under the terms of the GNU General Public License as published by
 307+ the Free Software Foundation; either version 2 of the License, or
 308+ (at your option) any later version.
 309+
 310+ This program is distributed in the hope that it will be useful,
 311+ but WITHOUT ANY WARRANTY; without even the implied warranty of
 312+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 313+ GNU General Public License for more details.
 314+
 315+ You should have received a copy of the GNU General Public License
 316+ along with this program; if not, write to the Free Software
 317+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 318+
 319+
 320+Also add information on how to contact you by electronic and paper mail.
 321+
 322+If the program is interactive, make it output a short notice like this
 323+when it starts in an interactive mode:
 324+
 325+ Gnomovision version 69, Copyright (C) year name of author
 326+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
 327+ This is free software, and you are welcome to redistribute it
 328+ under certain conditions; type `show c' for details.
 329+
 330+The hypothetical commands `show w' and `show c' should show the appropriate
 331+parts of the General Public License. Of course, the commands you use may
 332+be called something other than `show w' and `show c'; they could even be
 333+mouse-clicks or menu items--whatever suits your program.
 334+
 335+You should also get your employer (if you work as a programmer) or your
 336+school, if any, to sign a "copyright disclaimer" for the program, if
 337+necessary. Here is a sample; alter the names:
 338+
 339+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
 340+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
 341+
 342+ <signature of Ty Coon>, 1 April 1989
 343+ Ty Coon, President of Vice
 344+
 345+This General Public License does not permit incorporating your program into
 346+proprietary programs. If your program is a subroutine library, you may
 347+consider it more useful to permit linking proprietary applications with the
 348+library. If this is what you want to do, use the GNU Library General
 349+Public License instead of this License.
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/COPYING
___________________________________________________________________
Name: svn:eol-style
1350 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/SemanticMaps.i18n.php
@@ -0,0 +1,1159 @@
 2+<?php
 3+
 4+/**
 5+ * Internationalization file for the Semantic Maps extension
 6+ *
 7+ * @file SemanticMaps.i18n.php
 8+ * @ingroup Semantic Maps
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+$messages = array();
 14+
 15+/** English
 16+ * @author Jeroen De Dauw
 17+ */
 18+
 19+$messages['en'] = array(
 20+ // General
 21+ 'semanticmaps_name' => 'Semantic Maps',
 22+ 'semanticmaps_desc' => "Provides the ability to view and edit coordinate data stored through the Semantic MediaWiki extension ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 23+Available map services: $1",
 24+
 25+ // Geo coord data type
 26+ 'semanticmaps_lonely_unit' => 'No number found before the symbol "$1".', // $1 is something like °
 27+ 'semanticmaps_bad_latlong' => 'Latitude and longitude must be given only once, and with valid coordinates.',
 28+ 'semanticmaps_abb_north' => 'N',
 29+ 'semanticmaps_abb_east' => 'E',
 30+ 'semanticmaps_abb_south' => 'S',
 31+ 'semanticmaps_abb_west' => 'W',
 32+ 'semanticmaps_label_latitude' => 'Latitude:',
 33+ 'semanticmaps_label_longitude' => 'Longitude:',
 34+
 35+ // Forms
 36+ 'semanticmaps_lookupcoordinates' => 'Look up coordinates',
 37+ 'semanticmaps_enteraddresshere' => 'Enter address here',
 38+ 'semanticmaps_notfound' => 'not found',
 39+
 40+ // Parameter descriptions
 41+ 'semanticmaps_paramdesc_format' => 'The mapping service used to generate the map',
 42+ 'semanticmaps_paramdesc_geoservice' => 'The geocoding service used to turn addresses into coordinates',
 43+ 'semanticmaps_paramdesc_height' => 'The height of the map, in pixels (default is $1)',
 44+ 'semanticmaps_paramdesc_width' => 'The width of the map, in pixels (default is $1)',
 45+ 'semanticmaps_paramdesc_zoom' => 'The zoom level of the map',
 46+ 'semanticmaps_paramdesc_centre' => 'The coordinates of the maps\' centre',
 47+ 'semanticmaps_paramdesc_controls' => 'The user controls placed on the map',
 48+ 'semanticmaps_paramdesc_types' => 'The map types available on the map',
 49+ 'semanticmaps_paramdesc_type' => 'The default map type for the map',
 50+ 'semanticmaps_paramdesc_overlays' => 'The overlays available on the map',
 51+ 'semanticmaps_paramdesc_autozoom' => 'If zoom in and out by using the mouse scroll wheel is enabled',
 52+ 'semanticmaps_paramdesc_layers' => 'The layers available on the map',
 53+);
 54+
 55+/** Message documentation (Message documentation)
 56+ * @author Fryed-peach
 57+ * @author Purodha
 58+ * @author Raymond
 59+ */
 60+$messages['qqq'] = array(
 61+ 'semanticmaps_desc' => '{{desc}}
 62+
 63+* $1: a list of available map services',
 64+ 'semanticmaps_label_latitude' => '{{Identical|Latitude}}',
 65+ 'semanticmaps_label_longitude' => '{{Identical|Longitude}}',
 66+ 'semanticmaps_paramdesc_overlays' => 'An "overlay" is a map layer, containing icons or images, or whatever, to enrich, in this case, the map. Could for example be a layer with speed cameras, or municipality borders.',
 67+);
 68+
 69+/** Afrikaans (Afrikaans)
 70+ * @author Naudefj
 71+ */
 72+$messages['af'] = array(
 73+ 'semanticmaps_desc' => 'Bied die vermoë om koördinaatdata met behulp van die Semantiese MediaWiki-uitbreiding te sien en te wysig ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 74+Beskikbare kaartdienste: $1',
 75+ 'semanticmaps_lonely_unit' => 'Daar is nie \'n getal voor die "$1"-simbool nie.',
 76+ 'semanticmaps_bad_latlong' => 'Lengte en breedte moet slegs een keer gegee word, en moet geldige koördinate wees.',
 77+ 'semanticmaps_abb_north' => 'N',
 78+ 'semanticmaps_abb_east' => 'O',
 79+ 'semanticmaps_abb_south' => 'S',
 80+ 'semanticmaps_abb_west' => 'W',
 81+ 'semanticmaps_label_latitude' => 'Breedte:',
 82+ 'semanticmaps_label_longitude' => 'Lengte:',
 83+ 'semanticmaps_lookupcoordinates' => 'Soek koördinate op',
 84+ 'semanticmaps_enteraddresshere' => 'Voer adres hier in',
 85+ 'semanticmaps_notfound' => 'nie gevind nie',
 86+ 'semanticmaps_paramdesc_format' => 'Die kaartdiens wat die kaart lewer',
 87+ 'semanticmaps_paramdesc_geoservice' => 'Die geokoderingsdiens gebruik om adresse na koördinate om te skakel',
 88+ 'semanticmaps_paramdesc_height' => 'Die hoogte van die kaart in spikkels (standaard is $1)',
 89+ 'semanticmaps_paramdesc_width' => 'Die breedte van die kaart in spikkels (standaard is $1)',
 90+ 'semanticmaps_paramdesc_zoom' => 'Die zoom-vlak van die kaart',
 91+ 'semanticmaps_paramdesc_centre' => 'Die koördinate van die middel van die kaart',
 92+ 'semanticmaps_paramdesc_controls' => 'Die gebruikerskontroles op die kaart geplaas',
 93+ 'semanticmaps_paramdesc_types' => 'Die kaarttipes beskikbaar op die kaart',
 94+ 'semanticmaps_paramdesc_type' => 'Die standaard kaarttipe vir die kaart',
 95+ 'semanticmaps_paramdesc_overlays' => 'Die oorleggings beskikbaar op die kaart',
 96+ 'semanticmaps_paramdesc_autozoom' => 'Of in- en uitzoom met die muis se wiel moontlik is',
 97+ 'semanticmaps_paramdesc_layers' => 'Die lae beskikbaar op die kaart',
 98+);
 99+
 100+/** Arabic (العربية)
 101+ * @author Meno25
 102+ * @author OsamaK
 103+ */
 104+$messages['ar'] = array(
 105+ 'semanticmaps_name' => 'خرائط دلالية',
 106+ 'semanticmaps_desc' => 'يقدم إمكانية عرض وتعديل بيانات التنسيق التي خزنها امتداد سيمانتيك ميدياويكي ([http://wiki.bn2vs.com/wiki/Semantic_Maps تجربة]).
 107+خدمات الخرائط المتوفرة: $1',
 108+ 'semanticmaps_lonely_unit' => 'لا رقم تم العثور عليه قبل الرمز "$1".',
 109+ 'semanticmaps_bad_latlong' => 'دائرة العرض وخط الطول يجب أن يتم إعطاؤهم مرة واحدة فقط، وبإحداثيات صحيحة.',
 110+ 'semanticmaps_abb_north' => 'شم',
 111+ 'semanticmaps_abb_east' => 'شر',
 112+ 'semanticmaps_abb_south' => 'ج',
 113+ 'semanticmaps_abb_west' => 'غ',
 114+ 'semanticmaps_label_latitude' => 'دائرة العرض:',
 115+ 'semanticmaps_label_longitude' => 'خط الطول:',
 116+ 'semanticmaps_lookupcoordinates' => 'ابحث عن الإحداثيات',
 117+ 'semanticmaps_enteraddresshere' => 'أدخل العنوان هنا',
 118+ 'semanticmaps_notfound' => 'لم يوجد',
 119+ 'semanticmaps_paramdesc_format' => 'خدمة الخرائط المستخدمة لتوليد الخريطة',
 120+ 'semanticmaps_paramdesc_geoservice' => 'خدمة التكويد الجغرافي المستخدمة لتحويل العناوين إلى إحداثيات',
 121+ 'semanticmaps_paramdesc_height' => 'ارتفاع الخريطة، بالبكسل (افتراضيا $1)',
 122+ 'semanticmaps_paramdesc_width' => 'عرض الخريطة، بالبكسل (افتراضيا $1)',
 123+ 'semanticmaps_paramdesc_zoom' => 'مستوى التقريب للخريطة',
 124+ 'semanticmaps_paramdesc_centre' => 'إحداثيات وسط الخريطة',
 125+ 'semanticmaps_paramdesc_controls' => 'متحكمات المستخدم موضوعة على الخريطة',
 126+ 'semanticmaps_paramdesc_types' => 'أنواع الخرائط المتوفرة على الخريطة',
 127+ 'semanticmaps_paramdesc_type' => 'نوع الخريطة الافتراضي للخريطة',
 128+ 'semanticmaps_paramdesc_overlays' => 'الطبقات الفوقية متوفرة على الخريطة',
 129+ 'semanticmaps_paramdesc_autozoom' => 'لو أن التقريب والابتعاد بواسطة استخدام عجلة تدحرج الفأرة مفعلة',
 130+ 'semanticmaps_paramdesc_layers' => 'الطبقات المتوفرة على الخريطة',
 131+);
 132+
 133+/** Egyptian Spoken Arabic (مصرى)
 134+ * @author Ghaly
 135+ * @author Meno25
 136+ */
 137+$messages['arz'] = array(
 138+ 'semanticmaps_name' => 'خرائط دلالية',
 139+ 'semanticmaps_lookupcoordinates' => 'ابحث عن الإحداثيات',
 140+ 'semanticmaps_enteraddresshere' => 'أدخل العنوان هنا',
 141+);
 142+
 143+/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца))
 144+ * @author EugeneZelenko
 145+ * @author Jim-by
 146+ */
 147+$messages['be-tarask'] = array(
 148+ 'semanticmaps_name' => 'Сэмантычныя мапы',
 149+ 'semanticmaps_desc' => 'Забясьпечвае магчымасьць прагляду і рэдагаваньня зьвестак пра каардынаты, якія захоўваюцца з дапамогай пашырэньня Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps дэманстрацыя]). Даступныя сэрвісы мапаў: $1',
 150+ 'semanticmaps_lonely_unit' => 'Лік перад сымбалем «$1» ня знойдзены.',
 151+ 'semanticmaps_bad_latlong' => 'Даўгата і шырата павінны падавацца толькі аднойчы і са слушнымі каардынатамі.',
 152+ 'semanticmaps_abb_north' => 'Пн.',
 153+ 'semanticmaps_abb_east' => 'У.',
 154+ 'semanticmaps_abb_south' => 'Пд.',
 155+ 'semanticmaps_abb_west' => 'З.',
 156+ 'semanticmaps_label_latitude' => 'Шырата:',
 157+ 'semanticmaps_label_longitude' => 'Даўгата:',
 158+ 'semanticmaps_lookupcoordinates' => 'Пошук каардынатаў',
 159+ 'semanticmaps_enteraddresshere' => 'Увядзіце тут адрас',
 160+ 'semanticmaps_notfound' => 'ня знойдзена',
 161+ 'semanticmaps_paramdesc_format' => 'Картаграфічны сэрвіс, які выкарыстоўваецца для стварэньня мапаў',
 162+ 'semanticmaps_paramdesc_geoservice' => 'Сэрвіс геаграфічнага кадаваньня, які выкарыстоўваецца для пераўтварэньня адрасоў ў каардынаты',
 163+ 'semanticmaps_paramdesc_height' => 'Вышыня мапы ў піксэлях (па змоўчваньні $1)',
 164+ 'semanticmaps_paramdesc_width' => 'Шырыня мапы ў піксэлях (па змоўчваньні $1)',
 165+ 'semanticmaps_paramdesc_zoom' => 'Маштаб мапы',
 166+ 'semanticmaps_paramdesc_centre' => 'Каардынаты цэнтру мапы',
 167+ 'semanticmaps_paramdesc_controls' => 'Элемэнты кіраваньня на мапе',
 168+ 'semanticmaps_paramdesc_types' => 'Тыпы мапы даступныя на мапе',
 169+ 'semanticmaps_paramdesc_type' => 'Тып мапы па змоўчваньні',
 170+ 'semanticmaps_paramdesc_overlays' => 'Даступныя слаі на мапе',
 171+ 'semanticmaps_paramdesc_autozoom' => 'Калі ўключана зьмяншэньне ці павялічэньне маштабу праз кола пракруткі мышы',
 172+ 'semanticmaps_paramdesc_layers' => 'Даступныя слаі на мапе',
 173+);
 174+
 175+/** Breton (Brezhoneg)
 176+ * @author Fohanno
 177+ * @author Fulup
 178+ * @author Y-M D
 179+ */
 180+$messages['br'] = array(
 181+ 'semanticmaps_desc' => 'Talvezout a ra da welet ha da gemmañ roadennoù stoket dre an astenn Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]). Servijoù kartennoù hegerz : $1',
 182+ 'semanticmaps_lonely_unit' => "N'eus bet kavet niver ebet a-raok an arouezenn « $1 ».",
 183+ 'semanticmaps_abb_north' => 'N',
 184+ 'semanticmaps_abb_east' => 'R',
 185+ 'semanticmaps_abb_south' => 'S',
 186+ 'semanticmaps_abb_west' => 'K',
 187+ 'semanticmaps_label_latitude' => 'Ledred :',
 188+ 'semanticmaps_label_longitude' => 'Hedred :',
 189+ 'semanticmaps_lookupcoordinates' => 'Istimañ an daveennoù',
 190+ 'semanticmaps_enteraddresshere' => "Merkit ar chomlec'h amañ",
 191+ 'semanticmaps_notfound' => "N'eo ket bet kavet",
 192+ 'semanticmaps_paramdesc_format' => 'Ar servij kartennaouiñ implijet da grouiñ ar gartenn',
 193+ 'semanticmaps_paramdesc_height' => 'Uhelder ar gartenn, e pikseloù ($1 dre izouer)',
 194+ 'semanticmaps_paramdesc_width' => 'Ledander ar gartenn, e pikseloù ($1 dre izouer)',
 195+ 'semanticmaps_paramdesc_zoom' => 'Live zoum ar gartenn',
 196+ 'semanticmaps_paramdesc_centre' => 'Daveennoù kreiz ar gartenn',
 197+ 'semanticmaps_paramdesc_controls' => "Ar c'hontrolloù implijer lakaet war ar gartenn",
 198+ 'semanticmaps_paramdesc_types' => "Tu 'zo kaout an doareoù kartennoù war ar gartenn",
 199+ 'semanticmaps_paramdesc_type' => 'Ar seurt kartenn dre ziouer evit ar gartenn',
 200+ 'semanticmaps_paramdesc_layers' => 'Ar gwiskadoù zo da gaout war ar gartenn',
 201+);
 202+
 203+/** Bosnian (Bosanski)
 204+ * @author CERminator
 205+ */
 206+$messages['bs'] = array(
 207+ 'semanticmaps_desc' => 'Daje mogućnost pregleda i uređivanja podataka koordinata koji su spremljeni putem Semantic MediaWiki proširenja ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 208+Dostupne usluge mapa: $1',
 209+ 'semanticmaps_lonely_unit' => 'Nije pronađen broj ispred simbola "$1".',
 210+ 'semanticmaps_bad_latlong' => 'Geografska širina i dužina moraju biti navedene samo jednom i sa valjanim koordinatama.',
 211+ 'semanticmaps_abb_north' => 'S',
 212+ 'semanticmaps_abb_east' => 'I',
 213+ 'semanticmaps_abb_south' => 'J',
 214+ 'semanticmaps_abb_west' => 'Z',
 215+ 'semanticmaps_label_latitude' => 'Geografska širina:',
 216+ 'semanticmaps_label_longitude' => 'Geografska dužina:',
 217+ 'semanticmaps_lookupcoordinates' => 'Nađi koordinate',
 218+ 'semanticmaps_enteraddresshere' => 'Unesite adresu ovdje',
 219+ 'semanticmaps_notfound' => 'nije pronađeno',
 220+ 'semanticmaps_paramdesc_format' => 'Usluga kartiranja korištena za generiranje karte',
 221+ 'semanticmaps_paramdesc_geoservice' => 'Usluga geokodiranja korištena za pretvaranje adresa u koordinate',
 222+ 'semanticmaps_paramdesc_height' => 'Visina mape, u pikselima (pretpostavljeno je $1)',
 223+ 'semanticmaps_paramdesc_width' => 'Širina mape, u pikselima (pretpostavljeno je $1)',
 224+ 'semanticmaps_paramdesc_zoom' => 'Nivo zumiranja mape',
 225+ 'semanticmaps_paramdesc_centre' => 'Koordinate centra karte',
 226+ 'semanticmaps_paramdesc_controls' => 'Korisničke kontrole postavljene na kartu',
 227+ 'semanticmaps_paramdesc_types' => 'Tipovi karti dostupnih na mapi',
 228+ 'semanticmaps_paramdesc_type' => 'Pretpostavljeni tip karte za kartu',
 229+ 'semanticmaps_paramdesc_overlays' => 'Slojevi dostupni na karti',
 230+ 'semanticmaps_paramdesc_autozoom' => 'Ako je zumiranje i odaljavanje putem kotačića na mišu omogućeno',
 231+ 'semanticmaps_paramdesc_layers' => 'Slojevi dostupni na mapi',
 232+);
 233+
 234+/** Catalan (Català)
 235+ * @author Paucabot
 236+ * @author Solde
 237+ */
 238+$messages['ca'] = array(
 239+ 'semanticmaps_abb_north' => 'N',
 240+ 'semanticmaps_abb_east' => 'E',
 241+ 'semanticmaps_abb_south' => 'S',
 242+ 'semanticmaps_abb_west' => 'W',
 243+ 'semanticmaps_label_latitude' => 'Latitud:',
 244+ 'semanticmaps_notfound' => "no s'ha trobat",
 245+);
 246+
 247+/** German (Deutsch)
 248+ * @author DaSch
 249+ * @author Imre
 250+ * @author Pill
 251+ * @author Umherirrender
 252+ */
 253+$messages['de'] = array(
 254+ 'semanticmaps_desc' => 'Ergänzt eine Möglichkeit zum Ansehen und Bearbeiten von Koordinaten, die im Rahmen der Erweiterung „Semantisches MediaWiki“ gespeichert wurden ([http://wiki.bn2vs.com/wiki/Semantic_Maps Demo]).
 255+Unterstützte Kartendienste: $1',
 256+ 'semanticmaps_lonely_unit' => 'Keine Zahl vor dem Symbol "$1" gefunden.',
 257+ 'semanticmaps_bad_latlong' => 'Breiten- und Längengrad dürfen nur einmal und mit gültigen Koordinaten angegeben werden.',
 258+ 'semanticmaps_abb_north' => 'N',
 259+ 'semanticmaps_abb_east' => 'O',
 260+ 'semanticmaps_abb_south' => 'S',
 261+ 'semanticmaps_abb_west' => 'W',
 262+ 'semanticmaps_label_latitude' => 'Breitengrad:',
 263+ 'semanticmaps_label_longitude' => 'Längengrad:',
 264+ 'semanticmaps_lookupcoordinates' => 'Koordinaten nachschlagen',
 265+ 'semanticmaps_enteraddresshere' => 'Adresse hier eingeben',
 266+ 'semanticmaps_notfound' => 'nicht gefunden',
 267+ 'semanticmaps_paramdesc_format' => 'Der Kartographiedienst zum Generieren der Karte',
 268+ 'semanticmaps_paramdesc_geoservice' => 'Der Geokodierungsdienst, um Adressen in Koordinaten umzuwandeln',
 269+ 'semanticmaps_paramdesc_height' => 'Die Höhe der Karte in Pixeln (Standard ist $1)',
 270+ 'semanticmaps_paramdesc_width' => 'Die Breite der Karte in Pixeln (Standard ist $1)',
 271+ 'semanticmaps_paramdesc_zoom' => 'Die Vergrößerungsstufe der Karte',
 272+ 'semanticmaps_paramdesc_centre' => 'Die Koordinaten der Kartenmitte',
 273+ 'semanticmaps_paramdesc_controls' => 'Die Benutzerkontrollen, die sich auf der Karte befinden',
 274+ 'semanticmaps_paramdesc_types' => 'Die verfügbaren Kartentypen für die Karte',
 275+ 'semanticmaps_paramdesc_type' => 'Der Standard-Kartentyp für die Karte',
 276+ 'semanticmaps_paramdesc_overlays' => 'Die auf der Karte verfügbaren Overlays',
 277+ 'semanticmaps_paramdesc_autozoom' => 'Wenn Vergrößerung und Verkleinerung mit dem Maus-Scrollrad aktiviert ist',
 278+ 'semanticmaps_paramdesc_layers' => 'Die auf der Karte verfügbaren Ebenen',
 279+);
 280+
 281+/** Lower Sorbian (Dolnoserbski)
 282+ * @author Michawiki
 283+ */
 284+$messages['dsb'] = array(
 285+ 'semanticmaps_desc' => 'Bitujo zmóžnosć se koordinatowe daty pśez rozšyrjenje Semantic MediaWiki woglědaś a wobźěłaś ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 286+K dispoziciji stojece kórtowe słužby: $1.',
 287+ 'semanticmaps_lonely_unit' => 'Pśed symbolom "$1" žedna licba namakana.',
 288+ 'semanticmaps_bad_latlong' => 'Šyrina a dlinina musytej se jano jaden raz pódaś, a z płaśiwymi koordinatami.',
 289+ 'semanticmaps_abb_north' => 'PP',
 290+ 'semanticmaps_abb_east' => 'PZ',
 291+ 'semanticmaps_abb_south' => 'PD',
 292+ 'semanticmaps_abb_west' => 'PW',
 293+ 'semanticmaps_label_latitude' => 'Šyrina:',
 294+ 'semanticmaps_label_longitude' => 'Dlinina:',
 295+ 'semanticmaps_lookupcoordinates' => 'Za koordinatami póglědaś',
 296+ 'semanticmaps_enteraddresshere' => 'Zapódaj how adresu',
 297+ 'semanticmaps_notfound' => 'njenamakany',
 298+ 'semanticmaps_paramdesc_format' => 'Kartěrowańska słužba, kótaraž se wužywa, aby napórała kórtu',
 299+ 'semanticmaps_paramdesc_geoservice' => 'Geokoděrowańska słužba, kótaraž se wužywa, aby pśetwóriła adrese do koordinatow',
 300+ 'semanticmaps_paramdesc_height' => 'Wusokosć kórty, w pikselach (standard jo $1)',
 301+ 'semanticmaps_paramdesc_width' => 'Šyrokosć kórty, w pikselach (standard jo $1)',
 302+ 'semanticmaps_paramdesc_zoom' => 'Skalěrowański schóźeńk kórty',
 303+ 'semanticmaps_paramdesc_centre' => 'Koordinaty srjejźišća kórty',
 304+ 'semanticmaps_paramdesc_controls' => 'Wužywarske elementy na kórśe',
 305+ 'semanticmaps_paramdesc_types' => 'Kórtowe typy, kótarež stoje za kórtu k dispoziciji',
 306+ 'semanticmaps_paramdesc_type' => 'Standardny kórtowy typ za kórtu',
 307+ 'semanticmaps_paramdesc_overlays' => 'Pśewarstowanja, kótarež stoje za kórtu k dispoziciji',
 308+ 'semanticmaps_paramdesc_autozoom' => 'Jolic pówětšenje a pómjeńšenje z pomocu kólaska myški jo zmóžnjone',
 309+ 'semanticmaps_paramdesc_layers' => 'Warsty, kótarež stoje za kórtu k dispoziciji',
 310+);
 311+
 312+/** Greek (Ελληνικά)
 313+ * @author ZaDiak
 314+ */
 315+$messages['el'] = array(
 316+ 'semanticmaps_abb_north' => 'Β',
 317+ 'semanticmaps_abb_east' => 'Α',
 318+ 'semanticmaps_abb_south' => 'Ν',
 319+ 'semanticmaps_abb_west' => 'Δ',
 320+ 'semanticmaps_lookupcoordinates' => 'Επιθεώρηση συντεταγμένων',
 321+ 'semanticmaps_enteraddresshere' => 'Εισαγωγή διεύθυνσης εδώ',
 322+ 'semanticmaps_notfound' => 'δεν βρέθηκε',
 323+);
 324+
 325+/** Esperanto (Esperanto)
 326+ * @author Yekrats
 327+ */
 328+$messages['eo'] = array(
 329+ 'semanticmaps_abb_north' => 'N',
 330+ 'semanticmaps_abb_east' => 'E',
 331+ 'semanticmaps_abb_south' => 'S',
 332+ 'semanticmaps_abb_west' => 'U',
 333+ 'semanticmaps_label_latitude' => 'Latitudo:',
 334+ 'semanticmaps_label_longitude' => 'Longitudo:',
 335+ 'semanticmaps_lookupcoordinates' => 'Rigardi koordinatojn',
 336+ 'semanticmaps_enteraddresshere' => 'Enigu adreson ĉi tie',
 337+ 'semanticmaps_notfound' => 'ne trovita',
 338+);
 339+
 340+/** Spanish (Español)
 341+ * @author Crazymadlover
 342+ * @author Imre
 343+ * @author Locos epraix
 344+ * @author Translationista
 345+ */
 346+$messages['es'] = array(
 347+ 'semanticmaps_desc' => 'Proporciona la capacidad de ver y editar los datos coordinados almacenados a través de la extensión Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 348+Servicios de mapas disponibles: $1',
 349+ 'semanticmaps_lonely_unit' => 'No se encontró ningún número antes del símbolo "$1".',
 350+ 'semanticmaps_bad_latlong' => 'La latitud y longitud deben darse sólo una vez y con coordenadas válidas.',
 351+ 'semanticmaps_abb_north' => 'N',
 352+ 'semanticmaps_abb_east' => 'E',
 353+ 'semanticmaps_abb_south' => 'S',
 354+ 'semanticmaps_abb_west' => 'O',
 355+ 'semanticmaps_label_latitude' => 'Latitud:',
 356+ 'semanticmaps_label_longitude' => 'Longitud:',
 357+ 'semanticmaps_lookupcoordinates' => 'Busque las coordenadas',
 358+ 'semanticmaps_enteraddresshere' => 'Ingresar dirección aquí',
 359+ 'semanticmaps_notfound' => 'no encontrado',
 360+ 'semanticmaps_paramdesc_format' => 'El servicio cartográfico usado para generar el mapa',
 361+ 'semanticmaps_paramdesc_geoservice' => 'El servicio de geocodificación para convertir direcciones en coordenadas',
 362+ 'semanticmaps_paramdesc_height' => 'Alto del mapa en píxeles (el predeterminado es $1)',
 363+ 'semanticmaps_paramdesc_width' => 'Ancho del mapa en píxeles (el predeterminado es $1)',
 364+ 'semanticmaps_paramdesc_zoom' => 'Nivel de acercamiento del mapa',
 365+ 'semanticmaps_paramdesc_centre' => 'Las coordenadas del centro del mapa',
 366+ 'semanticmaps_paramdesc_controls' => 'Los controles de usuario ubicados en el mapa',
 367+ 'semanticmaps_paramdesc_types' => 'Los tipos de mapa disponibles en el mapa',
 368+ 'semanticmaps_paramdesc_type' => 'El tipo de mapa predeterminado para el mapa',
 369+ 'semanticmaps_paramdesc_overlays' => 'FUZZY!!! Las capas disponibles en el mapa',
 370+ 'semanticmaps_paramdesc_autozoom' => 'En caso de que el acercamiento y alejamiento mediante la rueda del ratón esté habilitado',
 371+ 'semanticmaps_paramdesc_layers' => 'Las capas disponibles en el mapa',
 372+);
 373+
 374+/** Basque (Euskara)
 375+ * @author An13sa
 376+ */
 377+$messages['eu'] = array(
 378+ 'semanticmaps_lookupcoordinates' => 'Koordenatuak bilatu',
 379+);
 380+
 381+/** Finnish (Suomi)
 382+ * @author Crt
 383+ * @author Str4nd
 384+ */
 385+$messages['fi'] = array(
 386+ 'semanticmaps_abb_north' => 'P',
 387+ 'semanticmaps_abb_east' => 'I',
 388+ 'semanticmaps_abb_south' => 'E',
 389+ 'semanticmaps_abb_west' => 'L',
 390+ 'semanticmaps_label_latitude' => 'Leveysaste',
 391+ 'semanticmaps_label_longitude' => 'Pituusaste',
 392+ 'semanticmaps_enteraddresshere' => 'Kirjoita osoite tähän',
 393+ 'semanticmaps_notfound' => 'ei löytynyt',
 394+ 'semanticmaps_paramdesc_height' => 'Kartan korkeus pikseleinä (oletus on $1)',
 395+ 'semanticmaps_paramdesc_width' => 'Kartan leveys pikseleinä (oletus on $1)',
 396+ 'semanticmaps_paramdesc_zoom' => 'Kartan suurennostaso',
 397+ 'semanticmaps_paramdesc_centre' => 'Kartan keskipisteen koordinaatit',
 398+);
 399+
 400+/** French (Français)
 401+ * @author Crochet.david
 402+ * @author Grondin
 403+ * @author IAlex
 404+ * @author Jean-Frédéric
 405+ * @author PieRRoMaN
 406+ */
 407+$messages['fr'] = array(
 408+ 'semanticmaps_desc' => "Permet de voir et modifier les données de coordonnées stockées à travers l'extension Semantic MediaWiki. Services de cartes disponibles : $1. [http://www.mediawiki.org/wiki/Extension:Semantic_Maps Documentation]. [http://wiki.bn2vs.com/wiki/Semantic_Maps Démo]",
 409+ 'semanticmaps_lonely_unit' => 'Aucun nombre trouvé devant le symbole « $1 ».',
 410+ 'semanticmaps_bad_latlong' => "La latitude et la longitude ne doivent être données qu'une fois, et avec des coordonnées valides.",
 411+ 'semanticmaps_abb_north' => 'N',
 412+ 'semanticmaps_abb_east' => 'E',
 413+ 'semanticmaps_abb_south' => 'S',
 414+ 'semanticmaps_abb_west' => 'O',
 415+ 'semanticmaps_label_latitude' => 'Latitude :',
 416+ 'semanticmaps_label_longitude' => 'Longitude :',
 417+ 'semanticmaps_lookupcoordinates' => 'Estimer les coordonnées',
 418+ 'semanticmaps_enteraddresshere' => 'Entrez ici l’adresse',
 419+ 'semanticmaps_notfound' => 'pas trouvé',
 420+ 'semanticmaps_paramdesc_format' => 'Le service de cartographie utilisé pour générer la carte',
 421+ 'semanticmaps_paramdesc_geoservice' => 'Le service de géocodage utilisé pour transformer les adresses en coordonnées',
 422+ 'semanticmaps_paramdesc_height' => 'La hauteur de la carte, en pixels ($1 par défaut)',
 423+ 'semanticmaps_paramdesc_width' => 'La largeur de la carte, en pixels ($1 par défaut)',
 424+ 'semanticmaps_paramdesc_zoom' => "Le niveau d'agrandissement de la carte",
 425+ 'semanticmaps_paramdesc_centre' => 'Les coordonnées du centre de la carte',
 426+ 'semanticmaps_paramdesc_controls' => 'Les contrôles utilisateurs placés sur la carte',
 427+ 'semanticmaps_paramdesc_types' => 'Les types de cartes disponibles sur la carte',
 428+ 'semanticmaps_paramdesc_type' => 'Le type de carte par défaut pour la carte',
 429+ 'semanticmaps_paramdesc_overlays' => 'Les revêtements disponibles sur la carte',
 430+ 'semanticmaps_paramdesc_autozoom' => 'Si le zoom avant et arrière en utilisant la molette de la souris est activé',
 431+ 'semanticmaps_paramdesc_layers' => 'Les revêtements disponibles sur la carte',
 432+);
 433+
 434+/** Galician (Galego)
 435+ * @author Toliño
 436+ */
 437+$messages['gl'] = array(
 438+ 'semanticmaps_desc' => 'Proporciona a capacidade de visualizar e modificar os datos de coordenadas gardados a través da extensión Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps demostración]).
 439+Servizos de mapa dispoñibles: $1',
 440+ 'semanticmaps_lonely_unit' => 'Non se atopou ningún número antes do símbolo "$1".',
 441+ 'semanticmaps_bad_latlong' => 'A latitude e mais a lonxitude só se deben proporcionar unha vez, e con coordenadas válidas.',
 442+ 'semanticmaps_abb_north' => 'N',
 443+ 'semanticmaps_abb_east' => 'L',
 444+ 'semanticmaps_abb_south' => 'S',
 445+ 'semanticmaps_abb_west' => 'O',
 446+ 'semanticmaps_label_latitude' => 'Latitude:',
 447+ 'semanticmaps_label_longitude' => 'Lonxitude:',
 448+ 'semanticmaps_lookupcoordinates' => 'Ver as coordenadas',
 449+ 'semanticmaps_enteraddresshere' => 'Introduza o enderezo aquí',
 450+ 'semanticmaps_notfound' => 'non se atopou',
 451+ 'semanticmaps_paramdesc_format' => 'O servizo de cartografía utilizado para xerar o mapa',
 452+ 'semanticmaps_paramdesc_geoservice' => 'O servizo de xeocodificación usado para transformar enderezos en coordenadas',
 453+ 'semanticmaps_paramdesc_height' => 'A altura do mapa, en píxeles (por defecto, $1)',
 454+ 'semanticmaps_paramdesc_width' => 'O largo do mapa, en píxeles (por defecto, $1)',
 455+ 'semanticmaps_paramdesc_zoom' => 'O nivel de zoom do mapa',
 456+ 'semanticmaps_paramdesc_centre' => 'As coordenadas do centro do mapa',
 457+ 'semanticmaps_paramdesc_controls' => 'Os controis de usuario situados no mapa',
 458+ 'semanticmaps_paramdesc_types' => 'Os tipos de mapa dispoñibles no mapa',
 459+ 'semanticmaps_paramdesc_type' => 'O tipo de mapa por defecto para o mapa',
 460+ 'semanticmaps_paramdesc_overlays' => 'As sobreposicións dispoñibles no mapa',
 461+ 'semanticmaps_paramdesc_autozoom' => 'Activa o achegamento e afastamento coa roda do rato',
 462+ 'semanticmaps_paramdesc_layers' => 'As capas dispoñibles no mapa',
 463+);
 464+
 465+/** Swiss German (Alemannisch)
 466+ * @author Als-Holder
 467+ */
 468+$messages['gsw'] = array(
 469+ 'semanticmaps_desc' => 'Ergänzt e Megligkeit zum Aaluege un Bearbeite vu Koordinate, wu im Ramme vu dr Erwyterig „Semantisch MediaWiki“ gspycheret wore sin. Unterstitzti Chartedienscht: $1. [http://www.mediawiki.org/wiki/Extension:Semantic_Maps Dokumäntation]. [http://wiki.bn2vs.com/wiki/Semantic_Maps Demo]',
 470+ 'semanticmaps_lonely_unit' => 'Kei Nummere gfunde vor em Zeiche „$1“.',
 471+ 'semanticmaps_bad_latlong' => 'D Lengi un d Breiti derfe nume eimol yygee wäre, un mit giltige Koordinate.',
 472+ 'semanticmaps_abb_north' => 'N',
 473+ 'semanticmaps_abb_east' => 'O',
 474+ 'semanticmaps_abb_south' => 'S',
 475+ 'semanticmaps_abb_west' => 'W',
 476+ 'semanticmaps_label_latitude' => 'Breiti:',
 477+ 'semanticmaps_label_longitude' => 'Lengi:',
 478+ 'semanticmaps_lookupcoordinates' => 'Koordinate nooluege',
 479+ 'semanticmaps_enteraddresshere' => 'Doo Adräss yygee',
 480+ 'semanticmaps_notfound' => 'nit gfunde',
 481+ 'semanticmaps_paramdesc_format' => 'Dr Chartedienscht, wu brucht wäre soll zum Erzyyge vu dr Charte',
 482+ 'semanticmaps_paramdesc_geoservice' => 'Dr Geokodierigs-Service, wu brucht wäre soll zum umwandle vu Adrässe in Koordinate',
 483+ 'semanticmaps_paramdesc_height' => 'D Hechi vu dr Charte, in Pixel (Standard: $1)',
 484+ 'semanticmaps_paramdesc_width' => 'D Breiti vu dr Charte, in Pixel (Standard: $1)',
 485+ 'semanticmaps_paramdesc_zoom' => 'S Zoom-Level vu dr Charte',
 486+ 'semanticmaps_paramdesc_centre' => 'D Koordinate vum Mittelpunkt vu dr Charte',
 487+ 'semanticmaps_paramdesc_controls' => 'D Hilfsmittel, wu in d Charte yygfiegt sin',
 488+ 'semanticmaps_paramdesc_types' => 'D Chartetype, wu fir d Charte verfiegbar sin',
 489+ 'semanticmaps_paramdesc_type' => 'Dr Standard-Chartetyp fir d Charte',
 490+ 'semanticmaps_paramdesc_overlays' => 'D Overlays, wu fir d Charte verfiegbar sin',
 491+ 'semanticmaps_paramdesc_autozoom' => 'Eb mer e Charte cha vergreßere oder verchleinere mit em Muusrad',
 492+ 'semanticmaps_paramdesc_layers' => 'D Lage, wu fir Charte verfiegbar sin',
 493+);
 494+
 495+/** Hebrew (עברית)
 496+ * @author Rotemliss
 497+ * @author YaronSh
 498+ */
 499+$messages['he'] = array(
 500+ 'semanticmaps_desc' => 'הוספת האפשרות לצפייה ולעריכה בנתוני קואורדינטה המאוחסנים דרך הרחבת המדיה־ויקי הסמנטי ([http://wiki.bn2vs.com/wiki/Semantic_Maps הדגמה]).
 501+שירותי מפה זמינים: $1',
 502+ 'semanticmaps_lonely_unit' => 'לא נמצא מספר לפני הסימן "$1".',
 503+ 'semanticmaps_abb_north' => "צפ'",
 504+ 'semanticmaps_abb_east' => "מז'",
 505+ 'semanticmaps_abb_south' => "דר'",
 506+ 'semanticmaps_abb_west' => "מע'",
 507+ 'semanticmaps_label_latitude' => 'קו רוחב:',
 508+ 'semanticmaps_label_longitude' => 'קו אורך:',
 509+ 'semanticmaps_lookupcoordinates' => 'חיפוש קואורדינטות',
 510+ 'semanticmaps_enteraddresshere' => 'כתבו כתובת כאן',
 511+ 'semanticmaps_notfound' => 'לא נמצאה',
 512+ 'semanticmaps_paramdesc_format' => 'שירות המיפוי המשמש להכנת המפה',
 513+ 'semanticmaps_paramdesc_height' => 'גובה המפה, בפיקסלים (ברירת המחדל היא $1)',
 514+ 'semanticmaps_paramdesc_width' => 'רוחב המפה, בפיקסלים (ברירת המחדל היא $1)',
 515+ 'semanticmaps_paramdesc_centre' => 'קואורדינטות מרכז המפה',
 516+ 'semanticmaps_paramdesc_controls' => 'פקדי המשתמש ממוקמים על המפה',
 517+ 'semanticmaps_paramdesc_types' => 'צורות המפה הזמינות על המפה',
 518+ 'semanticmaps_paramdesc_type' => 'סוג ברירת המחדל של המפה עבור המפה',
 519+ 'semanticmaps_paramdesc_layers' => 'השכבות הזמינות במפה',
 520+);
 521+
 522+/** Upper Sorbian (Hornjoserbsce)
 523+ * @author Michawiki
 524+ */
 525+$messages['hsb'] = array(
 526+ 'semanticmaps_desc' => 'Skići móžnosć koordinatowe daty, kotrež buchu přez rozšěrjenje Semantic MediaWiki składowane, sej wobhladać a změnić. ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]). K dispoziciji stejace kartowe słužby: $1',
 527+ 'semanticmaps_lonely_unit' => 'Před symbolom "$1" žana ličba namakana.',
 528+ 'semanticmaps_bad_latlong' => 'Šěrina a dołhosć dyrbitej so jenož jedyn raz podać a z płaćiwymi koordinatami.',
 529+ 'semanticmaps_abb_north' => 'S',
 530+ 'semanticmaps_abb_east' => 'W',
 531+ 'semanticmaps_abb_south' => 'J',
 532+ 'semanticmaps_abb_west' => 'Z',
 533+ 'semanticmaps_label_latitude' => 'Šěrina:',
 534+ 'semanticmaps_label_longitude' => 'Dołhosć:',
 535+ 'semanticmaps_lookupcoordinates' => 'Za koordinatami hladać',
 536+ 'semanticmaps_enteraddresshere' => 'Zapodaj tu adresu',
 537+ 'semanticmaps_notfound' => 'njenamakany',
 538+ 'semanticmaps_paramdesc_format' => 'Kartěrowanska słužba, kotraž so wužiwa, zo by kartu wutworiła',
 539+ 'semanticmaps_paramdesc_geoservice' => 'Geokodowanska słužba, kotraž so wužiwa, zo by adresy do koordinatow přetworiła',
 540+ 'semanticmaps_paramdesc_height' => 'Wysokosć karty, w pikselach (standard je $1)',
 541+ 'semanticmaps_paramdesc_width' => 'Šěrokosć karty, w pikselach (standard je $1)',
 542+ 'semanticmaps_paramdesc_zoom' => 'Skalowanski schodźenk karty',
 543+ 'semanticmaps_paramdesc_centre' => 'Koordinaty srjedźišća karty',
 544+ 'semanticmaps_paramdesc_controls' => 'Wužiwarske elementy na karće',
 545+ 'semanticmaps_paramdesc_types' => 'Kartowe typy, kotrež za kartu k dispoziciji steja',
 546+ 'semanticmaps_paramdesc_type' => 'Standardny kartowy typ za kartu',
 547+ 'semanticmaps_paramdesc_overlays' => 'Naworštowanja, kotrež za kartu k dispoziciji steja',
 548+ 'semanticmaps_paramdesc_autozoom' => 'Jeli powjetšenje a pomjenšenje z pomocu kolesko myški je zmóžnjene',
 549+ 'semanticmaps_paramdesc_layers' => 'Woršty, kotrež za kartu k dispoziciji steja',
 550+);
 551+
 552+/** Hungarian (Magyar)
 553+ * @author Glanthor Reviol
 554+ */
 555+$messages['hu'] = array(
 556+ 'semanticmaps_desc' => 'Lehetővé teszi a szemantikus MediaWiki kiterjesztés segítségével tárolt koordinátaadatok megtekintését és szerkesztését ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 557+Elérhető térképszolgáltatók: $1',
 558+ 'semanticmaps_abb_north' => 'É',
 559+ 'semanticmaps_abb_east' => 'K',
 560+ 'semanticmaps_abb_south' => 'D',
 561+ 'semanticmaps_abb_west' => 'Ny',
 562+ 'semanticmaps_lookupcoordinates' => 'Koordináták felkeresése',
 563+ 'semanticmaps_enteraddresshere' => 'Add meg a címet itt',
 564+ 'semanticmaps_notfound' => 'nincs találat',
 565+);
 566+
 567+/** Interlingua (Interlingua)
 568+ * @author McDutchie
 569+ */
 570+$messages['ia'] = array(
 571+ 'semanticmaps_desc' => 'Permitte vider e modificar datos de coordinatas immagazinate per le extension Semantic MediaWiki
 572+([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 573+Servicios de cartas disponibile: $1',
 574+ 'semanticmaps_lonely_unit' => 'Nulle numero trovate ante le symbolo "$1".',
 575+ 'semanticmaps_bad_latlong' => 'Latitude e longitude debe esser date solo un vice, e con valide coordinatas.',
 576+ 'semanticmaps_abb_north' => 'N',
 577+ 'semanticmaps_abb_east' => 'E',
 578+ 'semanticmaps_abb_south' => 'S',
 579+ 'semanticmaps_abb_west' => 'W',
 580+ 'semanticmaps_label_latitude' => 'Latitude:',
 581+ 'semanticmaps_label_longitude' => 'Longitude:',
 582+ 'semanticmaps_lookupcoordinates' => 'Cercar coordinatas',
 583+ 'semanticmaps_enteraddresshere' => 'Entra adresse hic',
 584+ 'semanticmaps_notfound' => 'non trovate',
 585+ 'semanticmaps_paramdesc_format' => 'Le servicio cartographic usate pro generar le carta',
 586+ 'semanticmaps_paramdesc_geoservice' => 'Le servicio de geocodification usate pro converter adresses in coordinatas',
 587+ 'semanticmaps_paramdesc_height' => 'Le altitude del carta, in pixeles (predefinition es $1)',
 588+ 'semanticmaps_paramdesc_width' => 'Le latitude del carta, in pixeles (predefinition es $1)',
 589+ 'semanticmaps_paramdesc_zoom' => 'Le nivello de zoom del carta',
 590+ 'semanticmaps_paramdesc_centre' => 'Le coordinatas del centro del carta',
 591+ 'semanticmaps_paramdesc_controls' => 'Le buttones de adjustamento placiate in le carta',
 592+ 'semanticmaps_paramdesc_types' => 'Le typos de carta disponibile in le carta',
 593+ 'semanticmaps_paramdesc_type' => 'Le typo de carta predefinite pro le carta',
 594+ 'semanticmaps_paramdesc_overlays' => 'Le superpositiones disponibile in le carta',
 595+ 'semanticmaps_paramdesc_autozoom' => 'Si le zoom avante e retro con le rota de rolamento del mouse es active',
 596+ 'semanticmaps_paramdesc_layers' => 'Le stratos disponibile in le carta',
 597+);
 598+
 599+/** Indonesian (Bahasa Indonesia)
 600+ * @author Bennylin
 601+ * @author Farras
 602+ */
 603+$messages['id'] = array(
 604+ 'semanticmaps_desc' => 'Memampukan penampilan dan penyuntingan data koordinat yang disimpan melalui pengaya MediaWiki Semantic ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 605+Layanan peta yang tersedia: $1',
 606+ 'semanticmaps_lonely_unit' => 'Tak ada angka yang ditemukan sebelum simbol "$1".',
 607+ 'semanticmaps_bad_latlong' => 'Lintang dan bujur harus diisi sekali, dan dengan koordinat yang benar.',
 608+ 'semanticmaps_abb_north' => 'U',
 609+ 'semanticmaps_abb_east' => 'T',
 610+ 'semanticmaps_abb_south' => 'S',
 611+ 'semanticmaps_abb_west' => 'B',
 612+ 'semanticmaps_label_latitude' => 'Lintang:',
 613+ 'semanticmaps_label_longitude' => 'Bujur:',
 614+ 'semanticmaps_lookupcoordinates' => 'Cari koordinat',
 615+ 'semanticmaps_enteraddresshere' => 'Masukkan alamat di sini',
 616+ 'semanticmaps_notfound' => 'tidak ditemukan',
 617+ 'semanticmaps_paramdesc_format' => 'Layanan pemetaan untuk membuat peta',
 618+ 'semanticmaps_paramdesc_geoservice' => 'Layanan kode geo untuk mengubah alamat menjadi koordinat',
 619+ 'semanticmaps_paramdesc_height' => 'Tinggi peta, dalam piksel (umumnya $1)',
 620+ 'semanticmaps_paramdesc_width' => 'Lebar peta, dalam piksel (umumnya $1)',
 621+ 'semanticmaps_paramdesc_zoom' => 'Tingkat zum peta',
 622+ 'semanticmaps_paramdesc_centre' => 'Koordinat bagian tengah peta',
 623+ 'semanticmaps_paramdesc_controls' => 'Kontrol pengguna yang diletakkan di peta',
 624+ 'semanticmaps_paramdesc_types' => 'Jenis peta tersedia di peta',
 625+ 'semanticmaps_paramdesc_type' => 'Jenis peta biasa untuk peta ini',
 626+ 'semanticmaps_paramdesc_overlays' => 'Lapisan yang tersedia di peta',
 627+ 'semanticmaps_paramdesc_autozoom' => 'Bila ingin zum dekat dan jauh menggunakan mouse, gunakan roda gulung',
 628+ 'semanticmaps_paramdesc_layers' => 'Lapisan tersedia di peta',
 629+);
 630+
 631+/** Italian (Italiano)
 632+ * @author Darth Kule
 633+ */
 634+$messages['it'] = array(
 635+ 'semanticmaps_desc' => "Offre la possibilità di visualizzare e modificare le coordinate memorizzate attraverso l'estensione Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]). Servizi di mappe disponibili: $1",
 636+ 'semanticmaps_lookupcoordinates' => 'Cerca coordinate',
 637+ 'semanticmaps_enteraddresshere' => 'Inserisci indirizzo qui',
 638+ 'semanticmaps_notfound' => 'non trovato',
 639+);
 640+
 641+/** Japanese (日本語)
 642+ * @author Fryed-peach
 643+ * @author Mizusumashi
 644+ */
 645+$messages['ja'] = array(
 646+ 'semanticmaps_desc' => 'Semantic MediaWiki 拡張機能を通して格納された座標データを表示・編集する機能を提供する ([http://wiki.bn2vs.com/wiki/Semantic_Maps 実演])。次の地図サービスに対応します:$1',
 647+ 'semanticmaps_lonely_unit' => '記号「$1」の前に数値がありません。',
 648+ 'semanticmaps_bad_latlong' => '緯度と経度は有効な座標値をもって、一回のみ指定されなければなりません。',
 649+ 'semanticmaps_abb_north' => '北',
 650+ 'semanticmaps_abb_east' => '東',
 651+ 'semanticmaps_abb_south' => '南',
 652+ 'semanticmaps_abb_west' => '西',
 653+ 'semanticmaps_label_latitude' => '緯度:',
 654+ 'semanticmaps_label_longitude' => '経度:',
 655+ 'semanticmaps_lookupcoordinates' => '座標を調べる',
 656+ 'semanticmaps_enteraddresshere' => '住所をここに入力します',
 657+ 'semanticmaps_notfound' => '見つかりません',
 658+ 'semanticmaps_paramdesc_format' => '地図の生成に利用されている地図サービス',
 659+ 'semanticmaps_paramdesc_geoservice' => '住所の座標への変換に利用されているジオコーディングサービス',
 660+ 'semanticmaps_paramdesc_height' => '地図の縦幅 (単位はピクセル、既定は$1)',
 661+ 'semanticmaps_paramdesc_width' => '地図の横幅 (単位はピクセル、既定は$1)',
 662+ 'semanticmaps_paramdesc_zoom' => '地図の拡大度',
 663+ 'semanticmaps_paramdesc_centre' => '地図の中心の座標',
 664+ 'semanticmaps_paramdesc_controls' => 'この地図上に設置するユーザーコントロール',
 665+ 'semanticmaps_paramdesc_types' => 'この地図で利用できる地図タイプ',
 666+ 'semanticmaps_paramdesc_type' => 'この地図のデフォルト地図タイプ',
 667+ 'semanticmaps_paramdesc_overlays' => 'この地図で利用できるオーバーレイ',
 668+ 'semanticmaps_paramdesc_autozoom' => 'マウスのスクロールホイールを使ったズームインやアウトを有効にするか',
 669+ 'semanticmaps_paramdesc_layers' => 'この地図で利用できるレイヤー',
 670+);
 671+
 672+/** Khmer (ភាសាខ្មែរ)
 673+ * @author Thearith
 674+ */
 675+$messages['km'] = array(
 676+ 'semanticmaps_lookupcoordinates' => 'ក្រឡេក​មើល​កូអរដោនេ',
 677+);
 678+
 679+/** Ripoarisch (Ripoarisch)
 680+ * @author Purodha
 681+ */
 682+$messages['ksh'] = array(
 683+ 'semanticmaps_desc' => 'Määt et müjjelesch, Koodinaate ze beloore un ze ändere, di per Semantesch Mediawiki faßjehallde woodte. (E [http://wiki.bn2vs.com/wiki/Semantic_Maps Beijshpöll]) Deenste för Kaate ham_mer di heh: $1',
 684+ 'semanticmaps_lonely_unit' => 'De Nommer vür däm Zeijsche „$1“ fählt.',
 685+ 'semanticmaps_bad_latlong' => "De Längde und de Breedt dörve bloß eijmohl aanjejovve wääde, un met reeschtijje Ko'odinaate.",
 686+ 'semanticmaps_abb_north' => 'N',
 687+ 'semanticmaps_abb_east' => 'O',
 688+ 'semanticmaps_abb_south' => 'S',
 689+ 'semanticmaps_abb_west' => 'W',
 690+ 'semanticmaps_label_latitude' => 'Breedt om Jlobus:',
 691+ 'semanticmaps_label_longitude' => 'Längde om Jlobus:',
 692+ 'semanticmaps_lookupcoordinates' => 'Koordinate nohkike',
 693+ 'semanticmaps_enteraddresshere' => 'Donn hee de Address enjäve',
 694+ 'semanticmaps_notfound' => 'nit jefonge',
 695+ 'semanticmaps_paramdesc_format' => 'Dä Deens för Kaate ußzejävve, woh heh di Kaat vun kütt',
 696+ 'semanticmaps_paramdesc_geoservice' => "Dä Deens för Adräße en Ko'odinaate öm_ze_wandelle",
 697+ 'semanticmaps_paramdesc_height' => 'De Hühde vun heh dä Kaat en Pixelle — schtandattmääßesch {{PLURAL:$1|$1 Pixel|$1 Pixelle|nix}}',
 698+ 'semanticmaps_paramdesc_width' => 'De Breedt vun heh dä Kaat en Pixelle — schtandattmääßesch {{PLURAL:$1|$1 Pixel|$1 Pixelle|nix}}',
 699+ 'semanticmaps_paramdesc_zoom' => 'Wi doll dä Zoom fö heh di Kaat es',
 700+ 'semanticmaps_paramdesc_centre' => "De Ko'odinaate op de Ääd, vun de Medde vun heh dä Kaat",
 701+ 'semanticmaps_paramdesc_controls' => 'De Knöppe för de Bedeenung, di op di Kaat jemohlt wäääde',
 702+ 'semanticmaps_paramdesc_types' => 'De Kaate-Zoote di mer för heh di Kaat ußsöhke kann',
 703+ 'semanticmaps_paramdesc_type' => 'De Schtandatt Kaate-Zoot för heh di Kaat',
 704+ 'semanticmaps_paramdesc_overlays' => 'De zohsäzlijje Eijnzelheijte, di mer op di Kaat drop bränge kann',
 705+ 'semanticmaps_paramdesc_autozoom' => 'Falls et erin un eruß zoome met däm Kompjuter singe Muuß ierem Rättsche aanjeschalldt es, dann:',
 706+ 'semanticmaps_paramdesc_layers' => 'De Nivohs, di för di Kaat ze han sin',
 707+);
 708+
 709+/** Luxembourgish (Lëtzebuergesch)
 710+ * @author Robby
 711+ */
 712+$messages['lb'] = array(
 713+ 'semanticmaps_lonely_unit' => 'Keng Zuel virum Symbol "$1" fonnt.',
 714+ 'semanticmaps_bad_latlong' => 'Längtegrad a Breedegrad däerfen nëmmen eemol a mat valabele Koordinaten ugi ginn.',
 715+ 'semanticmaps_abb_north' => 'N',
 716+ 'semanticmaps_abb_east' => 'O',
 717+ 'semanticmaps_abb_south' => 'S',
 718+ 'semanticmaps_abb_west' => 'W',
 719+ 'semanticmaps_label_latitude' => 'Breedegrad:',
 720+ 'semanticmaps_label_longitude' => 'Längtegrad:',
 721+ 'semanticmaps_lookupcoordinates' => 'Koordinaten nokucken',
 722+ 'semanticmaps_enteraddresshere' => 'Adress hei aginn',
 723+ 'semanticmaps_notfound' => 'net fonnt',
 724+ 'semanticmaps_paramdesc_format' => "De Kartographie-Service dee fir d'generéiere vun der Kaart benotzt gëtt",
 725+ 'semanticmaps_paramdesc_height' => "D'Héicht vun der Kaart, a Pixelen (Standard ass $1)",
 726+ 'semanticmaps_paramdesc_width' => "D'Breet vun der Kaart, a Pixelen (Standard ass $1)",
 727+ 'semanticmaps_paramdesc_zoom' => 'DenNiveau vum Zoom vun der Kaart',
 728+ 'semanticmaps_paramdesc_centre' => "D'Koordinate vum zentrum vun der Kaart",
 729+ 'semanticmaps_paramdesc_controls' => "D'Benotzerkontrollen déi op der Kaart plazéiert sinn",
 730+);
 731+
 732+/** Macedonian (Македонски)
 733+ * @author Bjankuloski06
 734+ */
 735+$messages['mk'] = array(
 736+ 'semanticmaps_desc' => 'Дава можност за гледање и уредување на податоци со координати складирани преку проширувањето Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps демо]).
 737+Картографски служби на располагање: $1',
 738+ 'semanticmaps_lonely_unit' => 'Нема пронајдено број пред симболот „$1“.',
 739+ 'semanticmaps_bad_latlong' => 'Географската ширина и должина мора да се наведат само еднаш, и со важечки координати.',
 740+ 'semanticmaps_abb_north' => 'С',
 741+ 'semanticmaps_abb_east' => 'И',
 742+ 'semanticmaps_abb_south' => 'Ј',
 743+ 'semanticmaps_abb_west' => 'З',
 744+ 'semanticmaps_label_latitude' => 'Геог. ширина',
 745+ 'semanticmaps_label_longitude' => 'Геог. должина:',
 746+ 'semanticmaps_lookupcoordinates' => 'Побарај координати',
 747+ 'semanticmaps_enteraddresshere' => 'Внесете адреса тука',
 748+ 'semanticmaps_notfound' => 'не е најдено ништо',
 749+ 'semanticmaps_paramdesc_format' => 'Картографската служба со која се создава картата',
 750+ 'semanticmaps_paramdesc_geoservice' => 'Службата за геокодирање со која адресите се претвораат во координати',
 751+ 'semanticmaps_paramdesc_height' => 'Висината на картата во пиксели ($1 по основно)',
 752+ 'semanticmaps_paramdesc_width' => 'Ширината на картата во пиксели ($1 по основно)',
 753+ 'semanticmaps_paramdesc_zoom' => 'Размерот на картата',
 754+ 'semanticmaps_paramdesc_centre' => 'Координатите на средиштето на картата',
 755+ 'semanticmaps_paramdesc_controls' => 'Корисничките контроли за на картата',
 756+ 'semanticmaps_paramdesc_types' => 'Типови на карти, достапни за картата',
 757+ 'semanticmaps_paramdesc_type' => 'Основно зададениот тип на карта',
 758+ 'semanticmaps_paramdesc_overlays' => 'Достапните облоги за картата',
 759+ 'semanticmaps_paramdesc_autozoom' => 'Ако е овозможено приближување и оддалечување со тркалцето на глушецот',
 760+ 'semanticmaps_paramdesc_layers' => 'Слоевите достапни на картата',
 761+);
 762+
 763+/** Dutch (Nederlands)
 764+ * @author Jeroen De Dauw
 765+ * @author Siebrand
 766+ */
 767+$messages['nl'] = array(
 768+ 'semanticmaps_desc' => 'Biedt de mogelijkheid om locatiegegevens die zijn opgeslagen met behulp van de uitbreiding Semantic MediaWiki te bekijken en aan te passen ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 769+Beschikbare kaartdiensten: $1',
 770+ 'semanticmaps_lonely_unit' => 'Er is geen getal gevonden voor het symbool "$1".',
 771+ 'semanticmaps_bad_latlong' => 'Lengte en breedte hoeven maar een keer opgegeven te worden, en dienen geldige coördinaten te zijn.',
 772+ 'semanticmaps_abb_north' => 'N',
 773+ 'semanticmaps_abb_east' => 'O',
 774+ 'semanticmaps_abb_south' => 'Z',
 775+ 'semanticmaps_abb_west' => 'W',
 776+ 'semanticmaps_label_latitude' => 'Breedte:',
 777+ 'semanticmaps_label_longitude' => 'Lengte:',
 778+ 'semanticmaps_lookupcoordinates' => 'Coördinaten opzoeken',
 779+ 'semanticmaps_enteraddresshere' => 'Voer hier het adres in',
 780+ 'semanticmaps_notfound' => 'niet gevonden',
 781+ 'semanticmaps_paramdesc_format' => 'De kaartdienst die de kaart levert',
 782+ 'semanticmaps_paramdesc_geoservice' => 'De geocoderingsdienst die adressen in coördinaten converteert',
 783+ 'semanticmaps_paramdesc_height' => 'De hoogte van de kaart in pixels (standaard is $1)',
 784+ 'semanticmaps_paramdesc_width' => 'De breedte van de kaart in pixels (standaard is $1)',
 785+ 'semanticmaps_paramdesc_zoom' => 'Het zoomniveau van de kaart',
 786+ 'semanticmaps_paramdesc_centre' => 'De coördinaten van het midden van de kaart',
 787+ 'semanticmaps_paramdesc_controls' => 'De op de kaart te plaatsen hulpmiddelen',
 788+ 'semanticmaps_paramdesc_types' => 'De voor de kaart beschikbare kaarttypen',
 789+ 'semanticmaps_paramdesc_type' => 'Het standaard kaarttype voor de kaart',
 790+ 'semanticmaps_paramdesc_overlays' => 'De voor de kaart beschikbare overlays',
 791+ 'semanticmaps_paramdesc_autozoom' => 'Of in- en uitzoomen met het scrollwiel van de muis mogelijk is',
 792+ 'semanticmaps_paramdesc_layers' => 'De lagen die beschikbaar zijn voor de kaart',
 793+);
 794+
 795+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
 796+ * @author Harald Khan
 797+ */
 798+$messages['nn'] = array(
 799+ 'semanticmaps_lookupcoordinates' => 'Sjekk koordinatar',
 800+ 'semanticmaps_enteraddresshere' => 'Skriv inn adressa her',
 801+);
 802+
 803+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 804+ * @author Jon Harald Søby
 805+ * @author Nghtwlkr
 806+ */
 807+$messages['no'] = array(
 808+ 'semanticmaps_desc' => 'Tilbyr muligheten til å se og endre koordinatdata lagret gjennom Semantic MediaWiki-utvidelsen ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 809+Tilgjengelige karttjenester: $1',
 810+ 'semanticmaps_lonely_unit' => 'Fant ingen tall før symbolet «$1».',
 811+ 'semanticmaps_bad_latlong' => 'Bredde- og lengdegrad må gis kun en gang og med gyldige koordinater.',
 812+ 'semanticmaps_abb_north' => 'N',
 813+ 'semanticmaps_abb_east' => 'Ø',
 814+ 'semanticmaps_abb_south' => 'S',
 815+ 'semanticmaps_abb_west' => 'V',
 816+ 'semanticmaps_label_latitude' => 'Breddegrad:',
 817+ 'semanticmaps_label_longitude' => 'Lengdegrad:',
 818+ 'semanticmaps_lookupcoordinates' => 'Sjekk koordinater',
 819+ 'semanticmaps_enteraddresshere' => 'Skriv inn adressen her',
 820+ 'semanticmaps_notfound' => 'ikke funnet',
 821+ 'semanticmaps_paramdesc_format' => 'Karttjenesten brukt for å generere kart',
 822+ 'semanticmaps_paramdesc_geoservice' => 'Geokodetjenesten brukt for å gjøre adresser om til koordinater',
 823+ 'semanticmaps_paramdesc_height' => 'Høyden til kartet, i pixler (standard er $1)',
 824+ 'semanticmaps_paramdesc_width' => 'Bredden til kartet, i pixler (standard er $1)',
 825+ 'semanticmaps_paramdesc_zoom' => 'Zoomnivået til kartet',
 826+ 'semanticmaps_paramdesc_centre' => 'Koordinatene til kartets senter',
 827+ 'semanticmaps_paramdesc_controls' => 'Brukerkontrollene plassert på kartet',
 828+ 'semanticmaps_paramdesc_types' => 'Karttypene tilgjengelig for kartet',
 829+ 'semanticmaps_paramdesc_type' => 'Standard karttype for kartet',
 830+ 'semanticmaps_paramdesc_overlays' => 'Overlag tilgjengelig for kartet',
 831+ 'semanticmaps_paramdesc_autozoom' => 'Dersom zooming ved bruk av musehjulet er slått på',
 832+ 'semanticmaps_paramdesc_layers' => 'Lagene tilgjengelig på kartet',
 833+);
 834+
 835+/** Occitan (Occitan)
 836+ * @author Cedric31
 837+ */
 838+$messages['oc'] = array(
 839+ 'semanticmaps_desc' => "Permet de veire e modificar las donadas de coordenadas estocadas a travèrs l'extension Semantic MediaWiki. Servicis de mapas disponibles : $1. [http://www.mediawiki.org/wiki/Extension:Semantic_Maps Documentacion]. [http://wiki.bn2vs.com/wiki/Semantic_Maps Demo]",
 840+ 'semanticmaps_lookupcoordinates' => 'Estimar las coordenadas',
 841+ 'semanticmaps_enteraddresshere' => 'Picatz aicí l’adreça',
 842+ 'semanticmaps_notfound' => 'pas trobat',
 843+);
 844+
 845+/** Polish (Polski)
 846+ * @author Derbeth
 847+ * @author Leinad
 848+ * @author Odder
 849+ * @author Sp5uhe
 850+ */
 851+$messages['pl'] = array(
 852+ 'semanticmaps_desc' => 'Daje możliwość przeglądania oraz edytowania współrzędnych zapisanych przez rozszerzenie Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 853+Dostępne serwisy mapowe: $1',
 854+ 'semanticmaps_abb_north' => 'N',
 855+ 'semanticmaps_abb_east' => 'E',
 856+ 'semanticmaps_abb_south' => 'S',
 857+ 'semanticmaps_abb_west' => 'W',
 858+ 'semanticmaps_label_latitude' => 'Szerokość geograficzna',
 859+ 'semanticmaps_label_longitude' => 'Długość geograficzna',
 860+ 'semanticmaps_lookupcoordinates' => 'Wyszukaj współrzędne',
 861+ 'semanticmaps_enteraddresshere' => 'Podaj adres',
 862+ 'semanticmaps_notfound' => 'nie odnaleziono',
 863+ 'semanticmaps_paramdesc_height' => 'Wysokość mapy w pikselach (domyślnie $1)',
 864+ 'semanticmaps_paramdesc_width' => 'Szerokość mapy w pikselach (domyślnie $1)',
 865+);
 866+
 867+/** Piedmontese (Piemontèis)
 868+ * @author Borichèt
 869+ * @author Dragonòt
 870+ */
 871+$messages['pms'] = array(
 872+ 'semanticmaps_desc' => 'A dà la possibilità ëd visualisé e modìfiché le coordinà memorisà con le estension Semantic mediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 873+Sërvissi ëd mapa disponìbij: $1',
 874+ 'semanticmaps_lonely_unit' => 'Pa gnun nùmer trovà prima dël sìmbol "$1".',
 875+ 'semanticmaps_bad_latlong' => 'Latitùdin e longitùdin a deuvo esse dàite mach na vira, e con coordinà bon-e.',
 876+ 'semanticmaps_abb_north' => 'N',
 877+ 'semanticmaps_abb_east' => 'E',
 878+ 'semanticmaps_abb_south' => 'S',
 879+ 'semanticmaps_abb_west' => 'W',
 880+ 'semanticmaps_label_latitude' => 'Latitùdin:',
 881+ 'semanticmaps_label_longitude' => 'Longitùdin:',
 882+ 'semanticmaps_lookupcoordinates' => 'Serca coordinà',
 883+ 'semanticmaps_enteraddresshere' => 'Ansëriss adrëssa sì',
 884+ 'semanticmaps_notfound' => 'pa trovà',
 885+ 'semanticmaps_paramdesc_format' => 'Ël servissi ëd cartografìa dovrà për generé la carta',
 886+ 'semanticmaps_paramdesc_geoservice' => "Ël servissi ëd geocodìfica dovrà për trasformé j'adrësse an coordinà",
 887+ 'semanticmaps_paramdesc_height' => "L'autëssa dla carta, an pontin (lë stàndard a l'é $1)",
 888+ 'semanticmaps_paramdesc_width' => "La larghëssa dla carta, an pontin (lë stàndard a l'é $1)",
 889+ 'semanticmaps_paramdesc_zoom' => "Ël livel d'angrandiment ëd la carta",
 890+ 'semanticmaps_paramdesc_centre' => 'Le coordinà dël sènter ëd la carta',
 891+ 'semanticmaps_paramdesc_controls' => 'Ij contròj utent piassà an sla carta',
 892+ 'semanticmaps_paramdesc_types' => 'Le sòrt ëd carte disponìbij an sla carta',
 893+ 'semanticmaps_paramdesc_type' => 'Ël tipo ëd carta stàndard për la carta',
 894+ 'semanticmaps_paramdesc_overlays' => 'Le dzor-posission disponìbij an sla carta',
 895+ 'semanticmaps_paramdesc_autozoom' => "Se l'angrandiment anans e andré an dovrand la roëtta dël rat a l'é abilità",
 896+ 'semanticmaps_paramdesc_layers' => 'Ij livej disponìbij an sla carta',
 897+);
 898+
 899+/** Portuguese (Português)
 900+ * @author Hamilton Abreu
 901+ * @author Indech
 902+ * @author Malafaya
 903+ */
 904+$messages['pt'] = array(
 905+ 'semanticmaps_desc' => 'Permite visualizar e editar dados de coordenadas, armazenados através da extensão Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps demonstração]).
 906+Serviços de cartografia disponíveis: $1',
 907+ 'semanticmaps_lonely_unit' => 'Não foi encontrado um número antes do símbolo "$1".',
 908+ 'semanticmaps_bad_latlong' => 'Latitude e longitude têm de ser fornecidas uma só vez e com coordenadas válidas.',
 909+ 'semanticmaps_abb_north' => 'N',
 910+ 'semanticmaps_abb_east' => 'E',
 911+ 'semanticmaps_abb_south' => 'S',
 912+ 'semanticmaps_abb_west' => 'O',
 913+ 'semanticmaps_label_latitude' => 'Latitude:',
 914+ 'semanticmaps_label_longitude' => 'Longitude:',
 915+ 'semanticmaps_lookupcoordinates' => 'Pesquisar coordenadas',
 916+ 'semanticmaps_enteraddresshere' => 'Introduza um endereço aqui',
 917+ 'semanticmaps_notfound' => 'não encontrado',
 918+ 'semanticmaps_paramdesc_format' => 'O serviço de cartografia usado para gerar o mapa',
 919+ 'semanticmaps_paramdesc_geoservice' => 'O serviço de geocódigos usado para transformar endereços em coordenadas',
 920+ 'semanticmaps_paramdesc_height' => 'A altura do mapa, em pixels (por omissão, $1)',
 921+ 'semanticmaps_paramdesc_width' => 'A largura do mapa, em pixels (por omissão, $1)',
 922+ 'semanticmaps_paramdesc_zoom' => 'O nível de aproximação do mapa',
 923+ 'semanticmaps_paramdesc_centre' => 'As coordenadas do centro do mapa',
 924+ 'semanticmaps_paramdesc_controls' => 'Os controles colocados no mapa',
 925+ 'semanticmaps_paramdesc_types' => 'Os tipos de mapa disponíveis no mapa',
 926+ 'semanticmaps_paramdesc_type' => 'O tipo do mapa, por omissão',
 927+ 'semanticmaps_paramdesc_overlays' => 'As sobreposições disponíveis no mapa',
 928+ 'semanticmaps_paramdesc_autozoom' => 'Possibilitar a aproximação e afastamento usando a roda de deslizamento do rato',
 929+ 'semanticmaps_paramdesc_layers' => 'As camadas disponíveis no mapa',
 930+);
 931+
 932+/** Brazilian Portuguese (Português do Brasil)
 933+ * @author Eduardo.mps
 934+ * @author Luckas Blade
 935+ */
 936+$messages['pt-br'] = array(
 937+ 'semanticmaps_desc' => 'Provê a possibilidade de ver e editar dados de coordenadas armazenados através da extensão Semantic MediaWiki. ([http://wiki.bn2vs.com/wiki/Semantic_Maps demonstração]).
 938+Serviços de mapeamento disponíveis: $1',
 939+ 'semanticmaps_lonely_unit' => 'Nenhum número encontrado antes do símbolo "$1".',
 940+ 'semanticmaps_abb_north' => 'N',
 941+ 'semanticmaps_abb_south' => 'S',
 942+ 'semanticmaps_abb_west' => 'O',
 943+ 'semanticmaps_label_latitude' => 'Latitude:',
 944+ 'semanticmaps_label_longitude' => 'Longitude:',
 945+ 'semanticmaps_lookupcoordinates' => 'Pesquisar coordenadas',
 946+ 'semanticmaps_enteraddresshere' => 'Introduza um endereço aqui',
 947+ 'semanticmaps_notfound' => 'Não encontrado',
 948+);
 949+
 950+/** Romanian (Română)
 951+ * @author Firilacroco
 952+ */
 953+$messages['ro'] = array(
 954+ 'semanticmaps_abb_north' => 'N',
 955+ 'semanticmaps_abb_east' => 'E',
 956+ 'semanticmaps_abb_south' => 'S',
 957+ 'semanticmaps_abb_west' => 'V',
 958+ 'semanticmaps_label_latitude' => 'Latitudine:',
 959+ 'semanticmaps_label_longitude' => 'Longitudine:',
 960+ 'semanticmaps_enteraddresshere' => 'Introduceţi adresa aici',
 961+ 'semanticmaps_notfound' => 'nu a fost găsit',
 962+);
 963+
 964+/** Tarandíne (Tarandíne)
 965+ * @author Joetaras
 966+ */
 967+$messages['roa-tara'] = array(
 968+ 'semanticmaps_desc' => "Dè l'abbilità a fà vedè e cangià le coordinate reggistrate cu l'estenzione Semandiche de MediaUicchi ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 969+Disponibbile le servizie de mappe: $1",
 970+ 'semanticmaps_lookupcoordinates' => 'Ingroce le coordinate',
 971+ 'semanticmaps_enteraddresshere' => "Scaffe l'indirizze aqquà",
 972+ 'semanticmaps_notfound' => 'no acchiate',
 973+);
 974+
 975+/** Russian (Русский)
 976+ * @author Eugene Mednikov
 977+ * @author Lockal
 978+ * @author Александр Сигачёв
 979+ */
 980+$messages['ru'] = array(
 981+ 'semanticmaps_desc' => 'Предоставляет возможность просмотра и редактирования данных о координатах, хранящихся посредством расширения Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps демонстрация]).
 982+Доступные службы карт: $1',
 983+ 'semanticmaps_lonely_unit' => 'Не найден номер перед символом «$1».',
 984+ 'semanticmaps_bad_latlong' => 'Широта и долгота должна быть указаны только один раз, значения координат должны быть корректными.',
 985+ 'semanticmaps_abb_north' => 'С',
 986+ 'semanticmaps_abb_east' => 'В',
 987+ 'semanticmaps_abb_south' => 'Ю',
 988+ 'semanticmaps_abb_west' => 'З',
 989+ 'semanticmaps_label_latitude' => 'Широта:',
 990+ 'semanticmaps_label_longitude' => 'Долгота:',
 991+ 'semanticmaps_lookupcoordinates' => 'Найти координаты',
 992+ 'semanticmaps_enteraddresshere' => 'Введите адрес',
 993+ 'semanticmaps_notfound' => 'не найдено',
 994+ 'semanticmaps_paramdesc_format' => 'Картографическая служба, используемая для создания карт',
 995+ 'semanticmaps_paramdesc_geoservice' => 'Служба геокодирования используется для преобразования адреса в координаты',
 996+ 'semanticmaps_paramdesc_height' => 'Высота карты в пикселях (по умолчанию $1)',
 997+ 'semanticmaps_paramdesc_width' => 'Ширина карты в пикселях (по умолчанию $1)',
 998+ 'semanticmaps_paramdesc_zoom' => 'Масштаб карты',
 999+ 'semanticmaps_paramdesc_centre' => 'Координаты центра карты',
 1000+ 'semanticmaps_paramdesc_controls' => 'Элементы управления на карте',
 1001+ 'semanticmaps_paramdesc_types' => 'Типы карты, доступные на карте',
 1002+ 'semanticmaps_paramdesc_type' => 'Тип карты по умолчанию',
 1003+ 'semanticmaps_paramdesc_overlays' => 'Доступные наложения',
 1004+ 'semanticmaps_paramdesc_autozoom' => 'Если включено увеличение и уменьшение масштаб с помощью колеса прокрутки мыши',
 1005+ 'semanticmaps_paramdesc_layers' => 'Доступные на карте слои',
 1006+);
 1007+
 1008+/** Slovak (Slovenčina)
 1009+ * @author Helix84
 1010+ */
 1011+$messages['sk'] = array(
 1012+ 'semanticmaps_desc' => 'Poskytuje schopnosť zobrazovať a upravovať údaje súradníc uložené prostredníctvom rozšírenia Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 1013+Dostupné mapové služby: $1',
 1014+ 'semanticmaps_lonely_unit' => 'Pred symbolom „$1“ sa nenachádza žiadne číslo.',
 1015+ 'semanticmaps_bad_latlong' => 'Zemepisná dĺžka a šírka musí byť zadaná iba raz a s platnými súradnicami.',
 1016+ 'semanticmaps_abb_north' => 'S',
 1017+ 'semanticmaps_abb_east' => 'V',
 1018+ 'semanticmaps_abb_south' => 'J',
 1019+ 'semanticmaps_abb_west' => 'Z',
 1020+ 'semanticmaps_label_latitude' => 'Zem. dĺžka:',
 1021+ 'semanticmaps_label_longitude' => 'Zem. šírka:',
 1022+ 'semanticmaps_lookupcoordinates' => 'Vyhľadať súradnice',
 1023+ 'semanticmaps_enteraddresshere' => 'Sem zadajte emailovú adresu',
 1024+ 'semanticmaps_notfound' => 'nenájdené',
 1025+ 'semanticmaps_paramdesc_format' => 'Služba použitá na tvorbu mapy',
 1026+ 'semanticmaps_paramdesc_geoservice' => 'Služba použitá na vyhľadanie súradníc na základe adresy',
 1027+ 'semanticmaps_paramdesc_height' => 'Výška mapy v pixloch (predvolené je $1)',
 1028+ 'semanticmaps_paramdesc_width' => 'Šírka mapy v pixloch (predvolené je $1)',
 1029+ 'semanticmaps_paramdesc_zoom' => 'Úroveň priblíženia mapy',
 1030+ 'semanticmaps_paramdesc_centre' => 'Súradnice stredu mapy',
 1031+ 'semanticmaps_paramdesc_controls' => 'Používateľské ovládacie prvky umiestnené na mape',
 1032+ 'semanticmaps_paramdesc_types' => 'Typy máp dostupné na mape',
 1033+ 'semanticmaps_paramdesc_type' => 'Predvolený typ mapy na mape',
 1034+ 'semanticmaps_paramdesc_overlays' => 'Vrstvy dostupné na mape',
 1035+ 'semanticmaps_paramdesc_autozoom' => 'Či je povolené približovanie a odďaľovanie mapy kolieskom myši',
 1036+ 'semanticmaps_paramdesc_layers' => 'Dostupné vrstvy mapy',
 1037+);
 1038+
 1039+/** Serbian Cyrillic ekavian (Српски (ћирилица))
 1040+ * @author Михајло Анђелковић
 1041+ */
 1042+$messages['sr-ec'] = array(
 1043+ 'semanticmaps_enteraddresshere' => 'Унеси адресу овде',
 1044+ 'semanticmaps_notfound' => 'није нађено',
 1045+);
 1046+
 1047+/** Serbian Latin ekavian (Srpski (latinica))
 1048+ * @author Michaello
 1049+ */
 1050+$messages['sr-el'] = array(
 1051+ 'semanticmaps_enteraddresshere' => 'Unesi adresu ovde',
 1052+ 'semanticmaps_notfound' => 'nije nađeno',
 1053+);
 1054+
 1055+/** Swedish (Svenska)
 1056+ * @author Boivie
 1057+ * @author Najami
 1058+ * @author Per
 1059+ */
 1060+$messages['sv'] = array(
 1061+ 'semanticmaps_desc' => 'Ger möjligheten att titta på och ändra koordinatdata sparad genom Semantic MediaWiki-utvidgningen ([http://wiki.bn2vs.com/wiki/Semantic_Maps demo]).
 1062+
 1063+Tillgängliga karttjänster: $1',
 1064+ 'semanticmaps_lonely_unit' => 'Inget tal framför symbolen "$1".',
 1065+ 'semanticmaps_bad_latlong' => 'Bredd och längdgrad skall anges endast en gång och med giltiga koordinater.',
 1066+ 'semanticmaps_abb_north' => 'N',
 1067+ 'semanticmaps_abb_east' => 'Ö',
 1068+ 'semanticmaps_abb_south' => 'S',
 1069+ 'semanticmaps_abb_west' => 'V',
 1070+ 'semanticmaps_label_latitude' => 'Breddgrad:',
 1071+ 'semanticmaps_label_longitude' => 'Längdgrad:',
 1072+ 'semanticmaps_lookupcoordinates' => 'Kolla upp koordinater',
 1073+ 'semanticmaps_enteraddresshere' => 'Skriv in adress här',
 1074+ 'semanticmaps_notfound' => 'hittades inte',
 1075+ 'semanticmaps_paramdesc_height' => 'Höjden på kartan i pixlar (standard är $1)',
 1076+ 'semanticmaps_paramdesc_width' => 'Bredden på kartan i pixlar (standard är $1)',
 1077+ 'semanticmaps_paramdesc_zoom' => 'Zoomnivån för kartan',
 1078+ 'semanticmaps_paramdesc_centre' => 'Koordinaterna för kartans mittpunkt',
 1079+ 'semanticmaps_paramdesc_type' => 'Standard karttyp för kartan',
 1080+ 'semanticmaps_paramdesc_layers' => 'Lagren tillgängliga för kartan',
 1081+);
 1082+
 1083+/** Telugu (తెలుగు)
 1084+ * @author Veeven
 1085+ */
 1086+$messages['te'] = array(
 1087+ 'semanticmaps_abb_north' => 'ఉ',
 1088+ 'semanticmaps_abb_east' => 'తూ',
 1089+ 'semanticmaps_abb_south' => 'ద',
 1090+ 'semanticmaps_abb_west' => 'ప',
 1091+ 'semanticmaps_label_latitude' => 'అక్షాంశం:',
 1092+ 'semanticmaps_label_longitude' => 'రేఖాంశం:',
 1093+ 'semanticmaps_notfound' => 'కనబడలేదు',
 1094+);
 1095+
 1096+/** Tagalog (Tagalog)
 1097+ * @author AnakngAraw
 1098+ */
 1099+$messages['tl'] = array(
 1100+ 'semanticmaps_lookupcoordinates' => "Hanapin ang mga tugmaang-pampook (''coordinate'')",
 1101+ 'semanticmaps_enteraddresshere' => 'Ipasok ang adres dito',
 1102+);
 1103+
 1104+/** Turkish (Türkçe)
 1105+ * @author Vito Genovese
 1106+ */
 1107+$messages['tr'] = array(
 1108+ 'semanticmaps_abb_north' => 'K',
 1109+ 'semanticmaps_abb_east' => 'D',
 1110+ 'semanticmaps_abb_south' => 'G',
 1111+ 'semanticmaps_abb_west' => 'B',
 1112+ 'semanticmaps_label_latitude' => 'Enlem:',
 1113+ 'semanticmaps_label_longitude' => 'Boylam:',
 1114+ 'semanticmaps_lookupcoordinates' => 'Koordinat ara',
 1115+ 'semanticmaps_enteraddresshere' => 'Adresi buraya girin',
 1116+ 'semanticmaps_notfound' => 'bulunamadı',
 1117+ 'semanticmaps_paramdesc_zoom' => 'Haritanın yakınlaşma seviyesi',
 1118+ 'semanticmaps_paramdesc_layers' => 'Haritada mevcut olan katmanlar',
 1119+);
 1120+
 1121+/** Veps (Vepsan kel')
 1122+ * @author Игорь Бродский
 1123+ */
 1124+$messages['vep'] = array(
 1125+ 'semanticmaps_notfound' => 'ei voi löuta',
 1126+);
 1127+
 1128+/** Vietnamese (Tiếng Việt)
 1129+ * @author Minh Nguyen
 1130+ * @author Vinhtantran
 1131+ */
 1132+$messages['vi'] = array(
 1133+ 'semanticmaps_desc' => 'Cung cấp khả năng xem và sửa đổi dữ liệu tọa độ được lưu bởi phần mở rộng Semantic MediaWiki ([http://wiki.bn2vs.com/wiki/Semantic_Maps thử xem]).
 1134+Các dịch vụ bản đồ có sẵn: $1',
 1135+ 'semanticmaps_lookupcoordinates' => 'Tra tọa độ',
 1136+ 'semanticmaps_enteraddresshere' => 'Nhập địa chỉ vào đây',
 1137+ 'semanticmaps_notfound' => 'không tìm thấy',
 1138+);
 1139+
 1140+/** Volapük (Volapük)
 1141+ * @author Smeira
 1142+ */
 1143+$messages['vo'] = array(
 1144+ 'semanticmaps_lookupcoordinates' => 'Tuvön koordinatis',
 1145+);
 1146+
 1147+/** Simplified Chinese (‪中文(简体)‬)
 1148+ * @author Gzdavidwong
 1149+ */
 1150+$messages['zh-hans'] = array(
 1151+ 'semanticmaps_lookupcoordinates' => '查找坐标',
 1152+);
 1153+
 1154+/** Traditional Chinese (‪中文(繁體)‬)
 1155+ * @author Wrightbus
 1156+ */
 1157+$messages['zh-hant'] = array(
 1158+ 'semanticmaps_lookupcoordinates' => '尋找座標',
 1159+);
 1160+
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/SemanticMaps.i18n.php
___________________________________________________________________
Name: svn:eol-style
11161 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/SemanticMaps.php
@@ -0,0 +1,113 @@
 2+<?php
 3+
 4+/**
 5+ * Initialization file for the Semantic Maps extension.
 6+ * Extension documentation: http://www.mediawiki.org/wiki/Extension:Semantic_Maps
 7+ *
 8+ * @file SemanticMaps.php
 9+ * @ingroup SemanticMaps
 10+ *
 11+ * @author Jeroen De Dauw
 12+ */
 13+
 14+/**
 15+ * This documenation group collects source code files belonging to Semantic Maps.
 16+ *
 17+ * Please do not use this group name for other code. If you have an extension to
 18+ * Semantic Maps, please use your own group defenition.
 19+ *
 20+ * @defgroup SemanticMaps Semantic Maps
 21+ */
 22+
 23+if( !defined( 'MEDIAWIKI' ) ) {
 24+ die( 'Not an entry point.' );
 25+}
 26+
 27+// Show a warning if Maps is not loaded.
 28+if (! defined( 'Maps_VERSION' )) {
 29+ echo '<b>Warning:</b> You need to have <a href="http://www.mediawiki.org/wiki/Extension:Maps">Maps</a> installed in order to use <a href="http://www.mediawiki.org/wiki/Extension:Semantic Maps">Semantic Maps</a>. ';
 30+}
 31+
 32+// Show a warning if Semantic MediaWiki is not loaded.
 33+if (! defined( 'SMW_VERSION' )) {
 34+ echo '<b>Warning:</b> You need to have <a href="http://semantic-mediawiki.org/wiki/Semantic_MediaWiki">Semantic MediaWiki</a> installed in order to use <a href="http://www.mediawiki.org/wiki/Extension:Semantic Maps">Semantic Maps</a>.';
 35+}
 36+
 37+// Only initialize the extension when all dependencies are present.
 38+if (defined( 'Maps_VERSION' ) && defined( 'SMW_VERSION' )) {
 39+ define('SM_VERSION', '0.5.3');
 40+
 41+ $smgScriptPath = $wgScriptPath . '/extensions/SemanticMaps';
 42+ $smgIP = $IP . '/extensions/SemanticMaps';
 43+
 44+ $smgStyleVersion = $wgStyleVersion . '-' . SM_VERSION;
 45+
 46+ // Include the settings file.
 47+ require_once($smgIP . '/SM_Settings.php');
 48+
 49+ $wgExtensionFunctions[] = 'smfSetup';
 50+
 51+ $wgHooks['AdminLinks'][] = 'smfAddToAdminLinks';
 52+
 53+ $wgExtensionMessagesFiles['SemanticMaps'] = $smgIP . '/SemanticMaps.i18n.php';
 54+
 55+ // Registration of the Geographical Coordinate type.
 56+ $wgAutoloadClasses['SMGeoCoordsValue'] = $smgIP . '/SM_GeoCoordsValue.php';
 57+ $wgHooks['smwInitDatatypes'][] = 'smfInitGeoCoordsType';
 58+}
 59+
 60+/**
 61+ * 'Initialization' function for the Semantic Maps extension.
 62+ * The only work done here is creating the extension credits for
 63+ * Semantic Maps. The actuall work in done via the Maps hooks.
 64+ */
 65+function smfSetup() {
 66+ global $wgExtensionCredits, $wgLang, $wgOut, $egMapsServices, $smgScriptPath;
 67+
 68+ // Creation of a list of internationalized service names.
 69+ $services = array();
 70+ foreach (array_keys($egMapsServices) as $name) $services[] = wfMsg('maps_'.$name);
 71+ $services_list = $wgLang->listToText($services);
 72+
 73+ wfLoadExtensionMessages( 'SemanticMaps' );
 74+
 75+ $wgExtensionCredits['other'][]= array(
 76+ 'path' => __FILE__,
 77+ 'name' => wfMsg('semanticmaps_name'),
 78+ 'version' => SM_VERSION,
 79+ 'author' => array('[http://bn2vs.com Jeroen De Dauw]', '[http://www.mediawiki.org/wiki/User:Yaron_Koren Yaron Koren]', 'others'),
 80+ 'url' => 'http://www.mediawiki.org/wiki/Extension:Semantic_Maps',
 81+ 'description' => wfMsgExt( 'semanticmaps_desc', 'parsemag', $services_list ),
 82+ 'descriptionmsg' => wfMsgExt( 'semanticmaps_desc', 'parsemag', $services_list ),
 83+ );
 84+
 85+ $wgOut->addScriptFile($smgScriptPath . '/SMUtilityFunctions.js');
 86+
 87+ return true;
 88+}
 89+
 90+/**
 91+ * Adds support for the geographical coordinate data type to Semantic MediaWiki.
 92+ */
 93+function smfInitGeoCoordsType() {
 94+ SMWDataValueFactory::registerDatatype('_geo', 'SMGeoCoordsValue');
 95+ return true;
 96+}
 97+
 98+/**
 99+ * Adds a link to Admin Links page.
 100+ */
 101+function smfAddToAdminLinks(&$admin_links_tree) {
 102+ $displaying_data_section = $admin_links_tree->getSection(wfMsg('smw_adminlinks_displayingdata'));
 103+
 104+ // Escape if SMW hasn't added links.
 105+ if (is_null($displaying_data_section)) return true;
 106+
 107+ $smw_docu_row = $displaying_data_section->getRow('smw');
 108+
 109+ $sm_docu_label = wfMsg('adminlinks_documentation', wfMsg('semanticmaps_name'));
 110+ $smw_docu_row->addItem(AlItem::newFromExternalLink("http://www.mediawiki.org/wiki/Extension:Semantic_Maps", $sm_docu_label));
 111+
 112+ return true;
 113+}
 114+
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/SemanticMaps.php
___________________________________________________________________
Name: svn:eol-style
1115 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/QueryPrinters/SM_QueryPrinters.php
@@ -0,0 +1,172 @@
 2+<?php
 3+
 4+/**
 5+ * Initialization file for query printer functionality in the Semantic Maps extension
 6+ *
 7+ * @file SM_QueryPrinters.php
 8+ * @ingroup SemanticMaps
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+final class SMQueryPrinters {
 18+
 19+ public static $parameters = array();
 20+
 21+ /**
 22+ * Initialization function for Maps query printer functionality.
 23+ */
 24+ public static function initialize() {
 25+ global $smgIP, $wgAutoloadClasses, $egMapsServices;
 26+ $wgAutoloadClasses['SMMapPrinter'] = $smgIP . '/QueryPrinters/SM_MapPrinter.php';
 27+
 28+ self::initializeParams();
 29+
 30+ $hasQueryPrinters = false;
 31+
 32+ foreach($egMapsServices as $serviceName => $serviceData) {
 33+ // Check if the service has a query printer
 34+ $hasQP = array_key_exists('qp', $serviceData);
 35+
 36+ // If the service has no QP, skipt it and continue with the next one.
 37+ if (!$hasQP) continue;
 38+
 39+ // At least one query printer will be enabled when this point is reached.
 40+ $hasQueryPrinters = true;
 41+
 42+ // Initiate the format.
 43+ self::initFormat($serviceName, $serviceData['qp'], $serviceData['aliases']);
 44+ }
 45+
 46+ // Add the 'map' result format if there are mapping services that have QP's loaded.
 47+ if ($hasQueryPrinters) self::initFormat('map', array('class' => 'SMMapper', 'file' => 'QueryPrinters/SM_Mapper.php', 'local' => true), array());
 48+ }
 49+
 50+ private static function initializeParams() {
 51+ global $egMapsDefaultServices, $egMapsDefaultCentre, $egMapsAvailableGeoServices, $egMapsDefaultGeoService;
 52+
 53+ self::$parameters = array(
 54+ 'geoservice' => array(
 55+ 'criteria' => array(
 56+ 'in_array' => array_keys($egMapsAvailableGeoServices)
 57+ ),
 58+ 'default' => $egMapsDefaultGeoService
 59+ ),
 60+ 'format' => array(
 61+ 'required' => true,
 62+ 'default' => $egMapsDefaultServices['qp']
 63+ ),
 64+ 'centre' => array(
 65+ 'aliases' => array('center'),
 66+ 'default' => $egMapsDefaultCentre
 67+ ),
 68+ 'forceshow' => array(
 69+ 'type' => 'boolean',
 70+ 'aliases' => array('force show'),
 71+ 'default' => false,
 72+ 'output-type' => 'boolean'
 73+ ),
 74+ 'template' => array(
 75+ 'criteria' => array(
 76+ 'not_empty' => array()
 77+ ),
 78+ 'default' => false,
 79+ ),
 80+ 'showtitle' => array(
 81+ 'type' => 'boolean',
 82+ 'aliases' => array('show title'),
 83+ 'default' => true,
 84+ 'output-type' => 'boolean'
 85+ ),
 86+ 'icon' => array(
 87+ 'criteria' => array(
 88+ 'not_empty' => array()
 89+ )
 90+ ),
 91+ // SMW #Ask: parameters
 92+ 'limit' => array(
 93+ 'type' => 'integer',
 94+ 'criteria' => array(
 95+ 'in_range' => array(0)
 96+ )
 97+ ),
 98+ 'offset' => array(
 99+ 'type' => 'integer'
 100+ ),
 101+ 'sort' => array(),
 102+ 'order' => array(
 103+ 'criteria' => array(
 104+ 'in_array' => array('ascending', 'asc', 'descending', 'desc', 'reverse')
 105+ )
 106+ ),
 107+ 'headers' => array(
 108+ 'criteria' => array(
 109+ 'in_array' => array('show', 'hide')
 110+ )
 111+ ),
 112+ 'mainlabel' => array(),
 113+ 'link' => array(
 114+ 'criteria' => array(
 115+ 'in_array' => array('none', 'subject', 'all')
 116+ )
 117+ ),
 118+ 'default' => array(),
 119+ 'intro' => array(),
 120+ 'outro' => array(),
 121+ 'searchlabel' => array(),
 122+ 'distance' => array(),
 123+ );
 124+ }
 125+
 126+ /**
 127+ * Add the result format for a mapping service or alias.
 128+ *
 129+ * @param string $format
 130+ * @param array $qp
 131+ * @param array $aliases
 132+ */
 133+ private static function initFormat($format, array $qp, array $aliases) {
 134+ global $wgAutoloadClasses, $smgIP, $smwgResultAliases;
 135+
 136+ // Load the QP class when it's not loaded yet.
 137+ if (! array_key_exists($qp['class'], $wgAutoloadClasses)) {
 138+ $file = array_key_exists('local', $qp) && $qp['local'] ? $smgIP . '/' . $qp['file'] : $qp['file'];
 139+ $wgAutoloadClasses[$qp['class']] = $file;
 140+ }
 141+
 142+ // Add the QP to SMW.
 143+ self::addFormatQP($format, $qp['class']);
 144+
 145+ // If SMW supports aliasing, add the aliases to $smwgResultAliases.
 146+ if (isset($smwgResultAliases)) {
 147+ $smwgResultAliases[$format] = $aliases;
 148+ }
 149+ else { // If SMW does not support aliasing, add every alias as a format.
 150+ foreach($aliases as $alias) self::addFormatQP($alias, $qp['class']);
 151+ }
 152+ }
 153+
 154+ /**
 155+ * Adds a QP to SMW's $smwgResultFormats array or SMWQueryProcessor
 156+ * depending on if SMW supports $smwgResultFormats.
 157+ *
 158+ * @param string $format
 159+ * @param string $class
 160+ */
 161+ private static function addFormatQP($format, $class) {
 162+ global $smwgResultFormats;
 163+
 164+ if (isset($smwgResultFormats)) {
 165+ $smwgResultFormats[$format] = $class;
 166+ }
 167+ else {
 168+ SMWQueryProcessor::$formats[$format] = $class;
 169+ }
 170+ }
 171+
 172+
 173+}
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/QueryPrinters/SM_QueryPrinters.php
___________________________________________________________________
Name: svn:eol-style
1174 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/QueryPrinters/SM_MapPrinter.php
@@ -0,0 +1,343 @@
 2+<?php
 3+
 4+/**
 5+ * Abstract class that provides the common functionallity for all map query printers
 6+ *
 7+ * @file SM_MapPrinter.php
 8+ * @ingroup SemanticMaps
 9+ *
 10+ * @author Jeroen De Dauw
 11+ * @author Robert Buzink
 12+ * @author Yaron Koren
 13+ */
 14+
 15+if( !defined( 'MEDIAWIKI' ) ) {
 16+ die( 'Not an entry point.' );
 17+}
 18+
 19+abstract class SMMapPrinter extends SMWResultPrinter {
 20+
 21+ /*
 22+ * TODO:
 23+ * This class is borrowing an awefull lot code from MapsMapFeature, which
 24+ * ideally should be inherited. Since SMWResultPrinter already gets inherited,
 25+ * this is not possible. Finding a better solution to this code redundancy
 26+ * would be nice, cause now changes to MapsMapFeature need to be copied here.
 27+ */
 28+
 29+ /**
 30+ * Sets the map service specific element name
 31+ */
 32+ protected abstract function setQueryPrinterSettings();
 33+
 34+ /**
 35+ * Map service spesific map count and loading of dependencies
 36+ */
 37+ protected abstract function doMapServiceLoad();
 38+
 39+ /**
 40+ * Gets the query result
 41+ */
 42+ protected abstract function addSpecificMapHTML();
 43+
 44+ public $serviceName;
 45+
 46+ protected $m_locations = array();
 47+
 48+ protected $defaultZoom;
 49+ protected $elementNr;
 50+ protected $elementNamePrefix;
 51+
 52+ protected $mapName;
 53+
 54+ protected $centre_lat;
 55+ protected $centre_lon;
 56+
 57+ protected $output = '';
 58+ protected $errorList;
 59+
 60+ protected $mapFeature;
 61+
 62+ protected $featureParameters = array();
 63+ protected $spesificParameters = array();
 64+
 65+ /**
 66+ * Builds up and returns the HTML for the map, with the queried coordinate data on it.
 67+ *
 68+ * @param unknown_type $res
 69+ * @param unknown_type $outputmode
 70+ *
 71+ * @return array
 72+ */
 73+ public final function getResultText($res, $outputmode) {
 74+ $this->setQueryPrinterSettings();
 75+
 76+ $this->featureParameters = SMQueryPrinters::$parameters;
 77+
 78+ if (self::manageMapProperties($this->m_params, __CLASS__)) {
 79+ $this->formatResultData($res, $outputmode);
 80+
 81+ // Only create a map when there is at least one result.
 82+ if (count($this->m_locations) > 0 || $this->forceshow) {
 83+ $this->doMapServiceLoad();
 84+
 85+ $this->setMapName();
 86+
 87+ $this->setZoom();
 88+
 89+ $this->setCentre();
 90+
 91+ $this->addSpecificMapHTML();
 92+ }
 93+ else {
 94+ // TODO: add warning when level high enough and append to error list?
 95+ }
 96+ }
 97+
 98+ return array($this->output . $this->errorList, 'noparse' => 'true', 'isHTML' => 'true');
 99+ }
 100+
 101+ /**
 102+ * Validates and corrects the provided map properties, and the sets them as class fields.
 103+ *
 104+ * @param array $mapProperties
 105+ * @param string $className
 106+ *
 107+ * @return boolean Indicates whether the map should be shown or not.
 108+ */
 109+ protected final function manageMapProperties(array $mapProperties, $className) {
 110+ global $egMapsServices;
 111+
 112+ /*
 113+ * Assembliy of the allowed parameters and their information.
 114+ * The main parameters (the ones that are shared by everything) are overidden
 115+ * by the feature parameters (the ones spesific to a feature). The result is then
 116+ * again overidden by the service parameters (the ones spesific to the service),
 117+ * and finally by the spesific parameters (the ones spesific to a service-feature combination).
 118+ */
 119+ $parameterInfo = array_merge(MapsMapper::getMainParams(), $this->featureParameters);
 120+ $parameterInfo = array_merge($parameterInfo, $egMapsServices[$this->serviceName]['parameters']);
 121+ $parameterInfo = array_merge($parameterInfo, $this->spesificParameters);
 122+
 123+ $manager = new ValidatorManager();
 124+
 125+ $result = $manager->manageMapparameters($mapProperties, $parameterInfo);
 126+
 127+ $showMap = $result !== false;
 128+
 129+ if ($showMap) $this->setMapProperties($result, $className);
 130+
 131+ $this->errorList = $manager->getErrorList();
 132+
 133+ return $showMap;
 134+ }
 135+
 136+ /**
 137+ * Sets the map properties as class fields.
 138+ *
 139+ * @param array $mapProperties
 140+ * @param string $className
 141+ */
 142+ private function setMapProperties(array $mapProperties, $className) {
 143+ //var_dump($mapProperties); exit;
 144+ foreach($mapProperties as $paramName => $paramValue) {
 145+ if (! property_exists($className, $paramName)) {
 146+ $this->{$paramName} = $paramValue;
 147+ }
 148+ else {
 149+ throw new Exception('Attempt to override a class field during map propertie assignment. Field name: ' . $paramName);
 150+ }
 151+ }
 152+ }
 153+
 154+ public final function getResult($results, $params, $outputmode) {
 155+ // Skip checks, results with 0 entries are normal
 156+ $this->readParameters($params, $outputmode);
 157+ return $this->getResultText($results, SMW_OUTPUT_HTML);
 158+ }
 159+
 160+ private function formatResultData($res, $outputmode) {
 161+ while ( ($row = $res->getNext()) !== false ) {
 162+ $this->addResultRow($outputmode, $row);
 163+ }
 164+ }
 165+
 166+ /**
 167+ * This function will loop through all properties (fields) of one record (row),
 168+ * and add the location data, title, label and icon to the m_locations array.
 169+ *
 170+ * @param unknown_type $outputmode
 171+ * @param unknown_type $row The record you want to add data from
 172+ */
 173+ private function addResultRow($outputmode, $row) {
 174+ global $wgUser;
 175+ $skin = $wgUser->getSkin();
 176+
 177+ $title = '';
 178+ $titleForTemplate = '';
 179+ $text = '';
 180+ $lat = '';
 181+ $lon = '';
 182+
 183+ $coords = array();
 184+ $label = array();
 185+
 186+ // Loop throught all fields of the record
 187+ foreach ($row as $i => $field) {
 188+ $pr = $field->getPrintRequest();
 189+
 190+ // Loop throught all the parts of the field value
 191+ while ( ($object = $field->getNextObject()) !== false ) {
 192+ if ($object->getTypeID() == '_wpg' && $i == 0) {
 193+ if($this->showtitle) $title = $object->getLongText($outputmode, $skin);
 194+ if($this->template) $titleForTemplate = $object->getLongText($outputmode, NULL);
 195+ }
 196+
 197+ if ($object->getTypeID() != '_geo' && $i != 0) {
 198+ if ($this->template) {
 199+ $label[] = $object->getLongText($outputmode, $skin);
 200+ }
 201+ else {
 202+ $text .= $pr->getHTMLText($skin) . ': ' . $object->getLongText($outputmode, $skin) . '<br />';
 203+ }
 204+ }
 205+
 206+ if ($pr->getMode() == SMWPrintRequest::PRINT_PROP && $pr->getTypeID() == '_geo') {
 207+ $coords[] = explode(',', $object->getXSDValue());
 208+ }
 209+ }
 210+ }
 211+
 212+ foreach ($coords as $coord) {
 213+ if (count($coord) == 2) {
 214+ list($lat, $lon) = $coord;
 215+
 216+ if (strlen($lat) > 0 && strlen($lon) > 0) {
 217+ $icon = $this->getLocationIcon($row);
 218+
 219+ if ($this->template) {
 220+ global $wgParser;
 221+ $segments = array_merge(
 222+ array($this->template, 'title=' . $titleForTemplate, 'latitude=' . $lat, 'longitude=' . $lon),
 223+ $label
 224+ );
 225+ $text = preg_replace('/\n+/m', '<br />', $wgParser->recursiveTagParse('{{' . implode('|', $segments) . '}}'));
 226+ }
 227+
 228+ $this->m_locations[] = array($lat, $lon, $title, $text, $icon);
 229+ }
 230+ }
 231+ }
 232+ }
 233+
 234+ /**
 235+ * Get the icon for a row
 236+ *
 237+ * @param unknown_type $row
 238+ * @return unknown
 239+ */
 240+ private function getLocationIcon($row) {
 241+ $icon = '';
 242+ $legend_labels = array();
 243+
 244+ // Look for display_options field, which can be set by Semantic Compound Queries
 245+ // the location of this field changed in SMW 1.5
 246+ $display_location = method_exists($row[0], 'getResultSubject') ? $display_location = $row[0]->getResultSubject() : $row[0];
 247+
 248+ if (property_exists($display_location, 'display_options') && is_array($display_location->display_options)) {
 249+ $display_options = $display_location->display_options;
 250+ if (array_key_exists('icon', $display_options)) {
 251+ $icon = $display_options['icon'];
 252+
 253+ // This is somewhat of a hack - if a legend label has been set, we're getting it for every point, instead of just once per icon
 254+ if (array_key_exists('legend label', $display_options)) {
 255+
 256+ $legend_label = $display_options['legend label'];
 257+
 258+ if (! array_key_exists($icon, $legend_labels)) {
 259+ $legend_labels[$icon] = $legend_label;
 260+ }
 261+ }
 262+ }
 263+ // Icon can be set even for regular, non-compound queries If it is, though, we have to translate the name into a URL here
 264+ } elseif (strlen($this->icon) > 0) {
 265+ $icon_image_page = new ImagePage( Title::newFromText($this->icon) );
 266+ $icon = $icon_image_page->getDisplayedFile()->getURL();
 267+ }
 268+
 269+ return $icon;
 270+ }
 271+
 272+ /**
 273+ * Sets the zoom level to the provided value, or when not set, to the default.
 274+ *
 275+ */
 276+ private function setZoom() {
 277+ if (strlen($this->zoom) < 1) {
 278+ if (count($this->m_locations) > 1) {
 279+ $this->zoom = 'null';
 280+ }
 281+ else {
 282+ $this->zoom = $this->defaultZoom;
 283+ }
 284+ }
 285+ }
 286+
 287+ /**
 288+ * Sets the $centre_lat and $centre_lon fields.
 289+ * Note: this needs to be done AFTRE the maker coordinates are set.
 290+ *
 291+ */
 292+ private function setCentre() {
 293+ // If a centre value is set, use it.
 294+ if (strlen($this->centre) > 0) {
 295+ // Geocode and convert if required.
 296+ $centre = MapsGeocodeUtils::attemptToGeocode($this->centre, $this->geoservice, $this->serviceName);
 297+ $centre = MapsUtils::getLatLon($centre);
 298+
 299+ $this->centre_lat = $centre['lat'];
 300+ $this->centre_lon = $centre['lon'];
 301+ }
 302+ elseif (count($this->m_locations) > 1) {
 303+ // If centre is not set, and there are multiple points, set the values to null, to be auto determined by the JS of the mapping API.
 304+ $this->centre_lat = 'null';
 305+ $this->centre_lon = 'null';
 306+ }
 307+ elseif (count($this->m_locations) == 1) {
 308+ // If centre is not set and there is exactelly one marker, use it's coordinates.
 309+ $this->centre_lat = $this->m_locations[0][0];
 310+ $this->centre_lon = $this->m_locations[0][1];
 311+ }
 312+ else {
 313+ // If centre is not set and there are no results, centre on the default coordinates.
 314+ global $egMapsMapLat, $egMapsMapLon;
 315+ $this->centre_lat = $egMapsMapLat;
 316+ $this->centre_lon = $egMapsMapLon;
 317+ }
 318+ }
 319+
 320+ /**
 321+ * Sets the $mapName field, using the $elementNamePrefix and $elementNr.
 322+ *
 323+ */
 324+ protected function setMapName() {
 325+ $this->mapName = $this->elementNamePrefix.'_'.$this->elementNr;
 326+ }
 327+
 328+ public final function getName() {
 329+ return wfMsg('maps_' . $this->serviceName);
 330+ }
 331+
 332+ public function getParameters() {
 333+ global $egMapsMapWidth, $egMapsMapHeight;
 334+
 335+ $params = parent::exportFormatParameters();
 336+
 337+ $params[] = array('name' => 'zoom', 'type' => 'int', 'description' => wfMsg('semanticmaps_paramdesc_zoom'));
 338+ $params[] = array('name' => 'width', 'type' => 'int', 'description' => wfMsgExt('semanticmaps_paramdesc_width', 'parsemag', $egMapsMapWidth));
 339+ $params[] = array('name' => 'height', 'type' => 'int', 'description' => wfMsgExt('semanticmaps_paramdesc_height', 'parsemag', $egMapsMapHeight));
 340+
 341+ return $params;
 342+ }
 343+
 344+}
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/QueryPrinters/SM_MapPrinter.php
___________________________________________________________________
Name: svn:eol-style
1345 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/QueryPrinters/SM_Mapper.php
@@ -0,0 +1,64 @@
 2+<?php
 3+
 4+/**
 5+ * General map query printer class
 6+ *
 7+ * @file SM_Mapper.php
 8+ * @ingroup SemanticMaps
 9+ *
 10+ * @author Jeroen De Dauw
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ die( 'Not an entry point.' );
 15+}
 16+
 17+final class SMMapper {
 18+
 19+ private $queryPrinter;
 20+
 21+ public function __construct($format, $inline) {
 22+ global $egMapsDefaultServices, $egMapsServices;
 23+
 24+ // TODO: allow service parameter to override the default
 25+ // Note: if this is allowed, then the getParameters should only return the base parameters.
 26+ if ($format == 'map') $format = $egMapsDefaultServices['qp'];
 27+
 28+ $service = MapsMapper::getValidService($format, 'qp');
 29+
 30+ $this->queryPrinter = new $egMapsServices[$service]['qp']['class']($format, $inline);
 31+ }
 32+
 33+ public static function getAliases() {
 34+ return $this->queryPrinter->getAliases();
 35+ }
 36+
 37+ public static function setAliases() {
 38+ return $this->queryPrinter->setAliases();
 39+ }
 40+
 41+ public function getName() {
 42+ return wfMsg('maps_map');
 43+ }
 44+
 45+ public function getQueryMode($context) {
 46+ return $this->queryPrinter->getQueryMode($context);
 47+ }
 48+
 49+ public function getResult($results, $params, $outputmode) {
 50+ return $this->queryPrinter->getResult($results, $params, $outputmode);
 51+ }
 52+
 53+ protected function getResultText($res, $outputmode) {
 54+ return $this->queryPrinter->getResultText($res, $outputmode);
 55+ }
 56+
 57+ public function getParameters() {
 58+ return $this->queryPrinter->getParameters();
 59+ }
 60+
 61+ public function getMimeType($res) {
 62+ return $this->queryPrinter->getMimeType($res);
 63+ }
 64+
 65+}
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/QueryPrinters/SM_Mapper.php
___________________________________________________________________
Name: svn:eol-style
166 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/GoogleMaps/SM_GoogleMapsFunctions.js
@@ -0,0 +1,66 @@
 2+ /**
 3+ * Javascript functions for Google Maps functionallity in Semantic Maps
 4+ *
 5+ * @file SM_GoogleMapFunctions.js
 6+ * @ingroup SMGoogleMaps
 7+ *
 8+ * @author Jeroen De Dauw
 9+ */
 10+
 11+/**
 12+ * This function holds spesific functionallity for the Google Maps form input of Semantic Maps
 13+ * TODO: Refactor as much code as possible to non specific functions
 14+ */
 15+function makeGoogleMapFormInput(mapName, locationFieldName, mapOptions, marker_lat, marker_lon) {
 16+ if (GBrowserIsCompatible()) {
 17+ mapOptions.centre = new GLatLng(mapOptions.lat, mapOptions.lon);
 18+ mapOptions.size = new GSize(mapOptions.width, mapOptions.height);
 19+ var map = createGoogleMap(mapName, mapOptions, [getGMarkerData(marker_lat, marker_lon, '', '', '')]);
 20+
 21+ // Show a starting marker only if marker coordinates are provided
 22+ if (marker_lat != null && marker_lon != null) {
 23+ map.addOverlay(new GMarker(new GLatLng(marker_lat, marker_lon)));
 24+ }
 25+
 26+ // Click event handler for updating the location of the marker
 27+ GEvent.addListener(map, "click",
 28+ function(overlay, point) {
 29+ if (overlay) {
 30+ map.removeOverlay(overlay);
 31+ } else {
 32+ map.clearOverlays();
 33+ document.getElementById(locationFieldName).value = convertLatToDMS(point.y)+', '+convertLngToDMS(point.x);
 34+ map.addOverlay(new GMarker(point));
 35+ map.panTo(point);
 36+ }
 37+ }
 38+ );
 39+
 40+ // Make the map variable available for other functions
 41+ if (!window.GMaps) window.GMaps = new Object;
 42+ eval("window.GMaps." + mapName + " = map;");
 43+ }
 44+}
 45+
 46+/**
 47+ * This function holds spesific functionallity for the Google Maps form input of Semantic Maps
 48+ */
 49+function showGAddress(address, mapName, outputElementName, notFoundFormat) {
 50+ var map = GMaps[mapName];
 51+ var geocoder = new GClientGeocoder();
 52+
 53+ geocoder.getLatLng(address,
 54+ function(point) {
 55+ if (!point) {
 56+ window.alert(address + ' ' + notFoundFormat);
 57+ } else {
 58+ map.clearOverlays();
 59+ map.setCenter(point, 14);
 60+ var marker = new GMarker(point);
 61+ map.addOverlay(marker);
 62+ document.getElementById(outputElementName).value = convertLatToDMS(point.y) + ', ' + convertLngToDMS(point.x);
 63+ }
 64+ }
 65+ );
 66+
 67+}
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/GoogleMaps/SM_GoogleMapsFunctions.js
___________________________________________________________________
Name: svn:eol-style
168 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/GoogleMaps/SM_GoogleMaps.php
@@ -0,0 +1,24 @@
 2+<?php
 3+
 4+/**
 5+ * This groupe contains all Google Maps related files of the Semantic Maps extension.
 6+ *
 7+ * @defgroup SMGoogleMaps Google Maps
 8+ * @ingroup SemanticMaps
 9+ */
 10+
 11+/**
 12+ * This file holds the general information for the Google Maps service.
 13+ *
 14+ * @file SM_GoogleMaps.php
 15+ * @ingroup SMGoogleMaps
 16+ *
 17+ * @author Jeroen De Dauw
 18+ */
 19+
 20+if( !defined( 'MEDIAWIKI' ) ) {
 21+ die( 'Not an entry point.' );
 22+}
 23+
 24+$egMapsServices['googlemaps2']['qp'] = array('class' => 'SMGoogleMapsQP', 'file' => 'GoogleMaps/SM_GoogleMapsQP.php', 'local' => true);
 25+$egMapsServices['googlemaps2']['fi'] = array('class' => 'SMGoogleMapsFormInput', 'file' => 'GoogleMaps/SM_GoogleMapsFormInput.php', 'local' => true);
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/GoogleMaps/SM_GoogleMaps.php
___________________________________________________________________
Name: svn:eol-style
126 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/GoogleMaps/SM_GoogleMapsQP.php
@@ -0,0 +1,129 @@
 2+<?php
 3+/**
 4+ * A query printer for maps using the Google Maps API
 5+ *
 6+ * @file SM_GoogleMaps.php
 7+ * @ingroup SMGoogleMaps
 8+ *
 9+ * @author Robert Buzink
 10+ * @author Yaron Koren
 11+ * @author Jeroen De Dauw
 12+ */
 13+
 14+if( !defined( 'MEDIAWIKI' ) ) {
 15+ die( 'Not an entry point.' );
 16+}
 17+
 18+final class SMGoogleMapsQP extends SMMapPrinter {
 19+
 20+ public $serviceName = MapsGoogleMaps::SERVICE_NAME;
 21+
 22+ protected $spesificParameters;
 23+
 24+ /**
 25+ * @see SMMapPrinter::setQueryPrinterSettings()
 26+ *
 27+ */
 28+ protected function setQueryPrinterSettings() {
 29+ global $egMapsGoogleMapsZoom, $egMapsGoogleMapsPrefix, $egMapsGMapOverlays;
 30+
 31+ $this->elementNamePrefix = $egMapsGoogleMapsPrefix;
 32+
 33+ $this->defaultZoom = $egMapsGoogleMapsZoom;
 34+
 35+ $this->spesificParameters = array(
 36+ 'overlays' => array(
 37+ 'type' => array('string', 'list'),
 38+ 'criteria' => array(
 39+ 'is_google_overlay' => array()
 40+ ),
 41+ 'default' => $egMapsGMapOverlays,
 42+ ),
 43+ );
 44+ }
 45+
 46+ /**
 47+ * @see SMMapPrinter::doMapServiceLoad()
 48+ *
 49+ */
 50+ protected function doMapServiceLoad() {
 51+ global $egGoogleMapsOnThisPage;
 52+
 53+ if (empty($egGoogleMapsOnThisPage)) {
 54+ $egGoogleMapsOnThisPage = 0;
 55+ MapsGoogleMaps::addGMapDependencies($this->output);
 56+ }
 57+
 58+ $egGoogleMapsOnThisPage++;
 59+
 60+ $this->elementNr = $egGoogleMapsOnThisPage;
 61+ }
 62+
 63+ /**
 64+ * @see SMMapPrinter::getQueryResult()
 65+ *
 66+ */
 67+ protected function addSpecificMapHTML() {
 68+ global $wgJsMimeType;
 69+
 70+ $onloadFunctions = MapsGoogleMaps::addOverlayOutput($this->output, $this->mapName, $this->overlays, $this->controls);
 71+
 72+ $markerItems = array();
 73+
 74+ foreach ($this->m_locations as $location) {
 75+ list($lat, $lon, $title, $label, $icon) = $location;
 76+
 77+ $title = str_replace("'", "\'", $title);
 78+ $label = str_replace("'", "\'", $label);
 79+
 80+ $markerItems[] = "getGMarkerData($lat, $lon, '$title', '$label', '$icon')";
 81+ }
 82+
 83+ // Create a string containing the marker JS
 84+ $markersString = implode(',', $markerItems);
 85+
 86+ $this->output .= <<<END
 87+<div id="$this->mapName" class="$this->class" style="$this->style" ></div>
 88+<script type="$wgJsMimeType"> /*<![CDATA[*/
 89+addOnloadHook(
 90+ initializeGoogleMap('$this->mapName',
 91+ {
 92+ width: $this->width,
 93+ height: $this->height,
 94+ lat: $this->centre_lat,
 95+ lon: $this->centre_lon,
 96+ zoom: $this->zoom,
 97+ type: $this->type,
 98+ types: [$this->types],
 99+ controls: [$this->controls],
 100+ scrollWheelZoom: $this->autozoom
 101+ },
 102+ [$markersString]
 103+ )
 104+);
 105+/*]]>*/ </script>
 106+
 107+END;
 108+
 109+ $this->output .= $onloadFunctions;
 110+ }
 111+
 112+ /**
 113+ * Returns type info, descriptions and allowed values for this QP's parameters after adding the spesific ones to the list.
 114+ */
 115+ public function getParameters() {
 116+ $params = parent::getParameters();
 117+
 118+ $allowedTypes = MapsGoogleMaps::getTypeNames();
 119+
 120+ $params[] = array('name' => 'controls', 'type' => 'enum-list', 'description' => wfMsg('semanticmaps_paramdesc_controls'), 'values' => MapsGoogleMaps::getControlNames());
 121+ $params[] = array('name' => 'types', 'type' => 'enum-list', 'description' => wfMsg('semanticmaps_paramdesc_types'), 'values' => $allowedTypes);
 122+ $params[] = array('name' => 'type', 'type' => 'enumeration', 'description' => wfMsg('semanticmaps_paramdesc_type'), 'values' => $allowedTypes);
 123+ $params[] = array('name' => 'overlays', 'type' => 'enum-list', 'description' => wfMsg('semanticmaps_paramdesc_overlays'), 'values' => MapsGoogleMaps::getOverlayNames());
 124+ $params[] = array('name' => 'autozoom', 'type' => 'enumeration', 'description' => wfMsg('semanticmaps_paramdesc_autozoom'), 'values' => array('on', 'off'));
 125+
 126+ return $params;
 127+ }
 128+
 129+}
 130+
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/GoogleMaps/SM_GoogleMapsQP.php
___________________________________________________________________
Name: svn:eol-style
1131 + native
Index: tags/extensions/SemanticMaps/REL_0_5_3/GoogleMaps/SM_GoogleMapsFormInput.php
@@ -0,0 +1,117 @@
 2+<?php
 3+
 4+/**
 5+ * A class that holds static helper functions and extension hooks for the Google Maps service
 6+ *
 7+ * @file SM_GoogleMapsFormInput.php
 8+ * @ingroup SMGoogleMaps
 9+ *
 10+ * @author Robert Buzink
 11+ * @author Yaron Koren
 12+ * @author Jeroen De Dauw
 13+ */
 14+
 15+if( !defined( 'MEDIAWIKI' ) ) {
 16+ die( 'Not an entry point.' );
 17+}
 18+
 19+final class SMGoogleMapsFormInput extends SMFormInput {
 20+
 21+ public $serviceName = MapsGoogleMaps::SERVICE_NAME;
 22+
 23+ /**
 24+ * @see MapsMapFeature::setMapSettings()
 25+ *
 26+ */
 27+ protected function setMapSettings() {
 28+ global $egMapsGoogleMapsZoom, $egMapsGoogleMapsPrefix;
 29+
 30+ $this->elementNamePrefix = $egMapsGoogleMapsPrefix;
 31+ $this->showAddresFunction = 'showGAddress';
 32+
 33+ $this->earthZoom = 1;
 34+
 35+ $this->defaultZoom = $egMapsGoogleMapsZoom;
 36+ }
 37+
 38+ /**
 39+ * (non-PHPdoc)
 40+ * @see smw/extensions/SemanticMaps/FormInputs/SMFormInput#addFormDependencies()
 41+ */
 42+ protected function addFormDependencies() {
 43+ global $wgJsMimeType;
 44+ global $smgScriptPath, $smgGoogleFormsOnThisPage, $smgStyleVersion;
 45+
 46+ MapsGoogleMaps::addGMapDependencies($this->output);
 47+
 48+ if (empty($smgGoogleFormsOnThisPage)) {
 49+ $smgGoogleFormsOnThisPage = 0;
 50+ $this->output .= "<script type='$wgJsMimeType' src='$smgScriptPath/GoogleMaps/SM_GoogleMapsFunctions.js?$smgStyleVersion'></script>";
 51+ }
 52+ }
 53+
 54+ /**
 55+ * @see MapsMapFeature::doMapServiceLoad()
 56+ *
 57+ */
 58+ protected function doMapServiceLoad() {
 59+ global $egGoogleMapsOnThisPage, $smgGoogleFormsOnThisPage;
 60+
 61+ self::addFormDependencies();
 62+
 63+ $egGoogleMapsOnThisPage++;
 64+ $smgGoogleFormsOnThisPage++;
 65+
 66+ $this->elementNr = $egGoogleMapsOnThisPage;
 67+ }
 68+
 69+ /**
 70+ * @see MapsMapFeature::addSpecificFormInputHTML()
 71+ *
 72+ */
 73+ protected function addSpecificMapHTML() {
 74+ global $wgJsMimeType;
 75+
 76+ // Remove the overlays control in case it's present.
 77+ if (in_string('overlays', $this->controls)) {
 78+ $this->controls = str_replace(",'overlays'", '', $this->controls);
 79+ $this->controls = str_replace("'overlays',", '', $this->controls);
 80+ }
 81+
 82+ $this->output .= "
 83+ <div id='".$this->mapName."' class='".$this->class."'></div>
 84+
 85+ <script type='$wgJsMimeType'>/*<![CDATA[*/
 86+ addOnloadHook(
 87+ makeGoogleMapFormInput(
 88+ '$this->mapName',
 89+ '$this->coordsFieldName',
 90+ {
 91+ width: $this->width,
 92+ height: $this->height,
 93+ lat: $this->centre_lat,
 94+ lon: $this->centre_lon,
 95+ zoom: $this->zoom,
 96+ type: $this->type,
 97+ types: [$this->types],
 98+ controls: [$this->controls],
 99+ scrollWheelZoom: $this->autozoom
 100+ },
 101+ $this->marker_lat,
 102+ $this->marker_lon
 103+ )
 104+ );
 105+ /*]]>*/</script>";
 106+ }
 107+
 108+ /**
 109+ * @see SMFormInput::manageGeocoding()
 110+ *
 111+ */
 112+ protected function manageGeocoding() {
 113+ global $egGoogleMapsKey;
 114+ $this->enableGeocoding = strlen(trim($egGoogleMapsKey)) > 0;
 115+ if ($this->enableGeocoding) MapsGoogleMaps::addGMapDependencies($this->output);
 116+ }
 117+
 118+}
Index: tags/extensions/SemanticMaps/REL_0_5_3/README
@@ -0,0 +1,25 @@
 2+== About ==
 3+
 4+Semantic Maps is an extension that adds semantic capabilities to the Maps extension. This
 5+includes the ability to add, edit, aggregate and visualize coordinate data stored through
 6+the Semantic MediaWiki extension.
 7+
 8+Since Semantic Maps uses the Maps API, you can use multiple mapping services. These include
 9+Google Maps (with Google Earth support), Yahoo! Maps, OpenLayers and OpenStreetMap.
 10+
 11+Both Semantic Maps and Maps are based on Semantic Google Maps and Semantic Layers, and are
 12+meant to replace these extensions. Having Semantic MediaWiki and Maps installed is a
 13+prerequisite for the Semantic Maps extension; the code will not work without it.
 14+
 15+Notes on installing Semantic Maps are found in the file INSTALL.
 16+
 17+
 18+== Contributing ==
 19+
 20+If you have bug reports or requests, please add them to the Talk page [0]. You can also
 21+send them to Jeroen De Dauw, jeroendedauw -at- gmail.com, and Yaron Koren, at yaron57 -at-
 22+gmail.com.
 23+
 24+[0] http://www.mediawiki.org/w/index.php?title=Extension_talk:Semantic_Maps
 25+
 26+For more info, see http://www.mediawiki.org/wiki/Extension:Semantic_Maps#Contributing_to_the_project
\ No newline at end of file
Property changes on: tags/extensions/SemanticMaps/REL_0_5_3/README
___________________________________________________________________
Name: svn:eol-style
127 + native

Status & tagging log