diff options
Diffstat (limited to 'www/wiki/extensions/Maps/src/LeafletService.php')
-rw-r--r-- | www/wiki/extensions/Maps/src/LeafletService.php | 66 |
1 files changed, 46 insertions, 20 deletions
diff --git a/www/wiki/extensions/Maps/src/LeafletService.php b/www/wiki/extensions/Maps/src/LeafletService.php index 0e41d670..6d189fdb 100644 --- a/www/wiki/extensions/Maps/src/LeafletService.php +++ b/www/wiki/extensions/Maps/src/LeafletService.php @@ -3,6 +3,8 @@ namespace Maps; use Html; +use ParamProcessor\ParameterTypes; +use ParamProcessor\ProcessingResult; /** * @licence GNU GPL v2+ @@ -24,19 +26,17 @@ class LeafletService implements MappingService { } public function getParameterInfo(): array { - global $GLOBALS; - - $params = []; + $params = MapsFunctions::getCommonParameters(); $params['zoom'] = [ - 'type' => 'integer', + 'type' => ParameterTypes::INTEGER, 'range' => [ 0, 20 ], 'default' => false, 'message' => 'maps-par-zoom' ]; $params['defzoom'] = [ - 'type' => 'integer', + 'type' => ParameterTypes::INTEGER, 'range' => [ 0, 20 ], 'default' => self::getDefaultZoom(), 'message' => 'maps-leaflet-par-defzoom' @@ -51,8 +51,9 @@ class LeafletService implements MappingService { 'islist' => true, ]; - $params['overlaylayers'] = [ - 'type' => 'string', + $params['overlays'] = [ + 'aliases' => [ 'overlaylayers' ], + 'type' => ParameterTypes::STRING, 'values' => array_keys( $GLOBALS['egMapsLeafletAvailableOverlayLayers'], true, true ), 'default' => $GLOBALS['egMapsLeafletOverlayLayers'], 'message' => 'maps-leaflet-par-overlaylayers', @@ -60,59 +61,68 @@ class LeafletService implements MappingService { ]; $params['resizable'] = [ - 'type' => 'boolean', + 'type' => ParameterTypes::BOOLEAN, 'default' => $GLOBALS['egMapsResizableByDefault'], 'message' => 'maps-par-resizable' ]; - $params['enablefullscreen'] = [ - 'type' => 'boolean', + $params['fullscreen'] = [ + 'aliases' => [ 'enablefullscreen' ], + 'type' => ParameterTypes::BOOLEAN, 'default' => false, 'message' => 'maps-par-enable-fullscreen', ]; $params['scrollwheelzoom'] = [ - 'type' => 'boolean', + 'aliases' => [ 'scrollzoom' ], + 'type' => ParameterTypes::BOOLEAN, 'default' => true, 'message' => 'maps-par-scrollwheelzoom', ]; - $params['markercluster'] = [ - 'type' => 'boolean', + $params['cluster'] = [ + 'aliases' => [ 'markercluster' ], + 'type' => ParameterTypes::BOOLEAN, 'default' => false, 'message' => 'maps-par-markercluster', ]; $params['clustermaxzoom'] = [ - 'type' => 'integer', + 'type' => ParameterTypes::INTEGER, 'default' => 20, 'message' => 'maps-par-clustermaxzoom', ]; $params['clusterzoomonclick'] = [ - 'type' => 'boolean', + 'type' => ParameterTypes::BOOLEAN, 'default' => true, 'message' => 'maps-par-clusterzoomonclick', ]; $params['clustermaxradius'] = [ - 'type' => 'integer', + 'type' => ParameterTypes::INTEGER, 'default' => 80, 'message' => 'maps-par-maxclusterradius', ]; $params['clusterspiderfy'] = [ - 'type' => 'boolean', + 'type' => ParameterTypes::BOOLEAN, 'default' => true, 'message' => 'maps-leaflet-par-clusterspiderfy', ]; $params['geojson'] = [ - 'type' => 'jsonfile', + 'type' => ParameterTypes::STRING, 'default' => '', 'message' => 'maps-displaymap-par-geojson', ]; + $params['clicktarget'] = [ + 'type' => ParameterTypes::STRING, + 'default' => '', + 'message' => 'maps-leaflet-par-clicktarget', + ]; + return $params; } @@ -132,7 +142,7 @@ class LeafletService implements MappingService { } public function getResourceModules(): array { - return [ 'ext.maps.leaflet', 'ext.sm.leafletajax' ]; + return [ 'ext.maps.leaflet.loader', 'ext.maps.leaflet.leafletajax' ]; } public function getDependencyHtml( array $params ): string { @@ -151,7 +161,7 @@ class LeafletService implements MappingService { } private function getDependencies( array $params ): array { - $leafletPath = $GLOBALS['wgScriptPath'] . '/extensions/Maps/resources/leaflet/leaflet'; + $leafletPath = $GLOBALS['wgScriptPath'] . '/extensions/Maps/resources/lib/leaflet'; return array_merge( [ @@ -181,4 +191,20 @@ class LeafletService implements MappingService { return array_unique( $layerDependencies ); } + public function processingResultToMapParams( ProcessingResult $processingResult ): array { + $mapParams = $processingResult->getParameterArray(); + + if ( $mapParams['geojson'] !== '' ) { + $fetcher = MapsFactory::newDefault()->newGeoJsonFetcher(); + + $result = $fetcher->fetch( $mapParams['geojson'] ); + + $mapParams['geojson'] = $result->getContent(); + $mapParams['GeoJsonSource'] = $result->getTitleValue() === null ? null : $result->getTitleValue()->getText(); + $mapParams['GeoJsonRevisionId'] = $result->getRevisionId(); + } + + return $mapParams; + } + } |