diff --git a/Classes/Controller/ListByCategoryController.php b/Classes/Controller/ListByCategoryController.php index 9a5d65e2e593d045c6ec181be7de0d03f8593c0e..d17c9179e97c2dd1e4b4525b61c2555a63d30f3e 100644 --- a/Classes/Controller/ListByCategoryController.php +++ b/Classes/Controller/ListByCategoryController.php @@ -52,15 +52,28 @@ class ListByCategoryController extends AbstractController { */ protected $newsRepository; + /** + * Initialize the indexAction to set the currentPageBrowserPage parameter + * + * @throws \TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException + */ + public function initializeIndexAction(){ + $currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgnews_pagebrowser')['currentPage']; + if($currentPageBrowserPage > 0){ + $this->request->setArgument('currentPageBrowserPage', $currentPageBrowserPage); + } + } + /** * Renders the news list of a category * * @param array $newsMetaData + * @param int $currentPageBrowserPage * @return void * @throws \InvalidArgumentException * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException */ - public function indexAction(array $newsMetaData = []) { + public function indexAction(array $newsMetaData = [], $currentPageBrowserPage = 0) { $filterByCategories = FALSE; $categoryUids = GeneralUtility::intExplode(',', $this->settings['categories']); $tagUids = GeneralUtility::intExplode(',', $this->settings['tags'], TRUE); @@ -85,7 +98,6 @@ class ListByCategoryController extends AbstractController { $offset = 0; $newsPerPage = (int) $this->settings['newsLimitPerPage']; - $currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgnews_pagebrowser')['currentPage']; if ($currentPageBrowserPage && $newsPerPage) { $offset = $currentPageBrowserPage * $newsPerPage; } @@ -116,8 +128,7 @@ class ListByCategoryController extends AbstractController { if (count($newsMetaData) < $newsPerPage) { $nextPage = $currentPageBrowserPage + 1; if ($nextPage <= $numberOfPages) { - GeneralUtility::_GETset(['tx_sgnews_pagebrowser' => ['currentPage' => $nextPage]]); - $this->indexAction($newsMetaData); + $this->indexAction($newsMetaData, $nextPage); return; } } diff --git a/Classes/Controller/OverviewController.php b/Classes/Controller/OverviewController.php index e924a01e4cd4a676464ce76a4e943db17110b4f6..a0aa8e8e7daaaafd1be225cf09a8eebd1685a448 100644 --- a/Classes/Controller/OverviewController.php +++ b/Classes/Controller/OverviewController.php @@ -56,22 +56,35 @@ class OverviewController extends AbstractController { */ protected $newsRepository; + /** + * Initialize the overviewAction to set the currentPageBrowserPage parameter + * + * @throws \TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException + */ + public function initializeOverviewAction(){ + $currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgnews_pagebrowser')['currentPage']; + if($currentPageBrowserPage > 0){ + $this->request->setArgument('currentPageBrowserPage', $currentPageBrowserPage); + } + } + /** * Renders the news overview * * @param array $newsFilter + * @param int $currentPageBrowserPage * @return void * @throws \InvalidArgumentException * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException * @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException */ - public function overviewAction(array $newsFilter = []) { + public function overviewAction(array $newsFilter = [], $currentPageBrowserPage = 0) { switch ((int) $this->settings['groupBy']) { case 1: - $this->overviewWithCategories([], [], $newsFilter); + $this->overviewWithCategories([], [], $newsFilter, $currentPageBrowserPage); break; case 2: - $this->overviewWithTags([], [], $newsFilter); + $this->overviewWithTags([], [], $newsFilter, $currentPageBrowserPage); break; default: $this->forward('overviewWithoutCategories', NULL, NULL, $this->request->getArguments()); @@ -121,19 +134,19 @@ class OverviewController extends AbstractController { * @param array $allNews * @param array $newsFilter * @param boolean $isInitialCall + * @param int $currentPageBrowserPage * @return void * @throws \InvalidArgumentException * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException */ protected function overviewWithCategories( - array $newsByCategory = [], array $allNews = [], array $newsFilter = [], $isInitialCall = TRUE + array $newsByCategory = [], array $allNews = [], array $newsFilter = [], $isInitialCall = TRUE, $currentPageBrowserPage = 0 ) { $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) - ($isInitialCall ? 0 : 1); } @@ -233,8 +246,7 @@ class OverviewController extends AbstractController { if ($maxNewsPerCategory < $newsLimitPerCategory && count($allNews) < $newsLimitPerCategory) { $nextPage = $currentPageBrowserPage + 1; if ($nextPage <= $numberOfPages) { - GeneralUtility::_GETset(['tx_sgnews_pagebrowser' => ['currentPage' => $nextPage]]); - $this->overviewWithCategories($newsByCategory, $allNews, $newsFilter, FALSE); + $this->overviewWithCategories($newsByCategory, $allNews, $newsFilter, FALSE, $nextPage); return; } } @@ -267,18 +279,18 @@ class OverviewController extends AbstractController { * @param array $allNews * @param array $newsFilter * @param boolean $isInitialCall + * @param int $currentPageBrowserPage * @return void * @throws \InvalidArgumentException * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException */ protected function overviewWithTags( - array $newsByTag = [], array $allNews = [], array $newsFilter = [], $isInitialCall = TRUE + array $newsByTag = [], array $allNews = [], array $newsFilter = [], $isInitialCall = TRUE, $currentPageBrowserPage = 0 ) { $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) - ($isInitialCall ? 0 : 1); } @@ -387,8 +399,7 @@ class OverviewController extends AbstractController { if ($maxNewsPerTag < $newsLimitPerTag && count($allNews) < $newsLimitPerTag) { $nextPage = $currentPageBrowserPage + 1; if ($nextPage <= $numberOfPages) { - GeneralUtility::_GETset(['tx_sgnews_pagebrowser' => ['currentPage' => $nextPage]]); - $this->overviewWithTags($newsByTag, $allNews, $newsFilter, FALSE); + $this->overviewWithTags($newsByTag, $allNews, $newsFilter, FALSE, $nextPage); return; } } @@ -412,19 +423,32 @@ class OverviewController extends AbstractController { $this->view->assign('tagTabs', TRUE); } + /** + * Initialize the overviewWithoutCategoriesAction to set the currentPageBrowserPage parameter + * + * @throws \TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException + */ + public function initializeOverviewWithoutCategoriesAction(){ + $currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgnews_pagebrowser')['currentPage']; + if($currentPageBrowserPage > 0){ + $this->request->setArgument('currentPageBrowserPage', $currentPageBrowserPage); + } + } + /** * Renders the news in a paginated list * * @param array $newsMetaData * @param array $newsFilter * @param boolean $isInitialCall + * @param int $currentPageBrowserPage * @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, $isInitialCall = TRUE + array $newsMetaData = [], array $newsFilter = NULL, $isInitialCall = TRUE, $currentPageBrowserPage = 0 ) { // remember selection of the filter values, if any $selectedTag = $this->tagRepository->findByUid((int) $newsFilter['tag']); @@ -434,7 +458,6 @@ class OverviewController extends AbstractController { $offset = 0; $newsPerPage = (int) $this->settings['newsLimit']; - $currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgnews_pagebrowser')['currentPage']; if ($currentPageBrowserPage && $newsPerPage) { // might be necessary for the recursive calling performance wise $offset = ($currentPageBrowserPage * $newsPerPage) - ($isInitialCall ? 0 : 1); @@ -505,8 +528,7 @@ class OverviewController extends AbstractController { if (count($newsMetaData) < $newsPerPage) { $nextPage = $currentPageBrowserPage + 1; if ($nextPage <= $numberOfPages) { - GeneralUtility::_GETset(['tx_sgnews_pagebrowser' => ['currentPage' => $nextPage]]); - $this->overviewWithoutCategoriesAction($newsMetaData, $newsFilter, FALSE); + $this->overviewWithoutCategoriesAction($newsMetaData, $newsFilter, FALSE, $nextPage); return; } }