mirror of
https://github.com/netzmacht/contao-leaflet-maps.git
synced 2025-11-28 11:04:08 +01:00
Rework libraries handling so that libraries don't have to be ported to contao 4.4 only yet.
This commit is contained in:
95
src/Frontend/Assets/LibrariesConfiguration.php
Normal file
95
src/Frontend/Assets/LibrariesConfiguration.php
Normal file
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Leaflet maps for Contao CMS.
|
||||
*
|
||||
* @package contao-leaflet-maps
|
||||
* @author David Molineus <david.molineus@netzmacht.de>
|
||||
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||
* @filesource
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Netzmacht\Contao\Leaflet\Frontend\Assets;
|
||||
|
||||
use Contao\CoreBundle\Framework\ContaoFrameworkInterface as ContaoFramework;
|
||||
use Traversable;
|
||||
|
||||
/**
|
||||
* Class LibrariesConfiguration
|
||||
*
|
||||
* @package Netzmacht\Contao\Leaflet\Frontend\Assets
|
||||
*/
|
||||
class LibrariesConfiguration implements \IteratorAggregate, \ArrayAccess
|
||||
{
|
||||
/**
|
||||
* @var ContaoFramework
|
||||
*/
|
||||
private $framework;
|
||||
|
||||
/**
|
||||
* LibrariesConfiguration constructor.
|
||||
*
|
||||
* @param ContaoFramework $framework
|
||||
*/
|
||||
public function __construct(ContaoFramework $framework)
|
||||
{
|
||||
$this->framework = $framework;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.Superglobals)
|
||||
*/
|
||||
public function getIterator()
|
||||
{
|
||||
$this->framework->initialize();
|
||||
|
||||
return new \ArrayIterator($GLOBALS['LEAFLET_LIBRARIES']);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.Superglobals)
|
||||
*/
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
$this->framework->initialize();
|
||||
|
||||
return isset($GLOBALS['LEAFLET_LIBRARIES'][$offset]);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.Superglobals)
|
||||
*/
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
return $GLOBALS['LEAFLET_LIBRARIES'][$offset];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.Superglobals)
|
||||
*/
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
$GLOBALS['LEAFLET_LIBRARIES'][$offset] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.Superglobals)
|
||||
*/
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
unset($GLOBALS['LEAFLET_LIBRARIES'][$offset]);
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ declare(strict_types=1);
|
||||
namespace Netzmacht\Contao\Leaflet\Listener;
|
||||
|
||||
use Netzmacht\Contao\Leaflet\ContaoAssets;
|
||||
use Netzmacht\Contao\Leaflet\Frontend\Assets\LibrariesConfiguration;
|
||||
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
|
||||
use Netzmacht\Contao\Leaflet\Model\IconModel;
|
||||
use Netzmacht\LeafletPHP\Assets;
|
||||
@@ -45,7 +46,7 @@ class LoadAssetsListener
|
||||
/**
|
||||
* Libraries.
|
||||
*
|
||||
* @var array
|
||||
* @var LibrariesConfiguration
|
||||
*/
|
||||
private $libraries;
|
||||
|
||||
@@ -54,9 +55,9 @@ class LoadAssetsListener
|
||||
*
|
||||
* @param Assets $assets Assets.
|
||||
* @param DefinitionMapper $definitionMapper Definition mapper.
|
||||
* @param array $libraries Libraries.
|
||||
* @param LibrariesConfiguration $libraries Libraries.
|
||||
*/
|
||||
public function __construct(Assets $assets, DefinitionMapper $definitionMapper, array $libraries)
|
||||
public function __construct(Assets $assets, DefinitionMapper $definitionMapper, LibrariesConfiguration $libraries)
|
||||
{
|
||||
$this->assets = $assets;
|
||||
$this->definitionMapper = $definitionMapper;
|
||||
@@ -70,7 +71,10 @@ class LoadAssetsListener
|
||||
*/
|
||||
public function onGetJavascriptEvent(): void
|
||||
{
|
||||
$this->assets->addJavascript('assets/leaflet/maps/contao-leaflet.js', ContaoAssets::TYPE_FILE);
|
||||
$this->assets->addJavascript(
|
||||
'web/bundles/netzmachtcontaoleaflet/js/contao-leaflet.js',
|
||||
ContaoAssets::TYPE_FILE
|
||||
);
|
||||
|
||||
$collection = IconModel::findBy('active', true);
|
||||
|
||||
|
||||
72
src/Listener/RegisterLibrariesListener.php
Normal file
72
src/Listener/RegisterLibrariesListener.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Leaflet maps for Contao CMS.
|
||||
*
|
||||
* @package contao-leaflet-maps
|
||||
* @author David Molineus <david.molineus@netzmacht.de>
|
||||
* @copyright 2016-2017 netzmacht David Molineus. All rights reserved.
|
||||
* @license LGPL-3.0 https://github.com/netzmacht/contao-leaflet-maps/blob/master/LICENSE
|
||||
* @filesource
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Netzmacht\Contao\Leaflet\Listener;
|
||||
|
||||
use Netzmacht\Contao\Leaflet\Frontend\Assets\LibrariesConfiguration;
|
||||
use Netzmacht\LeafletPHP\Assets;
|
||||
use Netzmacht\LeafletPHP\Leaflet;
|
||||
|
||||
/**
|
||||
* Class RegisterLibrariesListener.
|
||||
*
|
||||
* @package Netzmacht\Contao\Leaflet\Listener
|
||||
*/
|
||||
final class RegisterLibrariesListener
|
||||
{
|
||||
/**
|
||||
* Libraries configuration.
|
||||
*
|
||||
* @var LibrariesConfiguration
|
||||
*/
|
||||
private $libraries;
|
||||
|
||||
/**
|
||||
* Leaflet builder.
|
||||
*
|
||||
* @var Leaflet
|
||||
*/
|
||||
private $leaflet;
|
||||
|
||||
/**
|
||||
* RegisterLibrariesListener constructor.
|
||||
*
|
||||
* @param LibrariesConfiguration $libraries Libraries configuration.
|
||||
* @param Leaflet $leaflet Leaflet builder.
|
||||
*/
|
||||
public function __construct(LibrariesConfiguration $libraries, Leaflet $leaflet)
|
||||
{
|
||||
$this->libraries = $libraries;
|
||||
$this->leaflet = $leaflet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the on initialize system hook.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function onInitializeSystem(): void
|
||||
{
|
||||
foreach ($this->libraries as $name => $assets) {
|
||||
if (!empty($assets['css'])) {
|
||||
list ($source, $type) = (array) $assets['css'];
|
||||
$this->leaflet->registerStylesheet($name, $source, $type ?: Assets::TYPE_FILE);
|
||||
}
|
||||
if (!empty($assets['javascript'])) {
|
||||
list ($source, $type) = (array) $assets['javascript'];
|
||||
$this->leaflet->registerJavascript($name, $source, $type ?: Assets::TYPE_FILE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -58,6 +58,3 @@ parameters:
|
||||
- 'id'
|
||||
- 'title'
|
||||
- 'alias'
|
||||
|
||||
# Leaflet libraries files
|
||||
netzmacht.contao_leaflet_maps.libraries: []
|
||||
|
||||
@@ -65,6 +65,13 @@ services:
|
||||
arguments:
|
||||
- '@netzmacht.contao_leaflet_maps.map.assets'
|
||||
- '@netzmacht.contao_leaflet_maps.definition.mapper'
|
||||
- '%netzmacht.contao_leaflet_maps.libraries%'
|
||||
- '@netzmacht.contao_leaflet_maps.libraries'
|
||||
tags:
|
||||
- { name: 'kernel.event_listener', event: 'netzmacht.contao_leaflet.get_javascript', method: 'onGetJavascriptEvent' }
|
||||
|
||||
netzmacht.contao_leaflet_maps.listeners.register_libraries:
|
||||
class: Netzmacht\Contao\Leaflet\Listener\RegisterLibrariesListener
|
||||
arguments:
|
||||
- '@netzmacht.contao_leaflet_maps.libraries'
|
||||
- '@netzmacht.contao_leaflet_maps.definition.builder'
|
||||
|
||||
|
||||
@@ -17,6 +17,11 @@ services:
|
||||
- [] # TODO: Rework filter handling.
|
||||
- '%kernel.debug%'
|
||||
|
||||
netzmacht.contao_leaflet_maps.libraries:
|
||||
class: Netzmacht\Contao\Leaflet\Frontend\Assets\LibrariesConfiguration
|
||||
arguments:
|
||||
- '@contao.framework'
|
||||
|
||||
netzmacht.contao_leaflet_maps.cache:
|
||||
alias: 'netzmacht.contao_leaflet_maps.cache.default'
|
||||
|
||||
|
||||
@@ -84,3 +84,11 @@ $GLOBALS['TL_MODELS']['tl_leaflet_marker'] = \Netzmacht\Contao\Leaflet\Model\Ma
|
||||
$GLOBALS['TL_MODELS']['tl_leaflet_popup'] = \Netzmacht\Contao\Leaflet\Model\PopupModel::class;
|
||||
$GLOBALS['TL_MODELS']['tl_leaflet_style'] = \Netzmacht\Contao\Leaflet\Model\StyleModel::class;
|
||||
$GLOBALS['TL_MODELS']['tl_leaflet_vector'] = \Netzmacht\Contao\Leaflet\Model\VectorModel::class;
|
||||
|
||||
/*
|
||||
* Hooks.
|
||||
*/
|
||||
$GLOBALS['TL_HOOKS']['initializeSystem'][] = [
|
||||
'netzmacht.contao_leaflet_maps.listeners.register_libraries',
|
||||
'onInitializeSystem'
|
||||
];
|
||||
|
||||
1
src/Resources/public/js/contao-leaflet.js
Normal file
1
src/Resources/public/js/contao-leaflet.js
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user