[TYPO3-core] Rework "recordlist" base, for further use in TYPO3 modules

Søren Malling soren.malling at gmail.com
Sun Aug 26 19:36:07 CEST 2012


Hi,

Up to the release of 6.0 I've been working on UI changes for the Page 
module and I've found the page module code a really hard task to tackle :-)

It took me a while to figure out, how it was connected to the abstract 
recordlist (now EXT:backend/Classes/Recordlist/AbstractRecordList) from 
it's own "list_extra" class, and the real page module was a lot of HTML 
wrapping and conditions whether to show what, or why not.

Together with a coworker we started brainstorming about the usage of the 
recordlist module and came up with a concept, I would like to discuss 
here (drumroll).

PURPOSE:
------------
Streamline the way modules fetches elements and the visual output. 
Implements a transparent abstraction layer, for further usage

ISSUE:
------------
We are "listing" (we do more than listing, but same concept applies) a 
lot of things in the backend:

* database table record in the "List" module
* page module (listing of content element)
* backend users inside "Backend user administration"
* extensions in the extension manager
* sys_log entries
* FAL
* scheduler tasks

In most/every case, the module implements it's own SELECT statement and 
own HTML template/wrapping and looks very similiar.

But to much inline/own-implemented HTML is a PITA for further 
development and extending - and makes it hard for developers to give 
there own BE module a nice "TYPO3 look" that will easily follow the UI 
changes of the backend.

USECASE:
------------
"Web" -> "List": Fetch all database tables registred in TCA on this 
specific PID and display it in the default "List records" table

"Admin" -> "Extension manager": Fetch all extension in the system 
(folders in typo3conf/ext) through a transparent abstraction layer

"Web" -> "Page": Fetch all tt_content elements from this PID, with 
translated to language UID 2. Display it with a custom registred 
template or render mechanism.

"File" -> "List": Display all sys_file records with whatever buttons 
comes with the specific file type

"MyShopModule" -> "Orders": Fetch orders and display them in a default 
"List records" table

"MyShopModule" -> "Capture payments": Fetch non-captured payments from 
payment provider (no persisting to a table!), and display them in a 
table with whatever buttons



So, this is more or less the concept we came up with during a half hour 
talk.. And now I would like to get your opinions, and I would like to 
get more feedback than "+1" and "GOGOGOGO". Please focus on stuff like

* UI (future changes ex.)
* DBAL issues/benefits
* Code benefits / happy developers
* Translation/versioning issues to tackle
* Usecases where this concept will be a.. "not so nice thing", to use
* Already existing extensions (done, not-done, only 
"on-paper"-description etc.) where this concept "exists" that we can get 
inspired from
* Backward compatibility stuff we have to be aware of, in case this 
should come real

.. you got the point, right?

Thank you, for taking your time to read this - and now, start your 
engines and hit this list with feedback :-)

Cheers!

Søren




More information about the TYPO3-team-core mailing list