Skip to content

SAIF.Presentation.Web.Core.Infragistics111 business rules

This page captures business rules enforced by this library.

BR-CORE-001: Session keep-alive is enabled by default on every SAIF application page

Field Value
Statement Session keep-alive is enabled by default on every SAIF application page.
Trigger Page Init
Enforcement AppViewPageBase.aspx.vb (Page_Init)
Outcome EnableSessionPing = True unless the page overrides it.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-002: Session keep-alive scripts are never emitted to externally-classified clients

Field Value
Statement Session keep-alive scripts are never emitted to externally-classified clients.
Trigger CallSessionPing with EnableSessionPing = True
Enforcement AppViewPageBase.aspx.vb (CallSessionPing)
Outcome External clients receive no ping script and their sessions time out normally.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-003: The session ping script is registered at most once per page

Field Value
Statement The session ping script is registered at most once per page.
Trigger Script block SessionPing already registered
Enforcement AppViewPageBase.aspx.vb (CallSessionPing)
Outcome Duplicate registration is skipped.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-004: Control back-colors are re-normalized on every page load unless the page opts out

Field Value
Statement Control back-colors are re-normalized on every page load unless the page opts out.
Trigger Page Load with CallResetBackcolor = True
Enforcement AppViewPageBase.aspx.vb (Page_Load)
Outcome Consistent field colouring across postbacks.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-005: Colour state is carried by CSS classes, and previous state classes are stripped before a new one is applied

Field Value
Statement Colour state is carried by CSS classes, and previous state classes are stripped before a new one is applied.
Trigger ResetBackColor on any control exposing CssClass
Enforcement clsControlManager.vb (ResetBackColor)
Outcome No accumulation of errorbackcolor / disabledbackcolor / defaultbackcolor tokens.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-006: The menu context text box (CVTextBox) is exempt from back-color reset

Field Value
Statement The menu context text box (CVTextBox) is exempt from back-color reset.
Trigger Control ID = CVTextBox
Enforcement clsControlManager.vb (ResetBackColor)
Outcome Menu context box keeps its own styling.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-007: Read-only input controls render with disabledbackcolor; editable ones render with defaultbackcolor

Field Value
Statement Read-only input controls render with disabledbackcolor; editable ones render with defaultbackcolor.
Trigger ResetBackColor on an input/editor control
Enforcement clsControlManager.vb (ResetBackColor)
Outcome Users can visually distinguish editable fields.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-008: Buttons, radio buttons and check boxes render with the normal CSS class

Field Value
Statement Buttons, radio buttons and check boxes render with the normal CSS class.
Trigger ResetBackColor on those control types
Enforcement clsControlManager.vb (ResetBackColor)
Outcome Consistent button/selection styling.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-009: Protecting a control makes it read-only (or disabled) and applies the disabled background

Field Value
Statement Protecting a control makes it read-only (or disabled) and applies the disabled background.
Trigger ProtectItem
Enforcement clsControlManager.vb (ProtectItem)
Outcome The field cannot be edited and is visibly disabled.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-010: A protected DropDownList is hidden and replaced by a read-only text box whose ID is the drop-down ID with DDL replaced by txt

Field Value
Statement A protected DropDownList is hidden and replaced by a read-only text box whose ID is the drop-down ID with DDL replaced by txt.
Trigger ProtectItem on a DropDownList
Enforcement clsControlManager.vb (ProtectItem)
Outcome The selected value is shown as read-only text.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-011: Grid layout preferences are keyed by preference type + grid ID + band key

Field Value
Statement Grid layout preferences are keyed by preference type + grid ID + band key.
Trigger Any Apply/Save/Clear preference call
Enforcement AppViewPageBase.aspx.vb (preference regions)
Outcome Each grid, and each band of a multi-band grid, keeps independent preferences.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-012: Stored column order, widths and grid size are re-applied when the grid renders

Field Value
Statement Stored column order, widths and grid size are re-applied when the grid renders.
Trigger ApplyColumnPreferences finds stored values
Enforcement AppViewPageBase.aspx.vb (ApplyColumnPreferences, ApplyColSettings)
Outcome The user sees their own saved layout.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-013: Stored sort preferences are re-applied and can be converted into an ORDER BY fragment for the caller's query

Field Value
Statement Stored sort preferences are re-applied and can be converted into an ORDER BY fragment for the caller's query.
Trigger ApplySortPreferences / GetSortPreferenceOrderBy
Enforcement AppViewPageBase.aspx.vb
Outcome Grid sorting survives navigation away and back.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-014: Saving preferences captures every column of every band as comma-delimited key and width lists

Field Value
Statement Saving preferences captures every column of every band as comma-delimited key and width lists.
Trigger SavePreferences with SizeOnly = False
Enforcement AppViewPageBase.aspx.vb (SavePreferences)
Outcome Complete layout is persisted.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-015: Sort preferences are stored only when the caller requests it and a non-empty sort actually exists

Field Value
Statement Sort preferences are stored only when the caller requests it and a non-empty sort actually exists.
Trigger SavePreferences with IncludeSort = True
Enforcement AppViewPageBase.aspx.vb (SavePreferences)
Outcome Empty sort strings are not persisted.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-016: Grid size is persisted only when both height and width are greater than zero, in "px,px" form

Field Value
Statement Grid size is persisted only when both height and width are greater than zero, in "<height>px,<width>px" form.
Trigger SavePreferences with height and width supplied
Enforcement AppViewPageBase.aspx.vb (SavePreferences)
Outcome Partial/zero sizes are ignored.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-017: Menu data is always read as the fixed database user MENU, against the environment named by the MENU_ENVIRONMENT app setting

Field Value
Statement Menu data is always read as the fixed database user MENU, against the environment named by the MENU_ENVIRONMENT app setting.
Trigger NavigationContext construction
Enforcement NavigationContext.vb (New)
Outcome Menu queries run under a dedicated, environment-specific account.
Source SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb

BR-CORE-018: User IDs are trimmed and upper-cased before authorized-item lookup

Field Value
Statement User IDs are trimmed and upper-cased before authorized-item lookup.
Trigger NavigationContext construction
Enforcement NavigationContext.vb (New)
Outcome Case and whitespace differences do not affect authorization results.
Source SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb

BR-CORE-019: Navigation answers are restricted to the menu items the user is authorized for

Field Value
Statement Navigation answers are restricted to the menu items the user is authorized for.
Trigger Any NavigationContext query
Enforcement NavigationContext.vb
Outcome Unauthorized menu items are invisible to the application.
Source SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb

BR-CORE-020: Application codes and menu category codes are loaded once and cached for the life of the process

Field Value
Statement Application codes and menu category codes are loaded once and cached for the life of the process.
Trigger First access to ApplicationCodes / MenuCategories
Enforcement NavigationContext.vb (GetApplicationCodes, GetMenuCategories)
Outcome Repeat lookups avoid additional database round trips; code changes require a recycle.*
Source SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb

BR-CORE-021: When the current application path does not map to a known application code, navigation lookups return no item

Field Value
Statement When the current application path does not map to a known application code, navigation lookups return no item.
Trigger ItemByAppPath returns Nothing
Enforcement NavigationContext.vb
Outcome Callers get Nothing / 0 instead of a wrong item.
Source SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb

Field Value
Statement Page and item lookups prefer an exact link match and fall back to a partial match.
Trigger GetCurrentItem, GetCurrentPage, GetItem
Enforcement NavigationContext.vb
Outcome Query-string variants still resolve to the right menu item.
Source SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb

BR-CORE-023: GetItem with inAnyApp = True searches by category across all applications, ignoring the current application code

Field Value
Statement GetItem with inAnyApp = True searches by category across all applications, ignoring the current application code.
Trigger Caller passes inAnyApp = True
Enforcement NavigationContext.vb (GetItem)
Outcome Cross-application links can be resolved.
Source SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb

BR-CORE-024: Outbound mail is sent through the legacy mail web service whose URL comes from the LegacyMailWebServiceUrl configuration setting

Field Value
Statement Outbound mail is sent through the legacy mail web service whose URL comes from the LegacyMailWebServiceUrl configuration setting.
Trigger Any SendMail / SendMailWithAttachment call
Enforcement clsMailMessage.vb
Outcome Mail routing is environment-configurable, not hard-coded.
Source SAIF.Presentation.Web.Core.Infragistics111/clsMailMessage.vb

BR-CORE-025: Recipient and subject text are sanitized before being placed in a mailto: URL

Field Value
Statement Recipient and subject text are sanitized before being placed in a mailto: URL.
Trigger OpenEmailPopup / OpenEmailScriptManager
Enforcement AppViewPageBase.aspx.vb
Outcome Characters that would break the URL are removed or escaped.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

Field Value
Statement A CC recipient is included in the mailto: link only when a non-empty CC value is supplied.
Trigger OpenEmailScriptManager CC overload
Enforcement AppViewPageBase.aspx.vb
Outcome No empty cc= parameter is emitted.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-027: Download content type is derived from the file extension: .txt → text/plain, .csv → application/vnd.ms-excel

Field Value
Statement Download content type is derived from the file extension: .txt → text/plain, .csv → application/vnd.ms-excel.
Trigger StreamDownloadFile
Enforcement clsMailMessage.vb (StreamDownloadFile)
Outcome Browsers handle the download correctly; other extensions get an empty content type.*
Source SAIF.Presentation.Web.Core.Infragistics111/clsMailMessage.vb

BR-CORE-028: No focus script is emitted when the master page has no focus control

Field Value
Statement No focus script is emitted when the master page has no focus control.
Trigger Master PreRender
Enforcement AppViewMasterPageBase.vb (RenderClientScripts)
Outcome Pages without a designated focus control are unaffected.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewMasterPageBase.vb

BR-CORE-029: Client-side focus targeting is control-type specific, because Infragistics editors render nested input elements

Field Value
Statement Client-side focus targeting is control-type specific, because Infragistics editors render nested input elements.
Trigger RegisterFocusControlScript
Enforcement AppViewMasterPageBase.vb
Outcome Focus lands on the real input element rather than the wrapper.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewMasterPageBase.vb

BR-CORE-030: Focus is applied 100 ms after load inside a try/catch, so a missing element never breaks the page

Field Value
Statement Focus is applied 100 ms after load inside a try/catch, so a missing element never breaks the page.
Trigger RegisterFocusControlScript
Enforcement AppViewMasterPageBase.vb
Outcome Focus failures are silent.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewMasterPageBase.vb

BR-CORE-031: The SAIFMenu control's focus target is redirected to the CVTextBox context box

Field Value
Statement The SAIFMenu control's focus target is redirected to the CVTextBox context box.
Trigger NavigationManager.BoundControlId set to a SAIFMenu
Enforcement AppViewMasterPageBase.vb (NavigationManager)
Outcome Focus goes to the menu's context entry field.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewMasterPageBase.vb

BR-CORE-032: Drop-down lists may be pre-pended with a blank entry rendered as a literal blank, an empty string, or a space, per DDLAddItems

Field Value
Statement Drop-down lists may be pre-pended with a blank entry rendered as a literal blank, an empty string, or a space, per DDLAddItems.
Trigger LoadDDL
Enforcement clsControlManager.vb (LoadDDL overloads)
Outcome "No selection" is representable in every list flavour.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-033: Grid scroll/begin-edit/focus behavior is implemented per Infragistics grid flavour (UltraWebGrid, WebDataGrid, WebHierarchicalDataGrid)

Field Value
Statement Grid scroll/begin-edit/focus behavior is implemented per Infragistics grid flavour (UltraWebGrid, WebDataGrid, WebHierarchicalDataGrid).
Trigger Corresponding helper call
Enforcement clsControlManager.vb
Outcome The correct client-side API is invoked for each grid type.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-034: Disabling a page disables every control it contains

Field Value
Statement Disabling a page disables every control it contains.
Trigger EnablePageControl(Page, False)
Enforcement clsControlManager.vb (EnablePageControl)
Outcome Whole-screen read-only mode.
Source SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb

BR-CORE-035: The root master page is the first ancestor master with no parent master

Field Value
Statement The root master page is the first ancestor master with no parent master.
Trigger MasterLevelCount / Root
Enforcement clsNestedMaster.vb
Outcome Nested master hierarchies resolve deterministically.
Source SAIF.Presentation.Web.Core.Infragistics111/clsNestedMaster.vb

BR-CORE-036: Control search within nested masters is scoped to the named content placeholder when one is supplied

Field Value
Statement Control search within nested masters is scoped to the named content placeholder when one is supplied.
Trigger FindControl with contentPlaceHolderID
Enforcement clsNestedMaster.vb (RecurseFindControl)
Outcome The right control is found in the right region.
Source SAIF.Presentation.Web.Core.Infragistics111/clsNestedMaster.vb

BR-CORE-037: If the recursive nested search finds nothing, a direct FindControl on the root master is attempted

Field Value
Statement If the recursive nested search finds nothing, a direct FindControl on the root master is attempted.
Trigger FindControl recursion returns Nothing
Enforcement clsNestedMaster.vb (FindControl)
Outcome Controls declared directly on the root master are still found.
Source SAIF.Presentation.Web.Core.Infragistics111/clsNestedMaster.vb

BR-CORE-038: Menu context is only validated on postbacks and only when the menu control supplied a value

Field Value
Statement Menu context is only validated on postbacks and only when the menu control supplied a value.
Trigger IsValidNumericMenuContext
Enforcement clsAppControllerBase.vb
Outcome Initial GET requests never carry menu context.
Source SAIF.Presentation.Web.Core.Infragistics111/clsAppControllerBase.vb

BR-CORE-039: A numeric menu context is valid only when it is numeric and greater than "0"

Field Value
Statement A numeric menu context is valid only when it is numeric and greater than "0".
Trigger IsValidNumericMenuContext
Enforcement clsAppControllerBase.vb
Outcome Zero/blank context values are rejected.
Source SAIF.Presentation.Web.Core.Infragistics111/clsAppControllerBase.vb

BR-CORE-040: Known Word-originated characters (smart quotes, bullets, tabs) are normalized before text leaves the application

Field Value
Statement Known Word-originated characters (smart quotes, bullets, tabs) are normalized before text leaves the application.
Trigger CleanString
Enforcement clsStringUtilities.vb
Outcome Downstream mail and reporting do not fail on pasted Word content.
Source SAIF.Presentation.Web.Core.Infragistics111/clsStringUtilities.vb

BR-CORE-041: Only printable ASCII (32–126) plus CR and LF survive CleanString; all other characters become spaces

Field Value
Statement Only printable ASCII (32–126) plus CR and LF survive CleanString; all other characters become spaces.
Trigger CleanString
Enforcement clsStringUtilities.vb
Outcome Unprintable characters cannot reach e-mail or Crystal Reports.
Source SAIF.Presentation.Web.Core.Infragistics111/clsStringUtilities.vb

BR-CORE-042: mailto: text has " → ', # and ? removed, & → and, and CRLF/tab URL-encoded

Field Value
Statement mailto: text has " → ', # and ? removed, & → and, and CRLF/tab URL-encoded.
Trigger CleanForEmail
Enforcement clsStringUtilities.vb
Outcome The mailto: URL parses correctly in the browser.
Source SAIF.Presentation.Web.Core.Infragistics111/clsStringUtilities.vb

BR-CORE-043: HelpFolderName must be set (normally in the descendant's Configure method) before any help URL is requested

Field Value
Statement HelpFolderName must be set (normally in the descendant's Configure method) before any help URL is requested.
Trigger HelpFolderName getter with a null backing field
Enforcement AppViewPageBase.aspx.vb
Outcome An ApplicationException is thrown with an explanatory message.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-044: Help URLs default to /help/<HelpFolderName>/Help_Body.html, …/Help_Header.html and …/Help_TOC.html

Field Value
Statement Help URLs default to /help/<HelpFolderName>/Help_Body.html, …/Help_Header.html and …/Help_TOC.html.
Trigger HelpBody / HelpHeader / HelpTOC getters with no explicit value
Enforcement AppViewPageBase.aspx.vb
Outcome Consistent help file layout across applications.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-045: A help bookmark supplied as page#anchor splits into body page and anchor; a bare value is treated as the anchor on the current body page

Field Value
Statement A help bookmark supplied as page#anchor splits into body page and anchor; a bare value is treated as the anchor on the current body page.
Trigger HelpBookmark setter
Enforcement AppViewPageBase.aspx.vb
Outcome Deep links into help content work from a single property.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

BR-CORE-046: Every descendant page must implement Configure(inSAIFMenu, inSAIFTopMenu)

Field Value
Statement Every descendant page must implement Configure(inSAIFMenu, inSAIFTopMenu).
Trigger Compilation of a descendant of AppViewPageBase
Enforcement AppViewPageBase.aspx.vb (MustOverride Configure)
Outcome Menus are always configured by the page.
Source SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb

Notes

  • Mark inferred statements with * and unknown statements with **. Do not use bold inline confidence labels.
  • No inherited business rules were identified for this library: clsControllerBase and clsModelBase (the base classes of clsAppControllerBase / clsAppModelBase) were not resolved through the Legends CLI RAG service for this run, so no INH- prefixed rules are included.

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb
  • SAIF.Presentation.Web.Core.Infragistics111/AppViewMasterPageBase.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsAppControllerBase.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsMailMessage.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsNestedMaster.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsStringUtilities.vb
  • SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb