Skip to content
Snippets Groups Projects
Commit 553af361 authored by Torsten Oppermann's avatar Torsten Oppermann
Browse files

[TASK] Pagebrowser bugfix

parent bae84b00
No related branches found
No related tags found
1 merge request!5Feature 5 2 0
......@@ -376,12 +376,13 @@ class OverviewController extends AbstractController {
*
* @param array $newsMetaData
* @param array $newsFilter
* @param boolean $isInitialCall
* @return void
* @throws \InvalidArgumentException
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @throws \TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException
*/
protected function overviewWithoutCategoriesAction(array $newsMetaData = [], array $newsFilter = NULL) {
protected function overviewWithoutCategoriesAction(array $newsMetaData = [], array $newsFilter = NULL, $isInitialCall = TRUE) {
// remember selection of the filter values, if any
$selectedTag = $this->tagRepository->findByUid((int) $newsFilter['tag']);
$selectedCategory = $this->categoryRepository->findByUid((int) $newsFilter['category']);
......@@ -392,7 +393,8 @@ class OverviewController extends AbstractController {
$newsPerPage = (int) $this->settings['newsLimit'];
$currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgnews_pagebrowser')['currentPage'];
if ($currentPageBrowserPage && $newsPerPage) {
$offset = ($currentPageBrowserPage * $newsPerPage) - 1;
// might be necessary for the recursive calling performance wise
$offset = ($currentPageBrowserPage * $newsPerPage) - ($isInitialCall ? 0 : 1);
}
$startTime = (int) $this->settings['starttime'];
......@@ -412,7 +414,16 @@ class OverviewController extends AbstractController {
$categoriesById[$categoryId] = $category;
}
$newsCount = $this->newsRepository->newsCountByCategories($categoryIds, NULL, $startTime, $endTime);
// filter by category and tag if selected in the filter
if ($newsFilter['category']) {
$categoryIds = [(int) $newsFilter['category']];
}
$tagIds = NULL;
if ($newsFilter['tag']) {
$tagIds = [(int) $newsFilter['tag']];
}
$newsCount = $this->newsRepository->newsCountByCategories($categoryIds, $tagIds, $startTime, $endTime);
} else {
$newsCount = $this->newsRepository->countAll($startTime, $endTime);
$categoryIds = NULL;
......@@ -446,12 +457,14 @@ class OverviewController extends AbstractController {
$this->highlightBestFitNews($categoryIds);
$numberOfPages = ($newsPerPage <= 0 ? 0 : ceil($newsCount / $newsPerPage));
debug($numberOfPages);
// Redo this function, until one variable get the amount of newsLimitPerTag. Reduces the amount of ajax calls. Needed because of languagevisibility.
if (count($newsMetaData) < $newsPerPage) {
$nextPage = $currentPageBrowserPage + 1;
if ($nextPage <= $numberOfPages) {
GeneralUtility::_GETset(['tx_sgnews_pagebrowser' => ['currentPage' => $nextPage]]);
$this->overviewWithoutCategoriesAction($newsMetaData, $newsFilter);
$this->overviewWithoutCategoriesAction($newsMetaData, $newsFilter, FALSE);
return;
}
}
......
......@@ -37,6 +37,15 @@ use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
* <sg:pageBrowser numberOfPages="" />
*/
class PageBrowserViewHelper extends AbstractViewHelper {
/**
* Specifies whether the escaping interceptors should be disabled or enabled for the render-result of this ViewHelper
*
* @see isOutputEscapingEnabled()
*
* @var boolean
*/
protected $escapeOutput = FALSE;
/**
* Render method of the view helper.
*
......
......@@ -75,6 +75,5 @@
</f:for>
</div>
</div>
<f:format.raw><sg:pageBrowser numberOfPages="{numberOfPages}" /></f:format.raw>
<sg:pageBrowser numberOfPages="{numberOfPages}" />
</f:section>
......@@ -22,6 +22,5 @@
</f:for>
</ul>
</div>
<f:format.raw><sg:pageBrowser numberOfPages="{numberOfPages}" /></f:format.raw>
<sg:pageBrowser numberOfPages="{numberOfPages}" />
</f:section>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment