diff --git a/module/assets/css/backend.css b/module/assets/css/backend.css
index 3e5bb71..187249c 100644
--- a/module/assets/css/backend.css
+++ b/module/assets/css/backend.css
@@ -1,6 +1,6 @@
.tl_listing_container.tree_view ul > li.tl_file {
- background: url('./../img/folPlus.gif') no-repeat 6px 1px;
+ background: url('./../img/fol-placeholder.gif') no-repeat 6px 1px;
}
.tl_listing_container.tree_view > ul > li.tl_file {
diff --git a/module/assets/img/control.png b/module/assets/img/control.png
new file mode 100644
index 0000000..f906ed6
Binary files /dev/null and b/module/assets/img/control.png differ
diff --git a/module/assets/img/fol-placeholder.gif b/module/assets/img/fol-placeholder.gif
new file mode 100644
index 0000000..9ee6972
Binary files /dev/null and b/module/assets/img/fol-placeholder.gif differ
diff --git a/module/assets/img/folPlus.gif b/module/assets/img/folPlus.gif
deleted file mode 100644
index 19c9f89..0000000
Binary files a/module/assets/img/folPlus.gif and /dev/null differ
diff --git a/module/assets/img/geolocation_sight.png b/module/assets/img/geolocation_sight.png
new file mode 100644
index 0000000..f5a18e3
Binary files /dev/null and b/module/assets/img/geolocation_sight.png differ
diff --git a/module/assets/img/geotag.png b/module/assets/img/geotag.png
new file mode 100644
index 0000000..8de9852
Binary files /dev/null and b/module/assets/img/geotag.png differ
diff --git a/module/assets/img/sitemap_image.png b/module/assets/img/sitemap_image.png
new file mode 100644
index 0000000..20b75b9
Binary files /dev/null and b/module/assets/img/sitemap_image.png differ
diff --git a/module/assets/img/table_heatmap.png b/module/assets/img/table_heatmap.png
new file mode 100644
index 0000000..f5b1782
Binary files /dev/null and b/module/assets/img/table_heatmap.png differ
diff --git a/module/assets/img/tile.png b/module/assets/img/tile.png
new file mode 100644
index 0000000..44d804d
Binary files /dev/null and b/module/assets/img/tile.png differ
diff --git a/module/config/config.php b/module/config/config.php
index 70a1ef2..c01540a 100644
--- a/module/config/config.php
+++ b/module/config/config.php
@@ -4,7 +4,7 @@
* Backend module.
*/
$GLOBALS['BE_MOD']['content']['leaflet'] = array(
- 'tables' => array('tl_leaflet_map', 'tl_leaflet_layer'),
+ 'tables' => array('tl_leaflet_map', 'tl_leaflet_layer', 'tl_leaflet_control'),
'icon' => 'system/modules/leaflet/assets/img/leaflet.png',
'stylesheet' => 'system/modules/leaflet/assets/css/backend.css',
);
@@ -18,8 +18,9 @@ $GLOBALS['TL_CTE']['includes']['leaflet'] = 'Netzmacht\Contao\Leaflet\LeafletMap
/*
* Models.
*/
-$GLOBALS['TL_MODELS']['tl_leaflet_map'] = 'Netzmacht\Contao\Leaflet\Model\MapModel';
-$GLOBALS['TL_MODELS']['tl_leaflet_layer'] = 'Netzmacht\Contao\Leaflet\Model\LayerModel';
+$GLOBALS['TL_MODELS']['tl_leaflet_map'] = 'Netzmacht\Contao\Leaflet\Model\MapModel';
+$GLOBALS['TL_MODELS']['tl_leaflet_layer'] = 'Netzmacht\Contao\Leaflet\Model\LayerModel';
+$GLOBALS['TL_MODELS']['tl_leaflet_control'] = 'Netzmacht\Contao\Leaflet\Model\ControlModel';
/*
@@ -30,6 +31,10 @@ $GLOBALS['TL_MODELS']['tl_leaflet_layer'] = 'Netzmacht\Contao\Leaflet\Model\Laye
$GLOBALS['LEAFLET_MAPPERS'] = array();
$GLOBALS['LEAFLET_MAPPERS'][] = 'Netzmacht\Contao\Leaflet\Mapper\MapMapper';
$GLOBALS['LEAFLET_MAPPERS'][] = 'Netzmacht\Contao\Leaflet\Mapper\Layer\ProviderLayerMapper';
+$GLOBALS['LEAFLET_MAPPERS'][] = 'Netzmacht\Contao\Leaflet\Mapper\Control\ZoomControlMapper';
+$GLOBALS['LEAFLET_MAPPERS'][] = 'Netzmacht\Contao\Leaflet\Mapper\Control\ScaleControlMapper';
+$GLOBALS['LEAFLET_MAPPERS'][] = 'Netzmacht\Contao\Leaflet\Mapper\Control\LayersControlMapper';
+
/*
* Leaflet encoders.
@@ -50,12 +55,34 @@ $GLOBALS['LEAFLET_ENCODERS'][] = 'Netzmacht\LeafletPHP\Encoder\RasterEncoder';
$GLOBALS['LEAFLET_ENCODERS'][] = 'Netzmacht\LeafletPHP\Encoder\VectorEncoder';
$GLOBALS['LEAFLET_ENCODERS'][] = 'Netzmacht\Contao\Leaflet\Subscriber\EncoderSubscriber';
-$GLOBALS['LEAFLET_LAYERS'][] = 'provider';
+
+/*
+ * Leaflet layer types.
+ *
+ * The type is used for the database driven definitions.
+ */
+$GLOBALS['LEAFLET_LAYERS'] = array();
+$GLOBALS['LEAFLET_LAYERS']['default'] = array('children' => true);
+$GLOBALS['LEAFLET_LAYERS']['provider'] = array('children' => false);
+$GLOBALS['LEAFLET_LAYERS']['group'] = array('children' => true, 'geojson' => true);
+
+
+/*
+ * leaflet controls.
+ *
+ * Supported leaflet control types. Register your type for the database driven definition here.
+ */
+$GLOBALS['LEAFLET_CONTROLS'] = array();
+$GLOBALS['LEAFLET_CONTROLS'][] = 'zoom';
+$GLOBALS['LEAFLET_CONTROLS'][] = 'layers';
+$GLOBALS['LEAFLET_CONTROLS'][] = 'scale';
+$GLOBALS['LEAFLET_CONTROLS'][] = 'attribution';
+
/*
* Leaflet tile layer providers.
*/
-require_once __DIR__ . '/leaflet_providers.php';
+require_once TL_ROOT . '/system/modules/leaflet/config/leaflet_providers.php';
/*
* Leaflet assets.
diff --git a/module/dca/tl_leaflet_control.php b/module/dca/tl_leaflet_control.php
index 158d86a..89abd47 100644
--- a/module/dca/tl_leaflet_control.php
+++ b/module/dca/tl_leaflet_control.php
@@ -5,6 +5,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
'config' => array(
'dataContainer' => 'Table',
'enableVersioning' => true,
+ 'ptable' => 'tl_leaflet_map',
'sql' => array
(
'keys' => array
@@ -19,14 +20,16 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
(
'sorting' => array
(
- 'mode' => 1,
- 'fields' => array('title'),
- 'flag' => 1
+ 'mode' => 4,
+ 'fields' => array('sorting'),
+ 'headerFields' => array('title'),
+ 'flag' => 1,
+ 'child_record_callback' => array('Netzmacht\Contao\Leaflet\Dca\Control', 'generateRow'),
),
'label' => array
(
'fields' => array('title'),
- 'format' => '%s'
+ 'format' => '%s',
),
'global_operations' => array
(
@@ -68,18 +71,24 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
)
),
+ 'palettes' => array(
+ '__selector__' => array('type')
+ ),
+
'metapalettes' => array(
'default' => array(
- 'name' => array('title', 'type', 'position'),
+ 'name' => array('title', 'alias', 'type', 'position'),
+ 'config' => array(),
+ 'active' => array('active')
),
'zoom extends default' => array(
- 'zoom' => array('zoomInText', 'zoomOutText', 'zoomInTitle', 'zoomOutTitle'),
+ 'config' => array('zoomInText', 'zoomOutText', 'zoomInTitle', 'zoomOutTitle'),
),
'layers extends default' => array(
- 'layers' => array('collapsed', 'autoZIndex')
+ 'config' => array('layers', 'collapsed', 'autoZIndex')
),
'scale extends default' => array(
- 'scale' => array('maxWidth', 'scale', 'updateWhenIdle')
+ 'config' => array('maxWidth', 'metric', 'imperial', 'updateWhenIdle')
)
),
@@ -89,33 +98,72 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
(
'sql' => "int(10) unsigned NOT NULL auto_increment"
),
+ 'pid' => array
+ (
+ 'sql' => "int(10) unsigned NOT NULL default '0'"
+ ),
'tstamp' => array
(
'sql' => "int(10) unsigned NOT NULL default '0'"
),
+ 'sorting' => array
+ (
+ 'sql' => "int(10) unsigned NOT NULL default '0'"
+ ),
'title' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['title'],
'exclude' => true,
'inputType' => 'text',
- 'eval' => array('mandatory' => true, 'maxlength' => 255),
+ 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'),
'sql' => "varchar(255) NOT NULL default ''"
),
+ 'alias' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['alias'],
+ 'exclude' => true,
+ 'inputType' => 'text',
+ 'eval' => array('mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50'),
+ 'sql' => "varchar(255) NOT NULL default ''"
+ ),
+ 'type' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['type'],
+ 'exclude' => true,
+ 'inputType' => 'select',
+ 'eval' => array(
+ 'mandatory' => true,
+ 'tl_class' => 'w50',
+ 'includeBlankOption' => true,
+ 'submitOnChange' => true,
+ 'chosen' => true,
+ ),
+ 'options' => $GLOBALS['LEAFLET_CONTROLS'],
+ 'sql' => "varchar(32) NOT NULL default ''"
+ ),
'position' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['position'],
'exclude' => true,
'inputType' => 'select',
'options' => array('topleft', 'topright', 'bottomleft', 'bottomright'),
- 'eval' => array('mandatory' => true, 'maxlength' => 255),
+ 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'),
'sql' => "varchar(255) NOT NULL default ''"
),
+ 'active' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['active'],
+ 'exclude' => true,
+ 'inputType' => 'checkbox',
+ 'eval' => array('tl_class' => 'w50'),
+ 'sql' => "char(1) NOT NULL default ''"
+ ),
'zoomInText' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['zoomInText'],
'exclude' => true,
'inputType' => 'text',
- 'eval' => array('mandatory' => true, 'maxlength' => 255),
+ 'eval' => array('mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50'),
'sql' => "varchar(255) NOT NULL default ''"
),
'zoomOutText' => array
@@ -123,7 +171,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['zoomInText'],
'exclude' => true,
'inputType' => 'text',
- 'eval' => array('mandatory' => true, 'maxlength' => 255),
+ 'eval' => array('mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50'),
'sql' => "varchar(255) NOT NULL default ''"
),
'zoomInTitle' => array
@@ -131,7 +179,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['zoomInText'],
'exclude' => true,
'inputType' => 'text',
- 'eval' => array('mandatory' => true, 'maxlength' => 255),
+ 'eval' => array('mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50'),
'sql' => "varchar(255) NOT NULL default ''"
),
'zoomOutTitle' => array
@@ -139,7 +187,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['zoomInText'],
'exclude' => true,
'inputType' => 'text',
- 'eval' => array('mandatory' => true, 'maxlength' => 255),
+ 'eval' => array('mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50'),
'sql' => "varchar(255) NOT NULL default ''"
),
'collapsed' => array
@@ -148,7 +196,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
'exclude' => true,
'inputType' => 'checkbox',
'default' => '1',
- 'eval' => array(),
+ 'eval' => array('tl_class' => 'w50'),
'sql' => "char(1) NOT NULL default ''"
),
'autoZIndex' => array
@@ -157,7 +205,78 @@ $GLOBALS['TL_DCA']['tl_leaflet_control'] = array
'exclude' => true,
'inputType' => 'checkbox',
'default' => '1',
- 'eval' => array(),
+ 'eval' => array('tl_class' => 'w50'),
+ 'sql' => "char(1) NOT NULL default ''"
+ ),
+ 'layers' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['layers'],
+ 'exclude' => true,
+ 'inputType' => 'multiColumnWizard',
+ 'eval' => array
+ (
+ 'tl_class' => 'clr',
+ 'columnFields' => array
+ (
+ 'layer' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['layer'],
+ 'exclude' => true,
+ 'inputType' => 'select',
+ 'options_callback' => array('Netzmacht\Contao\Leaflet\Dca\Control', 'getLayers'),
+ 'eval' => array(
+ 'style' => 'width: 200px',
+ 'chosen' => true,
+ 'includeBlankOption' => true
+ ),
+ ),
+ 'mode' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['layer'],
+ 'exclude' => true,
+ 'inputType' => 'select',
+ 'options' => array('base', 'overlay'),
+ 'eval' => array(
+ 'style' => 'width: 200px'
+ ),
+ ),
+ )
+ ),
+ 'sql' => "mediumblob NULL"
+ ),
+ 'maxWidth' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['maxWidth'],
+ 'exclude' => true,
+ 'inputType' => 'text',
+ 'default' => 100,
+ 'eval' => array('tl_class' => 'w50', 'rgxp' => 'digit'),
+ 'sql' => "int(5) NOT NULL default '100'"
+ ),
+ 'metric' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['metric'],
+ 'exclude' => true,
+ 'inputType' => 'checkbox',
+ 'default' => '1',
+ 'eval' => array('tl_class' => 'w50 clr'),
+ 'sql' => "char(1) NOT NULL default '1'"
+ ),
+ 'imperial' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['imperial'],
+ 'exclude' => true,
+ 'inputType' => 'checkbox',
+ 'default' => '1',
+ 'eval' => array('tl_class' => 'w50'),
+ 'sql' => "char(1) NOT NULL default '1'"
+ ),
+ 'updateWhenIdle' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_control']['updateWhenIdle'],
+ 'exclude' => true,
+ 'inputType' => 'checkbox',
+ 'eval' => array('tl_class' => 'w50'),
'sql' => "char(1) NOT NULL default ''"
),
),
diff --git a/module/dca/tl_leaflet_layer.php b/module/dca/tl_leaflet_layer.php
index 21ea9ae..8a2d861 100644
--- a/module/dca/tl_leaflet_layer.php
+++ b/module/dca/tl_leaflet_layer.php
@@ -20,7 +20,8 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = array
'mode' => 5,
'fields' => array('title'),
'flag' => 1,
- 'icon' => 'system/modules/leaflet/assets/img/layers.png'
+ 'icon' => 'system/modules/leaflet/assets/img/layers.png',
+ 'paste_button_callback' => array('Netzmacht\Contao\Leaflet\Dca\Layer', 'getPasteButtons'),
),
'label' => array
(
@@ -29,6 +30,13 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = array
),
'global_operations' => array
(
+ 'map' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['map'],
+ 'href' => 'table=tl_leaflet_map',
+ 'icon' => 'system/modules/leaflet/assets/img/leaflet.png',
+ 'attributes' => 'onclick="Backend.getScrollOffset();" accesskey="m"'
+ ),
'all' => array
(
'label' => &$GLOBALS['TL_LANG']['MSC']['all'],
@@ -51,6 +59,13 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = array
'href' => 'act=copy',
'icon' => 'copy.gif'
),
+ 'cut' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['cut'],
+ 'href' => 'act=paste&mode=cut',
+ 'icon' => 'cut.gif',
+ 'attributes' => 'onclick="Backend.getScrollOffset()"',
+ ),
'delete' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_layer']['delete'],
@@ -129,7 +144,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_layer'] = array
'submitOnChange' => true,
'chosen' => true,
),
- 'options' => &$GLOBALS['LEAFLET_LAYERS'],
+ 'options' => array_keys($GLOBALS['LEAFLET_LAYERS']),
'sql' => "varchar(32) NOT NULL default ''"
),
'tile_provider' => array(
diff --git a/module/dca/tl_leaflet_map.php b/module/dca/tl_leaflet_map.php
index 64511fb..99a87fe 100644
--- a/module/dca/tl_leaflet_map.php
+++ b/module/dca/tl_leaflet_map.php
@@ -5,6 +5,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_map'] = array
'config' => array(
'dataContainer' => 'Table',
'enableVersioning' => true,
+ 'ctable' => array('tl_leaflet_control'),
'sql' => array
(
'keys' => array
@@ -52,6 +53,13 @@ $GLOBALS['TL_DCA']['tl_leaflet_map'] = array
'href' => 'act=edit',
'icon' => 'header.gif'
),
+ 'controls' => array
+ (
+ 'label' => &$GLOBALS['TL_LANG']['tl_leaflet_map']['controls'],
+ 'href' => 'table=tl_leaflet_control',
+ 'icon' => 'system/modules/leaflet/assets/img/control.png',
+ 'attributes' => 'onclick="Backend.getScrollOffset();" accesskey="e"'
+ ),
'copy' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_leaflet_map']['copy'],
diff --git a/src/Netzmacht/Contao/Leaflet/Dca/Control.php b/src/Netzmacht/Contao/Leaflet/Dca/Control.php
new file mode 100644
index 0000000..eebe592
--- /dev/null
+++ b/src/Netzmacht/Contao/Leaflet/Dca/Control.php
@@ -0,0 +1,25 @@
+
+ * @copyright 2015 netzmacht creative David Molineus
+ * @license LGPL 3.0
+ * @filesource
+ *
+ */
+
+namespace Netzmacht\Contao\Leaflet\Dca;
+
+
+class Control
+{
+ public function generateRow($row)
+ {
+ return sprintf(
+ '%s [%s]',
+ $row['title'],
+ $row['type']
+ );
+ }
+}
diff --git a/src/Netzmacht/Contao/Leaflet/Dca/Layer.php b/src/Netzmacht/Contao/Leaflet/Dca/Layer.php
index a7047dd..44037c2 100644
--- a/src/Netzmacht/Contao/Leaflet/Dca/Layer.php
+++ b/src/Netzmacht/Contao/Leaflet/Dca/Layer.php
@@ -14,6 +14,12 @@ namespace Netzmacht\Contao\Leaflet\Dca;
class Layer
{
+ private $layers;
+
+ public function __construct()
+ {
+ $this->layers = &$GLOBALS['LEAFLET_LAYERS'];
+ }
public function getVariants($dataContainer)
{
if ($dataContainer->activeRecord
@@ -25,4 +31,49 @@ class Layer
return array();
}
+
+ // Call paste_button_callback (&$dc, $row, $table, $cr, $childs, $previous, $next)
+ public function getPasteButtons($dataContainer, $row, $table, $whatever, $children)
+ {
+ $pasteAfterUrl = \Controller::addToUrl(
+ 'act='.$children['mode'].'&mode=1&pid='.$row['id']
+ .(!is_array($children['id']) ? '&id='.$children['id'] : '')
+ );
+
+ $buffer = sprintf(
+ '%s ',
+ $pasteAfterUrl,
+ specialchars(sprintf($GLOBALS['TL_LANG'][$table]['pasteafter'][1], $row['id'])),
+ \Image::getHtml(
+ 'pasteafter.gif',
+ sprintf($GLOBALS['TL_LANG'][$table]['pasteafter'][1], $row['id'])
+ )
+ );
+
+ if (!empty($this->layers[$row['type']]['children'])) {
+ $pasteIntoUrl = \Controller::addToUrl(
+ sprintf(
+ 'act=%s&mode=2&pid=%s%s',
+ $children['mode'],
+ $row['id'],
+ !is_array($children['id']) ? '&id='.$children['id'] : ''
+ )
+ );
+
+ $buffer .= sprintf(
+ '%s ',
+ $pasteIntoUrl,
+ specialchars(sprintf($GLOBALS['TL_LANG'][$table]['pasteinto'][1], $row['id'])),
+ \Image::getHtml(
+ 'pasteinto.gif',
+ sprintf($GLOBALS['TL_LANG'][$table]['pasteinto'][1], $row['id'])
+ )
+ );
+
+ } elseif ($row['id'] > 0) {
+ $buffer .= \Image::getHtml('pasteinto_.gif');
+ }
+
+ return $buffer;
+ }
}
diff --git a/src/Netzmacht/Contao/Leaflet/Mapper/AbstractMapper.php b/src/Netzmacht/Contao/Leaflet/Mapper/AbstractMapper.php
index 0713928..ca4f484 100644
--- a/src/Netzmacht/Contao/Leaflet/Mapper/AbstractMapper.php
+++ b/src/Netzmacht/Contao/Leaflet/Mapper/AbstractMapper.php
@@ -20,6 +20,9 @@ use Netzmacht\LeafletPHP\Definition;
*/
abstract class AbstractMapper implements Mapper
{
+ const VALUE_NOT_EMPTY = '__value_not_empty__';
+ const VALUE_EMPTY = '__value_empty__';
+
/**
* Class of the model being build.
*
@@ -109,8 +112,10 @@ abstract class AbstractMapper implements Mapper
*
* @return $this
*/
- public function addConditionalOption($column, $option, $mapping = null, $value = '1')
+ public function addConditionalOption($column, $option = null, $mapping = null, $value = self::VALUE_NOT_EMPTY)
{
+ $option = $option ?: $column;
+
if (!isset($this->conditional[$column][$value][$option])) {
$this->conditional[$column][$value][$option] = $this->getMapping($option, $mapping);
}
@@ -127,7 +132,7 @@ abstract class AbstractMapper implements Mapper
*
* @return $this
*/
- public function addConditionalOptions($column, array $options, $value = '1')
+ public function addConditionalOptions($column, array $options, $value = self::VALUE_NOT_EMPTY)
{
foreach ($options as $key => $option) {
if (is_numeric($key)) {
@@ -214,7 +219,7 @@ abstract class AbstractMapper implements Mapper
protected function buildConstructArguments(\Model $model, DefinitionMapper $mapper)
{
return array(
- $model->alias ?: $model->id
+ $model->alias ?: (str_replace('tl_leaflet_', '', $model->getTable()) . '_' . $model->id)
);
}
@@ -243,7 +248,11 @@ abstract class AbstractMapper implements Mapper
{
foreach ($this->conditional as $column => $conditions) {
foreach ($conditions as $value => $options) {
- if ($model->$column == $value) {
+ if ($value === static::VALUE_EMPTY && empty($model->$column)) {
+ $this->applyOptions($options, $definition, $model);
+ } elseif ($value === static::VALUE_NOT_EMPTY && !empty($model->$column)) {
+ $this->applyOptions($options, $definition, $model);
+ } elseif ($model->$column == $value) {
$this->applyOptions($options, $definition, $model);
}
}
diff --git a/src/Netzmacht/Contao/Leaflet/Mapper/AbstractLayerMapper.php b/src/Netzmacht/Contao/Leaflet/Mapper/AbstractTypeMapper.php
similarity index 87%
rename from src/Netzmacht/Contao/Leaflet/Mapper/AbstractLayerMapper.php
rename to src/Netzmacht/Contao/Leaflet/Mapper/AbstractTypeMapper.php
index 875c587..8a16af6 100644
--- a/src/Netzmacht/Contao/Leaflet/Mapper/AbstractLayerMapper.php
+++ b/src/Netzmacht/Contao/Leaflet/Mapper/AbstractTypeMapper.php
@@ -12,7 +12,7 @@
namespace Netzmacht\Contao\Leaflet\Mapper;
-abstract class AbstractLayerMapper extends AbstractMapper
+abstract class AbstractTypeMapper extends AbstractMapper
{
protected static $type;
diff --git a/src/Netzmacht/Contao/Leaflet/Mapper/Control/AbstractControlMapper.php b/src/Netzmacht/Contao/Leaflet/Mapper/Control/AbstractControlMapper.php
new file mode 100644
index 0000000..74779fb
--- /dev/null
+++ b/src/Netzmacht/Contao/Leaflet/Mapper/Control/AbstractControlMapper.php
@@ -0,0 +1,32 @@
+
+ * @copyright 2015 netzmacht creative David Molineus
+ * @license LGPL 3.0
+ * @filesource
+ *
+ */
+
+namespace Netzmacht\Contao\Leaflet\Mapper\Control;
+
+use Netzmacht\Contao\Leaflet\Mapper\AbstractTypeMapper;
+
+class AbstractControlMapper extends AbstractTypeMapper
+{
+ /**
+ * Class of the model being build.
+ *
+ * @var string
+ */
+ protected static $modelClass = 'Netzmacht\Contao\Leaflet\Model\ControlModel';
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function initialize()
+ {
+ $this->addOption('position');
+ }
+}
diff --git a/src/Netzmacht/Contao/Leaflet/Mapper/Control/LayersControlMapper.php b/src/Netzmacht/Contao/Leaflet/Mapper/Control/LayersControlMapper.php
new file mode 100644
index 0000000..a641b1e
--- /dev/null
+++ b/src/Netzmacht/Contao/Leaflet/Mapper/Control/LayersControlMapper.php
@@ -0,0 +1,30 @@
+
+ * @copyright 2015 netzmacht creative David Molineus
+ * @license LGPL 3.0
+ * @filesource
+ *
+ */
+
+namespace Netzmacht\Contao\Leaflet\Mapper\Control;
+
+
+class LayersControlMapper extends AbstractControlMapper
+{
+ /**
+ * Class of the definition being created.
+ *
+ * @var string
+ */
+ protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Control\Layers';
+
+ /**
+ * Layer type.
+ *
+ * @var string
+ */
+ protected static $type = 'layers';
+}
diff --git a/src/Netzmacht/Contao/Leaflet/Mapper/Control/ScaleControlMapper.php b/src/Netzmacht/Contao/Leaflet/Mapper/Control/ScaleControlMapper.php
new file mode 100644
index 0000000..aa7e4ff
--- /dev/null
+++ b/src/Netzmacht/Contao/Leaflet/Mapper/Control/ScaleControlMapper.php
@@ -0,0 +1,44 @@
+
+ * @copyright 2015 netzmacht creative David Molineus
+ * @license LGPL 3.0
+ * @filesource
+ *
+ */
+
+namespace Netzmacht\Contao\Leaflet\Mapper\Control;
+
+/**
+ * Class ScaleControlMapper maps the database item of the type "scale" to the scale control.
+ *
+ * @package Netzmacht\Contao\Leaflet\Mapper\Control
+ */
+class ScaleControlMapper extends AbstractControlMapper
+{
+ /**
+ * Class of the definition being created.
+ *
+ * @var string
+ */
+ protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Control\Scale';
+
+ /**
+ * Layer type.
+ *
+ * @var string
+ */
+ protected static $type = 'scale';
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function initialize()
+ {
+ parent::initialize();
+
+ $this->addOptions('maxWidth', 'metric', 'imperial', 'updateWhenIdle');
+ }
+}
diff --git a/src/Netzmacht/Contao/Leaflet/Mapper/Control/ZoomControlMapper.php b/src/Netzmacht/Contao/Leaflet/Mapper/Control/ZoomControlMapper.php
new file mode 100644
index 0000000..e510ece
--- /dev/null
+++ b/src/Netzmacht/Contao/Leaflet/Mapper/Control/ZoomControlMapper.php
@@ -0,0 +1,48 @@
+
+ * @copyright 2015 netzmacht creative David Molineus
+ * @license LGPL 3.0
+ * @filesource
+ *
+ */
+
+namespace Netzmacht\Contao\Leaflet\Mapper\Control;
+
+/**
+ * Class ZoomControlMapper maps the zoom database definition to the zoom control.
+ *
+ * @package Netzmacht\Contao\Leaflet\Mapper\Control
+ */
+class ZoomControlMapper extends AbstractControlMapper
+{
+ /**
+ * Class of the definition being created.
+ *
+ * @var string
+ */
+ protected static $definitionClass = 'Netzmacht\LeafletPHP\Definition\Control\Zoom';
+
+ /**
+ * Layer type.
+ *
+ * @var string
+ */
+ protected static $type = 'zoom';
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function initialize()
+ {
+ parent::initialize();
+
+ $this
+ ->addConditionalOption('zoomInText')
+ ->addConditionalOption('zoomOutText')
+ ->addConditionalOption('zoomInTitle')
+ ->addConditionalOption('zoomOutTitle');
+ }
+}
diff --git a/src/Netzmacht/Contao/Leaflet/Mapper/Layer/ProviderLayerMapper.php b/src/Netzmacht/Contao/Leaflet/Mapper/Layer/ProviderLayerMapper.php
index 6636b52..f605f39 100644
--- a/src/Netzmacht/Contao/Leaflet/Mapper/Layer/ProviderLayerMapper.php
+++ b/src/Netzmacht/Contao/Leaflet/Mapper/Layer/ProviderLayerMapper.php
@@ -12,11 +12,11 @@
namespace Netzmacht\Contao\Leaflet\Mapper\Layer;
-use Netzmacht\Contao\Leaflet\Mapper\AbstractLayerMapper;
+use Netzmacht\Contao\Leaflet\Mapper\AbstractTypeMapper;
use Netzmacht\Contao\Leaflet\Mapper\DefinitionMapper;
use Netzmacht\LeafletPHP\Definition;
-class ProviderLayerMapper extends AbstractLayerMapper
+class ProviderLayerMapper extends AbstractTypeMapper
{
/**
* Class of the model being build.
diff --git a/src/Netzmacht/Contao/Leaflet/Mapper/MapMapper.php b/src/Netzmacht/Contao/Leaflet/Mapper/MapMapper.php
index 521589e..67e10d8 100644
--- a/src/Netzmacht/Contao/Leaflet/Mapper/MapMapper.php
+++ b/src/Netzmacht/Contao/Leaflet/Mapper/MapMapper.php
@@ -11,6 +11,7 @@
namespace Netzmacht\Contao\Leaflet\Mapper;
+use Netzmacht\Contao\Leaflet\Model\ControlModel;
use Netzmacht\Contao\Leaflet\Model\LayerModel;
use Netzmacht\Contao\Leaflet\Model\MapModel;
use Netzmacht\LeafletPHP\Definition;
@@ -93,6 +94,18 @@ class MapMapper extends AbstractMapper
*/
private function buildControls(Map $map, MapModel$model, DefinitionMapper $mapper)
{
+ $collection = ControlModel::findBy(
+ array('pid=?', 'active=1'),
+ array($model->id),
+ array('order' => 'sorting')
+ );
+
+ if ($collection) {
+ foreach ($collection as $control) {
+ $control = $mapper->handle($control);
+ $map->addControl($control);
+ }
+ }
}
/**
diff --git a/src/Netzmacht/Contao/Leaflet/Model/ControlModel.php b/src/Netzmacht/Contao/Leaflet/Model/ControlModel.php
new file mode 100644
index 0000000..54d5469
--- /dev/null
+++ b/src/Netzmacht/Contao/Leaflet/Model/ControlModel.php
@@ -0,0 +1,17 @@
+
+ * @copyright 2015 netzmacht creative David Molineus
+ * @license LGPL 3.0
+ * @filesource
+ *
+ */
+
+namespace Netzmacht\Contao\Leaflet\Model;
+
+class ControlModel extends \Model
+{
+ protected static $strTable = 'tl_leaflet_control';
+}
diff --git a/src/Netzmacht/Contao/Leaflet/Subscriber/EncoderSubscriber.php b/src/Netzmacht/Contao/Leaflet/Subscriber/EncoderSubscriber.php
index fbf4a3e..8998e89 100644
--- a/src/Netzmacht/Contao/Leaflet/Subscriber/EncoderSubscriber.php
+++ b/src/Netzmacht/Contao/Leaflet/Subscriber/EncoderSubscriber.php
@@ -47,8 +47,9 @@ class EncoderSubscriber implements EventSubscriberInterface
if ($object instanceof Map) {
$attribution = <<netzmacht creative'
+map.map.attributionControl.setPrefix(
+ 'Leaflet | ' +
+ 'netzmacht creative'
);
HTML;
$event->getOutput()->addLine($attribution);