Merge branch 'dev-v7' into 7.3.0
Conflicts: build/UmbracoVersion.txt src/Umbraco.Core/Configuration/UmbracoVersion.cs src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
This commit is contained in:
@@ -15,4 +15,4 @@ function noDirtyCheck() {
|
||||
}
|
||||
};
|
||||
}
|
||||
angular.module('umbraco.directives').directive("noDirtyCheck", noDirtyCheck);
|
||||
angular.module('umbraco.directives.validation').directive("noDirtyCheck", noDirtyCheck);
|
||||
@@ -27,4 +27,4 @@ function valHighlight($timeout) {
|
||||
}
|
||||
};
|
||||
}
|
||||
angular.module('umbraco.directives').directive("valHighlight", valHighlight);
|
||||
angular.module('umbraco.directives.validation').directive("valHighlight", valHighlight);
|
||||
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name umbraco.directives.directive:valEmail
|
||||
* @restrict A
|
||||
* @description A custom directive to validate an email address string, this is required because angular's default validator is incorrect.
|
||||
**/
|
||||
function valEmail(valEmailExpression) {
|
||||
|
||||
return {
|
||||
require: 'ngModel',
|
||||
restrict: "A",
|
||||
link: function (scope, elm, attrs, ctrl) {
|
||||
|
||||
var patternValidator = function (viewValue) {
|
||||
//NOTE: we don't validate on empty values, use required validator for that
|
||||
if (!viewValue || valEmailExpression.EMAIL_REGEXP.test(viewValue)) {
|
||||
// it is valid
|
||||
ctrl.$setValidity('valEmail', true);
|
||||
//assign a message to the validator
|
||||
ctrl.errorMsg = "";
|
||||
return viewValue;
|
||||
}
|
||||
else {
|
||||
// it is invalid, return undefined (no model update)
|
||||
ctrl.$setValidity('valEmail', false);
|
||||
//assign a message to the validator
|
||||
ctrl.errorMsg = "Invalid email";
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
|
||||
ctrl.$formatters.push(patternValidator);
|
||||
ctrl.$parsers.push(patternValidator);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
angular.module('umbraco.directives.validation')
|
||||
.directive("valEmail", valEmail)
|
||||
.factory('valEmailExpression', function() {
|
||||
return {
|
||||
EMAIL_REGEXP: /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i
|
||||
};
|
||||
});
|
||||
@@ -105,4 +105,4 @@ function valFormManager(serverValidationManager, $rootScope, $log, $timeout, not
|
||||
}
|
||||
};
|
||||
}
|
||||
angular.module('umbraco.directives').directive("valFormManager", valFormManager);
|
||||
angular.module('umbraco.directives.validation').directive("valFormManager", valFormManager);
|
||||
@@ -182,4 +182,4 @@ function valPropertyMsg(serverValidationManager) {
|
||||
}
|
||||
};
|
||||
}
|
||||
angular.module('umbraco.directives').directive("valPropertyMsg", valPropertyMsg);
|
||||
angular.module('umbraco.directives.validation').directive("valPropertyMsg", valPropertyMsg);
|
||||
@@ -61,4 +61,4 @@ function valRegex() {
|
||||
}
|
||||
};
|
||||
}
|
||||
angular.module('umbraco.directives').directive("valRegex", valRegex);
|
||||
angular.module('umbraco.directives.validation').directive("valRegex", valRegex);
|
||||
@@ -91,4 +91,4 @@ function valServer(serverValidationManager) {
|
||||
}
|
||||
};
|
||||
}
|
||||
angular.module('umbraco.directives').directive("valServer", valServer);
|
||||
angular.module('umbraco.directives.validation').directive("valServer", valServer);
|
||||
@@ -51,4 +51,4 @@ function valServerField(serverValidationManager) {
|
||||
}
|
||||
};
|
||||
}
|
||||
angular.module('umbraco.directives').directive("valServerField", valServerField);
|
||||
angular.module('umbraco.directives.validation').directive("valServerField", valServerField);
|
||||
@@ -35,4 +35,4 @@ function valTab() {
|
||||
}
|
||||
};
|
||||
}
|
||||
angular.module('umbraco.directives').directive("valTab", valTab);
|
||||
angular.module('umbraco.directives.validation').directive("valTab", valTab);
|
||||
@@ -84,4 +84,4 @@ function valToggleMsg(serverValidationManager) {
|
||||
* @requires formController
|
||||
* @description This directive will show/hide an error based on: is the value + the given validator invalid? AND, has the form been submitted ?
|
||||
**/
|
||||
angular.module('umbraco.directives').directive("valToggleMsg", valToggleMsg);
|
||||
angular.module('umbraco.directives.validation').directive("valToggleMsg", valToggleMsg);
|
||||
@@ -7,10 +7,11 @@ LazyLoad.js( [
|
||||
'lib/angular/1.1.5/angular-mocks.js',
|
||||
'lib/angular/1.1.5/angular-sanitize.min.js',
|
||||
'lib/underscore/underscore-min.js',
|
||||
'js/umbraco.installer.js'
|
||||
'js/umbraco.installer.js',
|
||||
'js/umbraco.directives.js'
|
||||
], function () {
|
||||
jQuery(document).ready(function () {
|
||||
angular.bootstrap(document, ['ngSanitize', 'umbraco.install']);
|
||||
angular.bootstrap(document, ['ngSanitize', 'umbraco.install', 'umbraco.directives.validation']);
|
||||
});
|
||||
}
|
||||
);
|
||||
@@ -18,7 +18,7 @@
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="email">Email</label>
|
||||
<div class="controls">
|
||||
<input type="email" id="email" name="email" placeholder="you@example.com" required ng-model="installer.current.model.email" />
|
||||
<input type="text" id="email" name="email" placeholder="you@example.com" required ng-model="installer.current.model.email" val-email />
|
||||
<small class="inline-help">Your email will be used as your login</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
<div>
|
||||
|
||||
<input type="email" name="textbox"
|
||||
<input type="text" name="textbox"
|
||||
ng-model="model.value"
|
||||
id="{{model.alias}}"
|
||||
class="umb-editor umb-textstring textstring"
|
||||
val-email
|
||||
ng-required="model.config.IsRequired || model.validation.mandatory"
|
||||
val-server="value" />
|
||||
|
||||
<span class="help-inline" val-msg-for="textbox" val-toggle-msg="required">Required</span>
|
||||
<span class="help-inline" val-msg-for="textbox" val-toggle-msg="email">Invalid email</span>
|
||||
<span class="help-inline" val-msg-for="textbox" val-toggle-msg="valEmail">Invalid email</span>
|
||||
<span class="help-inline" val-msg-for="textbox" val-toggle-msg="valServer"></span>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
describe('valEmail directive tests', function() {
|
||||
|
||||
var valEmailExpression;
|
||||
|
||||
beforeEach(module('umbraco'));
|
||||
|
||||
beforeEach(inject(function ($injector) {
|
||||
//TODO: I have no idea why this doesn't work!!?? it freakin should
|
||||
//valEmailExpression = $injector.get('valEmailExpression');
|
||||
|
||||
//in the meantime, i've had to hard code the regex statement here
|
||||
valEmailExpression = {
|
||||
EMAIL_REGEXP: /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i
|
||||
};
|
||||
|
||||
}));
|
||||
|
||||
describe('EMAIL_REGEXP', function () {
|
||||
/* global EMAIL_REGEXP: false */
|
||||
it('should validate email', function () {
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('a@b.com')).toBe(true);
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('a@b.museum')).toBe(true);
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('a@B.c')).toBe(true);
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('a@.b.c')).toBe(false);
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('a@-b.c')).toBe(false);
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('a@b-.c')).toBe(false);
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('a@3b.c')).toBe(true);
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('a@b')).toBe(true);
|
||||
expect(valEmailExpression.EMAIL_REGEXP.test('abc@xyz.financial')).toBe(true);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user