From 60e285c673350289ae66b8b51f9692af718178d7 Mon Sep 17 00:00:00 2001 From: David Molineus Date: Fri, 18 Dec 2020 09:13:29 +0100 Subject: [PATCH] Generate absolute urls for file layers https://github.com/netzmacht/contao-leaflet-maps/issues/92 --- CHANGELOG.md | 3 ++- src/Bundle/Resources/config/mappers.yml | 1 + src/Mapper/Layer/FileLayerMapper.php | 30 +++++++++++++++++-------- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 595a81d..f971561 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - - Remove template debug placeholders, it breaks generated javascript + - Remove template debug placeholders, it breaks generated javascript ([#93](https://github.com/netzmacht/contao-leaflet-maps/issues/93)) + - Generate absolute urls for file layers ([#92](https://github.com/netzmacht/contao-leaflet-maps/issues/92)) ## [3.2.1] - 2020-09-02 diff --git a/src/Bundle/Resources/config/mappers.yml b/src/Bundle/Resources/config/mappers.yml index 86b7661..2f024af 100644 --- a/src/Bundle/Resources/config/mappers.yml +++ b/src/Bundle/Resources/config/mappers.yml @@ -77,6 +77,7 @@ services: class: Netzmacht\Contao\Leaflet\Mapper\Layer\FileLayerMapper arguments: - '@netzmacht.contao_toolkit.repository_manager' + - '@netzmacht.contao_toolkit.contao.environment_adapter' tags: - { name: netzmacht.contao_leaflet.mapper } diff --git a/src/Mapper/Layer/FileLayerMapper.php b/src/Mapper/Layer/FileLayerMapper.php index 17a1687..2e2f17a 100644 --- a/src/Mapper/Layer/FileLayerMapper.php +++ b/src/Mapper/Layer/FileLayerMapper.php @@ -14,6 +14,8 @@ declare(strict_types=1); namespace Netzmacht\Contao\Leaflet\Mapper\Layer; +use Contao\CoreBundle\Framework\Adapter; +use Contao\Environment; use Contao\FilesModel; use Contao\Model; use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper; @@ -58,16 +60,25 @@ class FileLayerMapper extends AbstractLayerMapper */ private $repositoryManager; + /** + * Environment. + * + * @var Adapter + */ + private $environmentAdapter; + /** * Construct. * - * @param RepositoryManager $repositoryManager Repository manager. + * @param RepositoryManager $repositoryManager Repository manager. + * @param Adapter $environmentAdapter Environment adapter. */ - public function __construct(RepositoryManager $repositoryManager) + public function __construct(RepositoryManager $repositoryManager, Adapter $environmentAdapter) { - $this->repositoryManager = $repositoryManager; - parent::__construct(); + + $this->repositoryManager = $repositoryManager; + $this->environmentAdapter = $environmentAdapter; } /** @@ -103,25 +114,26 @@ class FileLayerMapper extends AbstractLayerMapper $layerId = $this->getElementId($model, $elementId); if ($fileModel instanceof FilesModel && $fileModel->type === 'file') { + $url = $this->environmentAdapter->get('url') . '/' . $fileModel->path; switch ($model->fileFormat) { case 'gpx': - $layer = new Gpx($layerId, $fileModel->path); + $layer = new Gpx($layerId, $url); break; case 'kml': - $layer = new Kml($layerId, $fileModel->path); + $layer = new Kml($layerId, $url); break; case 'wkt': - $layer = new Wkt($layerId, $fileModel->path); + $layer = new Wkt($layerId, $url); break; case 'geojson': - $layer = new OmnivoreGeoJson($layerId, $fileModel->path); + $layer = new OmnivoreGeoJson($layerId, $url); break; case 'topojson': - $layer = new TopoJson($layerId, $fileModel->path); + $layer = new TopoJson($layerId, $url); break; default: