using System; using CMS.GlobalHelper; using CMS.PortalEngine; using CMS.SettingsProvider; using CMS.UIControls; using CMS.PortalControls; using CMS.CMSHelper; public partial class CMSModules_PortalEngine_Controls_WebParts_WebPartSelector : CMSAdminControl { #region "Variables" private bool mShowInheritedWebparts = true; private bool mShowWidgetOnlyWebparts = false; #endregion #region "Webpart selector properties" /// /// If true, only wireframe web parts are offered. /// public bool ShowWireframeOnlyWebparts { get; set; } /// /// Indicates whether inherited webpart will be displayed in selector. /// public bool ShowInheritedWebparts { get { return mShowInheritedWebparts; } set { mShowInheritedWebparts = value; } } /// /// Indicates whether webpart of type "Widget only" will be displayed in selector. /// public bool ShowWidgetOnlyWebparts { get { return mShowWidgetOnlyWebparts; } set { mShowWidgetOnlyWebparts = value; flatElem.ShowWidgetOnlyWebparts = value; treeElem.ShowWidgetOnlyWebparts = value; } } #endregion #region "Selector properties" /// /// Gets or set the flat panel selected item. /// public string SelectedItem { get { return flatElem.SelectedItem; } set { flatElem.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; } } #endregion #region "Page methods and events" /// /// Page load. /// protected void Page_Load(object sender, EventArgs e) { if (StopProcessing) { return; } treeElem.OnItemSelected += new CMSModules_PortalEngine_Controls_WebParts_WebPartTree.ItemSelectedEventHandler(treeElem_OnItemSelected); string where = null; // Filter for inherited webparts if (!ShowInheritedWebparts) { where = SqlHelperClass.AddWhereCondition(flatElem.UniFlatSelector.WhereCondition, "WebPartParentID IS NULL"); } // Where conditions for wireframe if (!PortalHelper.IsWireframingEnabled(CMSContext.CurrentSiteName)) { treeWireframes.Visible = false; } else if (ShowWireframeOnlyWebparts) { treeElem.StopProcessing = true; treeElem.Visible = false; treeWireframes.ShowRecentlyUsed = true; } flatElem.UniFlatSelector.WhereCondition = where; // Preselect root category if (!RequestHelper.IsPostBack()) { ResetToDefault(); } } /// /// Page prerender. /// protected void Page_PreRender(object sender, EventArgs e) { if (StopProcessing) { return; } // Pass currently selected category to flat selector if (RequestHelper.IsPostBack()) { if (ShowWireframeOnlyWebparts) { flatElem.TreeSelectedItem = treeWireframes.SelectedItem; } else { 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(); } } /// /// Selects root category in tree, clears search condition and resets pager to first page. /// public void ResetToDefault() { string rootCategory = (ShowWireframeOnlyWebparts ? "Wireframes" : "/"); // Get root webpart category WebPartCategoryInfo wci = WebPartCategoryInfoProvider.GetWebPartCategoryInfoByCodeName(rootCategory); if (wci != null) { flatElem.SelectedCategory = wci; string selItem = wci.CategoryID.ToString(); // Expand root node if (ShowWireframeOnlyWebparts) { treeWireframes.SelectedItem = selItem; treeWireframes.SelectPath = "/"; } else { treeElem.SelectedItem = selItem; treeElem.SelectPath = "/"; } flatElem.TreeSelectedItem = selItem; } // Clear search condition and resets pager to first page flatElem.UniFlatSelector.ResetToDefault(); } #endregion }