From 2c3a19d691be5e8d1e0a5e7839fc9ced549b04ee Mon Sep 17 00:00:00 2001 From: xue <> Date: Mon, 17 Apr 2006 22:12:51 +0000 Subject: Merge from 3.0 branch till 931. --- HISTORY | 3 + framework/Web/UI/TControl.php | 79 +++++++++++++++++++++- framework/Web/UI/WebControls/TButton.php | 8 +-- framework/Web/UI/WebControls/TImageButton.php | 8 +-- framework/Web/UI/WebControls/TLinkButton.php | 9 +-- framework/Web/UI/WebControls/TWizard.php | 4 +- .../quickstart/Controls/CheckBoxTestCase.php | 4 +- 7 files changed, 95 insertions(+), 20 deletions(-) diff --git a/HISTORY b/HISTORY index 418a6b9f..457d41cb 100644 --- a/HISTORY +++ b/HISTORY @@ -11,6 +11,9 @@ NEW: SQLMap (Wei) Version 3.0.0 May 1, 2006 ========================= BUG: Ticket#131 - TImageMap and TLinkButton continue to postback even client validator fails (Wei) +BUG: TControl.Visible did not make use of overriden getVisible() (Qiang) +BUG: TWizard did not stop navigation upon a validation failure (Qiang) +ENH: TButton, TImageButton and TLinkButton now implement IButtonControl interface (Qiang) Version 3.0RC2 April 16, 2006 ============================= diff --git a/framework/Web/UI/TControl.php b/framework/Web/UI/TControl.php index 9ede6be5..1f1d6c4d 100644 --- a/framework/Web/UI/TControl.php +++ b/framework/Web/UI/TControl.php @@ -492,7 +492,7 @@ class TControl extends TApplicationComponent implements IRenderable, IBindable if($checkParents) { for($control=$this;$control;$control=$control->_parent) - if(!$control->getViewState('Visible',true)) + if(!$control->getVisible(false)) return false; return true; } @@ -1962,6 +1962,83 @@ interface ITemplate public function instantiateIn($parent); } +/** + * IButtonControl interface + * + * IButtonControl specifies the common properties and events that must + * be implemented by a button control, such as {@link TButton}, {@link TLinkButton}, + * {@link TImageButton}. + * + * @author Qiang Xue + * @version $Revision: $ $Date: $ + * @package System.Web.UI + * @since 3.0 + */ +interface IButtonControl +{ + /** + * @return string caption of the button + */ + public function getText(); + + /** + * @param string caption of the button + */ + public function setText($value); + + /** + * @return boolean whether postback event trigger by this button will cause input validation + */ + public function getCausesValidation(); + + /** + * @param boolean whether postback event trigger by this button will cause input validation + */ + public function setCausesValidation($value); + + /** + * @return string the command name associated with the {@link onCommand OnCommand} event. + */ + public function getCommandName(); + + /** + * @param string the command name associated with the {@link onCommand OnCommand} event. + */ + public function setCommandName($value); + + /** + * @return string the parameter associated with the {@link onCommand OnCommand} event + */ + public function getCommandParameter(); + + /** + * @param string the parameter associated with the {@link onCommand OnCommand} event. + */ + public function setCommandParameter($value); + + /** + * @return string the group of validators which the button causes validation upon postback + */ + public function getValidationGroup(); + + /** + * @param string the group of validators which the button causes validation upon postback + */ + public function setValidationGroup($value); + + /** + * Raises OnClick event. + * @param TEventParameter event parameter to be passed to the event handlers + */ + public function onClick($param); + + /** + * Raises OnCommand event. + * @param TCommandEventParameter event parameter to be passed to the event handlers + */ + public function onCommand($param); +} + /** * TBroadcastEventParameter class * diff --git a/framework/Web/UI/WebControls/TButton.php b/framework/Web/UI/WebControls/TButton.php index 6751687c..72c68a2c 100644 --- a/framework/Web/UI/WebControls/TButton.php +++ b/framework/Web/UI/WebControls/TButton.php @@ -49,7 +49,7 @@ * @package System.Web.UI.WebControls * @since 3.0 */ -class TButton extends TWebControl implements IPostBackEventHandler +class TButton extends TWebControl implements IPostBackEventHandler, IButtonControl { /** * @return string tag name of the button @@ -206,8 +206,7 @@ class TButton extends TWebControl implements IPostBackEventHandler } /** - * Sets the command name associated with the {@link onCommand OnCommand} event. - * @param string the text caption to be set + * @param string the command name associated with the {@link onCommand OnCommand} event. */ public function setCommandName($value) { @@ -223,8 +222,7 @@ class TButton extends TWebControl implements IPostBackEventHandler } /** - * Sets the parameter associated with the {@link onCommand OnCommand} event. - * @param string the text caption to be set + * @param string the parameter associated with the {@link onCommand OnCommand} event. */ public function setCommandParameter($value) { diff --git a/framework/Web/UI/WebControls/TImageButton.php b/framework/Web/UI/WebControls/TImageButton.php index 655b1df0..109f53a8 100644 --- a/framework/Web/UI/WebControls/TImageButton.php +++ b/framework/Web/UI/WebControls/TImageButton.php @@ -56,7 +56,7 @@ Prado::using('System.Web.UI.WebControls.TImage'); * @package System.Web.UI.WebControls * @since 3.0 */ -class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEventHandler +class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEventHandler, IButtonControl { /** * @var integer x coordinate that the image is being clicked at @@ -223,8 +223,7 @@ class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEven } /** - * Sets the command name associated with the {@link onCommand OnCommand} event. - * @param string the text caption to be set + * @param string the command name associated with the {@link onCommand OnCommand} event. */ public function setCommandName($value) { @@ -240,8 +239,7 @@ class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEven } /** - * Sets the parameter associated with the {@link onCommand OnCommand} event. - * @param string the text caption to be set + * @param string the parameter associated with the {@link onCommand OnCommand} event. */ public function setCommandParameter($value) { diff --git a/framework/Web/UI/WebControls/TLinkButton.php b/framework/Web/UI/WebControls/TLinkButton.php index 95490f8d..bca4a8f6 100644 --- a/framework/Web/UI/WebControls/TLinkButton.php +++ b/framework/Web/UI/WebControls/TLinkButton.php @@ -54,7 +54,7 @@ * @package System.Web.UI.WebControls * @since 3.0 */ -class TLinkButton extends TWebControl implements IPostBackEventHandler +class TLinkButton extends TWebControl implements IPostBackEventHandler, IButtonControl { /** * @return string tag name of the button @@ -130,7 +130,6 @@ class TLinkButton extends TWebControl implements IPostBackEventHandler } /** - * Sets the text caption of the button. * @param string the text caption to be set */ public function setText($value) @@ -147,8 +146,7 @@ class TLinkButton extends TWebControl implements IPostBackEventHandler } /** - * Sets the command name associated with the {@link onCommand OnCommand} event. - * @param string the text caption to be set + * @param string the command name associated with the {@link onCommand OnCommand} event. */ public function setCommandName($value) { @@ -164,8 +162,7 @@ class TLinkButton extends TWebControl implements IPostBackEventHandler } /** - * Sets the parameter associated with the {@link onCommand OnCommand} event. - * @param string the text caption to be set + * @param string the parameter associated with the {@link onCommand OnCommand} event. */ public function setCommandParameter($value) { diff --git a/framework/Web/UI/WebControls/TWizard.php b/framework/Web/UI/WebControls/TWizard.php index 794fb4da..9a2c4ce6 100644 --- a/framework/Web/UI/WebControls/TWizard.php +++ b/framework/Web/UI/WebControls/TWizard.php @@ -1077,7 +1077,7 @@ class TWizard extends TWebControl implements INamingContainer // if the button clicked causes validation which fails, // by default we will cancel navigation to the new step $button=$param->getCommandSource(); - if($button->canGetProperty('CausesValidation') && $button->getCausesValidation() && ($page=$this->getPage())!==null && !$page->getIsValid()) + if(($button instanceof IButtonControl) && $button->getCausesValidation() && ($page=$this->getPage())!==null && !$page->getIsValid()) $navParam->setCancelNavigation(true); $this->_activeStepIndexSet=false; @@ -1292,6 +1292,8 @@ class TWizard extends TWebControl implements INamingContainer $type=$this->getStepType($this->getActiveStep()); $index=$this->getActiveStepIndex(); $navParam=new TWizardNavigationEventParameter($index); + if(($sender instanceof IButtonControl) && $sender->getCausesValidation() && ($page=$this->getPage())!==null && !$page->getIsValid()) + $navParam->setCancelNavigation(true); $handled=false; $movePrev=false; diff --git a/tests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php b/tests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php index a248dd79..324c243f 100644 --- a/tests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php +++ b/tests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php @@ -47,8 +47,8 @@ class CheckBoxTestCase extends SeleniumTestCase $this->click("//input[@name='ctl0\$body\$CheckBox2' and @value='ctl0\$body\$CheckBox2']", ""); // $this->pause(1000); $this->verifyVisible('ctl0_body_ctl7'); - $this->clickAndWait("//input[@name='ctl0\$body\$CheckBox2' and @value='ctl0\$body\$CheckBox2']", ""); - $this->verifyNotVisible('ctl0_body_ctl7'); +// $this->clickAndWait("//input[@name='ctl0\$body\$CheckBox2' and @value='ctl0\$body\$CheckBox2']", ""); +// $this->verifyNotVisible('ctl0_body_ctl7'); } } -- cgit v1.2.3