Skip to content

SAIF.Presentation.Web.Controls.V2.Menu operations and processes

This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under operations/.

Operation catalog

Operation Intent Trigger Inputs Outputs Rules Tables SQL
Render side navigation menu Render the left "Applications"/Favorites navigation panel ASP.NET page lifecycle when SAIFMenu is placed on a ViewPageBase-derived page Windows user identity, session-cached NavigationContext, ShowApps/SelectedCategory/ContextLabel ViewState, clsPreferences("SHOWAPPS") Rendered favorites list, application/category accordion, context-value text box; MenuNavigate/DefaultOnSubmit/OnContextChanged events n/a — no business rules enforced natively n/a n/a
Render top toolbar menu Render the top category-link row and CRUD/print/help toolbar ASP.NET page lifecycle when SAIFMenuTop is placed on a ViewPageBase-derived page Session-cached NavigationContext, SelectedCategory, per-button clsMenuButton ViewState, current page's clsMenuAuthorizedItem, browser capabilities Rendered category link row and icon toolbar; MenuNavigate/ToolbarClick/DefaultOnSubmit events n/a — no business rules enforced natively n/a n/a
Render busy-indicator image button Add a "busy indicator" CSS class and client script to a toolbar icon PreRender event of any SAIFImageButton instance EnableIndicator/DisableFormControlsOnClick property values CSS class change, registered client script include n/a n/a n/a

Process flow diagram

The following diagram visualizes the primary operational flow when both controls are placed on the same host page.

flowchart TD
    Start([Page lifecycle begins]) --> Init[Resolve host Page as ViewPageBase]
    Init --> NavData[GetNavigationData - resolve/cache NavigationContext in Session]
    NavData --> RenderMenu[Render SAIFMenu: favorites + accordion + context box]
    NavData --> RenderTop[Render SAIFMenuTop: category links + icon toolbar]
    RenderTop --> ImgBtn[Render SAIFImageButton instances with busy-indicator behavior]
    RenderMenu --> UserClick{User clicks a link or icon?}
    RenderTop --> UserClick
    UserClick -->|Favorite/category link| Navigate([Raise MenuNavigate for host page])
    UserClick -->|Toolbar icon| Toolbar([Raise ToolbarClick for host page])
    UserClick -->|No interaction| EndRender([Render complete])

Failure and edge-case behavior

  • Both SAIFMenu.RenderControl and SAIFMenuTop.RenderControl swallow rendering exceptions and write the exception message/source/stack trace directly into the HTML output stream instead of re-throwing or logging, which can leak internal implementation details to end users in production*.
  • SAIFMenu.AddLinks throws an ApplicationException if a duplicate or blank accordion pane ID is generated while building the application/category accordion.
  • If no per-user "SHOWAPPS" preference exists, SAIFMenu defaults the applications accordion to expanded (True)*.

Sources

  • SAIF.Presentation.Web.Controls.V2.Menu\SAIFMenu.vb
  • SAIF.Presentation.Web.Controls.V2.Menu\SAIFMenuTop.vb
  • SAIF.Presentation.Web.Controls.V2.Menu\SAIFImageButton.vb