using System;
using CMS.CMSHelper;
using CMS.DocumentEngine;
using CMS.FormControls;
using CMS.GlobalHelper;
public partial class CMSModules_Membership_FormControls_Users_MultipleCategoriesSelector : FormEngineUserControl
{
#region "Properties"
///
/// Gets coma separated ID of selected categories.
///
public override object Value
{
get
{
if (FieldInfo != null)
{
return FieldInfo.AllowEmpty ? null : string.Empty;
}
return null;
}
set
{
}
}
///
/// Indicates if control is used on live site.
///
public override bool IsLiveSite
{
get
{
return base.IsLiveSite;
}
set
{
base.IsLiveSite = value;
categorySelector.IsLiveSite = value;
}
}
///
/// This form control should not be checked for min/max value length.
///
public override bool CheckMinMaxLength
{
get
{
return false;
}
set
{
base.CheckMinMaxLength = value;
}
}
///
/// This form control should not be checked for regular expression.
///
public override bool CheckRegularExpression
{
get
{
return false;
}
set
{
base.CheckRegularExpression = value;
}
}
#endregion
#region "Events"
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
CheckFieldEmptiness = false;
if (Form != null)
{
Form.OnAfterDataLoad += Form_OnAfterDataLoad;
Form.OnBeforeSave += Form_OnBeforeSave;
Form.OnAfterSave += Form_OnAfterSave;
InitializeCategorySelector();
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (Form.IsFirstLoad)
{
categorySelector.ReloadData();
}
}
private void Form_OnBeforeSave(object sender, EventArgs e)
{
// Initialize current values before save to support categories added using handler
categorySelector.InitCurrentValues();
}
private void Form_OnAfterSave(object sender, EventArgs e)
{
// Set document ID - insert mode
InitializeCategorySelector();
categorySelector.Save();
}
private void Form_OnAfterDataLoad(object sender, EventArgs e)
{
// Set document ID - edit mode
InitializeCategorySelector();
}
#endregion
#region "Methods"
///
/// Loads control value
///
/// Value to load
public override void LoadControlValue(object value)
{
categorySelector.ReloadData(true);
}
public override bool IsValid()
{
var isValid = base.IsValid();
// Check emptiness
if ((FieldInfo != null) && !FieldInfo.AllowEmpty)
{
var isEmpty = string.IsNullOrEmpty(ValidationHelper.GetString(categorySelector.UniSelector.Value, ""));
if (isEmpty)
{
ValidationError = ResHelper.GetString("BasicForm.ErrorEmptyValue");
}
isValid &= !isEmpty;
}
return isValid;
}
///
/// Initializes category selector.
///
private void InitializeCategorySelector()
{
if (Form.Data != null)
{
TreeNode node = Form.Data as TreeNode;
if (node != null)
{
categorySelector.Node = node;
}
else
{
categorySelector.DocumentID = ValidationHelper.GetInteger(Form.Data.GetValue("DocumentID"), 0);
}
categorySelector.UserID = CMSContext.CurrentUser.UserID;
}
}
#endregion
}