[BUGFIX] Moving files in filelist renames file to "1"
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_tceforms_inline.php
index d8faeed..f146c2f 100644 (file)
@@ -70,7 +70,7 @@ class t3lib_TCEforms_inline {
        protected $hookObjects = array();
 
        /**
-        * Intialize an instance of t3lib_TCEforms_inline
+        * Initialize an instance of t3lib_TCEforms_inline
         *
         * @param t3lib_TCEforms $tceForms Reference to an TCEforms instance
         * @return void
@@ -360,6 +360,7 @@ class t3lib_TCEforms_inline {
                        // Put the current level also to the dynNestedStack of TCEforms:
                $this->fObj->pushToDynNestedStack('inline', $objectId);
 
+               $class = '';
                if (!$isVirtualRecord) {
                                // Get configuration:
                        $collapseAll = (isset($config['appearance']['collapseAll']) && $config['appearance']['collapseAll']);
@@ -400,15 +401,15 @@ class t3lib_TCEforms_inline {
                        } else {
                                        // Set additional field for processing for saving
                                $fields .= '<input type="hidden" name="' . $this->prependCmdFieldNames . $appendFormFieldNames . '[delete]" value="1" disabled="disabled" />';
-                               if(!$isExpanded) {
-                                       $checked = ($rec['hidden'] == 1) ? ' checked="checked"' : '';
-                                       $fields .= '<input type="checkbox" name="' . $this->prependFormFieldNames . $appendFormFieldNames . '[hidden]_0" value="1"'.$checked.' />';
-                                       $fields .= '<input type="input" name="' . $this->prependFormFieldNames . $appendFormFieldNames . '[hidden]" value="'.$rec['hidden'].'" />';
+                               if (!$isExpanded && !empty($GLOBALS['TCA'][$foreign_table]['ctrl']['enablecolumns']['disabled'])) {
+                                       $checked = (!empty($rec['hidden']) ? ' checked="checked"' : '');
+                                       $fields .= '<input type="checkbox" name="' . $this->prependFormFieldNames . $appendFormFieldNames . '[hidden]_0" value="1"' . $checked . ' />';
+                                       $fields .= '<input type="input" name="' . $this->prependFormFieldNames . $appendFormFieldNames . '[hidden]" value="' . $rec['hidden'] . '" />';
                                }
                        }
                                // If this record should be shown collapsed
                        if (!$isExpanded) {
-                               $appearanceStyleFields = ' style="display: none;"';
+                               $class = 't3-form-field-container-inline-collapsed';
                        }
                }
 
@@ -416,13 +417,15 @@ class t3lib_TCEforms_inline {
                        $out = $fields . $combination;
                } else {
                                // Set the record container with data for output
-                       $out = '<div class="t3-form-field-record-inline" id="' . $objectId . '_fields"' . $appearanceStyleFields . '>' . $fields . $combination . '</div>';
-                       $header = $this->renderForeignRecordHeader($parentUid, $foreign_table, $rec, $config, $isVirtualRecord);
+                       $out = '<div class="t3-form-field-record-inline" id="' . $objectId . '_fields" data-expandSingle="' . ($config['appearance']['expandSingle'] ? 1 : 0) . '" data-returnURL="' . htmlspecialchars(t3lib_div::getIndpEnv('REQUEST_URI')) . '">' . $fields . $combination . '</div>';
+
+                       $header  = t3lib_iconWorks::getSpriteIcon('apps-irre-' . ($class != '' ? 'collapsed' : 'expanded'));
+                       $header .= $this->renderForeignRecordHeader($parentUid, $foreign_table, $rec, $config, $isVirtualRecord);
                        $out = '<div class="t3-form-field-header-inline" id="' . $objectId . '_header">' . $header . '</div>' . $out;
                                // Wrap the header, fields and combination part of a child record with a div container
                        $classMSIE = ($this->fObj->clientInfo['BROWSER'] == 'msie' && $this->fObj->clientInfo['VERSION'] < 8 ? 'MSIE' : '');
-                       $class = 'inlineDiv' . $classMSIE . ($isNewRecord ? ' inlineIsNewRecord' : '');
-                       $out = '<div id="' . $objectId . '_div" class="t3-form-field-container-inline ' . $class . '">' . $out . '</div>';
+                       $class .= ' inlineDiv' . $classMSIE . ($isNewRecord ? ' inlineIsNewRecord' : '');
+                       $out = '<div id="' . $objectId . '_div" class="t3-form-field-container-inline ' . trim($class) . '">' . $out . '</div>';
                }
                        // Remove the current level also from the dynNestedStack of TCEforms:
                $this->fObj->popFromDynNestedStack();
@@ -468,9 +471,7 @@ class t3lib_TCEforms_inline {
        function renderForeignRecordHeader($parentUid, $foreign_table, $rec, $config, $isVirtualRecord = FALSE) {
                        // Init:
                $objectId = $this->inlineNames['object'] . self::Structure_Separator . $foreign_table . self::Structure_Separator . $rec['uid'];
-               $expandSingle = $config['appearance']['expandSingle'] ? 1 : 0;
                        // We need the returnUrl of the main script when loading the fields via AJAX-call (to correct wizard code, so include it as 3rd parameter)
-               $onClick = "return inline.expandCollapseRecord('" . htmlspecialchars($objectId) . "', $expandSingle, '" . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI')) . "')";
 
                        // Pre-Processing:
                $isOnSymmetricSide = t3lib_loadDBGroup::isOnSymmetricSide($parentUid, $config, $rec);
@@ -533,7 +534,9 @@ class t3lib_TCEforms_inline {
                                                        array('width' => 64, 'height' => 64)
                                                )->getPublicUrl(TRUE);
 
-                                               $thumbnail = '<span class="nobr"><img src="' . $imageUrl . '" alt="' . htmlspecialchars($recTitle) . '" /></span>';
+                                               $thumbnail = '<img src="' . $imageUrl . '" alt="' . htmlspecialchars($recTitle) . '">';
+                                       } else {
+                                               $thumbnail = FALSE;
                                        }
                                }
                        }
@@ -543,28 +546,16 @@ class t3lib_TCEforms_inline {
                $iconImg = t3lib_iconWorks::getSpriteIconForRecord($foreign_table, $rec, array('title' => htmlspecialchars($altText), 'id' => $objectId . '_icon'));
                $label = '<span id="' . $objectId . '_label">' . $recTitle . '</span>';
 
-               if (!$isVirtualRecord) {
-                       $iconImg = $this->wrapWithAnchor($iconImg, '#', array('onclick' => $onClick));
-                       $label = $this->wrapWithAnchor($label, '#', array('onclick' => $onClick, 'style' => 'display: block;'));
-
-                       if (!empty($config['appearance']['headerThumbnail'])) {
-                               $thumbnail = $this->wrapWithAnchor($thumbnail, '#', array('onclick' => $onClick, 'style' => 'display: block;'));
-                       }
-               }
-
                $ctrl = $this->renderForeignRecordHeaderControl($parentUid, $foreign_table, $rec, $config, $isVirtualRecord);
 
-                       // @TODO: Check the table wrapping and the CSS definitions
                $header =
-                               '<table cellspacing="0" cellpadding="0" border="0" width="100%" style="margin-right: ' . $this->inlineStyles['margin-right'] . 'px;"' .
-                               ($this->fObj->borderStyle[2] ? ' background="' . htmlspecialchars($this->backPath . $this->fObj->borderStyle[2]) . '"' : '') .
-                               ($this->fObj->borderStyle[3] ? ' class="' . htmlspecialchars($this->fObj->borderStyle[3]) . '"' : '') . '>' .
-                               '<tr class="class-main12">' .
-                                       (!empty($config['appearance']['headerThumbnail']) && !empty($thumbnail)
-                                               ?       '<td width="75" id="' . $objectId . '_thumbnailcontainer">' . $thumbnail . '</td>'
-                                               :       '<td width="18" id="' . $objectId . '_iconcontainer">' . $iconImg . '</td>') .
-                                       '<td align="left"><strong>' . $label . '</strong></td>' .
-                                       '<td align="right">' . $ctrl . '</td>' .
+                               '<table>' .
+                               '<tr>' .
+                                       (!empty($config['appearance']['headerThumbnail']) && $thumbnail
+                                               ?       '<td class="t3-form-field-header-inline-thumbnail" id="' . $objectId . '_thumbnailcontainer">' . $thumbnail . '</td>'
+                                               :       '<td class="t3-form-field-header-inline-icon" id="' . $objectId . '_iconcontainer">' . $iconImg . '</td>') .
+                                       '<td class="t3-form-field-header-inline-summary">' . $label . '</td>' .
+                                       '<td clasS="t3-form-field-header-inline-ctrl">' . $ctrl . '</td>' .
                                '</tr>' .
                                '</table>';
 
@@ -655,10 +646,6 @@ class t3lib_TCEforms_inline {
                                }
                        }
 
-                               // Drag&Drop Sorting: Sortable handler for script.aculo.us
-                       if ($enabledControls['dragdrop'] && $permsEdit && $enableManualSorting && $config['appearance']['useSortable']) {
-                               $cells['dragdrop'] = t3lib_iconWorks::getSpriteIcon('actions-move-move', array('class' => 'sortableHandle', 'title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.move', TRUE)));
-                       }
 
                                // "Up/Down" links
                        if ($enabledControls['sort'] && $permsEdit && $enableManualSorting) {
@@ -709,10 +696,15 @@ class t3lib_TCEforms_inline {
                                                                t3lib_iconWorks::getSpriteIcon('actions-edit-delete', array('title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_web_list.xml:delete', TRUE))) .
                                                                '</a>';
                        }
+
+                               // Drag&Drop Sorting: Sortable handler for script.aculo.us
+                       if ($enabledControls['dragdrop'] && $permsEdit && $enableManualSorting && $config['appearance']['useSortable']) {
+                               $cells['dragdrop'] = t3lib_iconWorks::getSpriteIcon('actions-move-move', array('class' => 'sortableHandle', 'title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.move', TRUE)));
+                       }
                                // If this is a virtual record offer a minimized set of icons for user interaction:
                } elseif ($isVirtualRecord) {
                        if ($enabledControls['localize'] && isset($rec['__create'])) {
-                               $onClick = "inline.synchronizeLocalizeRecords('" . $nameObjectFt . "', " . $rec['uid'] . ");";
+                               $onClick = "inline.synchronizeLocalizeRecords('" . $nameObjectFt . "', " . $rec['uid'] . ');';
                                $cells['localize'] = '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' .
                                                                        t3lib_iconWorks::getSpriteIcon('actions-document-localize', array('title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_misc.xml:localize', TRUE))) .
                                                                        '</a>';
@@ -730,10 +722,8 @@ class t3lib_TCEforms_inline {
                foreach ($this->hookObjects as $hookObj) {
                        $hookObj->renderForeignRecordHeaderControl_postProcess($parentUid, $foreign_table, $rec, $config, $isVirtualRecord, $cells);
                }
-                       // Compile items into a DIV-element:
-               return '
-                                                                                       <!-- CONTROL PANEL: ' . $foreign_table . ':' . $rec['uid'] . ' -->
-                                                                                       <div class="typo3-DBctrl">' . implode('', $cells) . '</div>';
+
+               return '<!-- CONTROL PANEL: ' . $foreign_table . ':' . $rec['uid'] . ' -->'  . implode('', $cells);
        }
 
 
@@ -906,6 +896,7 @@ class t3lib_TCEforms_inline {
                $config = $PA['fieldConf']['config'];
                $allowed = $config['allowed'];
                $objectPrefix = $this->inlineNames['object'] . self::Structure_Separator . $foreign_table;
+               $mode = 'db';
 
                if (!empty($conf['appearance']['createNewRelationLinkTitle'])) {
                        $createNewRelationText  = $GLOBALS['LANG']->sL($conf['appearance']['createNewRelationLinkTitle'], TRUE);
@@ -913,9 +904,18 @@ class t3lib_TCEforms_inline {
                        $createNewRelationText = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:cm.createNewRelation', 1);
                }
 
+               if (is_array($config['appearance'])) {
+                       if (isset($config['appearance']['elementBrowserType'])) {
+                               $mode = $config['appearance']['elementBrowserType'];
+                       }
+                       if (isset($config['appearance']['elementBrowserAllowed'])) {
+                               $allowed = $config['appearance']['elementBrowserAllowed'];
+                       }
+               }
+
                $browserParams = ('|||' . $allowed . '|' . $objectPrefix . '|inline.checkUniqueElement||inline.importElement');
 
-               $onClick = "setFormValueOpenBrowser('db','" . $browserParams . "'); return false;";
+               $onClick = "setFormValueOpenBrowser('".$mode."', '" . $browserParams . "'); return false;";
                $item = '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' .
                        t3lib_iconWorks::getSpriteIcon('actions-insert-record', array('title' => $createNewRelationText)) . $createNewRelationText .
                        '</a>';
@@ -941,7 +941,7 @@ class t3lib_TCEforms_inline {
                                $icon = 'actions-document-new';
                                $className = 'typo3-newRecordLink';
                                $attributes['class'] = 'inlineNewButton ' . $this->inlineData['config'][$nameObject]['md5'];
-                               $attributes['onclick'] = "return inline.createNewRecord('$objectPrefix')";
+                               $attributes['onclick'] = "return inline.createNewRecord('" . $objectPrefix . "')";
                                if (isset($conf['inline']['inlineNewButtonStyle']) && $conf['inline']['inlineNewButtonStyle']) {
                                        $attributes['style'] = $conf['inline']['inlineNewButtonStyle'];
                                }
@@ -953,14 +953,14 @@ class t3lib_TCEforms_inline {
                                $title = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_misc.xml:localizeAllRecords', 1);
                                $icon = 'actions-document-localize';
                                $className = 'typo3-localizationLink';
-                               $attributes['onclick'] = "return inline.synchronizeLocalizeRecords('$objectPrefix', 'localize')";
+                               $attributes['onclick'] = "return inline.synchronizeLocalizeRecords('" . $objectPrefix . "', 'localize')";
                        break;
                        case 'synchronize':
                                $title = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_misc.xml:synchronizeWithOriginalLanguage', 1);
                                $icon = 'actions-document-synchronize';
                                $className = 'typo3-synchronizationLink';
                                $attributes['class'] = 'inlineNewButton ' . $this->inlineData['config'][$nameObject]['md5'];
-                               $attributes['onclick'] = "return inline.synchronizeLocalizeRecords('$objectPrefix', 'synchronize')";
+                               $attributes['onclick'] = "return inline.synchronizeLocalizeRecords('" . $objectPrefix . "', 'synchronize')";
                        break;
                }
                        // Create the link:
@@ -1037,8 +1037,6 @@ class t3lib_TCEforms_inline {
         * @return void
         */
        protected function processAjaxRequestConstruct(&$ajaxArguments) {
-               require_once(PATH_typo3 . 'template.php');
-
                $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_alt_doc.xml');
 
                        // Create a new anonymous object:
@@ -1186,8 +1184,8 @@ class t3lib_TCEforms_inline {
                        $jsonArray = array(
                                'data' => $item,
                                'scriptCall' => array(
-                                       "inline.domAddNewRecord('bottom','" . $this->inlineNames['object'] . "_records','$objectPrefix',json.data);",
-                                       "inline.memorizeAddRecord('$objectPrefix','" . $record['uid'] . "',null,'$foreignUid');"
+                                       "inline.domAddNewRecord('bottom','" . $this->inlineNames['object'] . "_records','" . $objectPrefix . "',json.data);",
+                                       "inline.memorizeAddRecord('" . $objectPrefix . "','" . $record['uid'] . "',null,'" . $foreignUid . "');"
                                )
                        );
 
@@ -1196,15 +1194,15 @@ class t3lib_TCEforms_inline {
                        $jsonArray = array(
                                'data' => $item,
                                'scriptCall' => array(
-                                       "inline.domAddNewRecord('after','" . $domObjectId . '_div' . "','$objectPrefix',json.data);",
-                                       "inline.memorizeAddRecord('$objectPrefix','" . $record['uid'] . "','" . $current['uid'] . "','$foreignUid');"
+                                       "inline.domAddNewRecord('after','" . $domObjectId . '_div' . "','" . $objectPrefix. "',json.data);",
+                                       "inline.memorizeAddRecord('" . $objectPrefix . "','" . $record['uid'] . "','" . $current['uid'] . "','" . $foreignUid . "');"
                                )
                        );
                }
                $this->getCommonScriptCalls($jsonArray, $config);
                        // Collapse all other records if requested:
                if (!$collapseAll && $expandSingle) {
-                       $jsonArray['scriptCall'][] = "inline.collapseAllRecords('$objectId', '$objectPrefix', '" . $record['uid'] . "');";
+                       $jsonArray['scriptCall'][] = "inline.collapseAllRecords('" . $objectId . "', '" . $objectPrefix . "', '" . $record['uid'] . "');";
                }
                        // Tell the browser to scroll to the newly created record
                $jsonArray['scriptCall'][] = "Element.scrollTo('" . $objectId . "_div');";
@@ -1347,7 +1345,7 @@ class t3lib_TCEforms_inline {
                        $row = $this->getRecord($this->inlineFirstPid, $current['table'], $item);
                        $selectedValue = ($foreignSelector ? "'" . $row[$foreignSelector] . "'" : 'null');
                        $data .= $this->renderForeignRecord($parent['uid'], $row, $parent['config']);
-                       $jsonArrayScriptCall[] = "inline.memorizeAddRecord('$nameObjectForeignTable', '" . $item . "', null, $selectedValue);";
+                       $jsonArrayScriptCall[] = "inline.memorizeAddRecord('" . $nameObjectForeignTable . "', '" . $item . "', null, " . $selectedValue . ');';
                                // Remove possible virtual records in the form which showed that a child records could be localized:
                        if (isset($row[$transOrigPointerField]) && $row[$transOrigPointerField]) {
                                $jsonArrayScriptCall[] = "inline.fadeAndRemove('" . $nameObjectForeignTable . self::Structure_Separator . $row[$transOrigPointerField] . '_div' . "');";
@@ -1357,7 +1355,7 @@ class t3lib_TCEforms_inline {
                        $jsonArray['data'] = $data;
                        array_unshift(
                                $jsonArrayScriptCall,
-                               "inline.domAddNewRecord('bottom', '" . $nameObject . "_records', '$nameObjectForeignTable', json.data);"
+                               "inline.domAddNewRecord('bottom', '" . $nameObject . "_records', '" . $nameObjectForeignTable . "', json.data);"
                        );
                }
 
@@ -1593,7 +1591,7 @@ class t3lib_TCEforms_inline {
                                if (in_array($p[1], $removeItems) || $languageDeny || $authModeDeny) {
                                        unset($selItems[$tk]);
                                } elseif (isset($PA['fieldTSConfig']['altLabels.'][$p[1]])) {
-                                       $selItems[$tk][0] = $this->fObj->sL($PA['fieldTSConfig']['altLabels.'][$p[1]]);
+                                       $selItems[$tk][0] = htmlspecialchars($this->fObj->sL($PA['fieldTSConfig']['altLabels.'][$p[1]]));
                                }
 
                                        // Removing doktypes with no access:
@@ -2058,9 +2056,6 @@ class t3lib_TCEforms_inline {
        function wrapFormsSection($section, $styleAttrs = array(), $tableAttrs = array()) {
                $style = '';
                $table = '';
-               if (!$styleAttrs['margin-right']) {
-                       $styleAttrs['margin-right'] = $this->inlineStyles['margin-right'] . 'px';
-               }
 
                foreach ($styleAttrs as $key => $value) {
                        $style .= ($style ? ' ' : '') . $key . ': ' . htmlspecialchars($value) . '; ';
@@ -2072,18 +2067,7 @@ class t3lib_TCEforms_inline {
                if (!$tableAttrs['background'] && $this->fObj->borderStyle[2]) {
                        $tableAttrs['background'] = $this->backPath . $this->borderStyle[2];
                }
-               if (!$tableAttrs['cellspacing']) {
-                       $tableAttrs['cellspacing'] = '0';
-               }
-               if (!$tableAttrs['cellpadding']) {
-                       $tableAttrs['cellpadding'] = '0';
-               }
-               if (!$tableAttrs['border']) {
-                       $tableAttrs['border'] = '0';
-               }
-               if (!$tableAttrs['width']) {
-                       $tableAttrs['width'] = '100%';
-               }
+
                if (!$tableAttrs['class'] && $this->borderStyle[3]) {
                        $tableAttrs['class'] = $this->borderStyle[3];
                }
@@ -2261,7 +2245,9 @@ class t3lib_TCEforms_inline {
                $flat = FALSE;
                if (is_array($possibleRecords)) {
                        $flat = array();
-                       foreach ($possibleRecords as $record) $flat[$record[1]] = $record[0];
+                       foreach ($possibleRecords as $record) {
+                               $flat[$record[1]] = $record[0];
+                       }
                }
                return $flat;
        }
@@ -2525,4 +2511,4 @@ class t3lib_TCEforms_inline {
        }
 }
 
-?>
\ No newline at end of file
+?>