, 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 TYPO3\CMS\Core\Utility\RootlineUtility; use TYPO3\CMS\Fluid\ViewHelpers\Uri\ActionViewHelper; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; class AjaxViewHelper extends ActionViewHelper { const PAGE_TYPE_JSON = 1701; const PAGE_TYPE_HTML = 1702; public function initializeArguments() { parent::initializeArguments(); $this->overrideArgument('extensionName', 'string', 'Target extension name', false, 'epproducts'); $this->overrideArgument('pluginName', 'string', 'Target plugin name', false, 'Ajax'); $this->overrideArgument('format', 'string', 'The requested format', false, 'json'); } /** * @param array $arguments * @param \Closure $renderChildrenClosure * @param RenderingContextInterface $renderingContext * @return string */ public static function renderStatic ( array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext ) { // Determine page type from format argument if (strtolower(trim($arguments['format'])) === 'json') { $arguments['pageType'] = self::PAGE_TYPE_JSON; } else { $arguments['pageType'] = self::PAGE_TYPE_HTML; } // Reset argument to keep it out of resulting url unset($arguments['format']); // Use root page uid as target unless provided if ($arguments['pageUid'] === null) { $rootlineUtility = new RootlineUtility($GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId()); $rootline = $rootlineUtility->get(); $rootPage = array_pop($rootline); $arguments['pageUid'] = $rootPage['uid']; } // Force absolute urls $arguments['absolute'] = true; return parent::renderStatic( $arguments, $renderChildrenClosure, $renderingContext ); } }