* Copyright 2005-2007, Cake Software Foundation, Inc. * 1785 E. Sahara Avenue, Suite 490-204 * Las Vegas, Nevada 89104 * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @filesource * @copyright Copyright 2005-2007, Cake Software Foundation, Inc. * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project * @package cake * @subpackage cake.cake.libs.view.helpers * @since CakePHP(tm) v 0.10.0.1076 * @version $Revision$ * @modifiedby $LastChangedBy$ * @lastmodified $Date$ * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ /** * Javascript Helper class for easy use of JavaScript. * * JavascriptHelper encloses all methods needed while working with JavaScript. * * @package cake * @subpackage cake.cake.libs.view.helpers */ class JavascriptHelper extends AppHelper { var $__scriptBuffer = null; var $_cachedEvents = array(); var $_cacheEvents = false; var $_cacheToFile = false; var $_cacheAll = false; var $_rules = array(); var $safe = false; /** * html tags used by this helper. * * @var array */ var $tags = array( 'javascriptblock' => '', 'javascriptstart' => '', 'javascriptend' => '', ); /** * Returns a JavaScript script tag. * * @param string $script The JavaScript to be wrapped in SCRIPT tags. * @param boolean $allowCache Allows the script to be cached if non-event caching is active * @param boolean $safe Wraps the script in an HTML comment and a CDATA block * @return string The full SCRIPT element, with the JavaScript inside it. */ function codeBlock($script = null, $allowCache = true, $safe = false) { if ($this->_cacheEvents && $this->_cacheAll && $allowCache && $script !== null) { $this->_cachedEvents[] = $script; } else { $block = ($script !== null); if (($safe || $this->safe) && !($this->_cacheAll && $allowCache)) { $script = "\n" . '' . "\n"; } } if ($script === null && $this->_cacheAll && $allowCache) { $this->__scriptBuffer = @ob_get_contents(); @ob_end_clean(); ob_start(); return null; } if ($block) { return sprintf($this->tags['javascriptblock'], $script); } else { return sprintf($this->tags['javascriptstart'], $script); } } } /** * Ends a block of cached JavaScript code * * @return mixed */ function blockEnd() { $script = @ob_get_contents(); @ob_end_clean(); ob_start(); echo $this->__scriptBuffer; $this->__scriptBuffer = null; if (!empty($script)) { $this->_cachedEvents[] = $script; } return $this->tags['javascriptend']; } /** * Returns a JavaScript include tag (SCRIPT element) * * @param mixed $url String URL to JavaScript file, or an array of URLs. * @param boolean $inline If true, the