From 12767e284d1b8bc0e817d7237d245a4e420cdeab Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 10 Mar 2017 07:55:18 -0500 Subject: [PATCH] Fix issue processwire/processwire-issues#201 where InputfieldPassword wasn't honoring the minlength setting and was always requiring at least 8 characters --- .../InputfieldPassword/InputfieldPassword.js | 3 ++- .../InputfieldPassword/InputfieldPassword.min.js | 2 +- .../InputfieldPassword/InputfieldPassword.module | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.js b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.js index 3a4f38c5..1db7076a 100644 --- a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.js +++ b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.js @@ -15,7 +15,8 @@ jQuery(document).ready(function($) { var minlength = parseInt($input.attr('data-minlength')); var options = { banMode: $input.attr('data-banMode'), - strengthScaleFactor: parseFloat($input.attr('data-factor')) + strengthScaleFactor: parseFloat($input.attr('data-factor')), + minimumChars: minlength }; $input.complexify(options, function(valid, complexity) { diff --git a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.min.js b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.min.js index f232a031..b90a41d4 100644 --- a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.min.js +++ b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.min.js @@ -1 +1 @@ -jQuery(document).ready(function(c){var a=c("input.InputfieldPasswordComplexify");a.each(function(){var j=c(this);var d=j.closest(".Inputfield");var i=d.find(".InputfieldPasswordConfirm");var h=i.next(".pass-confirm");var k=j.siblings(".pass-scores");var e=j.siblings(".pass-percent");var l=k.children();var g=k.attr("data-requirements").split(" ");var f=parseInt(j.attr("data-minlength"));var m={banMode:j.attr("data-banMode"),strengthScaleFactor:parseFloat(j.attr("data-factor"))};j.complexify(m,function(o,p){var u=null;var s=j.val();var v=s.length;var x=0;if(v>0){for(var r=0;r("+Math.floor(p)+"%)")}if(i.val().length){i.change()}});j.on("change",function(){var n=c(this).val();if(n.length>0){j.attr("required","required");i.attr("required","required")}else{if(!c(this).closest(".InputfieldStateRequired").length){j.removeAttr("required");i.removeAttr("required")}}});i.on("keyup change",function(){var q=j.val();var p=c(this).val();var n=null;var o=j.closest("p").removeClass("pass-matches");if(p.length==0){n=h.children(".confirm-pending")}else{if(q==p){n=h.children(".confirm-yes");o.addClass("pass-matches")}else{if(q.indexOf(p)===0){n=h.children(".confirm-qty");n.children("span").html(p.length+"/"+q.length)}else{n=h.children(".confirm-no")}}}if(n){n.addClass("on").siblings(".on").removeClass("on")}})});var b=a.filter("[autocomplete='off']");if(b.length){setTimeout(function(){b.each(function(){if(c(this).val().length<1){return}c(this).val("").trigger("keyup").change().closest(".Inputfield").removeClass("InputfieldStateChanged")})},1000)}}); \ No newline at end of file +jQuery(document).ready(function(c){var a=c("input.InputfieldPasswordComplexify");a.each(function(){var j=c(this);var d=j.closest(".Inputfield");var i=d.find(".InputfieldPasswordConfirm");var h=i.next(".pass-confirm");var k=j.siblings(".pass-scores");var e=j.siblings(".pass-percent");var l=k.children();var g=k.attr("data-requirements").split(" ");var f=parseInt(j.attr("data-minlength"));var m={banMode:j.attr("data-banMode"),strengthScaleFactor:parseFloat(j.attr("data-factor")),minimumChars:f};j.complexify(m,function(o,p){var u=null;var s=j.val();var v=s.length;var x=0;if(v>0){for(var r=0;r("+Math.floor(p)+"%)")}if(i.val().length){i.change()}});j.on("change",function(){var n=c(this).val();if(n.length>0){j.attr("required","required");i.attr("required","required")}else{if(!c(this).closest(".InputfieldStateRequired").length){j.removeAttr("required");i.removeAttr("required")}}});i.on("keyup change",function(){var q=j.val();var p=c(this).val();var n=null;var o=j.closest("p").removeClass("pass-matches");if(p.length==0){n=h.children(".confirm-pending")}else{if(q==p){n=h.children(".confirm-yes");o.addClass("pass-matches")}else{if(q.indexOf(p)===0){n=h.children(".confirm-qty");n.children("span").html(p.length+"/"+q.length)}else{n=h.children(".confirm-no")}}}if(n){n.addClass("on").siblings(".on").removeClass("on")}})});var b=a.filter("[autocomplete='off']");if(b.length){setTimeout(function(){b.each(function(){if(c(this).val().length<1){return}c(this).val("").trigger("keyup").change().closest(".Inputfield").removeClass("InputfieldStateChanged")})},1000)}}); \ No newline at end of file diff --git a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.module b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.module index 61381f84..69c8ddf7 100644 --- a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.module +++ b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.module @@ -215,7 +215,7 @@ class InputfieldPassword extends InputfieldText { * * @param string $key * @param mixed $value - * @return $this + * @return Inputfield|InputfieldPassword * */ public function set($key, $value) { @@ -357,7 +357,18 @@ class InputfieldPassword extends InputfieldText { public function ___getConfigInputfields() { $inputfields = parent::___getConfigInputfields(); - $skips = array('collapsed', 'showIf', 'placeholder', 'stripTags', 'pattern', 'visibility'); + $skips = array( + 'collapsed', + 'showIf', + 'placeholder', + 'stripTags', + 'pattern', + 'visibility', + 'minlength', + 'maxlength', + 'showCount', + 'size', + ); foreach($skips as $name) { $f = $inputfields->get($name);