Version 10 (modified by 13 years ago) ( diff ) | ,
---|
Menu
Our current menu has these deficiencies:
- No visual clue to the user as to where in the system that they are
- Not easy to provide deployment customisations which are separated from the main code
Proposed solution:
- Move all the menu configuration to a single pair of files:
- Generic settings (01_menu.py)
- aURL handles the disabling of modules & hiding options without access rights
- deployment-template for per-instance customisation (01_menu_.py)
- Labels & Hiding unused options
- Generic settings (01_menu.py)
- Render out HTML using a new S3Menu class (replacing the existing MENUS3)
- HTML/CSS will come from a design company
- 1st level navigation will be horizontal (as-now) with CSS to show which one we're active in
- 2nd level navigation will be available onHover of the 1st-level & when inside a 1st/2nd level, will be available as a vertical menu on the left
- 3rd level navigation will be available onHover of the 2nd-level & when inside a 3rd level, will be available as a submenu within the 2nd-level vertical menu on the left
- Breadcrumbs will be rendered out from the same configuration
- (default) Module index pages will be rendered out from the same configuration
- Site Map can be rendered out from the same configuration
Ideally this would be loaded once & then cached (e.g. have the system generate a static menu.js which can then be loaded/cached)
We should always know where in the system we are.
- e.g. Chevron-style breadcrumbs (e.g. http://www.guardian.co.uk/world/usa)
- e.g. Highlight the active menu item using CSS (JS to set this would be in the main body template, rather than in menu.js)
- Web2Py implementation of breadcrumbs: http://www.web2pyslices.com/main/slices/take_slice/47
Icons in Menus?
- http://groups.google.com/group/web2py/browse_thread/thread/aeb21cca011e4632
- Easy with this jQuery menu
ExtJS menus are flexible & can allow DRY creation of navigation elements (buttons/menus):
- http://www.extjs.com/deploy/dev/examples/menu/menus.html
- http://www.extjs.com/deploy/dev/examples/menu/actions.html
- Example: http://demo.eden.sahanafoundation.org/extjs
Ideas for improving the menu:
- Code for the menus should be segregated between the technical implementation and the layout - making it easy for non-technical users to customize the menu and reducing the clutter in the code, and reduce the amount of code being executed every run in the models.
- Make Menu customization completely independent from the modules.
- How many levels? Configurable. Suggestion.
- Application - a deployment of Sahana may contain different applications, which may be used by different people and certainly at different times/workflows. This could be separate from the main menu - at the very top.
- Functional - what does someone want to do in the current application.
- Functional level 2 / Work Stage - this could represent work flow, or just reduce the clutter in one level of functional
- Avoid 3rd level - especially pop-ups!
Allow the user to define a custom home page, without editing core code.
Note:
See TracWiki
for help on using the wiki.