871 行
		
	
	
	
		
			20 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			871 行
		
	
	
	
		
			20 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | ||
|  | /** | ||
|  |  * CodeIgniter | ||
|  |  * | ||
|  |  * An open source application development framework for PHP 5.1.6 or newer | ||
|  |  * | ||
|  |  * @package		CodeIgniter | ||
|  |  * @author		ExpressionEngine Dev Team | ||
|  |  * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc. | ||
|  |  * @license		http://codeigniter.com/user_guide/license.html | ||
|  |  * @link		http://codeigniter.com | ||
|  |  * @since		Version 1.0 | ||
|  |  * @filesource | ||
|  |  */ | ||
|  | 
 | ||
|  | // ------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | /** | ||
|  |  * Javascript Class | ||
|  |  * | ||
|  |  * @package		CodeIgniter | ||
|  |  * @subpackage	Libraries | ||
|  |  * @category	Javascript | ||
|  |  * @author		ExpressionEngine Dev Team | ||
|  |  * @link		http://codeigniter.com/user_guide/libraries/javascript.html | ||
|  |  */ | ||
|  | class CI_Javascript { | ||
|  | 
 | ||
|  | 	var $_javascript_location = 'js'; | ||
|  | 
 | ||
|  | 	public function __construct($params = array()) | ||
|  | 	{ | ||
|  | 		$defaults = array('js_library_driver' => 'jquery', 'autoload' => TRUE); | ||
|  | 
 | ||
|  | 		foreach ($defaults as $key => $val) | ||
|  | 		{ | ||
|  | 			if (isset($params[$key]) && $params[$key] !== "") | ||
|  | 			{ | ||
|  | 				$defaults[$key] = $params[$key]; | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		extract($defaults); | ||
|  | 
 | ||
|  | 		$this->CI =& get_instance(); | ||
|  | 
 | ||
|  | 		// load the requested js library
 | ||
|  | 		$this->CI->load->library('javascript/'.$js_library_driver, array('autoload' => $autoload)); | ||
|  | 		// make js to refer to current library
 | ||
|  | 		$this->js =& $this->CI->$js_library_driver; | ||
|  | 
 | ||
|  | 		log_message('debug', "Javascript Class Initialized and loaded.  Driver used: $js_library_driver"); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------	
 | ||
|  | 	// Event Code
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Blur | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library blur event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function blur($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_blur($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Change | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library change event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function change($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_change($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Click | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library click event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @param	boolean	whether or not to return false | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function click($element = 'this', $js = '', $ret_false = TRUE) | ||
|  | 	{ | ||
|  | 		return $this->js->_click($element, $js, $ret_false); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Double Click | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library dblclick event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function dblclick($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_dblclick($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Error | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library error event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function error($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_error($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Focus | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library focus event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function focus($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->__add_event($focus, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Hover | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library hover event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- Javascript code for mouse over | ||
|  | 	 * @param	string	- Javascript code for mouse out | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function hover($element = 'this', $over, $out) | ||
|  | 	{ | ||
|  | 		return $this->js->__hover($element, $over, $out); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Keydown | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library keydown event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function keydown($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_keydown($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Keyup | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library keydown event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function keyup($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_keyup($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Load | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library load event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function load($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_load($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Mousedown | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library mousedown event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function mousedown($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_mousedown($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Mouse Out | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library mouseout event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function mouseout($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_mouseout($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Mouse Over | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library mouseover event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function mouseover($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_mouseover($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Mouseup | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library mouseup event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function mouseup($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_mouseup($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Output | ||
|  | 	 * | ||
|  | 	 * Outputs the called javascript to the screen | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The code to output | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function output($js) | ||
|  | 	{ | ||
|  | 		return $this->js->_output($js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Ready | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library mouseup event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function ready($js) | ||
|  | 	{ | ||
|  | 		return $this->js->_document_ready($js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Resize | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library resize event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function resize($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_resize($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Scroll | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library scroll event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function scroll($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_scroll($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Unload | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library unload event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	string	The code to execute | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function unload($element = 'this', $js = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_unload($element, $js); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------	
 | ||
|  | 	// Effects
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Add Class | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library addClass event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- Class to add | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function addClass($element = 'this', $class = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_addClass($element, $class); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Animate | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library animate event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function animate($element = 'this', $params = array(), $speed = '', $extra = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_animate($element, $params, $speed, $extra); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Fade In | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library hide event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function fadeIn($element = 'this', $speed = '', $callback = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_fadeIn($element, $speed, $callback); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Fade Out | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library hide event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function fadeOut($element = 'this', $speed = '', $callback = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_fadeOut($element, $speed, $callback); | ||
|  | 	} | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Slide Up | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library slideUp event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function slideUp($element = 'this', $speed = '', $callback = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_slideUp($element, $speed, $callback); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Remove Class | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library removeClass event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- Class to add | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function removeClass($element = 'this', $class = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_removeClass($element, $class); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Slide Down | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library slideDown event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function slideDown($element = 'this', $speed = '', $callback = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_slideDown($element, $speed, $callback); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Slide Toggle | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library slideToggle event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function slideToggle($element = 'this', $speed = '', $callback = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_slideToggle($element, $speed, $callback); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Hide | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library hide action | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function hide($element = 'this', $speed = '', $callback = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_hide($element, $speed, $callback); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Toggle | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library toggle event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function toggle($element = 'this') | ||
|  | 	{ | ||
|  | 		return $this->js->_toggle($element); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Toggle Class | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library toggle class event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function toggleClass($element = 'this', $class='') | ||
|  | 	{ | ||
|  | 		return $this->js->_toggleClass($element, $class); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Show | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library show event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function show($element = 'this', $speed = '', $callback = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_show($element, $speed, $callback); | ||
|  | 	} | ||
|  | 
 | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Compile | ||
|  | 	 * | ||
|  | 	 * gather together all script needing to be output | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function compile($view_var = 'script_foot', $script_tags = TRUE) | ||
|  | 	{ | ||
|  | 		$this->js->_compile($view_var, $script_tags); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Clear Compile | ||
|  | 	 * | ||
|  | 	 * Clears any previous javascript collected for output | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @return	void | ||
|  | 	 */ | ||
|  | 	function clear_compile() | ||
|  | 	{ | ||
|  | 		$this->js->_clear_compile(); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * External | ||
|  | 	 * | ||
|  | 	 * Outputs a <script> tag with the source as an external js file | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function external($external_file = '', $relative = FALSE) | ||
|  | 	{ | ||
|  | 		if ($external_file !== '') | ||
|  | 		{ | ||
|  | 			$this->_javascript_location = $external_file; | ||
|  | 		} | ||
|  | 		else | ||
|  | 		{ | ||
|  | 			if ($this->CI->config->item('javascript_location') != '') | ||
|  | 			{ | ||
|  | 				$this->_javascript_location = $this->CI->config->item('javascript_location'); | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		if ($relative === TRUE OR strncmp($external_file, 'http://', 7) == 0 OR strncmp($external_file, 'https://', 8) == 0) | ||
|  | 		{ | ||
|  | 			$str = $this->_open_script($external_file); | ||
|  | 		} | ||
|  | 		elseif (strpos($this->_javascript_location, 'http://') !== FALSE) | ||
|  | 		{ | ||
|  | 			$str = $this->_open_script($this->_javascript_location.$external_file); | ||
|  | 		} | ||
|  | 		else | ||
|  | 		{ | ||
|  | 			$str = $this->_open_script($this->CI->config->slash_item('base_url').$this->_javascript_location.$external_file); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$str .= $this->_close_script(); | ||
|  | 		return $str; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Inline | ||
|  | 	 * | ||
|  | 	 * Outputs a <script> tag | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	The element to attach the event to | ||
|  | 	 * @param	boolean	If a CDATA section should be added | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function inline($script, $cdata = TRUE) | ||
|  | 	{ | ||
|  | 		$str = $this->_open_script(); | ||
|  | 		$str .= ($cdata) ? "\n// <![CDATA[\n{$script}\n// ]]>\n" : "\n{$script}\n"; | ||
|  | 		$str .= $this->_close_script(); | ||
|  | 
 | ||
|  | 		return $str; | ||
|  | 	} | ||
|  | 	 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Open Script | ||
|  | 	 * | ||
|  | 	 * Outputs an opening <script> | ||
|  | 	 * | ||
|  | 	 * @access	private | ||
|  | 	 * @param	string | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function _open_script($src = '') | ||
|  | 	{ | ||
|  | 		$str = '<script type="text/javascript" charset="'.strtolower($this->CI->config->item('charset')).'"'; | ||
|  | 		$str .= ($src == '') ? '>' : ' src="'.$src.'">'; | ||
|  | 		return $str; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Close Script | ||
|  | 	 * | ||
|  | 	 * Outputs an closing </script> | ||
|  | 	 * | ||
|  | 	 * @access	private | ||
|  | 	 * @param	string | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function _close_script($extra = "\n") | ||
|  | 	{ | ||
|  | 		return "</script>$extra"; | ||
|  | 	} | ||
|  | 
 | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 	// AJAX-Y STUFF - still a testbed
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Update | ||
|  | 	 * | ||
|  | 	 * Outputs a javascript library slideDown event | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	- element | ||
|  | 	 * @param	string	- One of 'slow', 'normal', 'fast', or time in milliseconds | ||
|  | 	 * @param	string	- Javascript callback function
 | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function update($element = 'this', $speed = '', $callback = '') | ||
|  | 	{ | ||
|  | 		return $this->js->_updater($element, $speed, $callback); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Generate JSON | ||
|  | 	 * | ||
|  | 	 * Can be passed a database result or associative array and returns a JSON formatted string | ||
|  | 	 * | ||
|  | 	 * @param	mixed	result set or array | ||
|  | 	 * @param	bool	match array types (defaults to objects) | ||
|  | 	 * @return	string	a json formatted string | ||
|  | 	 */ | ||
|  | 	function generate_json($result = NULL, $match_array_type = FALSE) | ||
|  | 	{ | ||
|  | 		// JSON data can optionally be passed to this function
 | ||
|  | 		// either as a database result object or an array, or a user supplied array
 | ||
|  | 		if ( ! is_null($result)) | ||
|  | 		{ | ||
|  | 			if (is_object($result)) | ||
|  | 			{ | ||
|  | 				$json_result = $result->result_array(); | ||
|  | 			} | ||
|  | 			elseif (is_array($result)) | ||
|  | 			{ | ||
|  | 				$json_result = $result; | ||
|  | 			} | ||
|  | 			else | ||
|  | 			{ | ||
|  | 				return $this->_prep_args($result); | ||
|  | 			} | ||
|  | 		} | ||
|  | 		else | ||
|  | 		{ | ||
|  | 			return 'null'; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$json = array(); | ||
|  | 		$_is_assoc = TRUE; | ||
|  | 
 | ||
|  | 		if ( ! is_array($json_result) AND empty($json_result)) | ||
|  | 		{ | ||
|  | 			show_error("Generate JSON Failed - Illegal key, value pair."); | ||
|  | 		} | ||
|  | 		elseif ($match_array_type) | ||
|  | 		{ | ||
|  | 			$_is_assoc = $this->_is_associative_array($json_result); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		foreach ($json_result as $k => $v) | ||
|  | 		{ | ||
|  | 			if ($_is_assoc) | ||
|  | 			{ | ||
|  | 				$json[] = $this->_prep_args($k, TRUE).':'.$this->generate_json($v, $match_array_type); | ||
|  | 			} | ||
|  | 			else | ||
|  | 			{ | ||
|  | 				$json[] = $this->generate_json($v, $match_array_type); | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$json = implode(',', $json); | ||
|  | 
 | ||
|  | 		return $_is_assoc ? "{".$json."}" : "[".$json."]"; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Is associative array | ||
|  | 	 * | ||
|  | 	 * Checks for an associative array | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	type | ||
|  | 	 * @return	type | ||
|  | 	 */ | ||
|  | 	function _is_associative_array($arr) | ||
|  | 	{ | ||
|  | 		foreach (array_keys($arr) as $key => $val) | ||
|  | 		{ | ||
|  | 			if ($key !== $val) | ||
|  | 			{ | ||
|  | 				return TRUE; | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return FALSE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Prep Args | ||
|  | 	 * | ||
|  | 	 * Ensures a standard json value and escapes values | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	type | ||
|  | 	 * @return	type | ||
|  | 	 */ | ||
|  | 	function _prep_args($result, $is_key = FALSE) | ||
|  | 	{ | ||
|  | 		if (is_null($result)) | ||
|  | 		{ | ||
|  | 			return 'null'; | ||
|  | 		} | ||
|  | 		elseif (is_bool($result)) | ||
|  | 		{ | ||
|  | 			return ($result === TRUE) ? 'true' : 'false'; | ||
|  | 		} | ||
|  | 		elseif (is_string($result) OR $is_key) | ||
|  | 		{ | ||
|  | 			return '"'.str_replace(array('\\', "\t", "\n", "\r", '"'), array('\\\\', '\\t', '\\n', "\\r", '\"'), $result).'"'; | ||
|  | 		} | ||
|  | 		elseif (is_scalar($result)) | ||
|  | 		{ | ||
|  | 			return $result; | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | } | ||
|  | // END Javascript Class
 | ||
|  | 
 | ||
|  | /* End of file Javascript.php */ | ||
|  | /* Location: ./system/libraries/Javascript.php */ |