private static void Provider_Executing(object sender, ExecutingEventArgs args) { if (!(args.CommandName == "CommitTransaction" || args.CommandName == "FlushTransaction")) { return; } var provider = sender as PageDataProvider; var dirtyItems = provider.GetDirtyItems(); if (dirtyItems.Count == 0) { return; } var createdPageTemplates = provider.GetExecutionStateData(CreatedPageTemplatesCategoryIds) as HashSet <string>; if (createdPageTemplates == null) { createdPageTemplates = new HashSet <string>(); } foreach (var item in dirtyItems) { SecurityConstants.TransactionActionType itemStatus = provider.GetDirtyItemStatus(item); var pageTemplate = item as PageTemplate; if (pageTemplate != null) { if (itemStatus == SecurityConstants.TransactionActionType.New && pageTemplate.Framework == PageTemplateFramework.Mvc) { // the template name is formulated as Bootstrap.default var nameParts = pageTemplate.Name.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (nameParts.Length > 1) { var package = nameParts[0]; // always create the template, desipite if the package is not there // in case the client first performs a sync and then deploys the files by mistake createdPageTemplates.Add(package); } } } } if (createdPageTemplates.Any()) { provider.SetExecutionStateData(CreatedPageTemplatesCategoryIds, createdPageTemplates); } }
private static bool IsValidPublishingOperation(object dirtyItem, PageData pageData, PageDataProvider pageDataProvider) { var result = false; if (pageData != null && pageDataProvider != null) { SecurityConstants.TransactionActionType itemStatus = pageDataProvider.GetDirtyItemStatus(dirtyItem); if (itemStatus == SecurityConstants.TransactionActionType.Updated) { var url = System.Web.HttpContext.Current.Request.Url.ToString(); if (url.Contains("workflowOperation=Publish") || url.Contains("/batchPublishDraft/")) { result = true; } } } return(result); }