/// <summary> Deserialize Json Field. </summary> public static FormElement DeserializeJsonField(JObject json) { if (json == null) { return(null); } // Serialization JsonSerializer jser = new JsonSerializer(); jser.TypeNameHandling = TypeNameHandling.Auto; FormElement _field = null; FormElementType type = (FormElementType)json.Value <int>("Type"); Type objectType = null; switch (type) { case FormElementType.Calendar: objectType = typeof(Calendar); break; case FormElementType.Checkbox: objectType = typeof(Checkbox); break; case FormElementType.Dropdown: objectType = typeof(Dropdown); break; case FormElementType.Html: objectType = typeof(HtmlElement); break; case FormElementType.Input: objectType = typeof(Input); break; case FormElementType.Radiobutton: objectType = typeof(Radiobutton); break; case FormElementType.Textarea: objectType = typeof(Textarea); break; case FormElementType.Link: objectType = typeof(Link); break; case FormElementType.Label: objectType = typeof(Label); break; case FormElementType.List: objectType = typeof(ListElement); break; default: throw new Exception("Init: Field type is not supported."); } _field = (FormElement)json.ToObject(objectType, jser); return(_field); }
//=== Initialization /// <summary> Inits a new field for the specified type. </summary> /// <param name="languageId"> This is needed for the calender field. </param> public static FormElement InitField(FormElementType Type, int?languageId = null, int?id = null, string label = null, string description = null, bool?required = null, bool applyBasicSettings = false) { switch (Type) { case Enums.FormElementType.Calendar: Calendar c = Calendar.Init(languageId: languageId, id: id, label: label, description: description, required: required); ; if (applyBasicSettings) { c.AdvancedMode = false; c.DefaultDate = "*|DATETIME:NOW|*"; } return(c); case Enums.FormElementType.Checkbox: Checkbox cb = Checkbox.Init(id: id, label: label, description: description); if (applyBasicSettings) { cb.Min = required.GetValueOrDefault() ? 1 : 0; cb.Max = 1; } return(cb); case Enums.FormElementType.Dropdown: Dropdown dd = Dropdown.Init(id: id, label: label, description: description, required: required); if (applyBasicSettings) { dd.Multiple = false; } return(dd); //case Enums.FormElementType.FileUpload: // return FileUpload.Init(id: id, label: label, description: description, required: required); case Enums.FormElementType.Html: HtmlElement html = HtmlElement.Init(id: id, label: label, description: description); if (applyBasicSettings) { html.Editable = true; html.EditorProfile = HtmlElement.EEditorProfile.Basic; html.Required = required.GetValueOrDefault(); } return(html); case Enums.FormElementType.Input: Input input = Input.Init(id: id, label: label, description: description, required: required); if (applyBasicSettings) { input.MaxLength = 255; input.MinLength = 0; } return(input); case Enums.FormElementType.Radiobutton: Radiobutton rb = Radiobutton.Init(id: id, label: label, description: description, required: required); //if (applyBasicSettings) //{ // None available //} return(rb); case Enums.FormElementType.Textarea: Textarea ta = Textarea.Init(id: id, label: label, description: description, required: required); //if (applyBasicSettings) //{ // None available //} return(ta); case Enums.FormElementType.Link: Link link = Link.Init(id: id, label: label, description: description, required: required); //if (applyBasicSettings) //{ // None available //} return(link); case Enums.FormElementType.Label: Label l = Label.Init(id: id, label: label, description: description); //if (applyBasicSettings) //{ // None available //} return(l); case Enums.FormElementType.List: ListElement list = ListElement.Init(id: id, label: label, description: description); //if (applyBasicSettings) //{ // None available //} return(list); default: throw new Exception("Init: Field type is not supported."); // Hidden, Tagging, etc. } }