Плагин загрузки картинок для 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 способа авторизации загрузки:
- Авторизация через API
 - Вставка 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();
Плагин на Github: https://github.com/azurre/ckeditor-images-manager
Комментарии (0)