[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