|
using System; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using Telerik.Sitefinity.Localization; |
|
using Telerik.Sitefinity.Model.Localization; |
|
using Telerik.Sitefinity.Modules.Pages; |
|
using Telerik.Sitefinity.Pages.Model; |
|
using Telerik.Sitefinity.Web.UI; |
|
using Telerik.Sitefinity.Workflow; |
|
|
|
namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Pages |
|
{ |
|
public partial class PagesSnippets |
|
{ |
|
public static void AddLayoutControlsToPage() |
|
{ |
|
var pageId = Guid.Parse("53A5B8DC-5BB0-655C-89B0-FF00000EB5DE"); |
|
var pageManager = PageManager.GetManager(); |
|
var pageData = pageManager.GetPageNode(pageId).GetPageData(); |
|
|
|
var headerPlaceholder = GetHeaderPlaceholderId(pageData); |
|
var contentPlaceholder = GetContentPlaceholderId(pageData); |
|
|
|
var headerCaption = "LayoutControlInHeaderPlaceholder"; |
|
var contentCaption = "LayoutControlInContentPlaceholder"; |
|
|
|
var layoutResource = "~/SFRes/Telerik.Sitefinity.Resources.Templates.Layouts.Column2Template2.ascx"; |
|
|
|
PagesSnippets.AddLayoutControlToPage(pageId, headerPlaceholder, headerCaption, layoutResource); |
|
PagesSnippets.AddLayoutControlToPage(pageId, contentPlaceholder, contentCaption, layoutResource); |
|
} |
|
|
|
public static string GetHeaderPlaceholderId(PageData pageData) |
|
{ |
|
var headerControl = pageData.Template.Controls.FirstOrDefault(x => x.Caption.Contains("Header")); |
|
|
|
// Col00 means the first column. As this control has only one column the number is 00; |
|
var headerControlAsPlaceholderId = headerControl.Properties.FirstOrDefault(x => x.Name == "ID").Value + "_Col00"; |
|
return headerControlAsPlaceholderId; |
|
} |
|
|
|
public static string GetContentPlaceholderId(PageData pageData) |
|
{ |
|
var contentAndSideBar = pageData.Template.Controls.FirstOrDefault(x => x.Caption.Contains("Content")); |
|
|
|
// You can specify which column to get ( e.g. Content & Right Sidebar) |
|
// using the PlaceHolders collection from the control itself. |
|
var contentPlaceHolder = contentAndSideBar.PlaceHolders[0]; |
|
var rigthSideBarPlaceHolder = contentAndSideBar.PlaceHolders[1]; |
|
return contentPlaceHolder; |
|
} |
|
|
|
public static void AddLayoutControlToPage(Guid pageId, string placeholder, string caption, string layoutResource) |
|
{ |
|
using (new CultureRegion(LocalizationHelper.GetSitefinityCulture(null))) |
|
{ |
|
var manager = PageManager.GetManager(); |
|
var pageData = manager.GetPageNode(pageId).GetPageData(); |
|
|
|
var temp = manager.EditPage(pageData.Id); |
|
var layoutControl = PagesSnippets.CreateLayoutControl(manager, placeholder, caption, layoutResource); |
|
|
|
manager.SetControlId(temp, layoutControl); |
|
|
|
// Add the control to the page |
|
temp.Controls.Add(layoutControl); |
|
|
|
var master = manager.PagesLifecycle.CheckIn(temp); |
|
manager.PagesLifecycle.Publish(master); |
|
manager.SaveChanges(); |
|
} |
|
} |
|
|
|
public static PageDraftControl CreateLayoutControl(PageManager manager, string placeHolder, string caption, string layoutResource) |
|
{ |
|
var pageControl = manager.CreateControl<PageDraftControl>(); |
|
pageControl.Caption = caption; |
|
pageControl.ObjectType = typeof(LayoutControl).FullName; |
|
|
|
pageControl.PlaceHolder = placeHolder; |
|
pageControl.IsLayoutControl = true; |
|
manager.SetControlDefaultPermissions(pageControl); |
|
|
|
var prop = manager.CreateProperty(); |
|
prop.Name = "Layout"; |
|
prop.Value = layoutResource; |
|
pageControl.Properties.Add(prop); |
|
|
|
return pageControl; |
|
} |
|
} |
|
} |