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); }
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 ); } } }
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; }
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); } } }