Modifying events
Sitefinity allows you to modify an event through the Events API.
When modifying an event, you must perform the following:
-
Get the master version.
Get the master version of the event. When you modify an event, you must not work on its live version.
-
Get a temp version.
Check out the master version to get a temp version of the event. This is the version you must modify.
-
Modify the temp version.
Use the temp version to modify the event.
-
Update the master version.
Check in the temp version to transfer the changes to the master version.
-
Update the live version.
Publish the master version to transfer the changes to the live version.
The examples below modify an event by the ID of its master version. For more information about working with the ID of the live version, see Editing content.
Modifying an event by its ID
The following examples modify an event by the ID of its master version.
Native API
public void ModifyEventNativeAPI(Guid masterEventId, string newContent)
{
EventsManager eventsManager = EventsManager.GetManager();
// Get the master version
Event master = eventsManager.GetEvents().Where(ev => ev.Id == masterEventId).FirstOrDefault();
if (master != null)
{
// Check out the master to get a temp version
Event temp = eventsManager.Lifecycle.CheckOut(master) as Event;
// Make the modifications to the temp version
temp.Content = newContent;
// Check in the temp and get the updated master version.
// After the check in the temp version is deleted.
master = eventsManager.Lifecycle.CheckIn(temp) as Event;
// Publish the master
eventsManager.Lifecycle.Publish(master);
eventsManager.SaveChanges();
}
}
First, you get an instance of the EventsManager class. Then, you get the master version corresponding to the ID.
For more information about querying events, see Querying events.
For more information about finding specific events, see Finding events.
Then, you call Lifecycle.CheckOut with the master version as argument to get a temp version of the item. You modify the content of the temp version with newContent. Then, you call Lifecycle.CheckIn with the temp version as argument to transfer the changes to the master version. By default, calling the CheckIn method deletes the temp version. Then, you call Lifecycle.Publish with the master version as argument to transfer the changes to the live version. Finally, you call SaveChanges to save all changes.
Fluent API
public void ModifyEventFluentAPI(Guid masterEventId, string newContent)
{
int count = 0;
// Check whether the item exists
App.WorkWith().Events().Where(ev => ev.Id == masterEventId).Count(out count);
if (count > 0)
{
// Use the singular facade to modify the master by the master ID
App.WorkWith().Event(masterEventId).CheckOut().Do(ev =>
{
ev.Content = newContent;
ev.LastModified = DateTime.UtcNow;
})
.CheckIn().Publish().SaveChanges();
}
}
First, you check whether an item with the specified ID exists. Then, you get the master version with the specified ID using the singular facade of the event.
NOTE: If there is no item with the specified Id, Event(masterEventId) throws an exception of type ItemNotFoundException.
For more information about querying events, see Querying events.
For more information about finding specific events, see Finding events.
To get a temp for the item, you use the CheckOut method of the facade. Then, you modify the content with newContent in the Do method of the temp facade. You call CheckIn to transfer the changes to the master version of the item. Then, you call Publish to transfer the changes to the live version. Finally, you call SaveChanges to save all changes.