= Menu = [[TOC]] BluePrint/Menu/Application 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 * 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 * The Vertical menu will mean that our dataTables lists will have less width available to them. The designer's recommendation is to reduce the font-size & keep the vertical menu's width as small as possible. * 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 == Old Ideas == 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 [http://demo.eden.sahanafoundation.org/jquery 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.