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
}