[ Index ]
 

Code source de PRADO 3.0.6

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/framework/Web/Javascripts/js/compressed/ -> validator.js (source)

   1  
   2  Prado.Validation=Class.create();Object.extend(Prado.Validation,{managers:{},validate:function(formID,groupID,invoker)
   3  {if(this.managers[formID])
   4  {return this.managers[formID].validate(groupID,invoker);}
   5  else
   6  {throw new Error("Form '"+form+"' is not registered with Prado.Validation");}},isValid:function(formID,groupID)
   7  {if(this.managers[formID])
   8  return this.managers[formID].isValid(groupID);return true;},addValidator:function(formID,validator)
   9  {if(this.managers[formID])
  10  this.managers[formID].addValidator(validator);else
  11  throw new Error("A validation manager for form '"+formID+"' needs to be created first.");return this.managers[formID];},addSummary:function(formID,validator)
  12  {if(this.managers[formID])
  13  this.managers[formID].addSummary(validator);else
  14  throw new Error("A validation manager for form '"+formID+"' needs to be created first.");return this.managers[formID];}});Prado.ValidationManager=Class.create();Prado.ValidationManager.prototype={validators:[],summaries:[],groups:[],options:{},initialize:function(options)
  15  {this.options=options;Prado.Validation.managers[options.FormID]=this;},validate:function(group,invoker)
  16  {if(group)
  17  return this._validateGroup(group,invoker);else
  18  return this._validateNonGroup(invoker);},_validateGroup:function(groupID,invoker)
  19  {var valid=true;if(this.groups.include(groupID))
  20  {this.validators.each(function(validator)
  21  {if(validator.group==groupID)
  22  valid=valid&validator.validate(invoker);else
  23  validator.hide();});}
  24  this.updateSummary(groupID,true);return valid;},_validateNonGroup:function(invoker)
  25  {var valid=true;this.validators.each(function(validator)
  26  {if(!validator.group)
  27  valid=valid&validator.validate(invoker);else
  28  validator.hide();});this.updateSummary(null,true);return valid;},isValid:function(group)
  29  {if(group)
  30  return this._isValidGroup(group);else
  31  return this._isValidNonGroup();},_isValidNonGroup:function()
  32  {var valid=true;this.validators.each(function(validator)
  33  {if(!validator.group)
  34  valid=valid&validator.isValid;});return valid;},_isValidGroup:function(groupID)
  35  {var valid=true;if(this.groups.include(groupID))
  36  {this.validators.each(function(validator)
  37  {if(validator.group==groupID)
  38  valid=valid&validator.isValid;});}
  39  return valid;},addValidator:function(validator)
  40  {this.validators.push(validator);if(validator.group&&!this.groups.include(validator.group))
  41  this.groups.push(validator.group);},addSummary:function(summary)
  42  {this.summaries.push(summary);},getValidatorsWithError:function(group)
  43  {var validators=this.validators.findAll(function(validator)
  44  {var notValid=!validator.isValid;var inGroup=group&&validator.group==group;var noGroup=validator.group==null;return notValid&&(inGroup||noGroup);});return validators;},updateSummary:function(group,refresh)
  45  {var validators=this.getValidatorsWithError(group);this.summaries.each(function(summary)
  46  {var inGroup=group&&summary.group==group;var noGroup=!group&&!summary.group;if(inGroup||noGroup)
  47  summary.updateSummary(validators,refresh);else
  48  summary.hideSummary(true);});}};Prado.WebUI.TValidationSummary=Class.create();Prado.WebUI.TValidationSummary.prototype={group:null,options:{},visible:false,messages:null,initialize:function(options)
  49  {this.options=options;this.group=options.ValidationGroup;this.messages=$(options.ID);this.visible=this.messages.style.visibility!="hidden"
  50  this.visible=this.visible&&this.messages.style.display!="none";Prado.Validation.addSummary(options.FormID,this);},updateSummary:function(validators,update)
  51  {if(validators.length<=0)
  52  {if(update||this.options.Refresh!=false)
  53  {return this.hideSummary(validators);}
  54  return;}
  55  var refresh=update||this.visible==false||this.options.Refresh!=false;if(this.options.ShowSummary!=false&&refresh)
  56  {this.updateHTMLMessages(this.getMessages(validators));this.showSummary(validators);}
  57  if(this.options.ScrollToSummary!=false&&refresh)
  58  window.scrollTo(this.messages.offsetLeft-20,this.messages.offsetTop-20);if(this.options.ShowMessageBox==true&&refresh)
  59  {this.alertMessages(this.getMessages(validators));this.visible=true;}},updateHTMLMessages:function(messages)
  60  {while(this.messages.childNodes.length>0)
  61  this.messages.removeChild(this.messages.lastChild);new Insertion.Bottom(this.messages,this.formatSummary(messages));},alertMessages:function(messages)
  62  {var text=this.formatMessageBox(messages);setTimeout(function(){alert(text);},20);},getMessages:function(validators)
  63  {var messages=[];validators.each(function(validator)
  64  {var message=validator.getErrorMessage();if(typeof(message)=='string'&&message.length>0)
  65  messages.push(message);})
  66  return messages;},hideSummary:function(validators)
  67  {if(typeof(this.options.OnHideSummary)=="function")
  68  {this.messages.style.visibility="visible";this.options.OnHideSummary(this,validators)}
  69  else
  70  {this.messages.style.visibility="hidden";if(this.options.Display=="None"||this.options.Display=="Dynamic")
  71  this.messages.hide();}
  72  this.visible=false;},showSummary:function(validators)
  73  {this.messages.style.visibility="visible";if(typeof(this.options.OnShowSummary)=="function")
  74  this.options.OnShowSummary(this,validators);else
  75  this.messages.show();this.visible=true;},formats:function(type)
  76  {switch(type)
  77  {case"List":return{header:"<br />",first:"",pre:"",post:"<br />",last:""};case"SingleParagraph":return{header:" ",first:"",pre:"",post:" ",last:"<br />"};case"BulletList":default:return{header:"",first:"<ul>",pre:"<li>",post:"</li>",last:"</ul>"};}},formatSummary:function(messages)
  78  {var format=this.formats(this.options.DisplayMode);var output=this.options.HeaderText?this.options.HeaderText+format.header:"";output+=format.first;messages.each(function(message)
  79  {output+=message.length>0?format.pre+message+format.post:"";});output+=format.last;return output;},formatMessageBox:function(messages)
  80  {var output=this.options.HeaderText?this.options.HeaderText+"\n":"";for(var i=0;i<messages.length;i++)
  81  {switch(this.options.DisplayMode)
  82  {case"List":output+=messages[i]+"\n";break;case"BulletList":default:output+="  - "+messages[i]+"\n";break;case"SingleParagraph":output+=messages[i]+" ";break;}}
  83  return output;}};Prado.WebUI.TBaseValidator=Class.create();Prado.WebUI.TBaseValidator.prototype={enabled:true,visible:false,isValid:true,options:{},_isObserving:{},group:null,manager:null,message:null,initialize:function(options)
  84  {this.options=options;this.control=$(options.ControlToValidate);this.message=$(options.ID);this.group=options.ValidationGroup;this.manager=Prado.Validation.addValidator(options.FormID,this);},getErrorMessage:function()
  85  {return this.options.ErrorMessage;},updateControl:function(focus)
  86  {this.refreshControlAndMessage();if(this.options.FocusOnError&&!this.isValid)
  87  Prado.Element.focus(this.options.FocusElementID);},refreshControlAndMessage:function()
  88  {this.visible=true;if(this.message)
  89  {if(this.options.Display=="Dynamic")
  90  this.isValid?this.message.hide():this.message.show();this.message.style.visibility=this.isValid?"hidden":"visible";}
  91  if(this.control)
  92  this.updateControlCssClass(this.control,this.isValid);},updateControlCssClass:function(control,valid)
  93  {var CssClass=this.options.ControlCssClass;if(typeof(CssClass)=="string"&&CssClass.length>0)
  94  {if(valid)
  95  control.removeClassName(CssClass);else
  96  control.addClassName(CssClass);}},hide:function()
  97  {this.isValid=true;this.updateControl();this.visible=false;},validate:function(invoker)
  98  {if(typeof(this.options.OnValidate)=="function")
  99  this.options.OnValidate(this,invoker);if(this.enabled)
 100  this.isValid=this.evaluateIsValid();else
 101  this.isValid=true;if(this.isValid)
 102  {if(typeof(this.options.OnSuccess)=="function")
 103  {this.refreshControlAndMessage();this.options.OnSuccess(this,invoker);}
 104  else
 105  this.updateControl();}
 106  else
 107  {if(typeof(this.options.OnError)=="function")
 108  {this.refreshControlAndMessage();this.options.OnError(this,invoker);}
 109  else
 110  this.updateControl();}
 111  this.observeChanges(this.control);return this.isValid;},observeChanges:function(control)
 112  {if(!control)return;var canObserveChanges=this.options.ObserveChanges!=false;var currentlyObserving=this._isObserving[control.id+this.options.ID];if(canObserveChanges&&!currentlyObserving)
 113  {var validator=this;Event.observe(control,'change',function()
 114  {if(validator.visible)
 115  {validator.validate();validator.manager.updateSummary(validator.group);}});this._isObserving[control.id+this.options.ID]=true;}},trim:function(value)
 116  {return typeof(value)=="string"?value.trim():"";},convert:function(dataType,value)
 117  {if(typeof(value)=="undefined")
 118  value=this.getValidationValue();var string=new String(value);switch(dataType)
 119  {case"Integer":return string.toInteger();case"Double":case"Float":return string.toDouble(this.options.DecimalChar);case"Date":if(typeof(value)!="string")
 120  return value;else
 121  {var value=string.toDate(this.options.DateFormat);if(value&&typeof(value.getTime)=="function")
 122  return value.getTime();else
 123  return null;}
 124  case"String":return string.toString();}
 125  return value;},getValidationValue:function(control)
 126  {if(!control)
 127  control=this.control
 128  switch(this.options.ControlType)
 129  {case'TDatePicker':if(control.type=="text")
 130  {value=this.trim($F(control));if(this.options.DateFormat)
 131  {date=value.toDate(this.options.DateFormat);return date==null?value:date;}
 132  else
 133  return value;}
 134  else
 135  {this.observeDatePickerChanges();return Prado.WebUI.TDatePicker.getDropDownDate(control).getTime();}
 136  case'THtmlArea':if(typeof tinyMCE!="undefined")
 137  tinyMCE.triggerSave();return this.trim($F(control));case'TRadioButton':if(this.options.GroupName)
 138  return this.getRadioButtonGroupValue();default:if(this.isListControlType())
 139  return this.getFirstSelectedListValue();else
 140  return this.trim($F(control));}},getRadioButtonGroupValue:function()
 141  {name=this.control.name;value="";$A(document.getElementsByName(name)).each(function(el)
 142  {if(el.checked)
 143  value=el.value;});return value;},observeDatePickerChanges:function()
 144  {if(Prado.Browser().ie)
 145  {var DatePicker=Prado.WebUI.TDatePicker;this.observeChanges(DatePicker.getDayListControl(this.control));this.observeChanges(DatePicker.getMonthListControl(this.control));this.observeChanges(DatePicker.getYearListControl(this.control));}},getSelectedValuesAndChecks:function(elements,initialValue)
 146  {var checked=0;var values=[];var isSelected=this.isCheckBoxType(elements[0])?'checked':'selected';elements.each(function(element)
 147  {if(element[isSelected]&&element.value!=initialValue)
 148  {checked++;values.push(element.value);}});return{'checks':checked,'values':values};},getListElements:function()
 149  {switch(this.options.ControlType)
 150  {case'TCheckBoxList':case'TRadioButtonList':var elements=[];for(var i=0;i<this.options.TotalItems;i++)
 151  {var element=$(this.options.ControlToValidate+"_c"+i);if(this.isCheckBoxType(element))
 152  elements.push(element);}
 153  return elements;case'TListBox':var elements=[];var element=$(this.options.ControlToValidate);if(element&&(type=element.type.toLowerCase()))
 154  {if(type=="select-one"||type=="select-multiple")
 155  elements=$A(element.options);}
 156  return elements;default:return[];}},isCheckBoxType:function(element)
 157  {if(element&&element.type)
 158  {var type=element.type.toLowerCase();return type=="checkbox"||type=="radio";}
 159  return false;},isListControlType:function()
 160  {var list=['TCheckBoxList','TRadioButtonList','TListBox'];return list.include(this.options.ControlType);},getFirstSelectedListValue:function()
 161  {var initial="";if(typeof(this.options.InitialValue)!="undefined")
 162  initial=this.options.InitialValue;var elements=this.getListElements();var selection=this.getSelectedValuesAndChecks(elements,initial);return selection.values.length>0?selection.values[0]:initial;}}
 163  Prado.WebUI.TRequiredFieldValidator=Class.extend(Prado.WebUI.TBaseValidator,{evaluateIsValid:function()
 164  {var inputType=this.control.getAttribute("type");if(inputType=='file')
 165  {return true;}
 166  else
 167  {var a=this.getValidationValue();var b=this.trim(this.options.InitialValue);return(a!=b);}}});Prado.WebUI.TCompareValidator=Class.extend(Prado.WebUI.TBaseValidator,{evaluateIsValid:function()
 168  {var value=this.getValidationValue();if(value.length<=0)
 169  return true;var comparee=$(this.options.ControlToCompare);if(comparee)
 170  var compareTo=this.getValidationValue(comparee);else
 171  var compareTo=this.options.ValueToCompare||"";var isValid=this.compare(value,compareTo);if(comparee)
 172  {this.updateControlCssClass(comparee,isValid);this.observeChanges(comparee);}
 173  return isValid;},compare:function(operand1,operand2)
 174  {var op1,op2;if((op1=this.convert(this.options.DataType,operand1))==null)
 175  return false;if((op2=this.convert(this.options.DataType,operand2))==null)
 176  return true;switch(this.options.Operator)
 177  {case"NotEqual":return(op1!=op2);case"GreaterThan":return(op1>op2);case"GreaterThanEqual":return(op1>=op2);case"LessThan":return(op1<op2);case"LessThanEqual":return(op1<=op2);default:return(op1==op2);}}});Prado.WebUI.TCustomValidator=Class.extend(Prado.WebUI.TBaseValidator,{evaluateIsValid:function()
 178  {var value=this.getValidationValue();var clientFunction=this.options.ClientValidationFunction;if(typeof(clientFunction)=="string"&&clientFunction.length>0)
 179  {validate=clientFunction.toFunction();return validate(this,value);}
 180  return true;}});Prado.WebUI.TRangeValidator=Class.extend(Prado.WebUI.TBaseValidator,{evaluateIsValid:function()
 181  {var value=this.getValidationValue();if(value.length<=0)
 182  return true;if(typeof(this.options.DataType)=="undefined")
 183  this.options.DataType="String";if(this.options.DataType!="StringLength")
 184  {var min=this.convert(this.options.DataType,this.options.MinValue||null);var max=this.convert(this.options.DataType,this.options.MaxValue||null);value=this.convert(this.options.DataType,value);}
 185  else
 186  {var min=this.options.MinValue||0;var max=this.options.MaxValue||Number.POSITIVE_INFINITY;value=value.length;}
 187  if(value==null)
 188  return false;var valid=true;if(min!=null)
 189  valid=valid&&value>=min;if(max!=null)
 190  valid=valid&&value<=max;return valid;}});Prado.WebUI.TRegularExpressionValidator=Class.extend(Prado.WebUI.TBaseValidator,{evaluateIsValid:function()
 191  {var value=this.getValidationValue();if(value.length<=0)
 192  return true;var rx=new RegExp(this.options.ValidationExpression);var matches=rx.exec(value);return(matches!=null&&value==matches[0]);}});Prado.WebUI.TEmailAddressValidator=Prado.WebUI.TRegularExpressionValidator;Prado.WebUI.TListControlValidator=Class.extend(Prado.WebUI.TBaseValidator,{evaluateIsValid:function()
 193  {var elements=this.getListElements();if(elements&&elements.length<=0)
 194  return true;this.observeListElements(elements);var selection=this.getSelectedValuesAndChecks(elements);return this.isValidList(selection.checks,selection.values);},observeListElements:function(elements)
 195  {if(Prado.Browser().ie&&this.isCheckBoxType(elements[0]))
 196  {var validator=this;elements.each(function(element)
 197  {validator.observeChanges(element);});}},isValidList:function(checked,values)
 198  {var exists=true;var required=this.getRequiredValues();if(required.length>0)
 199  {if(values.length<required.length)
 200  return false;required.each(function(requiredValue)
 201  {exists=exists&&values.include(requiredValue);});}
 202  var min=typeof(this.options.Min)=="undefined"?Number.NEGATIVE_INFINITY:this.options.Min;var max=typeof(this.options.Max)=="undefined"?Number.POSITIVE_INFINITY:this.options.Max;return exists&&checked>=min&&checked<=max;},getRequiredValues:function()
 203  {var required=[];if(this.options.Required&&this.options.Required.length>0)
 204  required=this.options.Required.split(/,\s*/);return required;}});Prado.WebUI.TDataTypeValidator=Class.extend(Prado.WebUI.TBaseValidator,{evaluateIsValid:function()
 205  {value=this.getValidationValue();if(value.length<=0)
 206  return true;return this.convert(this.options.DataType,value)!=null;}});


Généré le : Sun Feb 25 21:07:04 2007 par Balluche grâce à PHPXref 0.7