How to set html content on a Content block on a Page using t

Posted by Vivek.Natani@myfloridacfo.com on 20-Feb-2019 20:56

We have a custom migration tool that is used to migrate existing static html pages into sitefinity. We were able to create the Page (which inherited from a template and that template inherited from a parent template). The parent template has Content block which is used to migrate the html contents from the existing static html page. The following code was working until we redid the template. I'm not where it's missing out. The code runs fine but there is no content on the created page. Please help.

public static string GetContentPlaceholderId(Guid pageDataId, string zoneName, PageManager manager)
{
var contentAndSideBar = manager.GetPageData(pageDataId).Template.ParentTemplate.Controls.Where(x => x.Caption.Contains("Content block")).FirstOrDefault();
return contentAndSideBar.PlaceHolder;
}

// Create a new page, upload document & image and insert content in it
public Guid CreatePageNativeAPI(string pageName, string pageContent, bool isHomePage, Guid parentPageNodeId)
{
PageManager manager = PageManager.GetManager();

string pageUrlName = Regex.Replace(pageName.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

PageNode pageNode = manager.GetPageNodes().Where(pn => pn.ParentId == parentPageNodeId && pn.UrlName == pageUrlName).FirstOrDefault();
PageNode parent = manager.GetPageNode(parentPageNodeId);

if (pageNode == null)
{
var pageId = Guid.NewGuid();

pageNode = manager.CreatePage(parent, pageId, NodeType.Standard);

PageData pageData = pageNode.GetPageData();
pageData.Culture = Thread.CurrentThread.CurrentCulture.ToString();
pageData.HtmlTitle = pageName;
var template = parent.GetPageData().Template;
pageData.Template = template;

pageNode.Name = pageName;
pageNode.Description = pageName;
pageNode.Title = pageName.Replace("-", " ").Replace("_", " ");
pageNode.UrlName = pageUrlName;
pageNode.ShowInNavigation = true;
pageNode.DateCreated = DateTime.UtcNow;
pageNode.LastModified = DateTime.UtcNow;
pageNode.ApprovalWorkflowState = "Published";
pageNode.ShowInNavigation = false;

manager.SaveChanges();
}
else
{
var temp = manager.EditPage(pageNode.GetPageData().Id);

if (temp != null)
{
// Remove the first child control in the controls collection
if (temp.Controls.Count > 0)
{
temp.Controls.RemoveAt(0);
}

manager.PagesLifecycle.CheckIn(temp);
manager.SaveChanges();

// Publish
var bag = new Dictionary<string, string>();
bag.Add("ContentType", typeof(PageNode).FullName);
WorkflowManager.MessageWorkflow(pageNode.Id, typeof(PageNode), null, "Publish", false, bag);
}
}

var content = new ContentBlock()
{
Html = pageContent,
IsShared = true,
Enabled = true
};

App.WorkWith().Page(pageNode.Id).AsStandardPage()
.CheckOut()
.Control()
.CreateNew(content, "Content")
.Do(c =>
{
c.PlaceHolder = GetContentPlaceholderId(pageNode.GetPageData().Id, "Content", manager);
})
.SaveChanges()
.Done()
.CheckIn()
.Publish()
.SaveChanges();

manager.Dispose();

return pageNode.Id;
}

All Replies

This thread is closed