To duplicate an existing page within Sitefinity CMS using the native API, perform the following:
public void DuplicatePageNative(PageNode pageToCopy, string pageName)
{
var manager = PageManager.GetManager();
var newPagenode = manager.CreatePageNode();
var pageDataId = Guid.NewGuid();
PageData pageData = null;
PageNode pageNode = null;
PageNode parent = manager.GetPageNode(SiteInitializer.CurrentFrontendRootNodeId);
// Create the page data
pageData = manager.CreatePageData(pageDataId);
manager.CopyPageData(pageToCopy.Page, pageData);
pageNode = manager.CreatePage(parent, pageDataId, NodeType.Standard);
// set page node properties
pageNode.Page = pageData;
pageNode.Name = pageName;
pageNode.ShowInNavigation = true;
pageNode.UrlName = Regex.Replace(pageName.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");
pageNode.Title = pageName;
// set page data properties
pageData.Title = pageName;
pageData.Description = pageName;
pageData.DateCreated = DateTime.UtcNow;
pageData.LastModified = DateTime.UtcNow;
manager.SaveChanges();
var bag = new Dictionary<string, string>();
bag.Add("ContentType", typeof(PageNode).FullName);
WorkflowManager.MessageWorkflow(pageNode.Id, typeof(PageNode), null, "Publish", false, bag);
}
To duplicate an existing page within Sitefinity CMS using the fluent API, perform the following:
public void DuplicatePageFluent(PageNode pageToCopy, string pageName)
{
var myDuplicatedPage = App.WorkWith().Page(pageToCopy.Id).Duplicate().Do(pageNode =>
{
pageNode.Name = pageName;
pageNode.ShowInNavigation = true;
pageNode.UrlName = Regex.Replace(pageName.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");
pageNode.Title = pageName;
if (pageNode.Page != null)
{
var pageData = pageNode.Page;
pageData.Title = pageName;
pageData.Description = pageName;
pageData.DateCreated = DateTime.UtcNow;
pageData.LastModified = DateTime.UtcNow;
}
}).SaveAndContinue().Get();
// Publish
var bag = new Dictionary<string, string>();
bag.Add("ContentType", typeof(PageNode).FullName);
WorkflowManager.MessageWorkflow(myDuplicatedPage.Id, typeof(PageNode), null, "Publish", false, bag);
}