From 2037f60c73a77f28cc09fcb64cb424e16c593765 Mon Sep 17 00:00:00 2001 From: wei <> Date: Thu, 2 Feb 2006 06:06:30 +0000 Subject: Fixed #21 --- .gitattributes | 5 ++ framework/Web/Javascripts/js/prado.js | 59 +++++++++++++--------- framework/Web/Javascripts/prado/controls.js | 24 ++++++++- .../protected/pages/TicketTestPage.php | 14 +++++ .../protected/pages/TicketTestPage.tpl | 45 +++++++++++++++++ .../protected/pages/Tickets/Ticket_21.page | 10 ++++ .../protected/pages/Tickets/Ticket_21.php | 37 ++++++++++++++ .../protected/pages/Tickets/config.xml | 5 ++ 8 files changed, 172 insertions(+), 27 deletions(-) create mode 100644 tests/FunctionalTests/protected/pages/TicketTestPage.php create mode 100644 tests/FunctionalTests/protected/pages/TicketTestPage.tpl create mode 100644 tests/FunctionalTests/protected/pages/Tickets/Ticket_21.page create mode 100644 tests/FunctionalTests/protected/pages/Tickets/Ticket_21.php create mode 100644 tests/FunctionalTests/protected/pages/Tickets/config.xml diff --git a/.gitattributes b/.gitattributes index 3acbd78a..78dcca04 100644 --- a/.gitattributes +++ b/.gitattributes @@ -713,6 +713,11 @@ tests/FunctionalTests/protected/pages/I18N/BasicI18N.page -text tests/FunctionalTests/protected/pages/I18N/BasicI18N.php -text tests/FunctionalTests/protected/pages/Layout.php -text tests/FunctionalTests/protected/pages/Layout.tpl -text +tests/FunctionalTests/protected/pages/TicketTestPage.php -text +tests/FunctionalTests/protected/pages/TicketTestPage.tpl -text +tests/FunctionalTests/protected/pages/Tickets/Ticket_21.page -text +tests/FunctionalTests/protected/pages/Tickets/Ticket_21.php -text +tests/FunctionalTests/protected/pages/Tickets/config.xml -text tests/FunctionalTests/protected/pages/UI/DatePicker.page -text tests/FunctionalTests/protected/pages/UI/LabeledTextBox.php -text tests/FunctionalTests/protected/pages/UI/LabeledTextBox.tpl -text diff --git a/framework/Web/Javascripts/js/prado.js b/framework/Web/Javascripts/js/prado.js index dd33345b..657508e6 100644 --- a/framework/Web/Javascripts/js/prado.js +++ b/framework/Web/Javascripts/js/prado.js @@ -1862,49 +1862,58 @@ _426=_427; } } if(_426){ -Prado.PostBack(_423,_424); +this.onPostBack(_423,_424); } if(isBoolean(_427)&&!_427){ Event.stop(_423); } +},onPostBack:function(_428,_429){ +Prado.PostBack(_428,_429); }}); Prado.WebUI.TLinkButton=Prado.WebUI.ClickableComponent; Prado.WebUI.TImageButton=Prado.WebUI.ClickableComponent; Prado.WebUI.TCheckBox=Prado.WebUI.ClickableComponent; -Prado.WebUI.TRadioButton=Prado.WebUI.ClickableComponent; Prado.WebUI.TBulletedList=Prado.WebUI.ClickableComponent; -Prado.WebUI.TTextBox=Prado.WebUI.createPostBackComponent({onInit:function(_428){ -if(_428["TextMode"]!="MultiLine"){ +Prado.WebUI.TRadioButton=Prado.WebUI.ClickableComponent; +Prado.WebUI.TRadioButton.prototype.onRadioButtonInitialize=Prado.WebUI.TRadioButton.prototype.initialize; +Object.extend(Prado.WebUI.TRadioButton.prototype,{initialize:function(_430){ +this.element=$(_430["ID"]); +if(!this.element.checked){ +this.onRadioButtonInitialize(_430); +} +}}); +Prado.WebUI.TTextBox=Prado.WebUI.createPostBackComponent({onInit:function(_431){ +if(_431["TextMode"]!="MultiLine"){ Event.observe(this.element,"keydown",this.handleReturnKey.bind(this)); } -Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_428)); +Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_431)); },handleReturnKey:function(e){ if(Event.keyCode(e)==Event.KEY_RETURN){ -var _429=Event.element(e); -if(_429){ -Event.fireEvent(_429,"change"); +var _432=Event.element(e); +if(_432){ +Event.fireEvent(_432,"change"); Event.stop(e); } } }}); -Prado.WebUI.TListControl=Prado.WebUI.createPostBackComponent({onInit:function(_430){ -Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_430)); +Prado.WebUI.TListControl=Prado.WebUI.createPostBackComponent({onInit:function(_433){ +Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_433)); }}); Prado.WebUI.TListBox=Prado.WebUI.TListControl; Prado.WebUI.TDropDownList=Prado.WebUI.TListControl; Prado.WebUI.DefaultButton=Class.create(); -Object.extend(Prado.WebUI.DefaultButton.prototype,{initialize:function(_431){ -this.options=_431; +Object.extend(Prado.WebUI.DefaultButton.prototype,{initialize:function(_434){ +this.options=_434; this._event=this.triggerEvent.bindEvent(this); -Event.observe(_431["Panel"],"keydown",this._event); -},triggerEvent:function(ev,_433){ -var _434=Event.keyCode(ev)==Event.KEY_RETURN; -var _435=Event.element(ev).tagName.toLowerCase()=="textarea"; -if(_434&&!_435){ -var _436=$(this.options["Target"]); -if(_436){ +Event.observe(_434["Panel"],"keydown",this._event); +},triggerEvent:function(ev,_436){ +var _437=Event.keyCode(ev)==Event.KEY_RETURN; +var _438=Event.element(ev).tagName.toLowerCase()=="textarea"; +if(_437&&!_438){ +var _439=$(this.options["Target"]); +if(_439){ this.triggered=true; -Event.fireEvent(_436,this.options["Event"]); +Event.fireEvent(_439,this.options["Event"]); Event.stop(ev); } } @@ -1914,15 +1923,15 @@ Prado.WebUI.TTextHighlighter.prototype={initialize:function(id){ if(!window.clipboardData){ return; } -var _437={href:"javascript:;//copy code to clipboard",onclick:"Prado.WebUI.TTextHighlighter.copy(this)",onmouseover:"Prado.WebUI.TTextHighlighter.hover(this)",onmouseout:"Prado.WebUI.TTextHighlighter.out(this)"}; -var div=DIV({className:"copycode"},A(_437,"Copy Code")); +var _440={href:"javascript:;//copy code to clipboard",onclick:"Prado.WebUI.TTextHighlighter.copy(this)",onmouseover:"Prado.WebUI.TTextHighlighter.hover(this)",onmouseout:"Prado.WebUI.TTextHighlighter.out(this)"}; +var div=DIV({className:"copycode"},A(_440,"Copy Code")); document.write(DIV(null,div).innerHTML); }}; Object.extend(Prado.WebUI.TTextHighlighter,{copy:function(obj){ -var _438=obj.parentNode.parentNode.parentNode; +var _441=obj.parentNode.parentNode.parentNode; var text=""; -for(var i=0;i<_438.childNodes.length;i++){ -var node=_438.childNodes[i]; +for(var i=0;i<_441.childNodes.length;i++){ +var node=_441.childNodes[i]; if(node.innerText){ text+=node.innerText=="Copy Code"?"":node.innerText; }else{ diff --git a/framework/Web/Javascripts/prado/controls.js b/framework/Web/Javascripts/prado/controls.js index c472c1be..d059b4a5 100644 --- a/framework/Web/Javascripts/prado/controls.js +++ b/framework/Web/Javascripts/prado/controls.js @@ -56,18 +56,38 @@ Prado.WebUI.ClickableComponent = Prado.WebUI.createPostBackComponent( doPostBack = onclicked; } if(doPostBack) - Prado.PostBack(event,options); + this.onPostBack(event,options); if(isBoolean(onclicked) && !onclicked) Event.stop(event); + }, + + onPostBack : function(event, options) + { + Prado.PostBack(event,options); } }); Prado.WebUI.TLinkButton = Prado.WebUI.ClickableComponent; Prado.WebUI.TImageButton = Prado.WebUI.ClickableComponent; Prado.WebUI.TCheckBox = Prado.WebUI.ClickableComponent; -Prado.WebUI.TRadioButton = Prado.WebUI.ClickableComponent; Prado.WebUI.TBulletedList = Prado.WebUI.ClickableComponent; +/** + * Radio button, only initialize if not already checked. + */ +Prado.WebUI.TRadioButton = Prado.WebUI.ClickableComponent; +Prado.WebUI.TRadioButton.prototype.onRadioButtonInitialize = Prado.WebUI.TRadioButton.prototype.initialize; +Object.extend(Prado.WebUI.TRadioButton.prototype, +{ + initialize : function(options) + { + this.element = $(options['ID']); + if(!this.element.checked) + this.onRadioButtonInitialize(options); + } +}); + + Prado.WebUI.TTextBox = Prado.WebUI.createPostBackComponent( { onInit : function(options) diff --git a/tests/FunctionalTests/protected/pages/TicketTestPage.php b/tests/FunctionalTests/protected/pages/TicketTestPage.php new file mode 100644 index 00000000..f647f56b --- /dev/null +++ b/tests/FunctionalTests/protected/pages/TicketTestPage.php @@ -0,0 +1,14 @@ +getPage())); + $this->getPage()->setTitle("Verifying Ticket $num"); + $this->ticketlink->setText("Verifying Ticket $num"); + $this->ticketlink->setNavigateUrl("http://trac.pradosoft.com/ticket/{$num}"); + } +} + +?> \ No newline at end of file diff --git a/tests/FunctionalTests/protected/pages/TicketTestPage.tpl b/tests/FunctionalTests/protected/pages/TicketTestPage.tpl new file mode 100644 index 00000000..bf2f8fab --- /dev/null +++ b/tests/FunctionalTests/protected/pages/TicketTestPage.tpl @@ -0,0 +1,45 @@ + + + + + + + + + +

+ + +
+ +
+
+ + Validate XHTML 1.0 + +View Source +
+ + \ No newline at end of file diff --git a/tests/FunctionalTests/protected/pages/Tickets/Ticket_21.page b/tests/FunctionalTests/protected/pages/Tickets/Ticket_21.page new file mode 100644 index 00000000..e0619ea1 --- /dev/null +++ b/tests/FunctionalTests/protected/pages/Tickets/Ticket_21.page @@ -0,0 +1,10 @@ + +

TRadioButton always postback if AutoPostBack=true

+ + +
+ + +
\ No newline at end of file diff --git a/tests/FunctionalTests/protected/pages/Tickets/Ticket_21.php b/tests/FunctionalTests/protected/pages/Tickets/Ticket_21.php new file mode 100644 index 00000000..7a9e3519 --- /dev/null +++ b/tests/FunctionalTests/protected/pages/Tickets/Ticket_21.php @@ -0,0 +1,37 @@ +IsPostBack) + $this->setViewState("clicks", 0); + } + + public function doClick($sender, $param) + { + $clicks = $this->getViewState("clicks"); + $clicks++; + $this->label1->setText("Radio button clicks: $clicks"); + $this->setViewState("clicks", $clicks); + } +} + +class Ticket_21_TestCase extends SeleniumTestCase +{ + function test() + { + $this->open(Prado::getApplication()->getTestPage(__FILE__)); + $this->assertTitle("Verifying Ticket 21"); + $this->clickAndWait("ctl0_Content_button1"); + $this->verifyTextPresent("Radio button clicks: 1", ""); + $this->click("ctl0_Content_button1"); + $this->verifyTextPresent("Radio button clicks: 1", ""); + + } +} + +?> + diff --git a/tests/FunctionalTests/protected/pages/Tickets/config.xml b/tests/FunctionalTests/protected/pages/Tickets/config.xml new file mode 100644 index 00000000..8e9db49e --- /dev/null +++ b/tests/FunctionalTests/protected/pages/Tickets/config.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file -- cgit v1.2.3