People: Shannon, Peter, Aaron, Niels, Kim
This discussion was focused on enabling the Umbraco Administration
application to be easily scaleable and flexible so that it may be used
for any application. Currently the version 4 administration app can be
scaleable but the version 5 application should make this process very
straightforward and easy for developers to customize.
Previous discussions spoke about new node data providers to expose
the data necessary to build the tree structure. The version 5 admin
application will make use of the node data provider, plus 2 other
providers: a tree provider and an application provider.
Application Provider
The application provider will define applications in Umbraco such
as: content, media, members, etc.... It will also be assigned any
number of tree providers via an XML file. For example, the 'Settings'
application will host many tree providers such as 'Document Types',
'Templates', 'Dictionary', etc... The Application Provider structure
will expose properties such as:
- List<TreeProvider> Trees
- Will defin the list of tree providers contained in the application
- The default Umbraco application provider will set it's list of Trees by an XML file on load
- External Url
- If defined, the application link will open the link defined
- Application Name
- Application Icon
- (Once the entire structure is defined, there could very well be many other properties)
Tree Provider
The tree provider will be assigned a node data provider to build it's data structure. Each node data provider will expose the data service URL for the Tree Provider to call to get the data required to build the tree structure. When a user interacts with a tree node the Tree Provider will query the node data provider that was used to create the current node to determine things like: security (what the current user can do with the node such as save, delete, etc...), context menus, etc...
The Tree Provider will expose properties such as:
- Node Data Provider
- will be the initial type of node data provider used to get the initial data for the tree
- The node data provider can return other providers as children, such as the content tree will return a recycle bin node provider to render the recycle bin node as an example.
- Tree Name
- (Once the entire structure is defined, there could very well be many other properties)
Application Designer
A new application designer module should be created. This will allow for any user of the administration application to customize their administration console. The designer will allow a user to:
- Create/Delete new applications
- User's will be allowed to hide existing core applications but not delete them from their view
- Drag the various trees from the current applications they are allowed to view into any application they've created
- The user will be able to drag any node to any application, not just the root level node, and have it render as a new tree starting from this node. For example, in the content tree, there may be a container node labelled 'Blog' and another labelled 'News', the user would be able to create new applications labelled 'Blog' and 'News' then drag the 'Blog' node to the 'Blog' application and do the same with the news.
Each customized application settings will be stored in an XML file for each application user.
Package Development
We decided that Packages construction will need to be more standardized in that all of the files for a package will exist in the same subfolder. Packages should not be able to deploy files anywhere else in the file system structure.This will force developers to have consistent package design and structure.
A new Client Dependency framework will be released in version 4.1. This same framework will probably be used in version 5 to allow for package developers to easily link client dependencies (i.e. JS and CSS files) to their package development without breaking the admin application.
Simplified Scaleability
With the above features implemented, scaleing the Umbraco admin application should be fairly straightforward for developers. They will be able to easily create Applications by implementing a base application provider and adding it to the web.config file. New trees can be added to the admin section by creating a new tree class by implementing a base tree provider. To have custom data in the tree, a developer can just create their own node data provider to expose in the tree. To add trees to applications, a developer can just edit the standard application xml configuration in the web.config. All of this can then be wrapped up in a package... well thats the theory anyways!