I have created the following issue for the Alfresco Content App (ACA):
Module/extension mechanism · Issue #179 · Alfresco/alfresco-content-app · GitHub
Following is the initial detail, let's use this page on the community to discuss our needs in this area:
I believe that there has been some work to create a module system where we can create an Alfresco Content App (ACA) customization artifact and drop it into a location in the OOTB app without extending the code of the ACA. It would be great to have some discussion about the approach(es).
There are a few higher level goals here:
- Provide a way for implementors to create re-usable enhancements to ACA that can be composed when creating a solution.
- e.g. I want to add AOS and Case Management
- Provide a way for implementors to create enhancements that are likely to be upgrade safe
Following is an initial list of highly desirable features of such a system (in my opinion):
- It should be possible to add page components to the router via configuration
- It should be possible to configure that certain custom pages show up in the toolbar
- It should be possible to configure that certain custom pages don't show up in the toolbar (if they are contextual.)
- It should be possible to add buttons to the main toolbar
- It should be possible to configure actions for the "New" menu
- It should be possible to configure actions for the User menu (far right of toolbar)
- It should be possible to add document list actions (and associated logic for when to display/enable the same) via configuration
- Ideally it should be possible to affect the ordering of these actions via configuration
- Ideally it should be easy to add an action to route to a custom page
- Ideally it should be easy to route to another ADF app; passing context, credentials and a back link (I will create an ADF issue for this.)
- Ideally one action can be configured as the default in certain conditions (i.e. don't go to preview, instead route to another application when a document is activated.)
- It should be possible to configure custom result columns
- Ideally it should be possible to configure different columns depending on context. e.g. under contracts I want to show one set of columns, under finance a different set of columns should be displayed
- It should be possible to configure custom cell content renderers
- It should be possible to configure flag providers
- Once search is fleshed out it should be possible to configure advanced search providers
- It should be possible to configure the zero state when a search returns zero results
- It should be possible to configure additional "smart folders" like "My Favorites", "Shared Documents" etc.
- Ideally it should be possible to affect the ordering of these via configuration
- It should be possible to configure preview components
- It should be possible to configure metadata forms (create, edit, view at least)
- It should be possible to configure custom field renderers fro metadata forms.
- It should be possible to configure Open With menu items
- It should be possible to configure "More Options" items
- Would be great to allow us to configure components to trigger during the upload process
- Some might be passive (once upload completes perform some API calls against the uploaded docs)
- Some might be active, gather metadata before or after the upload
- It should be possible to configure left and right trays based on contextual information/logic
- Ideally "modules" can interact with each other. As such, having some control over load order of modules may be important.
As an overarching goal there should be a single config file in ACA and one in each "module" that plugs the module into the ACA. i.e. don't make devs sift through many different configuration files. Ideally configuration merging/replacement strategies will be well documented and easy to determine the effective configuration once all modules have been deployed.
I'm sure other folks will have additional ideas, I hope this is a reasonable starting point.