예제 #1
0
        /// <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);
        }
예제 #2
0
        //=== 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.
            }
        }