diff options
-rw-r--r-- | .gitattributes | 5 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | framework/Web/UI/WebControls/TCompositeControl.php | 49 | ||||
-rw-r--r-- | tests/FunctionalTests/features/protected/application.xml | 3 | ||||
-rw-r--r-- | tests/FunctionalTests/features/protected/controls/LabeledTextBox.tpl | 2 | ||||
-rw-r--r-- | tests/FunctionalTests/features/protected/controls/LabeledTextbox.php | 19 | ||||
-rw-r--r-- | tests/FunctionalTests/features/protected/pages/CompositeControl.page | 12 | ||||
-rw-r--r-- | tests/FunctionalTests/features/tests/CompositeControlTestCase.php | 23 |
8 files changed, 114 insertions, 1 deletions
diff --git a/.gitattributes b/.gitattributes index f70aa0e5..4cf64834 100644 --- a/.gitattributes +++ b/.gitattributes @@ -772,6 +772,7 @@ framework/Web/UI/WebControls/TCheckBoxList.php -text framework/Web/UI/WebControls/TClientScript.php -text framework/Web/UI/WebControls/TColorPicker.php -text framework/Web/UI/WebControls/TCompareValidator.php -text +framework/Web/UI/WebControls/TCompositeControl.php -text framework/Web/UI/WebControls/TContent.php -text framework/Web/UI/WebControls/TContentPlaceHolder.php -text framework/Web/UI/WebControls/TCustomValidator.php -text @@ -845,9 +846,12 @@ tests/FunctionalTests/config.php -text tests/FunctionalTests/features.php -text tests/FunctionalTests/features/index.php -text tests/FunctionalTests/features/protected/application.xml -text +tests/FunctionalTests/features/protected/controls/LabeledTextBox.tpl -text +tests/FunctionalTests/features/protected/controls/LabeledTextbox.php -text tests/FunctionalTests/features/protected/controls/Layout.php -text tests/FunctionalTests/features/protected/controls/Layout.tpl -text tests/FunctionalTests/features/protected/pages/ColorPicker.page -text +tests/FunctionalTests/features/protected/pages/CompositeControl.page -text tests/FunctionalTests/features/protected/pages/DatePicker.page -text tests/FunctionalTests/features/protected/pages/FeatureList.page -text tests/FunctionalTests/features/protected/pages/FeatureList.php -text @@ -859,6 +863,7 @@ tests/FunctionalTests/features/protected/pages/I18N/Home.zh_CN.page -text tests/FunctionalTests/features/protected/pages/I18N/config.xml -text tests/FunctionalTests/features/protected/pages/RatingList.page -text tests/FunctionalTests/features/protected/pages/ValidatorEffects.page -text +tests/FunctionalTests/features/tests/CompositeControlTestCase.php -text tests/FunctionalTests/index.php -text tests/FunctionalTests/quickstart.php -text tests/FunctionalTests/quickstart/Advanced/I18N.php -text @@ -25,7 +25,7 @@ CHG: TDatePicker's date can be set using Date property, it value must be in same CHG: TSimpleDateFormatter::parse() now return an integer or null on parse error (Wei)
NEW: TListControlValidator (Wei)
NEW: TClientScript (Wei)
-
+NEW: TCompositeControl (Wei)
Version 3.0RC2 April 16, 2006
diff --git a/framework/Web/UI/WebControls/TCompositeControl.php b/framework/Web/UI/WebControls/TCompositeControl.php new file mode 100644 index 00000000..80f2259c --- /dev/null +++ b/framework/Web/UI/WebControls/TCompositeControl.php @@ -0,0 +1,49 @@ +<?php
+/**
+ * TCompositeControl class file.
+ *
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright © 2005 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Revision: $ $Date: $
+ * @package System.Web.UI
+ */
+
+/**
+ * The TCompositeControl class is an abstract class that provides naming
+ * container and control designer functionality for custom controls that
+ * encompass child controls in their entirety or use the functionality of other
+ * controls. You cannot use this class directly.
+ *
+ * To create a custom composite control, derive from the CompositeControl class.
+ * The functionality this class provides is built-in verification that child
+ * controls have been created prior to being accessed
+ *
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @version $Revision: $ $Date: $
+ * @package System.Web.UI
+ * @since 3.0
+ */
+abstract class TCompositeControl extends TTemplateControl
+{
+ /**
+ * The constructor ensures the child controls are created.
+ */
+ public function __construct()
+ {
+ parent::__construct();
+ $this->recreateChildControls();
+ }
+
+ /**
+ * Recreates the child controls in a control derived from TCompositeControl.
+ */
+ protected function recreateChildControls()
+ {
+ $this->ensureChildControls();
+ }
+
+}
+
+?>
diff --git a/tests/FunctionalTests/features/protected/application.xml b/tests/FunctionalTests/features/protected/application.xml index 642152cc..9153f3f7 100644 --- a/tests/FunctionalTests/features/protected/application.xml +++ b/tests/FunctionalTests/features/protected/application.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="utf-8"?>
<application id="FeatureTests" Mode="Debug">
+ <paths>
+ <using namespace="Application.controls.*" />
+ </paths>
<services>
<service id="page" class="TPageService" DefaultPage="FeatureList">
<pages MasterClass="Application.controls.Layout" />
diff --git a/tests/FunctionalTests/features/protected/controls/LabeledTextBox.tpl b/tests/FunctionalTests/features/protected/controls/LabeledTextBox.tpl new file mode 100644 index 00000000..276d03b2 --- /dev/null +++ b/tests/FunctionalTests/features/protected/controls/LabeledTextBox.tpl @@ -0,0 +1,2 @@ +<com:TLabel ID="label" ForControl="textbox" Text="label:" />
+<com:TTextBox ID="textbox" />
\ No newline at end of file diff --git a/tests/FunctionalTests/features/protected/controls/LabeledTextbox.php b/tests/FunctionalTests/features/protected/controls/LabeledTextbox.php new file mode 100644 index 00000000..33396734 --- /dev/null +++ b/tests/FunctionalTests/features/protected/controls/LabeledTextbox.php @@ -0,0 +1,19 @@ +<?php
+/*
+ * Created on 28/04/2006
+ */
+
+class LabeledTextBox extends TCompositeControl
+{
+ public function getTextBox()
+ {
+ return $this->textbox;
+ }
+
+ public function getLabel()
+ {
+ return $this->label;
+ }
+}
+
+?>
diff --git a/tests/FunctionalTests/features/protected/pages/CompositeControl.page b/tests/FunctionalTests/features/protected/pages/CompositeControl.page new file mode 100644 index 00000000..b135445a --- /dev/null +++ b/tests/FunctionalTests/features/protected/pages/CompositeControl.page @@ -0,0 +1,12 @@ +<com:TContent ID="Content">
+<h1>Composite Control Test</h1>
+ <com:LabeledTextBox id="user" Label.Text="username:" /><br />
+ <com:LabeledTextBox id="pass" Label.Text="password:" /><br />
+ <com:TButton Text="Submit" />
+
+<com:TPanel Visible=<%= $this->user->TextBox->Text != "" %> >
+<h2>Result</h2>
+ User: <%= $this->user->TextBox->Text %> Pass: <%= $this->pass->TextBox->Text %>
+</com:TPanel>
+
+</com:TContent>
\ No newline at end of file diff --git a/tests/FunctionalTests/features/tests/CompositeControlTestCase.php b/tests/FunctionalTests/features/tests/CompositeControlTestCase.php new file mode 100644 index 00000000..dda3f63b --- /dev/null +++ b/tests/FunctionalTests/features/tests/CompositeControlTestCase.php @@ -0,0 +1,23 @@ +<?php
+/*
+ * Created on 28/04/2006
+ */
+
+class CompositeControlTestCase extends SeleniumTestCase
+{
+
+ function test()
+ {
+ $base = "ctl0_Content_";
+ $this->open("features/index.php?page=CompositeControl", "");
+ $this->verifyTextPresent("Composite Control Test", "");
+ $this->type("{$base}user_textbox", "Hello");
+ $this->type("{$base}pass_textbox", "world");
+ $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
+ $this->verifyTextPresent("Result", "");
+ $this->verifyTextPresent("User: Hello Pass: world", "");
+ }
+
+}
+
+?>
|