forked from Snck3rs/contao-leaflet-maps
Compare commits
88 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60e285c673 | ||
|
|
49f3b7dbcd | ||
|
|
89d83ab8e0 | ||
|
|
141bb0f7b1 | ||
|
|
457bb612ef | ||
|
|
118bb9a829 | ||
|
|
e49c74c546 | ||
|
|
6054def7aa | ||
|
|
86026a473b | ||
|
|
90c4621918 | ||
|
|
e5263a6315 | ||
|
|
515a191a66 | ||
|
|
f2f7e87fd3 | ||
|
|
4198b2b6cd | ||
|
|
fbd1ef81b0 | ||
|
|
92a376a307 | ||
|
|
bf6a1f9db0 | ||
|
|
c523aed70d | ||
|
|
4795767a8b | ||
|
|
c0efdb058e | ||
|
|
a4547ffb17 | ||
|
|
a63c836535 | ||
|
|
711b06c6d3 | ||
|
|
70b7d0ab9c | ||
|
|
ea59841d6e | ||
|
|
64c332bc25 | ||
|
|
3db5aad6d3 | ||
|
|
cef9d7ff44 | ||
|
|
06dd3655c0 | ||
|
|
3b066dfeb7 | ||
|
|
697e8d2f5e | ||
|
|
a6c08ae8e5 | ||
|
|
bb8f9e42dc | ||
|
|
3be5da9176 | ||
|
|
55e4ed0702 | ||
|
|
d42e0e122f | ||
|
|
ac05d103f1 | ||
|
|
cc9990cf4d | ||
|
|
9643b2c196 | ||
|
|
4d55b012fd | ||
|
|
39a7207e23 | ||
|
|
c4feeb1b38 | ||
|
|
cb3e9bc8b4 | ||
|
|
6a88ed380b | ||
|
|
59e671f8ea | ||
|
|
b0df34b86e | ||
|
|
4ea2adbb85 | ||
|
|
dc5a0a081e | ||
|
|
79f6efd9f3 | ||
|
|
e7bede78b1 | ||
|
|
997e16891b | ||
|
|
d5407357d8 | ||
|
|
1ba19f63b1 | ||
|
|
878492c0b1 | ||
|
|
57ba63556a | ||
|
|
0e2b8dd3cd | ||
|
|
91d3786187 | ||
|
|
5e20b83503 | ||
|
|
ca103521aa | ||
|
|
f422459be2 | ||
|
|
c661abb626 | ||
|
|
83226cdd80 | ||
|
|
ed10175072 | ||
|
|
d2338332b4 | ||
|
|
7aa4f38902 | ||
|
|
cb03dcfa41 | ||
|
|
2108de32d9 | ||
|
|
314e2d21ee | ||
|
|
6faaa866ad | ||
|
|
b22563b38c | ||
|
|
a10e55a126 | ||
|
|
e27ac21902 | ||
|
|
0ba725ed38 | ||
|
|
7ec2ee0d96 | ||
|
|
9e54f12555 | ||
|
|
b323049f9d | ||
|
|
873de89d7c | ||
|
|
88927a3de8 | ||
|
|
8fdc7dab29 | ||
|
|
9a1b6dee01 | ||
|
|
9e0f11ec18 | ||
|
|
f60ed1b7be | ||
|
|
3d45f6b2eb | ||
|
|
e73a4d4bdf | ||
|
|
0322a87e94 | ||
|
|
f5e8701312 | ||
|
|
2d0221a90a | ||
|
|
9f0b34a53b |
11
.composer-require-checker.json
Normal file
11
.composer-require-checker.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"symbol-whitelist": [
|
||||||
|
"null", "true", "false",
|
||||||
|
"static", "self", "parent",
|
||||||
|
"array", "string", "int", "float", "bool", "iterable", "callable", "void", "object",
|
||||||
|
"array_insert",
|
||||||
|
"Contao\\ManagerPlugin\\Bundle\\BundlePluginInterface",
|
||||||
|
"Contao\\ManagerPlugin\\Bundle\\Config\\BundleConfig",
|
||||||
|
"Contao\\ManagerPlugin\\Bundle\\Parser\\ParserInterface"
|
||||||
|
]
|
||||||
|
}
|
||||||
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
github: [dmolineus]
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -25,4 +25,3 @@ build.properties
|
|||||||
|
|
||||||
# NPM
|
# NPM
|
||||||
node_modules
|
node_modules
|
||||||
package-lock.json
|
|
||||||
|
|||||||
23
.travis.yml
23
.travis.yml
@@ -1,19 +1,32 @@
|
|||||||
|
dist: xenial
|
||||||
|
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- ant-optional
|
||||||
|
|
||||||
language: php
|
language: php
|
||||||
|
|
||||||
php:
|
php:
|
||||||
- "7.0"
|
- "7.3"
|
||||||
- "7.1"
|
|
||||||
- "7.2"
|
- "7.2"
|
||||||
|
- "7.1"
|
||||||
|
- "7.4snapshot"
|
||||||
|
- "nightly"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
- CONTAO_VERSION=contao/core-bundle ~4.4.0
|
- CONTAO_VERSION=contao/core-bundle ~4.4.0
|
||||||
|
- CONTAO_VERSION=contao/core-bundle ~4.5.0
|
||||||
|
- CONTAO_VERSION=contao/core-bundle ~4.6.0
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
exclude:
|
exclude:
|
||||||
|
allow_failures:
|
||||||
|
- php: "nightly"
|
||||||
|
- php: "7.4snapshot"
|
||||||
|
|
||||||
sudo: false
|
before_script:
|
||||||
|
- echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
|
||||||
install:
|
|
||||||
- travis_retry composer self-update && composer --version
|
- travis_retry composer self-update && composer --version
|
||||||
- travis_retry composer require $CONTAO_VERSION --no-update
|
- travis_retry composer require $CONTAO_VERSION --no-update
|
||||||
- travis_retry composer update --prefer-dist --no-interaction
|
- travis_retry composer update --prefer-dist --no-interaction
|
||||||
|
|||||||
180
CHANGELOG.md
180
CHANGELOG.md
@@ -1,18 +1,153 @@
|
|||||||
|
|
||||||
Changelog
|
# Changelog
|
||||||
=========
|
|
||||||
|
|
||||||
3.0.0 (2018-01-05)
|
All notable changes to this project will be documented in this file.
|
||||||
------------------
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.0-beta1...3.0.0)
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Remove template debug placeholders, it breaks generated javascript ([#93](https://github.com/netzmacht/contao-leaflet-maps/issues/93))
|
||||||
|
- Generate absolute urls for file layers ([#92](https://github.com/netzmacht/contao-leaflet-maps/issues/92))
|
||||||
|
|
||||||
|
## [3.2.1] - 2020-09-02
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Do not append javascript to the body anymore as consent tools might interrupt rendering
|
||||||
|
|
||||||
|
## [3.2.0] - 2020-08-28
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Add support for consent tools based on `hofff/contao-consent-bridge`
|
||||||
|
|
||||||
|
## [3.1.7] - 2020-08-28
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Duplicate map layer relations ([#89](https://github.com/netzmacht/contao-leaflet-maps/issues/89))
|
||||||
|
|
||||||
|
## [3.1.6] - 2020-01-03
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Do not add options which value is `NULL`
|
||||||
|
- Fix button labels ([#83](https://github.com/netzmacht/contao-leaflet-maps/issues/83))
|
||||||
|
- Fix potential security issue of symfony/dependency-injection (https://github.com/advisories/GHSA-pgwj-prpq-jpc2)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Use relative path for backend icon ([#82](https://github.com/netzmacht/contao-leaflet-maps/issues/82))
|
||||||
|
|
||||||
|
|
||||||
|
## [3.1.5] - 2019-08-26
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Use twig directly instead of templating component to restore Contao 4.8
|
||||||
|
|
||||||
|
## [3.1.4] - 2019-02-13
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix ordering changes in layer control element aren't recognized ([#72](https://github.com/netzmacht/contao-leaflet-maps/issues/72))
|
||||||
|
- Fix markers with negative coordinates aren't displayed ([#74](https://github.com/netzmacht/contao-leaflet-maps/issues/74))
|
||||||
|
- Fix image icon with non existing image throws exception ([#75](https://github.com/netzmacht/contao-leaflet-maps/issues/75))
|
||||||
|
- Fix invalid alias then using multiple edit. Aliases aren't copied anymore. ([#71](https://github.com/netzmacht/contao-leaflet-maps/issues/71))
|
||||||
|
|
||||||
|
## [3.1.3] - 2019-01-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix broken api routes in Contao 4.6/Symfony 4 (#69)
|
||||||
|
- Fix broken about.html.twig template. Error block was missing
|
||||||
|
|
||||||
|
## 3.1.2 - 2018-12-18
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/netzmacht/contao-leaflet-maps/compare/3.1.1...3.1.2)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix broken MapBox integration: Access token is now required
|
||||||
|
- Fix broken OpenWeatherMap integration: Api key is now required
|
||||||
|
- Fix broken Thunderforest integration: Api key is now required
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Add missing OpenPtMap of leaflet-providers
|
||||||
|
- Add missing OpenRailwayMap of leaflet-providers
|
||||||
|
- Add missing OpenFireMap of leaflet-providers
|
||||||
|
- Add missing SafeCast of leaflet-providers
|
||||||
|
- Add missing map types `normalNightTransit`, `normalNightTransitMobile`, `reducedDay`, `reducedNight`,
|
||||||
|
`hybridDayTransit` and `hybridDayGrey` of HERE provider
|
||||||
|
- Add missing map types `Voyager`, `VoyagerNoLabels`, `VoyagerOnlyLabels` and `VoyagerLabelsUnder` of CartoDB provider
|
||||||
|
- Add missing Wikimedia of leaflet-providers
|
||||||
|
- Add missing GeoportailFrance of leaflet-providers
|
||||||
|
- Add missing OneMapSG of leaflet-providers
|
||||||
|
|
||||||
|
## [3.1.1] - 2018-12-07
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix missing marker cluster icon.
|
||||||
|
- Ignore markers without coordinates to prevent uncaught exception caused by invalid coordinates.
|
||||||
|
|
||||||
|
## 3.1.0 - 2018-11-01
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.4...3.1.0)
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Custom route to load map data.
|
||||||
|
- Add distance filter support for the marker layer (Bounds Mode "fit" has to be enabled).
|
||||||
|
- Add support for relative css units for map size definition (#59).
|
||||||
|
- Add hint that zoom level is probably required (#56).
|
||||||
|
|
||||||
|
### Deprecated
|
||||||
|
|
||||||
|
- Deprecate `Netzmacht\Contao\Leaflet\Frontend\RequestUrl`. Use router to generate request url for layer data.
|
||||||
|
- Deprecate `Netzmacht\Contao\Leaflet\Frontend\DataController`. Use introduced endpoint to get map data.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Require PHP 7.1.
|
||||||
|
- Rewritten about page using own route (#48).
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Pressing enter on backend geocode control doesn't submit form anymore.
|
||||||
|
- Fix broken marker cluster layer (#60).
|
||||||
|
|
||||||
|
|
||||||
|
## [3.0.4] - 2018-10-08
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix broken content element attributes (Missing class and custom id).
|
||||||
|
|
||||||
|
## [3.0.3] - 2018-09-18
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Make alias generator services public for Contao 4.6/Symfony 4.0 compatibility.
|
||||||
|
|
||||||
|
## [3.0.2] - 2018-08-23
|
||||||
|
|
||||||
|
- Run composer require checker and solve issues.
|
||||||
|
|
||||||
|
## [3.0.1] - 2018-06-20
|
||||||
|
|
||||||
|
- Fix broken dynamic bbox related data loading (#57)
|
||||||
|
|
||||||
|
## [3.0.0] - 2018-01-05
|
||||||
|
|
||||||
- Make hook/dca listener services public
|
- Make hook/dca listener services public
|
||||||
|
|
||||||
3.0.0-beta1 (2017-11-15)
|
## [3.0.0-beta1] - 2017-11-15
|
||||||
------------------------
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.0-alpha2...3.0.0-beta1)
|
|
||||||
|
|
||||||
Enhancements
|
Enhancements
|
||||||
|
|
||||||
@@ -23,15 +158,7 @@ Bugfixes
|
|||||||
- Broken service definitions
|
- Broken service definitions
|
||||||
- Broken file layer id
|
- Broken file layer id
|
||||||
|
|
||||||
3.0.0-alpha2
|
## [3.0.0-alpha2] - 2017-10-19
|
||||||
------------
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.0-alpha2...2.0.0-alpha3)
|
|
||||||
|
|
||||||
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
|
Implemented enhancements
|
||||||
|
|
||||||
@@ -40,3 +167,20 @@ Implemented enhancements
|
|||||||
- New file layer for gpx,kml,wkt,topojson,geojson files added
|
- New file layer for gpx,kml,wkt,topojson,geojson files added
|
||||||
- Bypass filesystem cache in debug mode
|
- Bypass filesystem cache in debug mode
|
||||||
- Changelog added
|
- Changelog added
|
||||||
|
|
||||||
|
[Unreleased]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.2.1...hotfix/3.2.2
|
||||||
|
[3.2.1]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.2.0...3.2.1
|
||||||
|
[3.2.0]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.1.7...3.2.0
|
||||||
|
[3.1.7]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.1.6...3.1.7
|
||||||
|
[3.1.6]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.1.5...3.1.6
|
||||||
|
[3.1.5]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.1.4...3.1.5
|
||||||
|
[3.1.4]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.1.3...3.1.4
|
||||||
|
[3.1.3]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.1.2...3.1.3
|
||||||
|
[3.1.1]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.1.0...3.1.1
|
||||||
|
[3.0.4]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.3...3.0.4
|
||||||
|
[3.0.3]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.2...3.0.3
|
||||||
|
[3.0.2]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.1...3.0.2
|
||||||
|
[3.0.1]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.0...3.0.1
|
||||||
|
[3.0.0]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.0-beta1...3.0.0
|
||||||
|
[3.0.0-beta1]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.0-alpha2...3.0.0-beta1
|
||||||
|
[3.0-0-alpha2]: https://github.com/netzmacht/contao-leaflet-maps/compare/3.0.0-alpha1...3.0.0-alpha2
|
||||||
|
|||||||
12
README.md
12
README.md
@@ -2,9 +2,9 @@ Leaflet integration into Contao CMS
|
|||||||
===================================
|
===================================
|
||||||
|
|
||||||
[](https://travis-ci.org/netzmacht/contao-leaflet-maps)
|
[](https://travis-ci.org/netzmacht/contao-leaflet-maps)
|
||||||
[](http://packagist.com/packages/netzmacht/contao-leaflet-maps)
|
[](http://packagist.org/packages/netzmacht/contao-leaflet-maps)
|
||||||
[](http://packagist.com/packages/netzmacht/contao-leaflet-maps)
|
[](http://packagist.org/packages/netzmacht/contao-leaflet-maps)
|
||||||
[](http://packagist.com/packages/netzmacht/contao-leaflet-maps)
|
[](http://packagist.org/packages/netzmacht/contao-leaflet-maps)
|
||||||
[](https://github.com/contao-community-alliance/coding-standard)
|
[](https://github.com/contao-community-alliance/coding-standard)
|
||||||
|
|
||||||
This extension provides a backend gui for integrating [Leaflet](http://leafletjs.com/) into the Contao CMS.
|
This extension provides a backend gui for integrating [Leaflet](http://leafletjs.com/) into the Contao CMS.
|
||||||
@@ -38,6 +38,12 @@ Features
|
|||||||
- Autoloading of required assets.
|
- Autoloading of required assets.
|
||||||
- [Layer for MetaModels](https://github.com/netzmacht/contao-leaflet-metamodels)
|
- [Layer for MetaModels](https://github.com/netzmacht/contao-leaflet-metamodels)
|
||||||
|
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
A basic [user documentation](http://leaflet-maps-for-contao.readthedocs.org/) written in German is available.
|
||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "netzmacht/contao-leaflet-maps",
|
"name": "netzmacht/contao-leaflet-maps",
|
||||||
|
"type": "contao-bundle",
|
||||||
"description": "Contao Leaflet maps integration",
|
"description": "Contao Leaflet maps integration",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"contao",
|
"contao",
|
||||||
"maps",
|
"maps",
|
||||||
"leaflet"
|
"leaflet"
|
||||||
],
|
],
|
||||||
"type": "contao-bundle",
|
"license": "LGPL-3.0-or-later",
|
||||||
"license": "LGPL-3.0+",
|
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "David Molineus",
|
"name": "David Molineus",
|
||||||
@@ -16,26 +16,53 @@
|
|||||||
"role": "Developer"
|
"role": "Developer"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"email": "mail@netzmacht.de",
|
|
||||||
"issues": "https://github.com/netzmacht/contao-leaflet-maps/issues",
|
|
||||||
"source": "https://github.com/netzmacht/contao-leaflet-maps"
|
|
||||||
},
|
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.0",
|
"php": ">=7.1",
|
||||||
|
"ext-json": "*",
|
||||||
|
"ext-pdo": "*",
|
||||||
|
"contao-community-alliance/meta-palettes": "^2.0 || ^1.11",
|
||||||
"contao/core-bundle": "~4.4",
|
"contao/core-bundle": "~4.4",
|
||||||
"netzmacht/contao-leaflet-libraries": "^1.0",
|
"doctrine/cache": "^1.0",
|
||||||
|
"doctrine/dbal": "^2.5",
|
||||||
|
"menatwork/contao-multicolumnwizard": "^3.3",
|
||||||
"netzmacht/contao-leaflet-geocode-widget": "^1.2",
|
"netzmacht/contao-leaflet-geocode-widget": "^1.2",
|
||||||
"netzmacht/php-javascript-builder": "^1.0",
|
"netzmacht/contao-leaflet-libraries": "^1.3.4",
|
||||||
"netzmacht/php-leaflet": "^1.0.2",
|
"netzmacht/contao-page-context": "~1.0",
|
||||||
"netzmacht/contao-toolkit": "~3.0",
|
"netzmacht/contao-toolkit": "~3.0",
|
||||||
"contao-community-alliance/meta-palettes": "^2.0 || ^1.5",
|
"netzmacht/php-javascript-builder": "^1.0",
|
||||||
"menatwork/contao-multicolumnwizard": "^3.2",
|
"netzmacht/php-leaflet": "^1.1.0",
|
||||||
"doctrine/cache": "^1.0"
|
"symfony/config": "~3.3 || ~4.0",
|
||||||
|
"symfony/dependency-injection": "^3.4.26 || ^4.1.12",
|
||||||
|
"symfony/event-dispatcher": "~3.3 || ~4.0",
|
||||||
|
"symfony/filesystem": "~3.3 || ~4.0",
|
||||||
|
"symfony/http-kernel": "~3.3 || ~4.0",
|
||||||
|
"symfony/twig-bundle": "~3.3 || ~4.0",
|
||||||
|
"symfony/translation": "~3.3 || ~4.0",
|
||||||
|
"twig/twig": "^1.3.35 || ^2.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpcq/all-tasks": "^1.2",
|
"contao/manager-plugin": "^2.1",
|
||||||
"contao/manager-plugin": "^2.1"
|
"hofff/contao-consent-bridge": "^1.0",
|
||||||
|
"phpcq/all-tasks": "^1.2"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"hofff/contao-consent-bridge": "<1.0 || >= 2.0"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.2.x-dev",
|
||||||
|
"dev-develop": "3.3.x-dev",
|
||||||
|
"dev-support/2.x": "2.0.x-dev"
|
||||||
|
},
|
||||||
|
"contao": {
|
||||||
|
"transifex": {
|
||||||
|
"project": "contao-leaflet-maps",
|
||||||
|
"prefix": "core-",
|
||||||
|
"languages_cto": "src/Bundle/Resources/contao/languages",
|
||||||
|
"languages_tx": ".tx"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contao-manager-plugin": "Netzmacht\\Contao\\Leaflet\\Bundle\\ContaoManager\\Plugin"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
@@ -47,20 +74,10 @@
|
|||||||
"vendor/phpcq/autoload-validation/hacks/contao-hack.php"
|
"vendor/phpcq/autoload-validation/hacks/contao-hack.php"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"extra": {
|
"support": {
|
||||||
"branch-alias": {
|
"email": "mail@netzmacht.de",
|
||||||
"dev-master": "3.0.x-dev",
|
"issues": "https://github.com/netzmacht/contao-leaflet-maps/issues",
|
||||||
"dev-develop": "3.1.x-dev",
|
"source": "https://github.com/netzmacht/contao-leaflet-maps",
|
||||||
"dev-support/2.x": "2.0.x-dev"
|
"docs": "http://leaflet-maps-for-contao.readthedocs.org/"
|
||||||
},
|
|
||||||
"contao-manager-plugin": "Netzmacht\\Contao\\Leaflet\\Bundle\\ContaoManager\\Plugin",
|
|
||||||
"contao": {
|
|
||||||
"transifex": {
|
|
||||||
"project": "contao-leaflet-maps",
|
|
||||||
"prefix": "core-",
|
|
||||||
"languages_cto": "src/Bundle/Resources/contao/languages",
|
|
||||||
"languages_tx": ".tx"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
39
gulpfile.js
39
gulpfile.js
@@ -1,28 +1,35 @@
|
|||||||
var gulp = require('gulp');
|
const { series, src, watch, dest, parallel, task} = require('gulp');
|
||||||
var del = require('del');
|
const del = require('promised-del');
|
||||||
var uglify = require('gulp-uglify');
|
const uglify = require('gulp-uglify');
|
||||||
var concat = require('gulp-concat');
|
const concat = require('gulp-concat');
|
||||||
|
|
||||||
var paths = {
|
var paths = {
|
||||||
minified: 'contao-leaflet.js',
|
minified: 'contao-leaflet.js',
|
||||||
scripts: ['js/*.js'],
|
scripts: ['js/vendor/*.js', 'js/*.js'],
|
||||||
dest: 'src/Bundle/Resources/public/js'
|
dest: 'src/Bundle/Resources/public/js'
|
||||||
};
|
};
|
||||||
|
|
||||||
gulp.task('clear', function() {
|
function clean () {
|
||||||
del([paths.dest + '/' + paths.minified]);
|
return del([paths.dest + '/' + paths.minified]);
|
||||||
});
|
}
|
||||||
|
|
||||||
gulp.task('scripts', ['clear'], function() {
|
function build () {
|
||||||
return gulp.src(paths.scripts)
|
return src(paths.scripts)
|
||||||
.pipe(concat(paths.minified))
|
.pipe(concat(paths.minified))
|
||||||
.pipe(uglify())
|
.pipe(uglify())
|
||||||
.pipe(gulp.dest(paths.dest));
|
.pipe(dest(paths.dest));
|
||||||
});
|
}
|
||||||
|
|
||||||
|
const buildTasks = series(clean, build);
|
||||||
|
|
||||||
gulp.task('default', ['scripts']);
|
function watchTask () {
|
||||||
|
watch(
|
||||||
|
paths.scripts,
|
||||||
|
buildTasks
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
gulp.task('watch', function() {
|
exports.clean = clean;
|
||||||
gulp.watch(paths.scripts, ['scripts']);
|
exports.watch = watchTask;
|
||||||
});
|
exports.build = buildTasks;
|
||||||
|
exports.default = buildTasks;
|
||||||
|
|||||||
48
js/Contao.js
48
js/Contao.js
@@ -138,7 +138,8 @@ L.Contao = L.Evented.extend({
|
|||||||
* @param customLayer optional custom layer.
|
* @param customLayer optional custom layer.
|
||||||
* @param map Pass a map object so that the data loading events are passed to the map.
|
* @param map Pass a map object so that the data loading events are passed to the map.
|
||||||
*/
|
*/
|
||||||
loadFile: function (url, type, options, customLayer, map) {
|
loadUrl: function (url, type, options, customLayer, map) {
|
||||||
|
url = this.applyFilterToUrl(url, map);
|
||||||
var layer = omnivore[type](url, options, customLayer);
|
var layer = omnivore[type](url, options, customLayer);
|
||||||
|
|
||||||
if (map) {
|
if (map) {
|
||||||
@@ -147,7 +148,7 @@ L.Contao = L.Evented.extend({
|
|||||||
|
|
||||||
// Add listener for map bounds changes.
|
// Add listener for map bounds changes.
|
||||||
if (map.options.dynamicLoad && layer.options.boundsMode == 'fit') {
|
if (map.options.dynamicLoad && layer.options.boundsMode == 'fit') {
|
||||||
layer.options.requestHash = hash;
|
layer.options.requestUrl = url;
|
||||||
map.on('moveend', layer.refreshData, layer);
|
map.on('moveend', layer.refreshData, layer);
|
||||||
|
|
||||||
map.on('layerremove', function(e) {
|
map.on('layerremove', function(e) {
|
||||||
@@ -172,6 +173,19 @@ L.Contao = L.Evented.extend({
|
|||||||
return layer;
|
return layer;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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) {
|
||||||
|
return this.loadUrl(url, type, options, customLayer, map);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Point to layer callback. Adds a geo json point to the layer.
|
* Point to layer callback. Adds a geo json point to the layer.
|
||||||
*
|
*
|
||||||
@@ -313,6 +327,36 @@ L.Contao = L.Evented.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply the filter to a request url.
|
||||||
|
*
|
||||||
|
* @param {string} url The request url.
|
||||||
|
* @param {L.Map} map The map.
|
||||||
|
*
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
applyFilterToUrl: function (url, map) {
|
||||||
|
var value, query, bounds;
|
||||||
|
|
||||||
|
if (!map || !map.options.dynamicLoad) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
url = new URL(url);
|
||||||
|
query = new URLSearchParams(url.search);
|
||||||
|
|
||||||
|
bounds = map.getBounds();
|
||||||
|
value = bounds.getSouth() + ',' + bounds.getWest();
|
||||||
|
value += ',' + bounds.getNorth() + ',' + bounds.getEast();
|
||||||
|
|
||||||
|
query.set('filter', 'bbox');
|
||||||
|
query.set('values', value);
|
||||||
|
|
||||||
|
url.search = query.toString();
|
||||||
|
|
||||||
|
return url.toString();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,6 @@ L.GeoJSON.include({
|
|||||||
});
|
});
|
||||||
|
|
||||||
// TODO: Allow other data formats.
|
// TODO: Allow other data formats.
|
||||||
omnivore.geojson(L.contao.createRequestUrl(this.options.requestHash, e.target), null, dataLayer);
|
omnivore.geojson(L.contao.applyFilterToUrl(this.options.requestUrl, e.target), null, dataLayer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
2841
package-lock.json
generated
Normal file
2841
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
11
package.json
11
package.json
@@ -4,10 +4,11 @@
|
|||||||
"description": "Leaflet maps for Contao",
|
"description": "Leaflet maps for Contao",
|
||||||
"main": "gulpfile.js",
|
"main": "gulpfile.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"del": "^3.0.0",
|
"gulp": "^4.0.2",
|
||||||
"gulp": "^3.9.1",
|
"gulp-cli": "^2.2.0",
|
||||||
"gulp-concat": "^2.6.0",
|
"gulp-concat": "^2.6.1",
|
||||||
"gulp-uglify": "^3.0.0"
|
"gulp-uglify": "^3.0.2",
|
||||||
|
"promised-del": "^1.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {},
|
"devDependencies": {},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -23,7 +24,7 @@
|
|||||||
"Maps"
|
"Maps"
|
||||||
],
|
],
|
||||||
"author": "netzmacht David Molineus",
|
"author": "netzmacht David Molineus",
|
||||||
"license": "LGPL-3.0",
|
"license": "LGPL-3.0-or-later",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/netzmacht/contao-leaflet-maps/issues"
|
"url": "https://github.com/netzmacht/contao-leaflet-maps/issues"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -5,35 +5,66 @@
|
|||||||
*
|
*
|
||||||
* @package contao-leaflet-maps
|
* @package contao-leaflet-maps
|
||||||
* @author David Molineus <david.molineus@netzmacht.de>
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
* @copyright 2014-2017 netzmacht David Molineus. All rights reserved.
|
* @copyright 2014-2019 netzmacht David Molineus. All rights reserved.
|
||||||
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
* @filesource
|
* @filesource
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Backend;
|
namespace Netzmacht\Contao\Leaflet\Backend\Action;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Twig\Environment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Credits backend module.
|
* Credits backend module.
|
||||||
*
|
*
|
||||||
* @package Netzmacht\Contao\Leaflet\Backend
|
* @package Netzmacht\Contao\Leaflet\Backend
|
||||||
*/
|
*/
|
||||||
class About
|
final class AboutAction
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Twig environment.
|
||||||
|
*
|
||||||
|
* @var Environment
|
||||||
|
*/
|
||||||
|
private $twig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Project directory.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $projectDir;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AboutAction constructor.
|
||||||
|
*
|
||||||
|
* @param Environment $twig Twig environment.
|
||||||
|
* @param string $projectDir Project directory.
|
||||||
|
*/
|
||||||
|
public function __construct(Environment $twig, string $projectDir)
|
||||||
|
{
|
||||||
|
$this->twig = $twig;
|
||||||
|
$this->projectDir = $projectDir;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate the backend view.
|
* Generate the backend view.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function generate()
|
public function __invoke(): Response
|
||||||
{
|
{
|
||||||
$template = new \BackendTemplate('be_leaflet_about');
|
$data = [
|
||||||
|
'headline' => 'Leaftlet maps integration for Contao CMS',
|
||||||
|
'libraries' => $this->getLibraries(),
|
||||||
|
];
|
||||||
|
|
||||||
$template->headline = 'Leaftlet maps integration for Contao CMS';
|
[$data['version'], $data['dependencies']] = $this->extractFromComposer();
|
||||||
$template->libraries = $this->getLibraries();
|
|
||||||
|
|
||||||
list($template->version, $template->dependencies) = $this->extractFromComposer();
|
return new Response(
|
||||||
|
$this->twig->render('@NetzmachtContaoLeaflet/backend/about.html.twig', $data)
|
||||||
return $template->parse();
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,7 +74,7 @@ class About
|
|||||||
*
|
*
|
||||||
* @SuppressWarnings(PHPMD.Superglobals)
|
* @SuppressWarnings(PHPMD.Superglobals)
|
||||||
*/
|
*/
|
||||||
private function getLibraries()
|
private function getLibraries(): array
|
||||||
{
|
{
|
||||||
return array_map(
|
return array_map(
|
||||||
function ($library) {
|
function ($library) {
|
||||||
@@ -57,9 +88,8 @@ class About
|
|||||||
|
|
||||||
if ($library['homepage']) {
|
if ($library['homepage']) {
|
||||||
$library['homepage'] = sprintf(
|
$library['homepage'] = sprintf(
|
||||||
'<a href="%s" %s>%s</a>',
|
'<a href="%s" target="_blank">%s</a>',
|
||||||
$library['homepage'],
|
$library['homepage'],
|
||||||
LINK_NEW_WINDOW,
|
|
||||||
preg_replace('#^(https?://(www)?)#i', '', $library['homepage'])
|
preg_replace('#^(https?://(www)?)#i', '', $library['homepage'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -69,7 +99,7 @@ class About
|
|||||||
array_filter(
|
array_filter(
|
||||||
$GLOBALS['LEAFLET_LIBRARIES'],
|
$GLOBALS['LEAFLET_LIBRARIES'],
|
||||||
function ($library) {
|
function ($library) {
|
||||||
return isset($library['name']) && isset($library['license']);
|
return isset($library['name'], $library['license']);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@@ -80,10 +110,10 @@ class About
|
|||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function extractFromComposer()
|
private function extractFromComposer(): array
|
||||||
{
|
{
|
||||||
$extFile = TL_ROOT . '/vendor/netzmacht/contao-leaflet-maps/composer.json';
|
$extFile = $this->projectDir . '/vendor/netzmacht/contao-leaflet-maps/composer.json';
|
||||||
$lockFile = TL_ROOT . '/composer.lock';
|
$lockFile = $this->projectDir . '/composer.lock';
|
||||||
|
|
||||||
if (!file_exists($extFile) || !file_exists($lockFile)) {
|
if (!file_exists($extFile) || !file_exists($lockFile)) {
|
||||||
return [];
|
return [];
|
||||||
37
src/Bundle/ConsentBridge/Plugin.php
Normal file
37
src/Bundle/ConsentBridge/Plugin.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?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\Bundle\ConsentBridge;
|
||||||
|
|
||||||
|
use Hofff\Contao\Consent\Bridge\Bridge;
|
||||||
|
use Hofff\Contao\Consent\Bridge\Plugin as ConsentBridgePlugin;
|
||||||
|
use Hofff\Contao\Consent\Bridge\Render\RenderInformation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Consent Bridge plugin for leaflet.
|
||||||
|
*/
|
||||||
|
final class Plugin implements ConsentBridgePlugin
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function load(Bridge $bridge): void
|
||||||
|
{
|
||||||
|
$renderInformation = RenderInformation::autoRenderWithPlaceholder('leaflet_consent_bridge_placeholder');
|
||||||
|
|
||||||
|
$bridge
|
||||||
|
->supportContentElement('leaflet', $renderInformation)
|
||||||
|
->supportFrontendModule('leaflet', $renderInformation);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,15 +18,20 @@ use Contao\CoreBundle\ContaoCoreBundle;
|
|||||||
use Contao\ManagerPlugin\Bundle\BundlePluginInterface;
|
use Contao\ManagerPlugin\Bundle\BundlePluginInterface;
|
||||||
use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
|
use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
|
||||||
use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
|
use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
|
||||||
|
use Contao\ManagerPlugin\Routing\RoutingPluginInterface;
|
||||||
use Netzmacht\Contao\Leaflet\Bundle\NetzmachtContaoLeafletBundle;
|
use Netzmacht\Contao\Leaflet\Bundle\NetzmachtContaoLeafletBundle;
|
||||||
|
use Netzmacht\Contao\PageContext\NetzmachtContaoPageContextBundle;
|
||||||
use Netzmacht\Contao\Toolkit\Bundle\NetzmachtContaoToolkitBundle;
|
use Netzmacht\Contao\Toolkit\Bundle\NetzmachtContaoToolkitBundle;
|
||||||
|
use Symfony\Component\Config\Loader\LoaderResolverInterface;
|
||||||
|
use Symfony\Component\HttpKernel\KernelInterface;
|
||||||
|
use Symfony\Component\Routing\RouteCollection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contao manager plugin.
|
* Contao manager plugin.
|
||||||
*
|
*
|
||||||
* @package Netzmacht\Contao\Leaflet\ContaoManager
|
* @package Netzmacht\Contao\Leaflet\ContaoManager
|
||||||
*/
|
*/
|
||||||
class Plugin implements BundlePluginInterface
|
class Plugin implements BundlePluginInterface, RoutingPluginInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
@@ -35,8 +40,27 @@ class Plugin implements BundlePluginInterface
|
|||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
BundleConfig::create(NetzmachtContaoLeafletBundle::class)
|
BundleConfig::create(NetzmachtContaoLeafletBundle::class)
|
||||||
->setLoadAfter([ContaoCoreBundle::class, NetzmachtContaoToolkitBundle::class])
|
->setLoadAfter(
|
||||||
|
[
|
||||||
|
ContaoCoreBundle::class,
|
||||||
|
NetzmachtContaoToolkitBundle::class,
|
||||||
|
NetzmachtContaoPageContextBundle::class
|
||||||
|
]
|
||||||
|
)
|
||||||
->setReplace(['leaflet']),
|
->setReplace(['leaflet']),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getRouteCollection(LoaderResolverInterface $resolver, KernelInterface $kernel): ?RouteCollection
|
||||||
|
{
|
||||||
|
$loader = $resolver->resolve(__DIR__ . '/../Resources/config/routing.yml');
|
||||||
|
if (!$loader) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $loader->load(__DIR__ . '/../Resources/config/routing.yml');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ parameters:
|
|||||||
|
|
||||||
markercluster:
|
markercluster:
|
||||||
children: true
|
children: true
|
||||||
icon: 'bundles/netzmachtcontaoleaflet/img/markercluster.png'
|
icon: 'bundles/netzmachtcontaoleaflet/img/cluster.png'
|
||||||
|
|
||||||
tile:
|
tile:
|
||||||
children: false
|
children: false
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ services:
|
|||||||
- '@netzmacht.contao_toolkit.dca.manager'
|
- '@netzmacht.contao_toolkit.dca.manager'
|
||||||
- '@database_connection'
|
- '@database_connection'
|
||||||
- '@netzmacht.contao_toolkit.repository_manager'
|
- '@netzmacht.contao_toolkit.repository_manager'
|
||||||
|
- '@translator'
|
||||||
|
- '@session'
|
||||||
|
|
||||||
netzmacht.contao_leaflet.listeners.dca.control:
|
netzmacht.contao_leaflet.listeners.dca.control:
|
||||||
class: Netzmacht\Contao\Leaflet\Listener\Dca\ControlDcaListener
|
class: Netzmacht\Contao\Leaflet\Listener\Dca\ControlDcaListener
|
||||||
@@ -113,3 +115,13 @@ services:
|
|||||||
- '@netzmacht.contao_leaflet.definition.builder'
|
- '@netzmacht.contao_leaflet.definition.builder'
|
||||||
tags:
|
tags:
|
||||||
- { name: 'contao.hook', hook: 'initializeSystem', method: 'onInitializeSystem' }
|
- { name: 'contao.hook', hook: 'initializeSystem', method: 'onInitializeSystem' }
|
||||||
|
|
||||||
|
netzmacht.contao_leaflet.listeners.backend_menu:
|
||||||
|
class: Netzmacht\Contao\Leaflet\Listener\Backend\UserNavigationListener
|
||||||
|
arguments:
|
||||||
|
- '@request_stack'
|
||||||
|
- '@router'
|
||||||
|
- '@translator'
|
||||||
|
- '@netzmacht.contao_toolkit.assets_manager'
|
||||||
|
tags:
|
||||||
|
- { name: 'contao.hook', hook: 'getUserNavigation', method: '__invoke'}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ services:
|
|||||||
class: Netzmacht\Contao\Leaflet\Mapper\Layer\MarkersLayerMapper
|
class: Netzmacht\Contao\Leaflet\Mapper\Layer\MarkersLayerMapper
|
||||||
arguments:
|
arguments:
|
||||||
- '@netzmacht.contao_toolkit.repository_manager'
|
- '@netzmacht.contao_toolkit.repository_manager'
|
||||||
|
- '@router'
|
||||||
tags:
|
tags:
|
||||||
- { name: netzmacht.contao_leaflet.mapper }
|
- { name: netzmacht.contao_leaflet.mapper }
|
||||||
|
|
||||||
@@ -46,6 +47,7 @@ services:
|
|||||||
class: Netzmacht\Contao\Leaflet\Mapper\Layer\VectorsLayerMapper
|
class: Netzmacht\Contao\Leaflet\Mapper\Layer\VectorsLayerMapper
|
||||||
arguments:
|
arguments:
|
||||||
- '@netzmacht.contao_toolkit.repository_manager'
|
- '@netzmacht.contao_toolkit.repository_manager'
|
||||||
|
- '@router'
|
||||||
tags:
|
tags:
|
||||||
- { name: netzmacht.contao_leaflet.mapper }
|
- { name: netzmacht.contao_leaflet.mapper }
|
||||||
|
|
||||||
@@ -69,12 +71,13 @@ services:
|
|||||||
- '@netzmacht.contao_leaflet.map.assets'
|
- '@netzmacht.contao_leaflet.map.assets'
|
||||||
- '@netzmacht.contao_toolkit.repository_manager'
|
- '@netzmacht.contao_toolkit.repository_manager'
|
||||||
tags:
|
tags:
|
||||||
- { name: netzmacht.contao_leflet_maps.mapper }
|
- { name: netzmacht.contao_leaflet.mapper }
|
||||||
|
|
||||||
netzmacht.contao_leaflet.mapper.file_layer:
|
netzmacht.contao_leaflet.mapper.file_layer:
|
||||||
class: Netzmacht\Contao\Leaflet\Mapper\Layer\FileLayerMapper
|
class: Netzmacht\Contao\Leaflet\Mapper\Layer\FileLayerMapper
|
||||||
arguments:
|
arguments:
|
||||||
- '@netzmacht.contao_toolkit.repository_manager'
|
- '@netzmacht.contao_toolkit.repository_manager'
|
||||||
|
- '@netzmacht.contao_toolkit.contao.environment_adapter'
|
||||||
tags:
|
tags:
|
||||||
- { name: netzmacht.contao_leaflet.mapper }
|
- { name: netzmacht.contao_leaflet.mapper }
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
parameters:
|
parameters:
|
||||||
netzmacht.contao_leaflet.providers:
|
netzmacht.contao_leaflet.providers:
|
||||||
OpenStreetMap:
|
OpenStreetMap:
|
||||||
variants: ['Mapnik', 'BlackAndWhite', 'DE', 'France', 'HOT', 'BZH']
|
variants: ['Mapnik', 'BlackAndWhite', 'DE', 'CH', 'France', 'HOT', 'BZH']
|
||||||
|
|
||||||
OpenSeaMap: []
|
OpenSeaMap: []
|
||||||
|
|
||||||
OpenTopoMap: []
|
OpenTopoMap: []
|
||||||
|
|
||||||
|
OpenPtMap: []
|
||||||
|
|
||||||
|
OpenRailwayMap: []
|
||||||
|
|
||||||
|
OpenFireMap: []
|
||||||
|
|
||||||
|
SafeCast: []
|
||||||
|
|
||||||
Thunderforest:
|
Thunderforest:
|
||||||
|
class: 'Netzmacht\LeafletPHP\Plugins\LeafletProviders\ThunderforestProvider'
|
||||||
variants:
|
variants:
|
||||||
- 'OpenCycleMap'
|
- 'OpenCycleMap'
|
||||||
- 'Transport'
|
- 'Transport'
|
||||||
@@ -16,6 +25,9 @@ parameters:
|
|||||||
- 'Landscape'
|
- 'Landscape'
|
||||||
- 'Outdoors'
|
- 'Outdoors'
|
||||||
- 'Pioneer'
|
- 'Pioneer'
|
||||||
|
options:
|
||||||
|
apiKey: 'tile_provider_key'
|
||||||
|
fields: ['tile_provider_key']
|
||||||
|
|
||||||
OpenMapSurfer:
|
OpenMapSurfer:
|
||||||
variants: ['Roads', 'AdminBounds', 'Grayscale']
|
variants: ['Roads', 'AdminBounds', 'Grayscale']
|
||||||
@@ -26,7 +38,8 @@ parameters:
|
|||||||
MapBox:
|
MapBox:
|
||||||
class: 'Netzmacht\LeafletPHP\Plugins\LeafletProviders\MapBoxProvider'
|
class: 'Netzmacht\LeafletPHP\Plugins\LeafletProviders\MapBoxProvider'
|
||||||
options:
|
options:
|
||||||
key: 'tile_provider_key'
|
accessToken: 'tile_provider_key'
|
||||||
|
fields: ['tile_provider_key']
|
||||||
|
|
||||||
Stamen:
|
Stamen:
|
||||||
variants:
|
variants:
|
||||||
@@ -56,6 +69,7 @@ parameters:
|
|||||||
- 'WorldGrayCanvas'
|
- 'WorldGrayCanvas'
|
||||||
|
|
||||||
OpenWeatherMap:
|
OpenWeatherMap:
|
||||||
|
class: 'Netzmacht\LeafletPHP\Plugins\LeafletProviders\OpenWeatherMapProvider'
|
||||||
variants:
|
variants:
|
||||||
- 'Clouds'
|
- 'Clouds'
|
||||||
- 'CloudsClassic'
|
- 'CloudsClassic'
|
||||||
@@ -68,6 +82,9 @@ parameters:
|
|||||||
- 'Wind'
|
- 'Wind'
|
||||||
- 'Temperature'
|
- 'Temperature'
|
||||||
- 'Snow'
|
- 'Snow'
|
||||||
|
options:
|
||||||
|
apiKey: 'tile_provider_key'
|
||||||
|
fields: ['tile_provider_key']
|
||||||
|
|
||||||
HERE:
|
HERE:
|
||||||
class: 'Netzmacht\LeafletPHP\Plugins\LeafletProviders\HereProvider'
|
class: 'Netzmacht\LeafletPHP\Plugins\LeafletProviders\HereProvider'
|
||||||
@@ -83,12 +100,18 @@ parameters:
|
|||||||
- 'normalNightMobile'
|
- 'normalNightMobile'
|
||||||
- 'normalNightGrey'
|
- 'normalNightGrey'
|
||||||
- 'normalNightGreyMobile'
|
- 'normalNightGreyMobile'
|
||||||
|
- 'normalNightTransit'
|
||||||
|
- 'normalNightTransitMobile'
|
||||||
|
- 'reducedDay'
|
||||||
|
- 'reducedNight'
|
||||||
- 'basicMap'
|
- 'basicMap'
|
||||||
- 'mapLabels'
|
- 'mapLabels'
|
||||||
- 'trafficFlow'
|
- 'trafficFlow'
|
||||||
- 'carnavDayGrey'
|
- 'carnavDayGrey'
|
||||||
- 'hybridDay'
|
- 'hybridDay'
|
||||||
- 'hybridDayMobile'
|
- 'hybridDayMobile'
|
||||||
|
- 'hybridDayTransit'
|
||||||
|
- 'hybridDayGrey'
|
||||||
- 'pedestrianDay'
|
- 'pedestrianDay'
|
||||||
- 'pedestrianNight'
|
- 'pedestrianNight'
|
||||||
- 'satelliteDay'
|
- 'satelliteDay'
|
||||||
@@ -123,6 +146,10 @@ parameters:
|
|||||||
- 'DarkMatter'
|
- 'DarkMatter'
|
||||||
- 'DarkMatterNoLabels'
|
- 'DarkMatterNoLabels'
|
||||||
- 'DarkMatterOnlyLabels'
|
- 'DarkMatterOnlyLabels'
|
||||||
|
- 'Voyager'
|
||||||
|
- 'VoyagerNoLabels'
|
||||||
|
- 'VoyagerOnlyLabels'
|
||||||
|
- 'VoyagerLabelsUnder'
|
||||||
|
|
||||||
HikeBike:
|
HikeBike:
|
||||||
variants:
|
variants:
|
||||||
@@ -155,3 +182,20 @@ parameters:
|
|||||||
- 'ModisTerraChlorophyll'
|
- 'ModisTerraChlorophyll'
|
||||||
|
|
||||||
NLS: []
|
NLS: []
|
||||||
|
|
||||||
|
Wikimedia: []
|
||||||
|
|
||||||
|
GeoportailFrance:
|
||||||
|
variants:
|
||||||
|
- 'parcels'
|
||||||
|
- 'ignMaps'
|
||||||
|
- 'maps'
|
||||||
|
- 'orthos'
|
||||||
|
|
||||||
|
OneMapSG:
|
||||||
|
variants:
|
||||||
|
- 'Default'
|
||||||
|
- 'Night'
|
||||||
|
- 'Original'
|
||||||
|
- 'Grey'
|
||||||
|
- 'LandLot'
|
||||||
|
|||||||
18
src/Bundle/Resources/config/routing.yml
Normal file
18
src/Bundle/Resources/config/routing.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
leaflet_layer:
|
||||||
|
path: /leaflet/api/layer/{layerId}
|
||||||
|
controller: Netzmacht\Contao\Leaflet\Frontend\Action\LayerDataAction
|
||||||
|
defaults:
|
||||||
|
_leaflet_scope: page
|
||||||
|
_format: geojson
|
||||||
|
_scope: frontend
|
||||||
|
requirements:
|
||||||
|
_format: geojson
|
||||||
|
context: \w+
|
||||||
|
contextId: \d+
|
||||||
|
|
||||||
|
leaflet_backend_about:
|
||||||
|
path: /contao/leaflet/about
|
||||||
|
controller: Netzmacht\Contao\Leaflet\Backend\Action\AboutAction
|
||||||
|
defaults:
|
||||||
|
_scope: backend
|
||||||
|
_backend_module: leaflet_about
|
||||||
@@ -74,11 +74,13 @@ services:
|
|||||||
|
|
||||||
netzmacht.contao_leaflet.definition.alias_generator.factory_default:
|
netzmacht.contao_leaflet.definition.alias_generator.factory_default:
|
||||||
class: Netzmacht\Contao\Leaflet\Alias\DefaultAliasGeneratorFactory
|
class: Netzmacht\Contao\Leaflet\Alias\DefaultAliasGeneratorFactory
|
||||||
|
public: true
|
||||||
arguments:
|
arguments:
|
||||||
- '@database_connection'
|
- '@database_connection'
|
||||||
|
|
||||||
netzmacht.contao_leaflet.definition.alias_generator.factory_parent:
|
netzmacht.contao_leaflet.definition.alias_generator.factory_parent:
|
||||||
class: Netzmacht\Contao\Leaflet\Alias\ParentAliasGeneratorFactory
|
class: Netzmacht\Contao\Leaflet\Alias\ParentAliasGeneratorFactory
|
||||||
|
public: true
|
||||||
arguments:
|
arguments:
|
||||||
- '@database_connection'
|
- '@database_connection'
|
||||||
|
|
||||||
@@ -120,3 +122,23 @@ services:
|
|||||||
arguments:
|
arguments:
|
||||||
- '@netzmacht.contao_leaflet.filter_factory'
|
- '@netzmacht.contao_leaflet.filter_factory'
|
||||||
- '%kernel.debug%'
|
- '%kernel.debug%'
|
||||||
|
|
||||||
|
Netzmacht\Contao\Leaflet\Frontend\PageIdDeterminator:
|
||||||
|
tags:
|
||||||
|
- { name: Netzmacht\Contao\PageContext\Request\PageIdDeterminator }
|
||||||
|
|
||||||
|
Netzmacht\Contao\Leaflet\Frontend\Action\LayerDataAction:
|
||||||
|
public: true
|
||||||
|
arguments:
|
||||||
|
- '@netzmacht.contao_leaflet.map.provider'
|
||||||
|
- '@netzmacht.contao_leaflet.filter_factory'
|
||||||
|
|
||||||
|
Netzmacht\Contao\Leaflet\Backend\Action\AboutAction:
|
||||||
|
public: true
|
||||||
|
arguments:
|
||||||
|
- '@twig'
|
||||||
|
- '%kernel.project_dir%'
|
||||||
|
|
||||||
|
Netzmacht\Contao\Leaflet\Bundle\ConsentBridge\Plugin:
|
||||||
|
tags:
|
||||||
|
- { name: hofff_contao_consent_bridge.plugin }
|
||||||
@@ -40,16 +40,11 @@ array_insert(
|
|||||||
'stylesheet' => 'bundles/netzmachtcontaoleaflet/css/backend.css',
|
'stylesheet' => 'bundles/netzmachtcontaoleaflet/css/backend.css',
|
||||||
'javascript' => 'bundles/netzmachtcontaoleaflet/js/backend.js',
|
'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') {
|
if (defined('TL_MODE') && TL_MODE === 'BE') {
|
||||||
$GLOBALS['TL_CSS'][] = 'bundles/netzmachtcontaoleaflet/css/backend_global.css';
|
$GLOBALS['TL_CSS'][] = 'bundles/netzmachtcontaoleaflet/css/backend_global.css';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* @package contao-leaflet-maps
|
* @package contao-leaflet-maps
|
||||||
* @author David Molineus <david.molineus@netzmacht.de>
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @author Fritz Michael Gschwantner <fmg@inspiredminds.at>
|
||||||
* @copyright 2014-2017 netzmacht David Molineus. All rights reserved.
|
* @copyright 2014-2017 netzmacht David Molineus. All rights reserved.
|
||||||
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
* @filesource
|
* @filesource
|
||||||
@@ -13,7 +14,7 @@
|
|||||||
$GLOBALS['TL_DCA']['tl_content']['metapalettes']['leaflet'] = [
|
$GLOBALS['TL_DCA']['tl_content']['metapalettes']['leaflet'] = [
|
||||||
'type' => ['type', 'headline'],
|
'type' => ['type', 'headline'],
|
||||||
'leaflet' => ['leaflet_map', 'leaflet_mapId', 'leaflet_width', 'leaflet_height'],
|
'leaflet' => ['leaflet_map', 'leaflet_mapId', 'leaflet_width', 'leaflet_height'],
|
||||||
'templates' => [':hide', 'customTpl', 'leaflet_template'],
|
'template' => [':hide', 'customTpl', 'leaflet_template'],
|
||||||
'protected' => [':hide', 'protected'],
|
'protected' => [':hide', 'protected'],
|
||||||
'expert' => [':hide', 'guests', 'cssID', 'space'],
|
'expert' => [':hide', 'guests', 'cssID', 'space'],
|
||||||
'invisible' => [':hide', 'invisible', 'start', 'start'],
|
'invisible' => [':hide', 'invisible', 'start', 'start'],
|
||||||
@@ -49,7 +50,7 @@ $GLOBALS['TL_DCA']['tl_content']['fields']['leaflet_mapId'] = [
|
|||||||
$GLOBALS['TL_DCA']['tl_content']['fields']['leaflet_width'] = [
|
$GLOBALS['TL_DCA']['tl_content']['fields']['leaflet_width'] = [
|
||||||
'label' => &$GLOBALS['TL_LANG']['tl_content']['leaflet_width'],
|
'label' => &$GLOBALS['TL_LANG']['tl_content']['leaflet_width'],
|
||||||
'inputType' => 'inputUnit',
|
'inputType' => 'inputUnit',
|
||||||
'options' => ['px', '%', 'em', 'pt', 'pc', 'in', 'cm', 'mm'],
|
'options' => $GLOBALS['TL_CSS_UNITS'],
|
||||||
'search' => false,
|
'search' => false,
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'eval' => ['rgxp' => 'digit', 'tl_class' => 'clr w50'],
|
'eval' => ['rgxp' => 'digit', 'tl_class' => 'clr w50'],
|
||||||
@@ -60,7 +61,7 @@ $GLOBALS['TL_DCA']['tl_content']['fields']['leaflet_width'] = [
|
|||||||
$GLOBALS['TL_DCA']['tl_content']['fields']['leaflet_height'] = [
|
$GLOBALS['TL_DCA']['tl_content']['fields']['leaflet_height'] = [
|
||||||
'label' => &$GLOBALS['TL_LANG']['tl_content']['leaflet_height'],
|
'label' => &$GLOBALS['TL_LANG']['tl_content']['leaflet_height'],
|
||||||
'inputType' => 'inputUnit',
|
'inputType' => 'inputUnit',
|
||||||
'options' => ['px', '%', 'em', 'pt', 'pc', 'in', 'cm', 'mm'],
|
'options' => $GLOBALS['TL_CSS_UNITS'],
|
||||||
'search' => false,
|
'search' => false,
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'eval' => ['rgxp' => 'digit', 'tl_class' => 'w50'],
|
'eval' => ['rgxp' => 'digit', 'tl_class' => 'w50'],
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = [
|
|||||||
'maxlength' => 255,
|
'maxlength' => 255,
|
||||||
'tl_class' => 'w50',
|
'tl_class' => 'w50',
|
||||||
'nullIfEmpty' => true,
|
'nullIfEmpty' => true,
|
||||||
|
'doNotCopy' => true,
|
||||||
],
|
],
|
||||||
'toolkit' => [
|
'toolkit' => [
|
||||||
'alias_generator' => [
|
'alias_generator' => [
|
||||||
|
|||||||
@@ -179,7 +179,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_icon'] = [
|
|||||||
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
||||||
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
||||||
],
|
],
|
||||||
'eval' => ['mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50', 'unique' => true],
|
'eval' => [
|
||||||
|
'mandatory' => false,
|
||||||
|
'maxlength' => 255,
|
||||||
|
'tl_class' => 'w50',
|
||||||
|
'unique' => true,
|
||||||
|
'doNotCopy' => true,
|
||||||
|
'nullIfEmpty' => true,
|
||||||
|
],
|
||||||
'toolkit' => [
|
'toolkit' => [
|
||||||
'alias_generator' => [
|
'alias_generator' => [
|
||||||
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
||||||
|
|||||||
@@ -232,12 +232,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = [
|
|||||||
'provider' => ['tile_provider', 'tile_provider_variant'],
|
'provider' => ['tile_provider', 'tile_provider_variant'],
|
||||||
],
|
],
|
||||||
'tile_provider' => [
|
'tile_provider' => [
|
||||||
'MapBox' => ['tile_provider_key'],
|
'MapBox' => ['tile_provider_key'],
|
||||||
'HERE' => ['tile_provider_key', 'tile_provider_code'],
|
'HERE' => ['tile_provider_key', 'tile_provider_code'],
|
||||||
|
'OpenWeatherMap' => ['tile_provider_key'],
|
||||||
|
'Thunderforest' => ['tile_provider_key'],
|
||||||
|
],
|
||||||
|
'fileFormat' => [
|
||||||
|
'!' => ['file'],
|
||||||
],
|
],
|
||||||
'fileFormat' => [
|
|
||||||
'!' => ['file']
|
|
||||||
]
|
|
||||||
],
|
],
|
||||||
|
|
||||||
'metasubpalettes' => [
|
'metasubpalettes' => [
|
||||||
@@ -276,7 +278,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = [
|
|||||||
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
||||||
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
||||||
],
|
],
|
||||||
'eval' => ['mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50', 'unique' => true],
|
'eval' => [
|
||||||
|
'mandatory' => false,
|
||||||
|
'maxlength' => 255,
|
||||||
|
'tl_class' => 'w50',
|
||||||
|
'unique' => true,
|
||||||
|
'nullIfEmpty' => true,
|
||||||
|
'doNotCopy' => true,
|
||||||
|
],
|
||||||
'toolkit' => [
|
'toolkit' => [
|
||||||
'alias_generator' => [
|
'alias_generator' => [
|
||||||
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
||||||
@@ -864,7 +873,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = [
|
|||||||
],
|
],
|
||||||
'sql' => 'mediumtext NULL',
|
'sql' => 'mediumtext NULL',
|
||||||
],
|
],
|
||||||
'fileFormat' => [
|
'fileFormat' => [
|
||||||
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormat'],
|
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormat'],
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'inputType' => 'select',
|
'inputType' => 'select',
|
||||||
@@ -882,19 +891,19 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = [
|
|||||||
'sql' => "varchar(32) NOT NULL default ''",
|
'sql' => "varchar(32) NOT NULL default ''",
|
||||||
],
|
],
|
||||||
'file' => [
|
'file' => [
|
||||||
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['file'],
|
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['file'],
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'inputType' => 'fileTree',
|
'inputType' => 'fileTree',
|
||||||
'load_callback' => [
|
'load_callback' => [
|
||||||
['netzmacht.contao_leaflet.listeners.dca.layer', 'prepareFileWidget'],
|
['netzmacht.contao_leaflet.listeners.dca.layer', 'prepareFileWidget'],
|
||||||
],
|
],
|
||||||
'eval' => [
|
'eval' => [
|
||||||
'filesOnly' => true,
|
'filesOnly' => true,
|
||||||
'fieldType' => 'radio',
|
'fieldType' => 'radio',
|
||||||
'mandatory' => true,
|
'mandatory' => true,
|
||||||
'tl_class' => 'clr',
|
'tl_class' => 'clr',
|
||||||
],
|
],
|
||||||
'sql' => 'binary(16) NULL',
|
'sql' => 'binary(16) NULL',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -23,10 +23,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_map'] = [
|
|||||||
],
|
],
|
||||||
'onload_callback' => [
|
'onload_callback' => [
|
||||||
['netzmacht.contao_leaflet.listeners.dca.leaflet', 'loadLanguageFile'],
|
['netzmacht.contao_leaflet.listeners.dca.leaflet', 'loadLanguageFile'],
|
||||||
|
['netzmacht.contao_leaflet.listeners.dca.map', 'addIncompleteConfigurationWarning'],
|
||||||
],
|
],
|
||||||
'onsubmit_callback' => [
|
'onsubmit_callback' => [
|
||||||
['netzmacht.contao_leaflet.listeners.dca.leaflet', 'clearCache'],
|
['netzmacht.contao_leaflet.listeners.dca.leaflet', 'clearCache'],
|
||||||
],
|
],
|
||||||
|
'oncopy_callback' => [
|
||||||
|
['netzmacht.contao_leaflet.listeners.dca.map', 'copyLayerRelations'],
|
||||||
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
'list' => [
|
'list' => [
|
||||||
@@ -156,7 +160,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_map'] = [
|
|||||||
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
||||||
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
||||||
],
|
],
|
||||||
'eval' => ['mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50', 'unique' => true],
|
'eval' => [
|
||||||
|
'mandatory' => false,
|
||||||
|
'maxlength' => 255,
|
||||||
|
'tl_class' => 'w50',
|
||||||
|
'unique' => true,
|
||||||
|
'doNotCopy' => true,
|
||||||
|
'nullIfEmpty' => true,
|
||||||
|
],
|
||||||
'toolkit' => [
|
'toolkit' => [
|
||||||
'alias_generator' => [
|
'alias_generator' => [
|
||||||
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
||||||
|
|||||||
@@ -160,7 +160,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_marker'] = [
|
|||||||
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
||||||
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
||||||
],
|
],
|
||||||
'eval' => ['mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50', 'unique' => true],
|
'eval' => [
|
||||||
|
'mandatory' => false,
|
||||||
|
'maxlength' => 255,
|
||||||
|
'tl_class' => 'w50',
|
||||||
|
'unique' => true,
|
||||||
|
'doNotCopy' => true,
|
||||||
|
'nullIfEmpty' => true,
|
||||||
|
],
|
||||||
'toolkit' => [
|
'toolkit' => [
|
||||||
'alias_generator' => [
|
'alias_generator' => [
|
||||||
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
||||||
|
|||||||
@@ -151,7 +151,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_popup'] = [
|
|||||||
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
||||||
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
||||||
],
|
],
|
||||||
'eval' => ['mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50', 'unique' => true],
|
'eval' => [
|
||||||
|
'mandatory' => false,
|
||||||
|
'maxlength' => 255,
|
||||||
|
'tl_class' => 'w50',
|
||||||
|
'unique' => true,
|
||||||
|
'doNotCopy' => true,
|
||||||
|
'nullIfEmpty' => true,
|
||||||
|
],
|
||||||
'toolkit' => [
|
'toolkit' => [
|
||||||
'alias_generator' => [
|
'alias_generator' => [
|
||||||
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
||||||
|
|||||||
@@ -145,7 +145,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_style'] = [
|
|||||||
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
||||||
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
||||||
],
|
],
|
||||||
'eval' => ['mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50', 'unique' => true],
|
'eval' => [
|
||||||
|
'mandatory' => false,
|
||||||
|
'maxlength' => 255,
|
||||||
|
'tl_class' => 'w50',
|
||||||
|
'unique' => true,
|
||||||
|
'doNotCopy' => true,
|
||||||
|
'nullIfEmpty' => true,
|
||||||
|
],
|
||||||
'toolkit' => [
|
'toolkit' => [
|
||||||
'alias_generator' => [
|
'alias_generator' => [
|
||||||
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
||||||
|
|||||||
@@ -185,7 +185,14 @@ $GLOBALS['TL_DCA']['tl_leaflet_vector'] = [
|
|||||||
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
['netzmacht.contao_toolkit.dca.listeners.alias_generator', 'handleSaveCallback'],
|
||||||
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
['netzmacht.contao_leaflet.listeners.dca.validator', 'validateAlias'],
|
||||||
],
|
],
|
||||||
'eval' => ['mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50', 'unique' => true],
|
'eval' => [
|
||||||
|
'mandatory' => false,
|
||||||
|
'maxlength' => 255,
|
||||||
|
'tl_class' => 'w50',
|
||||||
|
'unique' => true,
|
||||||
|
'doNotCopy' => true,
|
||||||
|
'nullIfEmpty' => true,
|
||||||
|
],
|
||||||
'toolkit' => [
|
'toolkit' => [
|
||||||
'alias_generator' => [
|
'alias_generator' => [
|
||||||
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
'factory' => 'netzmacht.contao_leaflet.definition.alias_generator.factory_default',
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* @package contao-leaflet-maps
|
* @package contao-leaflet-maps
|
||||||
* @author David Molineus <david.molineus@netzmacht.de>
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @author Fritz Michael Gschwantner <fmg@inspiredminds.at>
|
||||||
* @copyright 2014-2017 netzmacht David Molineus. All rights reserved.
|
* @copyright 2014-2017 netzmacht David Molineus. All rights reserved.
|
||||||
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||||
* @filesource
|
* @filesource
|
||||||
@@ -13,7 +14,7 @@
|
|||||||
$GLOBALS['TL_DCA']['tl_module']['metapalettes']['leaflet'] = [
|
$GLOBALS['TL_DCA']['tl_module']['metapalettes']['leaflet'] = [
|
||||||
'type' => ['name', 'type', 'headline'],
|
'type' => ['name', 'type', 'headline'],
|
||||||
'leaflet' => ['leaflet_map', 'leaflet_mapId', 'leaflet_width', 'leaflet_height', 'leaflet_template'],
|
'leaflet' => ['leaflet_map', 'leaflet_mapId', 'leaflet_width', 'leaflet_height', 'leaflet_template'],
|
||||||
'templates' => [':hide', 'customTpl'],
|
'template' => [':hide', 'customTpl'],
|
||||||
'protected' => [':hide', 'protected'],
|
'protected' => [':hide', 'protected'],
|
||||||
'expert' => [':hide', 'guests', 'cssID', 'space'],
|
'expert' => [':hide', 'guests', 'cssID', 'space'],
|
||||||
'invisible' => [':hide', 'invisible', 'start', 'start'],
|
'invisible' => [':hide', 'invisible', 'start', 'start'],
|
||||||
@@ -49,7 +50,7 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['leaflet_mapId'] = [
|
|||||||
$GLOBALS['TL_DCA']['tl_module']['fields']['leaflet_width'] = [
|
$GLOBALS['TL_DCA']['tl_module']['fields']['leaflet_width'] = [
|
||||||
'label' => &$GLOBALS['TL_LANG']['tl_module']['leaflet_width'],
|
'label' => &$GLOBALS['TL_LANG']['tl_module']['leaflet_width'],
|
||||||
'inputType' => 'inputUnit',
|
'inputType' => 'inputUnit',
|
||||||
'options' => ['px', '%', 'em', 'pt', 'pc', 'in', 'cm', 'mm'],
|
'options' => $GLOBALS['TL_CSS_UNITS'],
|
||||||
'search' => false,
|
'search' => false,
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'eval' => ['rgxp' => 'digit', 'tl_class' => 'clr w50'],
|
'eval' => ['rgxp' => 'digit', 'tl_class' => 'clr w50'],
|
||||||
@@ -60,7 +61,7 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['leaflet_width'] = [
|
|||||||
$GLOBALS['TL_DCA']['tl_module']['fields']['leaflet_height'] = [
|
$GLOBALS['TL_DCA']['tl_module']['fields']['leaflet_height'] = [
|
||||||
'label' => &$GLOBALS['TL_LANG']['tl_module']['leaflet_height'],
|
'label' => &$GLOBALS['TL_LANG']['tl_module']['leaflet_height'],
|
||||||
'inputType' => 'inputUnit',
|
'inputType' => 'inputUnit',
|
||||||
'options' => ['px', '%', 'em', 'pt', 'pc', 'in', 'cm', 'mm'],
|
'options' => $GLOBALS['TL_CSS_UNITS'],
|
||||||
'search' => false,
|
'search' => false,
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'eval' => ['rgxp' => 'digit', 'tl_class' => 'w50'],
|
'eval' => ['rgxp' => 'digit', 'tl_class' => 'w50'],
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ $GLOBALS['TL_LANG']['tl_leaflet_layer']['groupTypes']['layer']['1'] = 'Ba
|
|||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['iconCreateFunction']['0'] = 'Cluster-Icon-Funktion erstellen';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['iconCreateFunction']['0'] = 'Cluster-Icon-Funktion erstellen';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['iconCreateFunction']['1'] = 'Diese Funktion wird zum Erstellen des Cluster-Icons benutzt.';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['iconCreateFunction']['1'] = 'Diese Funktion wird zum Erstellen des Cluster-Icons benutzt.';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['icons']['0'] = 'Icons verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['icons']['0'] = 'Icons verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['icons']['1'] = 'Stile verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['icons']['1'] = 'Icon-Stile verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['map']['0'] = 'Karten verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['map']['0'] = 'Karten verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['map']['1'] = 'Leaflet-Karten verwalten.';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['map']['1'] = 'Leaflet-Karten verwalten.';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['markerCluster']['0'] = 'Marker-Cluster';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['markerCluster']['0'] = 'Marker-Cluster';
|
||||||
@@ -83,7 +83,7 @@ $GLOBALS['TL_LANG']['tl_leaflet_layer']['pasteafter']['1'] = 'Na
|
|||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['pasteinto']['1'] = 'In Layer %s einfügen';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['pasteinto']['1'] = 'In Layer %s einfügen';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['polygonOptions']['0'] = 'Polygon-Optionen';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['polygonOptions']['0'] = 'Polygon-Optionen';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['popups']['0'] = 'Popups verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['popups']['0'] = 'Popups verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['popups']['1'] = 'Popup-Icons verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['popups']['1'] = 'Marker Popups verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['reference']['0'] = 'Referenz';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['reference']['0'] = 'Referenz';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['reference']['1'] = 'Wählen Sie den Referenzlayer aus. Ansonsten wird dasselbe JavaScript-Objekt benutzt.';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['reference']['1'] = 'Wählen Sie den Referenzlayer aus. Ansonsten wird dasselbe JavaScript-Objekt benutzt.';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['removeOutsideVisibleBounds']['0'] = 'Entfernen, wenn außerhalb der sichtbaren Begrenzung';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['removeOutsideVisibleBounds']['0'] = 'Entfernen, wenn außerhalb der sichtbaren Begrenzung';
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ $GLOBALS['TL_LANG']['tl_leaflet_popup']['delete']['0'] = 'Popup löschen
|
|||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['delete']['1'] = 'Popup ID %s löschen';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['delete']['1'] = 'Popup ID %s löschen';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['edit']['0'] = 'Popup bearbeiten';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['edit']['0'] = 'Popup bearbeiten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['edit']['1'] = 'Popup ID %s bearbeiten';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['edit']['1'] = 'Popup ID %s bearbeiten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['icons']['0'] = 'Popups verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['icons']['0'] = 'Icons verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['icons']['1'] = 'Marker-Popups verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['icons']['1'] = 'Marker-Icons verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['keepInView']['0'] = 'Im Sichtfeld behalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['keepInView']['0'] = 'Im Sichtfeld behalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['keepInView']['1'] = 'Aktivieren Sie diese Einstellung um ein herausschieben des Popups aus dem sichbaren Bereich zu verhindern.';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['keepInView']['1'] = 'Aktivieren Sie diese Einstellung um ein herausschieben des Popups aus dem sichbaren Bereich zu verhindern.';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['layersBtn']['0'] = 'Layer verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['layersBtn']['0'] = 'Layer verwalten';
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ $GLOBALS['TL_LANG']['tl_leaflet_style']['new']['1'] = 'Neuen Stil erstel
|
|||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['opacity']['0'] = 'Linientransparenz';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['opacity']['0'] = 'Linientransparenz';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['opacity']['1'] = 'Die Transparenz des Striches kann einen Wert zwischen 0 und 1 annehmen.';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['opacity']['1'] = 'Die Transparenz des Striches kann einen Wert zwischen 0 und 1 annehmen.';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['popups']['0'] = 'Popups verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['popups']['0'] = 'Popups verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['popups']['1'] = 'Popup-Icons verwalten';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['popups']['1'] = 'Popup-Stile verwalten';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['show']['0'] = 'Details anzeigen';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['show']['0'] = 'Details anzeigen';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['show']['1'] = 'Details des Stils ID %s anzeigen';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['show']['1'] = 'Details des Stils ID %s anzeigen';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['stroke']['0'] = 'Linie ziehen';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['stroke']['0'] = 'Linie ziehen';
|
||||||
|
|||||||
15
src/Bundle/Resources/contao/languages/en/default.php
Normal file
15
src/Bundle/Resources/contao/languages/en/default.php
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2014-2018 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);
|
||||||
|
|
||||||
|
$GLOBALS['TL_LANG']['ERR']['leafletMissingZoomLevel'] = 'No zoom level defined. Only leave it empty on purpose (Zoom level might by initialized by bounds adjustments). Otherwise no map will be shown.';
|
||||||
@@ -21,7 +21,7 @@ $GLOBALS['TL_LANG']['tl_leaflet_layer']['map'][1] = 'Manage leaflet maps';
|
|||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['icons'][0] = 'Manage icons';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['icons'][0] = 'Manage icons';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['icons'][1] = 'Manage marker icons';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['icons'][1] = 'Manage marker icons';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['popups'][0] = 'Manage popups';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['popups'][0] = 'Manage popups';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['popups'][1] = 'Manage popups icons';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['popups'][1] = 'Manage popups styles';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['styles'][0] = 'Manage styles';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['styles'][0] = 'Manage styles';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['styles'][1] = 'Manage vector styles';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['styles'][1] = 'Manage vector styles';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['new'][0] = 'Create layer';
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['new'][0] = 'Create layer';
|
||||||
@@ -149,6 +149,10 @@ $GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormat'][0] = 'File
|
|||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['fileFormat'][1] = 'Choose which file format is used.';
|
$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'][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']['file'][1] = 'Choose a file containing geodata. Supported formats are: %s.';
|
||||||
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['tile_provider_key'][0] = 'API key / Access token';
|
||||||
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['tile_provider_key'][1] = 'Please define the API key / access token which is required for this tile provider.';
|
||||||
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['tile_provider_code'][0] = 'App code';
|
||||||
|
$GLOBALS['TL_LANG']['tl_leaflet_layer']['tile_provider_code'][1] = 'Please define the required app code for this tile provider.';
|
||||||
|
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_layer']['groupTypes']['layer'][0] = 'Layer group';
|
$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']['layer'][1] = 'Basic layer group. <br> See <a href="http://leafletjs.com/reference.html#layergroup" target="_blank">http://leafletjs.com/reference.html#layergroup</a>';
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ $GLOBALS['TL_LANG']['tl_leaflet_popup']['layersBtn'][0] = 'Manage layers';
|
|||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['layersBtn'][1] = 'Manage leaflet layers';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['layersBtn'][1] = 'Manage leaflet layers';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['styles'][0] = 'Manage styles';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['styles'][0] = 'Manage styles';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['styles'][1] = 'Manage vector styles';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['styles'][1] = 'Manage vector styles';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['icons'][0] = 'Manage popups';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['icons'][0] = 'Manage icons';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['icons'][1] = 'Manage marker popups';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['icons'][1] = 'Manage marker icons';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['new'][0] = 'Create popup';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['new'][0] = 'Create popup';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['new'][1] = 'Create new popup';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['new'][1] = 'Create new popup';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_popup']['edit'][0] = 'Edit popup';
|
$GLOBALS['TL_LANG']['tl_leaflet_popup']['edit'][0] = 'Edit popup';
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ $GLOBALS['TL_LANG']['tl_leaflet_style']['layersBtn'][1] = 'Manage leaflet layers
|
|||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['icons'][0] = 'Manage icons';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['icons'][0] = 'Manage icons';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['icons'][1] = 'Manage marker icons';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['icons'][1] = 'Manage marker icons';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['popups'][0] = 'Manage popups';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['popups'][0] = 'Manage popups';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['popups'][1] = 'Manage popups icons';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['popups'][1] = 'Manage popups styles';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['new'][0] = 'Create style';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['new'][0] = 'Create style';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['new'][1] = 'Create new style';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['new'][1] = 'Create new style';
|
||||||
$GLOBALS['TL_LANG']['tl_leaflet_style']['edit'][0] = 'Edit style';
|
$GLOBALS['TL_LANG']['tl_leaflet_style']['edit'][0] = 'Edit style';
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
<IfModule !mod_authz_core.c>
|
|
||||||
Order allow,deny
|
|
||||||
Allow from all
|
|
||||||
</IfModule>
|
|
||||||
<IfModule mod_authz_core.c>
|
|
||||||
Require all granted
|
|
||||||
</IfModule>
|
|
||||||
@@ -1,140 +0,0 @@
|
|||||||
<div class="netzmacht-leaflet-credits">
|
|
||||||
<div class="header">
|
|
||||||
<h1 class="sub_headline"><?php echo $this->headline; ?>
|
|
||||||
<small><?php echo $this->version; ?></small>
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tl_box block row">
|
|
||||||
<h2>About</h2>
|
|
||||||
<div class="left">
|
|
||||||
<p>
|
|
||||||
The Leaflet maps integration for Contao CMS is an Open Source Software license under the LGPL 3.0.
|
|
||||||
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.
|
|
||||||
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>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="right">
|
|
||||||
<a href="http://www.netzmacht.de" <?php echo LINK_NEW_WINDOW; ?>>
|
|
||||||
<img src="bundles/netzmachtcontaoleaflet/img/logo.png"></a>
|
|
||||||
<p>
|
|
||||||
<strong class="company">netzmacht </strong><br>
|
|
||||||
David Molineus<br>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
DAB Bank München<br>
|
|
||||||
IBAN: DE52701204008354237003<br>
|
|
||||||
BIC: DABBDEMMXXX
|
|
||||||
</p>
|
|
||||||
<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.">
|
|
||||||
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tl_box">
|
|
||||||
<h2>Support Contao Leaflet</h2>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<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>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<h3>Contribute</h3>
|
|
||||||
<p>There are many ways you can con­tribute. Translations,
|
|
||||||
docu­mentation or code contributions are welcome.
|
|
||||||
</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>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
|
|
||||||
<div class="col">
|
|
||||||
<h3>Individual development</h3>
|
|
||||||
<p>If you have special requirements you can hire me for an individual development.</p>
|
|
||||||
<p><a href="https://netzmacht/contao-leaflet/contact.html" class="btn" target="_blank">Contact</a></p>
|
|
||||||
</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>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tl_box">
|
|
||||||
<h2>Credits</h2>
|
|
||||||
<table class="tl_listing">
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Version</th>
|
|
||||||
<th>License</th>
|
|
||||||
<th>Homepage</th>
|
|
||||||
</tr>
|
|
||||||
<?php if ($this->libraries): ?>
|
|
||||||
<tr>
|
|
||||||
<th colspan="4" class="subtitle">Libraries</th>
|
|
||||||
</tr>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php foreach ($this->libraries as $library): ?>
|
|
||||||
<tr>
|
|
||||||
<td><?php echo $library['name']; ?></td>
|
|
||||||
<td><?php echo $library['version']; ?></td>
|
|
||||||
<td><?php echo $library['license']; ?></td>
|
|
||||||
<td><?php echo $library['homepage']; ?></td>
|
|
||||||
</tr>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
<tr>
|
|
||||||
<th class="subtitle" colspan="4">Graphics</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Farm Fresh-Web Icons</td>
|
|
||||||
<td>3.9.2</td>
|
|
||||||
<td><a href="http://creativecommons.org/licenses/by/3.0/us/" target="_blank">CC BY 3.0 US</a></td>
|
|
||||||
<td><a href="http://www.fatcow.com/free-icons" target="_blank">fatcow.com/free-icons</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Web Blog Icons by SEM Labs</td>
|
|
||||||
<td>3.9.2</td>
|
|
||||||
<td><a href="http://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a></td>
|
|
||||||
<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>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php foreach ($this->dependencies as $dep): ?>
|
|
||||||
<tr>
|
|
||||||
<td><?php echo $dep['name']; ?></td>
|
|
||||||
<td><?php echo $dep['version']; ?></td>
|
|
||||||
<td><?php echo $dep['license']; ?></td>
|
|
||||||
<td><?php echo $dep['homepage']; ?></td>
|
|
||||||
</tr>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<?php $GLOBALS['TL_CSS'][] = 'assets/leaflet/libs/leaflet/leaflet.css'; ?>
|
<?php $GLOBALS['TL_CSS'][] = 'assets/leaflet/libs/leaflet/leaflet.min.css'; ?>
|
||||||
<?php $GLOBALS['TL_CSS'][] = 'assets/leaflet/libs/control-geocoder/Control.Geocoder.css'; ?>
|
<?php $GLOBALS['TL_CSS'][] = 'assets/leaflet/libs/control-geocoder/Control.Geocoder.min.css'; ?>
|
||||||
|
|
||||||
<?php $GLOBALS['TL_JAVASCRIPT'][] = 'assets/leaflet/libs/leaflet/leaflet.js'; ?>
|
<?php $GLOBALS['TL_JAVASCRIPT'][] = 'assets/leaflet/libs/leaflet/leaflet.js'; ?>
|
||||||
<?php $GLOBALS['TL_JAVASCRIPT'][] = 'assets/leaflet/libs/control-geocoder/Control.Geocoder.js'; ?>
|
<?php $GLOBALS['TL_JAVASCRIPT'][] = 'assets/leaflet/libs/control-geocoder/Control.Geocoder.min.js'; ?>
|
||||||
|
|
||||||
<div id="map_<?php echo $this->field; ?>" style="margin-top: 5px; width: calc(100% - 28px); height: 300px"></div>
|
<div id="map_<?php echo $this->field; ?>" style="margin-top: 5px; width: calc(100% - 28px); height: 300px"></div>
|
||||||
<script>
|
<script>
|
||||||
@@ -17,6 +17,12 @@
|
|||||||
placeholder: '<?php echo $GLOBALS['TL_LANG']['leaflet']['searchPosition']; ?>'
|
placeholder: '<?php echo $GLOBALS['TL_LANG']['leaflet']['searchPosition']; ?>'
|
||||||
}).addTo(map);
|
}).addTo(map);
|
||||||
|
|
||||||
|
document.querySelector('.leaflet-control-geocoder input').addEventListener('keydown', function (event) {
|
||||||
|
if (event.keyCode === 13) {
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
geocoder.on('markgeocode', function (event) {
|
geocoder.on('markgeocode', function (event) {
|
||||||
var container = document.createElement('div');
|
var container = document.createElement('div');
|
||||||
var link = document.createElement('button');
|
var link = document.createElement('button');
|
||||||
@@ -28,7 +34,8 @@
|
|||||||
e.stop();
|
e.stop();
|
||||||
|
|
||||||
element.set('value', result.center.lat + ',' + result.center.lng);
|
element.set('value', result.center.lat + ',' + result.center.lng);
|
||||||
});
|
this._geocodeMarker.closePopup();
|
||||||
|
}.bind(this));
|
||||||
|
|
||||||
container.appendHTML(result.html || result.name);
|
container.appendHTML(result.html || result.name);
|
||||||
container.appendChild(link);
|
container.appendChild(link);
|
||||||
|
|||||||
@@ -9,5 +9,5 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- indexer::continue -->
|
<!-- indexer::continue -->
|
||||||
<?php $GLOBALS['TL_BODY'][] = '<script>' . $this->javascript . '</script>'; ?>
|
<script><?= $this->javascript ?></script>
|
||||||
|
|
||||||
|
|||||||
@@ -9,4 +9,4 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- indexer::continue -->
|
<!-- indexer::continue -->
|
||||||
<?php $GLOBALS['TL_BODY'][] = '<script>' . $this->javascript . '</script>'; ?>
|
<script><?= $this->javascript ?></script>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#tl_navigation .tl_level_1_group .group-leaflet {
|
#tl_navigation .tl_level_1_group .group-leaflet {
|
||||||
background: url(/bundles/netzmachtcontaoleaflet/img/leaflet.svg) 3px 2px no-repeat;
|
background: url(../img/leaflet.svg) 3px 2px no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tl_help_table a {
|
.tl_help_table a {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
132
src/Bundle/Resources/views/backend/about.html.twig
Normal file
132
src/Bundle/Resources/views/backend/about.html.twig
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
{% extends "@ContaoCore/Backend/be_page.html.twig" %}
|
||||||
|
|
||||||
|
{% block headline %}{{ "MOD.leaflet_about.1"|trans({}, 'contao_modules') }}{% endblock %}
|
||||||
|
|
||||||
|
{% block error %}{% endblock %}
|
||||||
|
|
||||||
|
{% block main %}
|
||||||
|
<div class="netzmacht-leaflet-credits">
|
||||||
|
<div class="header">
|
||||||
|
<h1 class="sub_headline">{{ headline }}
|
||||||
|
<small>{{ version }}</small>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tl_box block row">
|
||||||
|
<h2>About</h2>
|
||||||
|
<p>
|
||||||
|
The Leaflet maps integration for Contao CMS is an Open Source Software license under the LGPL 3.0.
|
||||||
|
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.
|
||||||
|
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>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tl_box">
|
||||||
|
<h2>Support Contao Leaflet</h2>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<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="https://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­tribute. Translations,
|
||||||
|
docu­mentation or code contributions are welcome.
|
||||||
|
</p>
|
||||||
|
<p><a href="https://netzmacht.de/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://github.com/netzmacht/contao-leaflet-maps/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement" class="btn" target="_blank">Planned
|
||||||
|
features</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col">
|
||||||
|
<h3>Individual development</h3>
|
||||||
|
<p>If you have special requirements you can hire me for an individual development.</p>
|
||||||
|
<p><a href="https://netzmacht.de/contao-leaflet/contact.html" class="btn" target="_blank">Contact</a></p>
|
||||||
|
</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.de/contao-leaflet/commercial-license.html" class="btn" target="_blank">Purchase
|
||||||
|
license</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tl_box">
|
||||||
|
<h2>Credits</h2>
|
||||||
|
<table class="tl_listing">
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Version</th>
|
||||||
|
<th>License</th>
|
||||||
|
<th>Homepage</th>
|
||||||
|
</tr>
|
||||||
|
{% if libraries %}
|
||||||
|
<tr>
|
||||||
|
<th colspan="4" class="subtitle">Libraries</th>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% for library in libraries %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ library.name }}</td>
|
||||||
|
<td>{{ library.version }}</td>
|
||||||
|
<td>{{ library.license|raw }}</td>
|
||||||
|
<td>{{ library.homepage|raw }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
<tr>
|
||||||
|
<td>url-polyfill</td>
|
||||||
|
<td>v1.1.0</td>
|
||||||
|
<td><a href="https://github.com/lifaon74/url-polyfill/blob/master/LICENSE" target="_blank">MIT</a></td>
|
||||||
|
<td><a href="https://github.com/lifaon74/url-polyfill" target="_blank">github.com/lifaon74/url-polyfill</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="subtitle" colspan="4">Graphics</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Farm Fresh-Web Icons</td>
|
||||||
|
<td>3.9.2</td>
|
||||||
|
<td><a href="http://creativecommons.org/licenses/by/3.0/us/" target="_blank">CC BY 3.0 US</a></td>
|
||||||
|
<td><a href="http://www.fatcow.com/free-icons" target="_blank">fatcow.com/free-icons</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Web Blog Icons by SEM Labs</td>
|
||||||
|
<td>3.9.2</td>
|
||||||
|
<td><a href="http://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a></td>
|
||||||
|
<td><a href="http://semlabs.co.uk/" target="_blank">semlabs.co.uk</a></td>
|
||||||
|
</tr>
|
||||||
|
{% if dependencies %}
|
||||||
|
<tr>
|
||||||
|
<th colspan="4" class="subtitle">Dependencies</th>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% for dep in dependencies %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ dep.name }}</td>
|
||||||
|
<td>{{ dep.version }}</td>
|
||||||
|
<td>{{ dep.license|raw }}</td>
|
||||||
|
<td>{{ dep.homepage|raw }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
@@ -90,7 +90,7 @@ class EncoderSubscriber implements EventSubscriberInterface
|
|||||||
$value = $event->getValue();
|
$value = $event->getValue();
|
||||||
$encoder = $event->getEncoder();
|
$encoder = $event->getEncoder();
|
||||||
$template = 'L.contao.%s(%s, %s, %s, %s, map);';
|
$template = 'L.contao.%s(%s, %s, %s, %s, map);';
|
||||||
$method = 'loadFile';
|
$method = 'loadUrl';
|
||||||
|
|
||||||
if ($value instanceof OmnivoreLayer) {
|
if ($value instanceof OmnivoreLayer) {
|
||||||
$url = $value->getUrl();
|
$url = $value->getUrl();
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class BuildDefinitionEvent extends Event
|
|||||||
/**
|
/**
|
||||||
* The model.
|
* The model.
|
||||||
*
|
*
|
||||||
* @var \Model
|
* @var Model
|
||||||
*/
|
*/
|
||||||
private $model;
|
private $model;
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ class BuildDefinitionEvent extends Event
|
|||||||
/**
|
/**
|
||||||
* Get the model.
|
* Get the model.
|
||||||
*
|
*
|
||||||
* @return \Model
|
* @return Model
|
||||||
*/
|
*/
|
||||||
public function getModel()
|
public function getModel()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -93,4 +93,24 @@ class DistanceFilter implements Filter
|
|||||||
'center' => $this->center,
|
'center' => $this->center,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the center coordinate.
|
||||||
|
*
|
||||||
|
* @return LatLng
|
||||||
|
*/
|
||||||
|
public function getCenter(): LatLng
|
||||||
|
{
|
||||||
|
return $this->center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the distance radius.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getRadius(): int
|
||||||
|
{
|
||||||
|
return $this->radius;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ final class FilterFactory
|
|||||||
public function create(string $filter, string $values): Filter
|
public function create(string $filter, string $values): Filter
|
||||||
{
|
{
|
||||||
if (isset($this->filters[$filter])) {
|
if (isset($this->filters[$filter])) {
|
||||||
return call_user_func([$filter, 'fromRequest'], $values);
|
return call_user_func([$this->filters[$filter], 'fromRequest'], $values);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new \RuntimeException(sprintf('Creating filter failed. Unsupported filter "%s"', $filter));
|
throw new \RuntimeException(sprintf('Creating filter failed. Unsupported filter "%s"', $filter));
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ use Contao\Database\Result;
|
|||||||
use Contao\Input;
|
use Contao\Input;
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
use Contao\Model\Collection;
|
use Contao\Model\Collection;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Leaflet\MapProvider;
|
use Netzmacht\Contao\Leaflet\MapProvider;
|
||||||
use Netzmacht\Contao\Leaflet\Model\MapModel;
|
use Netzmacht\Contao\Leaflet\Model\MapModel;
|
||||||
use Netzmacht\Contao\Toolkit\Component\Hybrid\AbstractHybrid;
|
use Netzmacht\Contao\Toolkit\Component\Hybrid\AbstractHybrid;
|
||||||
@@ -118,6 +119,8 @@ abstract class AbstractMapHybrid extends AbstractHybrid
|
|||||||
*/
|
*/
|
||||||
protected function prepareTemplateData(array $data): array
|
protected function prepareTemplateData(array $data): array
|
||||||
{
|
{
|
||||||
|
$data = parent::prepareTemplateData($data);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$template = $this->get('leaflet_template') ?: 'leaflet_map_js';
|
$template = $this->get('leaflet_template') ?: 'leaflet_map_js';
|
||||||
$mapId = $this->getIdentifier();
|
$mapId = $this->getIdentifier();
|
||||||
@@ -127,8 +130,8 @@ abstract class AbstractMapHybrid extends AbstractHybrid
|
|||||||
$data['mapId'] = $mapId;
|
$data['mapId'] = $mapId;
|
||||||
|
|
||||||
$style = '';
|
$style = '';
|
||||||
$height = deserialize($this->get('leaflet_height'), true);
|
$height = StringUtil::deserialize($this->get('leaflet_height'), true);
|
||||||
$width = deserialize($this->get('leaflet_width'), true);
|
$width = StringUtil::deserialize($this->get('leaflet_width'), true);
|
||||||
|
|
||||||
if (!empty($width['value'])) {
|
if (!empty($width['value'])) {
|
||||||
$style .= 'width:' . $width['value'] . $width['unit'] . ';';
|
$style .= 'width:' . $width['value'] . $width['unit'] . ';';
|
||||||
|
|||||||
103
src/Frontend/Action/LayerDataAction.php
Normal file
103
src/Frontend/Action/LayerDataAction.php
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2014-2018 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\Frontend\Action;
|
||||||
|
|
||||||
|
use Netzmacht\Contao\Leaflet\Filter\Filter;
|
||||||
|
use Netzmacht\Contao\Leaflet\Filter\FilterFactory;
|
||||||
|
use Netzmacht\Contao\Leaflet\MapProvider;
|
||||||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request action which handles request for layer data
|
||||||
|
*/
|
||||||
|
final class LayerDataAction
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Map provider.
|
||||||
|
*
|
||||||
|
* @var MapProvider
|
||||||
|
*/
|
||||||
|
private $mapProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter factory.
|
||||||
|
*
|
||||||
|
* @var FilterFactory
|
||||||
|
*/
|
||||||
|
private $filterFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LayerDataAction constructor.
|
||||||
|
*
|
||||||
|
* @param MapProvider $mapProvider Map provider.
|
||||||
|
* @param FilterFactory $filterFactory Filter factory.
|
||||||
|
*/
|
||||||
|
public function __construct(MapProvider $mapProvider, FilterFactory $filterFactory)
|
||||||
|
{
|
||||||
|
$this->mapProvider = $mapProvider;
|
||||||
|
$this->filterFactory = $filterFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the request.
|
||||||
|
*
|
||||||
|
* @param int $layerId The layer id.
|
||||||
|
* @param string $_format The requested output format.
|
||||||
|
* @param Request $request The request.
|
||||||
|
*
|
||||||
|
* @return Response
|
||||||
|
*
|
||||||
|
* @throws BadRequestHttpException When unsupported format is given.
|
||||||
|
*
|
||||||
|
* @SuppressWarnings(PHPMD.CamelCaseParameterName)
|
||||||
|
* @SuppressWarnings(PHPMD.CamelCaseVariableName)
|
||||||
|
*/
|
||||||
|
public function __invoke(int $layerId, string $_format, Request $request): Response
|
||||||
|
{
|
||||||
|
$filter = $this->createFilter($request);
|
||||||
|
$data = $this->mapProvider->getFeatureCollection($layerId, $filter);
|
||||||
|
|
||||||
|
if ($_format === 'geojson') {
|
||||||
|
$response = new JsonResponse($data);
|
||||||
|
$response->setEncodingOptions(JSON_UNESCAPED_SLASHES);
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new BadRequestHttpException(sprintf('Unsupported format "%s"', $_format));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the filter if defined in the request.
|
||||||
|
*
|
||||||
|
* @param Request $request The request.
|
||||||
|
*
|
||||||
|
* @return Filter|null
|
||||||
|
*/
|
||||||
|
private function createFilter(Request $request): ?Filter
|
||||||
|
{
|
||||||
|
if (!$request->query->has('filter')) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter = (string) $request->query->get('filter');
|
||||||
|
$values = (string) $request->query->get('values');
|
||||||
|
|
||||||
|
return $this->filterFactory->create($filter, $values);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,14 +12,18 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Frontend;
|
namespace Netzmacht\Contao\Leaflet\Frontend;
|
||||||
|
|
||||||
|
use const E_USER_DEPRECATED;
|
||||||
use Netzmacht\Contao\Leaflet\Filter\Filter;
|
use Netzmacht\Contao\Leaflet\Filter\Filter;
|
||||||
use Netzmacht\Contao\Leaflet\Filter\FilterFactory;
|
use Netzmacht\Contao\Leaflet\Filter\FilterFactory;
|
||||||
use Netzmacht\Contao\Leaflet\MapProvider;
|
use Netzmacht\Contao\Leaflet\MapProvider;
|
||||||
|
use function trigger_error;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The data controller handles ajax request for sub data.
|
* The data controller handles ajax request for sub data.
|
||||||
*
|
*
|
||||||
* @package Netzmacht\Contao\Leaflet\Frontend
|
* @package Netzmacht\Contao\Leaflet\Frontend
|
||||||
|
*
|
||||||
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
class DataController
|
class DataController
|
||||||
{
|
{
|
||||||
@@ -60,6 +64,13 @@ class DataController
|
|||||||
{
|
{
|
||||||
$this->debugMode = $debugMode;
|
$this->debugMode = $debugMode;
|
||||||
$this->filterFactory = $filterFactory;
|
$this->filterFactory = $filterFactory;
|
||||||
|
|
||||||
|
// @codingStandardsIgnoreStart
|
||||||
|
@trigger_error(
|
||||||
|
'Deprecated since 3.1.0 and will be removed in 4.0.0 - Use properly route instead.',
|
||||||
|
E_USER_DEPRECATED
|
||||||
|
);
|
||||||
|
// @codingStandardsIgnoreEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
47
src/Frontend/PageIdDeterminator.php
Normal file
47
src/Frontend/PageIdDeterminator.php
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2014-2018 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\Frontend;
|
||||||
|
|
||||||
|
use Netzmacht\Contao\PageContext\Exception\DeterminePageIdFailed;
|
||||||
|
use Netzmacht\Contao\PageContext\Request\PageIdDeterminator as PageContextPageIdDeterminator;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ApiPageIdDeterminator
|
||||||
|
*/
|
||||||
|
final class PageIdDeterminator implements PageContextPageIdDeterminator
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function match(Request $request): bool
|
||||||
|
{
|
||||||
|
return ($request->attributes->get('_leaflet_scope') === 'page' && $request->query->get('context') === 'page');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* @throws DeterminePageIdFailed When no context id is given.
|
||||||
|
*/
|
||||||
|
public function determinate(Request $request): int
|
||||||
|
{
|
||||||
|
if (!$request->query->has('contextId')) {
|
||||||
|
throw new DeterminePageIdFailed('Could not determine page id for from request.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $request->query->getInt('contextId');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Frontend;
|
namespace Netzmacht\Contao\Leaflet\Frontend;
|
||||||
|
|
||||||
|
use Contao\Config;
|
||||||
|
use Contao\Frontend;
|
||||||
use Netzmacht\Contao\Leaflet\Filter\Filter;
|
use Netzmacht\Contao\Leaflet\Filter\Filter;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
||||||
|
|
||||||
@@ -19,6 +21,8 @@ use Netzmacht\Contao\Leaflet\Mapper\Request;
|
|||||||
* Class RequestUrl creates the request url.
|
* Class RequestUrl creates the request url.
|
||||||
*
|
*
|
||||||
* @package Netzmacht\Contao\Leaflet\Request
|
* @package Netzmacht\Contao\Leaflet\Request
|
||||||
|
*
|
||||||
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
class RequestUrl implements \JsonSerializable
|
class RequestUrl implements \JsonSerializable
|
||||||
{
|
{
|
||||||
@@ -72,7 +76,7 @@ class RequestUrl implements \JsonSerializable
|
|||||||
$query .= '&f=' . $filter->getName() . '&v=' . $filter->toRequest();
|
$query .= '&f=' . $filter->getName() . '&v=' . $filter->toRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
$url = \Config::get('websitePath') . '/' . \Frontend::addToUrl($query, false);
|
$url = Config::get('websitePath') . '/' . Frontend::addToUrl($query, false);
|
||||||
|
|
||||||
return new static($url, $hash, $request);
|
return new static($url, $hash, $request);
|
||||||
}
|
}
|
||||||
@@ -87,6 +91,13 @@ class RequestUrl implements \JsonSerializable
|
|||||||
{
|
{
|
||||||
$this->url = $url;
|
$this->url = $url;
|
||||||
$this->hash = $hash;
|
$this->hash = $hash;
|
||||||
|
|
||||||
|
// @codingStandardsIgnoreStart
|
||||||
|
@trigger_error(
|
||||||
|
'Deprecated since 3.1.0 and will be removed in 4.0.0. Use The router instead.',
|
||||||
|
E_USER_DEPRECATED
|
||||||
|
);
|
||||||
|
// @codingStandardsIgnoreEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -73,6 +73,8 @@ class ValueFilter
|
|||||||
*/
|
*/
|
||||||
public function filter($value)
|
public function filter($value)
|
||||||
{
|
{
|
||||||
return $this->getReplacer()->replace($value);
|
$value = $this->getReplacer()->replace($value, false);
|
||||||
|
|
||||||
|
return $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
107
src/Listener/Backend/UserNavigationListener.php
Normal file
107
src/Listener/Backend/UserNavigationListener.php
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Leaflet maps for Contao CMS.
|
||||||
|
*
|
||||||
|
* @package contao-leaflet-maps
|
||||||
|
* @author David Molineus <david.molineus@netzmacht.de>
|
||||||
|
* @copyright 2014-2018 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\Listener\Backend;
|
||||||
|
|
||||||
|
use Contao\CoreBundle\Event\MenuEvent;
|
||||||
|
use Netzmacht\Contao\Toolkit\View\Assets\AssetsManager;
|
||||||
|
use Symfony\Component\HttpFoundation\RequestStack;
|
||||||
|
use Symfony\Component\Routing\RouterInterface as Router;
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class BackendMenuListener adds backend entries to the navigation.
|
||||||
|
*/
|
||||||
|
final class UserNavigationListener
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Request stack.
|
||||||
|
*
|
||||||
|
* @var RequestStack
|
||||||
|
*/
|
||||||
|
private $requestStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Router.
|
||||||
|
*
|
||||||
|
* @var Router
|
||||||
|
*/
|
||||||
|
private $router;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translator.
|
||||||
|
*
|
||||||
|
* @var Translator
|
||||||
|
*/
|
||||||
|
private $translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assets manager.
|
||||||
|
*
|
||||||
|
* @var AssetsManager
|
||||||
|
*/
|
||||||
|
private $assets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BackendUserNavigationListener constructor.
|
||||||
|
*
|
||||||
|
* @param RequestStack $requestStack Request stack.
|
||||||
|
* @param Router $router Router.
|
||||||
|
* @param Translator $translator Translator.
|
||||||
|
* @param AssetsManager $assets Assets manager.
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
RequestStack $requestStack,
|
||||||
|
Router $router,
|
||||||
|
Translator $translator,
|
||||||
|
AssetsManager $assets
|
||||||
|
) {
|
||||||
|
$this->requestStack = $requestStack;
|
||||||
|
$this->router = $router;
|
||||||
|
$this->translator = $translator;
|
||||||
|
$this->assets = $assets;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the event.
|
||||||
|
*
|
||||||
|
* @param array $modules Backend navigation modules.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function __invoke(array $modules): array
|
||||||
|
{
|
||||||
|
if (!isset($modules['leaflet'])) {
|
||||||
|
return $modules;
|
||||||
|
}
|
||||||
|
|
||||||
|
$request = $this->requestStack->getCurrentRequest();
|
||||||
|
$isActive = $request && $request->attributes->get('_backend_module') === 'leaflet_about';
|
||||||
|
|
||||||
|
$modules['leaflet']['modules']['leaflet_about'] = [
|
||||||
|
'label' => $this->translator->trans('MOD.leaflet_about.0', [], 'contao_modules'),
|
||||||
|
'title' => $this->translator->trans('MOD.leaflet_about.1', [], 'contao_modules'),
|
||||||
|
'href' => $this->router->generate('leaflet_backend_about'),
|
||||||
|
'icon' => 'bundles/netzmachtcontaoleaflet/img/about.png',
|
||||||
|
'class' => 'navigation leaflet_about',
|
||||||
|
'isActive' => $isActive,
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($isActive) {
|
||||||
|
$this->assets->addStylesheet('bundles/netzmachtcontaoleaflet/css/about.css');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $modules;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -517,9 +517,9 @@ class LayerDcaListener extends AbstractListener
|
|||||||
{
|
{
|
||||||
return sprintf(
|
return sprintf(
|
||||||
'<a href="%s" title="%s">%s</a> ',
|
'<a href="%s" title="%s">%s</a> ',
|
||||||
\Backend::addToUrl($href . '&id=' . $row['id']),
|
Backend::addToUrl($href . '&id=' . $row['id']),
|
||||||
$title,
|
$title,
|
||||||
\Image::getHtml($icon, $label, $attributes)
|
Image::getHtml($icon, $label, $attributes)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ class LeafletDcaListener
|
|||||||
$data['marker'] = json_encode($latLng);
|
$data['marker'] = json_encode($latLng);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
// LatLng throws an exception of value could not be created. Just let the value empty when.
|
// LatLng throws an exception of value could not be created. Just let the value empty when.
|
||||||
|
$data['marker'] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->templateEngine->render('toolkit:be:be_leaflet_geocode.html5', $data);
|
return $this->templateEngine->render('toolkit:be:be_leaflet_geocode.html5', $data);
|
||||||
|
|||||||
@@ -15,14 +15,18 @@ declare(strict_types=1);
|
|||||||
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
|
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
|
||||||
|
|
||||||
use Contao\DataContainer;
|
use Contao\DataContainer;
|
||||||
|
use Contao\Input;
|
||||||
use Contao\StringUtil;
|
use Contao\StringUtil;
|
||||||
use Doctrine\DBAL\Connection;
|
use Doctrine\DBAL\Connection;
|
||||||
use Netzmacht\Contao\Leaflet\Model\LayerModel;
|
use Netzmacht\Contao\Leaflet\Model\LayerModel;
|
||||||
|
use Netzmacht\Contao\Leaflet\Model\MapModel;
|
||||||
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
|
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
|
||||||
use Netzmacht\Contao\Toolkit\Dca\Listener\AbstractListener;
|
use Netzmacht\Contao\Toolkit\Dca\Listener\AbstractListener;
|
||||||
use Netzmacht\Contao\Toolkit\Dca\Manager;
|
use Netzmacht\Contao\Toolkit\Dca\Manager;
|
||||||
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
|
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
|
||||||
use PDO;
|
use PDO;
|
||||||
|
use Symfony\Component\HttpFoundation\Session\Session;
|
||||||
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Map is the helper class for the tl_leaflet_map dca.
|
* Class Map is the helper class for the tl_leaflet_map dca.
|
||||||
@@ -52,19 +56,70 @@ class MapDcaListener extends AbstractListener
|
|||||||
*/
|
*/
|
||||||
private $repositoryManager;
|
private $repositoryManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translator.
|
||||||
|
*
|
||||||
|
* @var Translator
|
||||||
|
*/
|
||||||
|
private $translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Session.
|
||||||
|
*
|
||||||
|
* @var Session
|
||||||
|
*/
|
||||||
|
private $session;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct.
|
* Construct.
|
||||||
*
|
*
|
||||||
* @param Manager $manager Data container manager.
|
* @param Manager $manager Data container manager.
|
||||||
* @param Connection $connection Database connection.
|
* @param Connection $connection Database connection.
|
||||||
* @param RepositoryManager $repositoryManager Repository manager.
|
* @param RepositoryManager $repositoryManager Repository manager.
|
||||||
|
* @param Translator $translator Translator.
|
||||||
|
* @param Session $session Session.
|
||||||
*/
|
*/
|
||||||
public function __construct(Manager $manager, Connection $connection, RepositoryManager $repositoryManager)
|
public function __construct(
|
||||||
{
|
Manager $manager,
|
||||||
|
Connection $connection,
|
||||||
|
RepositoryManager $repositoryManager,
|
||||||
|
Translator $translator,
|
||||||
|
Session $session
|
||||||
|
) {
|
||||||
parent::__construct($manager);
|
parent::__construct($manager);
|
||||||
|
|
||||||
$this->connection = $connection;
|
$this->connection = $connection;
|
||||||
$this->repositoryManager = $repositoryManager;
|
$this->repositoryManager = $repositoryManager;
|
||||||
|
$this->translator = $translator;
|
||||||
|
$this->session = $session;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add warnings for incomplete configurations.
|
||||||
|
*
|
||||||
|
* @param DataContainer $dataContainer The data container driver.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function addIncompleteConfigurationWarning($dataContainer): void
|
||||||
|
{
|
||||||
|
if (Input::get('act') !== 'edit') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$repository = $this->repositoryManager->getRepository(MapModel::class);
|
||||||
|
$map = $repository->find((int) $dataContainer->id);
|
||||||
|
|
||||||
|
if (!$map) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($map->zoom === null || $map->zoom === '') {
|
||||||
|
$this->session->getFlashBag()->add(
|
||||||
|
'contao.BE.info',
|
||||||
|
$this->translator->trans('ERR.leafletMissingZoomLevel', [], 'contao_default')
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -171,4 +226,26 @@ class MapDcaListener extends AbstractListener
|
|||||||
->asTree()
|
->asTree()
|
||||||
->getOptions();
|
->getOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy layer relations if a map is duplicated.
|
||||||
|
*
|
||||||
|
* @param string|int $insertId Insert id of the new map.
|
||||||
|
* @param DataContainer $dataContainer Data container driver.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function copyLayerRelations($insertId, DataContainer $dataContainer): void
|
||||||
|
{
|
||||||
|
$statement = $this->connection->prepare('SELECT * FROM tl_leaflet_map_layer WHERE mid=:mid order BY sorting');
|
||||||
|
$statement->bindValue('mid', $dataContainer->id);
|
||||||
|
$statement->execute();
|
||||||
|
|
||||||
|
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
|
||||||
|
unset($row['id']);
|
||||||
|
$row['tstamp'] = time();
|
||||||
|
$row['mid'] = $insertId;
|
||||||
|
$this->connection->insert('tl_leaflet_map_layer', $row);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
|
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
|
||||||
|
|
||||||
use Contao\Controller;
|
use Contao\Controller;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Doctrine\DBAL\Connection;
|
use Doctrine\DBAL\Connection;
|
||||||
use Netzmacht\Contao\Leaflet\Model\IconModel;
|
use Netzmacht\Contao\Leaflet\Model\IconModel;
|
||||||
use Netzmacht\Contao\Leaflet\Model\PopupModel;
|
use Netzmacht\Contao\Leaflet\Model\PopupModel;
|
||||||
@@ -113,7 +114,7 @@ class MarkerDcaListener
|
|||||||
'altitude' => null,
|
'altitude' => null,
|
||||||
];
|
];
|
||||||
|
|
||||||
$values = trimsplit(',', $value);
|
$values = StringUtil::trimsplit(',', $value);
|
||||||
$keys = array_keys($combined);
|
$keys = array_keys($combined);
|
||||||
$count = count($values);
|
$count = count($values);
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
|
namespace Netzmacht\Contao\Leaflet\Listener\Dca;
|
||||||
|
|
||||||
use Contao\DataContainer;
|
use Contao\DataContainer;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Toolkit\Dca\Manager;
|
use Netzmacht\Contao\Toolkit\Dca\Manager;
|
||||||
use Netzmacht\LeafletPHP\Value\LatLng;
|
use Netzmacht\LeafletPHP\Value\LatLng;
|
||||||
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
use Symfony\Component\Translation\TranslatorInterface as Translator;
|
||||||
@@ -116,7 +117,7 @@ class Validator
|
|||||||
*/
|
*/
|
||||||
public function validateMultipleCoordinateSets($values, $dataContainer)
|
public function validateMultipleCoordinateSets($values, $dataContainer)
|
||||||
{
|
{
|
||||||
$sets = deserialize($values, true);
|
$sets = StringUtil::deserialize($values, true);
|
||||||
foreach ($sets as $lines) {
|
foreach ($sets as $lines) {
|
||||||
$this->validateMultipleCoordinates($lines, $dataContainer);
|
$this->validateMultipleCoordinates($lines, $dataContainer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ namespace Netzmacht\Contao\Leaflet\Listener;
|
|||||||
|
|
||||||
use Contao\FilesModel;
|
use Contao\FilesModel;
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Leaflet\Event\ConvertToGeoJsonEvent;
|
use Netzmacht\Contao\Leaflet\Event\ConvertToGeoJsonEvent;
|
||||||
use Netzmacht\Contao\Leaflet\Model\LayerModel;
|
use Netzmacht\Contao\Leaflet\Model\LayerModel;
|
||||||
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
|
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
|
||||||
@@ -117,7 +118,7 @@ final class GeoJsonListener
|
|||||||
public function enrichObjects(GeoJsonObject $feature, LeafletDefinition $definition, $model)
|
public function enrichObjects(GeoJsonObject $feature, LeafletDefinition $definition, $model)
|
||||||
{
|
{
|
||||||
if (($definition instanceof Marker || $definition instanceof Vector)
|
if (($definition instanceof Marker || $definition instanceof Vector)
|
||||||
&& $model instanceof \Model && $feature instanceof Feature) {
|
&& $model instanceof Model && $feature instanceof Feature) {
|
||||||
$this->setDataProperty($model, $feature);
|
$this->setDataProperty($model, $feature);
|
||||||
$this->setBoundsInformation($model, $feature);
|
$this->setBoundsInformation($model, $feature);
|
||||||
}
|
}
|
||||||
@@ -148,7 +149,7 @@ final class GeoJsonListener
|
|||||||
*/
|
*/
|
||||||
public function setModelData(GeoJsonObject $feature, $model)
|
public function setModelData(GeoJsonObject $feature, $model)
|
||||||
{
|
{
|
||||||
if (!$model instanceof \Model || !$feature instanceof Feature
|
if (!$model instanceof Model || !$feature instanceof Feature
|
||||||
|| empty($this->featureModelProperties[$model->getTable()])) {
|
|| empty($this->featureModelProperties[$model->getTable()])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -169,12 +170,12 @@ final class GeoJsonListener
|
|||||||
/**
|
/**
|
||||||
* Parse the model value based on the config.
|
* Parse the model value based on the config.
|
||||||
*
|
*
|
||||||
* @param \Model $model The model.
|
* @param Model $model The model.
|
||||||
* @param mixed $property The property config.
|
* @param mixed $property The property config.
|
||||||
*
|
*
|
||||||
* @return array|mixed|null
|
* @return array|mixed|null
|
||||||
*/
|
*/
|
||||||
private function parseModelValue(\Model $model, &$property)
|
private function parseModelValue(Model $model, &$property)
|
||||||
{
|
{
|
||||||
if (is_array($property)) {
|
if (is_array($property)) {
|
||||||
list($property, $type) = $property;
|
list($property, $type) = $property;
|
||||||
@@ -183,7 +184,7 @@ final class GeoJsonListener
|
|||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'array':
|
case 'array':
|
||||||
case 'object':
|
case 'object':
|
||||||
$value = deserialize($value, true);
|
$value = StringUtil::deserialize($value, true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'file':
|
case 'file':
|
||||||
@@ -194,7 +195,7 @@ final class GeoJsonListener
|
|||||||
|
|
||||||
case 'files':
|
case 'files':
|
||||||
$repository = $this->repositoryManager->getRepository(FilesModel::class);
|
$repository = $this->repositoryManager->getRepository(FilesModel::class);
|
||||||
$collection = $repository->findMultipleByUuids(deserialize($value, true));
|
$collection = $repository->findMultipleByUuids(StringUtil::deserialize($value, true));
|
||||||
|
|
||||||
if ($collection) {
|
if ($collection) {
|
||||||
$value = $collection->fetchEach('path');
|
$value = $collection->fetchEach('path');
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Listener;
|
namespace Netzmacht\Contao\Leaflet\Listener;
|
||||||
|
|
||||||
|
use Contao\Model;
|
||||||
use Netzmacht\Contao\Leaflet\Event\GetHashEvent;
|
use Netzmacht\Contao\Leaflet\Event\GetHashEvent;
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ class HashSubscriber implements EventSubscriberInterface
|
|||||||
{
|
{
|
||||||
$data = $event->getData();
|
$data = $event->getData();
|
||||||
|
|
||||||
if ($data instanceof \Model) {
|
if ($data instanceof Model) {
|
||||||
$event->setHash($data->getTable() . '::' . $data->{$data->getPk()});
|
$event->setHash($data->getTable() . '::' . $data->{$data->getPk()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Listener;
|
namespace Netzmacht\Contao\Leaflet\Listener;
|
||||||
|
|
||||||
|
use Contao\File;
|
||||||
use Netzmacht\Contao\Leaflet\Encoder\ContaoAssets;
|
use Netzmacht\Contao\Leaflet\Encoder\ContaoAssets;
|
||||||
use Netzmacht\Contao\Leaflet\Frontend\Assets\LibrariesConfiguration;
|
use Netzmacht\Contao\Leaflet\Frontend\Assets\LibrariesConfiguration;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
@@ -117,7 +118,7 @@ class LoadAssetsListener
|
|||||||
// TODO: Cache it.
|
// TODO: Cache it.
|
||||||
// codingStandardsIgnoreEnd
|
// codingStandardsIgnoreEnd
|
||||||
|
|
||||||
$file = new \File('assets/leaflet/js/icons.js');
|
$file = new File('assets/leaflet/js/icons.js');
|
||||||
$file->write($buffer);
|
$file->write($buffer);
|
||||||
$file->close();
|
$file->close();
|
||||||
|
|
||||||
|
|||||||
@@ -206,7 +206,10 @@ class MapProvider
|
|||||||
$model = $this->getModel($mapId);
|
$model = $this->getModel($mapId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($model->cache) {
|
$cacheKey = null;
|
||||||
|
$doCache = $model->cache;
|
||||||
|
|
||||||
|
if ($doCache) {
|
||||||
$cacheKey = $this->getCacheKey($mapId, $filter, $elementId, $template, $style);
|
$cacheKey = $this->getCacheKey($mapId, $filter, $elementId, $template, $style);
|
||||||
|
|
||||||
if ($this->cache->contains($cacheKey)) {
|
if ($this->cache->contains($cacheKey)) {
|
||||||
@@ -219,7 +222,7 @@ class MapProvider
|
|||||||
|
|
||||||
$buffer = $this->doGenerate($model, $filter, $elementId, $template, $style);
|
$buffer = $this->doGenerate($model, $filter, $elementId, $template, $style);
|
||||||
|
|
||||||
if ($model->cache) {
|
if ($doCache) {
|
||||||
$this->cache->save(
|
$this->cache->save(
|
||||||
$cacheKey,
|
$cacheKey,
|
||||||
[
|
[
|
||||||
@@ -382,11 +385,15 @@ class MapProvider
|
|||||||
];
|
];
|
||||||
|
|
||||||
$content = $this->templateEngine->render($templateReference, $parameters);
|
$content = $this->templateEngine->render($templateReference, $parameters);
|
||||||
$event = new GetJavascriptEvent($definition, $content);
|
$content = preg_replace(
|
||||||
|
['/^<!-- TEMPLATE (START): .+ -->\n*/', '/\n*<!-- TEMPLATE (END): .+ -->$/'],
|
||||||
|
'',
|
||||||
|
$content
|
||||||
|
);
|
||||||
|
|
||||||
|
$event = new GetJavascriptEvent($definition, $content);
|
||||||
$this->eventDispatcher->dispatch($event::NAME, $event);
|
$this->eventDispatcher->dispatch($event::NAME, $event);
|
||||||
|
|
||||||
$buffer = $event->getJavascript();
|
return $event->getJavascript();
|
||||||
|
|
||||||
return $buffer;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Mapper\Control;
|
namespace Netzmacht\Contao\Leaflet\Mapper\Control;
|
||||||
|
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
||||||
use Netzmacht\LeafletPHP\Definition;
|
use Netzmacht\LeafletPHP\Definition;
|
||||||
@@ -68,7 +69,7 @@ class AttributionControlMapper extends AbstractControlMapper
|
|||||||
$parent->setAttributionControl(false);
|
$parent->setAttributionControl(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
$attributions = deserialize($model->attributions, true);
|
$attributions = StringUtil::deserialize($model->attributions, true);
|
||||||
|
|
||||||
foreach ($attributions as $attribution) {
|
foreach ($attributions as $attribution) {
|
||||||
$definition->addAttribution($attribution);
|
$definition->addAttribution($attribution);
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
|
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
|
||||||
|
|
||||||
|
use Contao\CoreBundle\Framework\Adapter;
|
||||||
|
use Contao\Environment;
|
||||||
use Contao\FilesModel;
|
use Contao\FilesModel;
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
@@ -58,16 +60,25 @@ class FileLayerMapper extends AbstractLayerMapper
|
|||||||
*/
|
*/
|
||||||
private $repositoryManager;
|
private $repositoryManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Environment.
|
||||||
|
*
|
||||||
|
* @var Adapter<Environment>
|
||||||
|
*/
|
||||||
|
private $environmentAdapter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct.
|
* Construct.
|
||||||
*
|
*
|
||||||
* @param RepositoryManager $repositoryManager Repository manager.
|
* @param RepositoryManager $repositoryManager Repository manager.
|
||||||
|
* @param Adapter<Environment> $environmentAdapter Environment adapter.
|
||||||
*/
|
*/
|
||||||
public function __construct(RepositoryManager $repositoryManager)
|
public function __construct(RepositoryManager $repositoryManager, Adapter $environmentAdapter)
|
||||||
{
|
{
|
||||||
$this->repositoryManager = $repositoryManager;
|
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
|
$this->repositoryManager = $repositoryManager;
|
||||||
|
$this->environmentAdapter = $environmentAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -103,25 +114,26 @@ class FileLayerMapper extends AbstractLayerMapper
|
|||||||
$layerId = $this->getElementId($model, $elementId);
|
$layerId = $this->getElementId($model, $elementId);
|
||||||
|
|
||||||
if ($fileModel instanceof FilesModel && $fileModel->type === 'file') {
|
if ($fileModel instanceof FilesModel && $fileModel->type === 'file') {
|
||||||
|
$url = $this->environmentAdapter->get('url') . '/' . $fileModel->path;
|
||||||
switch ($model->fileFormat) {
|
switch ($model->fileFormat) {
|
||||||
case 'gpx':
|
case 'gpx':
|
||||||
$layer = new Gpx($layerId, $fileModel->path);
|
$layer = new Gpx($layerId, $url);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'kml':
|
case 'kml':
|
||||||
$layer = new Kml($layerId, $fileModel->path);
|
$layer = new Kml($layerId, $url);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'wkt':
|
case 'wkt':
|
||||||
$layer = new Wkt($layerId, $fileModel->path);
|
$layer = new Wkt($layerId, $url);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'geojson':
|
case 'geojson':
|
||||||
$layer = new OmnivoreGeoJson($layerId, $fileModel->path);
|
$layer = new OmnivoreGeoJson($layerId, $url);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'topojson':
|
case 'topojson':
|
||||||
$layer = new TopoJson($layerId, $fileModel->path);
|
$layer = new TopoJson($layerId, $url);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
|
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
|
||||||
|
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
use Netzmacht\Contao\Leaflet\Frontend\RequestUrl;
|
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\GeoJsonMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\GeoJsonMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
||||||
@@ -24,6 +23,7 @@ use Netzmacht\LeafletPHP\Definition;
|
|||||||
use Netzmacht\LeafletPHP\Definition\Group\GeoJson;
|
use Netzmacht\LeafletPHP\Definition\Group\GeoJson;
|
||||||
use Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson as OmnivoreGeoJson;
|
use Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson as OmnivoreGeoJson;
|
||||||
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
|
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
|
||||||
|
use Symfony\Component\Routing\RouterInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class MarkersLayerMapper maps the layer model to the markers definition.
|
* Class MarkersLayerMapper maps the layer model to the markers definition.
|
||||||
@@ -46,14 +46,23 @@ class MarkersLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
*/
|
*/
|
||||||
private $repositoryManager;
|
private $repositoryManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Router.
|
||||||
|
*
|
||||||
|
* @var RouterInterface
|
||||||
|
*/
|
||||||
|
private $router;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct.
|
* Construct.
|
||||||
*
|
*
|
||||||
* @param RepositoryManager $repositoryManager Repository manager.
|
* @param RepositoryManager $repositoryManager Repository manager.
|
||||||
|
* @param RouterInterface $router Router.
|
||||||
*/
|
*/
|
||||||
public function __construct(RepositoryManager $repositoryManager)
|
public function __construct(RepositoryManager $repositoryManager, RouterInterface $router)
|
||||||
{
|
{
|
||||||
$this->repositoryManager = $repositoryManager;
|
$this->repositoryManager = $repositoryManager;
|
||||||
|
$this->router = $router;
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
@@ -93,7 +102,7 @@ class MarkersLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
$this->getElementId($model, $elementId),
|
$this->getElementId($model, $elementId),
|
||||||
RequestUrl::create($model->id, null, null, $request),
|
$this->generateUrl((int) $model->id, $request),
|
||||||
[],
|
[],
|
||||||
$layer,
|
$layer,
|
||||||
];
|
];
|
||||||
@@ -101,7 +110,7 @@ class MarkersLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
$this->getElementId($model, $elementId),
|
$this->getElementId($model, $elementId),
|
||||||
RequestUrl::create($model->id, null, null, $request),
|
$this->generateUrl((int) $model->id, $request),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,16 +179,43 @@ class MarkersLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
* @param Model $model The layer model.
|
* @param Model $model The layer model.
|
||||||
* @param Request $request Optional building request.
|
* @param Request $request Optional building request.
|
||||||
*
|
*
|
||||||
* @return \Model\Collection|null
|
* @return \Contao\Model\Collection|null
|
||||||
*/
|
*/
|
||||||
protected function loadMarkerModels(Model $model, Request $request = null)
|
protected function loadMarkerModels(Model $model, Request $request = null)
|
||||||
{
|
{
|
||||||
$repository = $this->repositoryManager->getRepository(MarkerModel::class);
|
$repository = $this->repositoryManager->getRepository(MarkerModel::class);
|
||||||
|
|
||||||
if ($model->boundsMode == 'fit') {
|
if ($model->boundsMode === 'fit') {
|
||||||
return $repository->findByFilter($model->id, $request->getFilter());
|
return $repository->findByFilter($model->id, $request->getFilter());
|
||||||
}
|
}
|
||||||
|
|
||||||
return $repository->findByFilter($model->id);
|
return $repository->findByFilter($model->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate the data url for a layer.
|
||||||
|
*
|
||||||
|
* @param int $layerId The layer id.
|
||||||
|
* @param Request|null $request The request.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
* @SuppressWarnings(PHPMD.Superglobals)
|
||||||
|
*/
|
||||||
|
private function generateUrl(int $layerId, ?Request $request = null): string
|
||||||
|
{
|
||||||
|
$params = ['layerId' => $layerId];
|
||||||
|
|
||||||
|
if ($request && ($filter = $request->getFilter())) {
|
||||||
|
$params['filter'] = $filter::getName();
|
||||||
|
$params['values'] = $filter->toRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($GLOBALS['objPage'])) {
|
||||||
|
$params['context'] = 'page';
|
||||||
|
$params['contextId'] = $GLOBALS['objPage']->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->router->generate('leaflet_layer', $params, RouterInterface::ABSOLUTE_URL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
|
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
|
||||||
|
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Leaflet\Definition\Layer\OverpassLayer;
|
use Netzmacht\Contao\Leaflet\Definition\Layer\OverpassLayer;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
||||||
@@ -146,7 +147,7 @@ class OverpassLayerMapper extends AbstractLayerMapper
|
|||||||
*/
|
*/
|
||||||
private function filterAmenityIconsConfig($amenityIconsConfig)
|
private function filterAmenityIconsConfig($amenityIconsConfig)
|
||||||
{
|
{
|
||||||
$amenityIconsConfig = deserialize($amenityIconsConfig, true);
|
$amenityIconsConfig = StringUtil::deserialize($amenityIconsConfig, true);
|
||||||
$amenityIconsMap = [];
|
$amenityIconsMap = [];
|
||||||
|
|
||||||
foreach ($amenityIconsConfig as $config) {
|
foreach ($amenityIconsConfig as $config) {
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
|
|||||||
|
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
use Contao\Model\Collection;
|
use Contao\Model\Collection;
|
||||||
use Netzmacht\Contao\Leaflet\Frontend\RequestUrl;
|
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\GeoJsonMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\GeoJsonMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
||||||
@@ -25,6 +24,7 @@ use Netzmacht\LeafletPHP\Definition;
|
|||||||
use Netzmacht\LeafletPHP\Definition\Group\GeoJson;
|
use Netzmacht\LeafletPHP\Definition\Group\GeoJson;
|
||||||
use Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson as OmnivoreGeoJson;
|
use Netzmacht\LeafletPHP\Plugins\Omnivore\GeoJson as OmnivoreGeoJson;
|
||||||
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
|
use Netzmacht\LeafletPHP\Value\GeoJson\FeatureCollection;
|
||||||
|
use Symfony\Component\Routing\RouterInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class VectorsLayerMapper maps the layer model for the Vectors layer definition.
|
* Class VectorsLayerMapper maps the layer model for the Vectors layer definition.
|
||||||
@@ -47,14 +47,23 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
*/
|
*/
|
||||||
private $repositoryManager;
|
private $repositoryManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Router.
|
||||||
|
*
|
||||||
|
* @var RouterInterface
|
||||||
|
*/
|
||||||
|
private $router;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct.
|
* Construct.
|
||||||
*
|
*
|
||||||
* @param RepositoryManager $repositoryManager Repository manager.
|
* @param RepositoryManager $repositoryManager Repository manager.
|
||||||
|
* @param RouterInterface $router Router
|
||||||
*/
|
*/
|
||||||
public function __construct(RepositoryManager $repositoryManager)
|
public function __construct(RepositoryManager $repositoryManager, RouterInterface $router)
|
||||||
{
|
{
|
||||||
$this->repositoryManager = $repositoryManager;
|
$this->repositoryManager = $repositoryManager;
|
||||||
|
$this->router = $router;
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
@@ -101,7 +110,7 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
$this->getElementId($model, $elementId),
|
$this->getElementId($model, $elementId),
|
||||||
RequestUrl::create($model->id, null, null, $request),
|
$this->generateUrl((int) $model->id, $request),
|
||||||
[],
|
[],
|
||||||
$layer,
|
$layer,
|
||||||
];
|
];
|
||||||
@@ -109,7 +118,7 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
$this->getElementId($model, $elementId),
|
$this->getElementId($model, $elementId),
|
||||||
RequestUrl::create($model->id, null, null, $request),
|
$this->generateUrl((int) $model->id, $request),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,11 +197,11 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
* Add javascript callbacks.
|
* Add javascript callbacks.
|
||||||
*
|
*
|
||||||
* @param GeoJson $definition The definition.
|
* @param GeoJson $definition The definition.
|
||||||
* @param \Model $model The database model.
|
* @param Model $model The database model.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function addCallbacks(GeoJson $definition, \Model $model)
|
protected function addCallbacks(GeoJson $definition, Model $model)
|
||||||
{
|
{
|
||||||
if ($model->pointToLayer) {
|
if ($model->pointToLayer) {
|
||||||
$definition->setPointToLayer(new Expression($model->pointToLayer));
|
$definition->setPointToLayer(new Expression($model->pointToLayer));
|
||||||
@@ -202,4 +211,31 @@ class VectorsLayerMapper extends AbstractLayerMapper implements GeoJsonMapper
|
|||||||
$definition->setOnEachFeature(new Expression($model->onEachFeature));
|
$definition->setOnEachFeature(new Expression($model->onEachFeature));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate the data url for a layer.
|
||||||
|
*
|
||||||
|
* @param int $layerId The layer id.
|
||||||
|
* @param Request|null $request The request.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
* @SuppressWarnings(PHPMD.Superglobals)
|
||||||
|
*/
|
||||||
|
private function generateUrl(int $layerId, ?Request $request = null): string
|
||||||
|
{
|
||||||
|
$params = ['layerId' => $layerId];
|
||||||
|
|
||||||
|
if ($request && ($filter = $request->getFilter())) {
|
||||||
|
$params['filter'] = $filter::getName();
|
||||||
|
$params['values'] = $filter->toRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($GLOBALS['objPage'])) {
|
||||||
|
$params['context'] = 'page';
|
||||||
|
$params['contextId'] = $GLOBALS['objPage']->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->router->generate('leaflet_layer', $params, RouterInterface::ABSOLUTE_URL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Mapper;
|
namespace Netzmacht\Contao\Leaflet\Mapper;
|
||||||
|
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Leaflet\Model\ControlModel;
|
use Netzmacht\Contao\Leaflet\Model\ControlModel;
|
||||||
use Netzmacht\Contao\Leaflet\Model\MapModel;
|
use Netzmacht\Contao\Leaflet\Model\MapModel;
|
||||||
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
|
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
|
||||||
@@ -195,7 +196,7 @@ class MapMapper extends AbstractMapper
|
|||||||
*/
|
*/
|
||||||
private function buildBoundsCalculation(Map $map, MapModel $model)
|
private function buildBoundsCalculation(Map $map, MapModel $model)
|
||||||
{
|
{
|
||||||
$adjustBounds = deserialize($model->adjustBounds, true);
|
$adjustBounds = StringUtil::deserialize($model->adjustBounds, true);
|
||||||
|
|
||||||
if (in_array('deferred', $adjustBounds)) {
|
if (in_array('deferred', $adjustBounds)) {
|
||||||
$map->setOption('adjustBounds', true);
|
$map->setOption('adjustBounds', true);
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ class OptionsBuilder
|
|||||||
* Build options and conditional options.
|
* Build options and conditional options.
|
||||||
*
|
*
|
||||||
* @param Definition $definition The definition being built.
|
* @param Definition $definition The definition being built.
|
||||||
* @param \Model $model The model.
|
* @param Model $model The model.
|
||||||
*
|
*
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
@@ -147,7 +147,7 @@ class OptionsBuilder
|
|||||||
* Build options.
|
* Build options.
|
||||||
*
|
*
|
||||||
* @param Definition $definition The definition being built.
|
* @param Definition $definition The definition being built.
|
||||||
* @param \Model $model The model.
|
* @param Model $model The model.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@@ -160,11 +160,11 @@ class OptionsBuilder
|
|||||||
* Build conditional options.
|
* Build conditional options.
|
||||||
*
|
*
|
||||||
* @param Definition $definition The definition being built.
|
* @param Definition $definition The definition being built.
|
||||||
* @param \Model $model The model.
|
* @param Model $model The model.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function buildConditionals($definition, \Model $model)
|
private function buildConditionals($definition, Model $model)
|
||||||
{
|
{
|
||||||
foreach ($this->conditional as $column => $conditions) {
|
foreach ($this->conditional as $column => $conditions) {
|
||||||
foreach ($conditions as $value => $options) {
|
foreach ($conditions as $value => $options) {
|
||||||
@@ -210,6 +210,10 @@ class OptionsBuilder
|
|||||||
foreach ($options as $option => $mapping) {
|
foreach ($options as $option => $mapping) {
|
||||||
$default = static::getDefaultOption($option, $definition);
|
$default = static::getDefaultOption($option, $definition);
|
||||||
|
|
||||||
|
if ($model->$mapping === null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($model->$mapping === '1' || $model->$mapping === '') {
|
if ($model->$mapping === '1' || $model->$mapping === '') {
|
||||||
if (((bool) $model->$mapping) !== $default) {
|
if (((bool) $model->$mapping) !== $default) {
|
||||||
static::applyOption($option, $model->$mapping, $definition);
|
static::applyOption($option, $model->$mapping, $definition);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Mapper\Type;
|
namespace Netzmacht\Contao\Leaflet\Mapper\Type;
|
||||||
|
|
||||||
|
use Contao\File;
|
||||||
use Contao\FilesModel;
|
use Contao\FilesModel;
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
@@ -70,16 +71,10 @@ class ImageIconMapper extends AbstractIconMapper
|
|||||||
Request $request = null,
|
Request $request = null,
|
||||||
$elementId = null
|
$elementId = null
|
||||||
) {
|
) {
|
||||||
$arguments = parent::buildConstructArguments($model, $mapper, $request, $elementId);
|
$arguments = parent::buildConstructArguments($model, $mapper, $request, $elementId);
|
||||||
|
$repository = $this->repositoryManager->getRepository(FilesModel::class);
|
||||||
if ($model->iconImage) {
|
$file = $repository->findByUuid($model->iconImage);
|
||||||
$repository = $this->repositoryManager->getRepository(FilesModel::class);
|
$arguments[] = $file ? $file->path : '';
|
||||||
$file = $repository->findByUuid($model->iconImage);
|
|
||||||
|
|
||||||
if ($file) {
|
|
||||||
$arguments[] = $file->path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $arguments;
|
return $arguments;
|
||||||
}
|
}
|
||||||
@@ -116,9 +111,7 @@ class ImageIconMapper extends AbstractIconMapper
|
|||||||
$file = $repository->findByUuid($model->iconImage);
|
$file = $repository->findByUuid($model->iconImage);
|
||||||
|
|
||||||
if ($file) {
|
if ($file) {
|
||||||
$definition->setIconUrl($file->path);
|
$file = new File($file->path);
|
||||||
|
|
||||||
$file = new \File($file->path);
|
|
||||||
$definition->setIconSize([$file->width, $file->height]);
|
$definition->setIconSize([$file->width, $file->height]);
|
||||||
|
|
||||||
if (!$model->iconAnchor) {
|
if (!$model->iconAnchor) {
|
||||||
@@ -162,7 +155,7 @@ class ImageIconMapper extends AbstractIconMapper
|
|||||||
if ($file) {
|
if ($file) {
|
||||||
$definition->setShadowUrl($file->path);
|
$definition->setShadowUrl($file->path);
|
||||||
|
|
||||||
$file = new \File($file->path);
|
$file = new File($file->path);
|
||||||
$definition->setShadowSize([$file->width, $file->height]);
|
$definition->setShadowSize([$file->width, $file->height]);
|
||||||
|
|
||||||
if (!$model->shadowAnchor) {
|
if (!$model->shadowAnchor) {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Mapper\UI;
|
namespace Netzmacht\Contao\Leaflet\Mapper\UI;
|
||||||
|
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\AbstractMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\AbstractMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
||||||
@@ -76,9 +77,9 @@ class PopupMapper extends AbstractMapper
|
|||||||
if ($model->autoPan) {
|
if ($model->autoPan) {
|
||||||
$padding = array_map(
|
$padding = array_map(
|
||||||
function ($value) {
|
function ($value) {
|
||||||
return array_map('intval', trimsplit(',', $value));
|
return array_map('intval', StringUtil::trimsplit(',', $value));
|
||||||
},
|
},
|
||||||
deserialize($model->autoPanPadding, true)
|
StringUtil::deserialize($model->autoPanPadding, true)
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($padding[0] === $padding[1]) {
|
if ($padding[0] === $padding[1]) {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
|
namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
|
||||||
|
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
||||||
use Netzmacht\LeafletPHP\Definition;
|
use Netzmacht\LeafletPHP\Definition;
|
||||||
@@ -67,7 +68,7 @@ class MultiPolylineMapper extends AbstractVectorMapper
|
|||||||
*/
|
*/
|
||||||
protected function createLatLngs(Polyline $definition, Model $model)
|
protected function createLatLngs(Polyline $definition, Model $model)
|
||||||
{
|
{
|
||||||
foreach (deserialize($model->multiData, true) as $ring => $data) {
|
foreach (StringUtil::deserialize($model->multiData, true) as $ring => $data) {
|
||||||
$latLngs = array_map(
|
$latLngs = array_map(
|
||||||
function ($row) {
|
function ($row) {
|
||||||
return LatLng::fromString($row);
|
return LatLng::fromString($row);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
|
namespace Netzmacht\Contao\Leaflet\Mapper\Vector;
|
||||||
|
|
||||||
use Contao\Model;
|
use Contao\Model;
|
||||||
|
use Contao\StringUtil;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||||
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
use Netzmacht\Contao\Leaflet\Mapper\Request;
|
||||||
use Netzmacht\LeafletPHP\Definition\Vector\Rectangle;
|
use Netzmacht\LeafletPHP\Definition\Vector\Rectangle;
|
||||||
@@ -53,7 +54,7 @@ class RectangleMapper extends AbstractVectorMapper
|
|||||||
function ($latLng) {
|
function ($latLng) {
|
||||||
return LatLng::fromString($latLng);
|
return LatLng::fromString($latLng);
|
||||||
},
|
},
|
||||||
deserialize($model->bounds, true)
|
StringUtil::deserialize($model->bounds, true)
|
||||||
);
|
);
|
||||||
|
|
||||||
$arguments = parent::buildConstructArguments($model, $mapper, $request, $elementId);
|
$arguments = parent::buildConstructArguments($model, $mapper, $request, $elementId);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Model;
|
namespace Netzmacht\Contao\Leaflet\Model;
|
||||||
|
|
||||||
|
use Contao\Model;
|
||||||
use Contao\Model\Collection;
|
use Contao\Model\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,7 +20,7 @@ use Contao\Model\Collection;
|
|||||||
*
|
*
|
||||||
* @package Netzmacht\Contao\Leaflet\Model
|
* @package Netzmacht\Contao\Leaflet\Model
|
||||||
*/
|
*/
|
||||||
abstract class AbstractActiveModel extends \Model
|
abstract class AbstractActiveModel extends Model
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Find an active model by its model id.
|
* Find an active model by its model id.
|
||||||
|
|||||||
@@ -12,7 +12,8 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Model;
|
namespace Netzmacht\Contao\Leaflet\Model;
|
||||||
|
|
||||||
use Model\Collection;
|
use Contao\Database;
|
||||||
|
use Contao\Model\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ControlModel for the tl_leaflet_vector table.
|
* Class ControlModel for the tl_leaflet_vector table.
|
||||||
@@ -40,9 +41,10 @@ SELECT l.*, c.mode as controlMode
|
|||||||
FROM tl_leaflet_layer l
|
FROM tl_leaflet_layer l
|
||||||
LEFT JOIN tl_leaflet_control_layer c ON l.id = c.lid
|
LEFT JOIN tl_leaflet_control_layer c ON l.id = c.lid
|
||||||
WHERE c.cid=?
|
WHERE c.cid=?
|
||||||
|
ORDER BY c.sorting
|
||||||
SQL;
|
SQL;
|
||||||
|
|
||||||
$result = \Database::getInstance()
|
$result = Database::getInstance()
|
||||||
->prepare($query)
|
->prepare($query)
|
||||||
->execute($this->id);
|
->execute($this->id);
|
||||||
|
|
||||||
@@ -66,9 +68,10 @@ FROM tl_leaflet_layer l
|
|||||||
LEFT JOIN tl_leaflet_control_layer
|
LEFT JOIN tl_leaflet_control_layer
|
||||||
c ON l.id = c.lid
|
c ON l.id = c.lid
|
||||||
WHERE c.cid=? AND l.active=1
|
WHERE c.cid=? AND l.active=1
|
||||||
|
ORDER BY c.sorting
|
||||||
SQL;
|
SQL;
|
||||||
|
|
||||||
$result = \Database::getInstance()
|
$result = Database::getInstance()
|
||||||
->prepare($query)
|
->prepare($query)
|
||||||
->execute($this->id);
|
->execute($this->id);
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Model;
|
namespace Netzmacht\Contao\Leaflet\Model;
|
||||||
|
|
||||||
use Model\Collection;
|
use Contao\Model\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class LayerModel for the tl_leaflet_layer table.
|
* Class LayerModel for the tl_leaflet_layer table.
|
||||||
|
|||||||
@@ -12,7 +12,9 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Model;
|
namespace Netzmacht\Contao\Leaflet\Model;
|
||||||
|
|
||||||
use Model\Collection;
|
use Contao\Database;
|
||||||
|
use Contao\Model;
|
||||||
|
use Contao\Model\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class MapModel for the tl_leaflet_map table.
|
* Class MapModel for the tl_leaflet_map table.
|
||||||
@@ -22,7 +24,7 @@ use Model\Collection;
|
|||||||
*
|
*
|
||||||
* @package Netzmacht\Contao\Leaflet\Model
|
* @package Netzmacht\Contao\Leaflet\Model
|
||||||
*/
|
*/
|
||||||
class MapModel extends \Model
|
class MapModel extends Model
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Model table.
|
* Model table.
|
||||||
@@ -39,7 +41,7 @@ class MapModel extends \Model
|
|||||||
public function findLayers()
|
public function findLayers()
|
||||||
{
|
{
|
||||||
$query = 'SELECT l.* FROM tl_leaflet_layer l LEFT JOIN tl_leaflet_map_layer m ON l.id = m.lid WHERE m.mid=?';
|
$query = 'SELECT l.* FROM tl_leaflet_layer l LEFT JOIN tl_leaflet_map_layer m ON l.id = m.lid WHERE m.mid=?';
|
||||||
$result = \Database::getInstance()
|
$result = Database::getInstance()
|
||||||
->prepare($query)
|
->prepare($query)
|
||||||
->execute($this->id);
|
->execute($this->id);
|
||||||
|
|
||||||
@@ -65,7 +67,7 @@ ON l.id = m.lid
|
|||||||
WHERE m.mid=? AND l.active=1
|
WHERE m.mid=? AND l.active=1
|
||||||
SQL;
|
SQL;
|
||||||
|
|
||||||
$result = \Database::getInstance()->prepare($query)->execute($this->id);
|
$result = Database::getInstance()->prepare($query)->execute($this->id);
|
||||||
|
|
||||||
if ($result->numRows) {
|
if ($result->numRows) {
|
||||||
return Collection::createFromDbResult($result, 'tl_leaflet_layer');
|
return Collection::createFromDbResult($result, 'tl_leaflet_layer');
|
||||||
|
|||||||
@@ -12,7 +12,9 @@
|
|||||||
|
|
||||||
namespace Netzmacht\Contao\Leaflet\Model;
|
namespace Netzmacht\Contao\Leaflet\Model;
|
||||||
|
|
||||||
|
use Contao\Model\Collection;
|
||||||
use Netzmacht\Contao\Leaflet\Filter\BboxFilter;
|
use Netzmacht\Contao\Leaflet\Filter\BboxFilter;
|
||||||
|
use Netzmacht\Contao\Leaflet\Filter\DistanceFilter;
|
||||||
use Netzmacht\Contao\Leaflet\Filter\Filter;
|
use Netzmacht\Contao\Leaflet\Filter\Filter;
|
||||||
use Netzmacht\LeafletPHP\Value\LatLngBounds;
|
use Netzmacht\LeafletPHP\Value\LatLngBounds;
|
||||||
|
|
||||||
@@ -33,21 +35,35 @@ class MarkerModel extends AbstractActiveModel
|
|||||||
/**
|
/**
|
||||||
* Find by a filter.
|
* Find by a filter.
|
||||||
*
|
*
|
||||||
* @param int $pid The parent id.
|
* @param int $pid The parent id.
|
||||||
* @param Filter $filter The filter.
|
* @param Filter|null $filter The filter.
|
||||||
*
|
*
|
||||||
* @return \Model\Collection|null
|
* @return Collection|null
|
||||||
*/
|
*/
|
||||||
public static function findByFilter($pid, Filter $filter = null)
|
public static function findByFilter($pid, ?Filter $filter = null)
|
||||||
{
|
{
|
||||||
if (!$filter) {
|
if (!$filter) {
|
||||||
return static::findActiveBy('pid', $pid, ['order' => 'sorting']);
|
$table = static::getTable();
|
||||||
|
|
||||||
|
return static::findBy(
|
||||||
|
[
|
||||||
|
$table . '.active=1',
|
||||||
|
$table . '.pid=?',
|
||||||
|
$table . '.latitude IS NOT NULL',
|
||||||
|
$table . '.longitude IS NOT NULL',
|
||||||
|
],
|
||||||
|
[$pid],
|
||||||
|
['order' => 'sorting']
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($filter->getName()) {
|
switch (true) {
|
||||||
case 'bbox':
|
case $filter instanceof BboxFilter:
|
||||||
return static::findByBBoxFilter($pid, $filter);
|
return static::findByBBoxFilter($pid, $filter);
|
||||||
|
|
||||||
|
case $filter instanceof DistanceFilter:
|
||||||
|
return static::findByDistanceFilter($pid, $filter);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -59,15 +75,16 @@ class MarkerModel extends AbstractActiveModel
|
|||||||
* @param int $pid The layer id.
|
* @param int $pid The layer id.
|
||||||
* @param BboxFilter $filter The bbox filter.
|
* @param BboxFilter $filter The bbox filter.
|
||||||
*
|
*
|
||||||
* @return \Model\Collection|null
|
* @return Collection|null|MarkerModel[]
|
||||||
*/
|
*/
|
||||||
public static function findByBBoxFilter($pid, BboxFilter $filter)
|
public static function findByBBoxFilter($pid, BboxFilter $filter)
|
||||||
{
|
{
|
||||||
|
$table = static::getTable();
|
||||||
$columns = [
|
$columns = [
|
||||||
'active=1',
|
$table . '.active=1',
|
||||||
'pid=?',
|
$table . '.pid=?',
|
||||||
'latitude > ? AND latitude < ?',
|
$table . '.latitude > ? AND ' . $table . '.latitude < ?',
|
||||||
'longitude > ? AND longitude < ?',
|
$table . '.longitude > ? AND ' . $table . '.longitude < ?',
|
||||||
];
|
];
|
||||||
|
|
||||||
/** @var LatLngBounds $bounds */
|
/** @var LatLngBounds $bounds */
|
||||||
@@ -80,6 +97,39 @@ class MarkerModel extends AbstractActiveModel
|
|||||||
$bounds->getNorthEast()->getLongitude(),
|
$bounds->getNorthEast()->getLongitude(),
|
||||||
];
|
];
|
||||||
|
|
||||||
return static::findBy($columns, $values, ['order' => 'sorting']);
|
return static::findBy($columns, $values, ['order' => $table . '.sorting']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find marker by distance filter.
|
||||||
|
*
|
||||||
|
* @param int $pid The layer id.
|
||||||
|
* @param DistanceFilter $filter THe distance filter.
|
||||||
|
*
|
||||||
|
* @return Collection|null|MarkerModel[]
|
||||||
|
*/
|
||||||
|
public static function findByDistanceFilter($pid, DistanceFilter $filter): ?Collection
|
||||||
|
{
|
||||||
|
$table = static::getTable();
|
||||||
|
$query = <<<SQL
|
||||||
|
round(
|
||||||
|
sqrt(
|
||||||
|
power( 2 * pi() / 360 * (? - {$table}.latitude) * 6371,2)
|
||||||
|
+ power( 2 * pi() / 360 * (? - {$table}.longitude) * 6371 * COS( 2 * pi() / 360 * (? + {$table}.latitude) * 0.5 ),2)
|
||||||
|
)
|
||||||
|
) <= ?
|
||||||
|
SQL;
|
||||||
|
|
||||||
|
$center = $filter->getCenter();
|
||||||
|
$latitude = $center->getLatitude();
|
||||||
|
$longitude = $center->getLongitude();
|
||||||
|
$values = [$pid, $latitude, $longitude, $latitude, $filter->getRadius()];
|
||||||
|
$columns = [
|
||||||
|
$table . '.active=1',
|
||||||
|
$table . '.pid=?',
|
||||||
|
$query
|
||||||
|
];
|
||||||
|
|
||||||
|
return static::findBy($columns, $values, ['order' => $table . '.sorting']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user