Version 10 (modified by Fran Boon, 13 years ago) ( diff )



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 (
      • aURL handles the disabling of modules & hiding options without access rights
    • deployment-template for per-instance customisation (
      • 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
  • 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.

Icons in Menus?

ExtJS menus are flexible & can allow DRY creation of navigation elements (buttons/menus):

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.