root / trunk / web / dojo / dojox / form / PasswordValidator.js
History | View | Annotate | Download (5.01 KB)
| 1 |
/*
|
|---|---|
| 2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
| 3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
| 4 |
see: http://dojotoolkit.org/license for details
|
| 5 |
*/
|
| 6 |
|
| 7 |
|
| 8 |
if(!dojo._hasResource["dojox.form.PasswordValidator"]){ |
| 9 |
dojo._hasResource["dojox.form.PasswordValidator"]=true; |
| 10 |
dojo.provide("dojox.form.PasswordValidator");
|
| 11 |
dojo.require("dijit.form._FormWidget");
|
| 12 |
dojo.require("dijit.form.ValidationTextBox");
|
| 13 |
dojo.requireLocalization("dojox.form","PasswordValidator",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw"); |
| 14 |
dojo.declare("dojox.form._ChildTextBox",dijit.form.ValidationTextBox,{containerWidget:null,type:"password",reset:function(){ |
| 15 |
dijit.form.ValidationTextBox.prototype._setValueAttr.call(this,"",true); |
| 16 |
this._hasBeenBlurred=false; |
| 17 |
},postCreate:function(){ |
| 18 |
this.inherited(arguments); |
| 19 |
if(!this.name){ |
| 20 |
dojo.removeAttr(this.focusNode,"name"); |
| 21 |
} |
| 22 |
this.connect(this.focusNode,"onkeypress","_onChildKeyPress"); |
| 23 |
},_onChildKeyPress:function(e){ |
| 24 |
if(e&&e.keyCode==dojo.keys.ENTER){
|
| 25 |
this._setBlurValue();
|
| 26 |
} |
| 27 |
}}); |
| 28 |
dojo.declare("dojox.form._OldPWBox",dojox.form._ChildTextBox,{_isPWValid:false,_setValueAttr:function(_1,_2){ |
| 29 |
if(_1===""){ |
| 30 |
_1=dojox.form._OldPWBox.superclass.attr.call(this,"value"); |
| 31 |
} |
| 32 |
if(_2!==null){ |
| 33 |
this._isPWValid=this.containerWidget.pwCheck(_1); |
| 34 |
} |
| 35 |
this.inherited(arguments); |
| 36 |
this.containerWidget._childValueAttr(this.containerWidget._inputWidgets[1].attr("value")); |
| 37 |
},isValid:function(_3){ |
| 38 |
return this.inherited("isValid",arguments)&&this._isPWValid; |
| 39 |
},_update:function(e){ |
| 40 |
if(this._hasBeenBlurred){ |
| 41 |
this.validate(true); |
| 42 |
} |
| 43 |
this._onMouse(e);
|
| 44 |
},_getValueAttr:function(){ |
| 45 |
if(this.containerWidget._started&&this.containerWidget.isValid()){ |
| 46 |
return this.inherited(arguments); |
| 47 |
} |
| 48 |
return ""; |
| 49 |
},_setBlurValue:function(){ |
| 50 |
var _4=dijit.form.ValidationTextBox.prototype._getValueAttr.call(this); |
| 51 |
this._setValueAttr(_4,(this.isValid?this.isValid():true)); |
| 52 |
}}); |
| 53 |
dojo.declare("dojox.form._NewPWBox",dojox.form._ChildTextBox,{required:true,onChange:function(){ |
| 54 |
this.containerWidget._inputWidgets[2].validate(false); |
| 55 |
this.inherited(arguments); |
| 56 |
}}); |
| 57 |
dojo.declare("dojox.form._VerifyPWBox",dojox.form._ChildTextBox,{isValid:function(_5){ |
| 58 |
return this.inherited("isValid",arguments)&&(this.get("value")==this.containerWidget._inputWidgets[1].attr("value")); |
| 59 |
}}); |
| 60 |
dojo.declare("dojox.form.PasswordValidator",dijit.form._FormValueWidget,{required:true,_inputWidgets:null,oldName:"",templateString:dojo.cache("dojox.form","resources/PasswordValidator.html","<div dojoAttachPoint=\"containerNode\">\n\t<input type=\"hidden\" name=\"${name}\" value=\"\" dojoAttachPoint=\"focusNode\" />\n</div>\n"),_hasBeenBlurred:false,isValid:function(_6){ |
| 61 |
return dojo.every(this._inputWidgets,function(i){ |
| 62 |
if(i&&i._setStateClass){
|
| 63 |
i._setStateClass(); |
| 64 |
} |
| 65 |
return (!i||i.isValid());
|
| 66 |
}); |
| 67 |
},validate:function(_7){ |
| 68 |
return dojo.every(dojo.map(this._inputWidgets,function(i){ |
| 69 |
if(i&&i.validate){
|
| 70 |
i._hasBeenBlurred=(i._hasBeenBlurred||this._hasBeenBlurred);
|
| 71 |
return i.validate();
|
| 72 |
} |
| 73 |
return true; |
| 74 |
},this),"return item;"); |
| 75 |
},reset:function(){ |
| 76 |
this._hasBeenBlurred=false; |
| 77 |
dojo.forEach(this._inputWidgets,function(i){ |
| 78 |
if(i&&i.reset){
|
| 79 |
i.reset(); |
| 80 |
} |
| 81 |
},this);
|
| 82 |
},_createSubWidgets:function(){ |
| 83 |
var _8=this._inputWidgets,_9=dojo.i18n.getLocalization("dojox.form","PasswordValidator",this.lang); |
| 84 |
dojo.forEach(_8,function(i,_a){
|
| 85 |
if(i){
|
| 86 |
var p={containerWidget:this},c; |
| 87 |
if(_a===0){ |
| 88 |
p.name=this.oldName;
|
| 89 |
p.invalidMessage=_9.badPasswordMessage; |
| 90 |
c=dojox.form._OldPWBox; |
| 91 |
}else{
|
| 92 |
if(_a===1){ |
| 93 |
p.required=this.required;
|
| 94 |
c=dojox.form._NewPWBox; |
| 95 |
}else{
|
| 96 |
if(_a===2){ |
| 97 |
p.invalidMessage=_9.nomatchMessage; |
| 98 |
c=dojox.form._VerifyPWBox; |
| 99 |
} |
| 100 |
} |
| 101 |
} |
| 102 |
_8[_a]=new c(p,i);
|
| 103 |
} |
| 104 |
},this);
|
| 105 |
},pwCheck:function(_b){ |
| 106 |
return false; |
| 107 |
},postCreate:function(){ |
| 108 |
this.inherited(arguments); |
| 109 |
var _c=this._inputWidgets=[]; |
| 110 |
dojo.forEach(["old","new","verify"],function(i){ |
| 111 |
_c.push(dojo.query("input[pwType="+i+"]",this.containerNode)[0]); |
| 112 |
},this);
|
| 113 |
if(!_c[1]||!_c[2]){ |
| 114 |
throw new Error("Need at least pwType=\"new\" and pwType=\"verify\""); |
| 115 |
} |
| 116 |
if(this.oldName&&!_c[0]){ |
| 117 |
throw new Error("Need to specify pwType=\"old\" if using oldName"); |
| 118 |
} |
| 119 |
this.containerNode=this.domNode; |
| 120 |
this._createSubWidgets();
|
| 121 |
this.connect(this._inputWidgets[1],"_setValueAttr","_childValueAttr"); |
| 122 |
this.connect(this._inputWidgets[2],"_setValueAttr","_childValueAttr"); |
| 123 |
},_childValueAttr:function(v){ |
| 124 |
this.set("value",this.isValid()?v:""); |
| 125 |
},_setDisabledAttr:function(_d){ |
| 126 |
this.inherited(arguments); |
| 127 |
dojo.forEach(this._inputWidgets,function(i){ |
| 128 |
if(i&&i.attr){
|
| 129 |
i.attr("disabled",_d);
|
| 130 |
} |
| 131 |
}); |
| 132 |
},_setRequiredAttribute:function(_e){ |
| 133 |
this.required=_e;
|
| 134 |
dojo.attr(this.focusNode,"required",_e); |
| 135 |
dijit.setWaiState(this.focusNode,"required",_e); |
| 136 |
this._refreshState();
|
| 137 |
dojo.forEach(this._inputWidgets,function(i){ |
| 138 |
if(i&&i.attr){
|
| 139 |
i.attr("required",_e);
|
| 140 |
} |
| 141 |
}); |
| 142 |
},_setValueAttr:function(v){ |
| 143 |
this.inherited(arguments); |
| 144 |
dojo.attr(this.focusNode,"value",v); |
| 145 |
},_getValueAttr:function(){ |
| 146 |
return this.inherited(arguments)||""; |
| 147 |
},focus:function(){ |
| 148 |
var f=false; |
| 149 |
dojo.forEach(this._inputWidgets,function(i){ |
| 150 |
if(i&&!i.isValid()&&!f){
|
| 151 |
i.focus(); |
| 152 |
f=true;
|
| 153 |
} |
| 154 |
}); |
| 155 |
if(!f){
|
| 156 |
this._inputWidgets[1].focus(); |
| 157 |
} |
| 158 |
}}); |
| 159 |
} |