What event is raised when a page is published and how do I capture it?
Hi,
I've been searching and testing for hours. When a user publishes a page (a new page or an update to an existing page) I want to respond with a process that inspects the PageNode and PageData that has been published.
What is the event I need to respond to? I'll avoid mentioning what I've tried so that it doesn't confuse the question. When a new page or an update to an existing page has been published, what event can I subscribe to or what method on what class do I need to override so that I can obtain the ID of the updated PageNode?
Thanks
Hi Scott,
You can try on PageManager.Executing through the Bootstrapper like so:
protected void Application_Start(object sender, EventArgs e) Bootstrapper.Initialized += Bootstrapper_Initialized; void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e) if (e.CommandName == "Bootstrapped") PageManager.Executing += new EventHandler<Telerik.Sitefinity.Data.ExecutingEventArgs>(PageManager_Executing); private void PageManager_Executing(object sender, Telerik.Sitefinity.Data.ExecutingEventArgs e) if (e.CommandName == "CommitTransaction" || e.CommandName == "FlushTransaction") var provider = sender as PageDataProvider; var dirtyItems = provider.GetDirtyItems(); if (dirtyItems.Count != 0) foreach (var item in dirtyItems) //Can be New, Updated, or Deleted SecurityConstants.TransactionActionType itemStatus = provider.GetDirtyItemStatus(item); var page = item as PageDraft; if (page != null) if (itemStatus == SecurityConstants.TransactionActionType.New || itemStatus == SecurityConstants.TransactionActionType.Updated) //Edit Page if (page.IsTempDraft) //plug your logic here //Publish Page if (!page.IsTempDraft) //plug your logic here That looks like precisely what I need. I'll try it in a few hours. Thanks!
That worked perfectly. I stepped through it as I created and edited a few pages and it enabled me to isolate exactly what I'm looking for.
Thanks again.
hi , i have used the above code to find out which page is being published. The if(!page.istempdraft) block runs when i provide the schedule timings for a page. I have not published the page at this point. I have just set the time, sitefinity automatically refreshes and the control goes inside the if block. Is there a way to prevent this scenario and make it run only when the publish event happens at the scheduled time or if it manually published.