Пример #1
0
        private Button BuildButton(string buttonText, int position, string clientId)
        {
            Button btn = new Button();

            btn.ID               = String.Format("btn{0}_{1}", buttonText.Substring(0, buttonText.Length > 4 ? 4 : buttonText.Length), position.ToString());
            btn.Text             = btn.CommandName = buttonText;
            btn.CommandArgument  = clientId;
            btn.CausesValidation = true;
            if (buttonText.ToLower() == "previous")
            {
                btn.CausesValidation = false;
            }
            else
            {
                btn.ValidationGroup = FormBuilder_Module.GetValidationGroup(this.ModuleId);
            }
            btn.Click += new EventHandler(LoadPage);

            return(btn);
        }
Пример #2
0
        private void SaveIncrementalFormData()
        {
            FormBuilderDataContext dc   = new FormBuilderDataContext();
            FormBuilder_Module     form = (from m in dc.FormBuilder_Modules
                                           where m.ModuleId == this.ModuleId
                                           select m).Single();

            //save the form object.
            FormBuilder_Response formResponse = (from r in dc.FormBuilder_Responses
                                                 where r.Id == ResponseId
                                                 select r).FirstOrDefault();

            if (formResponse == null)
            {
                formResponse = new FormBuilder_Response();
                dc.FormBuilder_Responses.InsertOnSubmit(formResponse);
                formResponse.ModuleId  = this.ModuleId;
                formResponse.CreatedBy = this.Page.User.Identity.Name;
                formResponse.CreatedOn = DateTime.Now;
                formResponse.IPAddress = this.Page.Request.UserHostAddress;

                dc.SubmitChanges();
                ResponseId = formResponse.Id;
            }

            //save input for each form field.
            foreach (FormBuilder_Field f in _fields_controls.Keys)
            {
                FormBuilder_FieldInput fieldInput = (from fi in dc.FormBuilder_FieldInputs
                                                     where fi.ResponseId == ResponseId
                                                     where fi.FieldId == f.Id
                                                     select fi).FirstOrDefault();
                if (fieldInput == null)
                {
                    fieldInput = new FormBuilder_FieldInput();
                    dc.FormBuilder_FieldInputs.InsertOnSubmit(fieldInput);
                }

                fieldInput.ResponseId = formResponse.Id;
                fieldInput.FieldId    = f.Id;
                if (f.Type == (int)FormBuilder_Field.FieldType.FileUpload)
                {
                    WebControl fi;
                    _fields_controls.TryGetValue(f, out fi);

                    if (((FileUpload)fi).HasFile)
                    {
                        var fiUploadFile = new FileInfo(((FileUpload)fi).FileName);
                        var sFileName    = fiUploadFile.Name.Substring(0, fiUploadFile.Name.LastIndexOf("."))
                                           + "_" + Guid.NewGuid() + fiUploadFile.Extension;
                        var uploadPath = this.MapPath(ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"]) +
                                         "\\" + sFileName;
                        ((FileUpload)fi).SaveAs(uploadPath);
                        fieldInput.InputValue = ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"] + "\\" + sFileName;
                    }
                }
                else
                {
                    fieldInput.SetInputValueFromControlValue(_fields_controls[f]);
                }

                dc.SubmitChanges();
            }
        }
Пример #3
0
        //create controls *before* viewstate is restored.
        //ASP.NET restores the viewstate tree based on the control tree. As long as
        //we re-create the control tree identically on each postback, the viewstate
        //will get restored automatically.
        //see http://geekswithblogs.net/FrostRed/archive/2007/02/17/106547.aspx
        protected override void OnInit(EventArgs e)
        {
            FormBuilderDataContext dc       = new FormBuilderDataContext();
            FormBuilder_Module     settings = (from m in dc.FormBuilder_Modules
                                               where m.ModuleId == this.ModuleId
                                               select m).Single();


            List <FormBuilder_Field> lFields       = settings.FormBuilder_Fields.OrderBy(x => x.SortOrder).ToList();
            IList <Panel>            pnlCollection = GetPanelControls(lFields);

            if (pnlCollection != null && pnlCollection.Count > 0)
            {
                #region Form Page Creation
                int pnlCount = pnlCollection.Count;
                if (pnlCount >= 1)
                {
                    for (int i = 0; i < pnlCount; i++)
                    {
                        string sortOrder = String.Empty;
                        string clientId  = String.Empty;
                        try
                        {
                            if (pnlCollection[i + 1] != null)
                            {
                                sortOrder = pnlCollection[i + 1].Attributes["SortOrder"];
                                clientId  = pnlCollection[i + 1].ID;
                            }
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            sortOrder = (lFields[lFields.Count - 1].SortOrder + 1).ToString();
                        }

                        FormBuilderResponseValidationSummary.ValidationGroup = FormBuilder_Module.GetValidationGroup(this.ModuleId);

                        List <FormBuilder_Field> childCollection = GetChildCollection(lFields, pnlCollection[i].Attributes["SortOrder"], sortOrder);
                        foreach (FormBuilder_Field f in childCollection)
                        {
                            FormBuilderFieldInput_display ctl = (FormBuilderFieldInput_display)this.LoadControl("FormBuilderFieldInput_display.ascx");
                            if (ctl != null)
                            {
                                ctl.StyleName = settings.StyleName;
                            }
                            FieldInputList.Controls.Add(pnlCollection[i]);
                            pnlCollection[i].Controls.Add(ctl);

                            _fields_controls.Add(f, ctl.LoadField(f));
                        }

                        Button btnNext = BuildButton("Next", i, clientId);
                        Button btnPrev = BuildButton("Previous", i, (i - 1) > 0 ? pnlCollection[i - 1].ID : pnlCollection[0].ID);

                        if (i == 0)
                        {
                            pnlCollection[i].Visible = true;
                            if (pnlCollection.Count > 1)
                            {
                                pnlCollection[i].Controls.Add(btnNext);
                            }
                        }
                        else if (i == pnlCount - 1)
                        {
                            pnlCollection[i].Controls.Add(btnPrev);
                            pnlCollection[i].Controls.Add(BuildButton(String.IsNullOrEmpty(settings.SubmitButtonText) ? "Submit" : settings.SubmitButtonText, i, pnlCollection[i].ID));
                        }
                        else // All other panels
                        {
                            pnlCollection[i].Controls.Add(btnPrev);
                            pnlCollection[i].Controls.Add(btnNext);
                        }
                    }
                }
                #endregion
            }
            else
            {
                #region Form Creation
                foreach (FormBuilder_Field f in lFields)
                {
                    FormBuilderFieldInput_display fieldCtl = (FormBuilderFieldInput_display)this.LoadControl("FormBuilderFieldInput_display.ascx");
                    if (fieldCtl != null)
                    {
                        fieldCtl.StyleName = settings.StyleName;
                    }
                    FieldInputList.Controls.Add(fieldCtl);

                    _fields_controls.Add(f, fieldCtl.LoadField(f));
                }

                FormBuilderResponseValidationSummary.ValidationGroup =
                    FormBuilderResponse_SaveButton.ValidationGroup   =
                        FormBuilder_Module.GetValidationGroup(this.ModuleId);
                buttonDiv.Visible = true;

                FormBuilderResponse_SaveButton.Visible = (null != lFields && lFields.Count > 0);
                if ((settings != null) && (!string.IsNullOrEmpty(settings.SubmitButtonText)))
                {
                    FormBuilderResponse_SaveButton.Text = settings.SubmitButtonText;
                }

                string buttonDivClass;
                if (!string.IsNullOrEmpty(settings.StyleName) && settings.StyleName.ToLower() != "block")
                {
                    buttonDivClass = "field-" + settings.StyleName;
                }
                else
                {
                    buttonDivClass = "field";
                }
                buttonDiv.Attributes.Add("class", buttonDivClass);
                #endregion
            }

            base.OnInit(e);
        }
Пример #4
0
        protected void FormBuilderResponse_SaveButton_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                if (ValidateRequest())
                {
                    FormBuilderDataContext dc   = new FormBuilderDataContext();
                    FormBuilder_Module     form = (from f in dc.FormBuilder_Modules
                                                   where f.ModuleId == this.ModuleId
                                                   select f).Single();


                    //save the form object.
                    FormBuilder_Response formResponse = (from r in dc.FormBuilder_Responses
                                                         where r.ModuleId == this.ModuleId &&
                                                         r.Id == ResponseId
                                                         select r).SingleOrDefault();

                    if (formResponse == null)
                    {
                        formResponse = new FormBuilder_Response();
                        dc.FormBuilder_Responses.InsertOnSubmit(formResponse);
                        formResponse.ModuleId  = this.ModuleId;
                        formResponse.CreatedBy = this.Page.User.Identity.Name;
                        formResponse.CreatedOn = DateTime.Now;
                        formResponse.IPAddress = this.Page.Request.UserHostAddress;
                        dc.SubmitChanges();
                    }

                    // save the referrer info (if available)
                    if (Session["session_referrer"] != null)
                    {
                        string referringUrl = Session["session_referringUrl"] as string;
                        string landingUrl   = Session["session_landingUrl"] as string;
                        string domain       = Session["session_referrer"] as string;
                        string query        = Session["session_keywords"] as string;

                        FormBuilder_ResponseReferrer referrer = new FormBuilder_ResponseReferrer();
                        dc.FormBuilder_ResponseReferrers.InsertOnSubmit(referrer);

                        referrer.ResponseId   = formResponse.Id;
                        referrer.referringUrl = referringUrl;
                        referrer.landingUrl   = landingUrl;
                        referrer.domain       = domain;
                        referrer.query        = query;
                        dc.SubmitChanges();
                    }

                    //save input for each form field.
                    foreach (FormBuilder_Field f in _fields_controls.Keys)
                    {
                        // Find any existing field input and update it.
                        FormBuilder_FieldInput fieldInput = (from fi in dc.FormBuilder_FieldInputs
                                                             where fi.ResponseId == formResponse.Id &&
                                                             fi.FieldId == f.Id
                                                             select fi).SingleOrDefault();
                        if (fieldInput == null)
                        {
                            fieldInput = new FormBuilder_FieldInput();
                            dc.FormBuilder_FieldInputs.InsertOnSubmit(fieldInput);
                            fieldInput.FieldId    = f.Id;
                            fieldInput.ResponseId = formResponse.Id;
                        }

                        if (f.Type == (int)FormBuilder_Field.FieldType.FileUpload)
                        {
                            WebControl fi;
                            _fields_controls.TryGetValue(f, out fi);

                            if (((FileUpload)fi).HasFile)
                            {
                                var fiUploadFile = new FileInfo(((FileUpload)fi).FileName);
                                var sFileName    = fiUploadFile.Name.Substring(0, fiUploadFile.Name.LastIndexOf("."))
                                                   + "_" + Guid.NewGuid() + fiUploadFile.Extension;
                                string strUploadDirectory = this.MapPath(ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"]);
                                EnsureDirectory(strUploadDirectory);
                                var uploadPath = Path.Combine(strUploadDirectory, sFileName);
                                ((FileUpload)fi).SaveAs(uploadPath);
                                fieldInput.InputValue = ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"] + "\\" + sFileName;
                            }
                        }
                        else
                        {
                            fieldInput.SetInputValueFromControlValue(_fields_controls[f]);
                        }
                    }

                    formResponse.IsComplete = true;
                    dc.SubmitChanges();

                    //send email notification.
                    formResponse.EmailNotifyAdmin();
                    formResponse.EmailAcknowledgement();
                    ResponseId = 0;

                    //redirect to confirmation page.
                    string redirectPath = "~";
                    if (form.ConfirmationPageId.HasValue)
                    {
                        WebpageInfo page = Webpage.GetWebpage(form.ConfirmationPageId.Value);
                        if (null != page && !string.IsNullOrEmpty(page.Path))
                        {
                            redirectPath = page.Path;
                        }
                    }
                    Response.Redirect(redirectPath);
                }
            }
        }