SAIF.Presentation.Web.Controls.PopUps.Infragistics111 architecture¶
This library is a pure presentation-tier component library of eight reusable ASP.NET WebForms user controls ("popups") that render as absolutely-positioned, draggable modal panels. Each control composes a library-embedded .ascx fragment at runtime, communicates results to its host page exclusively through a typed ConfirmAction event, and performs no persistence of its own; one control (ImageMovePopup) additionally embeds AD-group-based authorization logic for image and claim access.
Responsibilities¶
- Render self-contained floating popup panels (an absolutely-positioned
<iframe>"cover" plus a styled<div>) for capturing claim-activity notes, policy-activity notes, EFT/reason-code selections, notify-task details, image-move context, and generic confirm/alert dialogs. - Load each control's markup from a library-embedded
.ascxmanifest resource at runtime viaGetResource()andPage.ParseControl(), rather than the standardUserControlpage-directive model. - Gate popup visibility via a shared
Activeboolean property pattern, and communicate the user's choice back to the host page through a typedPublic Event ConfirmAction(...). - Provide light client-side interaction support: drag repositioning (
/Resources/Scripts/PopupDrag.js, external to this library), initial-focus scripting, and (forPolicyActivityPopup) a callback-driven free-form type toggle. - Perform embedded, AD-group-based authorization checks (
ImageMovePopuponly) to gate visibility of claim-security-sensitive worker names and image-move eligibility. - Cache reference/code-table data (
ClaimActivityPopup) inHttpContext.Current.Cachefor 8 hours to avoid repeated database round-trips.
Component boundaries¶
ClaimActivityPopup: composite control capturing Category/Type/note text for a Claim Activity note; delegates code-table retrieval to referenced business packages.EFTPopup: composite control for generic reason-code selection from a caller-supplied list; performs no delegated data access of its own.ImageMovePopup: composite control for claim/policy context entry and optional notify-task capture, gated by AD-group authorization checks (CheckImageSecurity,CheckClaimSecurity) againstSAIF.Framework.Security.clsSecurityPrincipal/clsAccountMaintProxy.NotifyPopup: composite control for Notify ID/Date/Text entry with date/required-field validation; no delegated business calls beyond theclsSmartDatevalue type.PolicyActivityPopup: composite control for Policy Activity note capture, including free-form type entry viaICallbackEventHandlerand a Save-and-Email option.PopUpButton: input control (WebControls.Buttonsubclass) wrapping its click in a client-sideconfirm()/alert()dialog.PopupControl: composite script/postback bridge control that renders chainedconfirm()/alert()messages and relays the user's choice viaIPostBackEventHandler.TODOPopupControl: composite control prompting for Diary/Claim task creation, optionally requiring and validating a Mail ID against employee data.mdlUtilities: internal (Friend) module providing the sharedGetResource()embedded-markup loader used by every control'sCreateChildControls().- Institutions typed
DataSet(Institutions.xsd/.xsc/.xss): design-time scaffolding present in the project but not wired into any active control logic*.
Interaction model¶
- Each control follows the same lifecycle:
CreateChildControls()loads and parses the embedded.ascxfragment, locates child controls viaFindControl(), and wires event handlers;PreRender/Render()binds data and emits markup only whenActive = True. - Controls communicate exclusively through a typed
ConfirmAction(Confirm As Boolean, e As <EventArgs>)event raised from a Save/Yes button-click handler; the hosting application (outside this library) owns actual persistence. - Where server-side business data is needed (code tables, claim/policy data), controls directly instantiate
clsMSOracleDataLayer(hard-coded application code"CLM"/"IMG") to obtain aDataPortalInfocontext, then delegate to referenced business/view-layer static factory methods (clsCodeCollection.GetCodeCollection,clsClaimActivityTypeCodeCollection.GetCodes,clsEmployeeData.GetDataByMailID,clsClaimData.GetData,clsPolicyData.GetPolicyData) — this deviates from the typical SAIF BOFIBusinessCriteriapattern used elsewhere. ImageMovePopupadditionally consultsSAIF.Framework.Security.clsSecurityPrincipal/clsAccountMaintProxyat render time (SetSecurityUserImage()) and at explicit method-call time (CheckImageSecurity,CheckClaimSecurity) to gate claim/image visibility.- Client-side drag support, focus scripting, and (for
NotifyPopup/EFTPopup) async-partial-postback refresh handling are wired through inline<script>registration rather than server-side rendering logic.
Design constraints¶
- No control implements
IBusinessCriteriaor exposesCreateSQL/RetrieveSQL; all persistence and business-rule logic live in referenced SAIF business/view packages, not in this library. - Controls are hand-rolled composite/templated controls (embedded
.ascx+Page.ParseControl()) rather than standard ASP.NETUserControlpages — each.ascxhas no page directive or code-behind of its own. - The client-side drag script (
/Resources/Scripts/PopupDrag.js) is an external dependency resolved by URL from the consuming web application, not packaged in this library*. mdlUtilities.GetResource()falls back to a hard-coded local DLL path (c:\netdev\components20\bin\...) outside anHttpContext— a legacy design-time-only fallback not exercised in production*.- This library's
frameworkDensityis recorded as0independency-resolution.jsonfor this run; no inherited SAIF framework base-class context is available or included. - Authorization logic is concentrated entirely in
ImageMovePopup; the other seven controls implement no independent security checks of their own.
Architecture diagram¶
The following diagram shows the popup controls, their shared composition/utility dependency, and the referenced business/security packages they delegate to.
flowchart TD
Host["Hosting web page<br>(Legal web app)"]
Util["mdlUtilities<br>GetResource()"]
subgraph Lib["SAIF.Presentation.Web.Controls.PopUps.Infragistics111"]
CAP["ClaimActivityPopup"]
EFT["EFTPopup"]
IMP["ImageMovePopup"]
NP["NotifyPopup"]
PAP["PolicyActivityPopup"]
PB["PopUpButton"]
PC["PopupControl"]
TODO["TODOPopupControl"]
end
Vendor["Infragistics WebUI v11.1<br>WebDateTimeEdit"]
BizView["SAIF.Business.View.Policy<br>(project reference)"]
BizPkgs["SAIF.BOF.Business /<br>SAIF.BOF.Business.View.Claim<br>(NuGet packages)"]
Security["SAIF.Framework.Security<br>clsSecurityPrincipal / clsAccountMaintProxy"]
Host -->|"sets Active, properties"| Lib
Lib -->|"ConfirmAction event"| Host
CAP --> Util
EFT --> Util
IMP --> Util
NP --> Util
PAP --> Util
TODO --> Util
NP --> Vendor
IMP --> Vendor
CAP --> BizPkgs
TODO --> BizPkgs
IMP --> BizPkgs
IMP --> BizView
IMP --> Security
Sequence diagram¶
The following diagram shows the primary ImageMovePopup sequence: context entry, delegated claim-security check, and the confirm/save round trip with the hosting page.
sequenceDiagram
participant Host as Hosting page
participant IMP as ImageMovePopup
participant Sec as clsSecurityPrincipal
participant Biz as clsClaimData (referenced)
Host->>IMP: Set Active = True, ImageFileCode
IMP->>IMP: CreateChildControls() / GetResource()
Host->>IMP: txtContextNum TextChanged (postback)
IMP->>Biz: GetData(DataPortalInfo, contextNum)
Biz-->>IMP: claim data (incl. strClaimSecurity)
IMP->>Sec: CheckClaimSecurity() -> IsAuthorized(ADSG_*)
Sec-->>IMP: allow/deny per resource flag
IMP-->>Host: Worker name or "Confidential"
Host->>IMP: cmdSave click
IMP->>IMP: EditContext() / EditAlertControls()
IMP-->>Host: ConfirmAction(True, ImageMoveEventArgs)
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.
Related documentation¶
- Index
- Overview
- Dependencies
- Operations and processes
- Business rules
- Security and authorization
- Control catalog
- Configuration settings
- API reference
Sources¶
SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ClaimActivityPopup.vb,EFTPopup.vb,ImageMovePopup.vb,NotifyPopup.vb,PolicyActivityPopup.vb,PopUpButton.vb,PopupControl.vb,TODOPopupControl.vb,mdlUtilities.vb.saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/analysis/TSK012-analysis.md.saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/analysis/TSK1C-005-security-saif-presentation-web-controls-popups-infragistics111.md.saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/dependency-resolution.json