Exemplo n.º 1
0
 public ActionResult Create()
 {
     var viewModel = new FormViewModel();
     var newField = new FormFieldViewModel {FormFieldTypes = GetFormFieldTypes()};
     viewModel.FormFields.Add(newField);
     return View(viewModel);
 }
Exemplo n.º 2
0
 public ActionResult Create(FormViewModel viewModel)
 {
     //TODO: With the complexity of what we're sending back in the viewModel, the ModelState.IsValid breaks down ... need to re-evaluate
     //if (ModelState.IsValid)
     //{
         var user = Membership.GetUser(User.Identity.Name);
         var newForm = _mvcForms.Forms.CreateObject();
         newForm.Uid = Guid.NewGuid();
         newForm.UserId = (Guid)user.ProviderUserKey;
         newForm.ShortPath = RandomString(5);
         newForm.FormName = viewModel.Form.FormName;
         newForm.Timestamp = DateTime.Now;
         _mvcForms.AddToForms(newForm);
         var sortOrder = 1;
         foreach (var formField in viewModel.FormFields)
         {
             var thisField = formField;
             var thisFormFieldUid = new Guid(formField.SelectedFormFieldType);
             var newFormField = _mvcForms.FormFields.CreateObject();
             newFormField.FormUid = newForm.Uid;
             newFormField.Uid = Guid.NewGuid();
             newFormField.FormFieldTypeUid = thisFormFieldUid;
             newFormField.FormFieldName = AntiXss.GetSafeHtmlFragment(thisField.FormFieldName.PreserveBreaks()).KillHtml().RestoreBreaks();
             newFormField.FormFieldPrompt = AntiXss.GetSafeHtmlFragment(thisField.FormFieldPrompt.PreserveBreaks()).KillHtml().RestoreBreaks();
             newFormField.IsHidden = 0;
             newFormField.IsRequired = Convert.ToByte(thisField.IsRequired);
             newFormField.SortOrder = sortOrder++;
             newFormField.Timestamp = DateTime.Now;
             //TODO: Not sure if this is per field type, but it shouldn't matter if validation works and nulls don't matter
             newFormField.Options = AntiXss.GetSafeHtmlFragment(thisField.Options.PreserveBreaks()).KillHtml().RestoreBreaks();
             newFormField.Orientation = thisField.Orientation;
             newFormField.IsMultipleSelect = Convert.ToByte(thisField.IsMultipleSelect);
             newFormField.ListSize = thisField.ListSize;
             newFormField.IsEmptyOption = Convert.ToByte(thisField.IsEmptyOption);
             newFormField.EmptyOption = thisField.EmptyOption;
             newFormField.Rows = thisField.Rows;
             newFormField.Cols = thisField.Cols;
             newFormField.ValidExtensions = AntiXss.GetSafeHtmlFragment(thisField.ValidExtensions.PreserveBreaks()).KillHtml().RestoreBreaks();
             newFormField.ErrorExtensions = AntiXss.GetSafeHtmlFragment(thisField.ErrorExtensions.PreserveBreaks()).KillHtml().RestoreBreaks();
             newFormField.MaxSizeBytes = thisField.MaxSizeBytes;
             newFormField.LiteralText = AntiXss.GetSafeHtml(thisField.LiteralText);
             _mvcForms.AddToFormFields(newFormField);
         }
         _mvcForms.SaveChanges();
         return RedirectToAction("List", new { Message = "created" });
     //}
     //Rebuild the select lists then return on invalid model state
     foreach (var formField in viewModel.FormFields)
     {
         formField.FormFieldTypes = GetFormFieldTypes();
     }
     return View(viewModel);
 }
Exemplo n.º 3
0
 public ActionResult Edit(Guid id)
 {
     var viewModel = new FormViewModel { Form = _mvcForms.Forms.Single(form => form.Uid == id) };
     var formFields = _mvcForms.FormFields.Where(items => items.FormUid == id && items.IsHidden == 0).OrderBy(items => items.SortOrder);
     if (formFields.Count() > 0)
     {
         var countFields = 1;
         var listFields = String.Empty;
         foreach (var formField in formFields)
         {
             var thisField = formField;
             var thisFieldType =
                 _mvcForms.FormFieldTypes.Single(fieldtype => fieldtype.Uid == thisField.FormFieldTypeUid);
             var editFormField = new FormFieldViewModel
             {
                 Uid = formField.Uid,
                 FormFieldName = formField.FormFieldName,
                 FormFieldPrompt = formField.FormFieldPrompt,
                 ControlType = thisFieldType.ControlType,
                 SelectedFormFieldType = thisFieldType.Uid.ToString(),
                 IsRequired = Convert.ToBoolean(formField.IsRequired),
                 ShowDelete = (countFields > 1) ? true : false,
                 FormFieldTypes = GetFormFieldTypes(),
                 //TODO: Not sure if this is per field type, but it shouldn't matter
                 Options = formField.Options,
                 Orientation = formField.Orientation,
                 IsMultipleSelect = Convert.ToBoolean(formField.IsMultipleSelect),
                 ListSize = formField.ListSize,
                 IsEmptyOption = Convert.ToBoolean(formField.IsEmptyOption),
                 EmptyOption = formField.EmptyOption,
                 Rows = formField.Rows,
                 Cols = formField.Cols,
                 ValidExtensions = formField.ValidExtensions,
                 ErrorExtensions = formField.ErrorExtensions,
                 MaxSizeBytes = formField.MaxSizeBytes,
                 LiteralText = formField.LiteralText
             };
             viewModel.FormFields.Add(editFormField);
             listFields += "," + thisField.Uid;
             countFields++;
         }
         ViewData["ListFields"] = listFields.Substring(1); //Starts at 0; remove the first ','
     }
     else
     {
         var createFormField = new FormFieldViewModel
         {
             Uid = Guid.NewGuid(),
             ShowDelete = false,
             FormFieldTypes = GetFormFieldTypes()
         };
         viewModel.FormFields.Add(createFormField);
     }
     return View(viewModel);
 }
Exemplo n.º 4
0
 public ActionResult Edit(FormViewModel viewModel)
 {
     //TODO: With the complexity of what we're sending back in the viewModel, the ModelState.IsValid breaks down ... need to re-evaluate
     //if (ModelState.IsValid)
     //{
         var thisFormUid = new Guid(Request["Form.Uid"]);
         var editForm = _mvcForms.Forms.Single(form => form.Uid == thisFormUid);
         ViewData["FormName"] = editForm.FormName;
         editForm.FormName = viewModel.Form.FormName;
         if (!string.IsNullOrEmpty(Request["ListFields"]))
         {
             var listFields = Request["ListFields"].Split(',');
             foreach (var listField in listFields)
             {
                 var listFieldUid = new Guid(listField);
                 if (viewModel.FormFields.Where(fields => fields.Uid == listFieldUid).Count() == 0)
                     _mvcForms.FormFields.Single(field => field.Uid == listFieldUid).IsHidden = 1;
             }
         }
         var sortOrder = 1;
         foreach (var formField in viewModel.FormFields)
         {
             var thisField = formField;
             //Determine if this is an existing form item or not
             var oldFormField = _mvcForms.FormFields.FirstOrDefault(item => item.Uid == thisField.Uid);
             if (oldFormField != null)
             {
                 //For fields where AntiXss is helpful but we still need to preserve linebreaks and not include HTML/BODY tags, use this hack
                 oldFormField.FormFieldName = AntiXss.GetSafeHtmlFragment(thisField.FormFieldName.PreserveBreaks()).KillHtml().RestoreBreaks();
                 oldFormField.FormFieldPrompt = AntiXss.GetSafeHtmlFragment(thisField.FormFieldPrompt.PreserveBreaks()).KillHtml().RestoreBreaks();
                 oldFormField.IsRequired = Convert.ToByte(thisField.IsRequired);
                 oldFormField.SortOrder = sortOrder++;
                 //TODO: Not sure if this is per field type, but it shouldn't matter if validation works and nulls don't matter
                 oldFormField.Options = AntiXss.GetSafeHtmlFragment(thisField.Options.PreserveBreaks()).KillHtml().RestoreBreaks();
                 oldFormField.Orientation = thisField.Orientation;
                 oldFormField.IsMultipleSelect = Convert.ToByte(thisField.IsMultipleSelect);
                 oldFormField.ListSize = thisField.ListSize;
                 oldFormField.IsEmptyOption = Convert.ToByte(thisField.IsEmptyOption);
                 oldFormField.EmptyOption = thisField.EmptyOption;
                 oldFormField.Rows = thisField.Rows;
                 oldFormField.Cols = thisField.Cols;
                 oldFormField.ValidExtensions = AntiXss.GetSafeHtmlFragment(thisField.ValidExtensions.PreserveBreaks()).KillHtml().RestoreBreaks();
                 oldFormField.ErrorExtensions = AntiXss.GetSafeHtmlFragment(thisField.ErrorExtensions.PreserveBreaks()).KillHtml().RestoreBreaks();
                 oldFormField.MaxSizeBytes = thisField.MaxSizeBytes;
                 oldFormField.LiteralText = AntiXss.GetSafeHtml(thisField.LiteralText);
             }
             else
             {
                 var thisFormFieldUid = new Guid(formField.SelectedFormFieldType);
                 var newFormField = _mvcForms.FormFields.CreateObject();
                 newFormField.FormUid = thisFormUid;
                 newFormField.Uid = Guid.NewGuid();
                 newFormField.FormFieldTypeUid = thisFormFieldUid;
                 newFormField.FormFieldName = AntiXss.GetSafeHtmlFragment(thisField.FormFieldName.PreserveBreaks()).KillHtml().RestoreBreaks();
                 newFormField.FormFieldPrompt = AntiXss.GetSafeHtmlFragment(thisField.FormFieldPrompt.PreserveBreaks()).KillHtml().RestoreBreaks();
                 newFormField.IsHidden = 0;
                 newFormField.IsRequired = Convert.ToByte(thisField.IsRequired);
                 newFormField.SortOrder = sortOrder++;
                 newFormField.Timestamp = DateTime.Now;
                 //TODO: Not sure if this is per field type, but it shouldn't matter if validation works and nulls don't matter
                 newFormField.Options = AntiXss.GetSafeHtmlFragment(thisField.Options.PreserveBreaks()).KillHtml().RestoreBreaks();
                 newFormField.Orientation = thisField.Orientation;
                 newFormField.IsMultipleSelect = Convert.ToByte(thisField.IsMultipleSelect);
                 newFormField.ListSize = thisField.ListSize;
                 newFormField.IsEmptyOption = Convert.ToByte(thisField.IsEmptyOption);
                 newFormField.EmptyOption = thisField.EmptyOption;
                 newFormField.Rows = thisField.Rows;
                 newFormField.Cols = thisField.Cols;
                 newFormField.ValidExtensions = AntiXss.GetSafeHtmlFragment(thisField.ValidExtensions.PreserveBreaks()).KillHtml().RestoreBreaks();
                 newFormField.ErrorExtensions = AntiXss.GetSafeHtmlFragment(thisField.ErrorExtensions.PreserveBreaks()).KillHtml().RestoreBreaks();
                 newFormField.MaxSizeBytes = thisField.MaxSizeBytes;
                 newFormField.LiteralText = AntiXss.GetSafeHtml(thisField.LiteralText);
                 _mvcForms.AddToFormFields(newFormField);
             }
         }
         _mvcForms.SaveChanges();
         return RedirectToAction("List", new { Message = "updated" });
     //}
     //Rebuild the drop-down lists since they're not in the postback
     foreach (var formField in viewModel.FormFields)
     {
         formField.FormFieldTypes = GetFormFieldTypes();
     }
     return View(viewModel);
 }