summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorctrlaltca <>2012-06-04 13:19:53 +0000
committerctrlaltca <>2012-06-04 13:19:53 +0000
commit1c22314e5d19947bad8b987afbf2c9dc6bf834d6 (patch)
tree44805f39154165959d2f2eda154ea16d6ef6b5c3 /framework
parent357ee6f0b72cd1657b01d8ebc5854300e5fadab4 (diff)
Related to r3159: Script rendering in ajax callbacks doesn't need to happen inside form rendering; avoid using assert(), throw an exception instead
Diffstat (limited to 'framework')
-rw-r--r--framework/Web/UI/TClientScriptManager.php14
-rw-r--r--framework/Web/UI/TPage.php2
-rw-r--r--framework/Web/UI/WebControls/TClientScript.php2
3 files changed, 9 insertions, 9 deletions
diff --git a/framework/Web/UI/TClientScriptManager.php b/framework/Web/UI/TClientScriptManager.php
index 08b528b1..0096e169 100644
--- a/framework/Web/UI/TClientScriptManager.php
+++ b/framework/Web/UI/TClientScriptManager.php
@@ -85,7 +85,7 @@ class TClientScriptManager extends TApplicationComponent
private $_renderedHiddenFields;
- private $_renderedScriptFiles;
+ private $_renderedScriptFiles=array();
private $_expandedPradoScripts;
@@ -665,20 +665,19 @@ class TClientScriptManager extends TApplicationComponent
public function renderScriptFilesBegin($writer)
{
- $this->renderScriptFilesInt($writer,true);
+ $this->renderScriptFilesInt($writer);
}
public function renderScriptFilesEnd($writer)
{
- $this->renderScriptFilesInt($writer,false);
+ $this->renderScriptFilesInt($writer);
}
/**
* @param THtmlWriter writer for the rendering purpose
*/
- public function renderScriptFilesInt($writer, $initial)
+ public function renderScriptFilesInt($writer)
{
- if ($initial) $this->_renderedScriptFiles = array();
if(!empty($this->_scriptFiles))
{
$addedScripts = array_diff($this->_scriptFiles,$this->_renderedScriptFiles);
@@ -717,10 +716,11 @@ class TClientScriptManager extends TApplicationComponent
/**
* Flushes all pending script registrations
* @param THtmlWriter writer for the rendering purpose
+ * @param TControl the control forcing the flush (used only in error messages)
*/
- public function flushScriptFiles($writer)
+ public function flushScriptFiles($writer, $control=null)
{
- assert($this->_page->InFormRender);
+ $this->_page->ensureRenderInForm($control);
$this->renderScriptFilesInt($writer,false);
}
diff --git a/framework/Web/UI/TPage.php b/framework/Web/UI/TPage.php
index 9d9ac37e..c227562c 100644
--- a/framework/Web/UI/TPage.php
+++ b/framework/Web/UI/TPage.php
@@ -968,7 +968,7 @@ class TPage extends TTemplateControl
public function ensureRenderInForm($control)
{
if(!$this->getIsCallback() && !$this->_inFormRender)
- throw new TConfigurationException('page_control_outofform',get_class($control),$control->getUniqueID());
+ throw new TConfigurationException('page_control_outofform',get_class($control), $control ? $control->getUniqueID() : null);
}
/**
diff --git a/framework/Web/UI/WebControls/TClientScript.php b/framework/Web/UI/WebControls/TClientScript.php
index 6eba3d57..8fe3b723 100644
--- a/framework/Web/UI/WebControls/TClientScript.php
+++ b/framework/Web/UI/WebControls/TClientScript.php
@@ -125,7 +125,7 @@ class TClientScript extends TControl
public function render($writer)
{
if ($this->getFlushScriptFiles())
- $this->getPage()->getClientScript()->flushScriptFiles($writer);
+ $this->getPage()->getClientScript()->flushScriptFiles($writer, $this);
$this->renderCustomScriptFile($writer);
$this->renderCustomScript($writer);
}