Customizing Behavior with Extensions
Extensions are developer-defined software modules that modify the behavior of Ektron.
In versions previous to 8.0, developers used the Plug-in Extension Wizard to extend the system. In versions 8.0 and higher, Extensions are preferred over the Plug-in system.
The benefits of Extensions include:
This section also contains these topics.
Class and Events |
---|
Ektron.Cms.Extensibility.CommunityGroupStrategy |
OnAdd(Ektron.Cms.CommunityGroupData, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterUserAdd(long, long, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterUserDelete(long, long, Ektron.Cms.Extensibility.CmsEventArgs) OnDelete(long, Ektron.Cms.Extensibility.CmsEventArgs) OnUpdate(Ektron.Cms.CommunityGroupData, Ektron.Cms.Extensibility.CmsEventArgs) |
Ektron.Cms.Extensibility.ContentStrategy |
OnAfterAddContent(Ektron.Cms.ContentData, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterDeleteContent(long, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterPublishContent(Ektron.Cms.ContentData, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterUpdateContent(Ektron.Cms.ContentData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeAddContent(Ektron.Cms.ContentData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeDeleteContent(long, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforePublishContent(Ektron.Cms.ContentData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeUpdateContent(Ektron.Cms.ContentData, Ektron.Cms.Extensibility.CmsEventArgs) |
Ektron.Cms.Extensibility.FolderStrategy |
OnAfterAddFolder(Ektron.Cms.FolderData, Ektron.Cms.Extensibility.CmsEventArgs) |
Ektron.Cms.Extensibility.MessageBoardStrategy |
OnAdd(Ektron.Cms.MessageBoardData, Ektron.Cms.Extensibility.CmsEventArgs)
|
Ektron.Cms.Extensibility.MicroMessageStrategy |
OnAfterAdd(Ektron.Cms.MicroMessageData, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterDelete(long, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeAdd(Ektron.Cms.MicroMessageData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeDelete(long, Ektron.Cms.Extensibility.CmsEventArgs) |
Ektron.Cms.Extensibility.TagStrategy |
OnAdd(Ektron.Cms.TagData, Ektron.Cms.Extensibility.CmsEventArgs)
OnDelete(long, Ektron.Cms.Extensibility.CmsEventArgs) OnUpdate(Ektron.Cms.TagData, Ektron.Cms.Extensibility.CmsEventArgs) |
Ektron.Cms.Extensibility.TaxonomyStrategy |
OnAfterAdd(Ektron.Cms.TaxonomyData, Ektron.Cms.Extensibility.CmsEventArgs)
|
Ektron.Cms.Extensibility.UserStrategy |
OnAfterAddColleague(long, long, Ektron.Cms.Extensibility.CmsEventArgs)
OnAfterAddUser(Ektron.Cms.UserData, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterColleagueRequest(Ektron.Cms.Community.ActionRequestData, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterDeleteUser(long, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterLogin(Ektron.Cms.UserData, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterUpdateUser(Ektron.Cms.UserData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeAddUser(Ektron.Cms.UserData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeDeleteUser(long, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeLogin(Ektron.Cms.UserData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeUpdateUser(Ektron.Cms.UserData, Ektron.Cms.Extensibility.CmsEventArgs) |
Ektron.Cms.Extensibility.WebEventStrategy |
OnAfterAdd(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs)
OnAfterAddVariance(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs)
OnAfterCancelOccurrence(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs)
OnAfterDelete(long, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterPublish(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs) OnAfterUpdate(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeAdd(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeAddVariance(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeCancelOccurrence(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeDelete(long, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforePublish(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs) OnBeforeUpdate(Ektron.Cms.Common.Calendar.WebEventData, Ektron.Cms.Extensibility.CmsEventArgs) |
Ektron.CMS.Common Ektron.CMS.Contracts Ektron.CMS.ObjectFactory
If the assemblies are not installed in Visual Studio, you can find them in the siteroot/bin
directory.
using
statements to the top of the class.using Ektron.Cms; using Ektron.Cms.Common; using Ektron.Cms.Extensibility; using Ektron.Cms.Extensibility.Content;
Ektron.Cms.Extensibility.ContentStrategy
.namespace Cms.Extensions.Samples { public class ContentExtensionsSample : ContentStrategy { } }
NOTE: The namespace in the code above is Cms.Extensions.Samples. This information is needed for Step 8.
override OnBeforeAddContent()
. The code to modify the Title looks like this.public override void OnBeforeAddContent(ContentData contentData, CmsEventArgs eventArgs) { contentData.Title += " modified"; }
using System; using System.Collections.Generic; using System.Text; using Ektron.Cms; using Ektron.Cms.Common; using Ektron.Cms.Extensibility; using Ektron.Cms.Extensibility.Content; namespace Cms.Extensions.Samples { public class ContentExtensionsSample : ContentStrategy { public override void OnBeforeAddContent(ContentData contentData, CmsEventArgs eventArgs) { contentData.Title += " modifed"; } }
After creating the extension in the steps above, register it in the <webroot>/ObjectFactory.config
file.
This file already contains GoogleGeoCoder objectStrategies, so you need to add a new Name in the Content area. In this example, the code looks like this.
<objectFactory> <objectStrategies> <add name="Content"> <strategies> <add name="MyFirstExample" type="Cms.Extensions.Samples.ContentExtensionsSample,ContentExtensionsSample"/> <add name="GoogleGeoCoder" type="Cms.Extensions.GoogleGeoCoder.ContentStrategy, Cms.Extensions.GoogleGeoCoder"/> </strategies> </add> <add name="User"> <strategies> <add name="GoogleGeoCoder" type="Cms.Extensions.GoogleGeoCoder.UserStrategy, Cms.Extensions.GoogleGeoCoder"/> </strategies> </add> </objectStrategies> </objectFactory>
objectStrategies
section of the siteroot/ObjectFactory.config
file.<add name="Content">
indicates you are defining "Content" extensions.<strategies>
section, you may add one or more extensions for content.
List of Valid Names |
||
---|---|---|
|
|
|
To see more code samples and a video tutorial on Extensions, visit the Ektron Developer Center at this address: http://dev.ektron.com/blogs.aspx?id=29648&blogid=68.