Exemple #1
0
        /// <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);
        }
Exemple #3
0
        /// <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(
                    "&nbsp<i class=\"fa fa-lock\">&nbsp;</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\">&nbsp;</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'>&nbsp;</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();
        }
Exemple #4
0
        /// <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(
                    "&nbsp<i class=\"fa fa-lock\">&nbsp;</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\">&nbsp;</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'>&nbsp;</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());
        }