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