Files
contao-leaflet-maps/src/Frontend/Module/MapModuleFactory.php
2022-02-22 09:52:12 +01:00

115 lines
2.7 KiB
PHP

<?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\Frontend\Module;
use Contao\CoreBundle\Framework\Adapter;
use Contao\Input;
use Netzmacht\Contao\Leaflet\MapProvider;
use Netzmacht\Contao\Toolkit\Component\Component;
use Netzmacht\Contao\Toolkit\Component\ComponentFactory;
use Netzmacht\Contao\Toolkit\Data\Model\RepositoryManager;
use Symfony\Component\Templating\EngineInterface as TemplateEngine;
use Symfony\Contracts\Translation\TranslatorInterface as Translator;
/**
* Class MapElementFactory
*
* @package Netzmacht\Contao\Leaflet\Frontend\ContentElement
*/
class MapModuleFactory implements ComponentFactory
{
/**
* Template engine.
*
* @var TemplateEngine
*/
private $templating;
/**
* Translator.
*
* @var Translator
*/
private $translator;
/**
* Map provider.
*
* @var MapProvider
*/
private $mapProvider;
/**
* Input adapter.
*
* @var Input|Adapter
*/
private $input;
/**
* Repository manager.
*
* @var RepositoryManager
*/
private $repositoryManager;
/**
* MapElementFactory constructor.
*
* @param TemplateEngine $engine Template engine.
* @param Translator $translator Translator.
* @param MapProvider $mapProvider Map provider.
* @param RepositoryManager $repositoryManager Repository manager.
* @param Input|Adapter $input Input adapter.
*/
public function __construct(
TemplateEngine $engine,
Translator $translator,
MapProvider $mapProvider,
RepositoryManager $repositoryManager,
$input
) {
$this->templating = $engine;
$this->translator = $translator;
$this->mapProvider = $mapProvider;
$this->input = $input;
$this->repositoryManager = $repositoryManager;
}
/**
* {@inheritDoc}
*/
public function supports($model): bool
{
return $model->type === 'leaflet';
}
/**
* {@inheritDoc}
*/
public function create($model, string $column): Component
{
return new MapModule(
$model,
$this->templating,
$this->translator,
$this->mapProvider,
$this->repositoryManager,
$this->input,
$column
);
}
}