private void AddPropertyToForm(ref DnnFormEditor RegistrationForm, ProfilePropertyDefinition property)
        {
            var           controller = new ListController();
            ListEntryInfo imageType  = controller.GetListEntryInfo("DataType", "Image");

            if (property.DataType != imageType.EntryID)
            {
                DnnFormEditControlItem formItem = new DnnFormEditControlItem
                {
                    ID                      = property.PropertyName,
                    ResourceKey             = String.Format("ProfileProperties_{0}", property.PropertyName),
                    LocalResourceFile       = "~/DesktopModules/Admin/Security/App_LocalResources/Profile.ascx.resx",
                    ValidationMessageSuffix = ".Validation",
                    ControlType             = EditorInfo.GetEditor(property.DataType),
                    DataMember              = "Profile",
                    DataField               = property.PropertyName,
                    Visible                 = property.Visible,
                    Required                = property.Required
                };
                //To check if the property has a default value
                if (!String.IsNullOrEmpty(property.DefaultValue))
                {
                    formItem.Value = property.DefaultValue;
                }
                if (!String.IsNullOrEmpty(property.ValidationExpression))
                {
                    formItem.ValidationExpression = property.ValidationExpression;
                }
                RegistrationForm.Items.Add(formItem);
            }
        }
        private void AddPasswordStrengthFieldToForm(ref DnnFormEditor RegistrationForm, string dataField, string dataMember, bool required)
        {
            DnnFormItemBase formItem;

            if (Host.EnableStrengthMeter)
            {
                formItem = new DnnFormPasswordItem
                {
                    TextBoxCssClass   = DnnMembershipUtilities.PasswordStrengthTextBoxCssClass,
                    ContainerCssClass = "password-strength-container"
                };
            }
            else
            {
                formItem = new DnnFormTextBoxItem
                {
                    TextMode        = TextBoxMode.Password,
                    TextBoxCssClass = DnnMembershipUtilities.PasswordStrengthTextBoxCssClass,
                };
            }

            formItem.ID         = dataField;
            formItem.DataField  = dataField;
            formItem.DataMember = dataMember;
            formItem.Visible    = true;
            formItem.Required   = required;

            RegistrationForm.Items.Add(formItem);
        }
        private void AddPasswordConfirmFieldToForm(ref DnnFormEditor RegistrationForm, string dataField, string dataMember, bool required)
        {
            var formItem = new DnnFormTextBoxItem
            {
                ID              = dataField,
                DataField       = dataField,
                DataMember      = dataMember,
                Visible         = true,
                Required        = required,
                TextMode        = TextBoxMode.Password,
                TextBoxCssClass = DnnMembershipUtilities.ConfirmPasswordTextBoxCssClass,
            };

            RegistrationForm.Items.Add(formItem);
        }
        private void AddFieldToForm(ref DnnFormEditor RegistrationForm, string dataField, string dataMember, bool required, string regexValidator, TextBoxMode textMode)
        {
            var formItem = new DnnFormTextBoxItem
            {
                ID         = dataField,
                DataField  = dataField,
                DataMember = dataMember,
                Visible    = true,
                Required   = required,
                TextMode   = textMode
            };

            if (!String.IsNullOrEmpty(regexValidator))
            {
                formItem.ValidationExpression = regexValidator;
            }
            RegistrationForm.Items.Add(formItem);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="RegistrationForm"></param>
        /// <param name="User"></param>
        public void InitialiseUserFormEditor(ref DnnFormEditor RegistrationForm, UserInfo User)
        {
            if (RegistrationFormType == 0)
            {
                //UserName
                if (!UseEmailAsUserName)
                {
                    AddFieldToForm(ref RegistrationForm, "Username", String.Empty, true,
                                   String.IsNullOrEmpty(UserNameValidator) ? ExcludeTerms : UserNameValidator,
                                   TextBoxMode.SingleLine);
                }

                //Password
                if (!RandomPassword)
                {
                    AddPasswordStrengthFieldToForm(ref RegistrationForm, "Password", "Membership", true);

                    if (RequirePasswordConfirm)
                    {
                        AddPasswordConfirmFieldToForm(ref RegistrationForm, "PasswordConfirm", "Membership", true);
                    }
                }

                //Password Q&A
                if (MembershipProviderConfig.RequiresQuestionAndAnswer)
                {
                    AddFieldToForm(ref RegistrationForm, "PasswordQuestion", "Membership", true, String.Empty, TextBoxMode.SingleLine);
                    AddFieldToForm(ref RegistrationForm, "PasswordAnswer", "Membership", true, String.Empty, TextBoxMode.SingleLine);
                }

                //DisplayName
                if (String.IsNullOrEmpty(DisplayNameFormat))
                {
                    AddFieldToForm(ref RegistrationForm, "DisplayName", String.Empty, true, String.Empty, TextBoxMode.SingleLine);
                }
                else
                {
                    AddFieldToForm(ref RegistrationForm, "FirstName", String.Empty, true, String.Empty, TextBoxMode.SingleLine);
                    AddFieldToForm(ref RegistrationForm, "LastName", String.Empty, true, String.Empty, TextBoxMode.SingleLine);
                }

                //Email
                AddFieldToForm(ref RegistrationForm, "Email", String.Empty, true, EmailValidator, TextBoxMode.SingleLine);

                if (RequireValidProfile)
                {
                    foreach (ProfilePropertyDefinition property in User.Profile.ProfileProperties)
                    {
                        if (property.Required)
                        {
                            AddPropertyToForm(ref RegistrationForm, property);
                        }
                    }
                }
            }
            else
            {
                var fields = RegistrationFields.Split(',').ToList();
                //append question/answer field when RequiresQuestionAndAnswer is enabled in config.
                if (MembershipProviderConfig.RequiresQuestionAndAnswer)
                {
                    if (!fields.Contains("PasswordQuestion"))
                    {
                        fields.Add("PasswordQuestion");
                    }
                    if (!fields.Contains("PasswordAnswer"))
                    {
                        fields.Add("PasswordAnswer");
                    }
                }

                foreach (string field in fields)
                {
                    var trimmedField = field.Trim();
                    switch (trimmedField)
                    {
                    case "Username":
                        AddFieldToForm(ref RegistrationForm, "Username", String.Empty, true, String.IsNullOrEmpty(UserNameValidator)
                                                                        ? ExcludeTerms : UserNameValidator,
                                       TextBoxMode.SingleLine);
                        break;

                    case "Email":
                        AddFieldToForm(ref RegistrationForm, "Email", String.Empty, true, EmailValidator, TextBoxMode.SingleLine);
                        break;

                    case "Password":
                        AddPasswordStrengthFieldToForm(ref RegistrationForm, trimmedField, "Membership", true);
                        break;

                    case "PasswordConfirm":
                        AddPasswordConfirmFieldToForm(ref RegistrationForm, trimmedField, "Membership", true);
                        break;

                    case "PasswordQuestion":
                    case "PasswordAnswer":
                        AddFieldToForm(ref RegistrationForm, trimmedField, "Membership", true, String.Empty, TextBoxMode.SingleLine);
                        break;

                    case "DisplayName":
                        AddFieldToForm(ref RegistrationForm, trimmedField, String.Empty, true, ExcludeTerms, TextBoxMode.SingleLine);
                        break;

                    default:
                        ProfilePropertyDefinition property = User.Profile.GetProperty(trimmedField);
                        if (property != null)
                        {
                            AddPropertyToForm(ref RegistrationForm, property);
                        }
                        break;
                    }
                }
            }
        }