diff options
Diffstat (limited to 'framework/Web/UI')
-rw-r--r-- | framework/Web/UI/ActiveControls/TCallbackClientScript.php | 18 | ||||
-rw-r--r-- | framework/Web/UI/JuiControls/TJuiDialog.php | 26 |
2 files changed, 37 insertions, 7 deletions
diff --git a/framework/Web/UI/ActiveControls/TCallbackClientScript.php b/framework/Web/UI/ActiveControls/TCallbackClientScript.php index 82f597bb..71f8f63e 100644 --- a/framework/Web/UI/ActiveControls/TCallbackClientScript.php +++ b/framework/Web/UI/ActiveControls/TCallbackClientScript.php @@ -411,14 +411,14 @@ class TCallbackClientScript extends TApplicationComponent * a TControl component, its rendered method will be called and its contents * will be used for replacement. * @param TControl control element or HTML element id. - * @param string HTML fragement or the control to be rendered - * @param string provide a custom boundary. + * @param string HTML fragement or the control to be rendered. + * @param boolean whether to fully replace the element or just its inner content. * @see insertAbout * @see insertBelow * @see insertBefore * @see insertAfter */ - protected function replace($element, $content, $boundary=null) + protected function replace($element, $content, $self) { if($content instanceof TControl) { @@ -430,20 +430,24 @@ class TCallbackClientScript extends TApplicationComponent $boundary = $this->getResponseContentBoundary($content); $content = null; } + else + $boundary = null; - $this->callClientFunction('Prado.Element.replace', array($element, $content, $boundary)); + $this->callClientFunction('Prado.Element.replace', array($element, $content, $boundary, $self)); } /** * Replace the content of an element with new content contained in writer. * @param TControl control element or HTML element id. - * @param string HTML fragement or the control to be rendered + * @param string HTML fragement or the control to be rendered. + * @param boolean whether to fully replace the element or just its inner content, defaults to true. */ - public function replaceContent($element,$content) + public function replaceContent($element, $content, $self=true) { - $this->replace($element, $content); + $this->replace($element, $content, $self); } + /** * Evaluate a block of javascript enclosed in a boundary. * @param THtmlWriter writer for the content. diff --git a/framework/Web/UI/JuiControls/TJuiDialog.php b/framework/Web/UI/JuiControls/TJuiDialog.php index 7817c3b1..0e369cc2 100644 --- a/framework/Web/UI/JuiControls/TJuiDialog.php +++ b/framework/Web/UI/JuiControls/TJuiDialog.php @@ -164,6 +164,32 @@ class TJuiDialog extends TActivePanel implements IJuiOptions, ICallbackEventHand $code = "jQuery('#".$this->getClientId()."').dialog('".$method."');"; $cs->registerEndScript(sprintf('%08X', crc32($code)), $code); } + + /** + * Rendering as a fieldset is not supported for TJuiDialog. + * @param string the legend text. If this value is not empty, the panel will be rendered as a fieldset. + * @throws TNotSupportedException not supported for TJuiDialog. + */ + public function setGroupingText($value) + { + throw new TNotSupportedException('Rendering as a fieldset is not supported for {0}.', get_class($this)); + } + + /** + * Overrides parent implementation to just render the inner contents and avoid replacing the element itself when + * updating clientside, because replacing/removing will cause jqueryui to fire destroy on the original dialog extension. + * @param THtmlWriter html writer + */ + public function render($writer) + { + if($this->getHasPreRendered() && $this->getActiveControl()->canUpdateClientSide()) + { + parent::renderContents($writer); + $this->getPage()->getCallbackClient()->replaceContent($this, $writer, false); + } + else + parent::render($writer); + } } /** |