From 875efd1707a2ac5307b24181ddd7e0420bff5854 Mon Sep 17 00:00:00 2001 From: wei <> Date: Sun, 2 Jul 2006 05:50:29 +0000 Subject: fixed 3.02 bug --- HISTORY | 6 ++-- framework/Web/UI/WebControls/TBaseValidator.php | 18 +++++++++++ .../tickets/protected/pages/Ticket205.page | 24 +++++++++++++- .../tickets/protected/pages/Ticket205.php | 11 +++++++ .../tickets/protected/pages/Ticket207.page | 16 ++++++---- .../tickets/tests/Ticket205TestCase.php | 23 ++++++++++++++ .../tickets/tests/Ticket207TestCase.php | 37 ++++++++++++++++++++++ 7 files changed, 126 insertions(+), 9 deletions(-) create mode 100644 tests/FunctionalTests/tickets/protected/pages/Ticket205.php create mode 100644 tests/FunctionalTests/tickets/tests/Ticket205TestCase.php create mode 100644 tests/FunctionalTests/tickets/tests/Ticket207TestCase.php diff --git a/HISTORY b/HISTORY index b0d5a6cb..0af0a060 100644 --- a/HISTORY +++ b/HISTORY @@ -2,14 +2,15 @@ Version 3.0.2 July 2, 2006 ========================== BUG: Ticket#182 - List and validator controls cause problem in child classes (Qiang) BUG: Ticket#191 - Duplicated postbacks occur when using TButton with validators (Qiang) +BUG: Ticket#207 - Validators ClientSide.OnError triggered twice (Wei) BUG: Ticket#213 - PRADO Requirements Checker charset error (Qiang) +BUG: Ticket#227 - Enabled property doesn't works with THtmlArea (Wei) BUG: Ticket#234 - Postback target could be out of date (Qiang) BUG: Ticket#239 - Ondeactivate handler for the first View of MultiView is always fired (Qiang) BUG: Ticket#244 - redirect() needs absolute URL (Qiang) BUG: Ticket#245 - getIsSecureConnection() is not working correctly (Qiang) -BUG: Ticket#260 - Wrong value of a configuration option in setUseTransparentSessionID (Qiang) -BUG: Ticket#227 - Enabled property doesn't works with THtmlArea (Wei) BUG: Ticket#246 - TDatePicker wrong popup position in scrolled div (Wei) +BUG: Ticket#260 - Wrong value of a configuration option in setUseTransparentSessionID (Qiang) CHG: ensureChildControls() is now invoked in TControl::initRecursive (Qiang) CHG: Postback enabled control will always disable default client-side browser action. (Qiang) CHG: CSS and JS files in a theme are now included in page in alphabetic order (Qiang) @@ -24,6 +25,7 @@ ENH: TRepeater, TDataList and TDataGrid will store data indices in DataKeys if D ENH: Added TPageService.BasePageClass property (Qiang) ENH: Added TDataGrid.EmptyTemplate property (Qiang) ENH: Added paging feature to all TDataBoundControl-derived controls (Qiang) +ENH: ClientSide.ObserveChanges="false" to only revalidate client side validator when control changes (Wei) NEW: Added TPager (Qiang) NEW: Added Dreamweaver taglib extension (Stanislav, Qiang) NEW: Prado Command line script to create a new project, see framework/prado-cli.php (Wei) diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php index 3b2f0ec6..5917f313 100644 --- a/framework/Web/UI/WebControls/TBaseValidator.php +++ b/framework/Web/UI/WebControls/TBaseValidator.php @@ -646,6 +646,23 @@ class TValidatorClientScript extends TComponent return $this->_options->itemAt('OnError'); } + /** + * @param boolean true to revalidate when the control to validate changes value. + */ + public function setObserveChanges($value) + { + $this->_options->add('ObserveChanges', TPropertyValue::ensureBoolean($value)); + } + + /** + * @return boolean true to observe changes. + */ + public function getObserveChanges() + { + $changes = $this->_options->itemAt('ObserveChanges'); + return is_null($changes) ? true : $changes; + } + /** * @return array list of client-side event code. */ @@ -653,6 +670,7 @@ class TValidatorClientScript extends TComponent { return $this->_options->toArray(); } + /** * Ensure the string is a valid javascript function. If the string begins diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket205.page b/tests/FunctionalTests/tickets/protected/pages/Ticket205.page index 1f271c14..1481a227 100644 --- a/tests/FunctionalTests/tickets/protected/pages/Ticket205.page +++ b/tests/FunctionalTests/tickets/protected/pages/Ticket205.page @@ -1,4 +1,26 @@

TCustomValidator not enabling ControlCssClass or prop:ClientSide.OnError after postback.

- + + + + +
\ No newline at end of file diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket205.php b/tests/FunctionalTests/tickets/protected/pages/Ticket205.php new file mode 100644 index 00000000..6145af9a --- /dev/null +++ b/tests/FunctionalTests/tickets/protected/pages/Ticket205.php @@ -0,0 +1,11 @@ +IsValid = $this->textbox1->Text == "Prado"; + } +} + +?> \ No newline at end of file diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket207.page b/tests/FunctionalTests/tickets/protected/pages/Ticket207.page index 8826c208..556c5aae 100644 --- a/tests/FunctionalTests/tickets/protected/pages/Ticket207.page +++ b/tests/FunctionalTests/tickets/protected/pages/Ticket207.page @@ -1,13 +1,17 @@

Validators ClientSide.OnError triggered twice

-
- +

Use ClientSide.ObseveChanges="false"

+
+
-
- +
+
- +

Conditions

 	(TextBox? B is just there to prevent server submission)
diff --git a/tests/FunctionalTests/tickets/tests/Ticket205TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket205TestCase.php
new file mode 100644
index 00000000..85785697
--- /dev/null
+++ b/tests/FunctionalTests/tickets/tests/Ticket205TestCase.php
@@ -0,0 +1,23 @@
+open("tickets/index.php?page=Ticket205");
+		$this->assertTitle("Verifying Ticket 205");
+		$this->assertNotVisible("{$base}validator1");
+		
+		$this->type("{$base}textbox1", "test");
+		$this->click("{$base}button1");
+		$this->assertVisible("{$base}validator1");
+		$this->assertAlert("error");
+		
+		$this->type("{$base}textbox1", "Prado");
+		$this->clickAndWait("{$base}button1");		
+		$this->assertNotVisible("{$base}validator1");
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket207TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket207TestCase.php
new file mode 100644
index 00000000..53ae6528
--- /dev/null
+++ b/tests/FunctionalTests/tickets/tests/Ticket207TestCase.php
@@ -0,0 +1,37 @@
+open('tickets/index.php?page=Ticket207');
+		$this->assertTitle("Verifying Ticket 207");
+		$this->assertNotVisible("{$base}validator1");
+		$this->assertNotVisible("{$base}validator2");
+		
+		$this->click("{$base}button1");
+		$this->assertAlert('error on text1 fired');
+		$this->assertVisible("{$base}validator1");
+		$this->assertVisible("{$base}validator2");
+		
+		$this->type("{$base}text1", 'test');
+		$this->assertVisible("{$base}validator1");
+		$this->assertVisible("{$base}validator2");
+
+		$this->click("{$base}button1");
+		$this->assertNotVisible("{$base}validator1");
+		$this->assertVisible("{$base}validator2");
+
+		$this->type("{$base}text1", '');
+		$this->assertNotVisible("{$base}validator1");
+		$this->assertVisible("{$base}validator2");
+
+		$this->click("{$base}button1");
+		$this->assertAlert('error on text1 fired');
+		$this->assertVisible("{$base}validator1");
+		$this->assertVisible("{$base}validator2");
+	}
+}
+
+?>
\ No newline at end of file
-- 
cgit v1.2.3