Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Hi Espen,
I don't got your idea. But if you want to customize content on a page after visitor submitted the form, please take a look at this article.
Use the "Thank You Page" as your presentation page of company, you can have information about the Form and the has-just-submiitted FormSubmission via url parameters. Base on that parameter, you fetch the FormSubmission, and display the page as you want.
Hi Espen,
I made something similar. The recipients e-mail address is located in a "location page" in Episerver and the same page holds info on what zip-codes it is responsible for.
I created 2 custom form elements; ZipCodeElementBlock and CrmEmailElementBlock, and hook into FormsEvents.Instance.FormsSubmitting += FormsSubmitting;
private void UpdateSubmissionEmailReciver(FormsEventArgs submitArgs) { try { var formsSubmittingEventArgs = submitArgs as FormsSubmittingEventArgs; if (formsSubmittingEventArgs == null) return; var formElements = submitArgs.FormsContent.Property["ElementsArea"].Value as ContentArea; var hiddenEmailFields = formElements.GetItems<CrmEmailElementBlock>(); var zipCodeFields = formElements.GetItems<ZipCodeElementBlock>(); if (zipCodeFields == null || hiddenEmailFields == null || !hiddenEmailFields.Any()) return; var emailField = formsSubmittingEventArgs.SubmissionData.Data.First(i => i.Key.EndsWith("_" + hiddenEmailFields.First().Content.ContentLink.ID.ToString())); var zipCode = formsSubmittingEventArgs.SubmissionData.Data.First(i => i.Key.EndsWith("_" + zipCodeFields.First().Content.ContentLink.ID.ToString())); var officePage = ServiceLocator.Current.GetInstance<ISearchService>().FindRegionRegionOffice(zipCode.Value.ToString()); if (officePage != null && !string.IsNullOrEmpty(officePage.CrmEmailAddress)) { Logger.Log(Level.Debug, $"Redirecting e-mail from {emailField.Value} to {officePage.CrmEmailAddress}"); formsSubmittingEventArgs.SubmissionData.Data[emailField.Key] = officePage.CrmEmailAddress; } } catch (Exception e) { Logger.Log(Level.Error, "Failed to map incoming contect request to a regional page", e); } }
The result is that the CrmBlock-field in forms will be updated with the e-mail address found on the location page. If nok found the CrmEmailElementBLock has a default value for e-mails. That field can be used in Forms (replacement).
Hi guys,
I'm working on a case where I want to use the same basic form but change recipient based on a factor on the page for the submitted from.
Example:
Contact form on a companys presentation page.
We are presenting a bunch of companies. There's one presentation page in the CMS and based on a parameter (companyId i.e.) we display data for the company specified through the parameter. So there's not individual pages for each company. However, I want the recipient email address to be the company contact email.
I tried hooking on to Submitting-events (http://world.episerver.com/add-ons/episerver-forms/handling-events-for-episerver-forms/) but can't find a way to change recipient.
Is it even possible? Any suggestions on how to accomplish this or any alternative solutions to solve this will be appreciated.