Skip to content

Commit 3120d0d

Browse files
committed
DNN-8767: use the regex from core to validate email address.
1 parent 8a24ab5 commit 3120d0d

File tree

4 files changed

+11
-4
lines changed

4 files changed

+11
-4
lines changed
Binary file not shown.

src/Dnn.ContactList.Spa/ClientScripts/contacts.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ ko.extenders.required = function (target, options) {
1010

1111
var regEx = new RegExp(options.regEx);
1212
//define a function to do validation
13+
var errorMessage = options.overrideMessage || "This field is required";
1314
function validate(newValue) {
14-
target.hasError(regEx.test(newValue) && newValue !== "" ? false : true);
15-
target.validationClass(regEx.test(newValue) && newValue !== "" ? "form-control" : "form-control has-error");
16-
target.validationMessage(regEx.test(newValue) && newValue !== "" ? "" : options.overrideMessage || "This field is required");
15+
var validated = regEx.test(newValue) && newValue !== "";
16+
target.hasError(!validated);
17+
target.validationClass(validated ? "form-control" : "form-control has-error");
18+
target.validationMessage(validated ? "" : errorMessage);
1719
}
1820

1921
//validate whenever the value changes
@@ -158,7 +160,7 @@ contactList.contactViewModel = function(parentViewModel, config) {
158160
self.contactId = ko.observable(-1);
159161
self.firstName = ko.observable('').extend({ required: { overrideMessage: "Please enter a first name" } });
160162
self.lastName = ko.observable('').extend({ required: { overrideMessage: "Please enter a last name" } });
161-
self.email = ko.observable('').extend({ required: { overrideMessage: "Please enter a valid email address", regEx: /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ } });
163+
self.email = ko.observable('').extend({ required: { overrideMessage: "Please enter a valid email address", regEx: config.settings.emailRegex } });
162164
self.phone = ko.observable('').extend({ required: { overrideMessage: "Please enter a valid phone number in the format: 123-456-7890", regEx: /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$/ } });
163165
self.twitter = ko.observable('');
164166

src/Dnn.ContactList.Spa/Components/SettingsPropertyAccess.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT License. See LICENSE in the project root for license information.
33

44
using System.Globalization;
5+
using System.Text.RegularExpressions;
56
using DotNetNuke.Common;
67
using DotNetNuke.Entities.Users;
78
using DotNetNuke.Services.Tokens;
@@ -66,6 +67,9 @@ public string GetProperty(string propertyName, string format, CultureInfo format
6667
case "IsFormEnabled":
6768
propertyValue = _service.IsFormEnabled(_moduleId, _tabId).ToString().ToLower();
6869
break;
70+
case "EmailRegex":
71+
propertyValue = Regex.Escape(Globals.glbEmailRegEx);
72+
break;
6973
default:
7074
propertyNotFound = true;
7175
break;

src/Dnn.ContactList.Spa/ContactList.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898

9999
var settings = {
100100
isFormEnabled: [contactsettings:IsFormEnabled],
101+
emailRegex: "[contactsettings:EmailRegex]",
101102
servicesFramework: $.ServicesFramework(moduleId),
102103
moduleId: moduleId,
103104
quickSettingsDispatcher: dnn.modules.spa.dnnContactListSpa.quickSettingsDispatcher

0 commit comments

Comments
 (0)