diff options
4 files changed, 134 insertions, 45 deletions
| diff --git a/.gitattributes b/.gitattributes index 72f7ddb1..780ca90a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -44,6 +44,8 @@ demos/quickstart/protected/pages/Controls/Samples/TBulletedList/Home.php -text  demos/quickstart/protected/pages/Controls/Samples/TBulletedList/bullet.gif -text  demos/quickstart/protected/pages/Controls/Samples/TCheckBoxList/Home.page -text  demos/quickstart/protected/pages/Controls/Samples/TCheckBoxList/Home.php -text +demos/quickstart/protected/pages/Controls/Samples/TCustomValidator/Home.page -text +demos/quickstart/protected/pages/Controls/Samples/TCustomValidator/Home.php -text  demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample1.page -text  demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample1.php -text  demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.page -text diff --git a/demos/quickstart/protected/pages/Controls/Samples/TCustomValidator/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TCustomValidator/Home.page new file mode 100644 index 00000000..840a6550 --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TCustomValidator/Home.page @@ -0,0 +1,70 @@ +<com:TContent ID="body">
 +
 +<script type="text/javascript"><!--
 +function myValidationFunction(sender, parameter)
 +{
 +    if(parameter == 'test')
 +        return true;
 +    else
 +        return false;
 +}
 +--></script>
 +
 +<h1>TCustomValidator Samples</h1>
 +
 +<table class="sampletable">
 +
 +<tr>
 +<td class="samplenote">
 +Custom validator with default settings:
 +</td>
 +<td class="sampleaction">
 +<com:TTextBox ID="TextBox1" />
 +<com:TCustomValidator
 +	ValidationGroup="Group1"
 +	ControlToValidate="TextBox1"
 +	ClientValidationFunction="myValidationFunction"
 +	ServerValidate="serverValidate"
 +	Text="You must enter 'test'." />
 +<com:TButton Text="Submit" ValidationGroup="Group1" />
 +</td>
 +</tr>
 +
 +<tr>
 +<td class="samplenote">
 +Custom validator with client-side validation disabled:
 +</td>
 +<td class="sampleaction">
 +<com:TTextBox ID="TextBox2" />
 +<com:TCustomValidator
 +	ValidationGroup="Group2"
 +	EnableClientScript="false"
 +	ControlToValidate="TextBox2"
 +	ClientValidationFunction="myValidationFunction"
 +	ServerValidate="serverValidate"
 +	Text="You must enter 'test'." />
 +<com:TButton Text="Submit" ValidationGroup="Group2" />
 +</td>
 +</tr>
 +
 +<tr>
 +<td class="samplenote">
 +Custom validator with focus-on-error enabled and dynamic display:
 +</td>
 +<td class="sampleaction">
 +<com:TTextBox ID="TextBox3" />
 +<com:TCustomValidator
 +	ValidationGroup="Group3"
 +	ControlToValidate="TextBox3"
 +	ClientValidationFunction="myValidationFunction"
 +	ServerValidate="serverValidate"
 +	FocusOnError="true"
 +	Text="You must enter 'test'." />
 +<com:TButton Text="Submit" ValidationGroup="Group3" />
 +</td>
 +</tr>
 +
 +
 +</table>
 +
 +</com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Samples/TCustomValidator/Home.php b/demos/quickstart/protected/pages/Controls/Samples/TCustomValidator/Home.php new file mode 100644 index 00000000..0db261b9 --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TCustomValidator/Home.php @@ -0,0 +1,12 @@ +<?php
 +
 +class Home extends TPage
 +{
 +	public function serverValidate($sender,$param)
 +	{
 +		if($param->Value!=='test')
 +			$param->IsValid=false;
 +	}
 +}
 +
 +?>
\ No newline at end of file diff --git a/framework/Web/UI/WebControls/TCustomValidator.php b/framework/Web/UI/WebControls/TCustomValidator.php index bf80e644..8c42b580 100644 --- a/framework/Web/UI/WebControls/TCustomValidator.php +++ b/framework/Web/UI/WebControls/TCustomValidator.php @@ -2,24 +2,18 @@  /**
   * TCustomValidator class file
   *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the BSD License.
 - *
 - * Copyright(c) 2004 by Qiang Xue. All rights reserved.
 - *
 - * To contact the author write to {@link mailto:qiang.xue@gmail.com Qiang Xue}
 - * The latest version of PRADO can be obtained from:
 - * {@link http://prado.sourceforge.net/}
 - *
   * @author Qiang Xue <qiang.xue@gmail.com>
 - * @version $Revision: 1.7 $  $Date: 2005/06/13 07:04:28 $
 + * @link http://www.pradosoft.com/
 + * @copyright Copyright © 2005 PradoSoft
 + * @license http://www.pradosoft.com/license/
 + * @version $Revision: $  $Date: $
   * @package System.Web.UI.WebControls
   */
  /**
 - * TValidator class file
 + * Using TBaseValidator class
   */
 -require_once(dirname(__FILE__).'/TValidator.php');
 +Prado::using('System.Web.UI.WebControls.TBaseValidator');
  /**
   * TCustomValidator class
 @@ -51,22 +45,12 @@ require_once(dirname(__FILE__).'/TValidator.php');   * Use the <b>ClientValidationFunction</b> property to specify the name of
   * the client-side validation script function associated with the TCustomValidator.
   *
 - * Namespace: System.Web.UI.WebControls
 - *
 - * Properties
 - * - <b>ClientValidationFunction</b>, string, kept in viewstate
 - *   <br>Gets or sets the name of the custom client-side script function used for validation.
 - *
 - * Events
 - * - <b>OnServerValidate</b> Occurs when validation is performed on the server.
 - *   <br>Event delegates must set the event parameter TServerValidateEventParameter.isValid
 - *   to false if they find the value is invalid.
 - *
   * @author Qiang Xue <qiang.xue@gmail.com>
 - * @version v1.0, last update on 2004/08/13 21:44:52
 + * @version $Revision: $  $Date: $
   * @package System.Web.UI.WebControls
 + * @since 3.0
   */
 -class TCustomValidator extends TValidator
 +class TCustomValidator extends TBaseValidator
  {
  	/**
  	 * @return string the name of the custom client-side script function used for validation.
 @@ -92,15 +76,16 @@ class TCustomValidator extends TValidator  	 */
  	public function evaluateIsValid()
  	{
 -		$idPath=$this->getControlToValidate();
 -		if(strlen($idPath))
 +		if(($id=$this->getControlToValidate())!=='')
  		{
 -			$control=$this->getTargetControl($idPath);
 -			$value=$control->getValidationPropertyValue($idPath);
 +			if(($control=$this->findControl($id))!==null)
 +				$value=$this->getValidationValue($control);
 +			else
 +				throw new TInvalidDataValueException('customvalidator_controltovalidate_invalid');
  			return $this->onServerValidate($value);
  		}
  		else
 -			return true;
 +			throw new TInvalidDataValueException('customvalidator_controltovalidate_required');
  	}
  	/**
 @@ -114,22 +99,20 @@ class TCustomValidator extends TValidator  	 */
  	public function onServerValidate($value)
  	{
 -		$param=new TServerValidateEventParameter;
 -		$param->value=$value;
 -		$param->isValid=true;
 -		$this->raiseEvent('OnServerValidate',$this,$param);
 -		return $param->isValid;
 +		$param=new TServerValidateEventParameter($value,true);
 +		$this->raiseEvent('ServerValidate',$this,$param);
 +		return $param->getIsValid();
  	}
 +
  	/**
 -	 * Get a list of options for the client-side javascript validator
 -	 * @return array list of options for the validator 
 +	 * Returns an array of javascript validator options.
 +	 * @return array javascript validator options.
  	 */
 -	protected function getJsOptions()
 +	protected function getClientScriptOptions()
  	{
 -		$options = parent::getJsOptions();
 -		$clientJs = $this->getClientValidationFunction();
 -		if(strlen($clientJs))
 +		$options=parent::getClientScriptOptions();
 +		if(($clientJs=$this->getClientValidationFunction())!=='')
  			$options['clientvalidationfunction']=$clientJs;
  		return $options;
  	}
 @@ -139,11 +122,12 @@ class TCustomValidator extends TValidator   * TServerValidateEventParameter class
   *
   * TServerValidateEventParameter encapsulates the parameter data for
 - * <b>OnServerValidate</b> event of TCustomValidator components.
 + * <b>ServerValidate</b> event of TCustomValidator components.
   *
   * @author Qiang Xue <qiang.xue@gmail.com>
 - * @version v1.0, last update on 2004/08/13 21:44:52
 + * @version $Revision: $  $Date: $
   * @package System.Web.UI.WebControls
 + * @since 3.0
   */
  class TServerValidateEventParameter extends TEventParameter
  {
 @@ -151,11 +135,32 @@ class TServerValidateEventParameter extends TEventParameter  	 * the value to be validated
  	 * @var string
  	 */
 -	public $value='';
 +	private $_value='';
  	/**
  	 * whether the value is valid
  	 * @var boolean
  	 */
 -	public $isValid=true;
 +	private $_isValid=true;
 +
 +	public function __construct($value,$isValid)
 +	{
 +		$this->_value=$value;
 +		$this->setIsValid($isValid);
 +	}
 +
 +	public function getValue()
 +	{
 +		return $this->_value;
 +	}
 +
 +	public function getIsValid()
 +	{
 +		return $this->_isValid;
 +	}
 +
 +	public function setIsValid($value)
 +	{
 +		$this->_isValid=TPropertyValue::ensureBoolean($value);
 +	}
  }
  ?>
\ No newline at end of file | 
