using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.PortalEngine;
using CMS.UIControls;
public partial class CMSModules_PortalEngine_Controls_Layout_PageTemplateSelector : CMSAdminControl
{
#region "Variables"
private bool mShowOnlySiteTemplates = true;
#endregion
#region "Page template selector properties"
///
/// If enabled ad-hoc templates will be displayed in selector.
///
public bool ShowAdHoc
{
get;
set;
}
///
/// Gets or sets a value indicating whether to show site page templates only.
///
public bool ShowOnlySiteTemplates
{
get
{
return mShowOnlySiteTemplates;
}
set
{
mShowOnlySiteTemplates = value;
}
}
///
/// Indicates whether only templates for product section should be displayed.
///
public bool ShowOnlyProductSectionTemplates
{
get;
set;
}
#endregion
#region "Selector properties"
///
/// Gets or sets the value that indicates whether empty categories should be displayed.
///
public bool ShowEmptyCategories
{
get
{
return treeElem.ShowEmptyCategories;
}
set
{
treeElem.ShowEmptyCategories = value;
}
}
///
/// Gets or sets the value that indicates whether stratup focus fuctionallity is enabled.
///
public bool UseStartUpFocus
{
get
{
return flatElem.UniFlatSelector.UseStartUpFocus;
}
set
{
flatElem.UniFlatSelector.UseStartUpFocus = value;
}
}
///
/// Gets or set the flat panel selected item.
///
public string SelectedItem
{
get
{
return flatElem.SelectedItem;
}
set
{
flatElem.SelectedItem = value;
}
}
///
/// Gets or sets selected item in tree.
///
public string SelectedCategory
{
get
{
return ValidationHelper.GetString(treeElem.SelectedItem, "");
}
set
{
treeElem.SelectedItem = value;
}
}
///
/// Gets or sets name of javascript function used for passing selected value from flat selector.
///
public string SelectFunction
{
get
{
return flatElem.UniFlatSelector.SelectFunction;
}
set
{
flatElem.UniFlatSelector.SelectFunction = value;
}
}
///
/// If enabled, flat selector remembers selected item trough postbacks.
///
public bool RememberSelectedItem
{
get
{
return flatElem.UniFlatSelector.RememberSelectedItem;
}
set
{
flatElem.UniFlatSelector.RememberSelectedItem = value;
}
}
///
/// Enables or disables stop processing.
///
public override bool StopProcessing
{
get
{
return base.StopProcessing;
}
set
{
base.StopProcessing = value;
flatElem.StopProcessing = value;
treeElem.StopProcessing = value;
EnableViewState = !value;
}
}
///
/// Indicates if control is used on live site.
///
public override bool IsLiveSite
{
get
{
return base.IsLiveSite;
}
set
{
base.IsLiveSite = value;
treeElem.IsLiveSite = value;
flatElem.IsLiveSite = value;
}
}
///
/// Gets or sets document id.
///
public int DocumentID
{
get;
set;
}
///
/// Document node GUID to identify ad-hoc templates
///
public Guid NodeGUID
{
get;
set;
}
///
/// Whether selecting new page.
///
public bool IsNewPage
{
get;
set;
}
///
/// Root category
///
public int RootCategory
{
get;
set;
}
#endregion
#region "Page methods and events"
///
/// OnInit.
///
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
treeElem.SelectPath = "/";
}
///
/// Page load.
///
protected void Page_Load(object sender, EventArgs e)
{
if (StopProcessing)
{
return;
}
// Preselect root category
if (!RequestHelper.IsPostBack())
{
ResetToDefault();
}
else
{
LoadRootCategory();
}
if (!ShowAdHoc)
{
treeElem.ShowAdHocCategory = false;
flatElem.ShowOnlyReusable = true;
}
// Offer only templates for product section
if (ShowOnlyProductSectionTemplates)
{
flatElem.ShowOnlyProductSectionTemplates = true;
}
if (ShowOnlySiteTemplates)
{
// Show only templates belonging to current site
flatElem.SiteId = CMSContext.CurrentSiteID;
}
treeElem.ShowOnlySiteTemplates = ShowOnlySiteTemplates;
// Set node id
flatElem.DocumentID = DocumentID;
treeElem.DocumentID = DocumentID;
flatElem.IsNewPage = IsNewPage;
treeElem.IsNewPage = IsNewPage;
if (!IsNewPage && (NodeGUID != Guid.Empty))
{
treeElem.ShowAdHocCategory = true;
flatElem.NodeGUID = NodeGUID;
}
}
///
/// PreRender.
///
protected void Page_PreRender(object sender, EventArgs e)
{
if (StopProcessing)
{
return;
}
// Pass currently selected category to flat selector
if (RequestHelper.IsPostBack())
{
flatElem.TreeSelectedItem = treeElem.SelectedItem;
}
}
///
/// On tree element item selected.
///
/// Selected value
protected void treeElem_OnItemSelected(string selectedValue)
{
flatElem.TreeSelectedItem = selectedValue;
// Clear search box and pager
flatElem.UniFlatSelector.ResetToDefault();
}
#endregion
#region "Methods"
///
/// Reloads data.
///
/// If true, flat selector is reloaded
public override void ReloadData(bool reloadFlat)
{
treeElem.ReloadData();
if (reloadFlat)
{
flatElem.ReloadData();
}
}
///
/// Sets the root category to the control
///
protected PageTemplateCategoryInfo LoadRootCategory()
{
PageTemplateCategoryInfo ptci = null;
if (RootCategory > 0)
{
ptci = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfo(RootCategory);
}
else
{
ptci = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfoByCodeName("/");
}
if (ptci != null)
{
// Select and expand root node
treeElem.RootPath = ptci.CategoryPath;
}
return ptci;
}
///
/// Selects root category in tree, clears search condition and resets pager to first page.
///
public void ResetToDefault()
{
PageTemplateCategoryInfo ptci = LoadRootCategory();
if (ptci != null)
{
flatElem.SelectedCategory = ptci;
// Select and expand root node
treeElem.SelectedItem = ptci.CategoryId.ToString();
treeElem.SelectPath = ptci.CategoryPath;
}
// Clear search condition and resets pager to first page
flatElem.UniFlatSelector.ResetToDefault();
}
///
/// Add a reload script to the page which will update the page size (items count) according to the window size.
///
/// Indicates whether to invoke resizing of the page before calculating the items count
public void RegisterRefreshPageSizeScript(bool forceResize)
{
flatElem.RegisterRefreshPageSizeScript(forceResize);
}
#endregion
}