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.

andypost (гость)
Аватар пользователя andypost

Интересно, а какова область применения заметок, ведь вроде есть несколько подобных модулей...

graker
Аватар пользователя graker

Да я искал, но вроде подходящего не нашел.
Главными условиями было:
- чтобы jQuery и Modal Frame (ну или какой-нибудь еще фрейм);
- чтобы не было обязательной привязки к нодам и можно было в одной ноде сделать несколько независимых "потоков" заметок;
- чтобы можно было автоматически вырезать заметки из textarea любых форм.

Что касается применения, я ролик еще не успел пока сделать, но кусочек области применения видно на скриншоте, где пример фрейма. Там изображен full-page-вывод ноды. В ноду входит табличное содержимое (от нескольких штук до нескольких сотен строк). Так вот правый столбец таблицы содержит для каждой строки отдельную кнопку, по которой можно оставить независимые заметки.

Отправить комментарий

CAPTCHA
Пройдите, пожалуйста, проверку. Она нужна, чтобы отличать людей от спам-роботов. А если не хотите проходить эту проверку регулярно — зарегистрируйтесь.
Image CAPTCHA
Введите цифры, изображенные на картинке (без пробелов).