[BUGFIX] Quick Edit triggers warnings of missing key uid
authorPhilipp Gampe <philipp.gampe@typo3.org>
Sat, 10 Nov 2012 20:19:45 +0000 (21:19 +0100)
committerJigal van Hemert <jigal@xs4all.nl>
Mon, 26 Nov 2012 15:38:47 +0000 (16:38 +0100)
A see issue for details. Other parts of the core relay on the result of
the "broken" API call.

Fixes: #42845
Releases: 4.5, 4.6, 4.7, 6.0

Change-Id: Ic10f1e59fad24bcf5f12a805f7674eb82935e525
Reviewed-on: http://review.typo3.org/16384
Reviewed-by: Philipp Gampe
Tested-by: Philipp Gampe
Reviewed-by: Jigal van Hemert
Tested-by: Jigal van Hemert
typo3/sysext/backend/Classes/Tree/View/PagePositionMap.php

index cc82198..3a7152d 100644 (file)
@@ -489,7 +489,8 @@ class PagePositionMap {
        /**
         * Creates a linked position icon.
         *
-        * @param array $row Element row.
+        * @param mixed $row Element row. If this is an array the link will cause an insert after this content element, otherwise
+        * the link will insert at the first position in the column
         * @param string $vv Column position value.
         * @param integer $kk Column key.
         * @param integer $moveUid Move uid
@@ -498,14 +499,22 @@ class PagePositionMap {
         * @todo Define visibility
         */
        public function insertPositionIcon($row, $vv, $kk, $moveUid, $pid) {
-               $cc = hexdec(substr(md5($row['uid'] . '-' . $vv . '-' . $kk), 0, 4));
+               if (is_array($row) && !empty($row['uid'])) {
+                       // Use record uid for the hash when inserting after this content element
+                       $uid = $row['uid'];
+               } else {
+                       // No uid means insert at first position in the column
+                       $uid = '';
+               }
+               $cc = hexdec(substr(md5($uid . '-' . $vv . '-' . $kk), 0, 4));
                return '<a href="#" onclick="' . htmlspecialchars($this->onClickInsertRecord($row, $vv, $moveUid, $pid, $this->cur_sys_language)) . '" onmouseover="' . htmlspecialchars(('changeImg(\'mImg' . $cc . '\',0);')) . '" onmouseout="' . htmlspecialchars(('changeImg(\'mImg' . $cc . '\',1);')) . '">' . '<img' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg($this->backPath, 'gfx/newrecord2_marker_d.gif', 'width="100" height="8"') . ' name="mImg' . $cc . '" border="0" align="top" title="' . $GLOBALS['LANG']->getLL($this->l_insertNewRecordHere, 1) . '" alt="" />' . '</a>';
        }
 
        /**
         * Create on-click event value.
         *
-        * @param array $row The record.
+        * @param mixed $row The record. If this is not an array with the record data the insert will be for the first position
+        * in the column
         * @param string $vv Column position value.
         * @param integer $moveUid Move uid
         * @param integer $pid PID value.