Плагин загрузки картинок для WYSIWYG редактора CKEditor - Images Manager

CKEditor Images Manager

На днях понадобился WYSIWYG редактор для сайта. На данный момент одним из лучших является CKEditor. Но, не смотря на то, что плагинов к нему гора и маленькая тележка, адекватного плагина для загрузки картинок и управления ими я не нашёл. Они либо не безопасны совсем, либо требуют отдельную авторизацию(хотя редактор - часть сайта, а загрузка картинок - часть редактора, и вдруг отдельная авторизация) и у всех большая проблема с качеством кода. Поэтому появился ещё один плагин загрузки картинок и управления ими с возможностью интеграции с сайтом и гибкой настройкой.

Устанавливается, как и все плагины, путем распаковки в папку plugins CKEditor'а и добавлением в extraPlugins:

CKEDITOR.replace( 'editor1', {
  extraPlugins: 'imagesmanager'
});

Само собой надо поставить права на запись папке, в которую будут загружаться картинки(chmod 0777 upload). По умолчанию папка для загрузки картинок находится в папке с плагином, что не всегда удобно. Поэтому правим config.php в папке плагина:

return array(
    'auth'          => true, // отключать авторизацию стоит только если вставить её непосредствено в api.php
    'authUrl'       => '/auth/check-auth.php', // Адрес авторизатора, должен вернуть JSON с ключем {"error": 0}
    'imageFullUrl'  => false, // при вставке картинки в CKEditor использовать абсолютный(с доменом) или относительный URL
    'uploadDir'     => '/upload/ckedotor/', // Путь к картинкам в URL
    'uploadPath'    => '/var/www/upload/ckeditor', // Физический путь на сервере
    'maxSize'       => '3M', // Максимальный размер загружаемого файла
    'allowExt'      => array('png', 'jpg', 'jpeg', 'gif', 'webp'), // Разрешенный расширения
    'allowMime'     => array('image/png', 'image/jpeg', 'image/gif', 'image/webp')// разрешенные mime-типы
);

 

Немного об авторизации/интеграции

Существует 2 способа авторизации загрузки:

  1. Авторизация через API
  2. Вставка include со своей авторизацией в api.php

Вариант номер один работает следующим образом: при обращении к плагину он отравляет запрос на authUrl, в ответ на который ожидает json с ключем error. Если error=0, то авторизация успешна. Авторизация предполагается по средству cookies.

Пример:

require(dirname(__FILE__) . '/bootstrap.php');

$error   = 1;
$Session = Session::getInstance();
if ( !empty($_COOKIE['sid']) ) {
    $userID = $Session->getUserID($_COOKIE['sid']);

    if (User::isAdmin($userID)) {
        $error = 0;
    }
}

2ой вариант - предпочтительный, так-как он не требует дополнительных запросов по API.

Пример:

// Файл api.php

// вставляем наш авторизатор
include('my-custom-auth.php');

/********* Start *******/
$Api = new Api();
$Api->run();

Плагин на Githubhttps://github.com/azurre/ckeditor-images-manager

 

Теги: JavaScript, PHP, plugin

Комментарии (0)