[FEATURE] Render all fields in ElementInformationController 24/61424/8
authorGeorg Ringer <georg.ringer@gmail.com>
Fri, 2 Aug 2019 22:59:26 +0000 (00:59 +0200)
committerBenni Mack <benni@typo3.org>
Mon, 17 Feb 2020 12:04:27 +0000 (13:04 +0100)
The element information modal now shows all fields of the
current record and the selected type.

The TCA configuration `showRecordFieldList` inside the section `interface` is not evaluated anymore and all occurences have been removed.

Resolves: #88901
Releases: master
Change-Id: I7d2dcb60b04b16083e615bf23dccf54f0a493848
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61424
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Stefan Froemken <froemken@gmail.com>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Stefan Froemken <froemken@gmail.com>
Reviewed-by: Benni Mack <benni@typo3.org>
57 files changed:
typo3/sysext/backend/Classes/Controller/ContentElement/ElementInformationController.php
typo3/sysext/backend/Resources/Private/Templates/ContentElement/ElementInformation.html
typo3/sysext/core/Classes/Category/CategoryRegistry.php
typo3/sysext/core/Configuration/TCA/be_groups.php
typo3/sysext/core/Configuration/TCA/be_users.php
typo3/sysext/core/Configuration/TCA/pages.php
typo3/sysext/core/Configuration/TCA/sys_category.php
typo3/sysext/core/Configuration/TCA/sys_collection.php
typo3/sysext/core/Configuration/TCA/sys_file.php
typo3/sysext/core/Configuration/TCA/sys_file_collection.php
typo3/sysext/core/Configuration/TCA/sys_file_metadata.php
typo3/sysext/core/Configuration/TCA/sys_file_reference.php
typo3/sysext/core/Configuration/TCA/sys_file_storage.php
typo3/sysext/core/Configuration/TCA/sys_filemounts.php
typo3/sysext/core/Configuration/TCA/sys_language.php
typo3/sysext/core/Configuration/TCA/sys_news.php
typo3/sysext/core/Documentation/Changelog/master/Feature-88901-RenderAllFieldsInElementInformationController.rst [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_1ncsv_hotel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_1ncsv_offer.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_1ncsv_price.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_1nff_hotel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_1nff_offer.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_1nff_price.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnasym_hotel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnasym_hotel_offer_rel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnasym_offer.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnasym_price.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnattr_hotel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnattr_hotel_offer_rel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnattr_offer.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnmmasym_hotel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnmmasym_offer.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnmmasym_price.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnsym_hotel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/TCA/tx_irretutorial_mnsym_hotel_rel.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/test_datahandler/Configuration/TCA/tx_testdatahandler_element.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_blog.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_comment.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_dateexample.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_info.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_person.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_post.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_tag.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/class_overriding/a/Configuration/TCA/tx_a_domain_model_a.php
typo3/sysext/extensionmanager/Configuration/TCA/tx_extensionmanager_domain_model_extension.php
typo3/sysext/extensionmanager/Configuration/TCA/tx_extensionmanager_domain_model_repository.php
typo3/sysext/frontend/Configuration/TCA/backend_layout.php
typo3/sysext/frontend/Configuration/TCA/fe_groups.php
typo3/sysext/frontend/Configuration/TCA/fe_users.php
typo3/sysext/frontend/Configuration/TCA/pages_language_overlay.php
typo3/sysext/frontend/Configuration/TCA/sys_template.php
typo3/sysext/frontend/Configuration/TCA/tt_content.php
typo3/sysext/indexed_search/Configuration/TCA/index_config.php
typo3/sysext/redirects/Configuration/TCA/sys_redirect.php
typo3/sysext/scheduler/Configuration/TCA/tx_scheduler_task_group.php
typo3/sysext/sys_note/Configuration/TCA/sys_note.php
typo3/sysext/workspaces/Classes/Controller/Remote/RemoteServer.php

index c58bf6d..7ca3b59 100644 (file)
@@ -16,18 +16,26 @@ namespace TYPO3\CMS\Backend\Controller\ContentElement;
  */
 
 use Doctrine\DBAL\Connection;
+use Exception;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use TYPO3\CMS\Backend\Backend\Avatar\Avatar;
+use TYPO3\CMS\Backend\Form\FormDataCompiler;
+use TYPO3\CMS\Backend\Form\FormDataGroup\TcaDatabaseRecord;
+use TYPO3\CMS\Backend\Routing\Exception\RouteNotFoundException;
+use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Backend\Template\ModuleTemplate;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Http\HtmlResponse;
 use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
+use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Resource\AbstractFile;
 use TYPO3\CMS\Core\Resource\File;
 use TYPO3\CMS\Core\Resource\Folder;
+use TYPO3\CMS\Core\Resource\Rendering\RendererRegistry;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Type\Bitmask\Permission;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -157,7 +165,7 @@ class ElementInformationController
     /**
      * Init database records (table)
      */
-    protected function initDatabaseRecord()
+    protected function initDatabaseRecord(): void
     {
         $this->type = 'db';
         $this->uid = (int)$this->uid;
@@ -187,7 +195,7 @@ class ElementInformationController
     /**
      * Init file/folder parameters
      */
-    protected function initFileOrFolderRecord()
+    protected function initFileOrFolderRecord(): void
     {
         $fileOrFolderObject = GeneralUtility::makeInstance(ResourceFactory::class)->retrieveFileOrFolderObject($this->uid);
 
@@ -203,7 +211,7 @@ class ElementInformationController
 
             try {
                 $this->row = BackendUtility::getRecordWSOL($this->table, $fileOrFolderObject->getUid());
-            } catch (\Exception $e) {
+            } catch (Exception $e) {
                 $this->row = [];
             }
         }
@@ -266,7 +274,7 @@ class ElementInformationController
     protected function getPageTitle(): array
     {
         $pageTitle = [
-            'title' => BackendUtility::getRecordTitle($this->table, $this->row, false)
+            'title' => BackendUtility::getRecordTitle($this->table, $this->row)
         ];
         if ($this->type === 'folder') {
             $pageTitle['table'] = $this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:folder');
@@ -299,8 +307,7 @@ class ElementInformationController
         if ($this->fileObject->isMissing()) {
             $preview['missingFile'] = $this->fileObject->getName();
         } else {
-            /** @var \TYPO3\CMS\Core\Resource\Rendering\RendererRegistry $rendererRegistry */
-            $rendererRegistry = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Resource\Rendering\RendererRegistry::class);
+            $rendererRegistry = GeneralUtility::makeInstance(RendererRegistry::class);
             $fileRenderer = $rendererRegistry->getRenderer($this->fileObject);
             $fileExtension = $this->fileObject->getExtension();
             $preview['url'] = $this->fileObject->getPublicUrl(true);
@@ -400,11 +407,31 @@ class ElementInformationController
                     $thisRow['value'] = '';
                 }
             }
-            $propertiesForTable['extraFields'][] = $thisRow;
+            $propertiesForTable['extraFields'][$name] = $thisRow;
         }
 
         // Traverse the list of fields to display for the record:
-        $fieldList = GeneralUtility::trimExplode(',', $GLOBALS['TCA'][$this->table]['interface']['showRecordFieldList'], true);
+        $formDataGroup = GeneralUtility::makeInstance(TcaDatabaseRecord::class);
+        $formDataCompiler = GeneralUtility::makeInstance(FormDataCompiler::class, $formDataGroup);
+        $formDataCompilerInput = [
+            'command' => 'edit',
+            'tableName' => $this->table,
+            'vanillaUid' => (int)$this->row['uid'],
+        ];
+        try {
+            $result = $formDataCompiler->compile($formDataCompilerInput);
+            $fieldList = array_unique(array_values($result['columnsToProcess']));
+
+            $ctrlKeysOfUneededFields = ['origUid', 'transOrigPointerField', 'transOrigDiffSourceField'];
+            foreach ($ctrlKeysOfUneededFields as $field) {
+                if (($key = array_search($GLOBALS['TCA'][$this->table]['ctrl'][$field], $fieldList)) !== false) {
+                    unset($fieldList[$key]);
+                }
+            }
+        } catch (Exception $exception) {
+            $fieldList = [];
+        }
+
         foreach ($fieldList as $name) {
             $thisRow = [];
             $name = trim($name);
@@ -428,9 +455,11 @@ class ElementInformationController
             if ($isExcluded) {
                 continue;
             }
+            $label = $lang->sL(BackendUtility::getItemLabel($this->table, $name));
+            $label = $label ?: $name;
 
             $thisRow['fieldValue'] = BackendUtility::getProcessedValue($this->table, $name, $this->row[$name], 0, 0, false, $uid);
-            $thisRow['fieldLabel'] = htmlspecialchars($lang->sL(BackendUtility::getItemLabel($this->table, $name)));
+            $thisRow['fieldLabel'] = htmlspecialchars($label);
             $propertiesForTable['fields'][] = $thisRow;
         }
         return $propertiesForTable;
@@ -469,7 +498,7 @@ class ElementInformationController
      * @param string $fieldName Column name
      * @return string label
      */
-    protected function getLabelForTableColumn($tableName, $fieldName)
+    protected function getLabelForTableColumn($tableName, $fieldName): string
     {
         if ($GLOBALS['TCA'][$tableName]['columns'][$fieldName]['label'] !== null) {
             $field = $this->getLanguageService()->sL($GLOBALS['TCA'][$tableName]['columns'][$fieldName]['label']);
@@ -489,6 +518,7 @@ class ElementInformationController
      * @param int $uid
      * @param ServerRequestInterface $request
      * @return array
+     * @throws RouteNotFoundException
      */
     protected function getRecordActions($table, $uid, ServerRequestInterface $request): array
     {
@@ -506,8 +536,7 @@ class ElementInformationController
             ],
             'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri()
         ];
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
+        $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
         $actions['recordEditUrl'] = (string)$uriBuilder->buildUriFromRoute('record_edit', $urlParameters);
 
         // History button
@@ -535,8 +564,9 @@ class ElementInformationController
      * @param string|\TYPO3\CMS\Core\Resource\File $ref Filename or uid
      * @param ServerRequestInterface $request
      * @return array
+     * @throws RouteNotFoundException
      */
-    protected function makeRef($table, $ref, ServerRequestInterface $request)
+    protected function makeRef($table, $ref, ServerRequestInterface $request): array
     {
         $refLines = [];
         $lang = $this->getLanguageService();
@@ -548,7 +578,6 @@ class ElementInformationController
             $selectTable = $table;
             $selectUid = $ref;
         }
-        /** @var \TYPO3\CMS\Core\Database\Query\QueryBuilder $queryBuilder */
         $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
             ->getQueryBuilderForTable('sys_refindex');
 
@@ -588,7 +617,7 @@ class ElementInformationController
             if ($row['tablename'] === 'sys_file_reference') {
                 $row = $this->transformFileReferenceToRecordReference($row);
                 if ($row['tablename'] === null || $row['recuid'] === null) {
-                    return;
+                    return [];
                 }
             }
 
@@ -611,8 +640,7 @@ class ElementInformationController
                     ],
                     'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri()
                 ];
-                /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-                $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
+                $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
                 $url = (string)$uriBuilder->buildUriFromRoute('record_edit', $urlParameters);
                 $line['url'] = $url;
                 $line['icon'] = $this->iconFactory->getIconForRecord($row['tablename'], $record, Icon::SIZE_SMALL)->render();
@@ -647,7 +675,6 @@ class ElementInformationController
         $refFromLines = [];
         $lang = $this->getLanguageService();
 
-        /** @var \TYPO3\CMS\Core\Database\Query\QueryBuilder $queryBuilder */
         $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
             ->getQueryBuilderForTable('sys_refindex');
 
@@ -695,8 +722,7 @@ class ElementInformationController
                     ],
                     'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri()
                 ];
-                /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-                $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
+                $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
                 $url = (string)$uriBuilder->buildUriFromRoute('record_edit', $urlParameters);
                 $line['url'] = $url;
                 $line['icon'] = $this->iconFactory->getIconForRecord($row['tablename'], $record, Icon::SIZE_SMALL)->render();
@@ -723,9 +749,8 @@ class ElementInformationController
      * @param array $referenceRecord
      * @return array
      */
-    protected function transformFileReferenceToRecordReference(array $referenceRecord)
+    protected function transformFileReferenceToRecordReference(array $referenceRecord): array
     {
-        /** @var \TYPO3\CMS\Core\Database\Query\QueryBuilder $queryBuilder */
         $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
             ->getQueryBuilderForTable('sys_file_reference');
         $queryBuilder->getRestrictions()->removeAll();
@@ -764,21 +789,17 @@ class ElementInformationController
     }
 
     /**
-     * Returns LanguageService
-     *
-     * @return \TYPO3\CMS\Core\Localization\LanguageService
+     * @return LanguageService
      */
-    protected function getLanguageService()
+    protected function getLanguageService(): LanguageService
     {
         return $GLOBALS['LANG'];
     }
 
     /**
-     * Returns the current BE user.
-     *
-     * @return \TYPO3\CMS\Core\Authentication\BackendUserAuthentication
+     * @return BackendUserAuthentication
      */
-    protected function getBackendUser()
+    protected function getBackendUser(): BackendUserAuthentication
     {
         return $GLOBALS['BE_USER'];
     }
index 395a485..f23df62 100644 (file)
@@ -1,11 +1,56 @@
 <f:if condition="{accessAllowed}">
     <f:then>
-        <h1>
-            <f:if condition="{table}">
-                <small>{table}</small><br />{icon -> f:format.raw()}
-                <span title="{title}">{title -> f:format.crop(maxCharacters: maxTitleLength)}</span>
-            </f:if>
-        </h1>
+        <div class="card-container">
+            <div class="card">
+
+                <div class="card-header">
+                    <div class="card-icon">
+                        {icon -> f:format.raw()}
+                    </div>
+
+                    <div class="card-header-body">
+                        <h1 class="card-title">{title -> f:format.crop(maxCharacters: maxTitleLength)} [{extraFields.uid.fieldLabel}: {extraFields.uid.value}]</h1>
+                        <f:if condition="{table}">
+                            <span class="card-subtitle">{table}</span>
+                        </f:if>
+                    </div>
+                </div>
+
+                <div class="card-content">
+                    <div class="row">
+                        <f:if condition="{extraFields.crdate}">
+                            <div class="col-md-6">
+                                <strong>{extraFields.crdate.fieldLabel}</strong><br>
+                                {extraFields.crdate.value}
+                            </div>
+                        </f:if>
+                        <f:if condition="{extraFields.tstamp}">
+                            <div class="col-md-6">
+                                <strong>{extraFields.tstamp.fieldLabel}</strong><br>
+                                {extraFields.tstamp.value}
+                            </div>
+                        </f:if>
+                    </div>
+                    <f:if condition="{extraFields.cruser_id.creatorRecord}">
+                        <div class="row">
+                            <div class="col-md-12">
+                                <div class="media">
+                                    <div class="media-left">
+                                        {extraFields.cruser_id.creatorRecord.icon -> f:format.raw()}
+                                    </div>
+                                    <div class="media-body">
+                                        <strong>{extraFields.cruser_id.creatorRecord.username}</strong><br>
+                                        {extraFields.cruser_id.creatorRecord.realName}
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </f:if>
+                </div>
+            </div>
+        </div>
+
+
         <f:if condition="{missingFile}">
             <f:be.infobox title="{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:warning.file_missing')}" state="1">{missingFile}</f:be.infobox>
         </f:if>
@@ -32,9 +77,6 @@
         </f:if>
         <div class="table-fit table-fit-wrap">
             <table class="table table-striped table-hover">
-                <f:for each="{extraFields}" as="extraField">
-                    <f:render section="extraFieldRow" arguments="{row: extraField}" />
-                </f:for>
                 <f:for each="{fields}" as="field">
                     <f:render section="fieldRow" arguments="{row: field}" />
                 </f:for>
     </f:else>
 </f:if>
 
-
-
-<f:section name="extraFieldRow">
-    <tr>
-        <th class="col-nowrap">{row.fieldLabel}</th>
-        <td>
-            <f:if condition="{row.creatorRecord}">
-                <div class="media">
-                    <div class="media-left">
-                        {row.creatorRecord.icon -> f:format.raw()}
-                    </div>
-                    <div class="media-body">
-                        <strong>{row.creatorRecord.username}</strong><br>
-                        {row.creatorRecord.realName}
-                    </div>
-                </div>
-            </f:if>
-            <f:if condition="{row.value}">
-                {row.value}
-            </f:if>
-        </td>
-    </tr>
-</f:section>
-
 <f:section name="fieldRow">
     <tr>
         <th class="col-nowrap">{row.fieldLabel}</th>
index 3d2f140..9c699b9 100644 (file)
@@ -365,15 +365,6 @@ class CategoryRegistry implements SingletonInterface
                 $GLOBALS['TCA']['sys_category']['columns']['items']['config']['MM_oppositeUsage'][$tableName][] = $fieldName;
             }
 
-            // Add field to interface list per default (unless the 'interface' property is FALSE)
-            if (
-                (!isset($options['interface']) || $options['interface'])
-                && !empty($GLOBALS['TCA'][$tableName]['interface']['showRecordFieldList'])
-                && !GeneralUtility::inList($GLOBALS['TCA'][$tableName]['interface']['showRecordFieldList'], $fieldName)
-            ) {
-                $GLOBALS['TCA'][$tableName]['interface']['showRecordFieldList'] .= ',' . $fieldName;
-            }
-
             // Adding fields to an existing table definition
             ExtensionManagementUtility::addTCAcolumns($tableName, $columns);
         }
index d40260b..62b0267 100644 (file)
@@ -22,9 +22,6 @@ return [
         'versioningWS_alwaysAllowLiveEdit' => true,
         'searchFields' => 'title'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title, db_mountpoints, file_mountpoints, file_permissions, tables_select, tables_modify, pagetypes_select, non_exclude_fields, groupMods, lockToDomain, description'
-    ],
     'columns' => [
         'title' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:be_groups.title',
index f255e4e..0a94d4e 100644 (file)
@@ -27,9 +27,6 @@ return [
         'versioningWS_alwaysAllowLiveEdit' => true,
         'searchFields' => 'username,email,realName'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'username,description,usergroup,db_mountpoints,file_mountpoints,admin,options,file_permissions,userMods,lockToDomain,realName,email,disable,starttime,endtime,lastlogin'
-    ],
     'columns' => [
         'username' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:be_users.username',
index 512fbed..8a647c3 100644 (file)
@@ -64,7 +64,6 @@ return [
         'searchFields' => 'title,nav_title,subtitle,url,keywords,description,abstract,author,author_email'
     ],
     'interface' => [
-        'showRecordFieldList' => 'doktype,title,rowDescription,hidden,starttime,endtime,fe_group,url,target,shortcut,keywords,description,abstract,newUntil,lastUpdated,cache_timeout,cache_tags,backend_layout,backend_layout_next_level',
         'maxDBListItems' => 30,
         'maxSingleDBListItems' => 50
     ],
index 844e4c7..af53bee 100644 (file)
@@ -29,9 +29,6 @@ return [
             'ignoreRootLevelRestriction' => true,
         ]
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title,description'
-    ],
     'types' => [
         '1' => [
             'showitem' => '
index 1606b14..c88fbc5 100644 (file)
@@ -30,9 +30,6 @@ return [
             'fe_group' => 'fe_group'
         ],
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title, description, table_name, items'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index a8e04d0..0a37a56 100644 (file)
@@ -23,9 +23,6 @@ return [
         ],
         'searchFields' => 'name, type, mime_type, sha1'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'storage, name, type, mime_type, size, sha1, missing'
-    ],
     'columns' => [
         'fileinfo' => [
             'config' => [
index 2a58366..4e7dff0 100644 (file)
@@ -28,9 +28,6 @@ return [
         ],
         'searchFields' => 'files,title'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l10n_parent,l10n_diffsource,hidden,starttime,endtime,files,title,description'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 6587084..b866636 100644 (file)
@@ -24,9 +24,6 @@ return [
         ],
         'searchFields' => 'title,description,alternative'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'file, alternative, description, title'
-    ],
     'columns' => [
         'crdate' => [
             'config' => [
index 68a00cd..962e328 100644 (file)
@@ -35,9 +35,6 @@ return [
         ],
         'searchFields' => 'uid_local,uid_foreign,tablenames,fieldname,title,description'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
index 1bda7d8..2a62c4c 100644 (file)
@@ -17,9 +17,6 @@ return [
         ],
         'searchFields' => 'name,description'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'name,description,driver,processingfolder,configuration,auto_extract_metadata'
-    ],
     'columns' => [
         'name' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_file_storage.name',
index 51dc97d..b352725 100644 (file)
@@ -21,9 +21,6 @@ return [
         'versioningWS_alwaysAllowLiveEdit' => true,
         'searchFields' => 'title,path'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title,hidden,path,base,description'
-    ],
     'columns' => [
         'title' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_filemounts.title',
index 2e5e6d2..be71139 100644 (file)
@@ -18,9 +18,6 @@ return [
         ],
         'versioningWS_alwaysAllowLiveEdit' => true
     ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden,title'
-    ],
     'columns' => [
         'title' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
index 99c57c3..0928c22 100644 (file)
@@ -20,9 +20,6 @@ return [
         ],
         'searchFields' => 'title,content'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden,title,content,starttime,endtime'
-    ],
     'columns' => [
         'hidden' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.enabled',
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-88901-RenderAllFieldsInElementInformationController.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-88901-RenderAllFieldsInElementInformationController.rst
new file mode 100644 (file)
index 0000000..21c65c5
--- /dev/null
@@ -0,0 +1,20 @@
+.. include:: ../../Includes.txt
+
+===================================================================
+Feature: #88901 - Render all fields in ElementInformationController
+===================================================================
+
+See :issue:`88901`
+
+Description
+===========
+
+The element information modal now shows all fields of the current record and the selected type.
+
+
+Impact
+======
+
+The TCA configuration `showRecordFieldList` inside the section `interface` is not evaluated anymore and all occurences have been removed.
+
+.. index:: Backend
index 5860981..79d7df7 100644 (file)
@@ -20,9 +20,6 @@ return [
         'shadowColumnsForNewPlaceholders' => 'offers',
         'shadowColumnsForMovePlaceholders' => 'offers',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,offers'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 748743e..ca2e85c 100644 (file)
@@ -20,9 +20,6 @@ return [
         'shadowColumnsForNewPlaceholders' => 'prices',
         'shadowColumnsForMovePlaceholders' => 'prices',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,prices'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index b50a007..ec79d05 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,price'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 966647f..38687a9 100644 (file)
@@ -21,9 +21,6 @@ return [
         // 'shadowColumnsForNewPlaceholders' => 'parentid,parenttable',
         'shadowColumnsForMovePlaceholders' => 'parentid,parenttable,parentidentifier',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,offers'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 9f9e915..3cb8d59 100644 (file)
@@ -21,9 +21,6 @@ return [
         // 'shadowColumnsForNewPlaceholders' => 'parentid,parenttable',
         'shadowColumnsForMovePlaceholders' => 'parentid,parenttable,parentidentifier',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,parentid,parenttable,title,prices'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 14ea023..d123b82 100644 (file)
@@ -21,9 +21,6 @@ return [
         // 'shadowColumnsForNewPlaceholders' => 'parentid,parenttable',
         'shadowColumnsForMovePlaceholders' => 'parentid,parenttable,parentidentifier',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,parentid,title,price'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index ede6ac9..4596eb3 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,offers'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index a6e69f7..52ba7fb 100644 (file)
@@ -19,9 +19,6 @@ return [
         // @see http://forge.typo3.org/issues/29278 which solves it implicitly in the Core
         // 'shadowColumnsForNewPlaceholders' => 'hotelid,offerid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,hotelid,offerid,prices,hotelsort,offersort'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index a3d1c76..8e4377f 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,hotels'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index ab37701..9c8c658 100644 (file)
@@ -20,9 +20,6 @@ return [
         // @see http://forge.typo3.org/issues/29278 which solves it implicitly in the Core
         // 'shadowColumnsForNewPlaceholders' => 'parentid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,parentid,price'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 066e4e6..7fbcb79 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,offers'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index ae2b34a..7e80ad2 100644 (file)
@@ -19,9 +19,6 @@ return [
         // @see http://forge.typo3.org/issues/29278 which solves it implicitly in the Core
         // 'shadowColumnsForNewPlaceholders' => 'hotelid,offerid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,hotelid,offerid,hotelsort,offersort,quality,allincl'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index a476687..4c6c2e0 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,hotels'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 2538af1..ca5f03e 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,offers'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 0b983a1..1c496ff 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,hotels,prices'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 5d54b6b..9dca7b9 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,price,offers'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 687d192..8db355b 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,branches'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 0883d98..9dd0126 100644 (file)
@@ -19,9 +19,6 @@ return [
         // @see http://forge.typo3.org/issues/29278 which solves it implicitly in the Core
         // 'shadowColumnsForNewPlaceholders' => 'hotelid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l18n_parent,l18n_diffsource,hidden,title,hotelid,offerid,hotelsort,offersort'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 6651b39..2a092df 100644 (file)
@@ -18,9 +18,6 @@ return [
         'versioningWS' => true,
         'origUid' => 't3_origuid',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid,l10n_parent,l10n_diffsource,hidden,title'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index 8576a32..3300860 100644 (file)
@@ -17,9 +17,6 @@ return [
         ],
         'iconfile' => 'EXT:blog_example/Resources/Public/Icons/icon_tx_blogexample_domain_model_blog.gif'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title, posts, administrator'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index b989779..c87b7f6 100644 (file)
@@ -13,9 +13,6 @@ return [
         ],
         'iconfile' => 'EXT:blog_example/Resources/Public/Icons/icon_tx_blogexample_domain_model_comment.gif'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden, date, author, email, content'
-    ],
     'columns' => [
         'hidden' => [
             'exclude' => true,
index 98b30a7..7a94124 100644 (file)
@@ -12,9 +12,6 @@ return [
         ],
         'iconfile' => 'EXT:blog_example/Resources/Public/Icons/icon_tx_blogexample_domain_model_dateexample.gif'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title, posts, administrator'
-    ],
     'columns' => [
         'datetime_text' => [
             'exclude' => 1,
index 73c8843..d0a2c0e 100644 (file)
@@ -17,9 +17,6 @@ return [
         ],
         'iconfile' => 'EXT:blog_example/Resources/Public/Icons/icon_tx_blogexample_domain_model_tag.gif'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden, name'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index f9273d6..96d489f 100644 (file)
@@ -18,9 +18,6 @@ return [
         ],
         'iconfile' => 'EXT:blog_example/Resources/Public/Icons/icon_tx_blogexample_domain_model_person.gif'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'firstname, lastname, email, avatar'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index aeb6680..f1013f7 100644 (file)
@@ -20,7 +20,6 @@ return [
         'iconfile' => 'EXT:blog_example/Resources/Public/Icons/icon_tx_blogexample_domain_model_post.gif'
     ],
     'interface' => [
-        'showRecordFieldList' => 'title, date, author',
         'maxDBListItems' => 100,
         'maxSingleDBListItems' => 500
     ],
index e24a1c0..d3573b0 100644 (file)
@@ -16,9 +16,6 @@ return [
         ],
         'iconfile' => 'EXT:blog_example/Resources/Public/Icons/icon_tx_blogexample_domain_model_tag.gif'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden, name, posts'
-    ],
     'columns' => [
         'sys_language_uid' => [
             'exclude' => true,
index ff16f41..2045a44 100644 (file)
@@ -6,9 +6,6 @@ return [
         'tstamp' => 'tstamp',
         'crdate' => 'crdate',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title'
-    ],
     'columns' => [
         'a' => [
             'label' => 'a',
index e29d5cf..194943d 100644 (file)
@@ -11,9 +11,6 @@ return [
             'default' => 'empty-icon'
         ]
     ],
-    'interface' => [
-        'showRecordFieldList' => 'extension_key,version,integer_version,title,description,state,category,last_updated,update_comment,author_name,author_email,md5hash,serialized_dependencies,documentation_link'
-    ],
     'columns' => [
         'extension_key' => [
             'label' => 'LLL:EXT:extensionmanager/Resources/Private/Language/locallang_db.xlf:tx_extensionmanager_domain_model_extension.extensionkey',
index ed16a81..24f8c7b 100644 (file)
@@ -11,9 +11,6 @@ return [
             'default' => 'empty-icon'
         ]
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title,description,wsdl_url_mirror_list_url,last_update,extension_count'
-    ],
     'columns' => [
         'title' => [
             'label' => 'LLL:EXT:extensionmanager/Resources/Private/Language/locallang_db.xlf:tx_extensionmanager_domain_model_repository.title',
index a237ce6..37208d9 100644 (file)
@@ -19,9 +19,6 @@ return [
         ],
         'selicon_field' => 'icon'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title,config,description,hidden,icon'
-    ],
     'columns' => [
         'title' => [
             'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:backend_layout.title',
index 0f3718a..3f31190 100644 (file)
@@ -19,9 +19,6 @@ return [
         'useColumnsForDefaultValues' => 'lockToDomain',
         'searchFields' => 'title,description'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title,hidden,subgroup,lockToDomain,description'
-    ],
     'columns' => [
         'hidden' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.enabled',
index db90a22..b7734fd 100644 (file)
@@ -20,9 +20,6 @@ return [
         'useColumnsForDefaultValues' => 'usergroup,lockToDomain,disable,starttime,endtime',
         'searchFields' => 'username,name,first_name,last_name,middle_name,address,telephone,fax,email,title,zip,city,country,company,description'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'username,password,usergroup,lockToDomain,name,first_name,middle_name,last_name,title,company,address,zip,city,country,email,www,telephone,fax,disable,starttime,endtime,lastlogin,description'
-    ],
     'columns' => [
         'username' => [
             'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:fe_users.username',
index 9df8de8..7d5e437 100644 (file)
@@ -31,9 +31,6 @@ return [
         'adminOnly' => true,
         'searchFields' => 'title,subtitle,nav_title,keywords,description,abstract,author,author_email,url'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title,hidden,starttime,endtime,keywords,description,abstract'
-    ],
     'columns' => [
         'doktype' => $GLOBALS['TCA']['pages']['columns']['doktype'],
         'hidden' => [
index 8934053..695d5e5 100644 (file)
@@ -26,9 +26,6 @@ return [
         ],
         'searchFields' => 'title,constants,config'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'title,clear,root,basedOn,sitetitle,description,hidden,starttime,endtime'
-    ],
     'columns' => [
         'title' => [
             'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:sys_template.title',
index c5ee3c1..d8b6047 100644 (file)
@@ -61,7 +61,6 @@ return [
     ],
     'interface' => [
         'always_description' => 0,
-        'showRecordFieldList' => 'CType,header,rowDescription,header_link,bodytext,image,media,imagewidth,imageorient,records,colPos,starttime,endtime,fe_group'
     ],
     'columns' => [
         'CType' => [
index 3355251..4f54dd1 100644 (file)
@@ -17,9 +17,6 @@ return [
             'default' => 'mimetypes-x-index_config'
         ]
     ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden,starttime,title,description,type,depth,table2index,alternative_source_pid,get_params,filepath,extensions'
-    ],
     'columns' => [
         'hidden' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.enabled',
index 088b74e..dbff9f8 100644 (file)
@@ -27,9 +27,6 @@ return [
         ],
         'searchFields' => 'source_host,source_path,target,target_statuscode',
     ],
-    'interface' => [
-        'showRecordFieldList' => 'disabled, source_host, source_path, respect_query_parameters, is_regexp, force_https, keep_query_parameters, target, target_statuscode, hitcount, lasthiton, disable_hitcount',
-    ],
     'types' => [
         '1' => [
             'showitem' => '
index 9f4f11b..b9fb1b0 100644 (file)
@@ -18,9 +18,6 @@ return [
         ],
         'searchFields' => 'groupName'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden,groupName'
-    ],
     'columns' => [
         'groupName' => [
             'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.groupName',
index 4ce67a2..9a99ba7 100644 (file)
@@ -14,9 +14,6 @@ return [
         'sortby' => 'sorting',
         'searchFields' => 'subject,message'
     ],
-    'interface' => [
-        'showRecordFieldList' => 'category,subject,message,personal'
-    ],
     'columns' => [
         'category' => [
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.category',
index c362aa6..54dfa5a 100644 (file)
@@ -138,12 +138,6 @@ class RemoteServer
         $icon_Workspace = $iconFactory->getIconForRecord($parameter->table, $versionRecord, Icon::SIZE_SMALL)->render();
         $stagePosition = $this->stagesService->getPositionOfCurrentStage($parameter->stage);
         $fieldsOfRecords = array_keys($liveRecord);
-        if ($GLOBALS['TCA'][$parameter->table]) {
-            if ($GLOBALS['TCA'][$parameter->table]['interface']['showRecordFieldList']) {
-                $fieldsOfRecords = $GLOBALS['TCA'][$parameter->table]['interface']['showRecordFieldList'];
-                $fieldsOfRecords = GeneralUtility::trimExplode(',', $fieldsOfRecords, true);
-            }
-        }
         foreach ($fieldsOfRecords as $fieldName) {
             if (empty($GLOBALS['TCA'][$parameter->table]['columns'][$fieldName]['config'])) {
                 continue;