public GetAllDescendents ( int parentPageId ) : IEnumerable |
||
parentPageId | int | A |
return | IEnumerable |
/// <summary> /// Returns a list of matching people /// </summary> /// <param name="searchterm"></param> /// <returns></returns> public override IQueryable<string> Search( string searchterm ) { var rootPageGuid = GetAttributeValue( "RootPage" ).AsGuid(); var terms = searchterm.Split( ' ' ); var pageServ = new PageService( new RockContext() ); IEnumerable<Page> pages; var rootPage = pageServ.Get( rootPageGuid ); if ( rootPage != null ) { pages = pageServ.GetAllDescendents( rootPage.Id ); } else { pages = pageServ.Queryable(); } return pages.ToList().Where( p => Regex.IsMatch( p.PageTitle, String.Join( "\\w* ", terms.Select( t => Regex.Escape( t ) ) ), RegexOptions.IgnoreCase ) ).Select( p => p.PageTitle ).AsQueryable(); }
/// <summary> /// Binds the pages grid. /// </summary> protected void BindPagesGrid() { pnlPages.Visible = false; int siteId = PageParameter( "siteId" ).AsInteger() ?? 0; if ( siteId == 0 ) { // quit if the siteId can't be determined return; } hfSiteId.SetValue( siteId ); pnlPages.Visible = true; LayoutService layoutService = new LayoutService(); layoutService.RegisterLayouts( Request.MapPath( "~" ), SiteCache.Read( siteId ), CurrentPersonId ); var layouts = layoutService.Queryable().Where( a => a.SiteId.Equals( siteId ) ).Select( a => a.Id ).ToList(); var siteService = new SiteService(); var pageId = siteService.Get( siteId ).DefaultPageId; var pageService = new PageService(); var qry = pageService.GetAllDescendents( (int)pageId ).AsQueryable().Where( a => layouts.Contains(a.LayoutId) ); string layoutFilter = gPagesFilter.GetUserPreference( "Layout" ); if ( !string.IsNullOrWhiteSpace( layoutFilter ) && layoutFilter != Rock.Constants.All.Text ) { qry = qry.Where( a => a.Layout.ToString() == layoutFilter ); } SortProperty sortProperty = gPages.SortProperty; if ( sortProperty != null ) { qry = qry.Sort( sortProperty ); } else { qry = qry.OrderBy( q => q.Id ); } gPages.DataSource = qry.ToList(); gPages.DataBind(); }