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 }