Your IP : 172.28.240.42


Current Path : /var/www/html/clients/tatneft-nhs.ru/plugins/editors/
Upload File :
Current File : /var/www/html/clients/tatneft-nhs.ru/plugins/editors/jce.php

<?php
/**
 * @version   $Id: jce.php 110 2009-06-21 19:25:09Z happynoodleboy $
 * @package      JCE
 * @copyright    Copyright (C) 2005 - 2009 Ryan Demmer. All rights reserved.
 * @author    Ryan Demmer
 * @license      GNU/GPL
 * JCE 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.
 */

// Do not allow direct access
defined('_JEXEC') or die('Restricted access');

jimport('joomla.plugin.plugin');
jimport('joomla.application.component.model');

/**
 * JCE WYSIWYG Editor Plugin
 *
 * @author Ryan Demmer <ryandemmer@gmail.com>
 * @package Editor - JCE
 * @since 1.5
 */
class plgEditorJCE extends JPlugin
{
    /**
     * Constructor
     *
     * For php4 compatability we must not use the __constructor as a constructor for plugins
     * because func_get_args (void) returns a copy of all passed arguments NOT references.
     * This causes problems with cross-referencing necessary for the observer design pattern.
     *
     * @vars  object $subject The object to observe
     * @vars  array  $config  An array that holds the plugin configuration
     * @since 1.5
     */
    function plgEditorJCE(&$subject, $config)
    {
        parent::__construct($subject, $config);
    }
    
    /**
     * Method to handle the onInit event.
     *  - Initializes the JCE WYSIWYG Editor
     *
     * @access public
     * @return string JavaScript Initialization string
     * @since 1.5
     */
    function onInit()
    {
        $app 		= JFactory::getApplication();
		$language 	= JFactory::getLanguage();
        
    	// Check for existence of Admin Component
        if (!is_dir(JPATH_SITE . DS . 'components' . DS . 'com_jce') || !is_dir(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce')) {
            JError::raiseWarning('SOME_ERROR_CODE', 'WF_COMPONENT_MISSING');
        }

        $language->load('plg_editors_jce', JPATH_ADMINISTRATOR);
        $language->load('com_jce', JPATH_ADMINISTRATOR);
        
        // set admin base path
        $base = JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce';
        // load constants and loader
        require_once($base . DS . 'includes' . DS . 'base.php');
        // load model
        JModel::addIncludePath($base . DS . 'models');
        $model = JModel::getInstance('editor', 'WFModel');

        $model->buildEditor();
        
    }
    
    /**
     * JCE WYSIWYG Editor - get the editor content
     *
     * @vars string   The name of the editor
     */
    function onGetContent($editor)
    {
        return "WFEditor.getContent('" . $editor . "');";
    }
    
    /**
     * JCE WYSIWYG Editor - set the editor content
     *
     * @vars string   The name of the editor
     */
    function onSetContent($editor, $html)
    {
        return "WFEditor.setContent('" . $editor . "','" . $html . "');";
    }
    
    /**
     * JCE WYSIWYG Editor - copy editor content to form field
     *
     * @vars string   The name of the editor
     */
    function onSave($editor)
    {
        return "WFEditor.save('" . $editor . "');";
    }
    
    /**
     * JCE WYSIWYG Editor - display the editor
     *
     * @vars string The name of the editor area
     * @vars string The content of the field
     * @vars string The width of the editor area
     * @vars string The height of the editor area
     * @vars int The number of columns for the editor area
     * @vars int The number of rows for the editor area
     * @vars mixed Can be boolean or array.
     */
     function onDisplay($name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null)
	{
		$model = JModel::getInstance('editor', 'WFModel');
        
        if (empty($id)) {
			$id = $name;
		}
        
        // Only add "px" to width and height if they are not given as a percentage
        if (is_numeric($width)) {
            $width .= 'px';
        }
        if (is_numeric($height)) {
            $height .= 'px';
        }
        
        if (empty($id)) {
            $id = $name;
        }
        
        $buttons = $this->_displayButtons($id, $buttons, $asset, $author);
        
        $editor  = '<label for="' . $id . '" style="display:none;" aria-visible="false">' . $id . '_textarea</label><textarea id="' . $id . '" name="' . $name . '" cols="' . $col . '" rows="' . $row . '" style="width:' . $width . ';height:' . $height . ';" class="wfEditor source" wrap="off">' . $content . '</textarea>';
        $editor .= $model->getToken($id);
        $editor .= $buttons;

		return $editor;
	}
    
    function onGetInsertMethod($name)
    {
        $document = JFactory::getDocument();
        
        $js = "function jInsertEditorText(text,editor){WFEditor.insert(editor,text);}";
        $document->addScriptDeclaration($js);
        
        return true;
    }
    
	function _displayButtons($name, $buttons, $asset, $author)
	{
		// Load modal popup behavior
		JHTML::_('behavior.modal', 'a.modal-button');

		$args['name'] = $name;
		$args['event'] = 'onGetInsertMethod';

		$return = '';
		$results[] = $this->update($args);

		foreach ($results as $result)
		{
			if (is_string($result) && trim($result)) {
				$return .= $result;
			}
		}

		if (is_array($buttons) || (is_bool($buttons) && $buttons)) {
			$results = $this->_subject->getButtons($name, $buttons, $asset, $author);

			/*
			 * This will allow plugins to attach buttons or change the behavior on the fly using AJAX
			 */
			$return .= "\n<div id=\"editor-xtd-buttons\">\n";

			foreach ($results as $button)
			{
				/*
				 * Results should be an object
				 */
				if ( $button->get('name') ) {
					$modal		= ($button->get('modal')) ? 'class="modal-button"' : null;
					$href		= ($button->get('link')) ? 'href="'.JURI::base().$button->get('link').'"' : null;
					$onclick	= ($button->get('onclick')) ? 'onclick="'.$button->get('onclick').'"' : 'onclick="IeCursorFix(); return false;"';
					$title      = ($button->get('title')) ? $button->get('title') : $button->get('text');
					$return .= "<div class=\"button2-left\"><div class=\"".$button->get('name')."\"><a ".$modal." title=\"".$title."\" ".$href." ".$onclick." rel=\"".$button->get('options')."\">".$button->get('text')."</a></div></div>\n";
				}
			}

			$return .= "</div>\n";
		}

		return $return;
	}
}
?>