private List <ConditionalRule> BuildConditionalRuleSet() { List <ConditionalRule> conditionalRules = new List <ConditionalRule>(); foreach (var fieldControl in this.FieldControls) { IConditionalFormControl lfc = fieldControl as IConditionalFormControl; if (lfc != null && lfc.UsesConditionalLogic == true) { ConditionalRule conditionalRule = new ConditionalRule(); conditionalRule.Target = lfc.TargetId; conditionalRule.Action = lfc.Action == 0 ? "Show" : "Hide"; conditionalRule.Bool = lfc.Quantity == 0 ? "OR" : "AND"; List <CriteriaItem> checks = Helpers.DeserializeJSON <List <CriteriaItem> >(lfc.CriteriaSet); conditionalRule.Fields = checks.Select(ci => ((IConditionalFormControl)this.FieldControls.Where(fc => fc.MetaField.FieldName == ci.FieldName).First()).TargetId).Distinct().ToArray(); conditionalRule.Checks = checks.Select(ci => new CriteriaItem() { Field = ((IConditionalFormControl)this.FieldControls.Where(fc => fc.MetaField.FieldName == ci.FieldName).First()).TargetId, Condition = ci.Condition, Option = ci.Option }).ToList(); conditionalRules.Add(conditionalRule); } } return(conditionalRules); }
private List <ConditionalRule> BuildConditionalRuleSet() { List <ConditionalRule> conditionalRules = new List <ConditionalRule>(); IControlsContainer cc = FManager.GetForm(this.FormId); List <ControlData> formControls = (List <ControlData>) typeof(PageHelper) .GetMethod("SortControls", BindingFlags.Static | BindingFlags.NonPublic) .Invoke(null, new object[] { new[] { cc }, 1 }); formControls.RemoveAll(fc => fc.ObjectType == "Telerik.Sitefinity.Modules.Forms.Web.UI.Fields.FormSubmitButton, Telerik.Sitefinity" || fc.IsLayoutControl == true); CultureInfo uiCulture = null; if (Config.Get <ResourcesConfig>().Multilingual) { uiCulture = System.Globalization.CultureInfo.CurrentUICulture; } foreach (var fieldControl in formControls) { var fc1 = FManager.LoadControl(fieldControl, uiCulture); IConditionalFormControl lfc = fc1 as IConditionalFormControl; if (lfc != null && lfc.UsesConditionalLogic == true) { ConditionalRule conditionalRule = new ConditionalRule(); conditionalRule.Target = lfc.TargetId; conditionalRule.Action = lfc.Action == 0 ? "Show" : "Hide"; conditionalRule.Bool = lfc.Quantity == 0 ? "OR" : "AND"; List <CriteriaItem> checks = Helpers.DeserializeJSON <List <CriteriaItem> >(lfc.CriteriaSet); conditionalRule.Fields = checks.Select(ci => ((IConditionalFormControl)this.FieldControls.Where(fc => ((SimpleScriptView)fc).ID == ci.FieldId).Single()).TargetId).Distinct().ToArray(); conditionalRule.Checks = checks.Select(ci => new CriteriaItem() { Field = ((IConditionalFormControl)this.FieldControls.Where(fc => ((SimpleScriptView)fc).ID == ci.FieldId).Single()).TargetId, Condition = ci.Condition, Option = ci.Option }).ToList(); conditionalRules.Add(conditionalRule); } } return(conditionalRules); }
protected override void InitializeControls(GenericContainer container) { IFormFieldControl thisControl = base.ParentDesigner.PropertyEditor.Control as IFormFieldControl; FormDraftControl thisControlData = base.ParentDesigner.PropertyEditor.ControlData as FormDraftControl; FormDescription form = FManager.GetFormByName(thisControlData.Form.Name); IControlsContainer cc = GetControlsContainer(form.Id); List <ControlData> formControls = (List <ControlData>) typeof(PageHelper) .GetMethod("SortControls", BindingFlags.Static | BindingFlags.NonPublic) .Invoke(null, new object[] { new[] { cc }, 1 }); formControls.RemoveAll(fc => fc.ObjectType == "Telerik.Sitefinity.Modules.Forms.Web.UI.Fields.FormSubmitButton, Telerik.Sitefinity" || fc.ObjectType == "timw255.Sitefinity.SuperForms.Widgets.Form.LogicalFormInstructionalText, timw255.Sitefinity.SuperForms" || fc.IsLayoutControl == true); if (formControls.Count > 0) { List <CriteriaOption> criteriaOptions = new List <CriteriaOption>(); CultureInfo uiCulture = CultureInfo.GetCultureInfo(this.GetUICulture()); foreach (var formControl in formControls) { FieldControl fieldControl = FManager.LoadControl(formControl, uiCulture) as FieldControl; CriteriaOption co = new CriteriaOption(); if (fieldControl is FormChoiceField) { co.FieldType = "ChoiceField"; co.FieldName = Helpers.GetFieldName(fieldControl); co.FieldId = fieldControl.ID; co.Options = ((FormChoiceField)fieldControl).Choices .Select(c => new SimpleChoiceItem() { Text = c.Text, Value = c.Value }).ToList(); co.Conditions = new List <SimpleChoiceItem>() { new SimpleChoiceItem() { Text = "=", Value = "==" }, new SimpleChoiceItem() { Text = "!=", Value = "!=" } }; } if (fieldControl is TextField) { co.FieldType = "TextField"; co.FieldName = Helpers.GetFieldName(fieldControl); co.FieldId = fieldControl.ID; co.Conditions = new List <SimpleChoiceItem>() { new SimpleChoiceItem() { Text = "=", Value = "==" }, new SimpleChoiceItem() { Text = "!=", Value = "!=" }, new SimpleChoiceItem() { Text = "<", Value = "lt" }, new SimpleChoiceItem() { Text = ">", Value = "gt" } }; } if (!String.IsNullOrWhiteSpace(co.FieldType) && !String.IsNullOrWhiteSpace(co.FieldName) && co.Conditions.Count > 0) { criteriaOptions.Add(co); } } StringBuilder script = new StringBuilder(); script.Append(@"<script>"); script.AppendFormat(@"var currentCultureC = ""{0}"";", this.GetUICulture()); string optionFilter = ""; if (thisControl != null) { optionFilter = ((FieldControl)thisControl).ID;//Helpers.GetFieldName((FieldControl)thisControl); } script.AppendFormat(@"var optionFilter = ""{0}"";", optionFilter); script.AppendFormat(@"var criteriaOptions = {0};", Helpers.SerializeJSON <List <CriteriaOption> >(criteriaOptions)); IConditionalFormControl cfc = ((IConditionalFormControl)base.ParentDesigner.PropertyEditor.Control); string criteriaSet = "[]"; if (cfc != null) { string criteriaSetPropertyValue = cfc.CriteriaSet; if (!String.IsNullOrWhiteSpace(criteriaSetPropertyValue)) { criteriaSet = criteriaSetPropertyValue; } } script.AppendFormat("var criteria = {0};", criteriaSet); script.Append(@"</script>"); Script.Text = script.ToString(); } }