WISYWIG-редактор с плагином файл-менеджера.

TinyMCE + ResponsiveFileManager
TinyMCE + ResponsiveFileManager

Частенько бывает так, что разработчику сайтов необходимо предоставить пользователям возможность добавления материалов в привычном ему виде. Такую возможность предоставляет WISYWIG-редактор.

Пользователь может в привычном ему виде (редакторы в основном похожи на standalone-редакторы текста типа MS Word или LibreOffice Writer) создавать тексты и сразу видеть результат того что он делает. Выделять текст жирным, курсивом, добавлять ссылки, картинки и прочее.
Однако с картинками как раз засада. Дело в том, что в основном у редакторов есть возможность добавить картинку в текст только если указать её URL со стороннего ресурса. Поэтому к таким редакторам прийдется дописывать костыли в виде загрузчиков файлов, чтобы пользователь мог загрузить картинку на сайт, и потом уже указать её URL добавляя картинку в текст.

Как вариант — у некоторых редакторов есть возможность добавления картинок в виде base64 кодированной информации (так делает например Summernote- замечательный редактор, но в ограниченном круге задач). Здесь все замечательно кроме одного — такой способ годится лишь для добавления картинок небольшого размера. Потому как графическая информация преобразуется в текстовую и будет загружаться целиком со страницей. Это кстати еще может нехило утяжелить вашу базу данных, если тексты хранятся в БД.

Для популярных WISYWIG-редакторов есть платные плагины файловых менеджеров. Это CKFinder для CKEditor, или MoxieManager для TinyMCE.
Не было бы проблем использовать эти файл-менеджеры, если бы их цена была разумна и не было идиотской привязки к доменам/серверам etc.
Для своих старых проектов я использовал замечательную связку elRTE-редактора и файл-менеджера elFinder. Это была замечательная связка предоставлявшая мне то что не хватало в других редакторах и менеджерах файлов. С небольшой доработкой elFinder у меня работал с директориями пользователей, защищая их файлы от посягательств (редактирования/удаления) других пользвоателей, брал настройки из CMS, давал админу неограниченные права, ограничивал размеры пользовательских директорий согласно настройкам.

Однако время шло, редактор elRTE перестал развиваться, что начало создавать проблему, так как был написан с использованием JQuery, а этот фреймворк не стоял в развитии и в скором времени появились ошибки. В последнем проекте я был вынужден использовать две разных библиотеки JQuery — одну для основного сайта, вторую для страниц добавления/редактирования контента. Так долго продолжаться не могло и потыкавшись в Summernote я опять начал поиски идеала (справедливости ради нужно заметить, что Summernote стал предоставлять возможность загрузки изображения на сервер, с указанием бэкенда для загрузки файлов, однако таким образом можно было поиметь проблем с тем что пользователь не имел возможности удалить залитые файлы если они были загружены, к примеру, по ошибке).

Вспомнив молодость, решил поглядеть на TinyMCE, тем более что с тех пор как я использовал этот редактор минуло аж 3 мажорных релиза.
Для TinyMCE все так же на главной странице сайта предоставляется платный файл-менеджер, однако я решил не поленитсья, и поискать, вдруг найдется какой-то плагин, пускай и простой, для управления файлами? И не прогадал. Я нашел ResponsiveFileManager.
Использовать его можно и как отдельный менеджер файлов и как плагин для TinyMCE, о чем автор позаботился изначально.
Осталось решить только одну проблему, как без громоздких костылей решить проблему создания папок для пользователей в каталоге загрузок, и указывать файл-менеджеру что эти каталоги пользователей будут для них корневыми, а для админа будет корнем весь каталог загрузок. Я задал вопрос об этом автору менеджера, поглядим что ответит. Мне в принципе все нравится, и если нет стандартной возможности указывать динамический путь для загрузки в секции инициализации TinyMCE, то меня устроит и грязный хак конфигурационного файла.

Автор: Mirivlad

Скромный труженик консоли и окошек.