diff --git a/app/views/devise/passwords/edit.html.erb b/app/views/devise/passwords/edit.html.erb index 27cc107..eb06aab 100644 --- a/app/views/devise/passwords/edit.html.erb +++ b/app/views/devise/passwords/edit.html.erb @@ -6,26 +6,22 @@
- <%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %> - <%= devise_error_messages! %> - <%= f.hidden_field :reset_password_token %> -
- - - - - - - - - -
<%= t('helpers.new_password') %><%= f.password_field :password, :autofocus => true %>
<%= t('helpers.password') %><%= f.password_field :password_confirmation %>
-
- <%= f.submit t('helpers.save'), :class => 'btn btn-primary', role: 'button'%> -
-
- <% end %> + <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: {method: :put, id: "user_reset_password"}) do |f| %> + <%= devise_error_messages! %> + <%= f.hidden_field :reset_password_token %> - <%= render "devise/shared/links" %> +
+ <%= f.label(:email, _('New password'), class: 'control-label') %> + <%= f.password_field(:password, class: 'form-control', "aria-required": true) %> +
+
+ <%= f.label(:email, _('Confirm password'), class: 'control-label') %> + <%= f.password_field(:password_confirmation, class: 'form-control', "aria-required": true) %> +
+ + <%= f.button(_('Save'), class: "btn btn-default", type: "submit") %> + + <%= render "devise/shared/links" %> + <% end %>
diff --git a/app/views/devise/passwords/new.html.erb b/app/views/devise/passwords/new.html.erb index b6718cc..f29aaa9 100644 --- a/app/views/devise/passwords/new.html.erb +++ b/app/views/devise/passwords/new.html.erb @@ -1,5 +1,3 @@ -<% javascript "views/devise/passwords/new.js" %> -
<% unless @user.errors[:email].empty? %> @@ -14,24 +12,13 @@
- <%= form_for resource, as: 'user', url: user_password_path, html: {class: "password-reset roadmap-form", method: :post} do |f| %> + <%= form_for resource, as: 'user', url: user_password_path, html: {method: :post, id: "user_request_reset_password"} do |f| %> +
+ <%= f.label(:email, _('Email'), class: 'control-label') %> + <%= f.email_field(:email, class: 'form-control', "aria-required": true) %> +
-
-
- <%= f.label(:email, _('Email'), class: 'required') %> - <%= f.email_field(:email, class: 'left-indent required input-small') %> - -
- -
- <%= render partial: 'shared/accessible_submit_button', - locals: {id: 'password-reset-button', - val: _('Send'), - disabled_initially: true, - classes: 'left-indent', - tooltip: _('Enter a valid email.')} %> -
-
+ <%= f.button(_('Send'), class: "btn btn-default", type: "submit") %> <% end %>
\ No newline at end of file diff --git a/lib/assets/javascripts/application.js b/lib/assets/javascripts/application.js index df8cd3a..2b7eefa 100644 --- a/lib/assets/javascripts/application.js +++ b/lib/assets/javascripts/application.js @@ -35,6 +35,7 @@ // utils JS files //= require define.js +//= require constants.js //= require utils/debounce.js //= require utils/tinymce.js //= require utils/validate.js @@ -49,6 +50,7 @@ //= require views/notes/archive.js //= require views/contacts/new.js //= require views/plans/index.js +//= require views/devise/devise.js // Rest of JS files //= require dmproadmap/accordions.js diff --git a/lib/assets/javascripts/constants.js b/lib/assets/javascripts/constants.js new file mode 100644 index 0000000..e364441 --- /dev/null +++ b/lib/assets/javascripts/constants.js @@ -0,0 +1,10 @@ +(function(ctx){ + var vals = { + PASSWORD_MIN_LENGTH: 8, + PASSWORD_MAX_LENGTH: 128 + }; + + for(var key in vals){ + ctx[key] = ctx[key] || vals[key]; + } +})(define('dmproadmap.constants')); diff --git a/lib/assets/javascripts/utils/ariatiseForm.js b/lib/assets/javascripts/utils/ariatiseForm.js index 6762df8..c787d77 100644 --- a/lib/assets/javascripts/utils/ariatiseForm.js +++ b/lib/assets/javascripts/utils/ariatiseForm.js @@ -86,6 +86,8 @@ return dmproadmap.utils.validate.text(value); case 'email': return dmproadmap.utils.validate.email(value); + case 'password': + return dmproadmap.utils.validate.password(value); default: return false; } diff --git a/lib/assets/javascripts/utils/validate.js b/lib/assets/javascripts/utils/validate.js index 5ff7c09..4d061c0 100644 --- a/lib/assets/javascripts/utils/validate.js +++ b/lib/assets/javascripts/utils/validate.js @@ -21,4 +21,20 @@ return /[^@\s]+@(?:[-a-z0-9]+\.)+[a-z]{2,}$/.test(value); return false; }); + /* + validates whether or not the value falls between the min/max length + values defined in constants.js + */ + ctx.password = ctx.password || (function(value){ + if(Object.prototype.toString.call(value) === '[object String]') + return (value.trim().length >= dmproadmap.constants.PASSWORD_MIN_LENGTH && + value.trim().length <= dmproadmap.constants.PASSWORD_MAX_LENGTH); + return false; + }); + /* + validates whether the two values match (e.g. password and password_confirmation) + */ + ctx.matches = ctx.matches || (function(valueA, valueB){ + return valueA === valueB; + }); })(define('dmproadmap.utils.validate')); \ No newline at end of file diff --git a/lib/assets/javascripts/views/devise/devise.js b/lib/assets/javascripts/views/devise/devise.js new file mode 100644 index 0000000..3d8f845 --- /dev/null +++ b/lib/assets/javascripts/views/devise/devise.js @@ -0,0 +1,7 @@ +$(document).ready(function(){ + // Password reset + dmproadmap.utils.ariatiseForm.init({ selector: '#user_request_reset_password' }); + dmproadmap.utils.ariatiseForm.init({ selector: '#user_reset_password' }); + + +}); \ No newline at end of file diff --git a/lib/assets/javascripts/views/devise/passwords/new.js b/lib/assets/javascripts/views/devise/passwords/new.js deleted file mode 100644 index ccd3c8d..0000000 --- a/lib/assets/javascripts/views/devise/passwords/new.js +++ /dev/null @@ -1,5 +0,0 @@ -$(document).ready(function(){ - $("form.password-reset #user_email").on('change keyup', function(){ - $("#password-reset-button").attr('aria-disabled', validateEmail($(this).val()) != ''); - }); -}); \ No newline at end of file