diff options
-rw-r--r-- | app/assets/javascripts/application.js | 2 | ||||
-rw-r--r-- | config/initializers/client_side_validations.rb | 14 | ||||
-rw-r--r-- | ui_dependencies.rb | 2 | ||||
-rw-r--r-- | users/app/assets/javascripts/users.js.coffee | 51 | ||||
-rw-r--r-- | users/app/views/users/new.html.haml | 2 |
5 files changed, 48 insertions, 23 deletions
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index dc975d4..f7ca1ec 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -16,3 +16,5 @@ //= require users //= require_tree . //= require bootstrap +//= require rails.validations +//= require rails.validations.simple_form diff --git a/config/initializers/client_side_validations.rb b/config/initializers/client_side_validations.rb new file mode 100644 index 0000000..2c73fa3 --- /dev/null +++ b/config/initializers/client_side_validations.rb @@ -0,0 +1,14 @@ +# ClientSideValidations Initializer + +# Uncomment to disable uniqueness validator, possible security issue +# ClientSideValidations::Config.disabled_validators = [:uniqueness] + +# Uncomment the following block if you want each input field to have the validation messages attached. +ActionView::Base.field_error_proc = Proc.new do |html_tag, instance| + unless html_tag =~ /^<label/ + %{<div class="field_with_errors">#{html_tag}<label for="#{instance.send(:tag_id)}" class="message">#{instance.error_message.first}</label></div>}.html_safe + else + %{<div class="field_with_errors">#{html_tag}</div>}.html_safe + end +end + diff --git a/ui_dependencies.rb b/ui_dependencies.rb index 9b9f853..44f8f32 100644 --- a/ui_dependencies.rb +++ b/ui_dependencies.rb @@ -2,6 +2,8 @@ gem "haml", "~> 3.1.7" gem "bootstrap-sass", "~> 2.1.0" gem "jquery-rails" gem "simple_form" +gem 'client_side_validations' +gem 'client_side_validations-simple_form' group :assets do gem "haml-rails", "~> 0.3.4" diff --git a/users/app/assets/javascripts/users.js.coffee b/users/app/assets/javascripts/users.js.coffee index 24302fe..8a9f0e9 100644 --- a/users/app/assets/javascripts/users.js.coffee +++ b/users/app/assets/javascripts/users.js.coffee @@ -3,43 +3,50 @@ # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ # -validate_password = (event) -> +preventDefault = (event) -> + event.preventDefault() - password = $('#srp_password').val() - confirmation = $('#srp_password_confirmation').val() - login = $('#srp_username').val() - - if password != confirmation - alert "Password and Confirmation do not match!" - $('#srp_password').focus() - return false - if password == login - alert "Password and Login may not match!" - $('#srp_password').focus() - return false - if password.length < 8 - alert "Password needs to be at least 8 characters long!" - $('#srp_password').focus() - return false +validOrAbort = (event) -> + errors = {} + + abortIfErrors = -> + return if $.isEmptyObject(errors) + $.each errors, (field, error) -> + alert(error) + $('#srp_password').focus() + event.stopImmediatePropagation() + + validatePassword = -> + password = $('#srp_password').val() + confirmation = $('#srp_password_confirmation').val() + login = $('#srp_username').val() + + if password != confirmation + errors.password_confirmation = "Confirmation does not match!" + if password == login + errors.password = "Password and Login may not match!" + if password.length < 8 + errors.password = "Password needs to be at least 8 characters long!" + + validatePassword() + abortIfErrors() - return true - signup = (event) -> srp = new SRP(jqueryRest()) srp.register -> window.location = '/' - false login = (event) -> srp = new SRP(jqueryRest()) srp.identify -> window.location = '/' - false $(document).ready -> - $('#new_user').submit validate_password + $('#new_user').submit preventDefault + $('#new_user').submit validOrAbort $('#new_user').submit signup + $('#new_session').submit preventDefault $('#new_session').submit login diff --git a/users/app/views/users/new.html.haml b/users/app/views/users/new.html.haml index 835e99a..3e7d06d 100644 --- a/users/app/views/users/new.html.haml +++ b/users/app/views/users/new.html.haml @@ -1,6 +1,6 @@ .span8.offset2 %h2=t :signup - = simple_form_for @user, :html => {:class => 'form-horizontal'} do |f| + = simple_form_for @user, :validate => true, :html => {:class => 'form-horizontal'} do |f| %legend=t :signup_message = f.input :login, :input_html => { :id => :srp_username } = f.input :password, :required => true, :input_html => { :id => :srp_password } |