-
Notifications
You must be signed in to change notification settings - Fork 147
API for Developers
Simonas Mikulenas edited this page Jul 30, 2013
·
24 revisions
This documentation page is created to let you understand the way of how to interact with Better CMS - to get data and / or to be notified on particular events.
To catch the main idea how to get some data from the Better CMS, check out the example.
Note: do not forget to wrap API code in using, because context object must be disposed after it was used:
using BetterCms.Module.Api;
using BetterCms.Module.Api.Infrastructure;
using BetterCms.Module.Api.Infrastructure.Enums;
using BetterCms.Module.Api.Operations.Pages.Widgets;
[...]
using (var api = ApiFactory.Create())
{
var requestModel = new GetWidgetsModel();
requestModel.Take = 5; // Retrieves 5 items
requestModel.Skip = 3; // Skips 3 items
requestModel.Order.Add("Name"); // Sorts by name ascending
requestModel.Order.Add("CreatedOn", OrderDirection.Desc); // Then sorts by date descending
requestModel.Filter.Connector = FilterConnector.And; // Filtering connector (optional, default value = FilterConnector.And)
requestModel.Filter.Add("Name", "A", FilterOperation.StartsWith); // Filters by name: item should start with "A"
requestModel.Filter.Add("Name", "B", FilterOperation.EndsWith); // Filters by name: item should start with "B"
var innerFilter = new DataFilter(FilterConnector.Or); // Create inner filter
innerFilter.Add("CreatedBy", "Name.Surname.1");
innerFilter.Add("CreatedBy", "Name.Surname.2");
requestModel.Filter.Inner.Add(innerFilter); // Add inner filter to filters list
var request = new GetWidgetsRequest { Data = requestModel }; // Create request
var widgets = api.Pages.Widgets.Get(request); // Execute query
}
[...]
So, the main idea is to create the API context and use the methods it provides.
Tip: Do not forget to dispose API instance after using (best way to accomplish this is to wrap all the API code within using).
If you would like to be notified on some Better CMS actions - let's say when a page is created, check out the bellow:
[...]
using BetterCms.Core;
using BetterCms.Core.Environment.Host;
using BetterCms.Events;
public class MvcApplication : HttpApplication
{
private static ICmsHost cmsHost;
protected void Application_Start()
{
cmsHost = CmsContext.RegisterHost();
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
cmsHost.OnApplicationStart(this);
// Attach to the page creation event.
BetterCms.Events.PageEvents.Instance.PageCreated += Instance_PageCreated;
}
// Get notified when page is created.
void Instance_PageCreated(SingleItemEventArgs<Module.Pages.Models.PageProperties> args)
{
// TODO: do what ever is necessary!
}
[...]
Events from main modules are described bellow.
- BetterCms.Core:
- BetterCms.Events.CoreEvents.HostStart
- BetterCms.Events.CoreEvents.HostStop
- BetterCms.Events.CoreEvents.HostError
- BetterCms.Events.CoreEvents.HostAuthenticateRequest
- BetterCms.Module.Root:
- BetterCms.Events.RootEvents.PageRendering
- BetterCms.Events.RootEvents.PageRetrieved
- BetterCms.Events.RootEvents.CategoryCreated
- BetterCms.Events.RootEvents.CategoryUpdated
- BetterCms.Events.RootEvents.CategoryDeleted
- BetterCms.Events.RootEvents.TagCreated
- BetterCms.Events.RootEvents.TagUpdated
- BetterCms.Events.RootEvents.TagDeleted
- BetterCms.Module.Pages:
- BetterCms.Events.PageEvents.PageCreated
- BetterCms.Events.PageEvents.PageDeleted
- BetterCms.Events.PageEvents.PageCloned
- BetterCms.Events.PageEvents.PagePropertiesChanged
- BetterCms.Events.PageEvents.PagePublishStatusChanged
- BetterCms.Events.PageEvents.PageSeoStatusChanged
- BetterCms.Events.PageEvents.PageContentInserted
- BetterCms.Events.PageEvents.RedirectCreated
- BetterCms.Events.PageEvents.RedirectUpdated
- BetterCms.Events.PageEvents.RedirectDeleted
- BetterCms.Events.PageEvents.WidgetCreated
- BetterCms.Events.PageEvents.WidgetUpdated
- BetterCms.Events.PageEvents.WidgetDeleted
- BetterCms.Module.Blog:
- BetterCms.Events.BlogEvents.BlogCreated
- BetterCms.Events.BlogEvents.BlogUpdated
- BetterCms.Events.BlogEvents.BlogDeleted
- BetterCms.Events.BlogEvents.AuthorCreated
- BetterCms.Events.BlogEvents.AuthorUpdated
- BetterCms.Events.BlogEvents.AuthorDeleted
- BetterCms.Module.MediaManager:
- BetterCms.Events.MediaManagerEvents.MediaFileUploaded
- BetterCms.Events.MediaManagerEvents.MediaFileUpdated
- BetterCms.Events.MediaManagerEvents.MediaFileDeleted
- BetterCms.Events.MediaManagerEvents.MediaFolderCreated
- BetterCms.Events.MediaManagerEvents.MediaFolderUpdated
- BetterCms.Events.MediaManagerEvents.MediaFolderDeleted
- BetterCms.Events.MediaManagerEvents.MediaArchived
- BetterCms.Events.MediaManagerEvents.MediaUnarchived
- BetterCms.Module.Newsletter:
- BetterCms.Events.NewsletterEvents.SubscriberCreated
- BetterCms.Events.NewsletterEvents.SubscriberUpdated
- BetterCms.Events.NewsletterEvents.SubscriberDeleted