Fix bug #9897: Extending palettes and fields to be displayed in back-end forms mixes...
authorMichael Stucki <michael.stucki@typo3.org>
Tue, 23 Jun 2009 12:34:43 +0000 (12:34 +0000)
committerMichael Stucki <michael.stucki@typo3.org>
Tue, 23 Jun 2009 12:34:43 +0000 (12:34 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@5623 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_extmgm.php

index f9a05b3..8cb0ffb 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2009-06-23  Michael Stucki  <michael@typo3.org>
 
+       * Fix bug #9897: Extending palettes and fields to be displayed in back-end forms mixes up tabs
        * Follow-up to #11358: Minor cleanup
        * Fixed bug #10791: Performance improvement: Skip cHash check if page is already non-cached
        * Fixed bug #11368: Ignore ENABLE_INSTALL_TOOL file if it is older than one hour
index 531d4f8..597f0a0 100644 (file)
@@ -477,6 +477,11 @@ final class t3lib_extMgm {
         * @return      array           The needled to be used for inserting content before or after existing fields/items
         */
        protected static function getInsertionNeedles($field, array $fieldDetails) {
+               if (strstr($field,'--')) {
+                               // If $field is a separator (--div--) or palette (--palette--) then it may have been appended by a unique number. This must be stripped away here.
+                       $field = preg_replace('/[0-9]+$/', '', $field);
+               }
+
                $needles = array(
                        'before' => array($field, 'before:' . $field),
                        'after' => array('after:' . $field),
@@ -486,7 +491,7 @@ final class t3lib_extMgm {
                        $palette = $field . ';;' . $fieldDetails['palette'];
                        $needles['before'][] = $palette;
                        $needles['before'][] = 'before:' . $palette;
-                       $needles['afer'][] = 'after:' . $palette;
+                       $needles['after'][] = 'after:' . $palette;
                }
 
                return $needles;
@@ -505,8 +510,14 @@ final class t3lib_extMgm {
 
                foreach ($fieldParts as $fieldPart) {
                        $fieldDetails = t3lib_div::trimExplode(';', $fieldPart, false, 5);
-                       if (!isset($fields[$fieldDetails[0]])) {
-                               $fields[$fieldDetails[0]] = array(
+                       $key = $fieldDetails[0];
+                       if (strstr($key,'--')) {
+                                       // If $key is a separator (--div--) or palette (--palette--) then it will be appended by a unique number. This must be removed again when using this value!
+                               $key.= count($fields);
+                       }
+
+                       if (!isset($fields[$key])) {
+                               $fields[$key] = array(
                                        'rawData' => $fieldPart,
                                        'details' => array(
                                                'field' => $fieldDetails[0],
@@ -535,6 +546,11 @@ final class t3lib_extMgm {
                $fieldParts = array();
 
                foreach ($fields as $field => $fieldDetails) {
+                       if (strstr($field,'--')) {
+                                       // If $field is a separator (--div--) or palette (--palette--) then it may have been appended by a unique number. This must be stripped away here.
+                               $field = preg_replace('/[0-9]+$/', '', $field);
+                       }
+
                        if ($useRawData) {
                                $fieldParts[] = $fieldDetails['rawData'];
                        } else {