Printer friendly version

Extension assemblies and events in Esite

How to create an Assembly to extend Esite and how you can use event handlers to extend Esite with functionality.

Create a new Assembly Project in Visual Studio

Add references to atleast the Esite Core DLLS (Data, System and Interfaces) and any other Assemblies for Apps you would like to extend.

Create your own Initializer class

Create a class and inherit from the ESiteAppInitHandler and override the Initialize method as shown below.

Public Class Init
Inherits ESiteAppInitHandler
Public Overrides Sub Initialize()
......
End Sub
...... 

Make sure the class is made public, it will de dynamically be called when the IIS Application starts up.

Add event handlers to extend Esite

Here are examples of built in Event Handlers you can extend Esite with:

// Application extensions
EApplication.ApplicationStart()
EApplication.ApplicationReset()
EApplication.ApplicationEnd()
EApplication.GetTransaction(String, String, EUser, Boolean, Boolean, ByRef ITransaction)
EApplication.HttpApplicationInit()
EApplication.HttpRequestBegin
EApplication.RequestEnd
EApplication.LoadedScope
EApplication.SessionEnd
EApplication.SessionStart
EApplication.ExceptionOccured

// Adminpage extensions
AdminPageExtension.AfterPreRender(e As IESiteAdminPage)
AdminPageExtension.AfterLoad(e As IESiteAdminPage) 
AdminPageExtension.BeforePreRender(e As IESiteAdminPage)
AdminPageExtension.BeforeLoad(e As IESiteAdminPage)
AdminPageExtension.ExecuteCommand(args As ExecuteCommandEventArgs)
AdminPageExtension.AfterCreateChildControls(e As IESiteAdminPage)
AdminPageExtension.BeforeCreateChildControls(e As IESiteAdminPage)

//  ESiteControlExtension
ESiteControlExtension.BeforeLoadPage(control As IESiteControlReference)
ESiteControlExtension.AfterLoadPage(control As IESiteControlReference)
ESiteControlExtension.BeforePreRender(control As IESiteControlReference)
ESiteControlExtension.AfterPreRender(control As IESiteControlReference)
ESiteControlExtension.BeforeRender(control As IESiteControlReference, writer As HtmlTextWriter)
ESiteControlExtension.AfterRender(control As IESiteControlReference, writer As HtmlTextWriter)

// MenuExtension
MenuExtension.AfterPopulateMenu(name As String, menuItems As IEMenuItemCollection, selected As DataObject)
MenuExtension.BeforePopulateMenu(name As String, menuItems As IEMenuItemCollection, selected As DataObject)

// WebAddressModuleExtension
WebAddressModuleExtension.RequestUrl(url As String, displayObject As DataObject)
WebAddressModuleExtension.PageNotFound(url As String)
WebAddressModuleExtension.DisplayUrl(url As String, displayObject As DataObject) 

Example of initializer with event extension

The example below is taken for the Esite Member system core assembly.

Public Class WebMemberFactoryInit
    Inherits ESiteAppInitHandler
Public Overrides Sub Initialize() AddHandler UserBase.GetCurrentUserBase, AddressOf GetCurrentUserBase AddHandler AdminPageExtension.AfterCreateChildControls, AddressOf OnAfterCreateChildControls AddHandler AdminPageExtension.AfterPreRender, AddressOf OnAfterPreRender AddHandler UserBase.QueryFileReadAccess, AddressOf AllowFileRead AddHandler ESiteDisplayPage.AcquireReadPermission, AddressOf OnAcquireReadPermission AddHandler ESiteDisplayPage.AcquireWritePermission, AddressOf OnAcquireWritePermission AddHandler UserBase.QueryReadAccess, AddressOf OnQueryReadAccess End Sub ................... End Class