We want to add simpler and more beautiful URL that would allow a user to access directly a section in the menu of a document page.
The first thing would be to start all the URL with the tenant id to make the URL more customized to each customer. Also, if there are several accounts for the same company, it would be easier to make sure you are working on the proper tenant.
Then, we don't want to use the full path as it is before, because:
- URLs are too long
- we want to hide the data structure (no more containers displayed in the URLs) for the users to keep things easy
The target is to keep a simple structure with just the name of the project, the name of the deliverable and the name of the asset.
For example:
/apricot/project/project1@activity to access the activity section of the project project1
/big_company/deliverable/project1/deliverable1@task to access the task tab on the page of the deliverable deliverable1 in project project1
/tenant/asset/project1/deliverable1/asset1 to access the page of the asset asset1 in the deliverable deliverable1 in the project project1
For asset, you can also access a project's source like that /tenant/asset/project1/asset2
For the implementation, we need to use an intermediary variable between the page variable and the variable used in the <iron-pages> element. The <nuxeo-bm-app> element uses an observer on the page to define the value of this intermediary variable used by the iron-pages:
- if it's empty, then the dashboard is loaded
- if it's tenantid/dashboard, tenantid/members or tenantid/search, then the corresponding pages are loaded
- if it's tenantid/project, tenantid/deliverable or tenantid/asset, then a new project-navigation component is loaded and this new component is responsible from loading the appropriate layout based on the sub-route of the page