Моя библиотека - социальная сеть любителей книг

Интро

Я по прежнему продолжаю изучать Django + Python. Пока этот тандем не перестает меня радовать. И все больше усилий мне приходится делать над собой, чтобы разрабатывать на работе на PHP с использованием самописного фреймворка.

И вот, на одном из сайтов понадобился WYSIWYG-редактор.

TinyMCE

Моим первым претендентом на звание django-редактора был TinyMCE. Однако “из коробки” он не умеет загружать фото на сервер. На форумах и блогах эту задачу предлогают переложить на плечи django-filebrowser.

Однако, решение не самое быстрое, в плане затраченного времени. И тогда, я вспомнил, что в редакторе FCKeditor уже есть обработчики для Python. И даже успел порадоваться.

FCKeditor & напильник

Радость была не долгой. Как оказалось, приложение django-fckconnector для подключения  вообще не работает. Ну, делать нечего - будем лечить (или калечить, как получится)

Берем из репозитория последнию версию fckconnector:

svn checkout http://django-fckconnector.googlecode.com/svn/trunk/ django-fckconnector

Открываем файл fckeditor/connector/__init__.py и в самом конце находим строки:

try:
    from elementtree import ElementTree
except ImportError:
    try:
        import lxml.etree as ElementTree
    except ImportError:
        raise ImportError, "Neither elementtree.ElementTree nor lxml.etree was found. This is required by fckeditor_connector"

заменяем их на:

try:
    from xml.etree import ElementTree
except ImportError:
    from elementtree import ElementTree

Далее редактируем файл fckeditor/connector/actions.py. Находим функцию file_upload и все вхождения new_file['filename'] и new_file['content'], заменяем на new_file.name и new_file.read(), соответственно (!).

Теперь можно отложить напильник и приступить к установке и настройке приложения.

Установка

В urls.py добавляем строку:

...
(r'^fckeditor_connector/', include('fckeditor.connector.urls')),
...

В settings.py в INSTALLED_APPS добавляем ‘fckeditor’.

Скачиваем сам FCKeditor. И переносим папку с fckeditor в свое media-каталог, указанный в MEDIA_ROOT.

Далее открываем на редактирование файлик fckeditor/fckconfig.js, находим строки:

FCKConfig.ImageBrowser = true ;
FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;

и заменяем строку FCKConfig.ImageBrowserURL = … на

FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=/fckeditor_connector/browser/';

Осталось только вызвать редактор в админке:

class FooAdmin(admin.ModelAdmin):
   js = ( 'fckeditor/fckeditor.js',
          'fckeditor/textareas.js',)

Где, примерный вид fckeditor/textareas.js:

window.onload = function()
{
    var oFCKeditor = new FCKeditor( 'id_content' ) ;
    oFCKeditor.BasePath    = '/media/fckeditor/';
    oFCKeditor.ReplaceTextarea() ;
}

id_content - это ID поля в к которому мы хотим применить редактор. Думаю, не сложно изменить данный скрипт, для того чтобы редактор применялся ко всем элементам типа <textarea>.

Так же не забываем создать каталог uploads в своем MEDIA_ROOT-каталоге, по-умолчанию в этот каталог FCKEditor сохраняет картинки.

Вот и все. Все предельно “юзер-френдли” )))



Комментарии (18) на запись «Django & WYSIWYG»

  1. adw0rd MonsterID Icon adw0rd | 02.09.2009 в 10:47

    Давно тебя не было что-то… И когда наконец заполнишь http://larin.in/portfolio ?)

  2. Larin MonsterID Icon Larin | 02.09.2009 в 10:50

    Работы много.

    А на счет портфолио… даже не знаю ) Все собираюсь…

  3. adw0rd MonsterID Icon adw0rd | 02.09.2009 в 19:42

    >работвать
    опечатка странная )

  4. Larin MonsterID Icon Larin | 03.09.2009 в 09:33

    Исправил )

  5. adw0rd MonsterID Icon adw0rd | 05.09.2009 в 01:13

    Ну а так, в качестве редактора ты предпочитаешь больше FCK или Тини?

  6. adw0rd MonsterID Icon adw0rd | 05.09.2009 в 15:08

    Ларин, что-то тебя спаммеры сильно долбят, а нам приходят уведомления (кто подписался на камменты), предлагаю такую защиту http://adw0rd.ru/2009/antispam/

  7. Larin MonsterID Icon Larin | 06.09.2009 в 13:54

    adw0rd
    Ну а так, в качестве редактора ты предпочитаешь больше FCK или Тини?

    Они оба кривые ) Лучше всего получается HTML написанный руками )

    adw0rd
    Ларин, что-то тебя спаммеры сильно долбят, а нам приходят уведомления (кто подписался на камменты), предлагаю такую защиту http://adw0rd.ru/2009/antispam/

    И как? Работает такая защита?
    Я иногда, подумываю вообще на блоге регистрацию ввести ) Кому очень надо - тот зарегиться и напишет…

  8. adw0rd MonsterID Icon adw0rd | 06.09.2009 в 14:20

    Они оба кривые ) Лучше всего получается HTML написанный руками )

    Да это понятно, сам не пользуюсь и по возможности всегда отключаю, но я спрашивал какой тебе из них больше нравиться :)

  9. adw0rd MonsterID Icon adw0rd | 06.09.2009 в 14:21

    >И как? Работает такая защита?
    100% работает от роботов, бывает и ручной спам приходит, раз в месяц, но его сразу видно :)

  10. Larin MonsterID Icon Larin | 06.09.2009 в 14:34

    @adw0rd
    Больше нравится TinyMCE, ИМХО, к нему удобнее писать плагины.

    На счет защиты от спама… посмотрим ;)

  11. Valeriy MonsterID Icon Valeriy | 18.09.2009 в 14:00

    Думаю, не сложно изменить данный скрипт, для того чтобы редактор применялся ко всем элементам типа ‘textarea’

    :( Увы, сложно, потому как js не знаю. Подскажите, плиз, что изменить?
    Спасибо.

  12. Ден MonsterID Icon Ден | 02.10.2009 в 17:10

    небольшая ошибочка закралась
    править надо не fckeditor.js, а fckconfig.js

  13. Larin MonsterID Icon Larin | 02.10.2009 в 20:02

    небольшая ошибочка закралась
    править надо не fckeditor.js, а fckconfig.js

    Ден, спасибо за внимательность, поправил.

  14. Rastler MonsterID Icon Rastler | 26.01.2010 в 17:32

    Спасибо за статью, очень полезна …. пойду пробовать прикрутить.

  15. Reservoir_dog MonsterID Icon Reservoir_dog | 04.02.2010 в 14:55

    у меня почему то не заработало….хотя вроде все сделал по вышеуказанному описанию

  16. Grapa MonsterID Icon Grapa | 26.02.2010 в 13:03

    Вот спасибо за эту статью! Надеюсь что у меня всё получится)

  17. Александр MonsterID Icon Александр | 15.03.2010 в 11:31

    Вот такая ошибка вылазит, не после того как все проделал и попытался запустить сервер джанги. Не подскажите в чем проблема?

    Error: No module named fckeditor

  18. Дмитрий MonsterID Icon Дмитрий | 20.07.2010 в 09:49

    Ставил grappeli на 1.2 с django-filebrowser - встало очень легко, может повезло. На старую версию геморно было ставить это точно.

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


Copyright, 1983 – 2010