From 182630cd8c5d3db97dd4e3654540300b6d822e2d Mon Sep 17 00:00:00 2001 From: ctrlaltca <> Date: Fri, 1 Jun 2012 18:01:40 +0000 Subject: committed additional patch for #235 --- framework/Web/UI/WebControls/TClientScript.php | 288 ++++++++++++++----------- 1 file changed, 157 insertions(+), 131 deletions(-) (limited to 'framework/Web/UI/WebControls/TClientScript.php') diff --git a/framework/Web/UI/WebControls/TClientScript.php b/framework/Web/UI/WebControls/TClientScript.php index 9e2f247d..6eba3d57 100644 --- a/framework/Web/UI/WebControls/TClientScript.php +++ b/framework/Web/UI/WebControls/TClientScript.php @@ -1,131 +1,157 @@ - - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2011 PradoSoft - * @license http://www.pradosoft.com/license/ - * @version $Id$ - * @package System.Web.UI.WebControls - */ - -/** - * TClientScript class - * - * Allows importing of Prado Client Scripts from template via the - * {@link setPradoScripts PradoScripts} property. Multiple Prado - * client-scripts can be specified using comma delimited string of the - * javascript library to include on the page. For example, - * - * - * - * - * - * Custom javascript files can be register using the {@link setScriptUrl ScriptUrl} - * property. - * - * /> - * - * - * Contents within TClientScript will be treated as javascript code and will be - * rendered in place. - * - * @author Wei Zhuo - * @version $Id$ - * @package System.Web.UI.WebControls - * @since 3.0 - */ -class TClientScript extends TControl -{ - /** - * @return string comma delimited list of javascript libraries to included - * on the page. - */ - public function getPradoScripts() - { - return $this->getViewState('PradoScripts', ''); - } - - /** - * Include javascript library to the current page. The current supported - * libraries are: "prado", "effects", "ajax", "validator", "logger", - * "datepicker", "colorpicker". Library dependencies are automatically resolved. - * - * @param string comma delimited list of javascript libraries to include. - */ - public function setPradoScripts($value) - { - $this->setViewState('PradoScripts', $value, ''); - } - - /** - * @return string custom javascript file url. - */ - public function getScriptUrl() - { - return $this->getViewState('ScriptUrl', ''); - } - - /** - * @param string custom javascript file url. - */ - public function setScriptUrl($value) - { - $this->setViewState('ScriptUrl', $value, ''); - } - - /** - * Calls the client script manager to add each of the requested client - * script libraries. - * @param mixed event parameter - */ - public function onPreRender($param) - { - parent::onPreRender($param); - $scripts = preg_split('/,|\s+/', $this->getPradoScripts()); - $cs = $this->getPage()->getClientScript(); - foreach($scripts as $script) - { - if(($script = trim($script))!=='') - $cs->registerPradoScript($script); - } - } - - /** - * Renders the body content as javascript block. - * Overrides parent implementation, parent renderChildren method is called during - * {@link registerCustomScript}. - * @param THtmlWriter the renderer - */ - public function render($writer) - { - $this->renderCustomScriptFile($writer); - $this->renderCustomScript($writer); - } - - /** - * Renders the custom script file. - * @param THtmLWriter the renderer - */ - protected function renderCustomScriptFile($writer) - { - if(($scriptUrl = $this->getScriptUrl())!=='') - $writer->write("\n"); - } - - /** - * Registers the body content as javascript. - * @param THtmlWriter the renderer - */ - protected function renderCustomScript($writer) - { - if($this->getHasControls()) - { - $writer->write("\n"); - } - } -} - + + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2011 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Id$ + * @package System.Web.UI.WebControls + */ + +/** + * TClientScript class + * + * Allows importing of Prado Client Scripts from template via the + * {@link setPradoScripts PradoScripts} property. Multiple Prado + * client-scripts can be specified using comma delimited string of the + * javascript library to include on the page. For example, + * + * + * + * + * + * Custom javascript files can be register using the {@link setScriptUrl ScriptUrl} + * property. + * + * /> + * + * + * Contents within TClientScript will be treated as javascript code and will be + * rendered in place. + * + * Since Prado 3.2 the property {@link setFlushScriptFiles FlushScriptFiles} controls + * whether Prado will flush the script files defined in the page before rendering the + * TClientScript contents. + * If you're not using any external functions in your TClientScript block, you should + * set the {@link setFlushScriptFiles FlushScriptFiles} property to false, so Prado + * can postpone the loading of all the referenced script files further down the page + * generation cycle. + * + * @author Wei Zhuo + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0 + */ +class TClientScript extends TControl +{ + /** + * @return string comma delimited list of javascript libraries to included + * on the page. + */ + public function getPradoScripts() + { + return $this->getViewState('PradoScripts', ''); + } + + /** + * Include javascript library to the current page. The current supported + * libraries are: "prado", "effects", "ajax", "validator", "logger", + * "datepicker", "colorpicker". Library dependencies are automatically resolved. + * + * @param string comma delimited list of javascript libraries to include. + */ + public function setPradoScripts($value) + { + $this->setViewState('PradoScripts', $value, ''); + } + + /** + * @return string custom javascript file url. + */ + public function getScriptUrl() + { + return $this->getViewState('ScriptUrl', ''); + } + + /** + * @param string custom javascript file url. + */ + public function setScriptUrl($value) + { + $this->setViewState('ScriptUrl', $value, ''); + } + + /** + * @return bool whether to flush script files using TClientScriptManager::flushScriptFiles() before rendering the script block + */ + public function getFlushScriptFiles() + { + return TPropertyValue::ensureBoolean($this->getViewState('FlushScriptFiles', true)); + } + + /** + * @param bool whether to flush script files using TClientScriptManager::flushScriptFiles() before rendering the script block + */ + public function setFlushScriptFiles($value) + { + $this->setViewState('FlushScriptFiles', TPropertyValue::ensureBoolean($value)); + } + + /** + * Calls the client script manager to add each of the requested client + * script libraries. + * @param mixed event parameter + */ + public function onPreRender($param) + { + parent::onPreRender($param); + $scripts = preg_split('/,|\s+/', $this->getPradoScripts()); + $cs = $this->getPage()->getClientScript(); + foreach($scripts as $script) + { + if(($script = trim($script))!=='') + $cs->registerPradoScript($script); + } + } + + /** + * Renders the body content as javascript block. + * Overrides parent implementation, parent renderChildren method is called during + * {@link registerCustomScript}. + * @param THtmlWriter the renderer + */ + public function render($writer) + { + if ($this->getFlushScriptFiles()) + $this->getPage()->getClientScript()->flushScriptFiles($writer); + $this->renderCustomScriptFile($writer); + $this->renderCustomScript($writer); + } + + /** + * Renders the custom script file. + * @param THtmLWriter the renderer + */ + protected function renderCustomScriptFile($writer) + { + if(($scriptUrl = $this->getScriptUrl())!=='') + $writer->write("\n"); + } + + /** + * Registers the body content as javascript. + * @param THtmlWriter the renderer + */ + protected function renderCustomScript($writer) + { + if($this->getHasControls()) + { + $writer->write("\n"); + } + } +} + -- cgit v1.2.3