В общем, сделал я для Друпала 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.