From 6e46b169a67654318cf016b5c31c3455fbdbb7cf Mon Sep 17 00:00:00 2001 From: Torsten Oppermann <torsten@sgalinski.de> Date: Fri, 15 Dec 2017 17:48:29 +0100 Subject: [PATCH] [TASK] Final review, scrollbrowser offset fixes --- Classes/Controller/OverviewController.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Classes/Controller/OverviewController.php b/Classes/Controller/OverviewController.php index 7bda7b5..e924a01 100644 --- a/Classes/Controller/OverviewController.php +++ b/Classes/Controller/OverviewController.php @@ -120,18 +120,22 @@ class OverviewController extends AbstractController { * @param array $newsByCategory * @param array $allNews * @param array $newsFilter + * @param boolean $isInitialCall * @return void * @throws \InvalidArgumentException * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException */ - protected function overviewWithCategories(array $newsByCategory = [], array $allNews = [], array $newsFilter = []) { + protected function overviewWithCategories( + array $newsByCategory = [], array $allNews = [], array $newsFilter = [], $isInitialCall = TRUE + ) { $newsLimitPerCategory = (int) $this->settings['newsLimit']; $this->categoryRepository->setDefaultOrderings(['sorting' => Query::ORDER_ASCENDING]); $offset = 0; + $currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgnews_pagebrowser')['currentPage']; if ($currentPageBrowserPage && $newsLimitPerCategory) { - $offset = $currentPageBrowserPage * $newsLimitPerCategory; + $offset = ($currentPageBrowserPage * $newsLimitPerCategory) - ($isInitialCall ? 0 : 1); } if ($this->settings['onlyNewsWithinThisPageSection']) { @@ -230,7 +234,7 @@ class OverviewController extends AbstractController { $nextPage = $currentPageBrowserPage + 1; if ($nextPage <= $numberOfPages) { GeneralUtility::_GETset(['tx_sgnews_pagebrowser' => ['currentPage' => $nextPage]]); - $this->overviewWithCategories($newsByCategory, $allNews, $newsFilter); + $this->overviewWithCategories($newsByCategory, $allNews, $newsFilter, FALSE); return; } } @@ -262,18 +266,21 @@ class OverviewController extends AbstractController { * @param array $newsByTag * @param array $allNews * @param array $newsFilter + * @param boolean $isInitialCall * @return void * @throws \InvalidArgumentException * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException */ - protected function overviewWithTags(array $newsByTag = [], array $allNews = [], array $newsFilter = []) { + protected function overviewWithTags( + array $newsByTag = [], array $allNews = [], array $newsFilter = [], $isInitialCall = TRUE + ) { $newsLimitPerTag = (int) $this->settings['newsLimit']; $this->tagRepository->setDefaultOrderings(['sorting' => Query::ORDER_ASCENDING]); $offset = 0; $currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgnews_pagebrowser')['currentPage']; if ($currentPageBrowserPage && $newsLimitPerTag) { - $offset = $currentPageBrowserPage * $newsLimitPerTag; + $offset = ($currentPageBrowserPage * $newsLimitPerTag) - ($isInitialCall ? 0 : 1); } $tagPid = (int) $this->settings['tagPid']; @@ -381,7 +388,7 @@ class OverviewController extends AbstractController { $nextPage = $currentPageBrowserPage + 1; if ($nextPage <= $numberOfPages) { GeneralUtility::_GETset(['tx_sgnews_pagebrowser' => ['currentPage' => $nextPage]]); - $this->overviewWithTags($newsByTag, $allNews, $newsFilter); + $this->overviewWithTags($newsByTag, $allNews, $newsFilter, FALSE); return; } } -- GitLab