Интеграция «Типографа» в редактор материалов. Часть 2Это вторая часть руководства по интеграции «Типографа» в редактор материалов. Здесь продолжается описание "клиентской" стороны вопроса, которое было начато в первой части. Следующий листинг будет описывать мелкие функции, которые проверяют или задают состояние кнопки, а в листинге №8 будет представлено описание функции, которая и делает основную работу - считывает выделенный текст, отправляет запрос PHP-скрипту из листинга №1 и вставляет результат работы вместо выделенного текста. Листинг №7. Поведение кнопки
Функция TypoState создаёт два свойства для той переменной, которой будет присваиваться. Вообще, это понадобилось для того, чтобы кнопка могла корректно отображать процесс работы. Например, если в данный момент выполняется запрос к PHP-скрипту, она не будет менять свой внешний вид, даже если пару десятков раз провести над ней курсором мыши. А если к моменту завершения запроса над кнопкой будет находиться мышь, то внешний вид кнопки сменится не на обычный вид а на ситуацию, когда на кнопку наведён курсор. Функции typoSetState и typoGetState отвечают за то, чтобы изменить или просто сообщить информацию о значениях свойств, заданных функцией TypoState, а функция buttonRealtime отвечает за то, чтобы сменить внешний вид кнопки согласно заданному параметру. typoMouse — своеобразный обработчик событий. Весь её смысл состоит в том, чтобы в определённой ситуации вызвать ту или иную функцию и задать свойство-индикатор, сигнализирующий о том, что курсор мыши находится над кнопкой. Можно было бы здесь же задавать свойство-индикатор, связанное с информацией о том, что производится типографика выделенного текста, но из-за асинхронности выполнения в JavaScript этот индикатор сработает некорректно. Почти во всех из этих функций в качестве одного из параметров выступает переменная oEditClassName. Она требуется для привязки к конкретному экземпляру редактора. Без этого может получиться так, что курсор будет наводиться на кнопку в редакторе краткого описания, а меняться будет внешний вид кнопки в редакторе полного текста материала. Вообще, на самом деле, вполне можно обойтись без всех функций, представленных в листинге №7. Они предназначены только для того, чтобы обеспечить обратную связь. На главное событие «onMouseUp» можно было бы просто повесить вызов функции doTypograf из листинга № 8 и не загоняться такими мелочами. Именно так я бы и поступил лет 12 назад, когда у меня только просыпался интерес к программированию и я, временами, засыпал с каким-нибудь томом «Искусства программирования» Д.Кнута под подушкой. Однако, со временем, начинаешь понимать, что хорошая программа — это не только механизм, но и дизайн. Она должна не только работать правильно. Она должна нравиться — хотя бы самому себе. Именно поэтому, когда я только начал разрабатывать эту кнопку, она сначала научилась давать обратную связь и только потом начала типографить текст. Листинг №8. Механика
При выполнении работы данная функция задаёт свойство «занят работой» для экземпляра класса редактора, а «освобождение» кнопки происходит только тогда, когда получен результат POST-запроса. «Освобождение» указано в кавычках из-за того, что кнопка и не блокируется, а просто не меняет внешнего вида (но позволяет по ней кликать и отправляет после каждого клика запросы). Для того, чтобы её по-настоящему заблокировать, можно немного поиграть с кодом в функции typoMouse() из листинга № 7 — что-то вроде «домашнего задания». В строках Я думаю, что на этом можно закончить — не хотелось бы превращать данное руководство в описание стандартных функций JavaScript или JQuery, которые встречаются в коде программы. Стой-подожди! А в каких браузерах это будет работать?Я проверял работоспособность кнопки в следующих браузерах:
Заключение«Типографика — графическое оформление печатного текста посредством набора и вёрстки с использованием норм и правил, специфических для данного языка», — поясняет Википедия. Огромное число русских сайтов в Интернете не обращают внимания на оформление текста, либо предпочитают не заниматься этим — из-за сложностей, связанных с набором правильных кавычек, тире (а не дефиса), специальных символов и прочего, что делает текст правильным с позиции русского языка. Действительно, если приходится набирать много текста, и делать это быстро, не остаётся времени на то, чтобы обращать внимание на такие мелочи. Тем более, на клавиатуре с русской раскладкой большинства таких символов нет и в помине. Кто-то бы и рад оформлять текст правильно, но дополнительные заморочки удерживают от этого. Однако, теперь у пользователей Ucoz может появиться возможность преодолеть данное ограничение. Более того, введённый «по-быстрому» текст может одним кликом мыши превратиться в текст, оформленный в соответствие с правилами типографики. Данное руководство описывает то, каким образом эту кнопку можно создать и внедрить в код шаблона. Для тех же, кто не очень хорошо разбирается в технологиях PHP и JavaScript, к тексту прикреплён архив с готовым кодом и небольшой инструкцией по его внедрению на свой сайт. Содержимое архива:
Прикреплённый файл: 295_typograf.zip (5.8 Kb)
|
Похожие инструкции |