newtinymce Extension to use TinyMce with Compressor, SpellChecker and FileManager

  1. TinyMCE Versions
  2. Requirements
  3. Usage
  4. CSRF token validation problem, for spellchecker requsts
  5. Changelog
  6. Resources

Almost in every application, i have need in wysiwyg editor for content. In most of them I have used tinymce extension writen by MetaYii(with some ugly changes, added by me, to connect elFinder file manager to it).

Recently I have written my own widget for TinyMce and for elFinder with possibility of integrating them. Also I have written separate actions for TinyMce compessor and for spellchecker plugin. So i think that my code looks more cleaner than something like tinymceelfinder extension, that has similar functionality.

Also I have added less ugly skin for tinyMce(modified version of cirkuitSkin).

TinyMCE Versions

There is two TinyMCE versions - 3.x and new 4.x

Extension has the same interfaces for both of them, but because they are different they will have slightly different settings.

So when configuring it - refer to appropriate documentation version.

Requirements

Usage

  1. Checkout source code to ext.tinymce
  2. To use spellchecker and compressor, create controller and add corresponding actions to it
  3. Use it as any other input widget:
  4. More about elFinder extension here: https://bitbucket.org/z_bodya/yii-elfinder
// controller for tinyMce
Yii::import('ext.tinymce.*');

class TinyMceController extends CController
{
     public function actions()
     {
          return array(
              'compressor' => array(
                    'class' => 'TinyMceCompressorAction',
                    'settings' => array(
                       'compress' => true,
                            'disk_cache' => true,
                        )
                    ),
                    'spellchecker' => array(
                        'class' => 'TinyMceSpellcheckerAction',
               ),
          );
      }
}

// in view
$this->widget('ext.tinymce.TinyMce', array(
    'model' => $model,
    'attribute' => 'tinyMceArea',
    // Optional config
    'compressorRoute' => 'tinyMce/compressor',
    //'spellcheckerUrl' => array('tinyMce/spellchecker'),
    // or use yandex spell: http://api.yandex.ru/speller/doc/dg/tasks/how-to-spellcheck-tinymce.xml
    'spellcheckerUrl' => 'http://speller.yandex.net/services/tinyspell',
    'fileManager' => array(
        'class' => 'ext.elFinder.TinyMceElFinder',
        'connectorRoute'=>'admin/elfinder/connector',
    ),
    'htmlOptions' => array(
        'rows' => 6,
        'cols' => 60,
    ),
));

CSRF token validation problem, for spellchecker requsts

By default Yii validates csrf token for all requsts, but spellchecker has requst content-type "application/json" - so even if we pass csrf token in request, yii will not validate it.

Forum discussion about this

Also there is no need in csrf validation for spellchecker service, so possible solutions is to skip validation for such requests. I order to do so we need to extend CHttpRequst like in sample below:

class HttpRequest extends CHttpRequest
{
    public function validateCsrfToken($event)
    {
        $contentType = isset($_SERVER["CONTENT_TYPE"]) ? $_SERVER["CONTENT_TYPE"] : null;
        if ($contentType !== 'application/json')
            parent::validateCsrfToken($event);
    }
}

And add it into application configuration:

// application components
'components' => array(
    'request' => array(
       'class' => 'HttpRequest',
       'enableCsrfValidation' => true,
    ),
    ...
),

Changelog

  • March 20, 2014 Updated to 4.0.20
  • February 11, 2014 Updated to 4.0.16
  • December 20, 2013 Updated to 4.0.12
  • December 7, 2013 Updated to 4.0.11
  • November 14, 2013 Updated to 3.5.10, added 4.x verion
  • September 11, 2013 Fixed, bugs in compressor action
  • December 12, 2012 Updated spellchecker(Version 2.0.6.1 - Fixed security issue with google spellchecker)
  • November 24, 2012 Added spellcheckerUrl as replacement for spellcheckerRoute property. Now external spellchecking services can be used(thanks fad comment).
  • Novemner 20, 2012 Upgrade TinyMCE to version 3.5.8
  • September 25, 2012 Upgrade TinyMCE to version 3.5.7
  • August 3, 2012 Replace content.css in circuit skin by default one
  • August 2, 2012 Fixed bug when using attribute with "[]" in name.
  • July 27, 2012 Upgrade TinyMCE to version 3.5.6
  • July 21, 2012 Upgrade TinyMCE to version 3.5.5
  • July 18, 2012 Fixed bug with large compessor response time

    Resources

  • Extension page
  • elFinder extension
  • TinyMce page
12 1
28 followers
7 719 downloads
Yii Version: 1.1
License: BSD-2-Clause
Category: User Interface
Developed by: Bogdan Savluk
Created on: Jul 8, 2012
Last updated: 10 years ago

Downloads

show all

Related Extensions