03:45 29-11-2005 Администрации Journals.ru
Feature request, который вам не понравится.
Кратко
Вместо vB-кода хочу HTML.
Очевидные проблемы
1. Обратная совместимость.
1.1. Все прошлые записи не должны испортиться;
1.2. Юзеры, не желающие HTML, должны иметь возможность и дальше писать так же, не заметив нововведения.
2. Безопасность. Чтоб никто ничего страшного не натворил.
3. Дизайн. Вы тоже представили комментарий в своём дневнике, написанный 50-м размером Comic Sans MS, розовым по ярко-зелёному?
Предлагаемое решение
1. В Настройках дневника «Настройках сайта» добавить переключатель: «Использовать при разметке записей/комментариев vB-код или HTML?» По умолчанию он у всех установлен на «vB-код». В соответствии с положением переключателя будет обрабатываться текст юзера при добавлении записи/комментария. (Что значит «обрабатываться»? Да просто сохранять текст, как есть (как и раньше), но с правильным флагом (см. след. пункт).) «Гости», не имеющие настроек, остаются в vB-коде.
2. Для каждой записи и комментария сохранять флаг, в какой системе записан данный текст. Соответственно, при выводе на экран HTML-текста мы ничего преобразуем, а при выводе vB-текста делаем ту же замену vB->HTML, что и сейчас. (Все уже написанные на момент введения этой фичи тексты, естественно, имеют флаг «vB-код».)
Что мы получим
Учитывая дефолтные установки юзеров и прошлых записей/комментариев, мы решаем проблему обратной совместимости (1.1 и 1.2).
Что касается безопасности (проблема 2), то можно поступать, как в ЖЖ: выкусывать JavaScript, Flash, и вообще всё, кроме конкретного указанного набора тегов разметки (достаточно широкого, я надеюсь) — второй параметр strip_tags() как раз для этого. Для большей надёжности можно заглянуть в код многочисленных Anti-XSS-парсеров, написанных на PHP.
Теперь о гипер-дизайне (проблема 3). Основные раздражители — размер и цвет. Решение первое (сложное): не давать изменять размер и цвет явно, а только с помощью логической разметки (соответственно, нужно заранее подготовить юзеру набор логических тегов (h1, h2, h3 etc.) для разных извращений). Решение второе (простое): ни-че-го не делать — чтоб изменить цвет/размер, ещё и знания нужны, да и первого же удаления хозяином дневника страшного комментария с просьбой «больше так не делать» должно хватить (в ЖЖ, например (вы уж простите за очередное упоминание), я не замечал толп вандалов, гадящих подобным образом в комментариях).
Ну, а те неблагодарные люди, ради которых вся эта каша и заваривалась, получат возможность, переключив рубильник в «Настройках сайта», удобно и быстро писать красиво размеченные записи и комментарии.
P.S. Спасибо, что прочитали. Знаю, что прошу слишком многого. Если есть непонятные (для вас или для меня) моменты, напишите.
// Написано в журнале support, там тоже можно комментировать.
Комментарии: