forked from Snck3rs/contao-leaflet-maps
Move layers configuration.
This commit is contained in:
38
src/Backend/Renderer/Label/Layer/AbstractLabelRenderer.php
Normal file
38
src/Backend/Renderer/Label/Layer/AbstractLabelRenderer.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||||
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
|
* @filesource
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AbstractLabelRenderer.
|
||||||
|
*
|
||||||
|
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
|
||||||
|
*/
|
||||||
|
abstract class AbstractLabelRenderer implements LayerLabelRenderer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function supports(array $row): bool
|
||||||
|
{
|
||||||
|
return $row['type'] === $this->getLayerType();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the supported layer type.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
abstract protected function getLayerType(): string;
|
||||||
|
}
|
||||||
70
src/Backend/Renderer/Label/Layer/ChainRenderer.php
Normal file
70
src/Backend/Renderer/Label/Layer/ChainRenderer.php
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||||
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
|
* @filesource
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
|
||||||
|
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ChainRenderer.
|
||||||
|
*
|
||||||
|
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
|
||||||
|
*/
|
||||||
|
final class ChainRenderer implements LayerLabelRenderer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* List of layer label renderer.
|
||||||
|
*
|
||||||
|
* @var array|LayerLabelRenderer[]
|
||||||
|
*/
|
||||||
|
private $renderer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ChainRenderer constructor.
|
||||||
|
*
|
||||||
|
* @param array|LayerLabelRenderer[] $renderer List of layer label renderer.
|
||||||
|
*/
|
||||||
|
public function __construct($renderer)
|
||||||
|
{
|
||||||
|
$this->renderer = $renderer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function supports(array $row): bool
|
||||||
|
{
|
||||||
|
foreach ($this->renderer as $renderer) {
|
||||||
|
if ($renderer->supports($row)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function render(array $row, string $label, Translator $translator): string
|
||||||
|
{
|
||||||
|
foreach ($this->renderer as $renderer) {
|
||||||
|
if ($renderer->supports($row)) {
|
||||||
|
return $renderer->render($row, $label, $translator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $label;
|
||||||
|
}
|
||||||
|
}
|
||||||
45
src/Backend/Renderer/Label/Layer/LayerLabelRenderer.php
Normal file
45
src/Backend/Renderer/Label/Layer/LayerLabelRenderer.php
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||||
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
|
* @filesource
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
|
||||||
|
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface LayerLabelRenderer.
|
||||||
|
*
|
||||||
|
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
|
||||||
|
*/
|
||||||
|
interface LayerLabelRenderer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Check if current row is supported.
|
||||||
|
*
|
||||||
|
* @param array $row Current row.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function supports(array $row): bool;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render the backend label of an layer.
|
||||||
|
*
|
||||||
|
* @param array $row Current row.
|
||||||
|
* @param string $label Default label.
|
||||||
|
* @param Translator $translator The translator.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function render(array $row, string $label, Translator $translator): string;
|
||||||
|
}
|
||||||
49
src/Backend/Renderer/Label/Layer/MarkersLabelRenderer.php
Normal file
49
src/Backend/Renderer/Label/Layer/MarkersLabelRenderer.php
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||||
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
|
* @filesource
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
|
||||||
|
|
||||||
|
use Netzmacht\Contao\Leaflet\Model\MarkerModel;
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class MarkersLabelRenderer.
|
||||||
|
*
|
||||||
|
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
|
||||||
|
*/
|
||||||
|
final class MarkersLabelRenderer extends AbstractLabelRenderer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function getLayerType(): string
|
||||||
|
{
|
||||||
|
return 'markers';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function render(array $row, string $label, Translator $translator): string
|
||||||
|
{
|
||||||
|
$count = MarkerModel::countBy('pid', $row['id']);
|
||||||
|
$label .= sprintf(
|
||||||
|
'<span class="tl_gray"> (%s %s)</span>',
|
||||||
|
$count,
|
||||||
|
$translator->trans('countEntries', [], 'contao_tl_leaflet_layer')
|
||||||
|
);
|
||||||
|
|
||||||
|
return $label;
|
||||||
|
}
|
||||||
|
}
|
||||||
46
src/Backend/Renderer/Label/Layer/OverpassLabelRenderer.php
Normal file
46
src/Backend/Renderer/Label/Layer/OverpassLabelRenderer.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||||
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
|
* @filesource
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
|
||||||
|
|
||||||
|
use Contao\StringUtil;
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class OverpassLabelRenderer.
|
||||||
|
*
|
||||||
|
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
|
||||||
|
*/
|
||||||
|
final class OverpassLabelRenderer extends AbstractLabelRenderer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function getLayerType(): string
|
||||||
|
{
|
||||||
|
return 'vectors';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function render(array $row, string $label, Translator $translator): string
|
||||||
|
{
|
||||||
|
if ($row['overpassQuery']) {
|
||||||
|
$label .= '<span class="tl_gray"> ' . StringUtil::substr($row['overpassQuery'], 50) . '</span>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $label;
|
||||||
|
}
|
||||||
|
}
|
||||||
52
src/Backend/Renderer/Label/Layer/ProviderLabelRenderer.php
Normal file
52
src/Backend/Renderer/Label/Layer/ProviderLabelRenderer.php
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||||
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
|
* @filesource
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
|
||||||
|
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Backend label renderer for provider layer.
|
||||||
|
*
|
||||||
|
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
|
||||||
|
*/
|
||||||
|
final class ProviderLabelRenderer extends AbstractLabelRenderer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function getLayerType(): string
|
||||||
|
{
|
||||||
|
return 'provider';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function render(array $row, string $label, Translator $translator): string
|
||||||
|
{
|
||||||
|
$langKey = 'leaflet_provider.' . $row['tile_provider'] . '.0';
|
||||||
|
$translated = $translator->trans($langKey, [], 'contao_leaflet');
|
||||||
|
|
||||||
|
if ($translated !== $langKey) {
|
||||||
|
$provider = $translated;
|
||||||
|
} else {
|
||||||
|
$provider = $row['tile_provider'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$label .= sprintf('<span class="tl_gray"> (%s)</span>', $provider);
|
||||||
|
|
||||||
|
return $label;
|
||||||
|
}
|
||||||
|
}
|
||||||
48
src/Backend/Renderer/Label/Layer/ReferenceLabelRenderer.php
Normal file
48
src/Backend/Renderer/Label/Layer/ReferenceLabelRenderer.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||||
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
|
* @filesource
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
|
||||||
|
|
||||||
|
use Netzmacht\Contao\Leaflet\Model\LayerModel;
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ReferenceLabelRenderer.
|
||||||
|
*
|
||||||
|
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
|
||||||
|
*/
|
||||||
|
final class ReferenceLabelRenderer extends AbstractLabelRenderer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function getLayerType(): string
|
||||||
|
{
|
||||||
|
return 'vectors';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function render(array $row, string $label, Translator $translator): string
|
||||||
|
{
|
||||||
|
$reference = LayerModel::findByPk($row['reference']);
|
||||||
|
|
||||||
|
if ($reference) {
|
||||||
|
$label .= '<span class="tl_gray"> (' . $reference->title . ')</span>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $label;
|
||||||
|
}
|
||||||
|
}
|
||||||
49
src/Backend/Renderer/Label/Layer/VectorsLabelRenderer.php
Normal file
49
src/Backend/Renderer/Label/Layer/VectorsLabelRenderer.php
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||||
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
|
* @filesource
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
|
||||||
|
|
||||||
|
use Netzmacht\Contao\Leaflet\Model\VectorModel;
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class VectorsLabelRenderer.
|
||||||
|
*
|
||||||
|
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
|
||||||
|
*/
|
||||||
|
final class VectorsLabelRenderer extends AbstractLabelRenderer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function getLayerType(): string
|
||||||
|
{
|
||||||
|
return 'vectors';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function render(array $row, string $label, Translator $translator): string
|
||||||
|
{
|
||||||
|
$count = VectorModel::countBy('pid', $row['id']);
|
||||||
|
$label .= sprintf(
|
||||||
|
'<span class="tl_gray"> (%s %s)</span>',
|
||||||
|
$count,
|
||||||
|
$translator->trans('countEntries', [], 'contao_tl_leaflet_layer')
|
||||||
|
);
|
||||||
|
|
||||||
|
return $label;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -47,5 +47,6 @@ class NetzmachtContaoLeafletExtension extends Extension
|
|||||||
$loader->load('filters.yml');
|
$loader->load('filters.yml');
|
||||||
$loader->load('mappers.yml');
|
$loader->load('mappers.yml');
|
||||||
$loader->load('encoders.yml');
|
$loader->load('encoders.yml');
|
||||||
|
$loader->load('layers.yml');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
80
src/Resources/config/layers.yml
Normal file
80
src/Resources/config/layers.yml
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# Leaflet layer types.
|
||||||
|
#
|
||||||
|
# The type is used for the database driven definitions.
|
||||||
|
parameters:
|
||||||
|
netzmacht.contao_leaflet_maps.layers:
|
||||||
|
provider:
|
||||||
|
children: false
|
||||||
|
icon: 'bundles/netzmachtcontaoleaflet/img/provider.png'
|
||||||
|
|
||||||
|
group:
|
||||||
|
children: true
|
||||||
|
icon: 'bundles/netzmachtcontaoleaflet/img/group.png'
|
||||||
|
|
||||||
|
markers:
|
||||||
|
children: false
|
||||||
|
icon: 'bundles/netzmachtcontaoleaflet/img/markers.png'
|
||||||
|
markers: true
|
||||||
|
boundsMode:
|
||||||
|
extend: true
|
||||||
|
fit: 'deferred'
|
||||||
|
|
||||||
|
vectors:
|
||||||
|
children: false
|
||||||
|
icon: 'bundles/netzmachtcontaoleaflet/img/vectors.png'
|
||||||
|
vectors: true
|
||||||
|
boundsMode:
|
||||||
|
extend: true
|
||||||
|
|
||||||
|
reference:
|
||||||
|
children: false
|
||||||
|
icon: 'bundles/netzmachtcontaoleaflet/img/reference.png'
|
||||||
|
|
||||||
|
markercluster:
|
||||||
|
children: true
|
||||||
|
icon: 'bundles/netzmachtcontaoleaflet/img/markercluster.png'
|
||||||
|
|
||||||
|
tile:
|
||||||
|
children: false
|
||||||
|
icon: 'bundles/netzmachtcontaoleaflet/img/tile.png'
|
||||||
|
|
||||||
|
overpass:
|
||||||
|
children: false
|
||||||
|
icon: 'bundles/netzmachtcontaoleaflet/img/overpass.png'
|
||||||
|
boundsMode:
|
||||||
|
extend: true
|
||||||
|
fit: true
|
||||||
|
|
||||||
|
services:
|
||||||
|
_defaults:
|
||||||
|
public: false
|
||||||
|
|
||||||
|
netzmacht.contao_leaflet_maps.layer_label_renderer:
|
||||||
|
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\ChainRenderer
|
||||||
|
arguments:
|
||||||
|
- []
|
||||||
|
|
||||||
|
netzmacht.contao_leaflet_maps.layer_label_renderer.markers:
|
||||||
|
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\MarkersLabelRenderer
|
||||||
|
tags:
|
||||||
|
- { name: 'netzmacht.contao_leaflet_maps.layer_label_renderer' }
|
||||||
|
|
||||||
|
netzmacht.contao_leaflet_maps.layer_label_renderer.overpass:
|
||||||
|
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\OverpassLabelRenderer
|
||||||
|
tags:
|
||||||
|
- { name: 'netzmacht.contao_leaflet_maps.layer_label_renderer' }
|
||||||
|
|
||||||
|
netzmacht.contao_leaflet_maps.layer_label_renderer.provider:
|
||||||
|
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\ProviderLabelRenderer
|
||||||
|
tags:
|
||||||
|
- { name: 'netzmacht.contao_leaflet_maps.layer_label_renderer' }
|
||||||
|
|
||||||
|
netzmacht.contao_leaflet_maps.layer_label_renderer.reference:
|
||||||
|
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\ReferenceLabelRenderer
|
||||||
|
tags:
|
||||||
|
- { name: 'netzmacht.contao_leaflet_maps.layer_label_renderer' }
|
||||||
|
|
||||||
|
netzmacht.contao_leaflet_maps.layer_label_renderer.vectors:
|
||||||
|
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\VectorsLabelRenderer
|
||||||
|
tags:
|
||||||
|
- { name: 'netzmacht.contao_leaflet_maps.layer_label_renderer' }
|
||||||
Reference in New Issue
Block a user