20 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
21 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
22 use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
33 use CompileWithRenderStatic;
45 protected static $prefixId =
'tx_indexedsearch';
52 $this->registerArgument(
'maximumNumberOfResultPages',
'int',
'',
true);
53 $this->registerArgument(
'numberOfResults',
'int',
'',
true);
54 $this->registerArgument(
'resultsPerPage',
'int',
'',
true);
55 $this->registerArgument(
'currentPage',
'int',
'',
false, 0);
56 $this->registerArgument(
'freeIndexUid',
'int',
'');
66 public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
68 $maximumNumberOfResultPages = $arguments[
'maximumNumberOfResultPages'];
69 $numberOfResults = $arguments[
'numberOfResults'];
70 $resultsPerPage = $arguments[
'resultsPerPage'];
71 $currentPage = $arguments[
'currentPage'];
72 $freeIndexUid = $arguments[
'freeIndexUid'];
74 if ($resultsPerPage <= 0) {
77 $pageCount = (int)ceil($numberOfResults / $resultsPerPage);
79 if ($pageCount === 1) {
89 if ($currentPage > 0) {
96 $minPage = $currentPage - (int)floor($maximumNumberOfResultPages / 2);
97 $maxPage = $minPage + $maximumNumberOfResultPages - 1;
100 $maxPage -= $minPage;
102 } elseif ($maxPage >= $pageCount) {
103 $minPage -= $maxPage - $pageCount + 1;
104 $maxPage = $pageCount - 1;
107 for ($a = $minPage; $a <= $maxPage; $a++) {
108 $label = trim($pageLabel .
' ' . ($a + 1));
110 if ($a === $currentPage) {
111 $content .=
'<li class="tx-indexedsearch-browselist-currentPage"><strong>' . $label .
'</strong></li>';
113 $content .=
'<li>' . $label .
'</li>';
117 if ($currentPage < $pageCount - 1) {
121 return '<ul class="tx-indexedsearch-browsebox">' . $content .
'</ul>';
135 $onclick =
'document.getElementById(' . GeneralUtility::quoteJSvalue(self::$prefixId .
'_pointer') .
').value=' . GeneralUtility::quoteJSvalue($p) .
';';
136 if ($freeIndexUid !==
null) {
137 $onclick .=
'document.getElementById(' . GeneralUtility::quoteJSvalue(self::$prefixId .
'_freeIndexUid') .
').value=' . GeneralUtility::quoteJSvalue($freeIndexUid) .
';';
139 $onclick .=
'document.getElementById(' . GeneralUtility::quoteJSvalue(self::$prefixId) .
').submit();return false;';
140 return '<a href="#" onclick="' . htmlspecialchars($onclick) .
'">' . htmlspecialchars($str) .
'</a>';