Студия разработки сайтов и приложений

Netspark.ru

Notabene — заметки на полях

В общем, сделал я для Друпала 6.x модуль под названием notabene. Модуль предназначается для организации системы кратких заметок «на полях» с помощью специальной кнопки. При наведении мыши на кнопку, появляется всплывающий блок, показывающий уже созданные по данной кнопке заметки. Нажатие на кнопку влечет появление фрейма с уже созданными заметками и формой добавления новых. Фрейм создается с помощью Modal Frame API.

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

theme('notabene_button', $rel_id, $nid = 0);

где $rel_id — задаваемый разработчиком идентификатор, используемый для группировки заметок, а $nid — необязательный ID ноды, к которой будут прикреплены заметки. Вставлять можно сколько угодно кнопок, при разных $rel_id у разных кнопок будут независимые потоки заметок.

То есть по сути модуль представляет собой API из одной theme-функции, возвращающей HTML-код кнопки, и нескольких страниц настроек модуля в админке. Более подробное описание разных аспектов модуля содержится в файле README_RU.txt в архиве. Здесь кратко перечислю основные особенности:

  • если кнопка привязана к ноде через указание $nid, заметки будут автоматически удаляться при удалении ноды;
  • заметки можно помечать как «важные» и «личные». Личные заметки видны только их автору (и админу);
  • можно включить ограничение длины заметок с отображением количества оставшихся символов примерно как в Твиттере;
  • количество заметок, выводимых во всплывающем блоке, и порядок их сортировки тоже можно настраивать;
  • администратор может задать формат ввода, автоматически применяемый ко всем заметкам;
  • есть возможность подключить к форме Друпала (по form_id) автоматическую фильтрацию, с помощью которой модуль найдет в текстовых полях формы куски текста, выделенные определенными тэгами, и сохранит их как заметки, убрав из текстового поля. Тэги настраиваются в админке;
  • администратору доступна система фильтрации и удаления заметок наподобие админки нод;
  • при добавлении/удалении заметок счетчик на кнопке обновляется без перезагрузки страницы.

Также в состав модуля notabene входит подмодуль notabene_node. Он позволяет встраивать кнопку заметок в тело ноды без необходимости использовать функцию theme() и вообще писать какой-либо код. Для этого имеются настройки отображения кнопки как для типов содержимого, так и для каждой ноды в отдельности. Пример настроек и результат отображения кнопки в ноде — на рисунках ниже:

Это первая версия модуля, естественно, еще достаточно сырая, многое можно улучшить, что-то переделать. Делалось, как водится, для собственных нужд, но с оглядкой на реюзабельность. Поэтому если есть идеи, ценные советы или замечания по работе модуля и его апгрейду — прошу высказываться. А пока в дальнейших планах:

  • некоторая интеграция с Views;
  • интеграция с Beauty Tips и, возможно, с Simplecluetip;
  • проработка разных вариантов отображения кнопки;
  • улучшение механизма автофильтрации.

Немного погодя добавлю ролик с демонстрацией и кратким объяснением, зачем все это было нужно (мне).

Скачать модуль: notabene.tar.gz v. 1.0.

Комментарии