Skip directly to searchSkip directly to the site navigationSkip directly to the page's main content

View System Documentation - Menu Design

This page discusses techniques and issues dealing with the IBIS-PH View System's page menu navigation system. This discussion includes the system's goals, CSS, 508 compliance, Javascript usage, and XML menu definition files.

Design Goals

The goal was to have a presentation system that runs on 90% of all browsers, is interactive, uses widely accepted web standards, is adoptable by other agencies, is lightweight (with minimal plugins), displays high quality graphics, is maintainable and simple as possible, and is 508 compliant. Some of these design goals conflict like interactive vs. simple and high quality graphics vs. accepted web standards while some are not totally met like the 508 compliance.

Design


CSS

As mentioned above, CSS is used as much as possible to localize and control all of the web site's pages look and feel. Some XSLTs and PAGE XML files do contain local CSS overrides and/or new definitions but these are only needed/used in one special spot. If page specific CSS code is needed and it is something that another agency might want to control then that formatting should be specified in one of the included CSS files or it should be localized in an appropriate "SiteSpecific.xslt" file via a "html.otherCSS" type template call. These are best practices to follow which will help keep the pages consistent, more maintainable, and easier for another agency to change/adopt. Since most PAGE XML files are very specific to the deploying agency it is generally acceptable to embed CSS styles in this file and possibly even use some limited formatting HTML elements like "strong". See the CSS to XSLT Xref Report page for a detailed list of which HTML element/CSS definitions are used within which XSLTs.

The system uses the following CSS files:
FilenameDescription
standard.cssCore, stylesheet definitions for all IBIS-PH View System pages.
printer_friendly.cssPrinter friendly specific and "standard.css" override definitions for the printer friendly version of all IBIS-PH View System pages. This includes specifying the page width, different font sizes in terms of "points" and some color changes that are more appropriate for a printed page.
query.cssQuery specific definitions for the query module, confirmation, and result pages.
selection.cssSelection specific definitions for the query module, selection and query module builder pages. These properties control how the query steps, questions, and answers are formatted.
map.cssStyle definitions for the Map XSLT SVG.
jsp.cssStyle definitions for the system's JSP pages.
doc.css Contains system documentation page specific definitions

There are two major things to know about CSS. 1) CSS properties are inherited from their container NOT from a general class definition (as with a programming language). 2) CSS property file properties are overwritten with the last property defined having precedence. All pages utilize the css/standard.css file which provides the core formatting. Other supplemental style sheet files are then included which override previously defined style properties or define section/new page specific class definitions.

Javascript Navigation Menus

There are two basic categories of Javascript usage. The first is the menuing system with the second major category being page control. Initially the site's menu navigation was implemented using the Milonic menu because it offered great cross browser compatibility, was very "cool" and interactive, and was able to be extended dynamically. However, the Milonic menu is not 508 compliant and it is very difficult to extend and maintain for other agencies wanting to implement the system. In October 2006, an HTML list structure was implemented which is 508 compliant and much more easily understood and maintained. Javascript code is used to control how the list is displayed and to control sub menus. Javascript code also is used to provide the elevator menu movement. The site's navigation consists of two menus. The first is the horizontal tab menu which shows the major modules of the system and is the same no matter which module/part of the application the user is at. The second is the left hand context navigation menu. This menu is specific to the current page/application module. The HTML link definitions are specified in each section's "SiteSpecific.xslt" file. Listed below are the Javascript files used for the Utah navigation menu.

Milonic Menu Javascript Files:
FilenameDescription
js/mmenu/mmenu.jsContains the Milonic Menu DHTML producing Javascript code. This code reads the menu definition structures and creates DHTML menus.
js/mmenu/base.jsContains the Milonic menu style definitions, top menu tab navigation menu definitions, and core popout text menu definitions common for all IBIS-PH View System pages.
js/mmenu/home.jsLeft hand navigation menu definitions used by all "home" type pages.
js/mmenu/query.jsLeft hand navigation menu definitions used by all "query" type pages.
xslt/indicator/profile/_indicator.xsltLeft hand navigation menu definitions used by Indicator "PAGE XML" page (all non dynamically created Indicator Profile view type pages).
js/mmenu/doc.jsLeft hand navigation menu definitions used by all "doc" type pages (system documentation).

508 Compliance

The site was tested by a visually impaired person that works at Utah's Department of Health. The system was navigatable using their standard software but it was klunky due to the Milonic DHTML menu used. Future site improvements include creating the navigation menu as standard HTML with some basic Javascript used to position the menu. This coupled with the site's usage of browser specified scalable fonts provides a site that complies quite well with 508. To reach 100% compliance involves updating all HTML elements to have a "title" attribute so that when moused over or focused on that some text describing the item is available. Most of the major HTML elements within that site already have have implemented title attributes but there are some that still need to be implemented.