* @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( '%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; } public function generateMarkersButton($row, $href, $label, $title, $icon, $attributes) { if (empty($this->layers[$row['type']]['markers'])) { return ''; } return sprintf( '%s ', \Backend::addToUrl($href . '&id=' . $row['id']), $title, \Image::getHtml($icon, $label, $attributes) ); } }