summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes3
-rw-r--r--framework/Web/Javascripts/prado/validation3.js4
-rw-r--r--framework/Web/UI/WebControls/TBaseValidator.php24
-rw-r--r--tests/FunctionalTests/tickets/protected/pages/TestHtmlArea.php8
-rw-r--r--tests/FunctionalTests/tickets/protected/pages/Ticket169.page8
-rw-r--r--tests/FunctionalTests/tickets/tests/Ticket169TestCase.php14
6 files changed, 59 insertions, 2 deletions
diff --git a/.gitattributes b/.gitattributes
index 07dc529a..14c4031f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1046,9 +1046,11 @@ tests/FunctionalTests/tickets.php -text
tests/FunctionalTests/tickets/index.php -text
tests/FunctionalTests/tickets/protected/pages/Layout.php -text
tests/FunctionalTests/tickets/protected/pages/Layout.tpl -text
+tests/FunctionalTests/tickets/protected/pages/TestHtmlArea.php -text
tests/FunctionalTests/tickets/protected/pages/Ticket121.page -text
tests/FunctionalTests/tickets/protected/pages/Ticket121.php -text
tests/FunctionalTests/tickets/protected/pages/Ticket163.page -text
+tests/FunctionalTests/tickets/protected/pages/Ticket169.page -text
tests/FunctionalTests/tickets/protected/pages/Ticket191.page -text
tests/FunctionalTests/tickets/protected/pages/Ticket191.php -text
tests/FunctionalTests/tickets/protected/pages/Ticket21.page -text
@@ -1068,6 +1070,7 @@ tests/FunctionalTests/tickets/protected/pages/config.xml -text
tests/FunctionalTests/tickets/protected/pages/hotspot.jpg -text
tests/FunctionalTests/tickets/tests/Ticket121TestCase.php -text
tests/FunctionalTests/tickets/tests/Ticket163TestCase.php -text
+tests/FunctionalTests/tickets/tests/Ticket169TestCase.php -text
tests/FunctionalTests/tickets/tests/Ticket191TestCase.php -text
tests/FunctionalTests/tickets/tests/Ticket21TestCase.php -text
tests/FunctionalTests/tickets/tests/Ticket27TestCase.php -text
diff --git a/framework/Web/Javascripts/prado/validation3.js b/framework/Web/Javascripts/prado/validation3.js
index 8b6b19fc..396b4356 100644
--- a/framework/Web/Javascripts/prado/validation3.js
+++ b/framework/Web/Javascripts/prado/validation3.js
@@ -754,7 +754,9 @@ Prado.WebUI.TBaseValidator.prototype =
return value;
},
- /**
+ /**
+ * The ControlType property comes from TBaseValidator::getClientControlClass()
+ * Be sure to update the TBaseValidator::$_clientClass if new cases are added.
* @return mixed control value to validate
*/
getValidationValue : function(control)
diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php
index 8fcba1c2..9ff2a97d 100644
--- a/framework/Web/UI/WebControls/TBaseValidator.php
+++ b/framework/Web/UI/WebControls/TBaseValidator.php
@@ -83,6 +83,12 @@ abstract class TBaseValidator extends TLabel implements IValidator
* @var TValidatorClientScript validator client-script options.
*/
private $_clientScript;
+ /**
+ * Controls for which the client-side validation3.js file needs to handle
+ * them specially.
+ * @var array list of control class names
+ */
+ private static $_clientClass = array('THtmlArea', 'TDatePicker');
/**
* Constructor.
@@ -152,7 +158,8 @@ abstract class TBaseValidator extends TLabel implements IValidator
$options['ValidationGroup'] = $this->getValidationGroup();
$options['ControlToValidate'] = $control->getClientID();
$options['ControlCssClass'] = $this->getControlCssClass();
- $options['ControlType'] = get_class($control);
+
+ $options['ControlType'] = $this->getClientControlClass($control);
if(!is_null($this->_clientScript))
$options = array_merge($options,$this->_clientScript->getOptions());
@@ -161,6 +168,21 @@ abstract class TBaseValidator extends TLabel implements IValidator
}
/**
+ * Gets the Control type for client-side validation. If new cases exists in
+ * TBaseValidator::$_clientClass, be sure to update the corresponding
+ * "Javascript/validation3.js" file as well.
+ * @param TControl control to validate.
+ * @return string control type for client-side validation.
+ */
+ private function getClientControlClass($control)
+ {
+ foreach(self::$_clientClass as $type)
+ if($control instanceof $type)
+ return $type;
+ return get_class($control);
+ }
+
+ /**
* Gets the TValidatorClientScript that allows modification of the client-
* side validator events.
*
diff --git a/tests/FunctionalTests/tickets/protected/pages/TestHtmlArea.php b/tests/FunctionalTests/tickets/protected/pages/TestHtmlArea.php
new file mode 100644
index 00000000..13a4189b
--- /dev/null
+++ b/tests/FunctionalTests/tickets/protected/pages/TestHtmlArea.php
@@ -0,0 +1,8 @@
+<?php
+
+class TestHtmlArea extends THtmlArea
+{
+
+}
+
+?> \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket169.page b/tests/FunctionalTests/tickets/protected/pages/Ticket169.page
new file mode 100644
index 00000000..24c447d5
--- /dev/null
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket169.page
@@ -0,0 +1,8 @@
+<com:TContent ID="Content">
+ <com:Application.pages.TestHtmlArea ID="test1"/>
+ <com:TRequiredFieldValidator
+ ID="validator1"
+ ControlToValidate="test1"
+ ErrorMessage="required" />
+ <com:TButton Text="Click Me" />
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket169TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket169TestCase.php
new file mode 100644
index 00000000..30bbc92d
--- /dev/null
+++ b/tests/FunctionalTests/tickets/tests/Ticket169TestCase.php
@@ -0,0 +1,14 @@
+<?php
+
+class Ticket169TestCase extends SeleniumTestCase
+{
+ function test()
+ {
+ $this->open('tickets/index.php?page=Ticket169');
+ $this->assertNotVisible('ctl0_Content_validator1');
+ $this->click('ctl0_Content_ctl0');
+ $this->assertVisible('ctl0_Content_validator1');
+ }
+}
+
+?> \ No newline at end of file