Project

General

Profile

Actions

Feature #94617

open

Introduce generic record preview / listing

Added by Oliver Hader over 3 years ago. Updated over 3 years ago.

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:

  1. 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
  2. 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
  3. 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.
  4. 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.
  5. BE Users / Redirects
    • A custom listing is added, where functionality like listing / grouping needs to be re-implemented over and over again.
  6. 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

Also available in: Atom PDF