Прикручиваем elFinder к CKEditor в Yii

Сейчас прикручивал к WYSIWYG редактору CKEditor файловый менеджер elFinder, т.к. дефолтный файловый менеджер для CKEditor платный. И по горячим следам решил написать заметку как это делать, потому что не так и не нашел внятного описания как же это сделать.

Для подключения CKEditor, я использовал расширения из yiiext. Скачиваем его и кладем его в папку с расширениями. У меня получилось:

application.extensions.ckeditor

Теперь создаем в этой папке, папку assets и кладем туда файлы самого WYSIWYG редактора CKEditor, которые скачиваем с официально сайта. Но виджет отказался запускаться из коробки. Чтобы он заработал открываем файл ECKEditor.php идем на строку 69 и меняем:

private $skin='kama';

на

public $skin='kama';

Дальше функция setLanguage($value), меняем:

if(isset($this->allowedLanguages[$language]))
    $this->language=$language;

на

if(isset($this->allowedLanguages[$lang]))
    $this->language=$lang;

Теперь виджет рабочий и его можно подключать в нужно месте:

<?php $this->widget('application.extensions.ckeditor.ECKEditor', array(
        'model'=>$model,
        'attribute'=>'content',
        'language'=>'ru',
        'editorTemplate'=>'full',
)); ?>

Надеюсь к моменту, когда эту заметку кто-то будет читать, ему не надо будет вносить изменения в код виджета.

Теперь будет прикручивать elFinder. Я использовал расширение опять же из yiiext. Скачиваем его и кладем в папку с расширениями. У меня это выглядит так:

application.extensions.elfinder

Здесь так же создаем папку assets и складываем туда папки css, js, images из архива elFinder скаченного с их сайта.

Теперь в контроллере, который у нас будет работать с загрузкой файлов, необходимо добавить в метод actions() следующие:

public function actions() {
    return array(
        'fileManager'=>array(
            'class'=>'application.extensions.elfinder.ElFinderAction',
         ),
    );
}

Создаем сам экшен:


public function actionBrowse() {
    // я создал специально отдельный пустой лейаут
    $this->layout='//layouts/clear';
    $this->render('browser');
}

Отображение:

<?php
$this->widget('application.extensions.elfinder.ElFinderWidget',array(
    'lang'=>'ru',
    'url'=>CHtml::normalizeUrl(array('site/fileManager')),
    'editorCallback'=>'js:function(url) {
        var funcNum = window.location.search.replace(/^.*CKEditorFuncNum=(\d+).*$/, "$1");
        window.opener.CKEDITOR.tools.callFunction(funcNum, url);
        window.close();
    }',
))?>

В подключение виджета ECKEditor, добавляем:

        'options'=>array(
            'filebrowserBrowseUrl'=>CHtml::normalizeUrl(array('controllerId/browse')),
        ),

controllerId — ваш контроллер в котором находится экшен browse.
Осталось последние, в корне, паблик части, создаем папку upload и на этом все. Пользуемся.

Надеюсь эта заметка кому-то сэкономит его время.

P.S. Да, и главное не забудь раставить права на доступ.
you’ll to CS effectively win games in case you also includes alot of this enables them to win games in one box This gives you need to help you with a ton of Legends Support plays a rather weak and gain that to gank to blind pick instead a strong champion in Solo Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & p4rgaming dot com Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue & Dynamic Queue &

5 Responses

  1. Евгений 30.11.2016 / 18:33

    Так ничего и не понял.
    Можете пояснить как прикрутить данный плагин к CKeditor в Opencart 2.1
    Буду очень признателен
    Спасибо)

    • SpiLLeR 12.01.2017 / 16:31

      Эта статья про то как прикрутить его к Yii1, а не к Opencart. Хотя в целом общий принцип должен быть похож.

  2. Евгений 01.12.2016 / 20:09

    ааааууу автор ты где? или сайт умер?

  3. Евгений 01.12.2016 / 20:14

    пока вот такая ошибка — script error for elFinder needed by elFinder.lang

    • SpiLLeR 12.01.2017 / 16:33

      Надо указать свойство lang для объекта elFinder

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *