Загрузка изображений в tinyMCE

ibrowser

Недавно мне пришлось заниматься установкой и настройкой tinyMCE – мощного текстового редактора для веб сайтов. Однако, я совсем не предполагал, что столкнусь с проблемой добавления изображений в редактируемый текст. Как оказалось, в стандартной поставке tinyMCE есть только плагин, добавляющий изображения, которые уже загружены в какое-либо общедоступное место. То есть, можно указать ссылку, и tinymce добавит элемент <img> с этой ссылкой в документ. Однако заказчик проекта хотел загружать и управлять файлами изображений прямо из редактора, и его можно понять, ибо это очень неудобно – самостоятельно загружать изображения на сервер, а потом добавлять на них ссылку. После недолгих поисков мне удалось найти нужный мне плагин – ibrowser, при помощи которого можно легко загружать файлы на сервер и управлять ими. Кроме того, этот плагин может работать не только с tinyMCE, но и с FCKEditor, HTMLArea и др.

Теперь о том, как его установить и настроить.

1) Сначала скачайте ibrowser и распакуйте дистрибутив в папку tiny_mce/plugins/ibrowser.

2) Затем, в файле конфигурации ibrowser/config.inc.php нужно указать на те директории, в которых будут храниться загружаемые файлы изображений:

$cfg['ilibs'] = array (
	array (
		'value' => 'images/',
		'text' => 'Общие',
	),
	array (
		'value' => 'gallery/',
		'text' => 'Галерея',
	),
);

Для этих папок, а также для директорий ibrowser/scripts/phpThumb/cache и ibrowser/temp нужно установить права доступа 777, чтобы скрипт имел возможность записывать туда свои данные.

3) Далее нужно добавить скрипт tinyMCE и скрипт инициализации в веб страницу:

<script type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
<script type="text/javascript" src="tiny_mce_init.js"></script>

В файле tiny_mce_init.js я расположил код, который инициализирует редактор. Выглядит он следующим образом:

tinyMCE.init({
	mode : "exact",
	elements : "elm1,elm2,elm3,elm4,elm5",
	theme : "advanced",
	skin : "o2k7",
	language : "en",
	plugins : "safari,pagebreak,style,table,advimage,advlink,emotions,iespell,media,searchreplace,print,contextmenu,paste,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,inlinepopups,ibrowser",

	theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,forecolor,backcolor|,charmap,emotions,iespell,media,|,sub,sup",
	theme_advanced_buttons2 : "styleselect,formatselect,fontselect,fontsizeselect",
	theme_advanced_buttons3 : "cut,copy,paste,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,code",
	theme_advanced_buttons4 : "tablecontrols,|,hr,removeformat,visualaid,|,fullscreen,image,ibrowser",
	theme_advanced_toolbar_location : "top",
	theme_advanced_toolbar_align : "left",
	theme_advanced_statusbar_location : "bottom",
	theme_advanced_resizing : true,
	height:340
});

Здесь указываются различные параметры настройки tinyMCE: внешний вид (скин), язык интерфейса, кнопки панели инструментов и прочее. В строке plugins перечислены плагины, которые необходимо использовать. Здесь я помимо прочих указал и ibrowser. Далее идет перечисление панелей инструментов и кнопок, которые будут там располагаться. Все это указывается в параметрах theme_advanced_buttons*, где цифра в конце указывает на номер ряда в панели инструментов. Кнопку, вызывающую диалоговое окно ibrowser я добавил в последний, четвертый ряд (theme_advanced_buttons4). В итоге, окно tinyMCE будет иметь следующий вид:

ibrowser

Если все выполнено правильно, то при нажатии на эту кнопку, откроется pop-up окно следующего содержания:

Окно плагина iBrowser

Поскольку мне нужна была русифицированная версия плагина, то пришлось самому заняться локализацией. Переведенный мной файл можно скачать здесь. Для русификации плагина, нужно скопировать файл локализации в папку /ibrowser/langs/, а затем в файле конфигурации config.inc.php установить переменную $cfg['lang'] в значение ru. Исключением является окно приветствия, которое появляется сразу при открытии окна. Текст этого окна набран в файле ibrowser.php, так что либо переведите его сами, либо просто удалите, как это сделал я :) .

Maklay.com - Большой каталог товаров для спорта и активного отдыха
  • http://porcelanosa-russia.ru/ porcelanosa

    там еще есть плагин imanager – только демо не работает? А что он делает? Не пробовали?

  • admin

    С imanager я не пробовал работать. Вполне возможно что он имеет те же функции что и ibrowser только более навороченный. Я где-то читал, что он может изменять размеры, обрезать фотографии и т.п.

  • vasya

    А как же быть с картинками, когда сообщение удаляется ? Получается картинка остается ?

  • admin

    Конечно картинки остаются. Ненужные изображения можно затем удалить из этого
    же интерфейса.

  • http://ponedilok.livejournal.com ponedilok

    Свого часу вирішував цю саму задачу.

    Треба зауважити, що в 9 з 10 випадків видалення “сміття”, тобто файлів малюнків, котрі ніде не використовуються, не є проблемою. Головна задача в абсолютній більшості випадків – дати користувачеві швидко залити та вставити малюнок. Ці два аспекти й підказали напрямок.

    Так як готового рішення не знайшлося, написав свій плагін для власного ж використання, себто у своїх проектах. Він створений для роботи і на базі фреймворка Fusebox. Спочатку тільки для PHP.

    Для нової версії TinyMCE (там змінився API плагінів) писав тільки для CFML Fusebox, так як перейшли на цю технологію.

    Отже, якщо потрібне не таке явно перевантажене (overhead) рішення, як iBrowser, то краще зробити щось своє і просте.

  • admin

    @ponedilok
    Особисто я не вважаю iBrowser настільки перевантаженим, щоб робити замість нього щось своє. Але якщо потрібно рішення на ColdFusion або Python чи ще щось, то робити це мабуть доведеться.

  • Дмитрий

    А как быть с обычными файлами? Ну т.е. когда юзеру надо на сервер закинуть допустим *.doc или *.pdf и дать в тексте на них ссылки?

  • admin

    @Дмитрий
    Но дело в том, что *.doc и *.pdf и т.п. никак не относятся к tinyMCE. Ведь нет никакой возможности вставить, к примеру, документ “ворд” в текст, форматируемый из tinyMCE.

  • NightCrawler

    Почему нельзя?
    Есть еще один плагин TinyBrowser, который позволяет заливать не только картинки но и файлы. Таким образом при добавлении ссылки через редактор появляется возможность залить файл и автоматом добавить в текст ссылку на него…

  • Rust

    А можно пожалуйсто прямые ссылки для скачивания TinyBrowser и ibrowser

  • admin

    @Rust
    Увы, по старой ссылке уже нельзя ничего загрузить, где можно скачать не нашел. Если найду, обязательно выложу здесь на сайте.

  • Sasha

    http://www.net4visions.com/25.html Фот она… помогите подключить к 3 версии

  • admin

    @Sasha
    Спасибо за ссылку. А что не получается с подключением?

  • Антон

    Попробовал поставить ваш вариант, но он мне не очень понравился. Во первых простому пользователю лучше не давать в руки редактор, с возможностью просмотра всех загруженных изображений. Он может им воспользоваться не по назначению, да и как правило обычный юзер долго плутает в таких редакторах.

    Нарыл вот тут: http://pegas-studio.net/uslugi/tinymce.php

    Другой скрипт загрузки изображений для TinyMCE, правда он платный, но намного проще и удобнее, как для пользователя, так и для админа, в установке, настройке и полностью русский. К тому же его можно ставить для всех пользователей, не опасаясь что кто либо грохнет кучу загруженных изображений, а в iBrowser могут грохнуть легко.

  • admin

    Полностью согласен. Я тоже спустя некоторое время отказался от него, кроме того он в Опере не работает.

JSToolbox создан на основе WordPress