Handle object events
Objects include all data structures used within Xperience, such as user accounts, media libraries, search indexes, or setting keys. By handling the events that occur during the life cycle of objects, you can add custom functionality to almost any part of the system. In the API, objects are represented by Info classes.
Use the following classes to access object events:
ObjectEvents
– events triggered for all object types- <name>Info.TYPEINFO.Events – events triggered only for a specific object type, for example:
UserInfo.TYPEINFO.Events
Note: Within the context of event handling, objects do NOT include pages in the website content tree. Use the WebPageEvents
class to assign handlers to events that the system triggers for pages.
Example
The following example demonstrates how to use event handlers to customize the behavior of a specific type of object.
The sample code extends the functionality of media libraries by creating a handler for the Insert.After
event of the MediaLibraryInfo
class. This event occurs when a media library is created. The custom logic automatically adds a default sub-folder for every new media library.
- Open your Xperience solution in Visual Studio.
- Add new application initialization code.
- Add the code within a custom assembly (Class Library project) referenced by your project.
- Override a module’s
OnInit
method and assign a handler method to theMediaLibraryInfo.TYPEINFO.Events.Insert.After
event.
using CMS;
using CMS.DataEngine;
using CMS.MediaLibrary;
// Registers the custom module into the system
[assembly: RegisterModule(typeof(CustomMediaModule))]
public class CustomMediaModule : Module
{
// Module class constructor, the system registers the module under the name "CustomMedia"
public CustomMediaModule()
: base("CustomMedia")
{
}
// Contains initialization code that is executed when the application starts
protected override void OnInit()
{
base.OnInit();
// Assigns a handler to the Insert.After event for the MediaLibraryInfo class
// This event occurs after a new media library object is created
MediaLibraryInfo.TYPEINFO.Events.Insert.After += MediaLibrary_InsertAfterEventHandler;
}
/// <summary>
/// Automatically creates a child folder for new media libraries
/// </summary>
private void MediaLibrary_InsertAfterEventHandler(object sender, ObjectEventArgs e)
{
// Checks that the media library was successfully created
if (e.Object != null)
{
// Gets an info object representing the new media library
MediaLibraryInfo mediaLibrary = (MediaLibraryInfo)e.Object;
// Creates a "Default" sub-folder in the media library
MediaLibraryInfoProvider.CreateMediaLibraryFolder(mediaLibrary.LibraryID, "Default");
}
}
}
To try out the functionality of the custom event handler, create a new media library:
- Open the Media libraries application in the Xperience administration.
- Select Create new.
- Enter a Media library name and Folder name for the new media library.
- Select Create.
The system adds the media library and the registered event handler automatically creates the Default sub-folder.