US-Letter
Web Forms for Marketers 2.4
Reference Guide for MVC Implementation Rev: 6 July 2015
Web Forms for Marketers 2.4
Reference Guide for MVC
Implementation
A Reference Book for Administrators and Developers
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Web Forms for Marketers 2.4
Contents
Chapter 1 Introduction ................................................................................................................................ 4
Chapter 2 Using the Module ...................................................................................................................... 6
2.1
Storing Web Forms ....................................................................................................................... 7
2.2
Creating a New Form .................................................................................................................... 8
2.3
Restricting Placeholders Shown in the Placeholder List ............................................................... 9
2.4
Sitecore Form Field Types .......................................................................................................... 10
2.4.1 List Items ................................................................................................................................. 17
2.5
Validation..................................................................................................................................... 19
2.5.1 Predefined Validators .............................................................................................................. 20
2.5.2 Adding a Custom Validation Attribute ..................................................................................... 20
2.5.3 Default Validation Messages ................................................................................................... 23
2.5.4 Configuring a Custom Error Message ..................................................................................... 24
2.6
Submit Actions ............................................................................................................................ 25
2.6.1 Form Verification ..................................................................................................................... 25
2.6.2 Save Actions ........................................................................................................................... 26
2.6.3 Success ................................................................................................................................... 29
2.6.4 Auditing information ................................................................................................................ 29
2.7
Reports ........................................................................................................................................ 31
2.7.1 Supported Databases ............................................................................................................. 32
2.7.2 Data Request Timeouts .......................................................................................................... 32
2.7.3 Summary ................................................................................................................................. 32
2.8
Configuring User Access to the Module ...................................................................................... 33
2.8.1 The Security Roles for Web Forms ......................................................................................... 33
2.9
Events and the (Visit Details) Session Trail ................................................................................ 36
2.10 Multisite Implementation ............................................................................................................. 38
2.11 Multiserver Environment ............................................................................................................. 39
2.11.1
Deploying the Module on the Content Delivery Server ....................................................... 39
2.12 Running Web Forms in Live Mode .............................................................................................. 41
Chapter 3 Web Forms Developer’s Notes ............................................................................................... 42
3.1
Initial Settings .............................................................................................................................. 43
3.1.1 CAPTCHA ............................................................................................................................... 43
3.2
Sitecore.forms.config .................................................................................................................. 44
3.2.1 Events ..................................................................................................................................... 44
3.2.2 Pipelines .................................................................................................................................. 44
3.2.3 Commands .............................................................................................................................. 44
3.2.4 Settings ................................................................................................................................... 45
3.3
Sitecore.MvcForms.config ........................................................................................................... 46
3.3.1 Settings ................................................................................................................................... 46
3.3.2 Pipelines .................................................................................................................................. 46
3.4
Modifying Module Behavior Using Custom Processors .............................................................. 47
3.4.1 Configuring an Email Message Using the ProcessMessage Pipeline .................................... 47
3.4.2 Sending SMS/MMS Using a Custom Processor ..................................................................... 47
3.4.3 Forbidding Users to Upload Large Files using the File Upload field ....................................... 48
3.5
Inserting a Web Form into a Webpage ....................................................................................... 50
3.6
Configuring a Data Provider ........................................................................................................ 51
3.6.1 SQLite ..................................................................................................................................... 51
3.6.2 MSSQL .................................................................................................................................... 51
3.6.3 Oracle ...................................................................................................................................... 52
3.7
Extending and Overriding Standard Functionality....................................................................... 54
3.7.1 Form Rendering ...................................................................................................................... 54
3.7.2 Field Actions ............................................................................................................................ 55
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 2 of 80
Reference Guide for MVC Implementation
3.8
Field Hierarchy ............................................................................................................................ 57
3.9
Creating a New Field Type .......................................................................................................... 58
3.9.1 Creating a Custom Field Type ................................................................................................ 59
3.9.2 Rendering a Custom Field Value ............................................................................................ 60
3.9.3 Creating a Custom Field View................................................................................................. 62
3.10 Creating a Save Action ............................................................................................................... 64
3.10.1
Base Interface and Classes ................................................................................................ 64
3.10.2
Parameters .......................................................................................................................... 66
3.10.3
How to Create a Save Action .............................................................................................. 66
3.11 Creating an Action Editor ............................................................................................................ 69
3.12 Creating a Form Verification Action ............................................................................................ 73
3.13 Accessing Submitted Web Form Data ........................................................................................ 75
3.14 Configuring CSS Themes and Styles ......................................................................................... 76
3.15 Turning On / Off Ajax Submission for a Web Form..................................................................... 77
3.16 Reinstalling the Module ............................................................................................................... 78
3.17 Uninstalling the Module ............................................................................................................... 79
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 3 of 80
Web Forms for Marketers 2.4
Chapter 1
Introduction
This document is designed for Sitecore administrators and contains information about
how to set up the module. For more detailed end user instructions, see the Web Form
User Guide.
Just as most forms on a Web site are simple and straightforward, the process of creating
and managing them should also be simple and straightforward.
The Web Forms for Marketers module is designed to let you create simple forms in a
blink of an eye and in a user-friendly manner. The forms that you can create with this
module are WCAG 2.0 and XHTML 1.0 compliant. The Web Forms for Marketers module
provides users with Web analytics and reporting capabilities. It also records and reports
all the information that Web site visitors enter in forms regardless of whether they
successfully submit the form or not. The module is fully integrated with the Sitecore
Engagement Analytics for Sitecore CMS 7.2.
The module can be configured so that forms have only a few adjustable parameters
thereby making the user interface as simple as possible. The basic options cover the
needs of the average content editor — creating basic input fields, such as, text boxes and
check boxes, creating basic actions, such as, save to a database, send an e-mail, and
creating basic validators, such as, RequiredField validator, Email address validator, and
so on.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 4 of 80
Reference Guide for MVC Implementation
Here is an example of a form created with this module:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 5 of 80
Web Forms for Marketers 2.4
Chapter 2
Using the Module
This chapter describes the functionality of the module.
This chapter contains the following sections:

Storing Web Forms

Creating a New Form

Restricting Placeholders Shown in the Placeholder List

Sitecore Form Field Types

Validation

Submit Actions

Reports

Configuring User Access to the Module

Events and the (Visit Details) Session Trail

Multisite Implementation

Multiserver Environment

Running Web Forms in Live Mode
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 6 of 80
Reference Guide for MVC Implementation
2.1
Storing Web Forms
The structure of the forms is defined in the Sitecore CMS content tree. User input that is entered in the
forms is saved in the module’s own database called Sitecore_WebForms. This database is located in
the website/data folder. In the previous version of this module, this database was called
Sitecore.WebForms.
The Web Forms for Marketers module has two configuration files – Sitecore.forms.config and
Sitecore.MvcForms.config. The files are located in the website\app_config\include folder.
The items that make up forms are stored in appropriate folders under /sitecore/System/Modules/Web
Forms for Marketers.
You specify where new forms are stored in the website\app_config\include\
Sitecore.forms.config file, in the formsRoot attribute of the /sitecore/sites/site node. If
the formsRoot attribute is not defined for a site, new forms are created in the
/sitecore/System/Modules/Web Forms for Marketers/Local Forms folder.
The form folders are based on the /sitecore/Templates/Web Forms for Marketers/Forms Folder template.
Each form is based on the /sitecore/Templates/Web Forms for Marketers/Form template and can contain
any number of sections or fields.
Every form contains a submit button that you can associate actions with. Actions are executed on the
server.
The list of available actions is stored under the /sitecore/System/Modules/Web Forms for
Marketers/Settings/Actions folder.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 7 of 80
Web Forms for Marketers 2.4
2.2
Creating a New Form
To enable web forms to work using the MVC pattern, you must create an MVC layout for the item that you
place the MVC form rendering in.
For more information on how to enable Sitecore MVC, see the Sitecore MVC Playground article.
Users can use the Page Editor and Content Editor to create new forms.
When a user in the Content Editor clicks the Insert Form button, the wizard first checks whether the
current item has a layout assigned to it. If this condition is not met, the wizard displays the following
message:
Forms are renderings that must be attached to a placeholder on the layout.
For more information about allowed placeholders in the Web Forms for Marketers module, see the
Restricting Placeholders Shown in the Placeholder List section.
For more information on how to insert a web form programmatically, see the section Inserting a Web
Form into a Webpage.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 8 of 80
Reference Guide for MVC Implementation
2.3
Restricting Placeholders Shown in the Placeholder List
The Insert a New Form wizard only allows you to add forms to placeholders that have Placeholder
Settings items. A user that adds a new form must have write access to an item where the form is added,
to see placeholders in the Placeholder list. This allows developers and website administrators to define
which placeholders may contain a form.
The Restricting Placeholders wizard helps to restrict the list of placeholders shown in the Placeholder
list of the Insert a New Form wizard. To run the Restricting Placeholders wizard, click Sitecore, All
Applications, Web Forms for Marketers, Restricting Placeholders. This wizard is also displayed when
the Web Forms for Marketers module installation is completed.
The Selected field lists the placeholders where users can add a new form. To add a placeholder from the
All list to the Selected list, select a placeholder and click
. When you click OK, all the changes are
saved.
To add a placeholder to the All list in the Restricting Placeholders dialog box, you must create a new
placeholder under the Sitecore/Layout/Placeholder Settings item. If you already have a placeholder, you
would like to use, create a placeholder item and set the Placeholder Key field of this item to the
placeholder name.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 9 of 80
Web Forms for Marketers 2.4
2.4
Sitecore Form Field Types
The Web Forms for Marketers module contains a number of field types that you can use to build your
forms. All the form field types are stored under the /sitecore/System/Modules/Web Forms for
Marketers/Settings/Field Types item and are based on the /sitecore/Templates/Web Forms for
Marketers/Field Type template.
The Field Type template contains the following fields:

Required — the field, which defines whether the required value validator is applied to this field
type.

Validation — the list of validators that should be applied to the value entered in this field.

User Control — the field defines a reference to an ASCX control.

Deny Tag — the field defines whether information entered to this field type is saved to the Tag of
the Analytics database.
The Web Forms for Marketers module contains the following field types:
Single-Line Text
Use this field type to enter one line of text. The length of the field is limited to 255 characters by default.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/Single-Line
Text item contains settings for this field type.
Multi-Line Text
Use this field type to enter multiple lines of text. The number of characters is limited to 512 by default.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 10 of 80
Reference Guide for MVC Implementation
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/Multiple-Line
Text item contains settings for this field type.
Password
Use this field type to enter a password. All the characters you enter in a Password field are masked. The
Password field is a text field.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/Password
item contains the settings for this field type.
Number
Use this field type to enter numerical data.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/Number item
contains the settings for this field type.
E-mail
Use this field type to enter email addresses. The "@" and "." characters are validated, as well as the
length of the email server domain.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/E-mail item
contains the settings for this field type.
Telephone
Use this field type to enter telephone numbers. This is a number field which also allows the user to enter
the following characters: "+", "-", " (", ")" and spaces.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/Telephone
item contains settings for this field type.
SMS/MMS Telephone
Use this field type to enter telephone numbers that you can send SMSs and MMSs to. This field allows
you to enter numbers and the "+" character. The data entered can only contain the "+" character as the
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 11 of 80
Web Forms for Marketers 2.4
first symbol. This field type is used with the Send SMS and Send MMS save actions.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/SMS/MMS
Telephone item contains settings for this field type.
Date
Use this field type to enter dates.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/Date item
contains the settings for this field type.
Date Picker
Use this field type to select a date from the calendar.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/Date Picker
item contains the settings for this field type.
File Upload
Use this field type to display a text box and a browse button that you can use to select a file that you want
to upload to the server.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/File Upload
item contains the settings for this field type. This field works with the master database.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 12 of 80
Reference Guide for MVC Implementation
Checkbox
Use this field type to display a check box that allows you to select a true or false condition.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Simple Types/Checkbox
item contains the settings for this field type.
Drop List
Use this field type to select an option from a list.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/List Types/Drop List item
contains the settings for this field type.
Radio Button List
Use this field type to display a group of options.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/List Types/Radio List item
contains the settings for this field type.
List Box
Use this field type to display a list box that allows you to select one or more items.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/List Types/List Box item
contains the settings for this field type.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 13 of 80
Web Forms for Marketers 2.4
Checkbox List
Use this field type to display a group of check boxes. You can select one or more check boxes in the list.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/List Types/Checkbox List
item contains the settings for this field type.
Section
Use this special field type as a container for other fields.
Credit Card
This field type lets users enter a credit card number only.
Password Confirmation
This field type contains two fields: the Password field and the Confirm Password field. They are used to
create a password. Every character entered in these fields is masked.
The /sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/Complex/Password
Confirmation item contains the settings for this field type.
Captcha
The Captcha field for MVC uses the reCAPTCHA functionality.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 14 of 80
Reference Guide for MVC Implementation
The Captcha field has a specific set of properties. To access the field properties, in the Form Designer,
select the Captcha field.
Note
The Font Warping, Background Noise, and Line Noise settings of the Captcha field are not applicable to
MVC. You can apply them only to the MSCaptcha control.
To display the Captcha field only when suspicious form activity is detected, in the Security section of the
field properties, select Show CAPTCHA if and click Edit.
In the Robot Attack Protection dialog box, in the Detection Thresholds section, there are two options
to configure, which you can also modify in the WFFM configuration file:

A suspicious visitor is detected
In the Sitecore.forms.config file, change the value of the WFM.SessionThreshold
parameter. By default, the value is 2/1-100/60 (from two times a minute to 100 times every 60
minutes).

Suspicious form activity detected
In the Sitecore.forms.config file, change the value of the WFM.ServerThreshold
parameter. By default, the value is 2/1-100/60 (from two times a minute to 100 times every 60
minutes).
Note
The redirect functionality that is available in the Form Display Page section of the Robot Attack
Protection dialog box is not applicable to the Captcha field for MVC. The captcha is displayed in the
same page.
To configure the reCAPTCHA field:
1. Make sure that JavaScript is enabled in your browser.
2. Add the following script to your layout:
<script src='https://www.google.com/recaptcha/api.js'></script>
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 15 of 80
Web Forms for Marketers 2.4
For example, insert this script into the <head> section of your page.
3. Sign up for an API key pair for your site using the following link
https://www.google.com/recaptcha/admin#list.
The key pair consists of a site key and secret. The site key is used to display the widget on your
site. The secret authorizes communication between your application the reCAPTCHA server to
verify the user's response.
4. Add the following settings to the Sitecore.MvcForms.config file in the
\Website\App_Config\Include folder:
<!-- Recaptcha private/secret key -->
<setting name="WFM.RecaptchaSecretKey" value="" />
<!-- Recaptcha public/site key -->
<setting name="WFM.RecaptchaSiteKey" value="" />
</settings>
Use the site key and secret issued in the previous step as the values of these settings.
Note
If you need to specify the keys for the first version of reCAPTCHA, add the keys to the
<appSettings> node in the Web.config file:
<add key="RecaptchaPublicKey" value="[site key value goes here]" />
<add key="RecaptchaPrivateKey" value="[secret key value goes here]" />
5. Insert the following pipelines into Sitecore.MvcForms.config, before the closing tag
</pipelines>:
<wffm.processFields>
<processor
type="Sitecore.Forms.Mvc.Pipelines.FieldsProcessors.Submit.UpdateSubmitCounter,Sitecore.F
orms.Mvc" />
<processor
type="Sitecore.Forms.Mvc.Pipelines.FieldsProcessors.Submit.AttackProtectionValidation,Sit
ecore.Forms.Mvc" />
</wffm.processFields>
For more information, see the reCAPTCHA documentation site:
https://developers.google.com/recaptcha/
To customize the error message for the reCAPTCHA field:
1. Open the /sitecore/system/Modules/Web Forms for Marketers/Settings/Field
Types/Complex/Captcha item.
2. Find the Localized Parameters field.
3. Edit the message in the <RecaptchaValidatorError> tag.
To customize the appearance of reCAPTCHA, use the following parameters:
recaptcha
tag attribute
recaptcha.render
parameter
Value
Default
Description
data-theme
theme
dark,
light
light
The color theme of the widget. To change the
color, add the <Theme> tag to the Parameters
field of your Captcha field item:
<Theme>dark</Theme>
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 16 of 80
Reference Guide for MVC Implementation
recaptcha
tag attribute
recaptcha.render
parameter
Value
Default
Description
data-type
type
audio,
image
image
The type of CAPTCHA to serve. To change the
type, add the <CaptchaType> tag to the
Parameters field of your Captcha field item:
<CaptchaType>audio</CaptchaType>
data-callback
callback
2.4.1
This setting is not available in the Content Editor,
but you can change it in the
RecaptchaField.cshtml file.
List Items
List field types include the following field types:

Drop List

List Box

Radio List

Checkbox List
You can specify the items displayed in a list by:

Manually entering names

Selecting Sitecore items

Using XPath query

Using Sitecore query

Using fast query
The first two methods are used mainly by marketers. For more information about manually entering item
names and selecting Sitecore items see the Web Forms for Marketers User Guide.
The last three methods can be used to find specific Sitecore items and use them as list field values.
List field types use the value-text concept. This means that list fields’ values contain the text that is
displayed to the user and the value that is stored in the database. The Text field of the list items is usually
used to localize forms or to display user-friendly text.
Using XPath Query
This method is used to select Sitecore items with the help of XPath queries. Selected Sitecore items are
used as list field values. For more information about XPath Query, visit this Web page.
Using Sitecore Query
This method is used to select Sitecore items with the help of Sitecore queries. Selected Sitecore items
are used as list field values. For more information about Sitecore queries, visit the Sitecore Developers
Network.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 17 of 80
Web Forms for Marketers 2.4
Using Fast Query
The Using Fast query method is used to select Sitecore items with the help of Fast queries. Selected
Sitecore items are used as list field values. For more information about Fast Query, visit the Sitecore
Developers Network.
Localizing List Items
You can translate predefined values of the list items.
To localize list items that are specified using query methods:
1. Translate the same field (for example the Display Name field) for all Sitecore items that you will
use as list items.
2. In the Form Designer, start editing the form and switch to the new language.
3. In the List Items Wizard, select the field that you translated as a Text value.
The Preview is language specific, so you will see the translated items immediately.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 18 of 80
Reference Guide for MVC Implementation
2.5
Validation
Each field type has a set of default validation options on the model depending on the field type – for
example, email, phone, and credit card validation.
Note
The MVC implementation of WFFM does not use the validation item structure
/sitecore/system/Modules/Web Forms for Marketers/Settings/Validation for field validation.
By default, the DynamicRequiredAttribute and MultiRegularExpressionAttribute validation
attributes are applied to the Value property of the ValuedFieldViewModel<TValue> class.
[PropertyBinder(typeof(DefaultFieldValueBinder))]
[ParameterName("Text")]
[DynamicRequired(ErrorMessage = @"The {0} field is required.")]
[MultiRegularExpression(null, "RegexPattern", ErrorMessage = @"The value of the {0}
The following type-specific validation attributes are set on the field models:
Model name
Attributes
CheckboxField
[TypeConverter(typeof(StringToBoolConverter))]
public override bool Value { get; set; }
CheckboxListField
[TypeConverter(typeof(ListItemsConverter))]
[ParameterName("selectedvalue")]
public override List<string> Value { get; set; }
CreditCardField
[CreditCard]
public override string Value { get; set; }
DateField
[ParameterName("SelectedDate")]
public override string Value
EmailField
[DynamicEmail("EmailRegularExpression")]
[DataType(DataType.EmailAddress)]
public override string Value { get; set; }
FileUploadField
[DataType(DataType.Upload)]
public override HttpPostedFileBase Value { get; set; }
MultipleLineTextField
[DataType(DataType.MultilineText)]
public override string Value { get; set; }
NumberField
[RegularExpression(@"^[-,+]{0,1}\d*\.{0,1}\d+$", ErrorMessage =
@"Field contains an invalid number.")]
[DynamicRange("MinimumValue", "MaximumValue", ErrorMessage =
@"The number in {0} must be at least {1} and no more than
{2}.")]
public override string Value { get; set; }
PasswordConfirmationField
[DataType(DataType.Password)]
[DynamicCompare("Value", "PasswordTitle", "ConfirmationTitle",
ErrorMessage = @"The {0} and {1} fields must be the same.")]
public string Confirmation { get; set; }
PasswordField
[DataType(DataType.Password)]
public override string Value { get; set; }
RecaptchaField
[RequestFormValue("g-recaptcha-response")]
[RecaptchaResponseValidator(ParameterName =
"RecaptchaValidatorError")]
public override string Value { get; set; }
SingleLineTextField
[DataType(DataType.Text)]
[DynamicStringLength("MinLength", "MaxLength", ErrorMessage =
@"The field {0} must be a string with a minimum length of {1}
and a maximum length of {2}.")]
public override string Value { get; set; }
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 19 of 80
Web Forms for Marketers 2.4
Model name
Attributes
SmsTelephoneField
[DynamicRegularExpression(@"^\+?\d{3,}", null, ErrorMessage =
@"{0} contains an invalid sms/mms telephone number.")]
public override string Value { get; set; }
TelephoneField
[DataType(DataType.PhoneNumber)]
[DynamicRegularExpression(@"^\+?\s{0,}\d{0,}\s{0,}(\(\s{0,}\d{1
,}\s{0,}\)\s{0,}|\d{0,}\s{0,}-?\s{0,})\d{2,}\s{0,}?\s{0,}\d{2,}\s{0,}(-?\s{0,}\d{2,}|\s{0,})\s{0,}$", null,
ErrorMessage = "{0} contains an invalid telephone number.")]
public override string Value { get; set; }
2.5.1
Predefined Validators
The WFFM module contains predefined validators that enable users to add basic validation to fields in the
Form Designer as well as using custom validations.
You can find the predefined validators in the Predefined validators item (sitecore/System/modules/Web
Forms for Marketers/settings/Meta data), and the required field validator in the NotEmpty item
(/sitecore/system/Modules/Web Forms for Marketers/Settings/System/System Validation).
WFFM provides the following predefined validators:
Validation
Description
Numbers only
Checks that the values entered only contain numbers (negative
numbers and integers are allowed).
Letters only
Checks that the values entered only contain letters.
Letters and whitespaces
Checks that the values entered contain a combination of letters and
whitespaces.
Letters numbers underscores
whitespaces
Checks that the values entered contain a combination of letters,
underscores, and whitespaces.
Email address
Checks that the value entered contains the format of an email
address.
Custom
Checks that the values entered conform to the custom validation
rules defined by a regular expression.
2.5.2
Adding a Custom Validation Attribute
WFFM lets you create a custom validation attribute and add it to a field.
For example, to validate the value of the custom CurrencyField class against the balance:
1. Create a new class. In this example, the BalanceAttribute class:
/// <summary>
/// The balance validator.
/// </summary>
public class BalanceAttribute : DynamicValidationBase
{
/// <summary>
/// Initializes a new instance of the <see cref="BalanceAttribute"/> class.
/// </summary>
/// <param name="balanceProperty">
/// The balance property.
/// </param>
public BalanceAttribute(string balanceProperty)
{
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 20 of 80
Reference Guide for MVC Implementation
Assert.ArgumentNotNullOrEmpty(balanceProperty, "balanceProperty");
this.BalanceProperty = balanceProperty;
}
/// <summary>
/// Gets or sets the balance property.
/// </summary>
public string BalanceProperty { get; set; }
/// <summary>
/// The get client validation rules.
/// </summary>
/// <param name="metadata">
/// The metadata.
/// </param>
/// <param name="context">
/// The context.
/// </param>
/// <returns>
/// The <see cref="IEnumerable"/>.
/// </returns>
public override IEnumerable<ModelClientValidationRule>
GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
yield break;
}
/// <summary>
/// The is valid.
/// </summary>
/// <param name="value">
/// The value.
/// </param>
/// <param name="validationContext">
/// The validation context.
/// </param>
/// <returns>
/// The <see cref="ValidationResult"/>.
/// </returns>
protected override ValidationResult IsValid(object value, ValidationContext
validationContext)
{
var fieldModel = this.GetModel(validationContext);
var balance = fieldModel.GetPropertyValue<decimal>(this.BalanceProperty);
var valueString = value as string;
if (string.IsNullOrEmpty(valueString))
{
return ValidationResult.Success;
}
decimal valueDecimal;
decimal.TryParse(valueString, out valueDecimal);
if (decimal.TryParse(valueString, out valueDecimal) && decimal.Parse(valueString)
<= balance)
{
return ValidationResult.Success;
}
return new ValidationResult(string.Format(CultureInfo.CurrentCulture,
this.GetErrorMessageTemplate(fieldModel), fieldModel.Title));
}
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 21 of 80
Web Forms for Marketers 2.4
2. Add the Balance validation attribute:
The validation result:
Note
This is a server-only validation. To make validation work on client, override the
GetClientValidationRules method.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 22 of 80
Reference Guide for MVC Implementation
2.5.3
Default Validation Messages
The default validation messages shipped with the module are located in the Settings/Meta data/Mvc
Validation Error Messages folder.
The default validation messages are templates with the key-value structure, which allows localizing
values:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 23 of 80
Web Forms for Marketers 2.4
By default, all the field validators use these messages.
2.5.4
Configuring a Custom Error Message
WFFM allows you to create and use custom validation messages.
To customize a validation error message:
1. In the Custom Errors folder (/sitecore/system/Modules/Web Forms for Marketers/Settings/Meta
data/Mvc Validation Error Messages/), create a new item based on the Text template
(/sitecore/templates/Web Forms for Marketers/Meta Data/) or copy an existing item from the
Custom Errors folder (/sitecore/system/Modules/Web Forms for Marketers/Settings/Meta
data/Mvc Validation Error Messages/).
2. In the Value field of the newly created item, enter your custom text.
3. In the item where you want to the custom message to appear, in the Dictionary field, select your
custom message, and then click the right-arrow button
to add it to the Selected list.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 24 of 80
Reference Guide for MVC Implementation
2.6
Submit Actions
When a Web site visitor clicks Submit, three types of actions are performed:

Form Verification

Save Actions

Success
All the actions are stored under the /sitecore/System/Modules/Web Forms for
Marketers/Settings/Actions item.
Note:
If you upgrade from the previous version of the Web Forms for Marketers Module, your existing actions
are moved to the Save Actions folder.
You can configure the following fields of an action:

Class — the full name of the class that processes the form data on the server side.

Assembly — the name of the assembly that contains the class referred to.

Parameters — the parameters for the action irrespective of the parameters of the form. These
are the global parameters, common to all the forms. For example, in the Send Email Message
save action, this field is used to specify SMTP server to send e-mails.

Editor — provides the application that you use to change the parameters of the action.
2.6.1
Form Verification
Form verification verifies the values that have been entered in one or more form fields. If form verification
fails, the visitor is returned to the form and an error message is displayed. No other subsequent form
verifications or save actions are performed.
For more information about how to create a form verification action, see the section Creating a Form
Verification Action.
Changing the Form Verification Error Message
You can set default form verification error message and localized one. For more information about how to
set the localized error message, see the Web Forms for Marketers User Guide.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 25 of 80
Web Forms for Marketers 2.4
To set default error message:
1. In the Content Editor, select the form verification action that you want to edit.
2. In the Parameters field, enter an error message in the <FailedMessage> tag.
2.6.2
Save Actions
Save actions can be assigned to a form and are executed when a visitor clicks Submit on a form. There
are 18 save actions in the Web Forms for Marketers module, by default.
A save action is stored as a Sitecore item and executes an action implemented in a .NET class. This
class is specified in the Class and Assembly fields of the save action item. A save action item is based
on the /sitecore/templates/Web Forms for Marketers/Actions/Submit Action template. Save actions items
located under the sitecore/system/modules/web forms for marketers/settings/actions/save actions item.
A save action item contains the following configuration fields:
Field
Description
Sample Field Value
Assembly
An assembly name that
contains the associated
class.
Sitecore.Forms.Custom.dll
Class
An associated class name
including namespace.
Sitecore.Form.Submit.SendMessage
Parameters
Save action parameters.
To use a parameter in the
action, add a property to a
custom action class, and
name this property as
parameter named.
<DefaultDomain>extranet</DefaultDomain>
If the action class contains the
DefaultDomain property, this property is
initialized with the extranet value:
/// <summary>
/// Gets or sets the default domain.
/// </summary>
/// <value>The default domain.</value>
public string DefaultDomain { get; set; }
Client Action
This field is only used in
the staging environment. If
this check box is cleared,
this save action is
transferred from the Slave
to the Master server and is
performed there. If this
check box is selected, a
save action is performed
on the Slave server.
Selected.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 26 of 80
Reference Guide for MVC Implementation
Field
Description
Sample Field Value
Editor
A control that Sitecore
user uses when they edit
the parameters for the
save action in the Form
Designer.
control:Forms.MappingFields
QueryString
Additional settings for the
editor.
Fields=Login|Login,Password|Password
You can create a custom save action. For more information about creating a save action, see the
Creating a Save Action section.
If you have several save actions in a form, they will be performed in the order, in which they are displayed
in the Save Action Dialogue (beginning from the top element).
There are three save actions that send notifications to a user: Send Email Message, Send SMS and Send
MMS. All these save actions use default SMTP server settings specified in the web.config file. You can
specify different SMTP server settings for each save action.
Send Email Message
To use different SMTP settings for this action, in the Content Editor, navigate to
Sitecore/System/Modules/Web Forms for Marketers/Settings/Actions/Save Actions/Send Email Message,
in the Parameters field, set the appropriate values.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 27 of 80
Web Forms for Marketers 2.4
For example, to use Host and From parameters that are different from ones defined in the web.config
file, enter the following code into the Parameters field:
You can also specify credentials for the SMTP server in the Parameters field:
<Login>login</Login><Password>pass</Password>
Send SMS
To use different SMTP settings for this action, in the Content Editor, navigate to
Sitecore/System/Modules/Web Forms for Marketers/Settings/Actions/Save Actions/Send SMS, in the
Parameters field, set the appropriate values.
For example, to use Host and From parameters that are different from one defined in the web.config
file, enter the following code into the Parameters field:
Send MMS
To use different SMTP settings for this action, in the Content Editor, navigate to
Sitecore/System/Modules/Web Forms for Marketers/Settings/Actions/Save Actions/Send MMS, in the
Parameters field, set the appropriate values.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 28 of 80
Reference Guide for MVC Implementation
For example, to use Host and From parameters that are different from one defined in the web.config
file, enter the following code into the Parameters field:
2.6.3
Success
This action allows you to select either a website page or a message which is presented to a Web site
visitor after they successfully submit a form. This is the final action performed in a form submission. The
pipeline attached to this is called successAction pipeline.
2.6.4
Auditing information
Some default save actions create or edit users or roles in Sitecore’s security model. These are referred to
as security actions. These include the Create User, Edit Role Membership, User Login, and User Login
with Password save actions. As all of these can affect user information, the ability to register audit
information in the user profile to record what actions have been performed is useful.
The security actions all have a Save Audit Information to: dropdown list which list the field in the user
profile to which audit information can be written.
By default all rich text, html, text, memo, multi-line text, and single-line text fields can be used to register
audit information. The field types in which audit information can be registered can be configured using the
WFM.AuditAllowedTypes setting in the Sitecore.forms.config file:
<setting name="WFM.AuditAllowedTypes" value="|Rich Text|html|text|Multi-Line
Text|Single-Line Text|memo|" />
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 29 of 80
Web Forms for Marketers 2.4
All user profiles are items in the Core database under the /sitecore/system/Settings/Security/Profiles
folder:
The Visitor profile is used by default. Each form item has a reference to this user profile in the
User Profile field.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 30 of 80
Reference Guide for MVC Implementation
2.7
Reports
You can see information how Web site visitors interact with forms in the various reports that come with
the Web Form module.
The Web Forms for Marketers module supports the creation of the form dropout reports which contain
information about users who did not successfully submit forms. The functionality is achieved using AJAX
features by tracking each individual field and recording user input in the Analytics database.
System events are recorded in the session trail. For more information about system events, see the
Events and the (Visit Details) Session Trail section.
To open the form reports:
1. Log in to the Sitecore desktop
2. Click Sitecore, All Applications, Web Forms for Marketers, Form Reports
3. Select the form for which you want to view reports.
Alternatively, in the Content Editor, select the form under the /sitecore/System/Modules/Web
Forms for Marketers/Website item and click Form Reports.
The following reports are available:

Data

Summary

Engagement Analytics

Dropout Report

Usability Report

Save Failure Report
The form reports are displayed on the different tabs in the Form Reports window:
All the reports display the last 200 records by default. To change this number, open the report in the Web
Reports Designer and change the value in the appropriate SQL query.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 31 of 80
Web Forms for Marketers 2.4
2.7.1
Supported Databases
The Web Forms for Marketers module reports support the following database servers:
Report
Supported Database
Data
MSSQL, SQLite, Oracle
Summary
MSSQL, SQLite, Oracle
Engagement Analytics
MSSQL
Dropout Report and sub-reports
MSSQL
Usability Report and sub-reports
MSSQL
Save Failures Report
MSSQL
2.7.2
Data Request Timeouts
By default the Data report request timeout is 180 seconds. You can modify this value by changing the
WFM.CommandTimeout parameter in the \WebSite\App_Config\Include\
Sitecore.forms.config file.
2.7.3
Summary
Only three records are displayed in this report by default.
To change the number of records displayed in this report, in the \WebSite\App_Config\Include\
Sitecore.forms.config file, change the WFM.MostPopularApplicantCount parameter.
If the value of any field exceeds 80% then the blue stripe turns green by default. You can modify this
value by changing the WFM.RelevantScale parameter in the \WebSite\App_Config\Include\
Sitecore.forms.config file.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 32 of 80
Reference Guide for MVC Implementation
2.8
Configuring User Access to the Module
To configure the access that a user has to the features in the module, an administrator can assign the
following roles to the user:

Sitecore Client Form Author

Sitecore Client Developing

Analytics Maintaining

Analytics Reporting

Sitecore Marketer Form Author

Sitecore Client Securing
To give the user minimum access rights to the module, assign the Sitecore Client Form Author role to the
user.
To give the user access to all the features in the module, assign the following roles to the user:

Sitecore Marketer Form Author

Sitecore Client Developing

Sitecore Client Securing
2.8.1
The Security Roles for Web Forms
Here is a short description of the security roles that have been created for the Web Forms for Marketers
module:
Sitecore Client Form Author
The Sitecore Client Form Author role gives the user access to the minimum features of the Web Forms
for Marketers module. All the other roles expand the user’s access rights. This role allows the user to:

Insert a new form.

Edit an existing form.

View the Data report.

View the Summary report.
Sitecore Client Developing
The Sitecore Client Developing role allows the user to use the Export to ASCX button in the Form
Designer:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 33 of 80
Web Forms for Marketers 2.4
Analytics Maintaining
The Analytics Maintaining role allows the user to:

Use the Analytics page in the Create a New Form wizard:

Use the Analytics section on the Form Designer ribbon:

Use the Analytics section on the Content Editor ribbon:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 34 of 80
Reference Guide for MVC Implementation

Use tags:
Analytics Reporting
The Analytics Reporting role allows the user to:

View the Dropout report.

View the Usability report.

View the Save Failures report.
Sitecore Marketer Form Author
The Sitecore Marketer Form Author role inherits access rights from the following roles:

Sitecore Client Form Author

Analytics Maintaining

Analytics Reporting
Members of the Sitecore Marketer Form Author role have all the rights assigned to these roles.
Sitecore Client Securing
The Sitecore Client Securing role allows the user to:

Edit the Create User save action.

Edit the Edit Role Membership save action.

Edit the Change Password save action.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 35 of 80
Web Forms for Marketers 2.4
2.9
Events and the (Visit Details) Session Trail
The (visit details) session trail is an Sitecore Engagement Analytics feature which records all the activities
a user has performed on a Web site, including what pages they have visited and when.
The session trail reports also list the events that are triggered when a visitor fills in a form. Those events
are standard Sitecore Engagement Analytics page events that can be used for development purposes.
The reports list both field events and form events.
For all the events, the Datakey field in the Analytics database equals the Form GUID, the exceptions are:
Form check action error, Form submit, and Form conversion events.
Several field events can occur in the same field during the same attempt to submit the form, as users
change the information in the field.
The events that are listed in the form reports are:
Field Completed
This event is triggered when a field on a form is completed and tabbed or clicked out of. This is done with
AJAX.
Field Not Completed
This event is triggered when validation of a required field fails because the field has not been filled in by
the visitor.
Field Out of Boundary
This event is triggered when validation of a field fails because the value entered falls outside the
boundaries defined for the field. This event is used for the Min and Max Length of Text and Password
fields, as well as for Date and Number fields.
Form Check Action Error
This event is triggered when a Check Action fails. This is not a failure, but an event. If a Check Action
fails, the visitor is returned to the form. No other Check Actions or save actions are initiated.
Form Save Action Failure
This event is triggered when a save action fails. This is a failure and not an event — the IsFailure property
is enabled).
Form Submit
This event is triggered when a visitor clicks the Submit button or presses ENTER. This indicates an
attempt to submit the form.
Invalid Field Syntax
This event is triggered when validation of a field fails because the data entered in the field fails a
particular syntax check. The event is used for the following field validations: Regular Expressions in Text
and Password types, and Email fields.
Submit Success
This event is triggered when a Submit action does not return an error. The event is written in along with
the Form Conversion event and is primarily used to facilitate the SQL statements required for the Form
Dropout, Form Usability, and Form Failures reports.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 36 of 80
Reference Guide for MVC Implementation
Form Conversion
The event is triggered when a form is successfully submitted and is triggered after the Form Submit
event. It also indicates that the goal associated with the form has been successfully completed.
Form Begin (system event)
This is a system event that is not displayed in the reports. Form Begin is triggered when the user starts
working with a web form (fill in a field or click the Submit button).
Important
The Form Begin event is critical to the reporting. We do not recommend you trigger it because this can
affect form dropout reporting.
Form Dropout (system event)
This is a system event that is not displayed in the reports. Form Dropout is triggered when the user
session is expired and the user did not successfully submitted the web form.
Important
The Form Dropout event is critical to the reporting. We do not recommend you trigger it because this can
affect form dropout reporting.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 37 of 80
Web Forms for Marketers 2.4
2.10
Multisite Implementation
The Web Forms for Marketers module supports multisite environments. This means that administrators
can define different form locations and settings for different Web sites. This is done in the formsRoot
attribute in the definition of the site in the .config files.
The value of this attribute is a Sitecore path which defines:

The folder that stores the forms on the current site.

The appearance and color settings for forms on the current site.

The access rights.
The formsRoot parameter must contain either an item path or the ID of the target item. The target item
must be based on the /sitecore/Templates/Web Forms for Marketers/Forms Folder
template.
For example, this is how the formsRoot parameter is defined in web.config file:
<sites>
<site
name="samplesite"
virtualFolder="/"
physicalFolder="/"
rootPath="/sitecore/content"
startItem="/forms" database="web" domain="extranet"
formsRoot="/sitecore/System/modules/Web Forms for Marketers/local forms"
...
This can be defined in the Sitecore.forms.config file using the ID:
<site name="website">
<patch:attribute name="formsRoot">
{F1F7AAB6-C8CE-422F-A214-F610C109FA63}
</patch:attribute>
</site>
</sites>
We recommend that you define the formsRoot parameter in the /App_Config/Include/
Sitecore.forms.config file. This approach ensures that there are no duplicated values.
When the formsRoot attribute is not defined for a Web site, new forms are stored in the
/sitecore/System/Modules/Web Forms for Marketers/Local Forms folder.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 38 of 80
Reference Guide for MVC Implementation
2.11
Multiserver Environment
You can scale the Web Forms for Marketers module by configuring a multiserver environment. In such a
configuration, the module partially delegates executing of save actions from the content delivery server to
the master one.
To configure a multiserver environment:
1. Install the module on the master server. For more information about installing the module, go to
the SDN website.
2. Deploy the module on all content delivery servers.
2.11.1
Deploying the Module on the Content Delivery Server
When the module is installed on the master server, deploy it on all content delivery servers.
To deploy the module on the content delivery server:
1. Publish the Master database to all the content delivery servers. For more information about
publishing the Master database, see the Scaling Guide, 3.1 Configuring a Remote Publishing
Target.
2. Deploy the module files to the content delivery servers.
If content delivery servers have not the client interface, copy the following files and folders from
the content management server to all the content delivery ones:
o
Bin\sitecore.forms.core.dll
o
Bin\Sitecore.Forms.Custom.dll
o
Bin\Sitecore.Forms.Mvc.dll
o
Bin\MSCaptcha.dll
o
Bin\system.data.sqlite.dll
o
Bin\AjaxMin.dll
o
Bin\System.Web.Optimization.dll
o
App_Config\Include\Sitecore.forms.config
o
App_Config\Include\Sitecore.MvcForms.config
o
App_Config\Include\Captcha.config
o
Sitecore modules\shell\Web Forms for Marketers\Themes\*.*
o
Sitecore modules\web\Web Forms for Marketers\scripts\*.*
o
Sitecore modules\Web\Web Forms for Marketers\mvc\*.*
o
Sitecore modules\web\Web Forms for Marketers\Tracking.aspx
o
Sitecore modules\web\Web Forms for Marketers\control\*.ascx
o
Sitecore modules\web\Web Forms for Marketers\UI\UserControl\*.ascx
o
Views\*.*
If content delivery servers have the client interface, install the Web Forms for Marketers package
using the Installation Wizard on the content delivery servers.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 39 of 80
Web Forms for Marketers 2.4
3. Add the following connection string to the connectionstrings.config file in all content
delivery servers:
<add name="remoteWfmService"
connectionString="url=http://[masterserver]/sitecore%20modules/shell/Web%20Forms%20for%20
Marketers/Staging/WfmService.asmx;user=[domain\username];password=[password];timeout=6000
0" />
Where
[masterserver] – IP or the host name of the master server.
[domain\username] – Sitecore user (full name). The necessary access rights depend on the
items that the form is using.
[password] – user’s password.
Note
After you added the remoteWfmService connection string to the connectionstrings.config file in all
content delivery servers, all save actions with the cleared Client Action check box are executed in their
direct order on the content management server instead of being executed on the current server. After that
all save actions with the Client Action check box selected are performed on the content delivery server in
their direct order. All uploaded files are uploaded to the content management server too. For more
information about the Client Action check box, see the section Save Actions.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 40 of 80
Reference Guide for MVC Implementation
2.12
Running Web Forms in Live Mode
Sitecore supports running a Web site directly from the master database, referred to as ― “running in live
mode”. Running in live mode eliminates the need to publish content and is similar to viewing a site in the
Preview client. A Web site that is configured to run in live mode acts exactly like a normal Web site. Live
mode respects all publishing restrictions and workflows in the same way that a default Web site supports
these features.
To run the Web Forms for Marketers module in Live Mode, you must edit the web.config file:
1. In the web.config file, find the relevant <site> section and change database="web" to
database="master".
2. Find the <modules_website> section and change database="web" to
database="master".
The <sites> section of your web.config file should look like this:
<sites>
...
<site name="modules_website"...database="master".../>
<site name="website"...database="master".../>
...
</sites>
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 41 of 80
Web Forms for Marketers 2.4
Chapter 3
Web Forms Developer’s Notes
This chapter contains information for developers on how to customize the WFFM module.
This chapter contains the following sections:

Initial Settings

Sitecore.forms.config

Sitecore.MvcForms.config

Modifying Module Behavior Using Custom Processors

Inserting a Web Form into a Webpage

Configuring a Data Provider

Extending and Overriding Standard Functionality

Field Hierarchy

Creating a Visual Field Property

Creating a New Field Type

Creating a Save Action

Creating an Action Editor

Creating a Form Verification Action

Accessing Submitted Web Form Data

Configuring CSS Themes and Styles

Turning On / Off Ajax Submission for a Web Form

Reinstalling the Module

Uninstalling the Module
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 42 of 80
Reference Guide for MVC Implementation
3.1
Initial Settings
3.1.1
CAPTCHA
The Web Forms for Marketers module lets you implement CAPTCHA so that it works in a multi-instance
environment.
If you want to implement this, you must manually register CAPTCHA image and audio handlers in the
web.config file.
Note
You must register CAPTCHA on each content delivery application instance.
In the web.config file, in the handlers and httpHandlers sections, in the add nodes, add the
corresponding handler references:
<configuration>
<system.webServer>
<handlers>
<add name="CaptchaImage" verb="*" path="CaptchaImage.axd"
type="Sitecore.Form.Core.Pipeline.RequestProcessor.CaptchaResolver, Sitecore.Forms.Core" />
<add name="CaptchaAudio" verb="*" path="CaptchaAudio.axd"
type="Sitecore.Form.Core.Pipeline.RequestProcessor.CaptchaResolver, Sitecore.Forms.Core" />
</handlers>
</system.webServer>
<system.web>
<httpHandlers>
<add name="CaptchaImage" verb="*" path="CaptchaImage.axd"
type="Sitecore.Form.Core.Pipeline.RequestProcessor.CaptchaResolver, Sitecore.Forms.Core" />
<add name="CaptchaAudio" verb="*" path="CaptchaAudio.axd"
type="Sitecore.Form.Core.Pipeline.RequestProcessor.CaptchaResolver, Sitecore.Forms.Core" />
</httpHandlers>
</system.web>
</configuration>
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 43 of 80
Web Forms for Marketers 2.4
3.2
Sitecore.forms.config
This section describes the main configuration parameters of the Sitecore.forms.config file, located
in the \Website\App_Config\Include folder.
3.2.1
Events
There is only one web forms specific event in the Sitecore.forms.config file – forms:save. This
event is raised when a web form is submitted before save actions are performed.
3.2.2
Pipelines
The module uses the following pipelines:
Pipeline
Description
formUploadFile
Runs when a file is uploaded using the FileUpload field of a web form.
successAction
Runs when a web form is submitted successfully. Default processors
redirect the user to the success page or generate the success message.
errorSubmit
Runs when an exception occurs when the user submits a web form.
errorSave
Runs when an exception occurs when the module processes a save
action.
errorCheck
Runs when an exception occurs when the module processes a
verification action.
exportToXml
Runs when the module exports web forms data to an XML document
from the Data Viewer.
exportToExcel
Runs when the module exports web forms data to a Microsoft Excel
document from the Data Viewer.
parseAscx
Runs when the module launches the Convert to ascx dialog box. This
pipeline parses a web form and generates the output .ascx control.
exportToAscx
Runs when the user clicks Download in the Convert to ascx dialog box.
This pipeline generates an .ascx control for downloading.
auditRender
Writes audit information to the user profile when the module performs a
save action related to security, for example the Create User save action.
setCustomCrmProperty
Lets you change fields of the CRM entity when it is created by the CRM
save action. For more information about CRM save actions, refer to the
SDN article.
setSystemCrmProperty
Lets you change system fields of the CRM entity when it is created by the
CRM save action. For more information about CRM save actions, refer to
the SDN article.
processMessage
Runs when the module generates an email message for the Send Email
Message save action.
3.2.3
Commands
The Commands section contains UI commands specific to the Web Forms for Marketers module.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 44 of 80
Reference Guide for MVC Implementation
For example, when the user in the Content Editor, on the Presentation tab, clicks the Insert button, the
forms:insert command is performed.
3.2.4
Settings
The Settings section contains the configuration settings for the Web Forms for Marketers module. Each
setting has a short description that explains how this setting works.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 45 of 80
Web Forms for Marketers 2.4
3.3
Sitecore.MvcForms.config
This section describes the main configuration parameters of the Sitecore.MvcForms.config file,
located in the \Website\App_Config\Include folder.
3.3.1
Settings
The Settings section contains the MVC specific configuration settings for the Web Forms for Marketers
module. Each setting has a short description that explains how this setting works.
3.3.2
Pipelines
The WFFM module uses the following pipelines:
Pipeline
Description
initialize
Initializes routes, filters, and the metadata provider.
wffm.submit
Runs when a form is submitted.
wffm.executeSaveActions
Runs when a save action is executed.
wffm.validate
Runs when form validation is executed.
wffm.success
Runs when a form is successfully submitted.
wffm.error
Runs when an error is detected during form validation, save action
execution, or another process.
wffm.createMetadata
Runs when the form metadata is filled in.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 46 of 80
Reference Guide for MVC Implementation
3.4 Modifying Module Behavior Using Custom Processors
This section contains sample actions that will show you how to modify module behavior using custom
processors.
3.4.1
Configuring an Email Message Using the ProcessMessage Pipeline
This example describes how to configure an email message of the Send Email Message save action
using the ProcessMessage pipeline.
To configure an email message, perform the following actions:
1. Create a processor class using the following sample code:
using Sitecore.Form.Core.Pipelines.ProcessMessage;
// This processor adds a note to the end of the email body
public class AddTextToBody
{
public void Process(ProcessMessageArgs args)
{
string additionalText = "<p>This message was sent using the Sitecore Web Forms for
Marketers module.</p>";
args.Mail.Append(additionalText);
/*
* it's also possible to modify SUBJECT, TO, CC and BCC message fields
* args.Subject.Append(" subject text");
* args.To.Append("; secondrecipient@mail.net");
* args.CC.Append("; secondrecipient@mail.net");
* args.BCC.Append("; secondrecipient@mail.net");
* args.From = "sender@mail.net";
*/
}
}
2. Register the new processor in the Sitecore.forms.config file, before the
Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage processor:
<processMessage>
…
<processor type="YourNamespace.AddTextToBody,YourAssemblyName" />
<processor type="Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage,
Sitecore.Forms.Core" method="SendEmail"/>
</processMessage>
3.4.2
Sending SMS/MMS Using a Custom Processor
The Send MMS and the Send SMS save actions delegate sending messages to MMS/SMS gateways
through a SMTP server.
You can use the processMessage pipeline to change this behavior and send messages, for example,
through a third party paid Web service.
1. Create a new processor using the following sample code:
namespace Sitecore.Form.Core.Pipelines.ProcessMessage
{
using System.IO;
using System.Net;
public class SendSMSorMMS
{
public void Process(ProcessMessageArgs args)
{
if (args.MessageType == MessageType.MMS || args.MessageType == MessageType.SMS)
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 47 of 80
Web Forms for Marketers 2.4
{
WebClient wc = new WebClient();
wc.Credentials = (NetworkCredential)args.Credentials;
wc.QueryString.Add("sendto", args.Recipient);
wc.QueryString.Add("message", args.Mail.ToString());
if (!string.IsNullOrEmpty(args.From))
{
wc.QueryString.Add("from", args.From);
}
using (Stream responseStream = wc.OpenRead("https://3rdparty.smsormms.com/"))
{
using (StreamReader responseReader = new StreamReader(responseStream))
{
responseReader.ReadToEnd();
responseReader.Close();
responseStream.Close();
}
}
}
}
}
}
2. Register the new processor in the Sitecore.forms.config file:
<processMessage>
<processor type="Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage,
Sitecore.Forms.Core" method="ExpandLinks" />
<processor type="Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage,
Sitecore.Forms.Core" method="ExpandTokens">
<DatabaseDep ref="wffmContextDatabase" />
</processor>
<processor type="Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage,
Sitecore.Forms.Core" method="AddHostToItemLink" />
<processor type="Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage,
Sitecore.Forms.Core" method="AddHostToMediaItem" />
<processor type="Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage,
Sitecore.Forms.Core" method="AddAttachments">
<DatabaseDep ref="wffmContextDatabase" />
</processor>
<processor type="Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage,
Sitecore.Forms.Core" method="BuildToFromRecipient" />
<processor type="Sitecore.Form.Core.Pipelines.ProcessMessage.ProcessMessage,
Sitecore.Forms.Core" method="SendEmail" />
</processMessage>
3.4.3
Forbidding Users to Upload Large Files using the File Upload field
This example shows how to forbid users to upload files larger than 10 MB using the File Upload form
field.
To forbid uploading large files in the File Upload field:
1. Create a new processor class using the following sample code:
using Sitecore.Form.Core.Pipelines.FormUploadFile;
public class UploadingLimitation
{
public void Process(FormUploadFileArgs args)
{
int size = 10485760; // == 10 Mb
if (args.File.Data.Length > size)
{
Sitecore.Diagnostics.Log.Info(string.Format("User {0} tried to upload a file
larger than 10 Mb. The file name is {1}",
Sitecore.Context.User.Name,
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 48 of 80
Reference Guide for MVC Implementation
args.File.FileName), this);
args.AbortPipeline();
}
}
}
2. Register the new processor in the Sitecore.forms.config file:
<formUploadFile>
<processor type="YourNamespace. UploadingLimitation, YourAssemblyName"/>
…
</formUploadFile>
After this solution is implemented, when the user tries to upload a file larger than 10 MB using the File
Upload form field, the module does not allow this and the corresponding message is saved to the log
files.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 49 of 80
Web Forms for Marketers 2.4
3.5
Inserting a Web Form into a Webpage
Users can add a web form to a webpage using the Page Editor. Developers and administrators can add a
web form to a webpage in the following ways:

Insert a web form as a Sitecore standard rendering.

Insert a web form as a web control.

Insert a web form using the code-behind class.
Inserting a web form as a Sitecore rendering
A web form is a Sitecore rendering so you can insert it in the Content Editor:
1. In the Content Editor, select the item that you want to add a web form to.
2. On the ribbon, in the Presentation tab, click Details.
3. In the Layout Details dialog box, click Edit for the appropriate device.
4. In the Device Editor dialog box, add a new control: Renderings/Modules/Web Forms for
Marketers/Form.
5. Edit the added control. In the FormID field, select the appropriate web form.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 50 of 80
Reference Guide for MVC Implementation
3.6
Configuring a Data Provider
The module supports the following databases:

SQLite

MSSQL

Oracle
By default, the module uses MSSQL database.
3.6.1
SQLite
If you are running on SQLite, in the [site
root]\website\App_Config\include\Sitecore.forms.config file, uncomment or add the
following SQLite data provider definition:
<formsDataProvider
type="Sitecore.Forms.Data.DataProviders.SQLite.SQLiteWFMDataProvider,Sitecore.Forms.Core">
<param desc="connection string">Data
Source=/data/sitecore_webforms.db;version=3;BinaryGUID=true</param>
</formsDataProvider>
3.6.2
MSSQL
If you are running on MSSQL, you must configure a connection between the module and the databases
to make the form reports work correctly.
The MSSQL databases are located under the [site root]\data folder:

sitecore.webforms.mdf – MSSQL database;

sitecore.webforms.bak – backup file of the empty MSSQL database;

sitecore.webforms_log.ldf – MSSQL log file.
The database must be deployed on the MSSQL server.
In the [site root]\website\App_Config\include\Sitecore.forms.config file, uncomment
or add the following MSSQL data provider definition:
<formsDataProvider
type="Sitecore.Forms.Data.DataProviders.WFMDataProvider,Sitecore.Forms.Core">
<param desc="connection string">Database=(database);Data Source=(server);user
id=(user);password=(password);Connect Timeout=30</param>
</formsDataProvider>
(database) is the name of the MSSQL database.
(server) is the name of the MSSQL server.
(user) is the database username.
(password) is the password of the database user.
Permissions Required by a Database User for the Module Database on SQL
Server 2008
A Database user must have the Execute permission on the database and must be assigned to the
following membership roles: db_datareader and db_datawriter.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 51 of 80
Web Forms for Marketers 2.4
For more information about how to set the mentioned above permissions, go to Create Database Account
on SDN.
3.6.3
Oracle
If you are running on Oracle server 10g or later, install the Web Forms for Marketers version 2.2.0
rev.110303 or later on the Sitecore CMS 6.4 instance or later.
After you install the update package:
1. Copy the [site root]\data\web forms oracle folder to the computer where the Oracle server is
running.
2. On the computer where the Oracle server is running, navigate to computer System Properties,
select the Advanced tab and click Environment Variables. Set up user-level variables as
follows:
o
DATABASE = Name of the Oracle Database instance that hosts Sitecore data (as it is set up
on the computer).
o
TBS = Name of the tablespace for Sitecore data.
o
PASSWORD = Password for the system user of the Oracle instance.
o
PREFIX = Prefix for the user schema names and passwords.
3. On the computer where the Oracle server is running, run the CreateData.bat file from the [site
root]\data\web forms oracle folder.
The installation scripts will set up the %PREFIX%wffm user schema. The user password is the
same as the user schema.
4. On the computer where the Oracle server is running, remove the DATABASE, TBS,
PASSWORD, PREFIX variables from the environment.
5. Edit the [site root]\website\App_Config\include\Sitecore.forms.config file:
In the configuration/sitecore section, comment out the MS SQL and SQLite data provider
definitions (one of them is commented out by default).
In the configuration/sitecore section, uncomment or add the following Oracle data
provider definition:
<!-- Oracle -->
<formsDataProvider
type="Sitecore.Forms.Data.DataProviders.Oracle.OracleWFMDataProvider,Sitecore.Forms.Core"
>
<param desc="connection string">user id=scwffm;password=scwffm;Data
Source=sitecore</param>
</formsDataProvider>
Assign appropriate values to the connection string variables:
user id=<prefix>wffm
password=<prefix>wffm
Data Source=<database>
Where <prefix>, <password> and <database> are the values that you set to the
environmental variables in step 2.
Important
By default, the type attribute of formsDataProvider refers to the Sitecore.Forms.Oracle
assembly. Make sure that you changed the reference to the Sitecore.Forms.Core assembly.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 52 of 80
Reference Guide for MVC Implementation
6. Navigate to the Global Assembly Cache that is located under the C:\Windows\Assembly folder.
Select the Oracle.DataAccess.dll for your Oracle client version, right click it, select
Properties and copy the Version ([version of your assembly]) value, which can be in one of the
following formats:

* 10.2.x.x (Oracle Client versions before 10.2.0.2).

* 2.102.x.x or 2.111.x.x (Oracle Client versions 10.2.0.2 and later).
7. In the web.config file, in the configuration/runtime/assemblyBinding section, add the
following definition:
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"
xmlns="urn:schemas-microsoft-com:asm.v1" />
<bindingRedirect oldVersion="9.2.0.401" newVersion="[version of your assembly]"
xmlns="urn:schemas-microsoft-com:asm.v1" />
</dependentAssembly>
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 53 of 80
Web Forms for Marketers 2.4
3.7
Extending and Overriding Standard Functionality
The Web Forms for Marketers module lets you extend and override the default functionality.
3.7.1
Form Rendering
The module displays web forms on a website using the MVC Form rendering, located in the
/sitecore/layout/Renderings/Modules/Web Forms for Marketers/ item.
The MVC Form item contains some configuration fields, for instance:

Controller – the class and assembly that contain the controller.

Controller action – the name of the action method.
You can add or change the MVC web form rendering with a custom controller by changing the values of
the Controller and/or Controller action fields:
This is an example of simple controller code:
namespace Sitecore.CustomMvcController
{
using System.Web.Mvc;
using Sitecore.Mvc.Controllers;
/// <summary>
/// Simple custom controller
/// </summary>
public class CustomMvcController : SitecoreController
{
[HttpGet]
public ActionResult TestAction()
{
return Content("Test action get");
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult TestAction(string id)
{
return Content("Test action post ");
}
}
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 54 of 80
Reference Guide for MVC Implementation
}
Example: Adding a Logo to all the Web Forms on a Website
In the c:\inetpub\wwwroot\wffm24\Website\Views\Form\Index.cshtml file, add the <img>
tag pointing to the logo image, for example:
….
<img width="42" height="42" alt="Sitecore Logo"
src="/sitecore/shell/themes/standard/Images/HomeButton2.png?w=42&amp;h=42&amp;as=1" />
….
Now all the MVC forms on the website contain a logo. To customize the logo, you can, for example, add
the logo to the Sample Inner View.cshtml file and add this file to the Presentations details of the
appropriate item.
3.7.2
Field Actions
Web Forms for Marketers lets you personalize web forms by configuring actions that are executed when
the specified conditions are met. A set of conditions and corresponding actions is called a rule. The
module contains the predefined set of actions. You can implement a customs field action.
For example, you want to implement an action that disables input in a field for a web form that is designed
to update user profiles, shop orders, and so on. The web form displays the field containing its value but
does not allow you to edit it because, for example, user ID or order ID cannot be changed.
To implement a field action that disables field input, follow these instructions:
1. In Visual Studio, create a new project.
2. Add references to the Sitecore.Kernel.dll and Sitecore.Forms.Core.dll assemblies.
3. Create a new class that inherits Sitecore.Rules.Actions.RuleAction<T> where T :
Sitecore.Forms.Core.Rules.ConditionalRuleContext.
4. Override and implement the Apply(T ruleContext) method. This method is responsible for
executing any actions.
The ruleContext.Control property contains the field or section that is selected in the Form
Designer:
namespace Sitecore.Forms.Core.Rules
{
using System.Web.UI.WebControls;
using Sitecore.Diagnostics;
using Sitecore.Rules.Actions;
/// <summary>
/// The disable control action
/// </summary>
/// <typeparam name="T"></typeparam>
public class DisableControlAction<T> : RuleAction<T> where T : ConditionalRuleContext
{
/// <summary>
/// Applies the specified rule context.
/// </summary>
/// <param name="ruleContext">The rule context.</param>
public override void Apply(T ruleContext)
{
Assert.ArgumentNotNull(ruleContext, "ruleContext");
if (ruleContext.Control != null && ruleContext.Control is WebControl)
{
((WebControl)ruleContext.Control).Enabled = false;
}
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 55 of 80
Web Forms for Marketers 2.4
}
}
}
5. In the Content Editor, in the /sitecore/system/Settings/Rules/Web Forms for Marketers
Conditions/Actions folder, create a new action item using the action template.
6. Fill in the Text and Type fields.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 56 of 80
Reference Guide for MVC Implementation
3.8
Field Hierarchy
The Sitecore.Forms.Mvc.ViewModels.Fields namespace contains all the field classes. The base
class of the field classes is the ValuedFieldViewModel<TValue> class. Each field class specifies the
TValue type parameter when inherited, for example,
NumberField : ValuedFieldViewModel<string> defines that TValue is a string.
The base class of the ValuedFieldViewModel class is the FieldViewModel class. It shares common
properties for all field classes, such as Title, Visible, Parameters and so on.
The following diagram shows the inheritance of field classes:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 57 of 80
Web Forms for Marketers 2.4
3.9
Creating a New Field Type
In a field type item, the MVC Type field refers to a relevant MVC field model.
The base class for each field is the ValuedFieldViewModel<T> class, which inherits from the
FieldViewModel class. Therefore, you get all field item information in a model and can extend it if you
need to. By default, the FieldViewModel view is used for all field types. If you need a field to have an
advanced view, define an editor template for this field type. You can find all projects views in the
/Website/Views/Form folder.
You can change each field view by editing a relevant field view in the *.cshtml file.
By default, field property values are initialized from the Parameters and LocalizedParameters fields, if
the property name is identical with the parameter name. For example, the CssClass model property is
initialized with the CssClass parameter value, if it exists.
If you want a property to be initialized from a parameter with another name, use
ParameterNameAttribute, for example:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 58 of 80
Reference Guide for MVC Implementation
3.9.1
Creating a Custom Field Type
The WFFM module lets you create custom field types.
To create a custom field type, for example Currency:
1. In Visual Studio, in the Class library project, add the new CurrencyField class based on the
SingleLineTextField class.
2. Build the assembly and put it in the bin folder of your website.
3. In the Custom folder (sitecore/System/Modules/Web Forms for Marketers/Settings/Field Types/),
add a new field type item, for example, Currency and set the appropriate class and assembly
name in the MVC Type field.
In this case, the FieldModel.cshtml view is used to render this field type.
Note
All validators in the base class are inherited by a child class.
The CurrencyField class in this example inherits the SingleLineTextField class, the
Value property of which contains the length property validator. As a result, the Value property of
the CurrencyField class has the same validator.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 59 of 80
Web Forms for Marketers 2.4
3.9.2
Rendering a Custom Field Value
Alternatively, you can render the Value field by creating an editor template.
To create an editor template, for example, for Currency:
1. In Visual Studio, create Currency.cshtml.
2. In the Currency.Field class, change your model by adding the UIHint attribute.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 60 of 80
Reference Guide for MVC Implementation
3. If you need additional data to render the Value field from the field model object, use the
FieldModel key to retrieve the field model from the ViewData object.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 61 of 80
Web Forms for Marketers 2.4
3.9.3
Creating a Custom Field View
If you want to create a unique HTML markup for a field, create a custom field view.
To create a custom field view, for example, for Currency:
1. In the CurrencyField class, add the Balance and BalanceTitle properties.
2. To allow localizing of the BalanceTitle parameter, in the Localized Parameters field, insert
the BalanceTitle value.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 62 of 80
Reference Guide for MVC Implementation
The following example shows the custom CurrencyField view:
Important
When you write your custom view for a field model, you should always make the hidden input for the
FieldId property rendered. This is required for the client analytics events tracking logic.
A sample output of the custom field view:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 63 of 80
Web Forms for Marketers 2.4
3.10
Creating a Save Action
You can create a custom save action. Use the base interface and classes when you are creating a new
class.
3.10.1
Base Interface and Classes
To create a custom save action, you must create a class that inherits the
Sitecore.Form.Submit.ISaveAction interface. This interface contains the Execute method that
must be implemented in your new class, because it is called by all save actions assigned to a web form.
Use this method to implement a save action logic.
The Execute method accepts three arguments:

ID formid – id of the web form item that the action is assigned to.

AdaptedResultList fields – a list of the AdaptedResult classes. Each item in the list provides
information about a web form field that is submitted (Value, FieldID, FieldName, Parameters).

params object[] data – the first element of the array that contains the analytics session ID.
The Web Forms for Marketers module provides several classes that you can inherit a custom class from:

Sitecore.Form.Submit.UserBaseAction class

Sitecore.Form.Core.Submit.AuditSaveAction class
Sitecore.Form.Submit.UserBaseAction class
The Sitecore.Form.Submit.UserBaseAction class lets you manipulating users’ accounts.
The Sitecore.Form.Submit.UserBaseAction class contains the following methods:
Method
Description
public static string Escape(string
userName)
Formats a username (replaces “.” with “_dot_”
and “@” with “_at_”).
public static string
GetFullUserName(string domainName,
string userName)
Ensures that a username contains a domain
name.
protected string
GetProfileProperty(UserProfile
profile, string profileproperty)
Gets a profile property value by its name.
protected string
GetUserNameIfExist(string
preUserName)
Returns a username if the user with the specified
name exists, otherwise returns null.
public static string
GetValidUserName(string domainName,
string userName)
Returns a valid username based on the specified
one.
protected virtual string
ProccessBaseOperations(ID formId,
AdaptedResultList fields, bool
createIfNotExist)
Returns a username if the user exists or was
created (depending on the bool
createIfNotExist argument value) by the
method.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 64 of 80
Reference Guide for MVC Implementation
Method
Description
protected virtual void
UpdateEmail(string userName, string
mail)
Sets the user mail if specified e-mail is valid.
protected virtual void
UpdateGlobalSession(string userName)
Updates the analytics global session with the
specified user.
protected virtual void
UpdatePassword(ID formID, string
userName, string password)
Creates a user with the specified name and
password if none exists. If the Password property
value is blankPassword the user will be created
with blank password, if value is randomPassword
a random password will be generated. This
method also sets the profile item id for the
created user.
protected void
UpdateProfileProperty(UserProfile
profile, string profileproperty,
string propertyValue)
Sets the profile property value.
The Sitecore.Form.Submit.UserBaseAction class contains the following properties:
Property
Description
public bool AssociateUserWithVisitor
{ get; set; }
Indicates whether the analytics global session
must be updated with the user information. This
property is checked in the
UpdateGlobalSession method.
public string AuditField { get; set;
}
It is only used in derived types.
public string DomainField { get; set;
}
Specifies the domain name.
public string PasswordField { get;
set; }
Specifies if the password field name can contain
special values.
public string ProfileItemId { get;
set; }
Sets or gets ID of the user profile item.
public string UserNameField { get;
set; }
Sets or gets the name of the web form field that
contains a username.
public string UserNameIsEmpty { get;
set; }
Sets or gets the exception message that is thrown
if a username is empty.
Sitecore.Form.Core.Submit.AuditSaveAction class
The Sitecore.Form.Core.Submit.AuditSaveAction class lets you collect audit messages when a
save action is executed. It is the base class for the UserBaseAction class.
The Sitecore.Form.Core.Submit.AuditSaveAction class contains the following methods:
Method
Description
public void AuditMessage(string
message)
Adds a message to the messages collection
(class member).
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 65 of 80
Web Forms for Marketers 2.4
Method
Description
public void AuditSkippedField(string
takenFrom, string insertTo, string
value)
Adds an entry to the skipped collection (class
member). This method can be used to track
profile fields that were not overwritten.
3.10.2
Parameters
A save action can have any number of parameters. In the save action class, parameters are represented
as class properties of the string type:
public string MyProperty{ get;set;}
You can specify parameter values in the save action item, in the Parameters field or in the Localized
parameters field in the following format:
<parameter name>value</parameter name>
Specific web form parameters are stored in the web form item and you can edit them in the Form
Designer, in the Action Editor. For more information about the Action Editor, see the Creating an Action
Editor section.
The parameters in the save action item override the parameters specified in the web form item.
3.10.3
How to Create a Save Action
To create a save action, for instance, a login action:
1. Create a new project, for example Sitecore.Forms.Sample.
2. Add a new reference to the Sitecore.Forms.Core assembly.
3. Create a new class that inherits the Sitecore.Form.Submit.ISaveAction interface.
Action Code:
using
using
using
using
using
using
Sitecore.Data;
Sitecore.Diagnostics;
Sitecore.Form.Core.Client.Data.Submit;
Sitecore.Form.Core.Controls.Data;
Sitecore.Form.Submit;
Sitecore.Security.Authentication;
namespace Sitecore.Forms.Sample
{
/// <summary>
/// Login action
/// </summary>
public class LoginAction : ISaveAction
{
#region Methods
/// <summary>
/// Initializes a new instance of the <see cref="LoginAction"/> class.
/// </summary>
public LoginAction()
{
this.DefaultDomain = "sitecore";
}
///
///
///
///
<summary>
Executes the login action.
</summary>
<param name="formid">The form id.</param>
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 66 of 80
Reference Guide for MVC Implementation
/// <param name="fields">The fields of the form.</param>
/// <param name="data">The custom data.</param>
public void Execute(ID formid, AdaptedResultList fields, params object[] data)
{
AdaptedControlResult login = fields.GetEntry(this.Login, "Login");
AdaptedControlResult password = fields.GetEntry(this.Password, "Password");
Assert.ArgumentNotNull(login, "You should point the login field.");
Assert.ArgumentNotNull(password, "You should point the password field.");
string userName = login.Value;
Assert.ArgumentNotNullOrEmpty(userName, "Login can't be empty");
if (!userName.Contains("\\"))
{
userName = string.Join("\\", new[] { this.DefaultDomain, userName });
}
AuthenticationManager.Login(userName, password.Value, true);
}
#endregion
#region Properties
/// <summary>
/// Gets or sets the default domain.
/// </summary>
/// <value>The default domain.</value>
public string DefaultDomain { get; set; }
/// <summary>
/// Gets or sets the login field.
/// </summary>
public string Login { get; set; }
/// <summary>
/// Gets or sets the password field.
/// </summary>
public string Password { get; set; }
#endregion
}
}
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 67 of 80
Web Forms for Marketers 2.4
4. In the Content Editor, create a new item under /sitecore/System/Modules/Web Forms
for Marketers/Settings/Actions/Save Actions and specify its parameters:
For more information about save action parameters, see the section Save Actions.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 68 of 80
Reference Guide for MVC Implementation
3.11
Creating an Action Editor
Action Editor is a dialog box that lets the user set some parameters of a save action. You can create an
Action Editor for your custom save action.
Before creating an Action Editor, refer to the following articles for more information about xml controls:

http://sdn.sitecore.net/Articles/XML%20Sheer%20UI/Beginning%20with%20XML%20controls.asp
x

http://sdn.sitecore.net/SDN5/Articles/XML%20Sheer%20UI/My%20first%20XML%20application.a
spx
The working logic of the Action Editor is the following:

Read save action parameters in the OnLoad method.

Show save action parameters to the user.

After the user edited the parameters, save them to the Save Actions field of the web form using
the OnOk method.
Analyze the following code tips before implementing an Action Editor:

To get current save action parameters:
string params=HttpContext.Current.Session[Sitecore.Web.WebUtil.GetQueryString("params")]
as string;
NameValueCollection nvParams=ParametersUtil.XmlToNameValueCollection(params);

To save parameter values, override the OnOk method:
protected override void OnOK(object sender, EventArgs args)
{
string str3 = ParametersUtil.NameValueCollectionToXml(this.nvParams ?? new
NameValueCollection());
if (str3.Length == 0)
{
str3 = "-";
}
SheerResponse.SetDialogValue(str3);
base.OnOK(sender, args);
}

To get the current web form item ID:
Sitecore.Web.WebUtil.GetQueryString("id");

To get the current language:
Sitecore.Web.WebUtil.GetQueryString("la", "en");

To get the current Sitecore database:
Sitecore.Web.WebUtil.GetQueryString("db");
Perform the following actions to create an action editor:
1. Create an *xml file that contains the dialog layout:
<?xml version="1.0" encoding="utf-8" ?>
<control xmlns:def="Definition" xmlns="http://schemas.sitecore.net/Visual-StudioIntellisense">
<SimpleEditor>
<Stylesheet>
.scfContent {
padding-top : 15px;
}
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 69 of 80
Web Forms for Marketers 2.4
.scfFieldScope{
width:100%; margin:7px;
}
.scfFieldLabel {
width:40%;
}
.scfFieldSelect {
width:58%;
position:absolute;
right:0;
margin-right:20px;
}
</Stylesheet>
<FormDialog ID="Dialog" Icon="Software/32x32/step_new.png">
<CodeBeside Type="Sitecore.Forms.Sample.SimpleEditor,Sitecore.Forms.Sample"/>
<Border Class="scfContent" Width="100%" Align="left" Style="overflow:none;">
<Literal ID="name" Text="Login:" Class="scfFieldLabel"/>
<Combobox runat="server" ID="login"/>
</Border>
<Border Class="scfContent" Width="100%" Align="left" Style="overflow:none;">
<Literal ID="pass" Text="Password:" Class="scfFieldLabel"/>
<Combobox runat="server" ID="password"/>
</Border>
<Border Class="scfContent" Width="100%" Align="left" Style="overflow:none;">
<Literal ID="domLiteral" Text="Default domain:" Class="scfFieldLabel"/>
<Combobox runat="server" ID="domain"/>
</Border>
</FormDialog>
</SimpleEditor>
</control>
2. Create an action editor class based on the Sitecore.Web.UI.Pages.DialogForm one.
Specify the created class as CodeBeside in the *.xml file. Here is the action editor class
sample code:
public class SimpleEditor : DialogForm
{
protected Combobox domain;
protected Combobox login;
protected Combobox password;
private NameValueCollection nvParams;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!Context.ClientPage.IsEvent)
{
foreach (Domain d in DomainManager.GetDomains())
{
Sitecore.Web.UI.HtmlControls.ListItem item = new
Web.UI.HtmlControls.ListItem();
item.Value = d.Name;
item.Header = d.Name;
domain.Controls.Add(item);
}
foreach (FieldItem f in this.CurrentForm.Fields)
{
Sitecore.Web.UI.HtmlControls.ListItem item = new
Web.UI.HtmlControls.ListItem();
item.Value = f.ID.ToString();
item.Header = f.DisplayName;
login.Controls.Add(item);
item = new Web.UI.HtmlControls.ListItem();
item.Value = f.ID.ToString();
item.Header = f.DisplayName;
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 70 of 80
Reference Guide for MVC Implementation
password.Controls.Add(item);
}
domain.Value = this.GetValueByKey("DefaultDomain") ?? string.Empty;
login.Value = this.GetValueByKey("Login") ?? string.Empty;
password.Value=this.GetValueByKey("Password") ??string.Empty;
}
}
protected void SaveValues()
{
this.SetValue("DefaultDomain", domain.Value);
this.SetValue("Login", login.Value);
this.SetValue("Password", password.Value);
}
protected override void OnOK(object sender, EventArgs args)
{
this.SaveValues();
string str3 = ParametersUtil.NameValueCollectionToXml(this.nvParams ?? new
NameValueCollection());
if (str3.Length == 0)
{
str3 = "-";
}
SheerResponse.SetDialogValue(str3);
base.OnOK(sender, args);
}
public void SetValue(string key, string value)
{
if (this.nvParams == null)
{
this.nvParams = ParametersUtil.XmlToNameValueCollection(this.Params);
}
this.nvParams[key] = value;
}
public string GetValueByKey(string key)
{
if (this.nvParams == null)
{
this.nvParams = ParametersUtil.XmlToNameValueCollection(this.Params);
}
return (this.nvParams[key] ?? string.Empty);
}
public string Params
{
get
{
return
(HttpContext.Current.Session[Sitecore.Web.WebUtil.GetQueryString("params")] as string);
}
}
public string CurrentID
{
get
{
return Sitecore.Web.WebUtil.GetQueryString("id");
}
}
public FormItem CurrentForm
{
get
{
if (!string.IsNullOrEmpty(this.CurrentID))
{
Item innerItem = this.CurrentDatabase.GetItem(this.CurrentID,
this.CurrentLanguage);
if (innerItem != null)
{
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 71 of 80
Web Forms for Marketers 2.4
return new FormItem(innerItem);
}
}
return null;
}
}
public virtual Database CurrentDatabase
{
get
{
return Factory.GetDatabase(Sitecore.Web.WebUtil.GetQueryString("db"));
}
}
public virtual Language CurrentLanguage
{
get
{
return Language.Parse(Sitecore.Web.WebUtil.GetQueryString("la", "en"));
}
}
}
3. Specify the created editor in the appropriate Save Action item, in the Editor field:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 72 of 80
Reference Guide for MVC Implementation
3.12
Creating a Form Verification Action
To create a form verification action:
1. In the Content Editor, select the sitecore/content/system/modules/web forms for
marketers/settings/actions/form verification item.
2. Create a new form verification action item and add the appropriate parameters.
Creating a new form verification action is similar to the creating new save action. For more information
about creating a save action, see the Creating a Save Action section.
The only difference is that you must use the Sitecore.Form.Core.Submit.BaseCheckAction class
as a base class for your verification action. To indicate that verification is failed, the module must throw an
exception generated by the actions code. Module handles it and displays an exception message to the
user. The following example shows a verification action that checks whether a size of files uploaded using
the UploadFile field is less than the limited one:
namespace Sitecore.Forms.Sample
{
class SimpleVerification:BaseCheckAction
{
public override void Execute(Sitecore.Data.ID formid,
IEnumerable<Form.Core.Controls.Data.ControlResult> fields)
{
foreach (ControlResult cr in fields)
{
PostedFile file= cr.Value as PostedFile;
if(file!=null)
{
if (file.Data.Length > int.Parse(MaxSize))
{
throw new Exception("File size should be less than " + MaxSize+" bytes");
}
}
}
}
public string MaxSize { get; set; }
}
}
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 73 of 80
Web Forms for Marketers 2.4
In our example, the action definition item may look like this:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 74 of 80
Reference Guide for MVC Implementation
3.13
Accessing Submitted Web Form Data
If you assigned the Save to Database save action to a web form, all the data entered by a website visitor
is saved to the module database. You can access and modify the saved data programmatically.
In the example below, we will perform the following actions:

Get all the submits of a particular web form;

Get the value of the Age field for each web form;

If the value of the Age field is Undefined, change it to The age is not defined.
string formId = "{C797CBE2-B5B9-4C5B-9B60-50438A1783A8}"; // replace the value with ID
of your form item
List<GridFilter> args = new List<Sitecore.Web.UI.Grids.GridFilter>();
args.Add(new GridFilter("storageName", string.Empty,
GridFilter.FilterOperator.Contains));
args.Add(new GridFilter("dataKey", formId, GridFilter.FilterOperator.Contains));
var submits = DataManager.GetForms().GetPage(new PageCriteria(0, 0x7ffffffe), null,
args);
foreach (IForm submit in submits)
{
foreach (IField field in submit.Field)
{
if (field.FieldName == "Age" && field.Value == "undefined")
{
field.Value = "The age is not defined";
DataManager.UpdateForm(submit); // Call to save the changed field values
}
}
}
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 75 of 80
Web Forms for Marketers 2.4
3.14
Configuring CSS Themes and Styles
The WFFM module provides support for Twitter Bootstrap out of the box. You can load CSS styles
including Bootstrap themes the same way as scripts – either automatically or using bundles.
To disable loading the default WFFM Bootstrap theme, in the Sitecore.MvcForms.config file, set the
WFM.EnableBootstrapCssRendering setting to false.
Note
You only need to disable the default theme if your website has a Bootstrap theme installed and you do
not want the WFFM theme to override existing styles.
To change the CSS styles of a form, you can modify settings that are available in the MVC Specific
Settings section of the corresponding form item:
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 76 of 80
Reference Guide for MVC Implementation
3.15
Turning On / Off Ajax Submission for a Web Form
You can turn Ajax submission on or off for a web form.
To turn Ajax on or off on a web form:
1. In the Content Editor, click the web form’s item in the /sitecore/system/Modules/Web Forms for
Marketers/Website/[form name] and locate Is Ajax Mvc Form checkbox.
2. By default, the check box is selected. To turn Ajax submission off, clear the check box.
3. To save the changes, click Save.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 77 of 80
Web Forms for Marketers 2.4
3.16
Reinstalling the Module
Sometimes you have to reinstall the Web Forms for Marketers module to make sure all the files and items
are correct. The files and items could be corrupted during unsuccessful upgrade process.
Note
When you re-install the module, all the save action parameters reset to default values.
To re-install the module and save all the created web forms:
1. Create a Sitecore package that contains all the items of the created web forms.
2. Back up the module database.
3. If you modified the Sitecore.forms.config file, back up this file.
4. Install the Web Forms for Marketers installation package.
o
Choose Overwrite all when prompted.
o
Choose Continue always when prompted.
5. When the installation is finished, install a package with web form items.
6. Restore the module database.
7. Restore the Sitecore.forms.config file.
8. Configure the save action parameters because those parameters were reset to default values.
For example, in the Send Email Message save action, set the host parameter.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 78 of 80
Reference Guide for MVC Implementation
3.17
Uninstalling the Module
You can uninstall the module by removing all the related files and items.
To uninstall the Web Forms for Marketers module, perform the following actions:
1. In the Master database, delete the following items:
o
/sitecore/layout/Renderings/Modules/Web Forms for Marketers
o
/sitecore/media library/Web Forms for Marketers
o
/sitecore/system/Modules/Web Forms for Marketers
o
/sitecore/system/Marketing Center/Goals/Leave a message
o
/sitecore/system/Marketing Center/Goals/Tell a Friend
o
/sitecore/system/Settings/Rules/Web Forms for Marketers Conditions
o
/sitecore/system/Settings/Analytics/Reports/Subreports/Web Forms for Marketers Reports
o
/sitecore/system/Settings/Analytics/Reports/Subreports/Web Forms for Marketers Detailed
Reports
o
/sitecore/templates/Branches/Web Forms for Marketers
o
/sitecore/templates/Web Forms for Marketers
o
All report items related to web forms in the /sitecore/system/Settings/Analytics/Reports SQL
Queries folder with the icon
o
All page event items related to web forms in the /sitecore/system/Settings/Analytics/Page
Events folder with the icon
o
All goal items related to web forms in the /sitecore/system/Marketing Center/Goals folder
2. In the Core database, delete the following items:
o
/sitecore/content/Applications/Content Editor/Ribbons/Chunks/Forms
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 79 of 80
Web Forms for Marketers 2.4
o
/sitecore/content/Applications/Content Editor/Ribbons/Contextual Ribbons/Forms
o
/sitecore/content/Applications/Content Editor/Ribbons/Strips/Presentation/Forms
o
/sitecore/content/Applications/Modules/Web Forms for Marketers
o
/sitecore/content/Applications/WebEdit/Custom Experience Buttons/Edit Form
o
/sitecore/content/Documents and settings/All users/Start menu/Programs/Web Forms for
Marketers
3. In the file system, delete the following files:
o
\App_Config\Include\Captcha.config
o
\App_Config\Include\Sitecore.forms.config
o
\bin\ MSCaptcha.dll
o
\bin\ Sitecore.Forms.Core.dll
o
\bin\ Sitecore.Forms.Custom.dll
o
\bin\ Sitecore.Forms.MVC.dll
o
\bin\ System.Data.SQLite.dll
o
\bin_x64\ System.Data.SQLite.dll
o
WFFM databases in the \Data folder
o
\layouts\system\ VisitorIdentificationExtension.aspx
o
\sitecore\shell\Applications\Modules\Web Forms for Marketers
o
\sitecore\shell\Themes\Standard\Default\WFM
o
\sitecore\shell\Themes\Standard\Default\FormBuilder.css
o
\sitecore\shell\Themes\Standard\Default\FormDataViewer.css
o
\sitecore\shell\Themes\Standard\Default\MultiTreeView.css
o
\sitecore\shell\Themes\Standard\Default\Placeholder.css
o
\sitecore\shell\Themes\Standard\Firefox\WFM
o
\sitecore\shell\Themes\Standard\Firefox\ FormBuilder.css
o
\sitecore modules\Shell\Web Forms for Marketers
o
\sitecore modules\Web\Web Forms for Marketers
4. Publish the website.
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of
this document are the property of Sitecore. Copyright © 2001-2015 Sitecore. All rights reserved.
Page 80 of 80
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising