|
using System; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Threading.Tasks; |
|
using Telerik.Sitefinity.Abstractions; |
|
using Telerik.Sitefinity.GenericContent.Model; |
|
using Telerik.Sitefinity.Modules.GenericContent; |
|
using Telerik.Sitefinity.Modules.Pages; |
|
using Telerik.Sitefinity.Pages.Model; |
|
|
|
namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Modules.ContentBlocks |
|
{ |
|
public partial class ContentBlocksSnippets |
|
{ |
|
public static void CreatePageWithSharedContentItemSnippet() |
|
{ |
|
//gets an instance of the contentManager |
|
var contentManager = ContentManager.GetManager(); |
|
|
|
//creates new content block |
|
var contentItem = CreateContentItem(contentManager); |
|
|
|
//gets a PageManager object |
|
PageManager manager = PageManager.GetManager(); |
|
|
|
//creates new page |
|
var pageData = CreatePageData(manager, Guid.NewGuid()); |
|
|
|
//edit the page to add content block |
|
var draftPage = manager.EditPage(pageData.Id); |
|
|
|
var contentBlock = new Telerik.Sitefinity.Modules.GenericContent.Web.UI.ContentBlock(); |
|
contentBlock.Html = contentItem.Content.Value; |
|
contentBlock.SharedContentID = contentItem.Id; |
|
var draftControl = manager.CreateControl<PageDraftControl>(contentBlock, "Body"); |
|
draftPage.Controls.Add(draftControl); |
|
|
|
//Create a node in the SiteMap for that page. |
|
PageNode node = manager.CreatePageNode(); |
|
var parent = manager.GetPageNode(SiteInitializer.CurrentFrontendRootNodeId); |
|
manager.ChangeParent(node, parent); |
|
//set the node properties |
|
node.Title = "page title"; |
|
node.ShowInNavigation = true; |
|
node.UrlName = "url"; |
|
|
|
//associate the node with the PageData object |
|
|
|
//valid before 7.0 |
|
//node.Page = pageData; |
|
|
|
//Save the changes |
|
manager.PublishPageDraft(draftPage); |
|
manager.SaveChanges(); |
|
} |
|
|
|
private static ContentItem CreateContentItem(ContentManager contentManager) |
|
{ |
|
var contentItem = contentManager.CreateContent(Guid.NewGuid()); |
|
contentItem.Title = "content item title"; |
|
contentItem.UrlName = "content-item-url-name"; |
|
contentManager.SaveChanges(); |
|
|
|
//valid before 7.0 |
|
//contentItem = contentManager.Publish(contentItem); |
|
|
|
//since version 7.0 you must use the Lifecycle property |
|
contentManager.Lifecycle.Publish(contentItem); |
|
|
|
contentManager.SaveChanges(); |
|
return contentItem; |
|
} |
|
|
|
private static PageData CreatePageData(PageManager pageManager, Guid id) |
|
{ |
|
//It holds the actual page contents |
|
PageData pageData = pageManager.CreatePageData(id); |
|
pageData.Template = pageManager.GetTemplates().First(); |
|
pageData.HtmlTitle = "page title"; |
|
|
|
//valid before 7.0 |
|
//pageData.Title = "page title"; |
|
|
|
//since 7.0 some of the PageData properties are moved to the PageNode |
|
//check API Changes in Sitefinity 7.0 |
|
pageData.NavigationNode.Title = "page title"; |
|
|
|
//Set the page status as published. The default status is draft |
|
pageData.Status = ContentLifecycleStatus.Live; |
|
return pageData; |
|
} |
|
} |
|
} |
|
|