Ejemplo n.º 1
0
        // Checks whether we are under a top-level page with a certain title.
        private bool IsPageUnder(IWorkflowResolutionContext context, string topLevelTitle)
        {
            if (typeof(PageNode).IsAssignableFrom(context.ContentType) &&
                context.ContentId != Guid.Empty)
            {
                var          siteMap      = SitefinitySiteMap.GetCurrentProvider() as SiteMapBase;
                PageSiteNode pageSiteNode = (PageSiteNode)siteMap.FindSiteMapNodeFromKey(context.ContentId.ToString());

                while (pageSiteNode != null)
                {
                    if (pageSiteNode.Title == topLevelTitle && pageSiteNode.ParentNode == pageSiteNode.RootNode)
                    {
                        return(true);
                    }

                    pageSiteNode = pageSiteNode.ParentNode as PageSiteNode;
                }
            }

            return(false);
        }
Ejemplo n.º 2
0
        public override IWorkflowExecutionDefinition ResolveWorkflowExecutionDefinition(IWorkflowResolutionContext context)
        {
            // Return pre-created workflows for "Products", "Resources" and "Documents".
            if (this.IsPageUnder(context, "Products"))
            {
                return(this.workflowForProducts);
            }
            if (this.IsPageUnder(context, "Resources"))
            {
                return(this.workflowForResources);
            }
            if (this.IsPageUnder(context, "Documents") && this.workflowForDocuments != null)
            {
                return(this.workflowForDocuments);
            }

            // The default constructor of WorkflowExecutionDefinitionProxy will instantiate
            // a simple no-approval-needed workflow.
            else if (this.IsPageUnder(context, "Forum"))
            {
                return(WorkflowDefinitionProxy.DefaultWorkflow);
            }

            return(base.ResolveWorkflowExecutionDefinition(context));
        }