⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editor.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
字号:
<?php/** * @version		$Id: editor.php 10707 2008-08-21 09:52:47Z eddieajau $ * @package		Joomla.Framework * @subpackage	HTML * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. * @license		GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */// Check to ensure this file is within the rest of the frameworkdefined('JPATH_BASE') or die();jimport('joomla.event.dispatcher');/** * JEditor class to handle WYSIWYG editors * * @package		Joomla.Framework * @subpackage	HTML * @since		1.5 */class JEditor extends JObservable{	/**	 * Editor Plugin object	 *	 * @var	object	 */	var $_editor = null;	/**	 * Editor Plugin name	 *	 * @var string	 */	var $_name = null;	/**	 * constructor	 *	 * @access	protected	 * @param	string	The editor name	 */	function __construct($editor = 'none')	{		$this->_name = $editor;	}	/**	 * Returns a reference to a global Editor object, only creating it	 * if it doesn't already exist.	 *	 * This method must be invoked as:	 * 		<pre>  $editor = &JEditor::getInstance([$editor);</pre>	 *	 * @access	public	 * @param	string	$editor  The editor to use.	 * @return	JEditor	The Editor object.	 */	function &getInstance($editor = 'none')	{		static $instances;		if (!isset ($instances)) {			$instances = array ();		}		$signature = serialize($editor);		if (empty ($instances[$signature])) {			$instances[$signature] = new JEditor($editor);		}		return $instances[$signature];	}	/**	 * Initialize the editor	 */	function initialise()	{		//check if editor is already loaded		if(is_null(($this->_editor))) {			return;		}		$args['event'] = 'onInit';		$return = '';		$results[] = $this->_editor->update($args);		foreach ($results as $result) {			if (trim($result)) {				//$return .= $result;				$return = $result;			}		}		$document =& JFactory::getDocument();		$document->addCustomTag($return);	}	/**	 * Present a text area	 *	 * @param	string	The control name	 * @param	string	The contents of the text area	 * @param	string	The width of the text area (px or %)	 * @param	string	The height of the text area (px or %)	 * @param	int		The number of columns for the textarea	 * @param	int		The number of rows for the textarea	 * @param	boolean	True and the editor buttons will be displayed	 * @param	array	Associative array of editor parameters	 */	function display($name, $html, $width, $height, $col, $row, $buttons = true, $params = array())	{		$this->_loadEditor($params);		//check if editor is already loaded		if(is_null(($this->_editor))) {			return;		}		// Backwards compatibility. Width and height should be passed without a semicolon from now on.		// If editor plugins need a unit like "px" for CSS styling, they need to take care of that		$width	= str_replace( ';', '', $width );		$height	= str_replace( ';', '', $height );		// Initialize variables		$return = null;		$args['name'] 		 = $name;		$args['content']	 = $html;		$args['width'] 		 = $width;		$args['height'] 	 = $height;		$args['col'] 		 = $col;		$args['row'] 		 = $row;		$args['buttons']	 = $buttons;		$args['event'] 		 = 'onDisplay';		$results[] = $this->_editor->update($args);		foreach ($results as $result)		{			if (trim($result)) {				$return .= $result;			}		}		return $return;	}	/**	 * Save the editor content	 *	 * @param	string	The name of the editor control	 */	function save( $editor )	{		$this->_loadEditor();		//check if editor is already loaded		if(is_null(($this->_editor))) {			return;		}		$args[] = $editor;		$args['event'] = 'onSave';		$return = '';		$results[] = $this->_editor->update($args);		foreach ($results as $result) {			if (trim($result)) {				$return .= $result;			}		}		return $return;	}	/**	 * Get the editor contents	 *	 * @param	string	The name of the editor control	 */	function getContent( $editor )	{		$this->_loadEditor();		$args['name'] = $editor;		$args['event'] = 'onGetContent';		$return = '';		$results[] = $this->_editor->update($args);		foreach ($results as $result) {			if (trim($result)) {				$return .= $result;			}		}		return $return;	}	/**	 * Set the editor contents	 *	 * @param	string	The name of the editor control	 * @param	string	The contents of the text area	 */	function setContent( $editor, $html )	{		$this->_loadEditor();		$args['name'] = $editor;		$args['html'] = $html;		$args['event'] = 'onSetContent';		$return = '';		$results[] = $this->_editor->update($args);		foreach ($results as $result) {			if (trim($result)) {				$return .= $result;			}		}		return $return;	}	/**	 * Get the editor buttons	 *	 * @param	mixed	$buttons Can be boolean or array, if boolean defines if the buttons are displayed, if array defines a list of buttons not to show.	 * @access public	 * @since 1.5	 */	 function getButtons($editor, $buttons = true)	 {		$result = array();		if(is_bool($buttons) && !$buttons) {			return $result;		}		// Get plugins		$plugins = JPluginHelper::getPlugin('editors-xtd');		foreach($plugins as $plugin)		{			if(is_array($buttons) &&  in_array($plugin->name, $buttons)) {				continue;			}			$isLoaded = JPluginHelper::importPlugin('editors-xtd', $plugin->name, false);			$className = 'plgButton'.$plugin->name;			if(class_exists($className)) {				$plugin = new $className($this, (array)$plugin);			}			// Try to authenticate			$result[] = $plugin->onDisplay($editor);		}		return $result;	 }	/**	 * Load the editor	 *	 * @access	private	 * @param	array	Associative array of editor config paramaters	 * @since	1.5	 */	function _loadEditor($config = array())	{		//check if editor is already loaded		if(!is_null(($this->_editor))) {			return;		}		jimport('joomla.filesystem.file');		// Build the path to the needed editor plugin		$name = JFilterInput::clean($this->_name, 'cmd');		$path = JPATH_SITE.DS.'plugins'.DS.'editors'.DS.$name.'.php';		if ( ! JFile::exists($path) )		{			$message = JText::_('Cannot load the editor');			JError::raiseWarning( 500, $message );			return false;		}		// Require plugin file		require_once $path;		// Get the plugin		$plugin   =& JPluginHelper::getPlugin('editors', $this->_name);		$params   = new JParameter($plugin->params);		$params->loadArray($config);		$plugin->params = $params;		// Build editor plugin classname		$name = 'plgEditor'.$this->_name;		if($this->_editor = new $name ($this, (array)$plugin))		{			// load plugin parameters			$this->initialise();			JPluginHelper::importPlugin('editors-xtd');		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -