From b5ca790b985020e2c10962e5f1e0210c4738d2da Mon Sep 17 00:00:00 2001 From: Sarah Brittain Date: Tue, 10 Jul 2012 03:22:27 -0400 Subject: [PATCH 1/7] issue 19 --- app/assets/images/accept.png | Bin 0 -> 781 bytes app/assets/images/cross.png | Bin 0 -> 655 bytes app/assets/stylesheets/quadbase.css | 52 +++++++++++++++++++ app/views/devise/registrations/new.html.erb | 54 ++++++++++++++++++-- 4 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 app/assets/images/accept.png create mode 100644 app/assets/images/cross.png diff --git a/app/assets/images/accept.png b/app/assets/images/accept.png new file mode 100644 index 0000000000000000000000000000000000000000..89c8129a490b329f3165f32fa0781701aab417ea GIT binary patch literal 781 zcmV+o1M>WdP)4-QibtN)VXQDpczE`xXAkUjh%RI>;okxb7K@0kpyQ1k_Y(|Oe7$m(^ zNYX>mI||sUbmn+c3<&FnE=4u#()KBS^SH8e)Qs5i!#lY=$-1gbH6VluzU=m=EP78&5vQ z-?+fFP-G2l&l_QzYealK$;1Rl?FkzXR&Jv@fBPNjCr#AYRyJ7UJQ0v#?)7Ott=>3`#-pV!7>9}>Q1jL)H6h&gkP@3nI=+F3nA~M>u#(n* z8T!#8oEw&-mED4!h4s!N@Jo3S7N&Q6%6l3}nlcd~X@>;uelvPsSkXIgg~e+^T1zSf z3SNj(5%jK~i8@b;CuEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#

Password
<%= f.password_field :password %>

+
+

Password must meet the following requirements:

+ +
  • At least one letter
  • +
  • At least one number
  • +
  • At least 8 characters
  • +
    +

    Password Confirmation
    <%= f.password_field :password_confirmation %>

    @@ -41,15 +49,53 @@ <%# JS to enable/disable the submit button dependent on if the agree checkbox is checked %> <% content_for :javascript do %> <%= javascript_tag do %> +var len = false; +var letter = false; +var number = false; $('#agreement_checkbox').live('click', function() { - if ($('#agreement_checkbox').is(':checked')) { - $('#register_submit').removeAttr('disabled'); - $('#register_submit').removeClass('ui-state-disabled'); - } + if ($('#agreement_checkbox').is(':checked') & (len == true)& (letter == true) & (number == true)){ + $('#register_submit').removeAttr('disabled'); + $('#register_submit').removeClass('ui-state-disabled'); + + } else { $('#register_submit').attr('disabled', 'disabled'); $('#register_submit').addClass('ui-state-disabled'); } }); +$('input[type=password]').keyup(function(){ + //set password variable + var pswd = $(this).val(); + + //validate the length + if (pswd.length < 8) { + $('#length').removeClass('valid').addClass('invalid'); + len = false; + } else { + $('#length').removeClass('invalid').addClass('valid'); + len = true; + } + //validate letter + if (pswd.match(/[A-z]/)){ + $('#letter').removeClass('invalid').addClass('valid'); + letter = true; + } else { + $('#letter').removeClass('valid').addClass('invalid'); + letter = false; + } + //validate number + if (pswd.match(/\d/)){ + $('#number').removeClass('invalid').addClass('valid'); + number = true; + } else { + $('#number').removeClass('valid').addClass('invalid'); + number = false; + } +}).focus(function(){ + $('#pswd_info').show(); +}).blur(function(){ + $('#pswd_info').hide(); +}); <% end %> <% end %> + From 1861b7e9fc5772cc675e2725b6f06f715d9b8afb Mon Sep 17 00:00:00 2001 From: Sarah Brittain Date: Wed, 11 Jul 2012 15:18:30 -0400 Subject: [PATCH 2/7] fixed error where user could undo correct password --- app/models/user.rb | 2 +- app/views/devise/registrations/new.html.erb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 1ac0f1a..17419fe 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -37,7 +37,7 @@ class User < ActiveRecord::Base validates_presence_of :first_name, :last_name, :username, :user_profile validates_uniqueness_of :username, :case_sensitive => false - validates_length_of :username, :in => 3..40 + validates_length_of :username, :in => 8..40 validates_format_of :username, :with => /^[A-Za-z\d_]+$/ # alphanum + _ validate :validate_username_unchanged, :on => :update diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index bdf1255..fbbd60c 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -63,6 +63,19 @@ $('#agreement_checkbox').live('click', function() { $('#register_submit').addClass('ui-state-disabled'); } }); + +$('#password_field').focus(function(){ + if ($('#agreement_checkbox').is(':checked') & (len == true)& (letter == true) & (number == true)){ + $('#register_submit').removeAttr('disabled'); + $('#register_submit').removeClass('ui-state-disabled'); + + } + else { + $('#register_submit').attr('disabled', 'disabled'); + $('#register_submit').addClass('ui-state-disabled'); + } +}); + $('input[type=password]').keyup(function(){ //set password variable var pswd = $(this).val(); From e7a129d70ff42cdf0b8df8c5fa9e29ee1e5e3c73 Mon Sep 17 00:00:00 2001 From: Sarah Brittain Date: Thu, 19 Jul 2012 06:08:49 -0400 Subject: [PATCH 3/7] fixed checkbox issue --- app/views/devise/registrations/new.html.erb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index fbbd60c..fccf93a 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -64,13 +64,17 @@ $('#agreement_checkbox').live('click', function() { } }); -$('#password_field').focus(function(){ +$('input[type=password]').keyup(function(){ if ($('#agreement_checkbox').is(':checked') & (len == true)& (letter == true) & (number == true)){ $('#register_submit').removeAttr('disabled'); $('#register_submit').removeClass('ui-state-disabled'); } - else { + else if ($(len == false) | (letter == false) | (number == false)){ + $('#register_submit').attr('disabled', 'disabled'); + $('#register_submit').addClass('ui-state-disabled'); + } + else { $('#register_submit').attr('disabled', 'disabled'); $('#register_submit').addClass('ui-state-disabled'); } From 24eee4c1af47c6e84c4e4e8759ff03938baa094c Mon Sep 17 00:00:00 2001 From: Sarah Brittain Date: Thu, 19 Jul 2012 06:11:23 -0400 Subject: [PATCH 4/7] fixed username mistake in user.rb --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 17419fe..1ac0f1a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -37,7 +37,7 @@ class User < ActiveRecord::Base validates_presence_of :first_name, :last_name, :username, :user_profile validates_uniqueness_of :username, :case_sensitive => false - validates_length_of :username, :in => 8..40 + validates_length_of :username, :in => 3..40 validates_format_of :username, :with => /^[A-Za-z\d_]+$/ # alphanum + _ validate :validate_username_unchanged, :on => :update From 26a337b7b768797323b0a4d37ebae5d0f21980c0 Mon Sep 17 00:00:00 2001 From: Sarah Brittain Date: Tue, 24 Jul 2012 14:23:12 -0400 Subject: [PATCH 5/7] making code better --- app/views/devise/registrations/new.html.erb | 41 ++++++++++----------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index fccf93a..a8e9802 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -52,32 +52,29 @@ var len = false; var letter = false; var number = false; -$('#agreement_checkbox').live('click', function() { - if ($('#agreement_checkbox').is(':checked') & (len == true)& (letter == true) & (number == true)){ - $('#register_submit').removeAttr('disabled'); - $('#register_submit').removeClass('ui-state-disabled'); + +$.fn.check_password = function(){ + if ($('#agreement_checkbox').is(':checked') & (len == true)& (letter == true) & (number == true)){ + $('#register_submit').removeAttr('disabled'); + $('#register_submit').removeClass('ui-state-disabled'); + } + // else if ($(len == false) | (letter == false) | (number == false)){ + $('#register_submit').attr('disabled', 'disabled'); + $('#register_submit').addClass('ui-state-disabled'); } - else { - $('#register_submit').attr('disabled', 'disabled'); - $('#register_submit').addClass('ui-state-disabled'); - } + else { + $('#register_submit').attr('disabled', 'disabled'); + $('#register_submit').addClass('ui-state-disabled'); + } +} + +$('#agreement_checkbox').click(function() { + $(this).check_password(); }); $('input[type=password]').keyup(function(){ - if ($('#agreement_checkbox').is(':checked') & (len == true)& (letter == true) & (number == true)){ - $('#register_submit').removeAttr('disabled'); - $('#register_submit').removeClass('ui-state-disabled'); - - } - else if ($(len == false) | (letter == false) | (number == false)){ - $('#register_submit').attr('disabled', 'disabled'); - $('#register_submit').addClass('ui-state-disabled'); - } - else { - $('#register_submit').attr('disabled', 'disabled'); - $('#register_submit').addClass('ui-state-disabled'); - } + $(this).check_password(); }); $('input[type=password]').keyup(function(){ @@ -108,6 +105,8 @@ $('input[type=password]').keyup(function(){ $('#number').removeClass('valid').addClass('invalid'); number = false; } + + }).focus(function(){ $('#pswd_info').show(); }).blur(function(){ From 40366516fe50ef81471e696f45d3cdf30f018539 Mon Sep 17 00:00:00 2001 From: Sarah Brittain Date: Tue, 24 Jul 2012 18:36:29 -0400 Subject: [PATCH 6/7] abstracted function working but keyup not working the way it should --- app/views/devise/registrations/new.html.erb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index a8e9802..3de0628 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -52,14 +52,15 @@ var len = false; var letter = false; var number = false; +var confirm = false; -$.fn.check_password = function(){ - if ($('#agreement_checkbox').is(':checked') & (len == true)& (letter == true) & (number == true)){ +jQuery.fn.check_password = function(){ + if ($('#agreement_checkbox').is(':checked') &(len == true)& (letter == true) & (number == true)){ $('#register_submit').removeAttr('disabled'); $('#register_submit').removeClass('ui-state-disabled'); } - // else if ($(len == false) | (letter == false) | (number == false)){ + else if ($(len == false) | (letter == false) | (number == false)){ $('#register_submit').attr('disabled', 'disabled'); $('#register_submit').addClass('ui-state-disabled'); } @@ -69,7 +70,7 @@ $.fn.check_password = function(){ } } -$('#agreement_checkbox').click(function() { +$('#agreement_checkbox').click(function(){ $(this).check_password(); }); @@ -105,6 +106,7 @@ $('input[type=password]').keyup(function(){ $('#number').removeClass('valid').addClass('invalid'); number = false; } + }).focus(function(){ From bea7a5e5158dcbcb078054101b6b429833f433c9 Mon Sep 17 00:00:00 2001 From: Sarah Brittain Date: Wed, 25 Jul 2012 07:15:56 -0400 Subject: [PATCH 7/7] password works correctly and doesn't repeat code --- app/views/devise/registrations/new.html.erb | 52 ++++++++++++--------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index 3de0628..18ae022 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -18,7 +18,7 @@

    Email
    <%= f.email_field :email %>

    Password
    - <%= f.password_field :password %>

    + <%= f.password_field :password, :id => 'pswd' %>

    Password must meet the following requirements:

    @@ -28,7 +28,7 @@

    Password Confirmation
    - <%= f.password_field :password_confirmation %>

    + <%= f.password_field :password_confirmation, :id => 'confirm' %>

    <% if @enable_recaptcha %>

    <%= recaptcha_tags :ssl => true %>

    @@ -55,7 +55,11 @@ var number = false; var confirm = false; jQuery.fn.check_password = function(){ - if ($('#agreement_checkbox').is(':checked') &(len == true)& (letter == true) & (number == true)){ + if($('#confirm').val().length == 0){ + $('#register_submit').attr('disabled', 'disabled'); + $('#register_submit').addClass('ui-state-disabled'); + } + else if ($('#agreement_checkbox').is(':checked') &(len == true)& (letter == true) & (number == true)){ $('#register_submit').removeAttr('disabled'); $('#register_submit').removeClass('ui-state-disabled'); @@ -70,20 +74,10 @@ jQuery.fn.check_password = function(){ } } -$('#agreement_checkbox').click(function(){ - $(this).check_password(); -}); - -$('input[type=password]').keyup(function(){ - $(this).check_password(); -}); - -$('input[type=password]').keyup(function(){ - //set password variable - var pswd = $(this).val(); - +jQuery.fn.validate_password = function(){ + var password = $(this).val(); //validate the length - if (pswd.length < 8) { + if (password.length < 8) { $('#length').removeClass('valid').addClass('invalid'); len = false; } else { @@ -91,7 +85,7 @@ $('input[type=password]').keyup(function(){ len = true; } //validate letter - if (pswd.match(/[A-z]/)){ + if (password.match(/[A-z]/)){ $('#letter').removeClass('invalid').addClass('valid'); letter = true; } else { @@ -99,21 +93,37 @@ $('input[type=password]').keyup(function(){ letter = false; } //validate number - if (pswd.match(/\d/)){ + if (password.match(/\d/)){ $('#number').removeClass('invalid').addClass('valid'); number = true; } else { $('#number').removeClass('valid').addClass('invalid'); number = false; - } - + } +} - +$('#agreement_checkbox').click(function(){ + $(this).check_password(); +}); + +$('#pswd').keyup(function(){ + $(this).validate_password(); + $(this).check_password(); +}).focus(function(){ + $('#pswd_info').show(); +}).blur(function(){ + $('#pswd_info').hide(); +}); +$('#confirm').keyup(function(){ + $(this).validate_password(); + $(this).check_password(); }).focus(function(){ $('#pswd_info').show(); }).blur(function(){ $('#pswd_info').hide(); }); + + <% end %> <% end %>