Refactor frontend integration using dependency injection.

This commit is contained in:
David Molineus
2016-10-06 08:34:55 +02:00
parent 4e4380270b
commit 2c9dd0ad48
4 changed files with 53 additions and 10 deletions

View File

@@ -14,6 +14,7 @@ use Netzmacht\Contao\Leaflet\Alias\DefaultAliasFilter;
use Netzmacht\Contao\Leaflet\Boot; use Netzmacht\Contao\Leaflet\Boot;
use Netzmacht\Contao\Leaflet\ContaoAssets; use Netzmacht\Contao\Leaflet\ContaoAssets;
use Netzmacht\Contao\Leaflet\Dca\ControlCallbacks; use Netzmacht\Contao\Leaflet\Dca\ControlCallbacks;
use Netzmacht\Contao\Leaflet\Dca\FrontendIntegration;
use Netzmacht\Contao\Leaflet\Dca\LayerCallbacks; use Netzmacht\Contao\Leaflet\Dca\LayerCallbacks;
use Netzmacht\Contao\Leaflet\Dca\MapCallbacks; use Netzmacht\Contao\Leaflet\Dca\MapCallbacks;
use Netzmacht\Contao\Leaflet\DependencyInjection\LeafletServices; use Netzmacht\Contao\Leaflet\DependencyInjection\LeafletServices;
@@ -199,6 +200,19 @@ $container['leaflet.dca.control-callbacks'] = $container->share(
} }
); );
/**
* Callback helper class for frontend integration.
*
* @return FrontendIntegration
*/
$container['leaflet.dca.frontend-integration'] = $container->share(
function ($container) {
return new FrontendIntegration(
$container[Services::TRANSLATOR]
);
}
);
/** /**
* Component factory for content element. * Component factory for content element.
* *

View File

@@ -22,9 +22,9 @@ $GLOBALS['TL_DCA']['tl_content']['fields']['leaflet_map'] = array(
'label' => &$GLOBALS['TL_LANG']['tl_content']['leaflet_map'], 'label' => &$GLOBALS['TL_LANG']['tl_content']['leaflet_map'],
'inputType' => 'select', 'inputType' => 'select',
'exclude' => true, 'exclude' => true,
'options_callback' => array('Netzmacht\Contao\Leaflet\Dca\FrontendIntegration', 'getMaps'), 'options_callback' => \Netzmacht\Contao\Leaflet\Dca\FrontendIntegration::callback('getMaps'),
'wizard' => array( 'wizard' => array(
array('Netzmacht\Contao\Leaflet\Dca\FrontendIntegration', 'getEditMapLink'), \Netzmacht\Contao\Leaflet\Dca\FrontendIntegration::callback('getEditMapLink'),
), ),
'eval' => array( 'eval' => array(
'tl_class' => 'w50 wizard', 'tl_class' => 'w50 wizard',

View File

@@ -22,9 +22,9 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['leaflet_map'] = array(
'label' => &$GLOBALS['TL_LANG']['tl_module']['leaflet_map'], 'label' => &$GLOBALS['TL_LANG']['tl_module']['leaflet_map'],
'inputType' => 'select', 'inputType' => 'select',
'exclude' => true, 'exclude' => true,
'options_callback' => array('Netzmacht\Contao\Leaflet\Dca\FrontendIntegration', 'getMaps'), 'options_callback' => \Netzmacht\Contao\Leaflet\Dca\FrontendIntegration::callback('getMaps'),
'wizard' => array( 'wizard' => array(
array('Netzmacht\Contao\Leaflet\Dca\FrontendIntegration', 'getEditMapLink'), \Netzmacht\Contao\Leaflet\Dca\FrontendIntegration::callback('getEditMapLink'),
), ),
'eval' => array( 'eval' => array(
'tl_class' => 'w50 wizard', 'tl_class' => 'w50 wizard',

View File

@@ -11,6 +11,8 @@
namespace Netzmacht\Contao\Leaflet\Dca; namespace Netzmacht\Contao\Leaflet\Dca;
use ContaoCommunityAlliance\Translator\TranslatorInterface as Translator;
use Netzmacht\Contao\Toolkit\Dca\Callback\CallbackFactory;
use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder; use Netzmacht\Contao\Toolkit\Dca\Options\OptionsBuilder;
use Netzmacht\Contao\Leaflet\Model\MapModel; use Netzmacht\Contao\Leaflet\Model\MapModel;
@@ -21,6 +23,35 @@ use Netzmacht\Contao\Leaflet\Model\MapModel;
*/ */
class FrontendIntegration class FrontendIntegration
{ {
/**
* Translator.
*
* @var Translator
*/
private $translator;
/**
* FrontendIntegration constructor.
*
* @param Translator $translator Translator.
*/
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
/**
* Generate the callback definition.
*
* @param string $methodName Callback method name.
*
* @return callable
*/
public static function callback($methodName)
{
return CallbackFactory::service('leaflet.dca.frontend-integration', $methodName);
}
/** /**
* Get all leaflet maps. * Get all leaflet maps.
* *
@@ -39,8 +70,6 @@ class FrontendIntegration
* @param \DataContainer $dataContainer The dataContainer driver. * @param \DataContainer $dataContainer The dataContainer driver.
* *
* @return string * @return string
*
* @SuppressWarnings(PHPMD.Superglobals)
*/ */
public function getEditMapLink($dataContainer) public function getEditMapLink($dataContainer)
{ {
@@ -53,23 +82,23 @@ class FrontendIntegration
return sprintf( return sprintf(
'<a href="%s%s&amp;popup=1&amp;rt=%s" %s>%s</a>', '<a href="%s%s&amp;popup=1&amp;rt=%s" %s>%s</a>',
'contao/main.php?do=leaflet&amp;table=tl_leaflet_map&amp;act=edit&amp;id=', 'contao/main.php?do=leaflet_map&amp;table=tl_leaflet_map&amp;act=edit&amp;id=',
$dataContainer->value, $dataContainer->value,
\RequestToken::get(), \RequestToken::get(),
sprintf( sprintf(
$pattern, $pattern,
specialchars(sprintf($GLOBALS['TL_LANG']['tl_content']['editalias'][1], $dataContainer->value)), specialchars($this->translator->translate('editalias.1', 'tl_content', [$dataContainer->value])),
specialchars( specialchars(
str_replace( str_replace(
"'", "'",
"\\'", "\\'",
sprintf($GLOBALS['TL_LANG']['tl_content']['editalias'][1], $dataContainer->value) sprintf($this->translator->translate('editalias.1', 'tl_content', [$dataContainer->value]))
) )
) )
), ),
\Image::getHtml( \Image::getHtml(
'alias.gif', 'alias.gif',
$GLOBALS['TL_LANG']['tl_content']['editalias'][0], $this->translator->translate('editalias.0', 'tl_content', [$dataContainer->value]),
'style="vertical-align:top"' 'style="vertical-align:top"'
) )
); );