Hi,
with the release of the Project/Open core module (GPL!) we have also released code for runtime-extensible "views" (similar to listbuilder), "components" (similar to portlets) and "menus" (site navigation). There is some developer documentation at http://www.project-open.com/product/dev_doc/. An online demo (P/T V1.3) is available at http://potransdemo.dnsalias.com/.
These structures allow packages to modify other modules in three ways:
Views:
Is like the listbuilder, but gets the definition of its columns from a database table. This allows new packages to extend list views of other modules. For example, the invoicing module may want to add a column "Invoiced Amount" to the ProjectListPage.
Plug-in Components:
Plug-in components are like portlets, getting their definition from a database table. For example this allows the invoice module to add a component to the ProjectViewPage with the list of project invoices.
Menus:
The P/O invoicing module may want to add a new menu tab "Invoices" to the main menu. Also, the "Freelance Skill Package" may add a "Freelancers" submenu to the users menu of the core module.
My experience with these structures is ok, but I'm not 100% happy. It's really clumsy to have API calls spread around the system, and few people would expect to find them in a SQL file... Maybe it would be better to store information in the XML .info files, because it's really an install-time operation.
Bests,
Frank
mailto:frank_dot_bergmann_at_project_dash_open_dot_com
http://www.project-open.com/