From 0b6ffbe14058e7453ae9861d2e4a1633b0a2f534 Mon Sep 17 00:00:00 2001 From: xue <> Date: Tue, 18 Apr 2006 02:32:07 +0000 Subject: Merge from 3.0 branch till 934. --- HISTORY | 1 + demos/personal/protected/Pages/Home.page | 3 +-- framework/Web/UI/TTemplateManager.php | 17 ++++++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index 457d41cb..57a14d73 100644 --- a/HISTORY +++ b/HISTORY @@ -11,6 +11,7 @@ NEW: SQLMap (Wei) Version 3.0.0 May 1, 2006 ========================= BUG: Ticket#131 - TImageMap and TLinkButton continue to postback even client validator fails (Wei) +BUT: Non-control components can now use expressions in their properties (Qiang) 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) diff --git a/demos/personal/protected/Pages/Home.page b/demos/personal/protected/Pages/Home.page index 32a3b1b2..bd8bd2c7 100644 --- a/demos/personal/protected/Pages/Home.page +++ b/demos/personal/protected/Pages/Home.page @@ -1,5 +1,4 @@ main content - -TextBox->Text %> /> + \ No newline at end of file diff --git a/framework/Web/UI/TTemplateManager.php b/framework/Web/UI/TTemplateManager.php index 13a5cd28..90070a5a 100644 --- a/framework/Web/UI/TTemplateManager.php +++ b/framework/Web/UI/TTemplateManager.php @@ -202,6 +202,7 @@ class TTemplate extends TApplicationComponent implements ITemplate * @var string hash code of the template */ private $_hashCode=''; + private $_tplControl=null; /** @@ -275,6 +276,7 @@ class TTemplate extends TApplicationComponent implements ITemplate */ public function instantiateIn($tplControl) { + $this->_tplControl=$tplControl; if(($page=$tplControl->getPage())===null) $page=$this->getService()->getRequestedPage(); $controls=array(); @@ -405,7 +407,13 @@ class TTemplate extends TApplicationComponent implements ITemplate $component->bindProperty($name,$value[1]); break; case self::CONFIG_EXPRESSION: - $component->autoBindProperty($name,$value[1]); + if($component instanceof TControl) + $component->autoBindProperty($name,$value[1]); + else + { + $setter='set'.$name; + $component->$setter($this->_tplControl->evaluateExpression($value[1])); + } break; case self::CONFIG_TEMPLATE: $setter='set'.$name; @@ -451,7 +459,10 @@ class TTemplate extends TApplicationComponent implements ITemplate $component->bindProperty($name,$value[1]); break; case self::CONFIG_EXPRESSION: // expression - $component->autoBindProperty($name,$value[1]); + if($component instanceof TControl) + $component->autoBindProperty($name,$value[1]); + else + $component->setSubProperty($name,$this->_tplControl->evaluateExpression($value[1])); break; case self::CONFIG_TEMPLATE: $component->setSubProperty($name,$value[1]); @@ -823,7 +834,7 @@ class TTemplate extends TApplicationComponent implements ITemplate { foreach($attributes as $name=>$att) { - if(is_array($att) && ($att[0]===self::CONFIG_DATABIND || $att[0]===self::CONFIG_EXPRESSION)) + if(is_array($att) && ($att[0]===self::CONFIG_DATABIND)) throw new TConfigurationException('template_databind_forbidden',$type,$name); if(($pos=strpos($name,'.'))!==false) { -- cgit v1.2.3