summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Maps/src/LeafletService.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Maps/src/LeafletService.php')
-rw-r--r--www/wiki/extensions/Maps/src/LeafletService.php66
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;
+ }
+
}