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 }