From fdb86b7db4275e49157de6aa1463ef730b25b76e Mon Sep 17 00:00:00 2001 From: Azul Date: Fri, 24 Mar 2017 12:06:54 +0100 Subject: fix: make use of client_side_validations in js --- app/assets/javascripts/users.js | 73 +++++++++-------------------------------- 1 file changed, 15 insertions(+), 58 deletions(-) (limited to 'app') diff --git a/app/assets/javascripts/users.js b/app/assets/javascripts/users.js index 4b5198f..59478a6 100644 --- a/app/assets/javascripts/users.js +++ b/app/assets/javascripts/users.js @@ -1,13 +1,6 @@ (function() { - var settings = { - "error_class":"help-inline", - "error_tag":"span", - "wrapper_error_class":"error", - "wrapper_tag":"div", - "wrapper_class":"form-group" - } // // LOCAL FUNCTIONS @@ -17,9 +10,7 @@ poll_identities, prevent_default, clear_errors, - clear_field_errors, - validate_password_confirmation, - validate_password_length, + signup, update_user; prevent_default = function(event) { @@ -42,8 +33,13 @@ return $('#messages').empty(); }; - clear_field_errors = function() { - return $(settings.error_tag + '.' + settings.error_class).remove(); + signup = function(submitEvent) { + var form = submitEvent.target; + var validations = form.ClientSideValidations + if ( ( typeof validations === 'undefined' ) || + $(form).isValid(validations.settings.validators) ) { + srp.signup(); + } }; update_user = function(submitEvent) { @@ -61,33 +57,6 @@ }); }; - validate_password_confirmation = function(submitEvent) { - var form = submitEvent.target; - var password = $(form).find('input#srp_password').val(); - var confirmation = $(form).find('input#srp_password_confirmation').val(); - if (password === confirmation) { - return true; - } - else { - displayFieldError("password_confirmation", "does not match."); - submitEvent.stopImmediatePropagation() - return false; - } - }; - - validate_password_length = function(submitEvent) { - var form = submitEvent.target; - var password = $(form).find('input#srp_password').val(); - if (password.length > 7) { - return true; - } - else { - displayFieldError("password", "needs to be at least 8 characters long."); - submitEvent.stopImmediatePropagation() - return false; - } - }; - var account = { // Returns the user's identity @@ -175,24 +144,15 @@ var message = $.isArray(error) ? error[0] : error; var element = $('form input[name$="[' + field + ']"]'); if (element) { - addError(element, settings, message); + addError(element, message); } }; - function addError(element, settings, message) { - var errorElement, wrapper; - - errorElement = element.parent().find("" + settings.error_tag + "." + settings.error_class); - wrapper = element.closest(settings.wrapper_tag + '.' + settings.wrapper_class); - if (errorElement[0] == null) { - errorElement = $("<" + settings.error_tag + "/>", { - "class": settings.error_class, - text: message - }); - element.after(errorElement); - } - wrapper.addClass(settings.wrapper_error_class); - return errorElement.text(message); + function addError(element, message) { + var form = element.closest('form'); + var settings = form[0].ClientSideValidations.settings; + ClientSideValidations.formBuilders['SimpleForm::FormBuilder'].add(element, settings, message); + } // @@ -203,10 +163,7 @@ $('.hidden.js-show').removeClass('hidden'); $('.js-show').show(); $('#new_user').submit(prevent_default); - $('#new_user').submit(clear_field_errors); - $('#new_user').submit(validate_password_length); - $('#new_user').submit(validate_password_confirmation); - $('#new_user').submit(srp.signup); + $('#new_user').submit(signup); $('#new_session').submit(prevent_default); $('#new_session').submit(srp.login); $('#update_login_and_password').submit(prevent_default); -- cgit v1.2.3 From b1b523f08a9ce7ea5fe0d50dc8b86995e00b48d6 Mon Sep 17 00:00:00 2001 From: Azul Date: Fri, 24 Mar 2017 12:08:50 +0100 Subject: upgrade: simple_form to bootstrap 3 * reran the simple form initializer. * wrapped submit buttons are now broken and need a fix. * disabled confirmation validation in client side validations as the error message always is attached to the wrong field. --- app/assets/javascripts/users.js | 16 ++++++++++++++++ app/views/account/new.html.haml | 15 ++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) (limited to 'app') diff --git a/app/assets/javascripts/users.js b/app/assets/javascripts/users.js index 59478a6..9a10532 100644 --- a/app/assets/javascripts/users.js +++ b/app/assets/javascripts/users.js @@ -10,6 +10,7 @@ poll_identities, prevent_default, clear_errors, + validate_password_confirmation, signup, update_user; @@ -57,6 +58,20 @@ }); }; + validate_password_confirmation = function(submitEvent) { + var form = submitEvent.target; + var password = $(form).find('input#srp_password').val(); + var confirmation = $(form).find('input#srp_password_confirmation').val(); + if (password === confirmation) { + return true; + } + else { + displayFieldError("password_confirmation", "does not match."); + submitEvent.stopImmediatePropagation() + return false; + } + }; + var account = { // Returns the user's identity @@ -163,6 +178,7 @@ $('.hidden.js-show').removeClass('hidden'); $('.js-show').show(); $('#new_user').submit(prevent_default); + $('#new_user').submit(validate_password_confirmation); $('#new_user').submit(signup); $('#new_session').submit(prevent_default); $('#new_session').submit(srp.login); diff --git a/app/views/account/new.html.haml b/app/views/account/new.html.haml index d40259e..4766945 100644 --- a/app/views/account/new.html.haml +++ b/app/views/account/new.html.haml @@ -6,7 +6,12 @@ -# to prevent submission in the clear. -# -- form_options = {url: '/not-used', html: {id: 'new_user', class: user_form_class('form-horizontal'), style: 'display:none'}, validate: true} +- form_options = { url: '/not-used', + html: { id: 'new_user', + class: user_form_class('form-horizontal'), + style: 'display:none' }, + validate: true, + wrapper: :horizontal_form } .col-md-1 .col-md-9 @@ -14,14 +19,14 @@ .lead=t :signup_info = render "sessions/warnings" = simple_form_for(@user, form_options) do |f| - = f.input :login, :label => t(:username), :required => false, :input_html => { :id => :srp_username } - = f.input :password, :label => t(:password), :required => false, :validate => true, :input_html => { :id => :srp_password } - = f.input :password_confirmation, :label => t(:password_confirmation), :required => false, :validate => true, :input_html => { :id => :srp_password_confirmation } + = f.input :login, :label => t(:username), :validate => true, :input_html => { :id => :srp_username} + = f.input :password, :label => t(:password), :validate => true, :input_html => { :id => :srp_password } + = f.input :password_confirmation, :label => t(:password_confirmation), :validate => true, :input_html => { :id => :srp_password_confirmation } - if APP_CONFIG[:invite_required] = f.input :invite_code, :label => t(:invite_code), :input_html => { :id => :srp_invite_code } - else = f.input :invite_code, :as => "hidden", :input_html => { :value => " ", :id => :srp_invite_code } - = f.button :wrapped, cancel: home_path + = f.button :submit # :wrapped, cancel: home_path -# -- cgit v1.2.3