30 Commits

Author SHA1 Message Date
David Molineus
099cd6ca9d Update changelog. 2017-10-19 09:38:25 +02:00
David Molineus
86fb4f4e12 Update the readme. 2017-10-19 09:35:31 +02:00
David Molineus
ae4d9cec13 Update changelog. 2017-10-19 09:31:50 +02:00
David Molineus
08dea6e1da Code style. 2017-10-19 09:28:58 +02:00
David Molineus
ef7b493b2d Use the repository manager. 2017-10-19 08:45:39 +02:00
David Molineus
ce9de6ded3 Use template engine to render the map. 2017-10-18 17:01:03 +02:00
David Molineus
7498aef141 Fix query. 2017-10-18 16:48:16 +02:00
David Molineus
28adc54d36 Fix query. 2017-10-18 16:46:05 +02:00
David Molineus
451d13fe98 Work on repository manager usage. 2017-10-18 16:43:33 +02:00
David Molineus
a4192b4b1a Code style. 2017-10-18 16:36:36 +02:00
David Molineus
7741f44428 Use the repository manager. 2017-10-18 16:36:12 +02:00
David Molineus
0716354952 Work on service oriented listeners. 2017-10-18 16:26:27 +02:00
David Molineus
dd23d386eb Use latest Repository feature to replace static model calls. 2017-10-18 15:30:24 +02:00
David Molineus
edb4ac9eeb Support geojson and topojson as file types for the file layer. 2017-10-18 11:47:04 +02:00
David Molineus
5501887231 Refactor the factories so that they don't use the container. 2017-10-18 08:27:49 +02:00
David Molineus
60306459d2 Add the file path to the layer label. 2017-10-17 18:18:33 +02:00
David Molineus
c465b724f4 Convert array syntax and other minor code style adjustments. 2017-10-17 18:11:28 +02:00
David Molineus
6ded7441d9 Code style. 2017-10-17 18:03:49 +02:00
David Molineus
ae5fe11d20 Move Request to Mapper namespace. 2017-10-17 18:03:42 +02:00
David Molineus
8dbe464ca8 Move hash subscriber to the listener namespace. 2017-10-17 17:58:55 +02:00
David Molineus
d261e8b4ba Refactor GeoJsonSubscriber to an listener. 2017-10-17 17:57:40 +02:00
David Molineus
57fe57b8ea Move encoder subscriber to encoder namespace. 2017-10-17 17:48:14 +02:00
David Molineus
46e6dcc2fa Support bounds changing after files got loaded. 2017-10-17 17:43:12 +02:00
David Molineus
01b3962b78 Optimize use statements. 2017-10-17 17:11:35 +02:00
David Molineus
734aecf738 Add changelog. 2017-10-17 17:09:29 +02:00
David Molineus
50465e4026 Bypass filesystem cache in debug mode. 2017-10-17 17:09:00 +02:00
David Molineus
0abc4676f1 Merge branch 'feature/file-layer' into release/3.0.0 2017-10-17 16:51:10 +02:00
David Molineus
d1f26056e9 Implement a file layer for gpx,kml,wkt support. 2017-10-17 16:50:29 +02:00
David Molineus
31a5cc40a5 Optimize import statements. 2017-10-17 16:22:24 +02:00
David Molineus
59df74c3f9 Replace string class names with the ::class attribute. 2017-10-17 13:51:09 +02:00
115 changed files with 1799 additions and 781 deletions

16
CHANGELOG.md Normal file
View File

@@ -0,0 +1,16 @@
Changelog
=========
3.0.0-alpha1 (2017-10-19)
------------------------
[Full Changelog](https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.0-alpha1...2.0.0-alpha2)
Implemented enhancements
- Refactor to a more service oriented architecture
- Use a proper template for the map templates (Customize templates has to be adjusted!)
- New file layer for gpx,kml,wkt,topojson,geojson files added
- Bypass filesystem cache in debug mode
- Changelog added

View File

@@ -17,17 +17,19 @@ Features
- Define Leaflet maps with multiple layers.
- Manage map controls
- [Layers control](http://leafletjs.com/reference-1.0.0.html#control-layers)
- [Zoom control](http://leafletjs.com/reference-1.0.0.html#control-zoom)
- [Scale control]((http://leafletjs.com/reference-1.0.0.html#control-scale))
- [Attribution control](http://leafletjs.com/reference-1.0.0.html#control-attribution)
- [Layers control](http://leafletjs.com/reference-1.2.0.html#control-layers)
- [Zoom control](http://leafletjs.com/reference-1.2.0.html#control-zoom)
- [Scale control]((http://leafletjs.com/reference-1.2.0.html#control-scale))
- [Attribution control](http://leafletjs.com/reference-1.2.0.html#control-attribution)
- [Loading control](https://github.com/ebrelsford/Leaflet.loading)
- Manage layers
- [Tile provider](https://github.com/leaflet-extras/leaflet-providers)
- Markers - A set of [markers](http://leafletjs.com/reference-1.0.0.html#marker)
- Vectors - A set of [vectors](http://leafletjs.com/reference-1.0.0.html)
- Markers - A set of [markers](http://leafletjs.com/reference-1.2.0.html#marker)
- Vectors - A set of [vectors](http://leafletjs.com/reference-1.2.0.html)
- Groups - A group of layers
- Reference - A link to another layer
- [Markercluster](https://github.com/Leaflet/Leaflet.markercluster)
- External geo data files (gpx,kml,wkt,geojson,topojson)
- Manage marker icons
- Manage vector styles
- Optional deferred ajax loading of layer data
@@ -36,11 +38,22 @@ Features
- Autoloading of required assets.
- [Layer for MetaModels](https://github.com/netzmacht/contao-leaflet-metamodels)
Changelog
---------
View the [CHANGELOG.md](CHANGELOG.md) for the latest changes.
Requirements
------------
- Contao 4.4
- PHP >= 7.0
Install
-------
```
$ php composer.phar require netzmacht/contao-leaflet-maps:~2.0
$ php composer.phar require netzmacht/contao-leaflet-maps:~3.0
```
Credits

View File

@@ -26,8 +26,8 @@
"contao/core-bundle": "~4.4",
"netzmacht/contao-leaflet-libraries": "^1.0",
"netzmacht/php-javascript-builder": "^1.0",
"netzmacht/php-leaflet": "^1.0.1",
"netzmacht/contao-toolkit": "^3.0@dev",
"netzmacht/php-leaflet": "^1.0.2",
"netzmacht/contao-toolkit": "~3.0@beta",
"contao-community-alliance/meta-palettes": "^1.5",
"menatwork/contao-multicolumnwizard": "^3.2",
"doctrine/cache": "^1.0"

View File

@@ -124,8 +124,22 @@ L.Contao = L.Evented.extend({
* @param map Pass a map object so that the data loading events are passed to the map.
*/
load: function (hash, type, options, customLayer, map) {
var url = this.createRequestUrl(hash, map),
layer = omnivore[type](url, options, customLayer);
var url = this.createRequestUrl(hash, map);
return this.loadFile(url, type, options, customLayer, map);
},
/**
* Load data from an url into a layer using omnivore.
*
* @param url A file url.
* @param type The response content format.
* @param options Parser options
* @param customLayer optional custom layer.
* @param map Pass a map object so that the data loading events are passed to the map.
*/
loadFile: function (url, type, options, customLayer, map) {
var layer = omnivore[type](url, options, customLayer);
if (map) {
// Required because Control.Loading tries to get _leafet_id which is created here.

View File

@@ -48,10 +48,10 @@ class About
return array_map(
function ($library) {
$library = array_merge(
array(
[
'homepage' => null,
'version' => null,
),
],
$library
);
@@ -86,30 +86,30 @@ class About
$lockFile = TL_ROOT . '/composer.lock';
if (!file_exists($extFile) || !file_exists($lockFile)) {
return array();
return [];
}
$extension = json_decode(file_get_contents($extFile), true);
$installed = json_decode(file_get_contents($lockFile), true);
$deps = array();
$deps = [];
$version = null;
foreach ($installed['packages'] as $package) {
if ($package['name'] === 'netzmacht/contao-leaflet-maps') {
$version = $package['version'];
} elseif (isset($extension['require'][$package['name']])) {
$deps[] = array(
$deps[] = [
'name' => $package['name'],
'version' => $package['version'],
'license' => !empty($package['license']) ? implode(', ', $package['license']) : '',
'homepage' => sprintf(
'<a href="https://packagist.org/packages/%s" target="_blank">Visit packagist</a>',
$package['name']
)
);
),
];
}
}
return array($version, $deps);
return [$version, $deps];
}
}

View File

@@ -0,0 +1,67 @@
<?php
/**
* Leaflet maps for Contao CMS.
*
* @package contao-leaflet-maps
* @author David Molineus <david.molineus@netzmacht.de>
* @copyright 2014-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\FilesModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Symfony\Component\Translation\TranslatorInterface as Translator;
/**
* Class FileLabelRenderer
*
* @package Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer
*/
class FileLabelRenderer extends AbstractLabelRenderer
{
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* FileLabelRenderer constructor.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
}
/**
* {@inheritDoc}
*/
protected function getLayerType(): string
{
return 'file';
}
/**
* {@inheritDoc}
*/
public function render(array $row, string $label, Translator $translator): string
{
$repository = $this->repositoryManager->getRepository(FilesModel::class);
$file = $repository->findByPk($row['file']);
if ($file) {
$label .= ' <span class="tl_gray">(' . $file->path . ')</span>';
}
return $label;
}
}

View File

@@ -15,6 +15,7 @@ declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
use Netzmacht\Contao\Leaflet\Model\MarkerModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Symfony\Component\Translation\TranslatorInterface as Translator;
/**
@@ -24,6 +25,23 @@ use Symfony\Component\Translation\TranslatorInterface as Translator;
*/
final class MarkersLabelRenderer extends AbstractLabelRenderer
{
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* FileLabelRenderer constructor.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
}
/**
* {@inheritdoc}
*/
@@ -37,7 +55,8 @@ final class MarkersLabelRenderer extends AbstractLabelRenderer
*/
public function render(array $row, string $label, Translator $translator): string
{
$count = MarkerModel::countBy('pid', $row['id']);
$repository = $this->repositoryManager->getRepository(MarkerModel::class);
$count = $repository->countBy(['pid=?'], [$row['pid']]);
$label .= sprintf(
'<span class="tl_gray"> (%s %s)</span>',
$count,

View File

@@ -29,7 +29,7 @@ final class OverpassLabelRenderer extends AbstractLabelRenderer
*/
protected function getLayerType(): string
{
return 'vectors';
return 'overpass';
}
/**

View File

@@ -15,6 +15,7 @@ declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Symfony\Component\Translation\TranslatorInterface as Translator;
/**
@@ -24,12 +25,29 @@ use Symfony\Component\Translation\TranslatorInterface as Translator;
*/
final class ReferenceLabelRenderer extends AbstractLabelRenderer
{
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* FileLabelRenderer constructor.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
}
/**
* {@inheritdoc}
*/
protected function getLayerType(): string
{
return 'vectors';
return 'reference';
}
/**
@@ -37,7 +55,8 @@ final class ReferenceLabelRenderer extends AbstractLabelRenderer
*/
public function render(array $row, string $label, Translator $translator): string
{
$reference = LayerModel::findByPk($row['reference']);
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$reference = $repository->find((int) $row['reference']);
if ($reference) {
$label .= '<span class="tl_gray"> (' . $reference->title . ')</span>';

View File

@@ -15,6 +15,7 @@ declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer;
use Netzmacht\Contao\Leaflet\Model\VectorModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Symfony\Component\Translation\TranslatorInterface as Translator;
/**
@@ -24,6 +25,23 @@ use Symfony\Component\Translation\TranslatorInterface as Translator;
*/
final class VectorsLabelRenderer extends AbstractLabelRenderer
{
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* FileLabelRenderer constructor.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
}
/**
* {@inheritdoc}
*/
@@ -37,7 +55,8 @@ final class VectorsLabelRenderer extends AbstractLabelRenderer
*/
public function render(array $row, string $label, Translator $translator): string
{
$count = VectorModel::countBy('pid', $row['id']);
$repository = $this->repositoryManager->getRepository(VectorModel::class);
$count = $repository->countBy(['pid=?'], [$row['id']]);
$label .= sprintf(
'<span class="tl_gray"> (%s %s)</span>',
$count,

View File

@@ -36,7 +36,7 @@ class Plugin implements BundlePluginInterface
return [
BundleConfig::create(NetzmachtContaoLeafletBundle::class)
->setLoadAfter([ContaoCoreBundle::class, NetzmachtContaoToolkitBundle::class])
->setReplace(['leaflet'])
->setReplace(['leaflet']),
];
}
}

View File

@@ -49,5 +49,13 @@ class NetzmachtContaoLeafletExtension extends Extension
$loader->load('mappers.yml');
$loader->load('encoders.yml');
$loader->load('layers.yml');
if (!$container->hasDefinition('netzmacht.contao_leaflet.cache')) {
if ($container->getParameter('kernel.debug')) {
$container->setAlias('netzmacht.contao_leaflet.cache', 'netzmacht.contao_leaflet.cache.debug');
} else {
$container->setAlias('netzmacht.contao_leaflet.cache', 'netzmacht.contao_leaflet.cache.default');
}
}
}
}

View File

@@ -14,9 +14,9 @@ declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Bundle;
use Netzmacht\Contao\Leaflet\Bundle\DependencyInjection\Pass\RegisterLibrariesPass;
use Netzmacht\Contao\Leaflet\Bundle\DependencyInjection\Pass\RegisterDefinitionMapperPass;
use Netzmacht\Contao\Leaflet\Bundle\DependencyInjection\Pass\RegisterEncodersPass;
use Netzmacht\Contao\Leaflet\Bundle\DependencyInjection\Pass\RegisterLibrariesPass;
use Netzmacht\Contao\Toolkit\Bundle\DependencyInjection\Compiler\AddTaggedServicesAsArgumentPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;

View File

@@ -38,6 +38,13 @@ parameters:
- 'circle'
- 'circleMarker'
netzmacht.contao_leaflet.file_formats:
gpx: ['gpx']
kml: ['kml']
wkt: ['wkt']
geojson: ['json', 'geojson']
topojson: ['json', 'topojson']
# When creating a GeoJSON feature of a map object a feature.properties.model object is passed.
# Define the properties you always want to set.
#

View File

@@ -42,6 +42,6 @@ services:
- { name: netzmacht.contao_leaflet.encoder }
netzmacht.contao_leaflet.encoder.subscriber:
class: Netzmacht\Contao\Leaflet\Subscriber\EncoderSubscriber
class: Netzmacht\Contao\Leaflet\Encoder\Subscriber\EncoderSubscriber
tags:
- { name: netzmacht.contao_leaflet.encoder }

View File

@@ -45,6 +45,12 @@ parameters:
extend: true
fit: true
file:
children: false
icon: 'bundles/netzmachtcontaoleaflet/img/file.png'
boundsMode:
extend: true
services:
_defaults:
public: false
@@ -56,6 +62,8 @@ services:
netzmacht.contao_leaflet.layer_label_renderer.markers:
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\MarkersLabelRenderer
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: 'netzmacht.contao_leaflet.layer_label_renderer' }
@@ -71,10 +79,21 @@ services:
netzmacht.contao_leaflet.layer_label_renderer.reference:
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\ReferenceLabelRenderer
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: 'netzmacht.contao_leaflet.layer_label_renderer' }
netzmacht.contao_leaflet.layer_label_renderer.vectors:
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\VectorsLabelRenderer
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: 'netzmacht.contao_leaflet.layer_label_renderer' }
netzmacht.contao_leaflet.layer_label_renderer.file:
class: Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\FileLabelRenderer
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: 'netzmacht.contao_leaflet.layer_label_renderer' }

View File

@@ -2,7 +2,10 @@ services:
netzmacht.contao_leaflet.listeners.dca.leaflet:
class: Netzmacht\Contao\Leaflet\Listener\Dca\LeafletDcaListener
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@templating'
- '@filesystem'
- '@netzmacht.contao_toolkit.contao.system_adapter'
- '%netzmacht.contao_leaflet.cache_dir%'
netzmacht.contao_leaflet.listeners.dca.validator:
@@ -14,6 +17,7 @@ services:
netzmacht.contao_leaflet.listeners.dca.frontend_integration:
class: Netzmacht\Contao\Leaflet\Listener\Dca\FrontendIntegrationListener
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@translator'
netzmacht.contao_leaflet.listeners.dca.map:
@@ -21,6 +25,8 @@ services:
arguments:
- '@netzmacht.contao_toolkit.dca.manager'
- '@database_connection'
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_toolkit.repository_manager'
netzmacht.contao_leaflet.listeners.dca.control:
class: Netzmacht\Contao\Leaflet\Listener\Dca\ControlDcaListener
@@ -34,21 +40,26 @@ services:
arguments:
- '@netzmacht.contao_toolkit.dca.manager'
- '@database_connection'
- '@netzmacht.contao_toolkit.repository_manager'
- '@translator'
- '@netzmacht.contao_leaflet.layer_label_renderer'
- '@netzmacht.contao_toolkit.contao.backend_adapter'
- '%netzmacht.contao_leaflet.layers%'
- '%netzmacht.contao_leaflet.providers%'
- '%netzmacht.contao_leaflet.amenities%'
- '%netzmacht.contao_leaflet.file_formats%'
netzmacht.contao_leaflet.listeners.dca.marker:
class: Netzmacht\Contao\Leaflet\Listener\Dca\MarkerDcaListener
arguments:
- '@database_connection'
- '@netzmacht.contao_toolkit.repository_manager'
netzmacht.contao_leaflet.listeners.dca.vector:
class: Netzmacht\Contao\Leaflet\Listener\Dca\VectorDcaListener
arguments:
- '@netzmacht.contao_toolkit.dca.manager'
- '@netzmacht.contao_toolkit.repository_manager'
- '%netzmacht.contao_leaflet.vectors%'
netzmacht.contao_leaflet.listeners.dca.icon:
@@ -61,15 +72,16 @@ services:
arguments:
- '%netzmacht.contao_leaflet.styles%'
netzmacht.contao_leaflet.listeners.geo_json_subscriber:
class: Netzmacht\Contao\Leaflet\Subscriber\GeoJsonSubscriber
netzmacht.contao_leaflet.listeners.geo_json_listener:
class: Netzmacht\Contao\Leaflet\Listener\GeoJsonListener
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '%netzmacht.contao_leaflet.feature_model_properties%'
tags:
- { name: 'kernel.event_subscriber' }
- { name: 'kernel.event_listener', event: 'netzmacht.contao_leaflet.mapper.convert_to_geojson', method: 'handle' }
netzmacht.contao_leaflet.listeners.hash_subscriber:
class: Netzmacht\Contao\Leaflet\Subscriber\HashSubscriber
class: Netzmacht\Contao\Leaflet\Listener\HashSubscriber
tags:
- { name: 'kernel.event_subscriber' }
@@ -78,6 +90,7 @@ services:
arguments:
- '@netzmacht.contao_leaflet.map.assets'
- '@netzmacht.contao_leaflet.definition.mapper'
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.libraries'
tags:
- { name: 'kernel.event_listener', event: 'netzmacht.contao_leaflet.get_javascript', method: 'onGetJavascriptEvent' }

View File

@@ -9,6 +9,8 @@ services:
# Map mapper
netzmacht.contao_leaflet.mapper.map:
class: Netzmacht\Contao\Leaflet\Mapper\MapMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -28,26 +30,36 @@ services:
netzmacht.contao_leaflet.mapper.markers_layer:
class: Netzmacht\Contao\Leaflet\Mapper\Layer\MarkersLayerMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
netzmacht.contao_leaflet.mapper.group_layer:
class: Netzmacht\Contao\Leaflet\Mapper\Layer\GroupLayerMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
netzmacht.contao_leaflet.mapper.vectors_layer:
class: Netzmacht\Contao\Leaflet\Mapper\Layer\VectorsLayerMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
netzmacht.contao_leaflet.mapper.reference_layer:
class: Netzmacht\Contao\Leaflet\Mapper\Layer\ReferenceLayerMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
netzmacht.contao_leaflet.mapper.overpass_layer:
class: Netzmacht\Contao\Leaflet\Mapper\Layer\OverpassLayerMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -55,9 +67,16 @@ services:
class: Netzmacht\Contao\Leaflet\Mapper\Layer\MarkerClusterLayerMapper
arguments:
- '@netzmacht.contao_leaflet.map.assets'
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leflet_maps.mapper }
netzmacht.contao_leaflet.mapper.file_layer:
class: Netzmacht\Contao\Leaflet\Mapper\Layer\FileLayerMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
# Control mappers
netzmacht.contao_leaflet.mapper.zoom_control:
@@ -82,6 +101,8 @@ services:
netzmacht.contao_leaflet.mapper.loading_control:
class: Netzmacht\Contao\Leaflet\Mapper\Control\LoadingControlMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -95,6 +116,7 @@ services:
netzmacht.contao_leaflet.mapper.polyline:
class: Netzmacht\Contao\Leaflet\Mapper\Vector\PolylineMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.frontend.value_filter'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -102,6 +124,7 @@ services:
netzmacht.contao_leaflet.mapper.multi_polyline:
class: Netzmacht\Contao\Leaflet\Mapper\Vector\MultiPolylineMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.frontend.value_filter'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -109,6 +132,7 @@ services:
netzmacht.contao_leaflet.mapper.polygon:
class: Netzmacht\Contao\Leaflet\Mapper\Vector\PolygonMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.frontend.value_filter'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -116,6 +140,7 @@ services:
netzmacht.contao_leaflet.mapper.multi_polygon:
class: Netzmacht\Contao\Leaflet\Mapper\Vector\MultiPolygonMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.frontend.value_filter'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -123,6 +148,7 @@ services:
netzmacht.contao_leaflet.mapper.circle:
class: Netzmacht\Contao\Leaflet\Mapper\Vector\CircleMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.frontend.value_filter'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -130,6 +156,7 @@ services:
netzmacht.contao_leaflet.mapper.circle_mapper:
class: Netzmacht\Contao\Leaflet\Mapper\Vector\CircleMarkerMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.frontend.value_filter'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -137,6 +164,7 @@ services:
netzmacht.contao_leaflet.mapper.rectangle_mapper:
class: Netzmacht\Contao\Leaflet\Mapper\Vector\RectangleMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.frontend.value_filter'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -150,6 +178,8 @@ services:
netzmacht.contao_leaflet.mapper.image_icon:
class: Netzmacht\Contao\Leaflet\Mapper\Type\ImageIconMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
tags:
- { name: netzmacht.contao_leaflet.mapper }
@@ -171,6 +201,7 @@ services:
netzmacht.contao_leaflet.mapper.marker:
class: Netzmacht\Contao\Leaflet\Mapper\UI\MarkerMapper
arguments:
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_leaflet.frontend.value_filter'
tags:
- { name: netzmacht.contao_leaflet.mapper }

View File

@@ -15,6 +15,8 @@ services:
- '@netzmacht.contao_leaflet.map.assets'
- '@netzmacht.contao_leaflet.cache'
- '@netzmacht.contao_leaflet.frontend.data_controller'
- '@netzmacht.contao_toolkit.repository_manager'
- '@templating'
netzmacht.contao_leaflet.libraries:
class: Netzmacht\Contao\Leaflet\Frontend\Assets\LibrariesConfiguration
@@ -26,9 +28,6 @@ services:
arguments:
- '%netzmacht.contao_leaflet.filters%'
netzmacht.contao_leaflet.cache:
alias: 'netzmacht.contao_leaflet.cache.default'
netzmacht.contao_leaflet.cache.default:
class: Doctrine\Common\Cache\FilesystemCache
arguments:
@@ -86,7 +85,11 @@ services:
netzmacht.contao_leaflet.frontend.element_factory:
class: Netzmacht\Contao\Leaflet\Frontend\ContentElement\MapElementFactory
arguments:
- '@service_container'
- '@templating'
- '@translator'
- '@netzmacht.contao_leaflet.map.provider'
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_toolkit.contao.input_adapter'
tags:
- { name: 'netzmacht.contao_toolkit.component.content_element_factory' }
- { name: 'netzmacht.contao_toolkit.component.content_element', alias: 'leaflet', category: 'includes' }
@@ -94,7 +97,11 @@ services:
netzmacht.contao_leaflet.frontend.module_factory:
class: Netzmacht\Contao\Leaflet\Frontend\Module\MapModuleFactory
arguments:
- '@service_container'
- '@templating'
- '@translator'
- '@netzmacht.contao_leaflet.map.provider'
- '@netzmacht.contao_toolkit.repository_manager'
- '@netzmacht.contao_toolkit.contao.input_adapter'
tags:
- { name: 'netzmacht.contao_toolkit.component.frontend_module_factory' }
- { name: 'netzmacht.contao_toolkit.component.frontend_module', alias: 'leaflet', category: 'includes' }

View File

@@ -17,44 +17,42 @@
array_insert(
$GLOBALS['BE_MOD'],
1,
array(
'leaflet' => array
(
'leaflet_map' => array
(
'tables' => array
(
[
'leaflet' => [
'leaflet_map' => [
'tables' => [
'tl_leaflet_map',
'tl_leaflet_control',
),
],
'icon' => 'bundles/netzmachtcontaoleaflet/img/map.png',
'stylesheet' => 'bundles/netzmachtcontaoleaflet/css/backend.css',
),
'leaflet_layer' => array
(
'tables' => array
(
],
'leaflet_layer' => [
'tables' => [
'tl_leaflet_layer',
'tl_leaflet_marker',
'tl_leaflet_vector',
'tl_leaflet_icon',
'tl_leaflet_style',
'tl_leaflet_popup',
),
],
'icon' => 'bundles/netzmachtcontaoleaflet/img/layers.png',
'stylesheet' => 'bundles/netzmachtcontaoleaflet/css/backend.css',
'javascript' => 'bundles/netzmachtcontaoleaflet/js/backend.js'
),
'leaflet_about' => array
(
'javascript' => 'bundles/netzmachtcontaoleaflet/js/backend.js',
],
'leaflet_about' => [
'callback' => Netzmacht\Contao\Leaflet\Backend\About::class,
'icon' => 'bundles/netzmachtcontaoleaflet/img/about.png',
'stylesheet' => 'bundles/netzmachtcontaoleaflet/css/about.css',
)
)
)
],
],
]
);
if (TL_MODE === 'BE') {
$GLOBALS['TL_CSS'][] = 'bundles/netzmachtcontaoleaflet/css/backend_hacks.css';
}
/*
* Models.
*/
@@ -74,5 +72,5 @@ $GLOBALS['TL_MODELS']['tl_leaflet_vector'] = \Netzmacht\Contao\Leaflet\Model\Ve
$GLOBALS['TL_HOOKS']['initializeSystem'][] = [
'netzmacht.contao_leaflet.listeners.register_libraries',
'onInitializeSystem'
'onInitializeSystem',
];

View File

@@ -217,6 +217,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = [
'pointToLayer',
],
],
'file extends default' => [
'+config' => ['boundsMode', 'fileFormat'],
'+expert' => [
'onEachFeature',
'pointToLayer',
],
],
],
'metasubselectpalettes' => [
@@ -227,6 +235,9 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = [
'MapBox' => ['tile_provider_key'],
'HERE' => ['tile_provider_key', 'tile_provider_code'],
],
'fileFormat' => [
'!' => ['file']
]
],
'metasubpalettes' => [
@@ -853,5 +864,37 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = [
],
'sql' => 'mediumtext NULL',
],
'fileFormat' => [
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormat'],
'exclude' => true,
'inputType' => 'select',
'filter' => true,
'eval' => [
'mandatory' => true,
'tl_class' => 'w50',
'includeBlankOption' => true,
'submitOnChange' => true,
'chosen' => true,
'helpwizard' => true,
],
'options_callback' => ['netzmacht.contao_leaflet.listeners.dca.layer', 'getFileFormats'],
'reference' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats'],
'sql' => "varchar(32) NOT NULL default ''",
],
'file' => [
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['file'],
'exclude' => true,
'inputType' => 'fileTree',
'load_callback' => [
['netzmacht.contao_leaflet.listeners.dca.layer', 'prepareFileWidget'],
],
'eval' => [
'filesOnly' => true,
'fieldType' => 'radio',
'mandatory' => true,
'tl_class' => 'clr',
],
'sql' => 'binary(16) NULL',
],
],
];

View File

@@ -23,7 +23,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_marker'] = [
],
],
'onload_callback' => [
['netzmacht.contao_leaflet.listeners.dca.marker', 'initialize'],
['netzmacht.contao_leaflet.listeners.dca.leaflet', 'loadLanguageFile'],
],
'onsubmit_callback' => [
['netzmacht.contao_leaflet.listeners.dca.leaflet', 'clearCache'],

View File

@@ -39,6 +39,8 @@ $GLOBALS['TL_LANG']['leaflet_layer']['tile'][0] = 'Tile layer';
$GLOBALS['TL_LANG']['leaflet_layer']['tile'][1] = 'Tile layer with full config options.';
$GLOBALS['TL_LANG']['leaflet_layer']['overpass'][0] = 'Overpass API';
$GLOBALS['TL_LANG']['leaflet_layer']['overpass'][1] = 'Overpass API data layer.';
$GLOBALS['TL_LANG']['leaflet_layer']['file'][0] = 'File';
$GLOBALS['TL_LANG']['leaflet_layer']['file'][1] = 'Geo data from a file (gpx,kml,wkt).';
$GLOBALS['TL_LANG']['leaflet_vector']['polyline'][0] = 'Polyline';
$GLOBALS['TL_LANG']['leaflet_vector']['polyline'][1] = 'Polyline overlay. For more details read the <a href="http://leafletjs.com/reference.html#polyline" target="_blank">Leaflet documentation</a>.';

View File

@@ -145,12 +145,27 @@ $GLOBALS['TL_LANG']['tl_leaflet_layer']['amenity'][0] = 'Amen
$GLOBALS['TL_LANG']['tl_leaflet_layer']['amenity'][1] = 'OSM amenity.';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['amenityIcon'][1] = 'Icon';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['amenityIcon'][0] = 'Icon style';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormat'][0] = 'File formats';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormat'][1] = 'Choose which file format is used.';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['file'][0] = 'File';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['file'][1] = 'Choose a file containing geodata. Supported formats are: %s.';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['groupTypes']['layer'][0] = 'Layer group';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['groupTypes']['layer'][1] = 'Basic layer group. <br> See <a href="http://leafletjs.com/reference.html#layergroup" target="_blank">http://leafletjs.com/reference.html#layergroup</a>';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['groupTypes']['feature'][0] = 'Feature group';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['groupTypes']['feature'][1] = 'Extended layer group with events and popup support. <br>See <a href="http://leafletjs.com/reference.html#featuregroup" target="_blank">http://leafletjs.com/reference.html#featuregroup</a>';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['gpx'][0] = 'GPX';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['gpx'][1] = 'GPS Exchange format. <a href="https://github.com/mapbox/togeojson#gpx-feature-support" target="_blank">Read the documentation</a> for more information.';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['kml'][0] = 'KML';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['kml'][1] = 'Keyhole Markup Language. <a href="https://github.com/mapbox/togeojson#kml-feature-support" target="_blank">Read the documentation</a> for more information.';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['wkt'][0] = 'WKT';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['wkt'][1] = 'Well-known text <a href="https://github.com/mapbox/togeojson#kml-feature-support" target="_blank">Read the documentation</a> for more information.';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['topojson'][0] = 'TopoJSON';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['topojson'][1] = 'TopoJSON is a topological geospatial data interchange format based on GeoJSON. <a href="https://github.com/topojson/topojson#api-reference" target="_blank">Read the documentation</a> for more information.';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['geojson'][0] = 'GeoJSON';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormats']['geojson'][1] = 'GeoJSON is a format for encoding a variety of geographic data structures. <a href="https://github.com/mapbox/wellknown" target="_blank">Read the documentation</a> for more information.';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['pasteinto'][1] = 'Paste into layer %s';
$GLOBALS['TL_LANG']['tl_leaflet_layer']['pasteafter'][1] = 'Paste after layer %s';

View File

@@ -1,6 +1,8 @@
<div class="netzmacht-leaflet-credits">
<div class="header">
<h1 class="sub_headline"><?php echo $this->headline; ?> <small><?php echo $this->version; ?></small></h1>
<h1 class="sub_headline"><?php echo $this->headline; ?>
<small><?php echo $this->version; ?></small>
</h1>
</div>
<div class="tl_box block row">
@@ -11,9 +13,11 @@
This extension is only exists because of great other Open Source Software which it heavenly depends on.
</p>
<p>
This software ships with an visible attribution to <em>netzmacht creative</em> in the map attribution control.
This software ships with an visible attribution to <em>netzmacht creative</em> in the map attribution
control.
If you want to remove this attribution, you have to purchase a commercial license.
For more details visit the <a href="https://netzmacht.de/contao-leaflet" target="_blank">project website</a>.
For more details visit the <a href="https://netzmacht.de/contao-leaflet" target="_blank">project
website</a>.
</p>
</div>
<div class="right">
@@ -31,7 +35,8 @@
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="YWMA95YS3FT6U">
<input type="image" src="https://www.paypalobjects.com/en_GB/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="PayPal The safer, easier way to pay online.">
<input type="image" src="https://www.paypalobjects.com/en_GB/i/btn/btn_donate_SM.gif" border="0"
name="submit" alt="PayPal The safer, easier way to pay online.">
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
</form>
</div>
@@ -44,19 +49,23 @@
<div class="col">
<h3>Report issues</h3>
<p>If you found a bug, got some troubles or have a feature request - feel free to open an issue.</p>
<p><a href="http://github.com/netzmacht/contao-leaflet-maps/issues" class="btn" target="_blank">Issue tracker</a> </p>
<p><a href="http://github.com/netzmacht/contao-leaflet-maps/issues" class="btn" target="_blank">Issue
tracker</a></p>
</div>
<div class="col">
<h3>Contribute</h3>
<p>There are many ways you can con&shy;tribute. Translations,
docu&shy;mentation or code contributions are welcome.
</p>
<p><a href="https://netzmacht/contao-leaflet/contribute.html" class="btn" target="_blank">Contribute</a> </p>
<p><a href="https://netzmacht/contao-leaflet/contribute.html" class="btn" target="_blank">Contribute</a>
</p>
</div>
<div class="col">
<h3>Fund a feature</h3>
<p>Contao Leaflet is not feature complete. Have a look at the list of planned feature and support them.</p>
<p><a href="https://netzmacht/contao-leaflet/planned-features.html" class="btn" target="_blank">Planned features</a> </p>
<p>Contao Leaflet is not feature complete. Have a look at the list of planned feature and support
them.</p>
<p><a href="https://netzmacht/contao-leaflet/planned-features.html" class="btn" target="_blank">Planned
features</a></p>
</div>
</div>
<div class="row">
@@ -68,8 +77,10 @@
</div>
<div class="col">
<h3>Commercial license</h3>
<p>If you want to remove the attribution in the attribution control, you can purchase a commercial license.</p>
<p><a href="https://netzmacht/contao-leaflet/commercial-license.html" class="btn" target="_blank">Purchase license</a> </p>
<p>If you want to remove the attribution in the attribution control, you can purchase a commercial
license.</p>
<p><a href="https://netzmacht/contao-leaflet/commercial-license.html" class="btn" target="_blank">Purchase
license</a></p>
</div>
</div>
</div>
@@ -84,7 +95,9 @@
<th>Homepage</th>
</tr>
<?php if ($this->libraries): ?>
<tr><th colspan="4" class="subtitle">Libraries</th> </tr>
<tr>
<th colspan="4" class="subtitle">Libraries</th>
</tr>
<?php endif; ?>
<?php foreach ($this->libraries as $library): ?>
<tr>
@@ -110,7 +123,9 @@
<td><a href="http://semlabs.co.uk/" target="_blank">semlabs.co.uk</a></td>
</tr>
<?php if ($this->dependencies): ?>
<tr><th colspan="4" class="subtitle">Dependencies</th> </tr>
<tr>
<th colspan="4" class="subtitle">Dependencies</th>
</tr>
<?php endif; ?>
<?php foreach ($this->dependencies as $dep): ?>
<tr>

View File

@@ -1,6 +1,7 @@
<div id="<?php echo $mapId; ?>" style="<?php echo $style; ?>"></div>
<div id="<?= $this->mapId ?>" style="<?= $this->style ?>"></div>
<script>
L.contao.addMap('<?php echo $mapId; ?>', function() {
<?php echo $javascript; ?>
L.contao.addMap('<?= $this->mapId ?>', function () {
<?= $this->javascript ?>
return {map: map, layers: layers, controls: controls, icons: icons};
}());</script>
}());
</script>

View File

@@ -1,5 +1,5 @@
L.contao.addMap('<?php echo $mapId; ?>', function() {
<?php echo $javascript; ?>
L.contao.addMap('<?= $this->mapId ?>', function() {
<?= $this->javascript ?>
return { map: map, layers: layers, controls: controls, icons: icons };
}());

View File

@@ -3,7 +3,6 @@
padding: 15px;
}
.netzmacht-leaflet-credits a {
color: #669A00;
}

View File

@@ -0,0 +1,3 @@
.tl_help_table a {
color: #77ac45
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

File diff suppressed because one or more lines are too long

View File

@@ -44,7 +44,7 @@ class ContaoAssets implements Assets
private $cache = [
'stylesheets' => [],
'javascripts' => [],
'map' => []
'map' => [],
];
/**

View File

@@ -10,14 +10,13 @@
* @filesource
*/
namespace Netzmacht\Contao\Leaflet\Subscriber;
namespace Netzmacht\Contao\Leaflet\Encoder\Subscriber;
use Netzmacht\Contao\Leaflet\Frontend\RequestUrl;
use Netzmacht\JavascriptBuilder\Encoder;
use Netzmacht\JavascriptBuilder\Flags;
use Netzmacht\JavascriptBuilder\Symfony\Event\EncodeValueEvent;
use Netzmacht\JavascriptBuilder\Symfony\Event\EncodeReferenceEvent;
use Netzmacht\JavascriptBuilder\Exception\EncodeValueFailed;
use Netzmacht\JavascriptBuilder\Flags;
use Netzmacht\JavascriptBuilder\Symfony\Event\EncodeReferenceEvent;
use Netzmacht\JavascriptBuilder\Symfony\Event\EncodeValueEvent;
use Netzmacht\LeafletPHP\Definition\Type\Icon;
use Netzmacht\LeafletPHP\Plugins\Omnivore\OmnivoreLayer;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@@ -34,13 +33,13 @@ class EncoderSubscriber implements EventSubscriberInterface
*/
public static function getSubscribedEvents()
{
return array(
EncodeValueEvent::NAME => array(
array('encodeIcons', 1000),
array('loadLayer', 100),
),
EncodeReferenceEvent::NAME => array('referenceIcon', 100),
);
return [
EncodeValueEvent::NAME => [
['encodeIcons', 1000],
['loadLayer', 100],
],
EncodeReferenceEvent::NAME => ['referenceIcon', 100],
];
}
/**
@@ -90,16 +89,15 @@ class EncoderSubscriber implements EventSubscriberInterface
{
$value = $event->getValue();
$encoder = $event->getEncoder();
$template = 'L.contao.load(%s, %s, %s, %s, map);';
$template = 'L.contao.%s(%s, %s, %s, %s, map);';
$method = 'loadFile';
if ($value instanceof OmnivoreLayer) {
$url = $value->getUrl();
if ($url instanceof RequestUrl) {
$url = $url->getHash();
} elseif (strpos($url, '/') !== false) {
// Slash found, not a Contao leaflet hash, do not replace encoding.
return;
$method = 'load';
}
if ($value->getCustomLayer()) {
@@ -112,6 +110,7 @@ class EncoderSubscriber implements EventSubscriberInterface
$event->addLine(
sprintf(
$template,
$method,
$encoder->encodeValue($url),
$encoder->encodeValue(strtolower(str_replace('Omnivore.', '', $value->getType()))),
$encoder->encodeArray($value->getOptions(), JSON_FORCE_OBJECT),

View File

@@ -12,7 +12,8 @@
namespace Netzmacht\Contao\Leaflet\Event;
use Netzmacht\Contao\Leaflet\Request\Request;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Symfony\Component\EventDispatcher\Event;
@@ -50,10 +51,10 @@ class BuildDefinitionEvent extends Event
* Construct.
*
* @param Definition $definition The leaflet definition.
* @param \Model $model The definition model.
* @param Model $model The definition model.
* @param Request|null $request Building request.
*/
public function __construct(Definition $definition, \Model $model, Request $request = null)
public function __construct(Definition $definition, Model $model, Request $request = null)
{
$this->definition = $definition;
$this->model = $model;

View File

@@ -68,7 +68,7 @@ class BboxFilter implements Filter
*/
public function getValues()
{
return array('bounds' => $this->bounds);
return ['bounds' => $this->bounds];
}
/**

View File

@@ -88,9 +88,9 @@ class DistanceFilter implements Filter
*/
public function getValues()
{
return array(
return [
'radius' => $this->radius,
'center' => $this->center
);
'center' => $this->center,
];
}
}

View File

@@ -14,7 +14,6 @@ declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Frontend;
use Contao\Config;
use Contao\Database\Result;
use Contao\Input;
use Contao\Model;
@@ -22,6 +21,7 @@ use Contao\Model\Collection;
use Netzmacht\Contao\Leaflet\MapProvider;
use Netzmacht\Contao\Leaflet\Model\MapModel;
use Netzmacht\Contao\Toolkit\Component\Hybrid\AbstractHybrid;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Symfony\Component\Templating\EngineInterface as TemplateEngine;
use Symfony\Component\Translation\TranslatorInterface as Translator;
@@ -42,16 +42,16 @@ abstract class AbstractMapHybrid extends AbstractHybrid
/**
* The user input.
*
* @var \Input
* @var Input
*/
private $input;
/**
* The Contao config.
* Repository manager.
*
* @var \Config
* @var RepositoryManager
*/
private $config;
private $repositoryManager;
/**
* HybridTrait constructor.
@@ -60,8 +60,8 @@ abstract class AbstractMapHybrid extends AbstractHybrid
* @param TemplateEngine $templateEngine Template engine.
* @param Translator $translator Translator.
* @param MapProvider $mapProvider Map provider.
* @param RepositoryManager $repositoryManager Repository manager.
* @param Input $input Request Input.
* @param Config $config Config.
* @param string $column Column in which the element appears.
*/
public function __construct(
@@ -69,15 +69,15 @@ abstract class AbstractMapHybrid extends AbstractHybrid
TemplateEngine $templateEngine,
Translator $translator,
MapProvider $mapProvider,
RepositoryManager $repositoryManager,
$input,
$config,
$column = null
) {
parent::__construct($model, $templateEngine, $translator, $column);
$this->mapProvider = $mapProvider;
$this->input = $input;
$this->config = $config;
$this->repositoryManager = $repositoryManager;
}
/**
@@ -90,7 +90,8 @@ abstract class AbstractMapHybrid extends AbstractHybrid
$this->mapProvider->handleAjaxRequest($this->getIdentifier());
if (TL_MODE === 'BE') {
$model = MapModel::findByPk($this->get('leaflet_map'));
$repository = $this->repositoryManager->getRepository(MapModel::class);
$model = $repository->find((int) $this->get('leaflet_map'));
$parameters = [
'title' => $this->get('headline'),
];

View File

@@ -14,9 +14,15 @@ declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Frontend\ContentElement;
use Contao\Config;
use Contao\CoreBundle\Framework\Adapter;
use Contao\Input;
use Netzmacht\Contao\Leaflet\MapProvider;
use Netzmacht\Contao\Toolkit\Component\Component;
use Netzmacht\Contao\Toolkit\Component\ComponentFactory;
use Psr\Container\ContainerInterface as Container;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Symfony\Component\Templating\EngineInterface as TemplateEngine;
use Symfony\Component\Translation\TranslatorInterface as Translator;
/**
* Class MapElementFactory
@@ -26,20 +32,61 @@ use Psr\Container\ContainerInterface as Container;
class MapElementFactory implements ComponentFactory
{
/**
* Dependency container.
* Template engine.
*
* @var Container
* @var TemplateEngine
*/
private $container;
private $templating;
/**
* Translator.
*
* @var Translator
*/
private $translator;
/**
* Map provider.
*
* @var MapProvider
*/
private $mapProvider;
/**
* Input adapter.
*
* @var Input|Adapter
*/
private $input;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* MapElementFactory constructor.
*
* @param Container $container Dependency container.
* @param TemplateEngine $engine Template engine.
* @param Translator $translator Translator.
* @param MapProvider $mapProvider Map provider.
* @param RepositoryManager $repositoryManager Repository manager.
* @param Input|Adapter $input Input adapter.
*/
public function __construct(Container $container)
{
$this->container = $container;
public function __construct(
TemplateEngine $engine,
Translator $translator,
MapProvider $mapProvider,
RepositoryManager $repositoryManager,
$input
) {
$this->templating = $engine;
$this->translator = $translator;
$this->mapProvider = $mapProvider;
$this->input = $input;
$this->repositoryManager = $repositoryManager;
}
/**
@@ -57,11 +104,11 @@ class MapElementFactory implements ComponentFactory
{
return new MapElement(
$model,
$this->container->get('templating'),
$this->container->get('translator'),
$this->container->get('netzmacht.contao_leaflet.map.provider'),
$this->container->get('netzmacht.contao_toolkit.contao.input_adapter'),
$this->container->get('netzmacht.contao_toolkit.contao.config_adapter'),
$this->templating,
$this->translator,
$this->mapProvider,
$this->repositoryManager,
$this->input,
$column
);
}

View File

@@ -28,13 +28,13 @@ class DataController
*
* @var array
*/
private $input = array(
private $input = [
'format' => 'geojson',
'type' => 'layer',
'id' => null,
'filter' => null,
'values' => null
);
'values' => null,
];
/**
* Debug mode.
@@ -140,9 +140,9 @@ class DataController
default:
$error = true;
return array($data, $error);
return [$data, $error];
}
return array($data, $error);
return [$data, $error];
}
}

View File

@@ -14,9 +14,15 @@ declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Frontend\Module;
use Contao\Config;
use Contao\CoreBundle\Framework\Adapter;
use Contao\Input;
use Netzmacht\Contao\Leaflet\MapProvider;
use Netzmacht\Contao\Toolkit\Component\Component;
use Netzmacht\Contao\Toolkit\Component\ComponentFactory;
use Psr\Container\ContainerInterface as Container;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Symfony\Component\Templating\EngineInterface as TemplateEngine;
use Symfony\Component\Translation\TranslatorInterface as Translator;
/**
* Class MapElementFactory
@@ -26,20 +32,61 @@ use Psr\Container\ContainerInterface as Container;
class MapModuleFactory implements ComponentFactory
{
/**
* Dependency container.
* Template engine.
*
* @var Container
* @var TemplateEngine
*/
private $container;
private $templating;
/**
* MapModuleFactory constructor.
* Translator.
*
* @param Container $container Dependency container.
* @var Translator
*/
public function __construct(Container $container)
{
$this->container = $container;
private $translator;
/**
* Map provider.
*
* @var MapProvider
*/
private $mapProvider;
/**
* Input adapter.
*
* @var Input|Adapter
*/
private $input;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* MapElementFactory constructor.
*
* @param TemplateEngine $engine Template engine.
* @param Translator $translator Translator.
* @param MapProvider $mapProvider Map provider.
* @param RepositoryManager $repositoryManager Repository manager.
* @param Input|Adapter $input Input adapter.
*/
public function __construct(
TemplateEngine $engine,
Translator $translator,
MapProvider $mapProvider,
RepositoryManager $repositoryManager,
$input
) {
$this->templating = $engine;
$this->translator = $translator;
$this->mapProvider = $mapProvider;
$this->input = $input;
$this->repositoryManager = $repositoryManager;
}
/**
@@ -57,11 +104,11 @@ class MapModuleFactory implements ComponentFactory
{
return new MapModule(
$model,
$this->container->get('templating'),
$this->container->get('translator'),
$this->container->get('netzmacht.contao_leaflet.map.provider'),
$this->container->get('netzmacht.contao_toolkit.contao.input_adapter'),
$this->container->get('netzmacht.contao_toolkit.contao.config_adapter'),
$this->templating,
$this->translator,
$this->mapProvider,
$this->repositoryManager,
$this->input,
$column
);
}

View File

@@ -13,7 +13,7 @@
namespace Netzmacht\Contao\Leaflet\Frontend;
use Netzmacht\Contao\Leaflet\Filter\Filter;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
/**
* Class RequestUrl creates the request url.
@@ -57,12 +57,12 @@ class RequestUrl implements \JsonSerializable
*/
public static function create($dataId, $type = null, $format = null, Request $request = null)
{
$params = array(
$params = [
'for' => $request ? $request->getMapIdentifier() : null,
'type' => $type != 'layer' ? $type : null,
'id' => $dataId,
'format' => $format != 'geojson' ? $format : null
);
'format' => $format != 'geojson' ? $format : null,
];
$hash = base64_encode(implode(',', $params));
$query = 'leaflet=' . $hash;

View File

@@ -14,11 +14,12 @@ namespace Netzmacht\Contao\Leaflet\Listener\Dca;
use Contao\StringUtil;
use Doctrine\DBAL\Connection;
use Netzmacht\Contao\Leaflet\Model\ControlModel;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\Contao\Toolkit\Dca\Listener\AbstractListener;
use Netzmacht\Contao\Toolkit\Dca\Manager;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
use Netzmacht\Contao\Leaflet\Model\ControlModel;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
/**
* Class Control is the helper for the tl_leaflet_control dca.
@@ -48,19 +49,32 @@ class ControlDcaListener extends AbstractListener
*/
private $types;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param Manager $manager Data container manager.
* @param Connection $connection Database connection.
* @param RepositoryManager $repositoryManager Repository manager.
* @param array $types Control types.
*/
public function __construct(Manager $manager, Connection $connection, array $types)
{
public function __construct(
Manager $manager,
Connection $connection,
RepositoryManager $repositoryManager,
array $types
) {
parent::__construct($manager);
$this->connection = $connection;
$this->types = $types;
$this->repositoryManager = $repositoryManager;
}
/**
@@ -96,7 +110,8 @@ class ControlDcaListener extends AbstractListener
*/
public function getLayers()
{
$collection = LayerModel::findAll();
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$collection = $repository->findAll();
return OptionsBuilder::fromCollection($collection, 'title')
->asTree()
@@ -110,7 +125,8 @@ class ControlDcaListener extends AbstractListener
*/
public function getZoomControls()
{
$collection = ControlModel::findBy('type', 'zoom', array('order' => 'title'));
$repository = $this->repositoryManager->getRepository(ControlModel::class);
$collection = $repository->findBy(['type=?'], ['zoom'], ['order' => 'title']);
return OptionsBuilder::fromCollection($collection, 'title')->getOptions();
}
@@ -166,7 +182,7 @@ class ControlDcaListener extends AbstractListener
'lid' => $layer['layer'],
'cid' => $dataContainer->id,
'mode' => $layer['mode'],
'sorting' => $sorting
'sorting' => $sorting,
];
$this->connection->insert('tl_leaflet_control_layer', $data);
@@ -177,10 +193,10 @@ class ControlDcaListener extends AbstractListener
[
'tstamp' => time(),
'sorting' => $sorting,
'mode' => $layer['mode']
'mode' => $layer['mode'],
],
[
'id' => $values[$layer['layer']]['id']
'id' => $values[$layer['layer']]['id'],
]
);

View File

@@ -14,8 +14,12 @@ declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
use Contao\Image;
use Contao\RequestToken;
use Contao\StringUtil;
use Netzmacht\Contao\Leaflet\Model\MapModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
use Symfony\Component\Translation\TranslatorInterface as Translator;
/**
@@ -32,14 +36,23 @@ final class FrontendIntegrationListener
*/
private $translator;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* FrontendIntegration constructor.
*
* @param RepositoryManager $repositoryManager Repository manager.
* @param Translator $translator Translator.
*/
public function __construct(Translator $translator)
public function __construct(RepositoryManager $repositoryManager, Translator $translator)
{
$this->translator = $translator;
$this->repositoryManager = $repositoryManager;
}
/**
@@ -49,7 +62,8 @@ final class FrontendIntegrationListener
*/
public function getMaps(): array
{
$collection = MapModel::findAll();
$repository = $this->repositoryManager->getRepository(MapModel::class);
$collection = $repository->findAll(['order' => 'title']);
return OptionsBuilder::fromCollection($collection, 'title')->getOptions();
}
@@ -74,11 +88,13 @@ final class FrontendIntegrationListener
'<a href="%s%s&amp;popup=1&amp;rt=%s" %s>%s</a>',
'contao/main.php?do=leaflet_map&amp;table=tl_leaflet_map&amp;act=edit&amp;id=',
$dataContainer->value,
\RequestToken::get(),
RequestToken::get(),
sprintf(
$pattern,
specialchars($this->translator->trans('editalias.1', [$dataContainer->value], 'contao_tl_content')),
specialchars(
StringUtil::specialchars(
$this->translator->trans('editalias.1', [$dataContainer->value], 'contao_tl_content')
),
StringUtil::specialchars(
str_replace(
"'",
"\\'",
@@ -86,7 +102,7 @@ final class FrontendIntegrationListener
)
)
),
\Image::getHtml(
Image::getHtml(
'alias.gif',
$this->translator->trans('editalias.0', [$dataContainer->value], 'contao_tl_content'),
'style="vertical-align:top"'

View File

@@ -12,17 +12,19 @@
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
use Contao\Controller;
use Contao\Backend;
use Contao\CoreBundle\Framework\Adapter;
use Contao\DataContainer;
use Contao\Image;
use Contao\RequestToken;
use Contao\StringUtil;
use Doctrine\DBAL\Connection;
use Netzmacht\Contao\Leaflet\Backend\Renderer\Label\Layer\LayerLabelRenderer;
use Netzmacht\Contao\Leaflet\Model\IconModel;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\Contao\Toolkit\Dca\Listener\AbstractListener;
use Netzmacht\Contao\Toolkit\Dca\Manager;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Symfony\Component\Translation\TranslatorInterface as Translator;
/**
@@ -53,6 +55,13 @@ class LayerDcaListener extends AbstractListener
*/
private $connection;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Tile providers configuration.
*
@@ -81,36 +90,59 @@ class LayerDcaListener extends AbstractListener
*/
private $labelRenderer;
/**
* File formats.
*
* @var array
*/
private $fileFormats;
/**
* Backend adapter.
*
* @var Backend|Adapter
*/
private $backendAdapter;
/**
* Construct.
*
* @param Manager $manager Data container manager.
* @param Connection $connection Database connection.
* @param RepositoryManager $repositoryManager Repository manager.
* @param Translator $translator Translator.
* @param LayerLabelRenderer $labelRenderer Layer label renderer.
* @param Adapter|Backend $backendAdapter Backend adapter.
* @param array $layers Leaflet layer configuration.
* @param array $tileProviders Tile providers.
* @param array $amenities OSM amenities.
* @param array $fileFormats File formats.
*
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function __construct(
Manager $manager,
Connection $connection,
RepositoryManager $repositoryManager,
Translator $translator,
LayerLabelRenderer $labelRenderer,
$backendAdapter,
array $layers,
array $tileProviders,
array $amenities
array $amenities,
array $fileFormats
) {
parent::__construct($manager);
Controller::loadLanguageFile('leaflet_layer');
$this->connection = $connection;
$this->layers = $layers;
$this->tileProviders = $tileProviders;
$this->translator = $translator;
$this->amenities = $amenities;
$this->labelRenderer = $labelRenderer;
$this->fileFormats = $fileFormats;
$this->repositoryManager = $repositoryManager;
$this->backendAdapter = $backendAdapter;
}
/**
@@ -149,7 +181,7 @@ class LayerDcaListener extends AbstractListener
return $this->tileProviders[$dataContainer->activeRecord->tile_provider]['variants'];
}
return array();
return [];
}
/**
@@ -205,7 +237,8 @@ class LayerDcaListener extends AbstractListener
)
);
$collection = LayerModel::findMultipleByTypes($types);
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$collection = $repository->findMultipleByTypes($types);
$builder = OptionsBuilder::fromCollection(
$collection,
'id',
@@ -232,43 +265,42 @@ class LayerDcaListener extends AbstractListener
*/
public function getPasteButtons($dataContainer, $row, $table, $whatever, $children)
{
$pasteAfterUrl = \Controller::addToUrl(
$pasteAfterUrl = $this->backendAdapter->addToUrl(
'act=' . $children['mode'] . '&amp;mode=1&amp;pid=' . $row['id']
. (!is_array($children['id']) ? '&amp;id=' . $children['id'] : '')
. '&amp;rt=' . RequestToken::get()
);
$buffer = sprintf(
'<a href="%s" title="%s" onclick="Backend.getScrollOffset()">%s</a> ',
$pasteAfterUrl,
specialchars($this->translator->trans('pasteafter.1', [$row['id']], 'contao_' . $table)),
\Image::getHtml(
StringUtil::specialchars($this->translator->trans('pasteafter.1', [$row['id']], 'contao_' . $table)),
Image::getHtml(
'pasteafter.gif',
$this->translator->trans('pasteafter.1', [$row['id']], 'contao_' . $table)
)
);
if (!empty($this->layers[$row['type']]['children'])) {
$pasteIntoUrl = \Controller::addToUrl(
$pasteIntoUrl = $this->backendAdapter->addToUrl(
sprintf(
'act=%s&amp;mode=2&amp;pid=%s%s',
$children['mode'],
$row['id'],
!is_array($children['id']) ? '&amp;id=' . $children['id'] : ''
) . '&amp;rt=' . RequestToken::get()
)
);
$buffer .= sprintf(
'<a href="%s" title="%s" onclick="Backend.getScrollOffset()">%s</a> ',
$pasteIntoUrl,
specialchars($this->translator->trans('pasteinto.1', [$row['id']], 'contao_' . $table)),
\Image::getHtml(
StringUtil::specialchars($this->translator->trans('pasteinto.1', [$row['id']], 'contao_' . $table)),
Image::getHtml(
'pasteinto.gif',
$this->translator->trans('pasteinto.1', [$row['id']], 'contao_' . $table)
)
);
} elseif ($row['id'] > 0) {
$buffer .= \Image::getHtml('pasteinto_.gif');
$buffer .= Image::getHtml('pasteinto_.gif');
}
return $buffer;
@@ -337,7 +369,7 @@ class LayerDcaListener extends AbstractListener
$statement->bindValue('lid', $dataContainer->id);
$statement->execute();
$undo['data'] = deserialize($undo['data'], true);
$undo['data'] = StringUtil::deserialize($undo['data'], true);
while ($row = $statement->fetch()) {
$undo['data']['tl_leaflet_map_layer'][] = $row;
@@ -365,7 +397,7 @@ class LayerDcaListener extends AbstractListener
*/
public function getBoundsModes($dataContainer)
{
$options = array();
$options = [];
if ($dataContainer->activeRecord && !empty($this->layers[$dataContainer->activeRecord->type]['boundsMode'])) {
foreach ($this->layers[$dataContainer->activeRecord->type]['boundsMode'] as $mode => $enabled) {
@@ -389,7 +421,8 @@ class LayerDcaListener extends AbstractListener
*/
public function getLayers($dataContainer)
{
$collection = LayerModel::findBy('id !', $dataContainer->id);
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$collection = $repository->findBy(['tl_leaflet_layer.id!=?'], [$dataContainer->id]);
return OptionsBuilder::fromCollection($collection, 'title')
->asTree()
@@ -413,7 +446,8 @@ class LayerDcaListener extends AbstractListener
*/
public function getIcons()
{
$collection = IconModel::findAll(array('order' => 'title'));
$repository = $this->repositoryManager->getRepository(IconModel::class);
$collection = $repository->findAll(['order' => 'title']);
$builder = OptionsBuilder::fromCollection(
$collection,
function ($model) {
@@ -424,6 +458,49 @@ class LayerDcaListener extends AbstractListener
return $builder->getOptions();
}
/**
* Get the file formats.
*
* @return array
*/
public function getFileFormats(): array
{
return array_keys($this->fileFormats);
}
/**
* Prepare the file widget.
*
* @param mixed $value Given value.
* @param DataContainer $dataContainer Data container driver.
*
* @return mixed
*/
public function prepareFileWidget($value, $dataContainer)
{
if ($dataContainer->activeRecord) {
$fileFormat = $dataContainer->activeRecord->fileFormat;
if (isset($this->fileFormats[$fileFormat])) {
$definition = $this->getDefinition();
$definition->set(
['fields', $dataContainer->field, 'eval', 'extensions'],
implode(',', $this->fileFormats[$fileFormat])
);
$definition->set(
['fields', $dataContainer->field, 'label', 1],
sprintf(
$definition->get(['fields', $dataContainer->field, 'label', 1]),
implode(', ', $this->fileFormats[$fileFormat])
)
);
}
}
return $value;
}
/**
* Generate a button.
*

View File

@@ -12,11 +12,14 @@
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
use Contao\Controller;
use Contao\CoreBundle\Framework\Adapter;
use Contao\DataContainer;
use Contao\System;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Value\LatLng;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Templating\EngineInterface as TemplateEngine;
/**
* Class Leaflet is the base helper providing different methods.
@@ -39,15 +42,47 @@ class LeafletDcaListener
*/
private $cacheDir;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Template engine.
*
* @var TemplateEngine
*/
private $templateEngine;
/**
* System adapter.
*
* @var Adapter|System
*/
private $systemAdapter;
/**
* LeafletCallbacks constructor.
*
* @param RepositoryManager $repositoryManager Repository manager.
* @param TemplateEngine $templateEngine Template engine.
* @param Filesystem $fileSystem File system.
* @param Adapter|System $systemAdapter Contao system adapter.
* @param string $cacheDir Cache dir.
*/
public function __construct(Filesystem $fileSystem, string $cacheDir)
{
public function __construct(
RepositoryManager $repositoryManager,
TemplateEngine $templateEngine,
Filesystem $fileSystem,
$systemAdapter,
string $cacheDir
) {
$this->repositoryManager = $repositoryManager;
$this->templateEngine = $templateEngine;
$this->fileSystem = $fileSystem;
$this->systemAdapter = $systemAdapter;
$this->cacheDir = $cacheDir;
}
@@ -58,7 +93,7 @@ class LeafletDcaListener
*/
public function loadLanguageFile()
{
Controller::loadLanguageFile('leaflet');
$this->systemAdapter->loadLanguageFile('leaflet');
}
/**
@@ -80,17 +115,16 @@ class LeafletDcaListener
*/
public function getGeocoder($dataContainer)
{
$template = new \BackendTemplate('be_leaflet_geocode');
$template->field = 'ctrl_' . $dataContainer->field;
$data['field'] = 'ctrl_' . $dataContainer->field;
try {
$latLng = LatLng::fromString($dataContainer->value);
$template->marker = json_encode($latLng);
$data['marker'] = json_encode($latLng);
} catch (\Exception $e) {
// LatLng throws an exception of value could not be created. Just let the value empty when.
}
return $template->parse();
return $this->templateEngine->render('toolkit:be:be_leaflet_geocode.html5', $data);
}
/**
@@ -100,8 +134,9 @@ class LeafletDcaListener
*/
public function getLayers()
{
$options = array();
$collection = LayerModel::findBy('pid', '0', array('order' => 'title'));
$options = [];
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$collection = $repository->findBy(['pid=?'], ['0'], ['order' => 'title']);
if ($collection) {
foreach ($collection as $model) {

View File

@@ -18,6 +18,7 @@ use Contao\DataContainer;
use Contao\StringUtil;
use Doctrine\DBAL\Connection;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\Contao\Toolkit\Dca\Listener\AbstractListener;
use Netzmacht\Contao\Toolkit\Dca\Manager;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
@@ -44,17 +45,26 @@ class MapDcaListener extends AbstractListener
*/
private $connection;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param Manager $manager Data container manager.
* @param Connection $connection Database connection.
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(Manager $manager, Connection $connection)
public function __construct(Manager $manager, Connection $connection, RepositoryManager $repositoryManager)
{
parent::__construct($manager);
$this->connection = $connection;
$this->repositoryManager = $repositoryManager;
}
/**
@@ -90,7 +100,7 @@ class MapDcaListener extends AbstractListener
public function saveLayerRelations($layerId, $dataContainer)
{
$new = array_filter(StringUtil::deserialize($layerId, true));
$values = array();
$values = [];
$statement = $this->connection->prepare('SELECT * FROM tl_leaflet_map_layer WHERE mid=:mid order BY sorting');
$statement->bindValue('mid', $dataContainer->id);
@@ -108,7 +118,7 @@ class MapDcaListener extends AbstractListener
'tstamp' => time(),
'lid' => $layerId,
'mid' => $dataContainer->id,
'sorting' => $sorting
'sorting' => $sorting,
];
$this->connection->insert('tl_leaflet_map_layer', $data);
@@ -150,13 +160,12 @@ class MapDcaListener extends AbstractListener
/**
* Get all layers except of the current layer.
*
* @param DataContainer $dataContainer The dataContainer driver.
*
* @return array
*/
public function getLayers($dataContainer)
public function getLayers()
{
$collection = LayerModel::findBy('id !', $dataContainer->id);
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$collection = $repository->findAll(['order' => 'title']);
return OptionsBuilder::fromCollection($collection, 'title')
->asTree()

View File

@@ -14,9 +14,10 @@ namespace Netzmacht\Contao\Leaflet\Listener\Dca;
use Contao\Controller;
use Doctrine\DBAL\Connection;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
use Netzmacht\Contao\Leaflet\Model\IconModel;
use Netzmacht\Contao\Leaflet\Model\PopupModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
/**
* Class Marker is the dca helper class for the tl_leaflet_marker dca.
@@ -32,24 +33,23 @@ class MarkerDcaListener
*/
private $connection;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* MarkerDcaListener constructor.
*
* @param Connection $connection Database connection.
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(Connection $connection)
public function __construct(Connection $connection, RepositoryManager $repositoryManager)
{
$this->connection = $connection;
}
/**
* Initialize the language files.
*
* @return void
*/
public function initialize()
{
Controller::loadLanguageFile('leaflet');
$this->repositoryManager = $repositoryManager;
}
/**
@@ -71,7 +71,8 @@ class MarkerDcaListener
*/
public function getIcons()
{
$collection = IconModel::findAll(array('order' => 'title'));
$repository = $this->repositoryManager->getRepository(IconModel::class);
$collection = $repository->findAll(['order' => 'title']);
$builder = OptionsBuilder::fromCollection(
$collection,
function ($model) {
@@ -89,7 +90,8 @@ class MarkerDcaListener
*/
public function getPopups()
{
$collection = PopupModel::findAll(array('order' => 'title'));
$repository = $this->repositoryManager->getRepository(PopupModel::class);
$collection = $repository->findAll(['order' => 'title']);
$builder = OptionsBuilder::fromCollection($collection, 'title');
return $builder->getOptions();
@@ -105,11 +107,11 @@ class MarkerDcaListener
*/
public function saveCoordinates($value, $dataContainer)
{
$combined = array(
$combined = [
'latitude' => null,
'longitude' => null,
'altitude' => null
);
'altitude' => null,
];
$values = trimsplit(',', $value);
$keys = array_keys($combined);

View File

@@ -12,12 +12,12 @@
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
use Netzmacht\Contao\Leaflet\Model\IconModel;
use Netzmacht\Contao\Leaflet\Model\PopupModel;
use Netzmacht\Contao\Leaflet\Model\StyleModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\Contao\Toolkit\Dca\Listener\AbstractListener;
use Netzmacht\Contao\Toolkit\Dca\Manager;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
use Netzmacht\Contao\Leaflet\Model\StyleModel;
/**
* Helper class for the tl_leaflet_vector dca.
@@ -40,17 +40,26 @@ class VectorDcaListener extends AbstractListener
*/
private $vectors;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param Manager $dcaManager Data container manager.
* @param RepositoryManager $repositoryManager Repository manager.
* @param array $vectors Vectors.
*/
public function __construct(Manager $dcaManager, array $vectors)
public function __construct(Manager $dcaManager, RepositoryManager $repositoryManager, array $vectors)
{
parent::__construct($dcaManager);
$this->vectors = $vectors;
$this->repositoryManager = $repositoryManager;
}
/**
@@ -86,29 +95,12 @@ class VectorDcaListener extends AbstractListener
*/
public function getStyles()
{
$collection = StyleModel::findAll(array('order' => 'title'));
$repository = $this->repositoryManager->getRepository(StyleModel::class);
$collection = $repository->findAll(['order' => 'title']);
return OptionsBuilder::fromCollection($collection, 'title')->getOptions();
}
/**
* Get all icons.
*
* @return array
*/
public function getIcons()
{
$collection = IconModel::findAll(array('order' => 'title'));
$builder = OptionsBuilder::fromCollection(
$collection,
function ($model) {
return sprintf('%s [%s]', $model['title'], $model['type']);
}
);
return $builder->getOptions();
}
/**
* Get all popups.
*
@@ -116,7 +108,8 @@ class VectorDcaListener extends AbstractListener
*/
public function getPopups()
{
$collection = PopupModel::findAll(array('order' => 'title'));
$repository = $this->repositoryManager->getRepository(PopupModel::class);
$collection = $repository->findAll(['order' => 'title']);
$builder = OptionsBuilder::fromCollection($collection, 'title');
return $builder->getOptions();

View File

@@ -10,24 +10,30 @@
* @filesource
*/
namespace Netzmacht\Contao\Leaflet\Subscriber;
declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Listener;
use Contao\FilesModel;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Event\ConvertToGeoJsonEvent;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\LeafletPHP\Definition\Vector;
use Netzmacht\LeafletPHP\Value\GeoJson\Feature;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Definition as LeafletDefinition;
use Netzmacht\LeafletPHP\Definition\HasPopup;
use Netzmacht\LeafletPHP\Definition\UI\Marker;
use Netzmacht\LeafletPHP\Definition\Vector;
use Netzmacht\LeafletPHP\Definition\Vector\Circle;
use Netzmacht\LeafletPHP\Definition\Vector\CircleMarker;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Netzmacht\LeafletPHP\Value\GeoJson\Feature;
use Netzmacht\LeafletPHP\Value\GeoJson\GeoJsonObject;
/**
* Class GeoJsonSubscriber provides subscribers when a definition is converted to a geo json feature.
*
* @package Netzmacht\Contao\Leaflet\Subscriber
*/
class GeoJsonSubscriber implements EventSubscriberInterface
final class GeoJsonListener
{
/**
* Property mapping between models and features.
@@ -36,43 +42,54 @@ class GeoJsonSubscriber implements EventSubscriberInterface
*/
private $featureModelProperties;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* GeoJsonSubscriber constructor.
*
* @param RepositoryManager $repositoryManager Repository manager.
* @param array $featureModelProperties Property mapping between models and features.
*/
public function __construct(array $featureModelProperties)
public function __construct(RepositoryManager $repositoryManager, array $featureModelProperties)
{
$this->repositoryManager = $repositoryManager;
$this->featureModelProperties = $featureModelProperties;
}
/**
* {@inheritdoc}
* Handle the event.
*
* @param ConvertToGeoJsonEvent $event The event.
*
* @return void
*/
public static function getSubscribedEvents()
public function handle(ConvertToGeoJsonEvent $event)
{
return array(
ConvertToGeoJsonEvent::NAME => array(
array('addPopup'),
array('enrichObjects'),
array('enrichCircle'),
array('setModelData')
)
);
$feature = $event->getGeoJson();
$definition = $event->getDefinition();
$model = $event->getModel();
$this->addPopup($feature, $definition);
$this->enrichObjects($feature, $definition, $model);
$this->enrichCircle($feature, $definition);
$this->setModelData($feature, $model);
}
/**
* Add popup property for definitions with an popup.
*
* @param ConvertToGeoJsonEvent $event The subscribed event.
* @param GeoJsonObject $feature The geojson feature object.
* @param LeafletDefinition $definition The definition.
*
* @return void
*/
public function addPopup(ConvertToGeoJsonEvent $event)
public function addPopup(GeoJsonObject $feature, LeafletDefinition $definition)
{
$feature = $event->getGeoJson();
$definition = $event->getDefinition();
if ($definition instanceof HasPopup && $feature instanceof Feature) {
if ($definition->getPopup()) {
$feature->setProperty('popup', $definition->getPopup());
@@ -91,16 +108,14 @@ class GeoJsonSubscriber implements EventSubscriberInterface
/**
* Enrich map object with feature data and bounds information.
*
* @param ConvertToGeoJsonEvent $event The subscribed event.
* @param GeoJsonObject $feature The geojson feature object.
* @param LeafletDefinition $definition The definition.
* @param Model|object $model The data model.
*
* @return void
*/
public function enrichObjects(ConvertToGeoJsonEvent $event)
public function enrichObjects(GeoJsonObject $feature, LeafletDefinition $definition, $model)
{
$feature = $event->getGeoJson();
$definition = $event->getDefinition();
$model = $event->getModel();
if (($definition instanceof Marker || $definition instanceof Vector)
&& $model instanceof \Model && $feature instanceof Feature) {
$this->setDataProperty($model, $feature);
@@ -111,32 +126,28 @@ class GeoJsonSubscriber implements EventSubscriberInterface
/**
* Enrich the the circle with constructor arguments.
*
* @param ConvertToGeoJsonEvent $event The subscribed events.
* @param GeoJsonObject $feature The geojson feature object.
* @param LeafletDefinition $definition The definition.
*
* @return void
*/
public function enrichCircle(ConvertToGeoJsonEvent $event)
public function enrichCircle(GeoJsonObject $feature, LeafletDefinition $definition)
{
$feature = $event->getGeoJson();
$definition = $event->getDefinition();
if ($definition instanceof Circle && !$definition instanceof CircleMarker && $feature instanceof Feature) {
$feature->setProperty('arguments', array($definition->getLatLng(), $definition->getRadius()));
$feature->setProperty('arguments', [$definition->getLatLng(), $definition->getRadius()]);
}
}
/**
* Pass configured properties on an model to the properties.model key.
*
* @param ConvertToGeoJsonEvent $event The subscribed events.
* @param GeoJsonObject $feature The geojson feature object.
* @param Model|object $model The data model.
*
* @return void
*/
public function setModelData(ConvertToGeoJsonEvent $event)
public function setModelData(GeoJsonObject $feature, $model)
{
$feature = $event->getGeoJson();
$model = $event->getModel();
if (!$model instanceof \Model || !$feature instanceof Feature
|| empty($this->featureModelProperties[$model->getTable()])) {
return;
@@ -176,17 +187,19 @@ class GeoJsonSubscriber implements EventSubscriberInterface
break;
case 'file':
$file = \FilesModel::findByUuid($value);
$repository = $this->repositoryManager->getRepository(FilesModel::class);
$file = $repository->findByUuid($value);
$value = $file->path;
break;
case 'files':
$collection = \FilesModel::findMultipleByUuids(deserialize($value, true));
$repository = $this->repositoryManager->getRepository(FilesModel::class);
$collection = $repository->findMultipleByUuids(deserialize($value, true));
if ($collection) {
$value = $collection->fetchEach('path');
} else {
$value = array();
$value = [];
}
break;
@@ -213,7 +226,8 @@ class GeoJsonSubscriber implements EventSubscriberInterface
if ($model->ignoreForBounds) {
$feature->setProperty('ignoreForBounds', true);
} else {
$parent = LayerModel::findByPk($model->pid);
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$parent = $repository->find((int) $model->pid);
if ($parent && $parent->boundsMode !== 'extend') {
$feature->setProperty('ignoreForBounds', true);

View File

@@ -10,7 +10,7 @@
* @filesource
*/
namespace Netzmacht\Contao\Leaflet\Subscriber;
namespace Netzmacht\Contao\Leaflet\Listener;
use Netzmacht\Contao\Leaflet\Event\GetHashEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@@ -27,12 +27,12 @@ class HashSubscriber implements EventSubscriberInterface
*/
public static function getSubscribedEvents()
{
return array(
GetHashEvent::NAME => array(
array('getModelHash'),
array('getFallback', -100)
)
);
return [
GetHashEvent::NAME => [
['getModelHash'],
['getFallback', -100],
],
];
}
/**

View File

@@ -18,6 +18,7 @@ use Netzmacht\Contao\Leaflet\Encoder\ContaoAssets;
use Netzmacht\Contao\Leaflet\Frontend\Assets\LibrariesConfiguration;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Model\IconModel;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Assets;
use Netzmacht\LeafletPHP\Definition\Type\Icon;
use Netzmacht\LeafletPHP\Definition\Type\ImageIcon;
@@ -50,18 +51,31 @@ class LoadAssetsListener
*/
private $libraries;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* LoadAssetsListener constructor.
*
* @param Assets $assets Assets.
* @param DefinitionMapper $definitionMapper Definition mapper.
* @param RepositoryManager $repositoryManager Repository manager.
* @param LibrariesConfiguration $libraries Libraries.
*/
public function __construct(Assets $assets, DefinitionMapper $definitionMapper, LibrariesConfiguration $libraries)
{
public function __construct(
Assets $assets,
DefinitionMapper $definitionMapper,
RepositoryManager $repositoryManager,
LibrariesConfiguration $libraries
) {
$this->assets = $assets;
$this->definitionMapper = $definitionMapper;
$this->libraries = $libraries;
$this->repositoryManager = $repositoryManager;
}
/**
@@ -76,7 +90,8 @@ class LoadAssetsListener
ContaoAssets::TYPE_FILE
);
$collection = IconModel::findBy('active', true);
$repository = $this->repositoryManager->getRepository(IconModel::class);
$collection = $repository->findBy(['active=?'], [true]);
if ($collection) {
$buffer = '';

View File

@@ -19,13 +19,16 @@ use Netzmacht\Contao\Leaflet\Event\GetJavascriptEvent;
use Netzmacht\Contao\Leaflet\Filter\Filter;
use Netzmacht\Contao\Leaflet\Frontend\DataController;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Leaflet\Model\MapModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\Contao\Toolkit\View\Template\TemplateReference;
use Netzmacht\LeafletPHP\Definition\Map;
use Netzmacht\LeafletPHP\Leaflet;
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
use Symfony\Component\EventDispatcher\EventDispatcherInterface as EventDispatcher;
use Symfony\Component\Templating\EngineInterface as TemplateEngine;
/**
* Class MapProvider.
@@ -83,6 +86,20 @@ class MapProvider
*/
private $dataController;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Template engine.
*
* @var TemplateEngine
*/
private $templateEngine;
/**
* Construct.
*
@@ -93,8 +110,8 @@ class MapProvider
* @param ContaoAssets $assets Assets handler.
* @param Cache $cache Cache.
* @param DataController $dataController Data controller.
*
* @internal param FilterFactory $filterFactory Filter factory.
* @param RepositoryManager $repositoryManager Repository manager.
* @param TemplateEngine $templateEngine Template engine.
*/
public function __construct(
DefinitionMapper $mapper,
@@ -103,7 +120,9 @@ class MapProvider
$input,
ContaoAssets $assets,
Cache $cache,
DataController $dataController
DataController $dataController,
RepositoryManager $repositoryManager,
TemplateEngine $templateEngine
) {
$this->mapper = $mapper;
$this->leaflet = $leaflet;
@@ -112,6 +131,8 @@ class MapProvider
$this->assets = $assets;
$this->cache = $cache;
$this->dataController = $dataController;
$this->repositoryManager = $repositoryManager;
$this->templateEngine = $templateEngine;
}
/**
@@ -149,7 +170,8 @@ class MapProvider
*/
public function getModel($mapId)
{
$model = MapModel::findByIdOrAlias($mapId);
$repository = $this->repositoryManager->getRepository(MapModel::class);
$model = $repository->findByIdOrAlias($mapId);
if ($model === null) {
throw new \InvalidArgumentException(sprintf('Model "%s" not found', $mapId));
@@ -202,7 +224,7 @@ class MapProvider
$cacheKey,
[
'assets' => $this->assets->toArray(),
'javascript' => $buffer
'javascript' => $buffer,
],
(int) $model->cacheLifeTime
);
@@ -226,7 +248,8 @@ class MapProvider
if ($layerId instanceof LayerModel) {
$model = $layerId;
} else {
$model = LayerModel::findByPK($layerId);
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$model = $repository->find((int) $layerId);
}
if (!$model || !$model->active) {
@@ -279,7 +302,7 @@ class MapProvider
throw new \RuntimeException('Bad request. Could not resolve query params');
}
$data = array_combine(array('for', 'type', 'id', 'format', 'filter', 'values'), $data);
$data = array_combine(['for', 'type', 'id', 'format', 'filter', 'values'], $data);
$data = array_filter($data);
if (empty($data['for']) || $data['for'] != $identifier) {
@@ -345,18 +368,20 @@ class MapProvider
protected function doGenerate($model, $filter, $elementId, $template, $style)
{
$definition = $this->getDefinition($model, $filter, $elementId);
$template = \Controller::getTemplate($template);
// @codingStandardsIgnoreStart - Set for the template.
$javascript = $this->leaflet->build($definition, $this->assets);
$mapId = $definition->getId();
// @codingStandardsIgnoreEnd
ob_start();
include $template;
$content = ob_get_contents();
ob_end_clean();
$templateReference = new TemplateReference($template, 'html5', TemplateReference::SCOPE_FRONTEND);
$parameters = [
'definition' => $definition,
'model' => $model,
'elementId' => $elementId,
'style' => $style,
'javascript' => $javascript,
'mapId' => $mapId,
];
$content = $this->templateEngine->render($templateReference, $parameters);
$event = new GetJavascriptEvent($definition, $content);
$this->eventDispatcher->dispatch($event::NAME, $event);

View File

@@ -13,7 +13,6 @@
namespace Netzmacht\Contao\Leaflet\Mapper;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\LeafletPHP\Definition;
/**
@@ -157,9 +156,9 @@ abstract class AbstractMapper implements Mapper
Request $request = null,
$elementId = null
) {
return array(
$this->getElementId($model, $elementId)
);
return [
$this->getElementId($model, $elementId),
];
}
/**

View File

@@ -12,8 +12,6 @@
namespace Netzmacht\Contao\Leaflet\Mapper;
use Netzmacht\Contao\Leaflet\Request\Request;
/**
* Class AbstractTypeMapper is the base mapper for tables containing different types of definitins.
*

View File

@@ -14,7 +14,7 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Control;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Control\Attribution;
use Netzmacht\LeafletPHP\Definition\Map;
@@ -31,7 +31,7 @@ class AttributionControlMapper extends AbstractControlMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Control\Attribution';
protected static $definitionClass = Attribution::class;
/**
* Layer type.

View File

@@ -12,6 +12,8 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Control;
use Netzmacht\LeafletPHP\Plugins\FullScreen\FullScreenControl;
/**
* Class FullscreenControlMapper.
*
@@ -24,7 +26,7 @@ class FullscreenControlMapper extends AbstractControlMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Plugins\FullScreen\FullScreenControl';
protected static $definitionClass = FullScreenControl::class;
/**
* Layer type.

View File

@@ -14,8 +14,9 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Control;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\ControlModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\LeafletPHP\Definition\Control\Layers;
/**
* Class LayersControlMapper maps the control model to the layers control definition.
@@ -29,7 +30,7 @@ class LayersControlMapper extends AbstractControlMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Control\Layers';
protected static $definitionClass = Layers::class;
/**
* Layer type.
@@ -48,8 +49,8 @@ class LayersControlMapper extends AbstractControlMapper
$elementId = null
) {
$arguments = parent::buildConstructArguments($model, $mapper, $request, $elementId);
$arguments[1] = array();
$arguments[2] = array();
$arguments[1] = [];
$arguments[2] = [];
/** @var ControlModel $model */
$collection = $model->findActiveLayers();

View File

@@ -14,8 +14,9 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Control;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\ControlModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Control\Zoom;
use Netzmacht\LeafletPHP\Plugins\Loading\LoadingControl;
@@ -35,16 +36,35 @@ class LoadingControlMapper extends AbstractControlMapper
*/
protected static $type = 'loading';
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
protected function getClassName(Model $model, DefinitionMapper $mapper, Request $request = null)
{
if ($model->spinjs) {
return 'Netzmacht\LeafletPHP\Plugins\Loading\SpinJsLoadingControl';
return SpinJsLoadingControl::class;
}
return 'Netzmacht\LeafletPHP\Plugins\Loading\LoadingControl';
return LoadingControl::class;
}
/**
@@ -79,9 +99,10 @@ class LoadingControlMapper extends AbstractControlMapper
if ($definition instanceof LoadingControl && !$definition->isSeparate() && $model->zoomControl) {
// Only assign if zoom control is activated and part of the map.
$control = ControlModel::findOneBy(
array('active=1', 'type=?', 'pid=?', 'id=?'),
array('zoom', $model->pid, $model->zoomControl)
$repository = $this->repositoryManager->getRepository(ControlModel::class);
$control = $repository->findOneBy(
['active=1', 'type=?', 'pid=?', 'id=?'],
['zoom', $model->pid, $model->zoomControl]
);
if ($control) {

View File

@@ -12,6 +12,8 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Control;
use Netzmacht\LeafletPHP\Definition\Control\Scale;
/**
* Class ScaleControlMapper maps the database item of the type "scale" to the scale control.
*
@@ -24,7 +26,7 @@ class ScaleControlMapper extends AbstractControlMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Control\Scale';
protected static $definitionClass = Scale::class;
/**
* Layer type.

View File

@@ -12,6 +12,8 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Control;
use Netzmacht\LeafletPHP\Definition\Control\Zoom;
/**
* Class ZoomControlMapper maps the zoom database definition to the zoom control.
*
@@ -24,7 +26,7 @@ class ZoomControlMapper extends AbstractControlMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Control\Zoom';
protected static $definitionClass = Zoom::class;
/**
* Layer type.

View File

@@ -15,7 +15,6 @@ namespace Netzmacht\Contao\Leaflet\Mapper;
use Netzmacht\Contao\Leaflet\Event\BuildDefinitionEvent;
use Netzmacht\Contao\Leaflet\Event\ConvertToGeoJsonEvent;
use Netzmacht\Contao\Leaflet\Event\GetHashEvent;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Value\GeoJson\ConvertsToGeoJsonFeature;
use Netzmacht\LeafletPHP\Value\GeoJson\Feature;
@@ -35,7 +34,7 @@ class DefinitionMapper
*
* @var Mapper[][]
*/
private $mappers = array();
private $mappers = [];
/**
* The event dispatcher.
@@ -49,7 +48,7 @@ class DefinitionMapper
*
* @var array
*/
private $mapped = array();
private $mapped = [];
/**
* Construct.
@@ -85,7 +84,7 @@ class DefinitionMapper
*/
public function reset()
{
$this->mapped = array();
$this->mapped = [];
return $this;
}

View File

@@ -13,7 +13,6 @@
namespace Netzmacht\Contao\Leaflet\Mapper;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\LeafletPHP\Value\GeoJson\GeoJsonFeature;
/**

View File

@@ -0,0 +1,171 @@
<?php
/**
* Leaflet maps for Contao CMS.
*
* @package contao-leaflet-maps
* @author David Molineus <david.molineus@netzmacht.de>
* @copyright 2014-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\Mapper\Layer;
use Contao\FilesModel;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\JavascriptBuilder\Type\Expression;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Group\FeatureGroup;
use Netzmacht\LeafletPHP\Definition\Group\GeoJson;
use Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson as OmnivoreGeoJson;
use Netzmacht\LeafletPHP\Plugins\Omnivore\Gpx;
use Netzmacht\LeafletPHP\Plugins\Omnivore\Kml;
use Netzmacht\LeafletPHP\Plugins\Omnivore\OmnivoreLayer;
use Netzmacht\LeafletPHP\Plugins\Omnivore\TopoJson;
use Netzmacht\LeafletPHP\Plugins\Omnivore\Wkt;
/**
* Class FileLayerMapper.
*
* @package Netzmacht\Contao\Leaflet\Mapper\Layer
*/
class FileLayerMapper extends AbstractLayerMapper
{
/**
* The definition type.
*
* @var string
*/
protected static $type = 'file';
/**
* Class of the model being build.
*
* @var string
*/
protected static $definitionClass = FeatureGroup::class;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritDoc}
*/
public function handle(
$model,
DefinitionMapper $mapper,
Request $request = null,
$elementId = null,
Definition $parent = null
) {
$repository = $this->repositoryManager->getRepository(FilesModel::class);
$fileModel = $repository->findByPk($model->file);
$definition = $this->createInstance($model, $mapper, $request, $elementId, $fileModel);
$this->optionsBuilder->build($definition, $model);
$this->build($definition, $model, $mapper, $request, $parent);
return $definition;
}
/**
* {@inheritDoc}
*/
protected function createInstance(
Model $model,
DefinitionMapper $mapper,
Request $request = null,
$elementId = null,
FilesModel $fileModel = null
) {
$layerId = $this->getElementId($model, $elementId);
if ($fileModel instanceof FilesModel && $fileModel->type === 'file') {
switch ($model->fileFormat) {
case 'gpx':
$layer = new Gpx($layerId, $fileModel->path);
break;
case 'kml':
$layer = new Kml($layerId, $fileModel->path);
break;
case 'wkt':
$layer = new Wkt($layerId, $fileModel->path);
break;
case 'geojson':
$layer = new OmnivoreGeoJson($layerId, $fileModel->path);
break;
case 'topojson':
$layer = new TopoJson($layerId, $fileModel->path);
break;
default:
return parent::createInstance($model, $mapper, $request, $elementId);
}
$customId = $layerId . '_data';
$customLayer = new GeoJson($customId);
$layer->setCustomLayer($customLayer);
return $layer;
}
return parent::createInstance($model, $mapper, $request, $elementId);
}
/**
* {@inheritDoc}
*/
protected function build(
Definition $definition,
Model $model,
DefinitionMapper $mapper,
Request $request = null,
Definition $parent = null
) {
if (!$definition instanceof OmnivoreLayer) {
return;
}
$customLayer = $definition->getCustomLayer();
if ($customLayer instanceof GeoJson) {
if ($model->boundsMode) {
$customLayer->setOption('boundsMode', $model->boundsMode);
}
if ($model->pointToLayer) {
$customLayer->setPointToLayer(new Expression($model->pointToLayer));
}
if ($model->onEachFeature) {
$customLayer->setOnEachFeature(new Expression($model->onEachFeature));
}
}
}
}

View File

@@ -14,9 +14,11 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Group\FeatureGroup;
use Netzmacht\LeafletPHP\Definition\Group\LayerGroup;
use Netzmacht\LeafletPHP\Definition\Layer;
@@ -34,16 +36,35 @@ class GroupLayerMapper extends AbstractLayerMapper
*/
protected static $type = 'group';
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
protected function getClassName(Model $model, DefinitionMapper $mapper, Request $request = null)
{
if ($model->groupType === 'feature') {
return 'Netzmacht\LeafletPHP\Definition\Group\FeatureGroup';
return FeatureGroup::class;
}
return 'Netzmacht\LeafletPHP\Definition\Group\LayerGroup';
return LayerGroup::class;
}
/**
@@ -60,10 +81,11 @@ class GroupLayerMapper extends AbstractLayerMapper
return;
}
$collection = LayerModel::findBy(
array('pid=?', 'active=1'),
array($model->id),
array('order' => 'sorting')
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$collection = $repository->findBy(
['pid=?', 'active=1'],
[$model->id],
['order' => 'sorting']
);
if ($collection) {

View File

@@ -15,8 +15,9 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Encoder\ContaoAssets;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\JavascriptBuilder\Type\AnonymousFunction;
use Netzmacht\JavascriptBuilder\Type\Expression;
use Netzmacht\LeafletPHP\Definition;
@@ -36,7 +37,7 @@ class MarkerClusterLayerMapper extends AbstractLayerMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Plugins\MarkerCluster\MarkerClusterGroup';
protected static $definitionClass = MarkerClusterGroup::class;
/**
* Layer type.
@@ -53,15 +54,24 @@ class MarkerClusterLayerMapper extends AbstractLayerMapper
private $assets;
/**
* MarkerClusterLayerMapper constructor.
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param ContaoAssets $assets Assets manager.
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(ContaoAssets $assets)
public function __construct(ContaoAssets $assets, RepositoryManager $repositoryManager)
{
parent::__construct();
$this->repositoryManager = $repositoryManager;
$this->assets = $assets;
parent::__construct();
}
/**
@@ -107,10 +117,11 @@ class MarkerClusterLayerMapper extends AbstractLayerMapper
$this->assets->addStylesheet('assets/leaflet/libs/leaflet-markercluster/MarkerCluster.Default.css');
}
$collection = LayerModel::findBy(
array('pid=?', 'active=1'),
array($model->id),
array('order' => 'sorting')
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$collection = $repository->findBy(
['pid=?', 'active=1'],
[$model->id],
['order' => 'sorting']
);
if ($collection) {

View File

@@ -13,15 +13,17 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Frontend\RequestUrl;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\GeoJsonMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\MarkerModel;
use Netzmacht\Contao\Leaflet\Frontend\RequestUrl;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\JavascriptBuilder\Type\Expression;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
use Netzmacht\LeafletPHP\Definition\Group\GeoJson;
use Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson as OmnivoreGeoJson;
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
/**
* Class MarkersLayerMapper maps the layer model to the markers definition.
@@ -37,16 +39,35 @@ class MarkersLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
*/
protected static $type = 'markers';
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
protected function getClassName(Model $model, DefinitionMapper $mapper, Request $request = null)
{
if ($model->deferred) {
return 'Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson';
return OmnivoreGeoJson::class;
}
return 'Netzmacht\LeafletPHP\Definition\Group\GeoJson';
return GeoJson::class;
}
/**
@@ -70,18 +91,18 @@ class MarkersLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
$layer->setOption('boundsMode', $model->boundsMode);
}
return array(
return [
$this->getElementId($model, $elementId),
RequestUrl::create($model->id, null, null, $request),
array(),
$layer
);
[],
$layer,
];
}
return array(
return [
$this->getElementId($model, $elementId),
RequestUrl::create($model->id, null, null, $request)
);
RequestUrl::create($model->id, null, null, $request),
];
}
return parent::buildConstructArguments($model, $mapper, $request, $elementId);
@@ -153,10 +174,12 @@ class MarkersLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
*/
protected function loadMarkerModels(Model $model, Request $request = null)
{
$repository = $this->repositoryManager->getRepository(MarkerModel::class);
if ($model->boundsMode == 'fit') {
return MarkerModel::findByFilter($model->id, $request->getFilter());
return $repository->findByFilter($model->id, $request->getFilter());
}
return MarkerModel::findByFilter($model->id);
return $repository->findByFilter($model->id);
}
}

View File

@@ -15,8 +15,9 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Definition\Layer\OverpassLayer;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\IconModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\JavascriptBuilder\Type\Expression;
use Netzmacht\LeafletPHP\Definition;
@@ -41,6 +42,25 @@ class OverpassLayerMapper extends AbstractLayerMapper
*/
protected static $definitionClass = OverpassLayer::class;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
@@ -97,7 +117,8 @@ class OverpassLayerMapper extends AbstractLayerMapper
$amenityIconsMap = $this->filterAmenityIconsConfig($model->amenityIcons);
if ($amenityIconsMap) {
$collection = IconModel::findMultipleByIds(array_unique($amenityIconsMap));
$repository = $this->repositoryManager->getRepository(IconModel::class);
$collection = $repository->findMultipleByIds(array_unique($amenityIconsMap));
$icons = [];
if ($collection) {

View File

@@ -15,8 +15,9 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\OptionsBuilder;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Plugins\LeafletProviders\Provider;
/**
* Class ProviderLayerMapper maps the layer model to the tile provider definition.
@@ -60,7 +61,7 @@ class ProviderLayerMapper extends AbstractLayerMapper
return $this->providers[$model->tile_provider]['class'];
}
return 'Netzmacht\LeafletPHP\Plugins\LeafletProviders\Provider';
return Provider::class;
}
/**
@@ -91,10 +92,10 @@ class ProviderLayerMapper extends AbstractLayerMapper
Request $request = null,
$elementId = null
) {
return array(
return [
$model->alias ?: ('layer_' . $model->id),
$model->tile_provider,
$model->tile_provider_variant ?: null
);
$model->tile_provider_variant ?: null,
];
}
}

View File

@@ -13,8 +13,9 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Definition;
/**
@@ -31,6 +32,25 @@ class ReferenceLayerMapper extends AbstractLayerMapper
*/
protected static $type = 'reference';
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
@@ -41,7 +61,8 @@ class ReferenceLayerMapper extends AbstractLayerMapper
$elementId = null,
Definition $parent = null
) {
$reference = LayerModel::findByPk($model->reference);
$repository = $this->repositoryManager->getRepository(LayerModel::class);
$reference = $repository->findByPk($model->reference);
if (!$reference || !$reference->active) {
return null;

View File

@@ -15,7 +15,7 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
use Contao\Model;
use Contao\StringUtil;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Raster\TileLayer;
use Netzmacht\LeafletPHP\Value\LatLngBounds;
@@ -32,7 +32,7 @@ class TileLayerMapper extends AbstractLayerMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Raster\TileLayer';
protected static $definitionClass = TileLayer::class;
/**
* The layer type.

View File

@@ -14,15 +14,17 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
use Contao\Model;
use Contao\Model\Collection;
use Netzmacht\Contao\Leaflet\Frontend\RequestUrl;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\GeoJsonMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\VectorModel;
use Netzmacht\Contao\Leaflet\Frontend\RequestUrl;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\JavascriptBuilder\Type\Expression;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
use Netzmacht\LeafletPHP\Definition\Group\GeoJson;
use Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson as OmnivoreGeoJson;
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
/**
* Class VectorsLayerMapper maps the layer model for the Vectors layer definition.
@@ -38,16 +40,35 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
*/
protected static $type = 'vectors';
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
protected function getClassName(Model $model, DefinitionMapper $mapper, Request $request = null)
{
if ($model->deferred) {
return 'Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson';
return OmnivoreGeoJson::class;
}
return 'Netzmacht\LeafletPHP\Definition\Group\GeoJson';
return GeoJson::class;
}
/**
@@ -60,7 +81,7 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
$elementId = null
) {
if ($model->deferred) {
$options = array();
$options = [];
if ($model->pointToLayer) {
$options['pointToLayer'] = new Expression($model->pointToLayer);
@@ -78,18 +99,18 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
$layer = new GeoJson($this->getElementId($model, $elementId));
$layer->setOptions($options);
return array(
return [
$this->getElementId($model, $elementId),
RequestUrl::create($model->id, null, null, $request),
array(),
$layer
);
[],
$layer,
];
}
return array(
return [
$this->getElementId($model, $elementId),
RequestUrl::create($model->id, null, null, $request)
);
RequestUrl::create($model->id, null, null, $request),
];
}
return parent::buildConstructArguments($model, $mapper, $request, $elementId);
@@ -158,7 +179,9 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
*/
protected function loadVectorModels(Model $model)
{
return VectorModel::findActiveBy('pid', $model->id, ['order' => 'sorting']);
$repository = $this->repositoryManager->getRepository(VectorModel::class);
return $repository->findActiveBy(['pid=?'], [$model->id], ['order' => 'sorting']);
}
/**

View File

@@ -15,7 +15,7 @@ namespace Netzmacht\Contao\Leaflet\Mapper;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Model\ControlModel;
use Netzmacht\Contao\Leaflet\Model\MapModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Control;
use Netzmacht\LeafletPHP\Definition\Layer;
@@ -40,7 +40,26 @@ class MapMapper extends AbstractMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Map';
protected static $definitionClass = Map::class;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritdoc}
@@ -51,8 +70,8 @@ class MapMapper extends AbstractMapper
->addOptions('center', 'zoom', 'zoomControl')
->addOptions('dragging', 'touchZoom', 'scrollWheelZoom', 'doubleClickZoom', 'boxZoom', 'tap', 'keyboard')
->addOptions('trackResize', 'closeOnClick', 'bounceAtZoomLimits')
->addConditionalOptions('adjustZoomExtra', array('minZoom', 'maxZoom', 'zoomSnap', 'zoomDelta'))
->addConditionalOptions('keyboard', array('keyboardPanOffset', 'keyboardZoomOffset'));
->addConditionalOptions('adjustZoomExtra', ['minZoom', 'maxZoom', 'zoomSnap', 'zoomDelta'])
->addConditionalOptions('keyboard', ['keyboardPanOffset', 'keyboardZoomOffset']);
}
/**
@@ -83,10 +102,10 @@ class MapMapper extends AbstractMapper
Request $request = null,
$elementId = null
) {
return array(
return [
$this->getElementId($model, $elementId),
$this->getElementId($model, $elementId)
);
$this->getElementId($model, $elementId),
];
}
/**
@@ -122,7 +141,8 @@ class MapMapper extends AbstractMapper
*/
private function buildControls(Map $map, MapModel $model, DefinitionMapper $mapper, Request $request = null)
{
$collection = ControlModel::findActiveBy('pid', $model->id, array('order' => 'sorting'));
$repository = $this->repositoryManager->getRepository(ControlModel::class);
$collection = $repository->findActiveBy(['pid=?'], [$model->id], ['order' => 'sorting']);
if (!$collection) {
return;
@@ -208,13 +228,13 @@ class MapMapper extends AbstractMapper
private function buildLocate(Map $map, MapModel $model)
{
if ($model->locate) {
$options = array();
$options = [];
$mapping = array(
$mapping = [
'setView' => 'locateSetView',
'watch' => 'locateWatch',
'enableHighAccuracy' => 'enableHighAccuracy',
);
];
foreach ($mapping as $option => $property) {
if ($model->$property) {
@@ -222,11 +242,11 @@ class MapMapper extends AbstractMapper
}
}
$mapping = array(
$mapping = [
'maxZoom' => 'locateMaxZoom',
'timeout' => 'locateTimeout',
'maximumAge' => 'locateMaximumAge',
);
];
foreach ($mapping as $option => $property) {
if ($model->$property) {

View File

@@ -13,7 +13,6 @@
namespace Netzmacht\Contao\Leaflet\Mapper;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\LeafletPHP\Definition;
/**

View File

@@ -9,6 +9,7 @@
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
* @filesource
*/
namespace Netzmacht\Contao\Leaflet\Mapper;
use Contao\Model;
@@ -30,14 +31,14 @@ class OptionsBuilder
*
* @var array
*/
private $options = array();
private $options = [];
/**
* Conditional option mapping.
*
* @var array
*/
private $conditional = array();
private $conditional = [];
/**
* Add a option mapping.
@@ -253,7 +254,7 @@ class OptionsBuilder
*/
private static function getDefaultOption($option, $definition)
{
$keys = array('has', 'is', 'get');
$keys = ['has', 'is', 'get'];
$suffix = ucfirst($option);
foreach ($keys as $key) {

View File

@@ -12,7 +12,7 @@
declare(strict_types=1);
namespace Netzmacht\Contao\Leaflet\Request;
namespace Netzmacht\Contao\Leaflet\Mapper;
use Netzmacht\Contao\Leaflet\Filter\Filter;

View File

@@ -48,7 +48,7 @@ class FixedStyleMapper extends AbstractStyleMapper
->addConditionalOption('lineCap')
->addConditionalOption('lineJoin')
->addConditionalOption('dashArray')
->addConditionalOptions('fill', array('fillColor', 'fillOpacity'))
->addConditionalOptions('fill', ['fillColor', 'fillOpacity'])
->addOption('fill');
}
}

View File

@@ -14,7 +14,7 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Type;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Type\DivIcon;
@@ -30,7 +30,7 @@ class DivIconMapper extends AbstractIconMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Type\DivIcon';
protected static $definitionClass = DivIcon::class;
/**
* Layer type.

View File

@@ -14,9 +14,10 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Type;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Type\DivIcon;
use Netzmacht\LeafletPHP\Plugins\ExtraMarkers\ExtraMarkersIcon;
/**
* Class DivIconMapper maps the icon model to the div icon definition.
@@ -30,7 +31,7 @@ class ExtraMarkersIconMapper extends AbstractIconMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Plugins\ExtraMarkers\ExtraMarkersIcon';
protected static $definitionClass = ExtraMarkersIcon::class;
/**
* Layer type.

View File

@@ -12,10 +12,12 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Type;
use Contao\FilesModel;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\IconModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Type\ImageIcon;
@@ -31,7 +33,7 @@ class ImageIconMapper extends AbstractIconMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Type\ImageIcon';
protected static $definitionClass = ImageIcon::class;
/**
* Layer type.
@@ -40,6 +42,25 @@ class ImageIconMapper extends AbstractIconMapper
*/
protected static $type = 'image';
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
*/
public function __construct(RepositoryManager $repositoryManager)
{
$this->repositoryManager = $repositoryManager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
@@ -52,7 +73,8 @@ class ImageIconMapper extends AbstractIconMapper
$arguments = parent::buildConstructArguments($model, $mapper, $request, $elementId);
if ($model->iconImage) {
$file = \FilesModel::findByUuid($model->iconImage);
$repository = $this->repositoryManager->getRepository(FilesModel::class);
$file = $repository->findByUuid($model->iconImage);
if ($file) {
$arguments[] = $file->path;
@@ -88,21 +110,23 @@ class ImageIconMapper extends AbstractIconMapper
*/
private function addIcon(ImageIcon $definition, IconModel $model)
{
$repository = $this->repositoryManager->getRepository(FilesModel::class);
if ($model->iconImage) {
$file = \FilesModel::findByUuid($model->iconImage);
$file = $repository->findByUuid($model->iconImage);
if ($file) {
$definition->setIconUrl($file->path);
$file = new \File($file->path);
$definition->setIconSize(array($file->width, $file->height));
$definition->setIconSize([$file->width, $file->height]);
if (!$model->iconAnchor) {
$definition->setIconAnchor(array($file->width / 2, $file->height));
$definition->setIconAnchor([($file->width / 2), $file->height]);
}
if (!$model->popupAnchor) {
$definition->setPopupAnchor(array(0, 8 - $file->height));
$definition->setPopupAnchor([0, (8 - $file->height)]);
}
}
}
@@ -112,7 +136,7 @@ class ImageIconMapper extends AbstractIconMapper
}
if ($model->iconRetinaImage) {
$file = \FilesModel::findByUuid($model->iconRetinaImage);
$file = $repository->findByUuid($model->iconRetinaImage);
if ($file) {
$definition->setIconRetinaUrl($file->path);
@@ -130,17 +154,19 @@ class ImageIconMapper extends AbstractIconMapper
*/
private function addShadow(ImageIcon $definition, $model)
{
$repository = $this->repositoryManager->getRepository(FilesModel::class);
if ($model->shadowImage) {
$file = \FilesModel::findByUuid($model->shadowImage);
$file = $repository->findByUuid($model->shadowImage);
if ($file) {
$definition->setShadowUrl($file->path);
$file = new \File($file->path);
$definition->setShadowSize(array($file->width, $file->height));
$definition->setShadowSize([$file->width, $file->height]);
if (!$model->shadowAnchor) {
$definition->setShadowAnchor(array($file->width / 2, $file->height));
$definition->setShadowAnchor([($file->width / 2), $file->height]);
}
}
}
@@ -150,7 +176,7 @@ class ImageIconMapper extends AbstractIconMapper
}
if ($model->shadowRetinaImage) {
$file = \FilesModel::findByUuid($model->shadowRetinaImage);
$file = $repository->findByUuid($model->shadowRetinaImage);
if ($file) {
$definition->setShadowRetinaUrl($file->path);

View File

@@ -16,10 +16,11 @@ use Contao\Model;
use Netzmacht\Contao\Leaflet\Frontend\ValueFilter;
use Netzmacht\Contao\Leaflet\Mapper\AbstractMapper;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\IconModel;
use Netzmacht\Contao\Leaflet\Model\MarkerModel;
use Netzmacht\Contao\Leaflet\Model\PopupModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Type\ImageIcon;
use Netzmacht\LeafletPHP\Definition\UI\Marker;
@@ -53,16 +54,25 @@ class MarkerMapper extends AbstractMapper
*/
protected $valueFilter;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
* @param ValueFilter $valueFilter Frontend filter.
*/
public function __construct(ValueFilter $valueFilter)
public function __construct(RepositoryManager $repositoryManager, ValueFilter $valueFilter)
{
parent::__construct();
$this->repositoryManager = $repositoryManager;
$this->valueFilter = $valueFilter;
parent::__construct();
}
/**
@@ -75,7 +85,7 @@ class MarkerMapper extends AbstractMapper
$elementId = null
) {
$arguments = parent::buildConstructArguments($model, $mapper, $request, $elementId);
$arguments[] = array($model->latitude, $model->longitude, $model->altitude ?: null) ?: null;
$arguments[] = [$model->latitude, $model->longitude, $model->altitude ?: null] ?: null;
return $arguments;
}
@@ -108,7 +118,8 @@ class MarkerMapper extends AbstractMapper
$content = $this->valueFilter->filter($model->popupContent);
if ($model->popup) {
$popupModel = PopupModel::findActiveByPK($model->popup);
$popupRepository = $this->repositoryManager->getRepository(PopupModel::class);
$popupModel = $popupRepository->findActiveByPK($model->popup);
if ($popupModel) {
$popup = $mapper->handle($popupModel, $request, null, $definition);
@@ -123,10 +134,11 @@ class MarkerMapper extends AbstractMapper
}
if ($model->customIcon) {
$iconModel = IconModel::findBy(
array('id=?', 'active=1'),
array($model->icon),
array('return' => 'Model')
$iconRepository = $this->repositoryManager->getRepository(IconModel::class);
$iconModel = $iconRepository->findBy(
['id=?', 'active=1'],
[$model->icon],
['return' => 'Model']
);
if ($iconModel) {

View File

@@ -15,8 +15,8 @@ namespace Netzmacht\Contao\Leaflet\Mapper\UI;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\AbstractMapper;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\PopupModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\UI\Popup;

View File

@@ -17,10 +17,11 @@ use Netzmacht\Contao\Leaflet\Definition\Style;
use Netzmacht\Contao\Leaflet\Frontend\ValueFilter;
use Netzmacht\Contao\Leaflet\Mapper\AbstractTypeMapper;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\Contao\Leaflet\Model\PopupModel;
use Netzmacht\Contao\Leaflet\Model\StyleModel;
use Netzmacht\Contao\Leaflet\Model\VectorModel;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\HasPopup;
use Netzmacht\LeafletPHP\Definition\UI\Popup;
@@ -47,16 +48,25 @@ class AbstractVectorMapper extends AbstractTypeMapper
*/
protected $valueFilter;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* Construct.
*
* @param RepositoryManager $repositoryManager Repository manager.
* @param ValueFilter $valueFilter Frontend filter.
*/
public function __construct(ValueFilter $valueFilter)
public function __construct(RepositoryManager $repositoryManager, ValueFilter $valueFilter)
{
parent::__construct();
$this->repositoryManager = $repositoryManager;
$this->valueFilter = $valueFilter;
parent::__construct();
}
/**
@@ -72,7 +82,8 @@ class AbstractVectorMapper extends AbstractTypeMapper
parent::build($definition, $model, $mapper, $request);
if ($definition instanceof Path && $model->style) {
$styleModel = StyleModel::findActiveByPK($model->style);
$repository = $this->repositoryManager->getRepository(StyleModel::class);
$styleModel = $repository->findActiveByPK($model->style);
if ($styleModel) {
$style = $mapper->handle($styleModel);
@@ -107,7 +118,8 @@ class AbstractVectorMapper extends AbstractTypeMapper
$content = $this->valueFilter->filter($model->popupContent);
if ($model->popup) {
$popupModel = PopupModel::findActiveByPK($model->popup);
$repository = $this->repositoryManager->getRepository(PopupModel::class);
$popupModel = $repository->findActiveByPK($model->popup);
if ($popupModel) {
$popup = $mapper->handle($popupModel, $request, null, $definition);

View File

@@ -14,8 +14,9 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Vector\Circle;
use Netzmacht\LeafletPHP\Definition\Vector\CircleMarker;
use Netzmacht\LeafletPHP\Value\LatLng;
@@ -31,7 +32,7 @@ class CircleMapper extends AbstractVectorMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Vector\Circle';
protected static $definitionClass = Circle::class;
/**
* Layer type.

View File

@@ -12,6 +12,8 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
use Netzmacht\LeafletPHP\Definition\Vector\CircleMarker;
/**
* Class CircleMarkerMapper maps the database model to the circle marker definition.
*
@@ -24,7 +26,7 @@ class CircleMarkerMapper extends CircleMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Vector\CircleMarker';
protected static $definitionClass = CircleMarker::class;
/**
* Layer type.

View File

@@ -14,7 +14,7 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Vector\Polygon;
@@ -30,7 +30,7 @@ class MultiPolygonMapper extends MultiPolylineMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Vector\Polygon';
protected static $definitionClass = Polygon::class;
/**
* Layer type.

View File

@@ -14,7 +14,7 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Definition\Vector\Polyline;
use Netzmacht\LeafletPHP\Value\LatLng;
@@ -31,7 +31,7 @@ class MultiPolylineMapper extends AbstractVectorMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Vector\Polyline';
protected static $definitionClass = Polyline::class;
/**
* Layer type.

View File

@@ -12,6 +12,8 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
use Netzmacht\LeafletPHP\Definition\Vector\Polygon;
/**
* Class PolygonMapper maps the database model to the polygon definition.
*
@@ -24,7 +26,7 @@ class PolygonMapper extends PolylineMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Vector\Polygon';
protected static $definitionClass = Polygon::class;
/**
* Layer type.

View File

@@ -14,10 +14,10 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition;
use Netzmacht\LeafletPHP\Value\LatLng;
use Netzmacht\LeafletPHP\Definition\Vector\Polyline;
use Netzmacht\LeafletPHP\Value\LatLng;
/**
* Class PolylineMapper maps the database model to the polyline definition.
@@ -31,7 +31,7 @@ class PolylineMapper extends AbstractVectorMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Vector\Polyline';
protected static $definitionClass = Polyline::class;
/**
* Layer type.

View File

@@ -14,7 +14,8 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
use Contao\Model;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\Contao\Leaflet\Request\Request;
use Netzmacht\Contao\Leaflet\Mapper\Request;
use Netzmacht\LeafletPHP\Definition\Vector\Rectangle;
use Netzmacht\LeafletPHP\Value\LatLng;
use Netzmacht\LeafletPHP\Value\LatLngBounds;
@@ -30,7 +31,7 @@ class RectangleMapper extends AbstractVectorMapper
*
* @var string
*/
protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Vector\Rectangle';
protected static $definitionClass = Rectangle::class;
/**
* Layer type.

View File

@@ -29,7 +29,7 @@ abstract class AbstractActiveModel extends \Model
*
* @return \Model|null
*/
public static function findActiveByPK($modelId, $options = array())
public static function findActiveByPK($modelId, $options = [])
{
return static::findOneBy('active=1 AND id', $modelId, $options);
}
@@ -43,7 +43,7 @@ abstract class AbstractActiveModel extends \Model
*
* @return Collection|null
*/
public static function findActiveBy($column, $value, $options = array())
public static function findActiveBy($column, $value, $options = [])
{
if (is_array($column)) {
$column[] = 'active=1';
@@ -61,7 +61,7 @@ abstract class AbstractActiveModel extends \Model
*
* @return Collection|null
*/
public static function findActives($options = array())
public static function findActives($options = [])
{
return static::findBy('active', '1', $options);
}

View File

@@ -42,18 +42,18 @@ class LayerModel extends AbstractActiveModel
*
* @return Collection|null
*/
public static function findMultipleByTypes(array $types, $options = array())
public static function findMultipleByTypes(array $types, $options = [])
{
if (empty($types)) {
return null;
}
$options['column'] = array(
$options['column'] = [
sprintf(
'type IN (%s)',
substr(str_repeat('?,', count($types)), 0, -1)
)
);
),
];
$options['value'] = $types;
$options['return'] = 'Collection';

View File

@@ -41,7 +41,7 @@ class MarkerModel extends AbstractActiveModel
public static function findByFilter($pid, Filter $filter = null)
{
if (!$filter) {
return static::findActiveBy('pid', $pid, array('order' => 'sorting'));
return static::findActiveBy('pid', $pid, ['order' => 'sorting']);
}
switch ($filter->getName()) {
@@ -63,23 +63,23 @@ class MarkerModel extends AbstractActiveModel
*/
public static function findByBBoxFilter($pid, BboxFilter $filter)
{
$columns = array(
$columns = [
'active=1',
'pid=?',
'latitude > ? AND latitude < ?',
'longitude > ? AND longitude < ?'
);
'longitude > ? AND longitude < ?',
];
/** @var LatLngBounds $bounds */
$bounds = $filter->getValues()['bounds'];
$values = array(
$values = [
$pid,
$bounds->getSouthWest()->getLatitude(),
$bounds->getNorthEast()->getLatitude(),
$bounds->getSouthWest()->getLongitude(),
$bounds->getNorthEast()->getLongitude()
);
$bounds->getNorthEast()->getLongitude(),
];
return static::findBy($columns, $values, array('order' => 'sorting'));
return static::findBy($columns, $values, ['order' => 'sorting']);
}
}