AdvantageCMS.Core.Common.BaseClasses Namespace
Build With Advantage

AdvantageCMS.Core.Admin.Extensibility Namespace

Classes


  Class Description
Public class AdvantageLifecycleHandlerConfiguration
Per-domain configuration holding the fully-qualified class names of optional lifecycle handlers that receive CRUD / publish callbacks from the page, navigation, and structured-content engines.
Public class BusinessObjectLifecycleHandler
Base class for external handlers that receive lifecycle callbacks for every structured-content operation performed by CMSToolEngine. The engine invokes these hooks alongside the target object's own BusinessObjectBase virtual methods, so a domain-level handler can observe or veto CRUD/publish actions across all tools and site settings in the domain.

Because the hooks take BusinessObjectBase, the handler sees both BusinessObject<T> entities and BusinessObjectSiteSetting<T> instances (both inherit BusinessObjectBase). Use pattern matching or reflection inside the handler to filter by concrete type if needed.

Every hook returns true to allow the operation and false to abort. Exceptions thrown from a hook are caught by the engine, logged, and treated as a false return on Pre hooks. Post hooks run after the database write has committed; a failure there does not roll back the operation.

Public class CMSHandlerResolver
Resolves per-domain lifecycle handler instances from the Lifecycle Handlers configuration (stored under C_Config_LifecycleHandlers()()()()).

Results are cached per-domain via AdvantageCacheManager with a 30-minute TTL, matching the project-wide convention for domain-scoped configuration caches. Farm nodes self-heal within the TTL window; call InvalidateDomain(Int32) from the save path when you want the local node to pick up the change immediately.

Public class NavigationLifecycleHandler
Base class for external handlers that receive lifecycle callbacks for Navigation operations performed by CMSNavigationEngine. Tenant assemblies inherit this class and override only the hooks they need; the handler class is wired to a domain via the Lifecycle Handlers configuration (Configurations → Site → Lifecycle Handlers).

PreInsert/PostInsert, PreUpdate/PostUpdate, and PreMove/PostMove fire for several distinct engine methods each. The caller places a discriminator in ActionArgs.Attributes so the handler can tell them apart:

  • Attributes["InsertKind"]: "Plain" | "WithSort"
  • Attributes["UpdateKind"]: "Page" | "Name" | "Title" | "Link"
  • Attributes["MoveKind"]: "Above" | "Below" | "NewParent"

Every hook returns true to allow the operation and false to abort. Exceptions are caught by the engine, logged, and treated as a false return on Pre hooks. Post hooks run after the database write has committed and are not enclosed in the same transaction.

Public class SitePageLifecycleHandler
Base class for external handlers that receive lifecycle callbacks for SitePage operations performed by CMSSitePageEngine. Tenant assemblies inherit this class and override only the hooks they need; the handler class is wired to a domain via the Lifecycle Handlers configuration (Configurations → Site → Lifecycle Handlers).

Mirrors the hook contract used by BusinessObject<T>: every hook returns true to allow the operation to proceed and false to abort it. Any out message populated by the handler is surfaced to the engine event log. Exceptions thrown from a hook are caught by the engine, logged, and treated as a false return on Pre hooks.

Post hooks run after the database write has committed and are not enclosed in the same transaction; a failure in a Post hook does not roll back the operation.