Плагин загрузки картинок для 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)