Generate absolute urls for file layers

https://github.com/netzmacht/contao-leaflet-maps/issues/92
This commit is contained in:
David Molineus
2020-12-18 09:13:29 +01:00
parent 49f3b7dbcd
commit 60e285c673
3 changed files with 24 additions and 10 deletions

View File

@@ -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

View File

@@ -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 }

View File

@@ -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<Environment>
*/
private $environmentAdapter;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
* @param RepositoryManager $repositoryManager Repository manager.
* @param Adapter<Environment> $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: