Actions
Feature #94617
openIntroduce generic record preview / listing
Status:
Under Review
Priority:
Should have
Assignee:
-
Category:
Backend User Interface
Target version:
-
Start date:
2021-07-22
Due date:
% Done:
0%
Estimated time:
PHP Version:
Tags:
Complexity:
Sprint Focus:
Description
Ideas by Benni Mack:
TYPO3 Backend uses various places where records are shown, in different ways. There are lots of issues with the rendering, as it is completely re-built on most places of TYPO3 Backend.
Some current places:
- Content Elements in Page Module
- There is a standard renderer, and a possibility to also use custom renderers
- Everybody needs to built their own renderer to e.g. resolve connected File References
- Somehow it allows to link to the FormEngine, but only if the user has access to
- Record Listing
- As known from the List module, this enables to show a record with flexible column view, but is not useful for e.g. tt_content because it does not respect the CType and relevant fields for each type. Same goes for pages and fields like "shortcut_mode" or "url" which are only relevant for a specific type
- Element Browser
- The list is also used in a limited rendering in the Element Browser, but for e.g. tt_content records, it shows the infamous "[no title]" when dealing with e.g. plugins. It is not possible to modify the listing properly, especially for specific types.
- Workspaces Module
- The list module shows sub-records (e.g. Inline Element), which DB list does not show, but at the same is not configurable at all.
- BE Users / Redirects
- A custom listing is added, where functionality like listing / grouping needs to be re-implemented over and over again.
- Files
- The DB list is sometimes used, but on the Filelist module it is not always in use.
This approach aims to unify the different renderings in various ways, allowing to standardize the output while starting to use Web Components / Custom Elements, which could / should be re-defined on a per-record and per-record-subtype basis.
Registration:
$GLOBALS['TCA']['tt_content']['types']['textpic']['display'] = [ 'small' => ['header'], 'medium' => ['header', 'bodytext', 'asset'] 'large' => ['header', 'bodytext', 'asset'], 'full' => ? 'renderer' => MyRenderer::class ]; class RecordDisplayInterface { public function resolveColumns(string $table, array $row, string $displayMode): array // @todo: deal with JS includes public function render(string $table, array $row, string $displayMode): string }
Display Modes:
- small
- medium
- large
- list
Actions:
- select checkbox (Multiselection)
- delete/hide
- link to edit
Actions