Inheritance: WorkflowNavigationItem
示例#1
0
        private List <WorkflowNavigationCategory> GetWorkflowNavigationCategories(List <CategoryNavigationItem> categoryItems, IEnumerable <WorkflowType> workflowTypes)
        {
            var items = new List <WorkflowNavigationCategory>();

            foreach (var category in categoryItems)
            {
                var workflowNavigationCategory = new WorkflowNavigationCategory(category.Category);
                workflowNavigationCategory.ChildCategories = GetWorkflowNavigationCategories(category.ChildCategories, workflowTypes);
                workflowNavigationCategory.WorkflowTypes   = new List <WorkflowNavigationWorkflowType>();
                foreach (var workflowType in workflowTypes
                         .Where(w => w.CategoryId == category.Category.Id)
                         .OrderBy(w => w.Order)
                         .ThenBy(w => w.Name))
                {
                    if (workflowType.IsAuthorized(Rock.Security.Authorization.VIEW, CurrentPerson))
                    {
                        workflowNavigationCategory.WorkflowTypes.Add(
                            new WorkflowNavigationWorkflowType(workflowType,
                                                               workflowType.IsAuthorized(Rock.Security.Authorization.EDIT, CurrentPerson),
                                                               workflowType.IsAuthorized("ViewList", CurrentPerson)));
                    }
                }

                items.Add(workflowNavigationCategory);
            }

            return(items);
        }
示例#2
0
        private void BuildCategoryControl( Control parentControl, WorkflowNavigationCategory category )
        {
            var divPanel = new HtmlGenericContainer( "div" );
            divPanel.AddCssClass( "panel panel-workflowitem" );
            parentControl.Controls.Add( divPanel );

            var divPanelHeading = new HtmlGenericControl( "div" );
            divPanelHeading.AddCssClass( "panel-heading" );
            divPanel.Controls.Add( divPanelHeading );

            var headingA = new HtmlGenericControl( "a" );
            headingA.Attributes.Add( "data-toggle", "collapse" );
            headingA.Attributes.Add( "data-parent", "#" + parentControl.ClientID );
            headingA.AddCssClass( "collapsed clearfix" );
            divPanelHeading.Controls.Add( headingA );

            var divHeadingTitle = new HtmlGenericControl( "div" );
            divHeadingTitle.AddCssClass( "panel-title clearfix" );
            headingA.Controls.Add( divHeadingTitle );

            var headingTitle = new HtmlGenericControl( "h3" );
            headingTitle.AddCssClass( "pull-left" );
            divHeadingTitle.Controls.Add( headingTitle );

            var panelNavigation = new HtmlGenericControl( "i" );
            panelNavigation.AddCssClass( "fa panel-navigation pull-right" );
            divHeadingTitle.Controls.Add( panelNavigation );

            if ( !string.IsNullOrWhiteSpace( category.IconCssClass ) )
            {
                headingTitle.Controls.Add( new LiteralControl( string.Format( "<i class='{0} fa-fw'></i> ", category.IconCssClass ) ) );
            }
            headingTitle.Controls.Add( new LiteralControl( category.Name ) );

            var divCollapse = new HtmlGenericControl( "div" );
            divCollapse.ID = string.Format( "collapse-category-", category.Id );
            divCollapse.AddCssClass( "panel-collapse collapse" );
            divPanel.Controls.Add( divCollapse );

            headingA.Attributes.Add( "href", "#" + divCollapse.ClientID );

            if ( category.WorkflowTypes.Any() )
            {
                var ulGroup = new HtmlGenericControl( "ul" );
                ulGroup.AddCssClass( "list-group" );
                divCollapse.Controls.Add( ulGroup );

                foreach ( var workflowType in category.WorkflowTypes )
                {
                    var li = new HtmlGenericControl( "li" );
                    li.AddCssClass( "list-group-item clickable" );
                    ulGroup.Controls.Add( li );

                    var qryParms = new Dictionary<string, string>();
                    qryParms.Add( "WorkflowTypeId", workflowType.Id.ToString() );

                    bool showLinkToEntry = workflowType.HasForms && workflowType.IsActive;

                    var aNew = new HtmlGenericControl( showLinkToEntry ? "a" : "span" );
                    if (workflowType.HasForms)
                    {
                        aNew.Attributes.Add( "href", LinkedPageUrl( "EntryPage", qryParms ) );
                    }
                    li.Controls.Add( aNew );

                    if ( !string.IsNullOrWhiteSpace( workflowType.IconCssClass ) )
                    {
                        aNew.Controls.Add( new LiteralControl( string.Format( "<i class='{0} fa-fw'></i> ", workflowType.IconCssClass ) ) );
                    }

                    aNew.Controls.Add( new LiteralControl( workflowType.Name ) );

                    if ( workflowType.CanManage || workflowType.CanViewList || IsUserAuthorized( Rock.Security.Authorization.EDIT ) )
                    {
                        li.Controls.Add( new LiteralControl( " " ) );

                        var aManage = new HtmlGenericControl( "a" );
                        aManage.AddCssClass( "pull-right" );
                        aManage.Attributes.Add( "href", LinkedPageUrl( "ManagePage", qryParms ) );
                        var iManageIcon = new HtmlGenericControl( "i" );
                        aManage.Controls.Add( iManageIcon );
                        iManageIcon.AddCssClass( "fa fa-list" );
                        li.Controls.Add( aManage );
                    }
                }
            }

            if ( category.ChildCategories.Any() )
            {
                var divBody = new HtmlGenericControl( "div" );
                //divBody.AddCssClass( "panel-body" );
                divCollapse.Controls.Add( divBody );

                foreach ( var childCategory in category.ChildCategories )
                {
                    BuildCategoryControl( divBody, childCategory );
                }
            }
        }
示例#3
0
        private List<WorkflowNavigationCategory> GetWorkflowNavigationCategories( List<CategoryNavigationItem> categoryItems, IEnumerable<WorkflowType> workflowTypes )
        {
            var items = new List<WorkflowNavigationCategory>();

            foreach ( var category in categoryItems )
            {
                var workflowNavigationCategory = new WorkflowNavigationCategory( category.Category );
                workflowNavigationCategory.ChildCategories = GetWorkflowNavigationCategories( category.ChildCategories, workflowTypes );
                workflowNavigationCategory.WorkflowTypes = new List<WorkflowNavigationWorkflowType>();
                foreach ( var workflowType in workflowTypes
                    .Where( w => w.CategoryId == category.Category.Id )
                    .OrderBy( w => w.Order )
                    .ThenBy( w => w.Name ) )
                {
                    if ( workflowType.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson ) )
                    {
                        workflowNavigationCategory.WorkflowTypes.Add(
                            new WorkflowNavigationWorkflowType( workflowType,
                                workflowType.IsAuthorized( Rock.Security.Authorization.EDIT, CurrentPerson ),
                                workflowType.IsAuthorized( "ViewList", CurrentPerson ) ) );
                    }
                }

                items.Add( workflowNavigationCategory );
            }

            return items;
        }
示例#4
0
        private void BuildCategoryControl(Control parentControl, WorkflowNavigationCategory category)
        {
            var divPanel = new HtmlGenericContainer("div");

            divPanel.AddCssClass("panel panel-workflowitem");
            parentControl.Controls.Add(divPanel);

            var divPanelHeading = new HtmlGenericControl("div");

            divPanelHeading.AddCssClass("panel-heading");
            divPanel.Controls.Add(divPanelHeading);

            var headingA = new HtmlGenericControl("a");

            headingA.Attributes.Add("data-toggle", "collapse");
            headingA.Attributes.Add("data-parent", "#" + parentControl.ClientID);
            headingA.AddCssClass("collapsed clearfix");
            divPanelHeading.Controls.Add(headingA);

            var divHeadingTitle = new HtmlGenericControl("div");

            divHeadingTitle.AddCssClass("panel-title clearfix");
            headingA.Controls.Add(divHeadingTitle);

            var headingTitle = new HtmlGenericControl("h3");

            headingTitle.AddCssClass("pull-left");
            divHeadingTitle.Controls.Add(headingTitle);

            var panelNavigation = new HtmlGenericControl("i");

            panelNavigation.AddCssClass("fa panel-navigation pull-right");
            divHeadingTitle.Controls.Add(panelNavigation);

            if (!string.IsNullOrWhiteSpace(category.IconCssClass))
            {
                headingTitle.Controls.Add(new LiteralControl(string.Format("<i class='{0} fa-fw'></i> ", category.IconCssClass)));
            }
            headingTitle.Controls.Add(new LiteralControl(category.Name));

            var divCollapse = new HtmlGenericControl("div");

            divCollapse.ID = string.Format("collapse-category-", category.Id);
            divCollapse.AddCssClass("panel-collapse collapse");
            divPanel.Controls.Add(divCollapse);

            headingA.Attributes.Add("href", "#" + divCollapse.ClientID);

            if (category.WorkflowTypes.Any())
            {
                var ulGroup = new HtmlGenericControl("ul");
                ulGroup.AddCssClass("list-group");
                divCollapse.Controls.Add(ulGroup);

                foreach (var workflowType in category.WorkflowTypes)
                {
                    var li = new HtmlGenericControl("li");
                    li.AddCssClass("list-group-item clickable");
                    ulGroup.Controls.Add(li);

                    var qryParms = new Dictionary <string, string>();
                    qryParms.Add("WorkflowTypeId", workflowType.Id.ToString());

                    bool showLinkToEntry = workflowType.HasForms && workflowType.IsActive;

                    var aNew = new HtmlGenericControl(showLinkToEntry ? "a" : "span");
                    if (workflowType.HasForms)
                    {
                        aNew.Attributes.Add("href", LinkedPageUrl("EntryPage", qryParms));
                    }
                    li.Controls.Add(aNew);

                    if (!string.IsNullOrWhiteSpace(workflowType.IconCssClass))
                    {
                        aNew.Controls.Add(new LiteralControl(string.Format("<i class='{0} fa-fw'></i> ", workflowType.IconCssClass)));
                    }

                    aNew.Controls.Add(new LiteralControl(workflowType.Name));

                    if (workflowType.CanManage || workflowType.CanViewList || IsUserAuthorized(Rock.Security.Authorization.EDIT))
                    {
                        li.Controls.Add(new LiteralControl(" "));

                        var aManage = new HtmlGenericControl("a");
                        aManage.AddCssClass("pull-right");
                        aManage.Attributes.Add("href", LinkedPageUrl("ManagePage", qryParms));
                        var iManageIcon = new HtmlGenericControl("i");
                        aManage.Controls.Add(iManageIcon);
                        iManageIcon.AddCssClass("fa fa-list");
                        li.Controls.Add(aManage);
                    }
                }
            }

            if (category.ChildCategories.Any())
            {
                var divBody = new HtmlGenericControl("div");
                //divBody.AddCssClass( "panel-body" );
                divCollapse.Controls.Add(divBody);

                foreach (var childCategory in category.ChildCategories)
                {
                    BuildCategoryControl(divBody, childCategory);
                }
            }
        }