/// <summary> /// Handles the BeforeLoadingForm event of the XFormControl. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EPiServer.XForms.WebControls.LoadFormEventArgs"/> instance containing the event data.</param> public void XForm_BeforeLoadingForm(object sender, LoadFormEventArgs e) { XFormControl formControl = (XFormControl)sender; //We set the validation group of the form to match our global validation group in the master page. formControl.ValidationGroup = "XForm"; }
/// <summary> /// Handles the AfterSubmitPostedData event of the XFormControl. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EPiServer.XForms.WebControls.SaveFormDataEventArgs"/> instance containing the event data.</param> public void XForm_AfterSubmitPostedData(object sender, SaveFormDataEventArgs e) { XFormControl control = (XFormControl)sender; if (control.FormDefinition.PageGuidAfterPost != Guid.Empty) { PermanentContentLinkMap pageMap = PermanentLinkMapStore.Find(control.FormDefinition.PageGuidAfterPost) as PermanentContentLinkMap; if (pageMap != null) { string internalUrl = pageMap.MappedUrl.ToString(); internalUrl = UriSupport.AddLanguageSelection(internalUrl, ContentLanguage.PreferredCulture.Name); UrlBuilder urlBuilder = new UrlBuilder(internalUrl); //Rewrite the url to make sure that it gets the friendly url if such a provider has been configured. Global.UrlRewriteProvider.ConvertToExternal(urlBuilder, null, Encoding.UTF8); //Always cast UrlBuilders to get a correctly encoded url since ToString() is for "human" readability. control.Page.Response.Redirect((string)urlBuilder); return; } } //After the form has been posted we remove the form elements and add a "thank you message". control.Controls.Clear(); Label label = new Label(); label.CssClass = "thankyoumessage"; label.Text = LocalizationService.Current.GetString("/form/postedmessage"); control.Controls.Add(label); }
/// <summary> /// Sets up events for each new instance of the XFormControl control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> /// <remarks>As the ControlSetup event is triggered for each instance of the XFormControl control /// you need to take into consideration that any event handlers will affect all XForms for the entire /// application. If the EPiServer UI is running in the same application this might also be affected depending /// on which events you attach to and what is done in the event handlers.</remarks> public void XForm_ControlSetup(object sender, EventArgs e) { XFormControl control = (XFormControl)sender; control.BeforeLoadingForm += new LoadFormEventHandler(XForm_BeforeLoadingForm); control.AfterSubmitPostedData += new SaveFormDataEventHandler(XForm_AfterSubmitPostedData); }
/// <summary> /// Handles the BeforeLoadingForm event of the XFormControl. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EPiServer.XForms.WebControls.LoadFormEventArgs"/> instance containing the event data.</param> public void XForm_BeforeLoadingForm(object sender, LoadFormEventArgs e) { XFormControl formControl = (XFormControl)sender; if (String.IsNullOrEmpty(formControl.ValidationGroup)) { //We set the validation group of the form to match our global validation group in the master page if no group has been defined. formControl.ValidationGroup = "XForm_" + Guid.NewGuid().ToString(); } }
/// <summary> /// Handles the BeforeSubmitPostedData event of the XFormControl. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EPiServer.XForms.WebControls.SaveFormDataEventArgs"/> instance containing the event data.</param> public void XForm_BeforeSubmitPostedData(object sender, SaveFormDataEventArgs e) { XFormControl control = (XFormControl)sender; PageBase currentPage = control.Page as PageBase; if (currentPage == null) { return; } //We set the current page that the form has been posted from //This might differ from the actual page that the form property exists on. e.FormData.PageGuid = currentPage.CurrentPage.PageGuid; }
/// <summary> /// Handles the ControlsCreated event of the XFormControl. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> public void XForm_ControlsCreated(object sender, EventArgs e) { XFormControl formControl = (XFormControl)sender; //We set the inline error validation text to "*" as we use a //validation summary in the master page to display the detailed error message. foreach (BaseValidator validator in formControl.Controls.Cast <Control>().Where(ctrl => ctrl is BaseValidator)) { validator.Text = "*"; } if (formControl.Page.User.Identity.IsAuthenticated) { formControl.Data.UserName = formControl.Page.User.Identity.Name; } }
/// <summary> /// Handles the AfterSubmitPostedData event of the XFormControl. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EPiServer.XForms.WebControls.SaveFormDataEventArgs"/> instance containing the event data.</param> public void XForm_AfterSubmitPostedData(object sender, SaveFormDataEventArgs e) { XFormControl control = (XFormControl)sender; if (control.FormDefinition.PageGuidAfterPost != Guid.Empty) { PageData pageAfterPost; var repo = ServiceLocator.Current.GetInstance <IContentRepository>(); if (repo.TryGet(control.FormDefinition.PageGuidAfterPost, out pageAfterPost)) { control.Page.Response.Redirect(UrlResolver.Current.GetUrl(pageAfterPost.ContentLink, pageAfterPost.Language.Name)); } } //After the form has been posted we remove the form elements and add a "thank you message". control.Controls.Clear(); Label label = new Label(); label.CssClass = "xformthankyoumessage"; label.Text = LocalizationService.Current.GetString("/form/postedmessage"); control.Controls.Add(label); }
/// <summary> /// Handles the AfterSubmitPostedData event of the XFormControl. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EPiServer.XForms.WebControls.SaveFormDataEventArgs"/> instance containing the event data.</param> public void XForm_AfterSubmitPostedData(object sender, SaveFormDataEventArgs e) { XFormControl control = (XFormControl)sender; if (control.FormDefinition.PageGuidAfterPost != Guid.Empty) { PermanentPageLinkMap pageMap = PermanentLinkMapStore.Find(control.FormDefinition.PageGuidAfterPost) as PermanentPageLinkMap; if (pageMap != null) { control.Page.Response.Redirect(pageMap.MappedUrl.ToString()); return; } } //After the form has been posted we remove the form elements and add a "thank you message". control.Controls.Clear(); Label label = new Label(); label.CssClass = "thankyoumessage"; label.Text = LanguageManager.Instance.Translate("/form/postedmessage"); control.Controls.Add(label); }