From 1c22314e5d19947bad8b987afbf2c9dc6bf834d6 Mon Sep 17 00:00:00 2001 From: ctrlaltca <> Date: Mon, 4 Jun 2012 13:19:53 +0000 Subject: Related to r3159: Script rendering in ajax callbacks doesn't need to happen inside form rendering; avoid using assert(), throw an exception instead --- framework/Web/UI/TClientScriptManager.php | 14 +++++++------- framework/Web/UI/TPage.php | 2 +- framework/Web/UI/WebControls/TClientScript.php | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) (limited to 'framework/Web') 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); } -- cgit v1.2.3