Creating Page using Fluent API Broken in SP1
I have a routine that uses the Fluent API to create a collection of pages for a sample application. All of the pages use the same template (which is created using a Store.Master page file). This routine has worked fine up until I updated to Sitefinity 4.0 SP1.
The routine closely follows the sample provided here:
http://www.sitefinity.com/40/help/developers-guide/sitefinity-essentials-pages-creating-pages.html
The actual code for my routine appears at the bottom of my post.
The symptoms of the problem I am having are these:
1. Using the Sitefinity Page Editor, I create a page named "Home" using my "Store" template. I can Preview the page and I can "View" the page and everything looks fine. I can add a widget to the page, and everything is still fine.
2. Using my API routine, I create an empty page called "Test" using my "Store" template. I can show the page using Preview button in design mode and it looks fine. If I publish the page then click the "View" button for my Test page, the response is a totally blank page. It has tags <html> <head> and an empty <body> element. The <head> has a single <meta> element and that is all.
I have double checked all the permission settings I can find - permission is granted for "Everyone" to view all.
The full source code of the method I am using is shown below. It works in build 1098 but not 1210. I am calling this method to create my "Test" page using the following code:
PageManager manager = PageManager.GetManager();
CreateStorePage(manager, null, 0, "Test", "Test", "test", "Store", false);
There is a cautionary note in the html "sitefinity-essentials-pages-creating-pages.html " article cited above which reads as follows.
Caution |
---|
Note that in this example we are using PageManager() so we can take a valid template ID and then pass this ID to SetTemplateTo() method. This will be changed in the official release, with the introduction of Template facade, so the PageManager will not be used. |
public PageNode CreateStorePage(PageManager manager, PageNode parentNode, int ordinal, string pageName, string menuTitle, string url, string templateTitle, bool showInNavigation)
PageTemplate storeTemplate = GetPageTemplateByTitle(manager, templateTitle);
global::Telerik.Sitefinity.Fluent.Pages.PageFacade pf = App.WorkWith().Page();
PageNode newPageNode = pf.CreateNewStandardPage(PageLocation.Frontend)
.Do(p =>
// parent must be constructed using same PageManager instance as the PageFacade is using.
PageNode parent = parentNode != null ? pf.PageManager.GetPageNode(parentNode.Id) : null;
p.Name = pageName;
p.Title = menuTitle;
//unique url of the page
//this property is required
p.UrlName = url;
p.ShowInNavigation = showInNavigation;
p.LastModified = DateTime.UtcNow;
p.DateCreated = DateTime.UtcNow;
//set menu name
p.Page.Title = menuTitle;
//set title which appears in page header
p.Page.HtmlTitle = menuTitle;
// All store pages require view state
p.Page.EnableViewState = true;
p.Description = menuTitle;
p.Ordinal = ordinal;
p.Attributes["ModuleName"] = Iciniti.Telerik.IcinitiStoreModule.ModuleName;
if (parent != null)
p.Parent = parent;
else
).CheckOut()
.SetTemplateTo(storeTemplate)
.Publish().SaveAndContinue().Get();
SiteMapBase.Cache.Flush();
OnPageCreated(url);
return newPageNode;