* 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 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 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 tag will be printed inline,
* otherwise it will be printed in the