private void _auth0LVM_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            Auth0Model loginm = sender as Auth0Model;

            if (loginm == null)
            {
                return;
            }
            string propertyName = e.PropertyName;

            if (propertyName == "IsUserLoggedIn")
            {
                if (!loginm.IsUserLoggedIn)
                {
                    if (this._wanServer != null)
                    {
                        this._wanServer.Disconnect();
                    }
                    RadioList.RemoveAllWanRadios();
                    _userSettingsEditor.Clear();
                    _userSettingsServer.Clear();
                    return;
                }
                this._wanConnectARE.Set();
            }
        }
Beispiel #2
0
        public CraftingForm(CraftingModule craftingSystem, PlayerStatus inventory, Form previousForm, IMouse mouse, Engine.IDrawer drawer, IGameScene scene) : base(new Color(100, 200, 255), 300, previousForm, mouse, drawer)
        {
            this.craftingSystem = craftingSystem;
            this.inventory      = inventory;
            Scene = scene;
            controls.Add(new Label(new Vector2(-80, 90), "Rcepies", 30, drawer, mouse));
            allCraftings = new RadioList(new Vector2(-80, 70), 6, drawer, mouse);
            allCraftings.OnSelectionChange += AllCraftings_OnSelectionChange;
            controls.Add(allCraftings);

            controls.Add(new Label(new Vector2(0, 95), "Requirements", 30, drawer, mouse));
            neededItems = new RadioList(new Vector2(0, 75), 2, drawer, mouse, true);
            controls.Add(neededItems);

            controls.Add(new Label(new Vector2(0, 20), "Inventory", 30, drawer, mouse));
            havedItems = new RadioList(new Vector2(0, 0), 4, drawer, mouse, true);
            controls.Add(havedItems);

            controls.Add(new Button(new Vector2(-50, -90), "Craft", 20, CraftItem, drawer, mouse)
            {
                color = new Color(204, 51, 153)
            });
            controls.Add(new Button(new Vector2(-50, -60), "Filter", 20, Filter, drawer, mouse)
            {
                color = new Color(104, 51, 153)
            });
        }
Beispiel #3
0
        protected virtual MvcDynamicForms.Fields.Field GetRadioList(FieldAttributes fieldAttributes, double formWidth, double formHeight, string controlValue)
        {
            var radiolist = new RadioList(fieldAttributes, formWidth, formHeight)
            {
                Value = controlValue
            };

            return(radiolist);
        }
        private void _wanServer_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            WanServer wanServer = sender as WanServer;

            if (wanServer == null)
            {
                return;
            }
            string propertyName = e.PropertyName;

            if (propertyName == "UserSettings")
            {
                WanUserSettings wanUserSettings = (WanUserSettings)wanServer.UserSettings.Clone();
                bool            flag            = false;
                if (string.IsNullOrEmpty(wanUserSettings.FirstName))
                {
                    wanUserSettings.FirstName = this._auth0LVM.GivenName;
                    if (!string.IsNullOrEmpty(wanUserSettings.FirstName))
                    {
                        flag = true;
                    }
                }
                if (string.IsNullOrEmpty(wanUserSettings.LastName))
                {
                    wanUserSettings.LastName = this._auth0LVM.FamilyName;
                    if (!string.IsNullOrEmpty(wanUserSettings.LastName))
                    {
                        flag = true;
                    }
                }
                this.UserSettingsEditor = (WanUserSettings)wanUserSettings.Clone();
                this.UserSettingsServer = (WanUserSettings)wanUserSettings.Clone();
                if (flag)
                {
                    this._wanServer.SendSetUserInfoToServer(this._auth0LVM.GetFreshJwt(), this._userSettingsEditor);
                }
                this.SaveUserTitle = "Save";
            }
            else if (propertyName == "SslClientPublicIp")
            {
                this.ApplicationPublicIp = wanServer.SslClientPublicIp;
            }
            else if (propertyName == "IsConnected")
            {
                this.IsWanServerConnected = wanServer.IsConnected;
                if (!wanServer.IsConnected)
                {
                    RadioList.RemoveAllWanRadios();
                    _wanConnectARE.Set();
                    return;
                }
                this._wanServer.SendRegisterApplicationMessageToServer(API.ProgramName, "Windows", this._auth0LVM.GetFreshJwt());
            }
        }
Beispiel #5
0
        /// <summary>
        /// 选择窗口
        /// </summary>
        /// <param name="tbName">表名,文件名称</param>
        /// <param name="txtId">显示ID的TextBox</param>
        /// <param name="txtName">显示编译值的TextBox</param>
        /// <param name="row">需要显示的列</param>
        /// <param name="selType">1 radio 单选,2 Multi 多选</param>
        public static void OpenChooseForm(string tbName, string[] row, TextBox txtId, TextBox txtName, Const.OpenType selType)
        {
            ChooseData cd = new ChooseData()
            {
                TextId    = txtId,
                TextName  = txtName,
                Row       = row,
                TableName = tbName,
                SelType   = selType
            };

            RadioList rl = new RadioList(cd);

            rl.ShowDialog();
        }
Beispiel #6
0
        /// <summary>
        /// 按数据类型创建查询条件控件并加到页面中
        /// </summary>
        /// <param name="_ReportQueryConditions"></param>
        /// <param name="_ParentControl"></param>
        public void CreateQueryCondition(Control _ParentControl)
        {
            foreach (var _QueryCondition in _ReportQueryConditions)
            {
                //控件外层
                var divItem = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
                if (_QueryCondition.IsFullRow == true)
                {
                    divItem.Attributes["class"] = "item_box_col2";
                }
                else
                {
                    divItem.Attributes["class"] = "item_box_col1";
                }
                //控件标题
                var divSpan = new System.Web.UI.HtmlControls.HtmlGenericControl("span");
                divSpan.InnerText = _QueryCondition.DisplayText;
                divItem.Controls.Add(divSpan);
                //控件
                Control _control = null;
                var     _field   = _entityCache.FindById <SysField>(_QueryCondition.FieldId);
                switch ((DataTypeEnum)_QueryCondition.DataType)
                {
                case DataTypeEnum.pbool:
                    _control = new RadioList();
                    break;

                case DataTypeEnum.pdatetime:
                    _control = new DateTimeControl();
                    break;

                case DataTypeEnum.pdecimal:
                    _control = new TextControl();
                    (_control as TextControl).TextType = TextControl.TextTypes.Decimal;
                    break;

                case DataTypeEnum.penum:
                    _control = new ComboControl();
                    var _enumControl = _control as ComboControl;
                    _enumControl.AutoSelectFirst = true;
                    _enumControl.ShowEmptyItem   = true;
                    foreach (var item in _field.RefEnum.EnumItems)
                    {
                        _enumControl.Items.Add(new ComboItem()
                        {
                            Text = item.DisplayText, Value = item.ItemId.ToString()
                        });
                    }
                    _enumControl.DataBind();
                    break;

                case DataTypeEnum.pfloat:
                    _control = new TextControl();
                    (_control as TextControl).TextType = TextControl.TextTypes.Float;
                    break;

                case DataTypeEnum.pint:
                    _control = new TextControl();
                    (_control as TextControl).TextType = TextControl.TextTypes.Int32;
                    break;

                case DataTypeEnum.plong:
                    _control = new TextControl();
                    (_control as TextControl).TextType = TextControl.TextTypes.Int64;
                    break;

                case DataTypeEnum.pref:
                    _control = new ComboControl();
                    var _refControl = _control as ComboControl;
                    _refControl.AutoSelectFirst = true;
                    var _EntitySchema = Drision.Framework.Manager.IEntitySchemaHelper.Get(_field.RefRelation.ParentEntity.EntityName);
                    var _DataList     = this._DataHelper.FetchAll(_EntitySchema.EntityType);
                    foreach (var item in _DataList)
                    {
                        _refControl.Items.Add(new ComboItem()
                        {
                            Text = _EntitySchema.GetDisplayValue(item), Value = _EntitySchema.GetKeyValue(item).ToString()
                        });
                    }
                    _refControl.ShowEmptyItem = true;
                    break;

                case DataTypeEnum.pstring:
                case DataTypeEnum.ptext:
                    _control = new TextControl();
                    (_control as TextControl).TextType = TextControl.TextTypes.String;
                    break;

                default:
                    //case DataTypeEnum.MultiRef:
                    //case DataTypeEnum.pbinary:
                    //case DataTypeEnum.pfile:
                    //case DataTypeEnum.pkey:
                    //case DataTypeEnum.ppassword:
                    throw new Exception("暂不支持 多引用、二进制、附件、主键、密码等类型的字段作为查询条件!");
                }
                if (_control != null)
                {
                    _control.ID = _QueryCondition.ControlName;
                    (_control as IDrisionControl).FieldName = _QueryCondition.FieldId.ToString();
                    (_control as IDrisionControl).Tag       = _QueryCondition.IsSubQuery == true ? "IsSubQuery" : "";
                }
                divItem.Controls.Add(_control);

                _ParentControl.Controls.Add(divItem);
            }
            //最后加一个cl
            var divcl = new System.Web.UI.HtmlControls.HtmlGenericControl("div");

            divcl.Attributes["class"] = "cl";
            _ParentControl.Controls.Add(divcl);
        }
 public ActionResult Respond(string shortPath)
 {
     var thisForm = _mvcForms.Forms.FirstOrDefault(form => form.ShortPath == shortPath);
     if (thisForm != null)
     {
         ViewData["FormName"] = thisForm.FormName;
         //Only retrieve non-hidden fields
         var formFields =
             _mvcForms.FormFields.Where(formitems => formitems.FormUid == thisForm.Uid & formitems.IsHidden == 0).OrderBy(
                 formitem => formitem.SortOrder);
         //CUSTOM, reference http://mvcdynamicforms.codeplex.com/
         //Using the MVC Dynamic Form project, build a form comprised of fields tied to the form items used by this custom form
         //TODO: Consider switching to conditionally build views using partial views with the KnockOutJS library for custom validation
         if (formFields.Count() > 0)
         {
             var dynamicFormFields = new List<Field>();
             foreach (var formField in formFields)
             {
                 var field = formField;
                 var thisFieldType =
                     _mvcForms.FormFieldTypes.Single(fieldtype => fieldtype.Uid == field.FormFieldTypeUid);
                 switch (thisFieldType.FieldType)
                 {
                     case ("Literal"):
                         dynamicFormFields.Add(new TextBox()
                                                   {
                                                       Key = field.Uid.ToString(),
                                                       Template =
                                                           String.Format("<p>{0}</p>",
                                                                         field.LiteralText.KillHtml()),
                                                       DisplayOrder = field.SortOrder
                                                   });
                         break;
                     case ("TextBox"):
                         dynamicFormFields.Add(new TextBox()
                                                   {
                                                       Key = field.Uid.ToString(),
                                                       ResponseTitle = field.FormFieldName,
                                                       Prompt =
                                                           (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                               ? field.FormFieldPrompt
                                                               : null,
                                                       DisplayOrder = field.SortOrder,
                                                       Required = Convert.ToBoolean(field.IsRequired),
                                                       RequiredMessage =
                                                           Convert.ToBoolean(field.IsRequired)
                                                               ? thisFieldType.ErrorMsgRequired.Replace(
                                                                   "%FormFieldName%", field.FormFieldName)
                                                               : string.Empty,
                                                       RegularExpression =
                                                           (!string.IsNullOrEmpty(thisFieldType.RegExDefault))
                                                               ? thisFieldType.RegExDefault
                                                               : string.Empty,
                                                       RegexMessage =
                                                           (!string.IsNullOrEmpty(thisFieldType.RegExDefault))
                                                               ? thisFieldType.ErrorMsgRegEx.Replace(
                                                                   "%FormFieldName%", field.FormFieldName)
                                                               : string.Empty
                                                   });
                         break;
                     case ("TextArea"):
                         var newTextArea = new TextArea()
                                               {
                                                   Key = field.Uid.ToString(),
                                                   ResponseTitle = field.FormFieldName,
                                                   Prompt =
                                                       (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                           ? field.FormFieldPrompt
                                                           : null,
                                                   DisplayOrder = field.SortOrder,
                                                   Required = Convert.ToBoolean(field.IsRequired),
                                                   RequiredMessage =
                                                       Convert.ToBoolean(field.IsRequired)
                                                           ? thisFieldType.ErrorMsgRequired.Replace(
                                                               "%FormFieldName%", field.FormFieldName)
                                                           : string.Empty,
                                                   RegularExpression =
                                                       (!string.IsNullOrEmpty(thisFieldType.RegExDefault))
                                                           ? thisFieldType.RegExDefault
                                                           : string.Empty,
                                                   RegexMessage =
                                                       (!string.IsNullOrEmpty(thisFieldType.RegExDefault))
                                                           ? thisFieldType.ErrorMsgRegEx.Replace(
                                                               "%FormFieldName%",
                                                               field.FormFieldName)
                                                           : string.Empty
                                               };
                         int number;
                         if (Int32.TryParse(field.Rows.ToString(), out number))
                             newTextArea.InputHtmlAttributes.Add("rows", field.Rows.ToString());
                         if (Int32.TryParse(field.Cols.ToString(), out number))
                             newTextArea.InputHtmlAttributes.Add("cols", field.Cols.ToString());
                         dynamicFormFields.Add(newTextArea);
                         break;
                     case ("SelectList"):
                         var newSelectList = new Select
                                                 {
                                                     Key = field.Uid.ToString(),
                                                     ResponseTitle = field.FormFieldName,
                                                     Prompt =
                                                         (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                             ? field.FormFieldPrompt
                                                             : null,
                                                     DisplayOrder = field.SortOrder,
                                                     Required = Convert.ToBoolean(field.IsRequired),
                                                     RequiredMessage =
                                                         Convert.ToBoolean(field.IsRequired)
                                                             ? thisFieldType.ErrorMsgRequired.Replace(
                                                                 "%FormFieldName%", field.FormFieldName)
                                                             : string.Empty
                                                 };
                         if (Convert.ToBoolean(field.IsMultipleSelect))
                         {
                             newSelectList.MultipleSelection = true;
                             newSelectList.Size = Convert.ToInt32(field.ListSize);
                             newSelectList.CommaDelimitedChoices = field.Options.Replace(Environment.NewLine, ",");
                         }
                         else
                         {
                             newSelectList.ShowEmptyOption = Convert.ToBoolean(field.IsEmptyOption);
                             newSelectList.EmptyOption = (Convert.ToBoolean(field.IsEmptyOption))
                                                             ? field.EmptyOption
                                                             : null;
                             newSelectList.CommaDelimitedChoices = field.Options.Replace(Environment.NewLine, ",");
                         }
                         dynamicFormFields.Add(newSelectList);
                         break;
                     case ("CheckBox"):
                         var newCheckBox = new CheckBox
                                               {
                                                   Key = field.Uid.ToString(),
                                                   ResponseTitle = field.FormFieldName,
                                                   Prompt =
                                                       (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                           ? field.FormFieldPrompt
                                                           : null,
                                                   DisplayOrder = field.SortOrder,
                                                   Required = Convert.ToBoolean(field.IsRequired),
                                                   RequiredMessage =
                                                       Convert.ToBoolean(field.IsRequired)
                                                           ? thisFieldType.ErrorMsgRequired.Replace(
                                                               "%FormFieldName%", field.FormFieldName)
                                                           : string.Empty
                                               };
                         dynamicFormFields.Add(newCheckBox);
                         break;
                     case ("CheckBoxList"):
                         var newCheckBoxList = new CheckBoxList
                                                   {
                                                       Key = field.Uid.ToString(),
                                                       ResponseTitle = field.FormFieldName,
                                                       Prompt =
                                                           (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                               ? field.FormFieldPrompt
                                                               : null,
                                                       DisplayOrder = field.SortOrder,
                                                       Required = Convert.ToBoolean(field.IsRequired),
                                                       RequiredMessage =
                                                           Convert.ToBoolean(field.IsRequired)
                                                               ? thisFieldType.ErrorMsgRequired.Replace(
                                                                   "%FormFieldName%", field.FormFieldName)
                                                               : string.Empty,
                                                       CommaDelimitedChoices = field.Options.Replace(Environment.NewLine, ","),
                                                       Orientation = (field.Orientation == "vertical") ? Orientation.Vertical : Orientation.Horizontal
                                                   };
                         dynamicFormFields.Add(newCheckBoxList);
                         break;
                     case ("RadioList"):
                         var newRadioList = new RadioList
                                                   {
                                                       Key = field.Uid.ToString(),
                                                       ResponseTitle = field.FormFieldName,
                                                       Prompt =
                                                           (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                               ? field.FormFieldPrompt
                                                               : null,
                                                       DisplayOrder = field.SortOrder,
                                                       Required = Convert.ToBoolean(field.IsRequired),
                                                       RequiredMessage =
                                                           Convert.ToBoolean(field.IsRequired)
                                                               ? thisFieldType.ErrorMsgRequired.Replace(
                                                                   "%FormFieldName%", field.FormFieldName)
                                                               : string.Empty,
                                                       CommaDelimitedChoices = field.Options.Replace(Environment.NewLine, ","),
                                                       Orientation = (field.Orientation == "vertical") ? Orientation.Vertical : Orientation.Horizontal
                                                   };
                         dynamicFormFields.Add(newRadioList);
                         break;
                     case ("FileUpload"):
                         var newFileUpload = new FileUpload
                                                 {
                                                     Key = field.Uid.ToString(),
                                                     ResponseTitle = field.FormFieldName,
                                                     Prompt =
                                                         (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                             ? field.FormFieldPrompt
                                                             : null,
                                                     InvalidExtensionError = field.ErrorExtensions,
                                                     Required = Convert.ToBoolean(field.IsRequired),
                                                     RequiredMessage =
                                                         Convert.ToBoolean(field.IsRequired)
                                                             ? thisFieldType.ErrorMsgRequired.Replace(
                                                                 "%FormFieldName%", field.FormFieldName)
                                                             : string.Empty,
                                                     DisplayOrder = field.SortOrder,
                                                 };
                         if (!string.IsNullOrEmpty(field.ValidExtensions))
                             newFileUpload.ValidExtensions = "." +
                                                             field.ValidExtensions.Replace(Environment.NewLine,
                                                                                           ",.");
                         var user = Membership.GetUser(User.Identity.Name);
                         UserKey = user.ProviderUserKey.ToString();
                         newFileUpload.Validated += FileValidated;
                         newFileUpload.Posted += FilePosted;
                         dynamicFormFields.Add(newFileUpload);
                         break;
                 }
             }
             var dynamicForm = new MvcDynamicForms.Form();
             dynamicForm.AddFields(dynamicFormFields.ToArray());
             dynamicForm.Serialize = true;
             ViewData["FormUid"] = thisForm.Uid;
             return View(dynamicForm);
         }
     }
     return RedirectToAction("Index", "Home");
 }
        public ActionResult Respond(string shortPath)
        {
            var thisForm = _mvcForms.Forms.FirstOrDefault(form => form.ShortPath == shortPath);

            if (thisForm != null)
            {
                ViewData["FormName"] = thisForm.FormName;
                //Only retrieve non-hidden fields
                var formFields =
                    _mvcForms.FormFields.Where(formitems => formitems.FormUid == thisForm.Uid & formitems.IsHidden == 0).OrderBy(
                        formitem => formitem.SortOrder);
                //CUSTOM, reference http://mvcdynamicforms.codeplex.com/
                //Using the MVC Dynamic Form project, build a form comprised of fields tied to the form items used by this custom form
                //TODO: Consider switching to conditionally build views using partial views with the KnockOutJS library for custom validation
                if (formFields.Count() > 0)
                {
                    var dynamicFormFields = new List <Field>();
                    foreach (var formField in formFields)
                    {
                        var field         = formField;
                        var thisFieldType =
                            _mvcForms.FormFieldTypes.Single(fieldtype => fieldtype.Uid == field.FormFieldTypeUid);
                        switch (thisFieldType.FieldType)
                        {
                        case ("Literal"):
                            dynamicFormFields.Add(new TextBox()
                            {
                                Key      = field.Uid.ToString(),
                                Template =
                                    String.Format("<p>{0}</p>",
                                                  field.LiteralText.KillHtml()),
                                DisplayOrder = field.SortOrder
                            });
                            break;

                        case ("TextBox"):
                            dynamicFormFields.Add(new TextBox()
                            {
                                Key           = field.Uid.ToString(),
                                ResponseTitle = field.FormFieldName,
                                Prompt        =
                                    (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                                      ? field.FormFieldPrompt
                                                                      : null,
                                DisplayOrder    = field.SortOrder,
                                Required        = Convert.ToBoolean(field.IsRequired),
                                RequiredMessage =
                                    Convert.ToBoolean(field.IsRequired)
                                                                      ? thisFieldType.ErrorMsgRequired.Replace(
                                        "%FormFieldName%", field.FormFieldName)
                                                                      : string.Empty,
                                RegularExpression =
                                    (!string.IsNullOrEmpty(thisFieldType.RegExDefault))
                                                                      ? thisFieldType.RegExDefault
                                                                      : string.Empty,
                                RegexMessage =
                                    (!string.IsNullOrEmpty(thisFieldType.RegExDefault))
                                                                      ? thisFieldType.ErrorMsgRegEx.Replace(
                                        "%FormFieldName%", field.FormFieldName)
                                                                      : string.Empty
                            });
                            break;

                        case ("TextArea"):
                            var newTextArea = new TextArea()
                            {
                                Key           = field.Uid.ToString(),
                                ResponseTitle = field.FormFieldName,
                                Prompt        =
                                    (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                                  ? field.FormFieldPrompt
                                                                  : null,
                                DisplayOrder    = field.SortOrder,
                                Required        = Convert.ToBoolean(field.IsRequired),
                                RequiredMessage =
                                    Convert.ToBoolean(field.IsRequired)
                                                                  ? thisFieldType.ErrorMsgRequired.Replace(
                                        "%FormFieldName%", field.FormFieldName)
                                                                  : string.Empty,
                                RegularExpression =
                                    (!string.IsNullOrEmpty(thisFieldType.RegExDefault))
                                                                  ? thisFieldType.RegExDefault
                                                                  : string.Empty,
                                RegexMessage =
                                    (!string.IsNullOrEmpty(thisFieldType.RegExDefault))
                                                                  ? thisFieldType.ErrorMsgRegEx.Replace(
                                        "%FormFieldName%",
                                        field.FormFieldName)
                                                                  : string.Empty
                            };
                            int number;
                            if (Int32.TryParse(field.Rows.ToString(), out number))
                            {
                                newTextArea.InputHtmlAttributes.Add("rows", field.Rows.ToString());
                            }
                            if (Int32.TryParse(field.Cols.ToString(), out number))
                            {
                                newTextArea.InputHtmlAttributes.Add("cols", field.Cols.ToString());
                            }
                            dynamicFormFields.Add(newTextArea);
                            break;

                        case ("SelectList"):
                            var newSelectList = new Select
                            {
                                Key           = field.Uid.ToString(),
                                ResponseTitle = field.FormFieldName,
                                Prompt        =
                                    (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                                    ? field.FormFieldPrompt
                                                                    : null,
                                DisplayOrder    = field.SortOrder,
                                Required        = Convert.ToBoolean(field.IsRequired),
                                RequiredMessage =
                                    Convert.ToBoolean(field.IsRequired)
                                                                    ? thisFieldType.ErrorMsgRequired.Replace(
                                        "%FormFieldName%", field.FormFieldName)
                                                                    : string.Empty
                            };
                            if (Convert.ToBoolean(field.IsMultipleSelect))
                            {
                                newSelectList.MultipleSelection = true;
                                newSelectList.Size = Convert.ToInt32(field.ListSize);
                                newSelectList.CommaDelimitedChoices = field.Options.Replace(Environment.NewLine, ",");
                            }
                            else
                            {
                                newSelectList.ShowEmptyOption = Convert.ToBoolean(field.IsEmptyOption);
                                newSelectList.EmptyOption     = (Convert.ToBoolean(field.IsEmptyOption))
                                                                    ? field.EmptyOption
                                                                    : null;
                                newSelectList.CommaDelimitedChoices = field.Options.Replace(Environment.NewLine, ",");
                            }
                            dynamicFormFields.Add(newSelectList);
                            break;

                        case ("CheckBox"):
                            var newCheckBox = new CheckBox
                            {
                                Key           = field.Uid.ToString(),
                                ResponseTitle = field.FormFieldName,
                                Prompt        =
                                    (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                                  ? field.FormFieldPrompt
                                                                  : null,
                                DisplayOrder    = field.SortOrder,
                                Required        = Convert.ToBoolean(field.IsRequired),
                                RequiredMessage =
                                    Convert.ToBoolean(field.IsRequired)
                                                                  ? thisFieldType.ErrorMsgRequired.Replace(
                                        "%FormFieldName%", field.FormFieldName)
                                                                  : string.Empty
                            };
                            dynamicFormFields.Add(newCheckBox);
                            break;

                        case ("CheckBoxList"):
                            var newCheckBoxList = new CheckBoxList
                            {
                                Key           = field.Uid.ToString(),
                                ResponseTitle = field.FormFieldName,
                                Prompt        =
                                    (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                                      ? field.FormFieldPrompt
                                                                      : null,
                                DisplayOrder    = field.SortOrder,
                                Required        = Convert.ToBoolean(field.IsRequired),
                                RequiredMessage =
                                    Convert.ToBoolean(field.IsRequired)
                                                                      ? thisFieldType.ErrorMsgRequired.Replace(
                                        "%FormFieldName%", field.FormFieldName)
                                                                      : string.Empty,
                                CommaDelimitedChoices = field.Options.Replace(Environment.NewLine, ","),
                                Orientation           = (field.Orientation == "vertical") ? Orientation.Vertical : Orientation.Horizontal
                            };
                            dynamicFormFields.Add(newCheckBoxList);
                            break;

                        case ("RadioList"):
                            var newRadioList = new RadioList
                            {
                                Key           = field.Uid.ToString(),
                                ResponseTitle = field.FormFieldName,
                                Prompt        =
                                    (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                                      ? field.FormFieldPrompt
                                                                      : null,
                                DisplayOrder    = field.SortOrder,
                                Required        = Convert.ToBoolean(field.IsRequired),
                                RequiredMessage =
                                    Convert.ToBoolean(field.IsRequired)
                                                                      ? thisFieldType.ErrorMsgRequired.Replace(
                                        "%FormFieldName%", field.FormFieldName)
                                                                      : string.Empty,
                                CommaDelimitedChoices = field.Options.Replace(Environment.NewLine, ","),
                                Orientation           = (field.Orientation == "vertical") ? Orientation.Vertical : Orientation.Horizontal
                            };
                            dynamicFormFields.Add(newRadioList);
                            break;

                        case ("FileUpload"):
                            var newFileUpload = new FileUpload
                            {
                                Key           = field.Uid.ToString(),
                                ResponseTitle = field.FormFieldName,
                                Prompt        =
                                    (!string.IsNullOrEmpty(field.FormFieldPrompt))
                                                                    ? field.FormFieldPrompt
                                                                    : null,
                                InvalidExtensionError = field.ErrorExtensions,
                                Required        = Convert.ToBoolean(field.IsRequired),
                                RequiredMessage =
                                    Convert.ToBoolean(field.IsRequired)
                                                                    ? thisFieldType.ErrorMsgRequired.Replace(
                                        "%FormFieldName%", field.FormFieldName)
                                                                    : string.Empty,
                                DisplayOrder = field.SortOrder,
                            };
                            if (!string.IsNullOrEmpty(field.ValidExtensions))
                            {
                                newFileUpload.ValidExtensions = "." +
                                                                field.ValidExtensions.Replace(Environment.NewLine,
                                                                                              ",.");
                            }
                            var user = Membership.GetUser(User.Identity.Name);
                            UserKey = user.ProviderUserKey.ToString();
                            newFileUpload.Validated += FileValidated;
                            newFileUpload.Posted    += FilePosted;
                            dynamicFormFields.Add(newFileUpload);
                            break;
                        }
                    }
                    var dynamicForm = new MvcDynamicForms.Form();
                    dynamicForm.AddFields(dynamicFormFields.ToArray());
                    dynamicForm.Serialize = true;
                    ViewData["FormUid"]   = thisForm.Uid;
                    return(View(dynamicForm));
                }
            }
            return(RedirectToAction("Index", "Home"));
        }
Beispiel #9
0
        public static Form GetForm()
        {
            /*
             * This method sets up the Form and Field objects that
             * are needed to dynamically generate html forms at runtime.
             *
             * Of course, there are other ways of going about defining your forms and their fields.
             * I used a static class in this demo application for simplicity.
             * In the real world, you could store your field definitions anywhere.
             *
             * For example, you could create a database table to store all
             * of the data needed to create the form fields below.
             * Some of your end users could have access to some kind of interface to create, update,
             * or delete the form field definitions in the database.
             * This described scenario was actually the inspiration for this project.
             *
             * There are 7 different Field types that can be used to construct the form:
             *  - TextBox (single line text input)
             *  - Textarea (multi line text input)
             *  - Checkbox
             *  - CheckboxList
             *  - RadioList
             *  - Select (Drop down lists and List boxes)
             *  - Literal (Any custom html at all. For display purposes only (no user input))
             *
             * Each Field type have a few things in common:
             *  - Title property: Used when storing end user's responses.
             *  - Prompt property: Question asked to the user for each field.
             *  - DisplayOrder property: The order that the field is displayed to the user.
             *  - Required property: Is the user required to complete the field?
             *  - InputHtmlAttributes: Allows the developer to set the input elements html attributes
             *
             * There are other properties and behaviors that some Field types do not share with each other.
             * Take a look through the members of each Type to see what you can do.
             * Much of each type's unique functionality is demonstrated below.
             * Feel free to tinker around in this file, changing and adding fields.
             * Don't forget to add newly created fields to the Form.
             *
             * The Form object is the object that contains all of your Field objects,
             * triggers validation and rendering, and lets the developer access user responses.
             * When constructing your form, you can use Form.AddFields() to get your Fields
             * into the form (imagine that!).
             *
             * Check out
             *    /Controllers/HomeController.cs
             *    /Views/Home/Demo.cshtml
             *    /Views/Home/Responses.cshtml
             * to learn how to use the Form object in your web application.
             */

            // create fields
            var description = new Literal
            {
                Key          = "description",
                Template     = String.Format("<p>{0}</p>", PlaceHolders.Literal),
                DisplayOrder = 10,
                Html         =
                    "This is a dynamically generated form. All of the input fields on this form are generated at runtime."
            };

            var name = new TextBox
            {
                ResponseTitle   = "Name",
                Prompt          = "Enter your full name:",
                DisplayOrder    = 20,
                Required        = true,
                RequiredMessage = "Your full name is required",
            };

            var gender = new RadioList
            {
                DisplayOrder  = 30,
                ResponseTitle = "Gender",
                Prompt        = "Select your gender:",
                Required      = true,
                Orientation   = Orientation.Vertical
            };

            gender.AddChoices("Male,Female", ",");

            var email = new TextBox
            {
                DisplayOrder      = 25,
                ResponseTitle     = "Email Address",
                Prompt            = "Enter your email address:",
                Required          = true,
                RegexMessage      = "Must be a valid email address",
                RegularExpression =
                    @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
            };

            var sports = new CheckBoxList
            {
                DisplayOrder  = 40,
                ResponseTitle = "Favorite Sports",
                Prompt        = "What are your favorite sports?",
                Orientation   = Orientation.Horizontal
            };

            sports.AddChoices("Baseball,Football,Soccer,Basketball,Tennis,Boxing,Golf", ",");

            var states = new Select
            {
                DisplayOrder      = 50,
                ResponseTitle     = "Visited States",
                MultipleSelection = true,
                Size   = 10,
                Prompt = "What US states have you visited? (Use the ctrl key to select multiple states.)"
            };

            states.AddChoices(
                "Alabama,Alaska,Arizona,Arkansas,California,Colorado,Connecticut,Delaware,Florida,Georgia,Hawaii,Idaho,Illinois,Indiana,Iowa,Kansas,Kentucky,Louisiana,Maine,Maryland,Massachusetts,Michigan,Minnesota,Mississippi,Missouri,Montana,Nebraska,Nevada,New Hampshire,New Jersey,New Mexico,New York,North Carolina,North Dakota,Ohio,Oklahoma,Oregon,Pennsylvania,Rhode Island,South Carolina,South Dakota,Tennessee,Texas,Utah,Vermont,Virginia,Washington,West Virginia,Wisconsin,Wyoming",
                ",");

            var bio = new TextArea
            {
                DisplayOrder  = 60,
                ResponseTitle = "Bio",
                Prompt        = "Describe yourself:"
            };

            bio.InputHtmlAttributes.Add("cols", "40");
            bio.InputHtmlAttributes.Add("rows", "6");

            var month = new Select
            {
                DisplayOrder    = 70,
                ResponseTitle   = "Month Born",
                Prompt          = "What month were you born in?",
                ShowEmptyOption = true,
                EmptyOption     = "- Select One - "
            };

            month.AddChoices("January,February,March,April,May,June,July,August,September,October,November,December",
                             ",");

            var agree = new CheckBox
            {
                DisplayOrder    = 80,
                ResponseTitle   = "Agrees To Terms",
                Prompt          = "I agree to all of the terms in the EULA.",
                Required        = true,
                RequiredMessage = "You must agree to the EULA!"
            };

            var eula = new Literal
            {
                DisplayOrder = 75,
                Html         =
                    string.Format(@"<textarea readonly=""readonly"" rows=""8"" cols=""60"">{0}</textarea>", GetEULA())
            };

            var file = new FileUpload
            {
                Prompt = "Your photo",
                InvalidExtensionError = "Image files only.",
                ValidExtensions       = ".jpg,.gif,.png",
                Required     = true,
                DisplayOrder = 73,
                UseMultiple  = true
            };

            file.Validated += new ValidatedEventHandler(file_Validated);
            file.Posted    += new FilePostedEventHandler(file_Posted);

            var hidden = new Hidden
            {
                ResponseTitle = "A Hidden Field",
                Value         = "some value"
            };

            // create form and add fields to it
            var form = new Form();

            form.AddFields(description, name, gender, email, sports, states, bio, month, agree, eula, file, hidden);

            return(form);
        }