[FOLLOWUP][BUGFIX] List module must not do editlock for admins 38/41738/3
authorAndreas Wolf <andreas.wolf@typo3.org>
Mon, 20 Jul 2015 14:59:39 +0000 (16:59 +0200)
committerAndreas Fernandez <typo3@scripting-base.de>
Mon, 20 Jul 2015 15:33:29 +0000 (17:33 +0200)
Commit 3e2d72d3 introduced a generic editlock mechanism for all record
types. If a page is locked for editing, all the content elements are
also locked.

The list module related part of that commit introduced a bug, which is
fixed with this commit: the lock was also applied for admins, hence the
edit icons were removed also for them.

Change-Id: I801544a6b3f571e10c8e41366c073b352bc22c8f
Releases: master
Related: #68279
Reviewed-on: http://review.typo3.org/41738
Reviewed-by: Susanne Moog <typo3@susannemoog.de>
Tested-by: Susanne Moog <typo3@susannemoog.de>
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez <typo3@scripting-base.de>
typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php

index c48247a..049ccbd 100644 (file)
@@ -1933,7 +1933,9 @@ class DatabaseRecordList extends AbstractDatabaseRecordList {
        }
 
        /**
-        * Check if the current record is locked by editlock
+        * Check if the current record is locked by editlock. Pages are locked if their editlock flag is set,
+        * records are if they are locked themselves or if the page they are on is locked (a page’s editlock
+        * is transitive for its content elements).
         *
         * @param string $table
         * @param array $row
@@ -1941,7 +1943,7 @@ class DatabaseRecordList extends AbstractDatabaseRecordList {
         * @return bool
         */
        protected function overlayEditLockPermissions($table, $row, $editPermission = TRUE) {
-               if ($editPermission) {
+               if ($editPermission && !$this->getBackendUserAuthentication()->isAdmin()) {
                        if (($table === 'pages' && $row['editlock']) || ($table !== 'pages' && $this->pageRow['editlock'])) {
                                $editPermission = FALSE;
                        } elseif (isset($GLOBALS['TCA'][$table]['ctrl']['editlock']) && $row[$GLOBALS['TCA'][$table]['ctrl']['editlock']]) {
@@ -1972,4 +1974,4 @@ class DatabaseRecordList extends AbstractDatabaseRecordList {
                return $GLOBALS['TBE_TEMPLATE'];
        }
 
-}
\ No newline at end of file
+}