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
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
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
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
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
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
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
BR-CORE-022: Page and item lookups prefer an exact link match and fall back to a partial match
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
BR-CORE-026: A CC recipient is included in the mailto: link only when a non-empty CC value is supplied
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
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
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
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
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
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