Ejemplo n.º 1
0
        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);
        }