forked from Snck3rs/contao-leaflet-maps
142 lines
4.4 KiB
PHP
142 lines
4.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package dev
|
|
* @author David Molineus <david.molineus@netzmacht.de>
|
|
* @copyright 2014 netzmacht creative David Molineus
|
|
* @license LGPL 3.0
|
|
* @filesource
|
|
*
|
|
*/
|
|
|
|
namespace Netzmacht\Contao\Leaflet\Dca;
|
|
|
|
|
|
use Netzmacht\Contao\DevTools\Dca\Options\OptionsBuilder;
|
|
use Netzmacht\Contao\Leaflet\Model\LayerModel;
|
|
|
|
class Layer
|
|
{
|
|
private $layers;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->layers = &$GLOBALS['LEAFLET_LAYERS'];
|
|
|
|
\Controller::loadLanguageFile('leaflet_layer');
|
|
}
|
|
|
|
public function getVariants($dataContainer)
|
|
{
|
|
if ($dataContainer->activeRecord
|
|
&& $dataContainer->activeRecord->tile_provider
|
|
&& !empty($GLOBALS['LEAFLET_TILE_PROVIDERS'][$dataContainer->activeRecord->tile_provider]['variants'])
|
|
) {
|
|
return $GLOBALS['LEAFLET_TILE_PROVIDERS'][$dataContainer->activeRecord->tile_provider]['variants'];
|
|
}
|
|
|
|
return array();
|
|
}
|
|
|
|
public function generateRow($row, $label)
|
|
{
|
|
$alt = empty($GLOBALS['TL_LANG']['leaflet_layer'][$row['type']][0])
|
|
? $row['type']
|
|
: $GLOBALS['TL_LANG']['leaflet_layer'][$row['type']][0];
|
|
|
|
$title = empty($GLOBALS['TL_LANG']['leaflet_layer'][$row['type']][1])
|
|
? $row['type']
|
|
: $GLOBALS['TL_LANG']['leaflet_layer'][$row['type']][1];
|
|
|
|
if (!empty($this->layers[$row['type']]['icon'])) {
|
|
$icon = \Image::getHtml($this->layers[$row['type']]['icon'], $alt, sprintf('title="%s"', $title));
|
|
} else {
|
|
$icon = \Image::getHtml('iconPLAIN.gif', $alt, sprintf('title="%s"', $title));
|
|
}
|
|
|
|
return $icon . ' ' . $label;
|
|
}
|
|
|
|
public function getMarkerClusterLayers()
|
|
{
|
|
$types = array_keys(
|
|
array_filter(
|
|
$GLOBALS['LEAFLET_LAYERS'],
|
|
function ($item) {
|
|
return !empty($item['markerCluster']);
|
|
}
|
|
)
|
|
);
|
|
|
|
$collection = LayerModel::findMultipleByTypes($types);
|
|
$builder = OptionsBuilder::fromCollection(
|
|
$collection,
|
|
'id',
|
|
function($row) {
|
|
return sprintf('%s [%s]', $row['title'], $row['type']);
|
|
}
|
|
);
|
|
|
|
return $builder->getOptions();
|
|
}
|
|
|
|
// 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(
|
|
'<a href="%s" title="%s" onclick="Backend.getScrollOffset()">%s</a> ',
|
|
$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(
|
|
'<a href="%s" title="%s" onclick="Backend.getScrollOffset()">%s</a> ',
|
|
$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;
|
|
}
|
|
|
|
public function generateMarkersButton($row, $href, $label, $title, $icon, $attributes)
|
|
{
|
|
if (empty($this->layers[$row['type']]['markers'])) {
|
|
return '';
|
|
}
|
|
|
|
return sprintf(
|
|
'<a href="%s" title="%s">%s</a> ',
|
|
\Backend::addToUrl($href . '&id=' . $row['id']),
|
|
$title,
|
|
\Image::getHtml($icon, $label, $attributes)
|
|
);
|
|
}
|
|
}
|