mirror of
https://github.com/netzmacht/contao-leaflet-maps.git
synced 2025-11-28 19:13:55 +01:00
Rewrite about page using own route (Close #48).
This commit is contained in:
@@ -21,6 +21,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- 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
|
||||
|
||||
- Rewritten about page using own route (#48).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Pressing enter on backend geocode control doesn't submit form anymore.
|
||||
|
||||
@@ -10,32 +10,59 @@
|
||||
* @filesource
|
||||
*/
|
||||
|
||||
namespace Netzmacht\Contao\Leaflet\Backend;
|
||||
namespace Netzmacht\Contao\Leaflet\Backend\Action;
|
||||
|
||||
use Contao\BackendTemplate;
|
||||
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface as Engine;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
/**
|
||||
* Credits backend module.
|
||||
*
|
||||
* @package Netzmacht\Contao\Leaflet\Backend
|
||||
*/
|
||||
class About
|
||||
final class AboutAction
|
||||
{
|
||||
/**
|
||||
* Templating engine.
|
||||
*
|
||||
* @var Engine
|
||||
*/
|
||||
private $engine;
|
||||
|
||||
/**
|
||||
* Project directory.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $projectDir;
|
||||
|
||||
/**
|
||||
* AboutAction constructor.
|
||||
*
|
||||
* @param Engine $engine Templating engine.
|
||||
* @param string $projectDir Project directory.
|
||||
*/
|
||||
public function __construct(Engine $engine, string $projectDir)
|
||||
{
|
||||
$this->engine = $engine;
|
||||
$this->projectDir = $projectDir;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the backend view.
|
||||
*
|
||||
* @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';
|
||||
$template->libraries = $this->getLibraries();
|
||||
[$data['version'], $data['dependencies']] = $this->extractFromComposer();
|
||||
|
||||
list($template->version, $template->dependencies) = $this->extractFromComposer();
|
||||
|
||||
return $template->parse();
|
||||
return $this->engine->renderResponse('@NetzmachtContaoLeaflet/backend/about.html.twig', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -45,7 +72,7 @@ class About
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.Superglobals)
|
||||
*/
|
||||
private function getLibraries()
|
||||
private function getLibraries(): array
|
||||
{
|
||||
return array_map(
|
||||
function ($library) {
|
||||
@@ -70,7 +97,7 @@ class About
|
||||
array_filter(
|
||||
$GLOBALS['LEAFLET_LIBRARIES'],
|
||||
function ($library) {
|
||||
return isset($library['name']) && isset($library['license']);
|
||||
return isset($library['name'], $library['license']);
|
||||
}
|
||||
)
|
||||
);
|
||||
@@ -81,10 +108,10 @@ class About
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function extractFromComposer()
|
||||
private function extractFromComposer(): array
|
||||
{
|
||||
$extFile = TL_ROOT . '/vendor/netzmacht/contao-leaflet-maps/composer.json';
|
||||
$lockFile = TL_ROOT . '/composer.lock';
|
||||
$extFile = $this->projectDir . '/vendor/netzmacht/contao-leaflet-maps/composer.json';
|
||||
$lockFile = $this->projectDir . '/composer.lock';
|
||||
|
||||
if (!file_exists($extFile) || !file_exists($lockFile)) {
|
||||
return [];
|
||||
@@ -61,11 +61,6 @@ class Plugin implements BundlePluginInterface, RoutingPluginInterface
|
||||
return null;
|
||||
}
|
||||
|
||||
$collection = $loader->load(__DIR__ . '/../Resources/config/routing.yml');
|
||||
if ($collection instanceof RouteCollection) {
|
||||
$collection->addPrefix('leaflet/api');
|
||||
}
|
||||
|
||||
return $collection;
|
||||
return $loader->load(__DIR__ . '/../Resources/config/routing.yml');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,3 +113,13 @@ services:
|
||||
- '@netzmacht.contao_leaflet.definition.builder'
|
||||
tags:
|
||||
- { 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'}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
leaflet_layer:
|
||||
path: /layer/{layerId}
|
||||
path: /leaflet/api/layer/{layerId}
|
||||
controller: Netzmacht\Contao\Leaflet\Frontend\Action\LayerDataAction
|
||||
defaults:
|
||||
_leaflet_scope: page
|
||||
@@ -9,3 +9,10 @@ leaflet_layer:
|
||||
_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
|
||||
|
||||
@@ -131,3 +131,8 @@ services:
|
||||
arguments:
|
||||
- '@netzmacht.contao_leaflet.map.provider'
|
||||
- '@netzmacht.contao_leaflet.filter_factory'
|
||||
|
||||
Netzmacht\Contao\Leaflet\Backend\Action\AboutAction:
|
||||
arguments:
|
||||
- '@templating'
|
||||
- '%kernel.project_dir%'
|
||||
|
||||
@@ -40,11 +40,6 @@ array_insert(
|
||||
'stylesheet' => 'bundles/netzmachtcontaoleaflet/css/backend.css',
|
||||
'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',
|
||||
],
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
@@ -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" target="_blank">
|
||||
<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>
|
||||
124
src/Bundle/Resources/views/backend/about.html.twig
Normal file
124
src/Bundle/Resources/views/backend/about.html.twig
Normal file
@@ -0,0 +1,124 @@
|
||||
{% extends "@ContaoCore/Backend/be_page.html.twig" %}
|
||||
|
||||
{% block headline %}{{ "MOD.leaflet_about.1"|trans({}, 'contao_modules') }}{% 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>
|
||||
<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 %}
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user