Index: src/services/Deki/DekiWiki-Site.cs =================================================================== --- src/services/Deki/DekiWiki-Site.cs (revision 6633) +++ src/services/Deki/DekiWiki-Site.cs (working copy) @@ -134,6 +134,14 @@ foreach(PageBE page in pagesById.Values) { DekiContext.Current.Instance.LuceneIndexClient.QueueUpdate(page, false); } + PageDA.GetDescendantPages(PageBL.GetTemplatePage(), out pagesById, out childrenInfo); + foreach(PageBE page in pagesById.Values) { + DekiContext.Current.Instance.LuceneIndexClient.QueueUpdate(page, false); + } + PageDA.GetDescendantPages(PageBL.GetUserPage(), out pagesById, out childrenInfo); + foreach(PageBE page in pagesById.Values) { + DekiContext.Current.Instance.LuceneIndexClient.QueueUpdate(page, false); + } attachments[] attachments = AttachmentDA.GetAttachments(0, int.MaxValue); foreach(attachments att in attachments) { DekiContext.Current.Instance.LuceneIndexClient.QueueUpdate(att, false); Index: src/services/Deki/Logic/PageBL.cs =================================================================== --- src/services/Deki/Logic/PageBL.cs (revision 6633) +++ src/services/Deki/Logic/PageBL.cs (working copy) @@ -176,6 +176,20 @@ public static PageBE GetHomePage() { return PageDA.GetPageById(HomePageId); } + /// + /// Retrieves the template root page object + /// + /// + public static PageBE GetTemplatePage() { + return PageDA.GetPageById(TemplatePageId); + } + /// + /// Retrieves the user root page object + /// + /// + public static PageBE GetUserPage() { + return PageDA.GetPageById(UserPageId); + } //--- Properties --- @@ -194,7 +208,31 @@ return homepageId; } } + public static uint TemplatePageId { + get { + uint templatepageId = DekiContext.Current.PerRequestCache.Get(TEMPLATEPAGEIDKEY, 0); + //Resolve templatepageId if not cached + if(templatepageId == 0) { + templatepageId = (uint)DekiContext.Current.Instance.Catalog.NewQuery("SELECT page_id FROM pages WHERE page_parent=0 AND page_namespace=10").ReadAs(); + DekiContext.Current.PerRequestCache[HOMEPAGEIDKEY] = templatepageId; + } + return templatepageId; + } + } + public static uint UserPageId { + get { + uint userpageId = DekiContext.Current.PerRequestCache.Get(USERPAGEIDKEY, 0); + + //Resolve userpageId if not cached + if(userpageId == 0) { + userpageId = (uint)DekiContext.Current.Instance.Catalog.NewQuery("SELECT page_id FROM pages WHERE page_parent=0 AND page_namespace=2").ReadAs(); + DekiContext.Current.PerRequestCache[HOMEPAGEIDKEY] = userpageId; + } + return userpageId; + } + } + public static PageBE EnsureParent(bool isRedirect, Title title) { PageBE parentPage = null; Title parentTitle = title.GetParent();