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 |
1 | 56 | + 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 |
1 | 26 | + 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 |
1 | 94 | + 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 |
1 | 100 | + 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 |
1 | 26 | + 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 |
1 | 89 | + 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 |
1 | 63 | + 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 |
1 | 176 | + 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 |
1 | 133 | + 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 |
1 | 18 | + 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 |
1 | 101 | + 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 |
1 | 26 | + 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 |
1 | 100 | + 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 |
1 | 222 | + 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(' ', $this->m_N, $this->m_E, $this->m_W, $this->m_S, ), |
| 50 | + array(' ','N','E','W','S'),$value); |
| 51 | + $value = str_replace(array('°', '°'), '°', $value); |
| 52 | + $value = str_replace(array('´', '´'),'´',$value); |
| 53 | + $value = str_replace(array('″', '″', "''", '"', '´´', SM_GEO_MIN . SM_GEO_MIN),SM_GEO_SEC,$value); |
| 54 | + $value = str_replace(array('′', '′', "'", '´'),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 |
1 | 337 | + 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 |
1 | 21 | + 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 |
1 | 350 | + 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 |
1 | 1161 | + 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 |
1 | 115 | + 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 |
1 | 174 | + 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 |
1 | 345 | + 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 |
1 | 66 | + 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 |
1 | 68 | + 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 |
1 | 26 | + 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 |
1 | 131 | + 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 |
1 | 27 | + native |