From 098556f20a2014f8ca211b0820cfa4776052641b Mon Sep 17 00:00:00 2001 From: ctrlaltca <> Date: Fri, 18 May 2012 18:00:24 +0000 Subject: fix #401 --- .../Web/UI/ActiveControls/TCallbackClientScript.php | 20 ++++++++++++++++++++ framework/Web/UI/WebControls/TClientScript.php | 13 ++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) (limited to 'framework/Web/UI') diff --git a/framework/Web/UI/ActiveControls/TCallbackClientScript.php b/framework/Web/UI/ActiveControls/TCallbackClientScript.php index 453824db..ecc213f5 100644 --- a/framework/Web/UI/ActiveControls/TCallbackClientScript.php +++ b/framework/Web/UI/ActiveControls/TCallbackClientScript.php @@ -433,6 +433,26 @@ class TCallbackClientScript extends TApplicationComponent $this->replace(null, $writer, 'Prado.Element.evaluateScript'); } + /** + * Appends a block of inline javascript enclosed in a boundary. + * Similar to to evaluateScript(), but functions declared in the + * inline block will be available to page elements. + * @param THtmlWriter writer for the content. + */ + public function appendScriptBlock($content) + { + if($content instanceof TControl) + { + $boundary = $this->getRenderedContentBoundary($content); + } + else if($content instanceof THtmlWriter) + { + $boundary = $this->getResponseContentBoundary($content); + } + + $this->callClientFunction('Prado.Element.appendScriptBlock', array($boundary)); + } + /** * Renders the control and return the content boundary from * TCallbackResponseWriter. This method should only be used by framework diff --git a/framework/Web/UI/WebControls/TClientScript.php b/framework/Web/UI/WebControls/TClientScript.php index 325105bc..4736df0e 100644 --- a/framework/Web/UI/WebControls/TClientScript.php +++ b/framework/Web/UI/WebControls/TClientScript.php @@ -132,9 +132,16 @@ class TClientScript extends TControl { if($this->getHasControls()) { - $writer->write("\n"); + if($this->getPage()->getIsCallback()) + { + $extWriter= $this->getPage()->getResponse()->createHtmlWriter(); + $this->renderChildren($extWriter); + $this->getPage()->getCallbackClient()->appendScriptBlock($extWriter); + } else { + $writer->write("\n"); + } } } } -- cgit v1.2.3