В продолжение вчерашней темы, добавил простой способ типографить избранные поля в модели ActiveRecord.
Достаточно написать в нужной модели примерно следующее:
class Article < ActiveRecord::Base
typograf :title, :use_p => false, :use_br => false
typograf :content, :teaser
end
И тогда каждый раз перед сохранением (конкретнее, перед проверкой правильности полей) будет проходить типографирование этих полей, посредством Типографа студии Артемия Лебедева.
Поддерживается несколько возможных синтаксисов объявления моделей для типографирования:
- для одного конкретного поля:
typograf :content - можно указать параметры для типографирования этого поля:
typograf :content, :entity_type => AlsTypograf::NO_ENTITIES - для нескольких полей сразу (тоже с возможностью объявить параметры типографирования, общие для всех объявленных полей):
typograf :skills, :achievements, :additional, :use_br => false, :use_p => true - для нескольких полей сразу (но с объявлением параметров для каждого конкретного поля):
typograf :foo => {:entity_type => AlsTypograf::HTML_ENTITIES}, :bar => {:use_p => true, :use_br => false}, :baz => {:max_nobr => 5}, :some_other_field_name => {}
Все эти варианты могут комбинироваться друг с другом внутри одной модели произвольное количество раз (но если параметры типографирования для одного и того же поля были указаны в вызовах несколько раз, будут применяться только последние).
27.11.2009 в 10:32
А вам не кажется что в модели таким делам не место? А место во вьюшках.
27.11.2009 в 11:29
Совсем не кажется.
Во-первых, типографика является неотъемлемым качеством подаваемой информации. Нам не надо показывать информацию в одном месте правильно (с качественной типографикой), а в другом — неправильно.
Во-вторых, если типографировать информацию в представлении — нам придётся это делать каждый раз при показе соответствующей страницы (забудем на время о кешировании), отдельно для каждого из форматов (html, xml, json), а при типографировании текста перед сохранением, мы делаем запрос единожды (только когда соответствующее поле изменилось) и забываем о нём.
Таким образом, исключаются лишние запросы к веб-сервису, и мы можем достойно подавать информацию в любых представлениях, уже не заботясь о том, чтобы как-то преобразовать её.
12.12.2009 в 00:01
1. Типограф студии Лебедева ложится.
2. Внешний канал от сайта к сервису типографирования ложится.
И админка получает лулз от хттп таймаутов при каждом сохранении. Это уже было на одном из клиентов рокби, когда точно такой же плагин я написал для админки сайта про гостиницы.
Так что, расово правильный способ – типографировать отдельной кнопкой рядом с полем.
12.12.2009 в 09:54
При проблемах 1. и 2. просто вернётся неоттипографированный текст. Чуть подумает и вернётся.
20.01.2010 в 10:52
спасибо. буду юзать.
06.02.2010 в 19:52
Вообще говоря, типографика должна быть на уровне представления, но нормальных CSS rules для этого нет, а jquery-плагин будет кушать очень много.
Тут, как я понимаю, это просто сделано для in-database кеширования и сделано правильно — вся разметка должна пересчитываться на create/save.