diff --git a/common/djangoapps/user_api/tests/test_views.py b/common/djangoapps/user_api/tests/test_views.py index d6319c549b..49d3741875 100644 --- a/common/djangoapps/user_api/tests/test_views.py +++ b/common/djangoapps/user_api/tests/test_views.py @@ -1345,7 +1345,9 @@ class RegistrationViewTest(ApiTestCase): self.assertEqual(response.status_code, 409) self.assertEqual( response.content, - "It looks like {} belongs to an existing account.".format(self.EMAIL) + "It looks like {} belongs to an existing account. Try again with a different email address.".format( + self.EMAIL + ) ) def test_register_duplicate_username(self): @@ -1370,7 +1372,9 @@ class RegistrationViewTest(ApiTestCase): self.assertEqual(response.status_code, 409) self.assertEqual( response.content, - "It looks like {} belongs to an existing account.".format(self.USERNAME) + "It looks like {} belongs to an existing account. Try again with a different email address and username.".format( + self.USERNAME + ) ) def test_register_duplicate_username_and_email(self): @@ -1395,7 +1399,7 @@ class RegistrationViewTest(ApiTestCase): self.assertEqual(response.status_code, 409) self.assertEqual( response.content, - "It looks like {} and {} belong to an existing account.".format( + "It looks like {} and {} belong to an existing account. Try again with a different email address and username.".format( self.EMAIL, self.USERNAME ) ) diff --git a/common/djangoapps/user_api/views.py b/common/djangoapps/user_api/views.py index 58c18c3097..4791f15d2d 100644 --- a/common/djangoapps/user_api/views.py +++ b/common/djangoapps/user_api/views.py @@ -280,19 +280,19 @@ class RegistrationView(APIView): # account using both an email address and a username associated with an # existing account. error_msg = _( - u"It looks like {email_address} and {username} belong to an existing account." + u"It looks like {email_address} and {username} belong to an existing account. Try again with a different email address and username." ).format(email_address=email, username=username) elif 'email' in conflicts: # Translators: This message is shown to users who attempt to create a new # account using an email address associated with an existing account. error_msg = _( - u"It looks like {email_address} belongs to an existing account." + u"It looks like {email_address} belongs to an existing account. Try again with a different email address." ).format(email_address=email) else: # Translators: This message is shown to users who attempt to create a new # account using a username associated with an existing account. error_msg = _( - u"It looks like {username} belongs to an existing account." + u"It looks like {username} belongs to an existing account. Try again with a different username." ).format(username=username) return HttpResponse( @@ -504,14 +504,20 @@ class RegistrationView(APIView): # Translators: "Terms of Service" is a legal document users must agree to # in order to register a new account. label = _( - u"I agree to the {terms_of_service}" - ).format(terms_of_service=terms_link) + u"I agree to the {platform_name} {terms_of_service}." + ).format( + platform_name=settings.PLATFORM_NAME, + terms_of_service=terms_link + ) # Translators: "Terms of Service" is a legal document users must agree to # in order to register a new account. error_msg = _( - u"You must agree to the {terms_of_service}" - ).format(terms_of_service=terms_link) + u"You must agree to the {platform_name} {terms_of_service}." + ).format( + platform_name=settings.PLATFORM_NAME, + terms_of_service=terms_link + ) form_desc.add_field( "honor_code", @@ -535,11 +541,21 @@ class RegistrationView(APIView): # Translators: "Terms of service" is a legal document users must agree to # in order to register a new account. - label = _(u"I agree to the {terms_of_service}").format(terms_of_service=terms_link) + label = _( + u"I agree to the {platform_name} {terms_of_service}." + ).format( + platform_name=settings.PLATFORM_NAME, + terms_of_service=terms_link + ) # Translators: "Terms of service" is a legal document users must agree to # in order to register a new account. - error_msg = _("You must agree to the {terms_of_service}").format(terms_of_service=terms_link) + error_msg = _( + u"You must agree to the {platform_name} {terms_of_service}." + ).format( + platform_name=settings.PLATFORM_NAME, + terms_of_service=terms_link + ) form_desc.add_field( "terms_of_service", diff --git a/common/static/js/spec/edx.utils.validate_spec.js b/common/static/js/spec/edx.utils.validate_spec.js index 54de2f03ff..2983f421b2 100644 --- a/common/static/js/spec/edx.utils.validate_spec.js +++ b/common/static/js/spec/edx.utils.validate_spec.js @@ -9,9 +9,10 @@ describe('edx.utils.validate', function () { VALID_STRING = 'xsy_is_awesome', SHORT_STRING = 'x', LONG_STRING = 'xsy_is_way_too_awesome', - REQUIRED_ERROR_FRAGMENT = 'required', + EMAIL_ERROR_FRAGMENT = 'formatted', MIN_ERROR_FRAGMENT = 'least', MAX_ERROR_FRAGMENT = 'up to', + REQUIRED_ERROR_FRAGMENT = 'empty', CUSTOM_MESSAGE = 'custom message'; var createFixture = function( type, name, required, minlength, maxlength, value ) { @@ -117,11 +118,11 @@ describe('edx.utils.validate', function () { createFixture('email', 'email', false, MIN_LENGTH, MAX_LENGTH, 'localpart'); // Verify optional field behavior - expectInvalid('invalid'); + expectInvalid(EMAIL_ERROR_FRAGMENT); // Verify required field behavior field.prop('required', false); - expectInvalid('invalid'); + expectInvalid(EMAIL_ERROR_FRAGMENT); }); it('succeeds if an email field is provided a valid address', function () { diff --git a/common/static/js/utils/edx.utils.validate.js b/common/static/js/utils/edx.utils.validate.js index b20a10016e..60366c6630 100644 --- a/common/static/js/utils/edx.utils.validate.js +++ b/common/static/js/utils/edx.utils.validate.js @@ -18,10 +18,10 @@ var edx = edx || {}; validate: { msg: { - email: '
  • <%- gettext("The email address you\'ve provided is invalid.") %>
  • ', - min: '
  • <%- _.sprintf(gettext("%(field)s must have at least %(count)d characters"), context) %>
  • ', - max: '
  • <%- _.sprintf(gettext("%(field)s can only contain up to %(count)d characters"), context) %>
  • ', - required: '
  • <%- _.sprintf(gettext("%(field)s is required"), context) %>
  • ', + email: '
  • <%- gettext("The email address you\'ve provided isn\'t formatted correctly.") %>
  • ', + min: '
  • <%- _.sprintf(gettext("%(field)s must have at least %(count)d characters."), context) %>
  • ', + max: '
  • <%- _.sprintf(gettext("%(field)s can only contain up to %(count)d characters."), context) %>
  • ', + required: '
  • <%- _.sprintf(gettext("The %(field)s field cannot be empty."), context) %>
  • ', custom: '
  • <%= content %>
  • ' }, @@ -73,12 +73,6 @@ var edx = edx || {}; var max = $el.attr('maxlength') || false; return ( !!max ) ? max >= $el.val().length : true; - }, - - capitalizeFirstLetter: function( str ) { - str = str.replace('_', ' '); - - return str.charAt(0).toUpperCase() + str.slice(1); } }, @@ -121,16 +115,21 @@ var edx = edx || {}; } }, + getLabel: function( id ) { + // Extract the field label, remove the asterisk (if it appears) and any extra whitespace + return $("label[for=" + id + "]").text().split("*")[0].trim(); + }, + getMessage: function( $el, tests ) { var txt = [], tpl, - name, + label, obj, customMsg; _.each( tests, function( value, key ) { if ( !value ) { - name = $el.attr('name'); + label = _fn.validate.getLabel( $el.attr('id') ); customMsg = $el.data('errormsg-' + key) || false; // If the field has a custom error msg attached, use it @@ -147,7 +146,7 @@ var edx = edx || {}; // We pass the context object to the template so that // we can perform variable interpolation using sprintf context: { - field: _fn.validate.str.capitalizeFirstLetter( name ) + field: label } }; diff --git a/lms/templates/student_account/access.underscore b/lms/templates/student_account/access.underscore index 65b66bd4cf..6117f11d9e 100644 --- a/lms/templates/student_account/access.underscore +++ b/lms/templates/student_account/access.underscore @@ -5,7 +5,7 @@ diff --git a/lms/templates/student_account/register.underscore b/lms/templates/student_account/register.underscore index d588940666..8d93a2427c 100644 --- a/lms/templates/student_account/register.underscore +++ b/lms/templates/student_account/register.underscore @@ -18,7 +18,7 @@