воскресенье, 4 июля 2010 г.

Подключаем CKEditor в Symfony

Ничего сложного в установке этого WYSIWYG-редактора нет, но тем не менее, пара небольших грабелек заботливо спрятана составителями документации.

Итак, устанавливаем плагин sfCKEditorPlugin, как написано в документации к нему. Но учитываем следующее:

1. В autoload.yml вместо "recursive: on" надо писать "recursive: true" (начиная с symfony 1.3 используется более жесткий стандарт булевых значений в YAML)

2. Надо скачать сам редактор и распаковать в папку /web/ckeditor/ все файлы из архива.

3. В autoload.yml указываем путь к PHP-классам редактора:
path:       %SF_WEB_DIR%/ckeditor

4. В app.yml указываем URL к файлам редактора (именно так - со слешем на конце):
ckeditor:
    basePath:         "/ckeditor/"

5. Аналогично настраиваем файловый менеджер CKFinder (скачиваем, прописываем путь в autoload.yml, и не забываем, что эта штуковина платная). В файле ckfinder/config.php есть интересная функция CheckAuthentication(), которая сейчас просто return false. Предназначение этой функции - проверить, имеет ли текущий юзер право доступа к файловому менеджеру (просмотр и аплоад файлов). В комментариях к функции прямо указано - "не надо просто заменять на return true! Пораскинь мозгами и напиши проверку на авторизацию". От себя добавлю, что пока не придумал, как в эту функцию можно передать проверку на авторизацию. Есть идеи, товарищи?

6. В документации к плагину написано, что можно конфигурировать CKFinder так:
$this->widgetSchema['my_editor'] = new sfWidgetFormCKEditor();
$editor = $this->widgetSchema['my_editor']->getEditor();
$editor->config['param'] = value;

но что писать в value, если редактор принимает JSON? Пишем родные PHP-структуры:
$this->widgetSchema['my_editor'] = new sfWidgetFormCKEditor();
$editor = $this->widgetSchema['my_editor']->getEditor();
$editor->config['toolbar_Full']=array(
   array('Source','-','Save'),
   array('Cut','Copy'),
);

Комментариев нет:

Отправить комментарий