, dreipunktnull * * All rights reserved * * This script is part of the TYPO3 project. The TYPO3 project is * free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * The GNU General Public License can be found at * http://www.gnu.org/copyleft/gpl.html. * * This script is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ use EP\EpProducts\Domain\Model\Hotel; use EP\EpProducts\Domain\Model\Region; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; class GmapsUrlViewHelper extends AbstractViewHelper { /** * @var bool */ protected $escapeOutput = false; const URLBASE = 'http://maps.google.com/maps?q=%s,%s&t=%s&z=%d'; public function initializeArguments() { parent::initializeArguments(); $this->registerArgument('hotel', Hotel::class, 'The hotel'); $this->registerArgument('region', Region::class, 'The region'); $this->registerArgument('type', 'string', 'The map type', false, 'p'); $this->registerArgument('zoom', 'int', 'The zoom level', false, 10); } /** * @param array $arguments * @param \Closure $renderChildrenClosure * @param RenderingContextInterface $renderingContext * @return mixed */ public function render() { $hotel = $this->arguments['hotel']; $region = $this->arguments['region']; if ($hotel !== null && $hotel->getLatitude() && $hotel->getLongitude()) { $source = $hotel; } elseif ($hotel !== null && $hotel->getRegion()->getLatitude() && $hotel->getRegion()->getLongitude()) { $source = $hotel->getRegion(); } elseif ($region !== null) { $source = $region; } else { return 'http://www.google.de/maps'; } return sprintf(static::URLBASE, $source->getLatitude(), $source->getLongitude(), $this->arguments['type'], $this->arguments['zoom']); } }