* 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 $enabled = true; 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 array $options Set of options: allowCache, safe * @param boolean $safe DEPRECATED. Use $options['safe'] instead * @return string The full SCRIPT element, with the JavaScript inside it. */ function codeBlock($script = null, $options = array(), $safe = null) { if (!empty($options) && !is_array($options)) { $options = array('allowCache' => $options); } else if (empty($options)) { $options = array(); } $defaultOptions = array('allowCache' => true, 'safe' => true); $options = array_merge($defaultOptions, $options); foreach($defaultOptions as $option => $value) { if (isset($$option) && $$option !== null) { $options[$option] = $$option; } } if ($this->_cacheEvents && $this->_cacheAll && $options['allowCache'] && $script !== null) { $this->_cachedEvents[] = $script; } else { $block = ($script !== null); if (($options['safe'] || $this->safe) && !($this->_cacheAll && $options['allowCache'])) { $script = "\n" . '//' . "\n"; } } if ($script === null && $this->_cacheAll && $options['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 null; } 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