[BUGFIX] Allow recycler page in rootline in BE 43/58243/5
authorSusanne Moog <susanne.moog@typo3.org>
Wed, 12 Sep 2018 16:15:25 +0000 (18:15 +0200)
committerBenni Mack <benni@typo3.org>
Thu, 13 Sep 2018 04:24:17 +0000 (06:24 +0200)
The recycler doktype should be allowed in rootline in BE.

Resolves: #86209
Releases: master
Change-Id: I173c2deca5cd395d566a6fd9d6499538ef20d2e6
Reviewed-on: https://review.typo3.org/58243
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Joerg Kummer <typo3@enobe.de>
Tested-by: Joerg Kummer <typo3@enobe.de>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/core/Classes/Utility/RootlineUtility.php
typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php

index 5d85a6c..bc93a6a 100644 (file)
@@ -250,11 +250,7 @@ class RootlineUtility
             $row = $queryBuilder->select(...self::$rootlineFields)
                 ->from('pages')
                 ->where(
-                    $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)),
-                    $queryBuilder->expr()->neq(
-                        'doktype',
-                        $queryBuilder->createNamedParameter(PageRepository::DOKTYPE_RECYCLER, \PDO::PARAM_INT)
-                    )
+                    $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT))
                 )
                 ->execute()
                 ->fetch();
index 23a1609..370f1f7 100644 (file)
@@ -1652,15 +1652,18 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      * If any page in the root line is blocking visibility, true is returend.
      *
      * All pages from the blocking page downwards are removed from the root
-     * line, so that the remaning pages can be used to relocate the page up
+     * line, so that the remaining pages can be used to relocate the page up
      * to lowest visible page.
      *
      * The blocking feature of a page must be turned on by setting the page
-     * record field 'extendToSubpages' to 1.
+     * record field 'extendToSubpages' to 1 in case of hidden, starttime,
+     * endtime or fe_group restrictions.
      *
-     * The following fields are evaluated then:
+     * Additionally this method checks for backend user sections in root line
+     * and if found evaluates if a backend user is logged in and has access.
      *
-     *      hidden, starttime, endtime, fe_group
+     * Recyclers are also checked and trigger page not found if found in root
+     * line.
      *
      * @todo Find a better name, i.e. checkVisibilityByRootLine
      * @todo Invert boolean return value. Return true if visible.
@@ -1710,6 +1713,9 @@ class TypoScriptFrontendController implements LoggerAwareInterface
                     // Don't go here, if there is no backend user logged in.
                     $removeTheRestFlag = true;
                 }
+            } elseif ((int)$this->rootLine[$a]['doktype'] === PageRepository::DOKTYPE_RECYCLER) {
+                // page is in a recycler
+                $removeTheRestFlag = true;
             }
             if ($removeTheRestFlag) {
                 // Page is 'not found' in case a subsection was found and not accessible, code 2