> Required to prevent typo3 to escape the html output * @var boolean */ protected $escapeOutput = false; /** * -- This method is expected by Fluid -- * Declares the viewhelper's parameters */ public function initializeArguments() { $this->registerArgument( 'collection', 'object', 'The ApiPagedCollection object', true ); } /** * -- This method is expected by Fluid -- * Renders the content as html * * @return string Rendered tag */ public function render() { $collection = $this->arguments['collection']; $lastPage = $collection->getLastPage(); $currentPage = $collection->getCurrentPage(); if (!$lastPage > 0) { return ""; } $divWrapper = '
%s
'; $goToFirst = '' . '' . ''; $goToLast = '' . '' . ''; $startAt = $currentPage > 6 ? $currentPage - 5 : 1; $endAt = $currentPage < ($lastPage - 5) ? $currentPage + 5 : $lastPage; $ul = ''; return sprintf($divWrapper, $goToFirst . $ul . $goToLast); } private function getUriWithPage(int $page, bool $nocache = true) { $request = $GLOBALS['TYPO3_REQUEST']; $uri = $request->getUri(); $query = $uri->getQuery(); if (preg_match("/.*page=\d+.*/", $query)) { $query = preg_replace( "/page=\d+/", "page=" . $page, $query ); } elseif ($query != '') { $query .= "&page=" . $page; } else { $query .= "page=" . $page; } $query = preg_replace("/&no_cache=1/", "", $query); if ($nocache) { $query .= '&no_cache=1'; } return (string)$uri->withQuery($query); } }