TinyMCE, вставка картинок и переход на Markdown

3920 2

    На днях один из читателей моего блога, Сергей, задал мне вопрос по поводу вставления картинок через редактор TinyMCE.

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

    Первая моя мысль была: "Сделать плагин управляющий галереей и позволить ему закачивать файлы, а также вставлять их урлы в контент". Поскольку такой плагин уже существует в природе (Image Manager 1.1) и подобный подход имеет слабое отношение к Django, я решил развить тему несколько в другом направлении.

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

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

    ...
    images = models.ManyToManyField(Photo, blank=True, verbose_name = (u'Изображения'),
    help_text='<small><i>Изображения привязанные к статье<br />')
    ...

    В классе отображения статей делаем так:

       ...
        images= posts.images.all() #Берём привязанные изображения
        for image in images:
            im = image.mini_html #Для каждой картинки
            # Заменям в теле статьи код вида '[ image.title ]' html 
# кодом со ссылкой на картинку с описанием
content=content.replace( '[' + image.title + ']', '<img src="%s" alt="%s" /><br />%s' % ( image.mini_url, image.title image.captions, ) )

    В итоге мы получили своеобразный "костыль", позволяющий добавлять картинки к статьям простой вставкой кода.

    К примеру, назвав наше изображение при добавлении "Картинка 1", нам достаточно добавить в тело статьи код вида "[Картинка 1]".

    Учитывая свойства админки django (возможность добавления связанных полей), наш "костыль" не так ужасен как кажется на первый взгляд. Но он позволяет держать TinyMCE на почтенном растоянии от наших драгоценных данных. :)

 

P.S.

   Пока обдумывал этот пост, и ковырял TinyMCE на всех доступных мне платформах, я пришел к неутешительному выводу. Пора мне переходить на Markdown. Причины следующие:

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

    2. WYSIWYG редакторы это не круто не правильно с точки зрения чистоты конечного кода.

    3. WYSIWYG редакторы не стоит допускать к управлению контентом по причинам безопасности.

    4. WYSIWYG редакторы расслабляют пользователей и учат плохому

Альтернативу пока вижу одну, тем более, что ее настойчиво предлагают разработчики и "гуру" Django - это Markdown редакторы.

 

Комментарии

8 мая 2013 г. 14:21 owlman
Научите как правильно. С удовольствием исправлю свой пост и укажу автора правильного метода.

Надеюсь получу новый правильный костыль и Ваш комментарий не останется голословным.
8 мая 2013 г. 10:28 Asad
Плохой костыль - лишний запрос к БД, там где без него можно и нужно обойтись.

Контактные данные

 Россия, г. Москва