/// <summary> /// Adds the page nodes. /// </summary> /// <param name="page">The page.</param> /// <param name="expandedPageIdList">The expanded page identifier list.</param> /// <param name="rockContext">The rock context.</param> /// <returns></returns> protected string PageNode(PageCache page, List <int> expandedPageIdList, RockContext rockContext) { var sb = new StringBuilder(); bool isExpanded = expandedPageIdList.Contains(page.Id); sb.AppendFormat( @" <li {0} data-id='{1}'> <span><i class='fa fa-file-o'></i> {2}</span> ", isExpanded ? "data-expanded='true'" : string.Empty, // 0 page.Id, // 1 page.InternalName // 2 ); var childPages = page.GetPages(rockContext); if (childPages.Any()) { sb.AppendLine("<ul>"); foreach (var childPage in childPages.OrderBy(a => a.Order)) { sb.Append(PageNode(childPage, expandedPageIdList, rockContext)); } sb.AppendLine("</ul>"); } sb.AppendLine("</li>"); return(sb.ToString()); }
/// <summary> /// Gets the child pages. /// </summary> /// <param name="rootPage">The root page.</param> /// <param name="currentPerson">The current person.</param> private List <PageCache> GetChildPages(PageCache rootPage, Person currentPerson) { var pages = new List <PageCache>(); using (var rockContext = new RockContext()) { foreach (PageCache page in rootPage.GetPages(rockContext)) { // IsAuthorized() knows how to handle a null person argument. if (page.DisplayInNavWhen == DisplayInNavWhen.WhenAllowed && !page.IsAuthorized(Authorization.VIEW, currentPerson)) { continue; } if (page.DisplayInNavWhen == DisplayInNavWhen.Never) { continue; } pages.Add(page); } } return(pages); }
/// <summary> /// Adds the page nodes. /// </summary> /// <param name="page">The page.</param> /// <param name="expandedPageIdList">The expanded page identifier list.</param> /// <param name="rockContext">The rock context.</param> /// <returns></returns> protected string PageNode( PageCache page, List<int> expandedPageIdList, RockContext rockContext ) { var sb = new StringBuilder(); string pageSearch = this.PageParameter( "pageSearch" ); bool isSelected = false; if ( !string.IsNullOrWhiteSpace( pageSearch ) ) { isSelected = page.InternalName.IndexOf( pageSearch, StringComparison.OrdinalIgnoreCase ) >= 0; } bool isExpanded = expandedPageIdList.Contains( page.Id ); var authRoles = Authorization.AuthRules( EntityTypeCache.Read<Rock.Model.Page>().Id, page.Id, Authorization.VIEW ); string authHtml = string.Empty; if (authRoles.Any()) { authHtml += string.Format( " <i class=\"fa fa-lock\"> </i>{0}", authRoles.Select( a => "<span class=\"badge badge-" + (a.AllowOrDeny == 'A' ? "success" : "danger") + "\">" + a.DisplayName + "</span>" ).ToList().AsDelimited( " " ) ); } int pageEntityTypeId = EntityTypeCache.Read( "Rock.Model.Page" ).Id; sb.AppendFormat( "<li data-expanded='{4}' data-model='Page' data-id='p{0}'><span><span class='rollover-container'><i class=\"fa fa-file-o\"> </i><a href='{1}'>{2}</a> {6} {7}<span class='js-auth-roles hidden'>{5}</span></span></span>{3}", page.Id, // 0 new PageReference( page.Id ).BuildUrl(), // 1 isSelected ? "<strong>" + page.InternalName + "</strong>" : page.InternalName, // 2 Environment.NewLine, // 3 isExpanded.ToString().ToLower(), // 4 authHtml, // 5 CreatePageConfigIcon(page), // 6 CreateSecurityIcon( pageEntityTypeId, page.Id, page.InternalName) // 7 ); var childPages = page.GetPages( rockContext ); if ( childPages.Any() || page.Blocks.Any() ) { sb.AppendLine( "<ul>" ); foreach ( var childPage in childPages.OrderBy( a => a.Order ).ThenBy( a => a.InternalName ) ) { sb.Append( PageNode( childPage, expandedPageIdList, rockContext ) ); } foreach ( var block in page.Blocks.OrderBy( b => b.Order ) ) { string blockName = block.Name; string blockCacheName = BlockTypeCache.Read( block.BlockTypeId, rockContext ).Name; if (blockName != blockCacheName) { blockName = blockName + " (" + blockCacheName + ")"; } int blockEntityTypeId = EntityTypeCache.Read( "Rock.Model.Block" ).Id; sb.AppendFormat( "<li data-expanded='false' data-model='Block' data-id='b{0}'><span><span class='rollover-container'> <i class='fa fa-th-large'> </i> {2} {1} {4}</span></span></li>{3}", block.Id, // 0 CreateConfigIcon( block ), // 1 blockName, // 2 Environment.NewLine, //3 CreateSecurityIcon( blockEntityTypeId, block.Id, block.Name ) // 4 ); } sb.AppendLine( "</ul>" ); } sb.AppendLine( "</li>" ); return sb.ToString(); }
/// <summary> /// Adds the page nodes. /// </summary> /// <param name="page">The page.</param> /// <param name="expandedPageIdList">The expanded page identifier list.</param> /// <param name="rockContext">The rock context.</param> /// <returns></returns> protected string PageNode(PageCache page, List <int> expandedPageIdList, RockContext rockContext) { var sb = new StringBuilder(); string pageSearch = this.PageParameter("pageSearch"); bool isSelected = false; if (!string.IsNullOrWhiteSpace(pageSearch)) { isSelected = page.InternalName.IndexOf(pageSearch, StringComparison.OrdinalIgnoreCase) >= 0; } bool isExpanded = expandedPageIdList.Contains(page.Id); var authRoles = Authorization.AuthRules(EntityTypeCache.Read <Rock.Model.Page>().Id, page.Id, Authorization.VIEW); string authHtml = string.Empty; if (authRoles.Any()) { authHtml += string.Format( " <i class=\"fa fa-lock\"> </i>{0}", authRoles.Select(a => "<span class=\"badge badge-" + (a.AllowOrDeny == 'A' ? "success" : "danger") + "\">" + a.DisplayName + "</span>").ToList().AsDelimited(" ")); } int pageEntityTypeId = EntityTypeCache.Read("Rock.Model.Page").Id; sb.AppendFormat( "<li data-expanded='{4}' data-model='Page' data-id='p{0}'><span><span class='rollover-container'><i class=\"fa fa-file-o\"> </i><a href='{1}'>{2}</a> {6} {7}<span class='js-auth-roles hidden'>{5}</span></span></span>{3}", page.Id, // 0 new PageReference(page.Id).BuildUrl(), // 1 isSelected ? "<strong>" + page.InternalName + "</strong>" : page.InternalName, // 2 Environment.NewLine, // 3 isExpanded.ToString().ToLower(), // 4 authHtml, // 5 CreatePageConfigIcon(page), // 6 CreateSecurityIcon(pageEntityTypeId, page.Id, page.InternalName) // 7 ); var childPages = page.GetPages(rockContext); if (childPages.Any() || page.Blocks.Any()) { sb.AppendLine("<ul>"); foreach (var childPage in childPages.OrderBy(a => a.Order).ThenBy(a => a.InternalName)) { sb.Append(PageNode(childPage, expandedPageIdList, rockContext)); } foreach (var block in page.Blocks.OrderBy(b => b.Order)) { string blockName = block.Name; string blockCacheName = BlockTypeCache.Read(block.BlockTypeId, rockContext).Name; if (blockName != blockCacheName) { blockName = blockName + " (" + blockCacheName + ")"; } int blockEntityTypeId = EntityTypeCache.Read("Rock.Model.Block").Id; sb.AppendFormat("<li data-expanded='false' data-model='Block' data-id='b{0}'><span><span class='rollover-container'> <i class='fa fa-th-large'> </i> {2} {1} {4}</span></span></li>{3}", block.Id, // 0 CreateConfigIcon(block), // 1 blockName, // 2 Environment.NewLine, //3 CreateSecurityIcon(blockEntityTypeId, block.Id, block.Name) // 4 ); } sb.AppendLine("</ul>"); } sb.AppendLine("</li>"); return(sb.ToString()); }