diff options
author | ctrlaltca <> | 2012-06-04 13:19:53 +0000 |
---|---|---|
committer | ctrlaltca <> | 2012-06-04 13:19:53 +0000 |
commit | 1c22314e5d19947bad8b987afbf2c9dc6bf834d6 (patch) | |
tree | 44805f39154165959d2f2eda154ea16d6ef6b5c3 /framework/Web | |
parent | 357ee6f0b72cd1657b01d8ebc5854300e5fadab4 (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/Web')
-rw-r--r-- | framework/Web/UI/TClientScriptManager.php | 14 | ||||
-rw-r--r-- | framework/Web/UI/TPage.php | 2 | ||||
-rw-r--r-- | framework/Web/UI/WebControls/TClientScript.php | 2 |
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); } |