Чек-лист к материалу

Что делает компонент

Добавляет личные чекбоксы к таблице внутри обычного материала InstantCMS. Счётчик, процент и шкала показывают прогресс. Каждый читатель отмечает пункты для себя.

Версия 1.0.1: отметки видны сразу, сохранение идёт в фоне. До подтверждения показано «Сохраняем…»; при ошибке неподтверждённые действия возвращаются к прежнему состоянию.

Установка и обновление

Требуются InstantCMS 2.18.2 и PHP 8.2 или новее. Сделайте резервную копию сайта и базы данных. В панели управления откройте «Компоненты → Установить пакет дополнения».

  • Для первой установки загрузите articlechecklist-1.0.1.zip.
  • Для существующего компонента загрузите articlechecklist-1.0.1-update.zip.

Обновление сохраняет настройки, ID таблиц и личные отметки. Общие пресеты и поля установщик автоматически не меняет.

Разрешить HTML-атрибуты

В «Компоненты → Типограф» создайте копию текущего HTML-пресета нужного текстового поля. В копии разрешите атрибуты с типом «Текст»:

ТегАтрибуты
tableid, class, data-checklist
trdata-checklist-point

В «Типы контента → нужный тип → Поля → основной текст» назначьте копию только этому полю. HTML-фильтр оставьте включённым. Остальные правила копии сохраняйте прежними.

Настроить редактор

Визуальный редактор также должен сохранять эти атрибуты. Для Redactor: в «Компоненты → Wysiwyg редакторы» скопируйте текущий пресет Redactor, добавьте плагин articlechecklistattrs и назначьте эту копию нужному полю. Плагин уже входит в пакет; файлы ядра редактировать не нужно.

Плагин оставляет штатную очистку script и on*-атрибутов. Для TinyMCE разрешите служебные атрибуты в настройках его пресета, если выбранная конфигурация их удаляет. MarkItUp работает с исходным HTML.

Для пустого поля Redactor сначала введите символ в визуальном режиме, затем откройте код и замените содержимое таблицей.

Подключить таблицу

Добавляйте или редактируйте материал штатной формой CMS. У таблицы задайте class="checklist". Каждая строка tbody — отдельный пункт; thead и tfoot пунктами не являются. Для нескольких таблиц используйте класс; id="checklist" допускается только один раз на странице.

<table class="checklist"><thead><tr><th>Шаг</th><th>Что сделать</th></tr></thead><tbody><tr><td>1</td><td>Подготовить</td></tr><tr><td>2</td><td>Проверить</td></tr><tr><td>3</td><td>Завершить</td></tr></tbody></table>

Сохраните и опубликуйте материал. Компонент назначит постоянные data-checklist и data-checklist-point. Не удаляйте их при последующих правках: от них зависят отметки читателей. При перестановке строк перемещайте строки вместе с их атрибутами.

Отметки и настройки

Без регистрации отметки хранятся в этом браузере. По умолчанию срок — три дня после последнего изменения, а просмотр не продлевает срок. В аккаунте отметки хранятся отдельно на сервере; гостевые отметки автоматически не объединяются с аккаунтом.

В опциях компонента доступны шаблон счётчика с {done}, {total}, {percent}, срок гостя от 1 до 365 дней, сообщение с {days} и подпись сброса. Для быстрого переключения можно нажать на строку, кроме ссылок и кнопок. Сброс требует подтверждения и касается только личных отметок текущего списка.

Ограничения и проверка

Поддерживаются опубликованные общедоступные материалы без родительской группы, плоские таблицы до 500 пунктов. Вложенные таблицы пропускаются. Сначала проверьте настройку на техническом материале: сохранность класса и ID, повторное сохранение, обычную таблицу и удаление script/onclick.

Цвета наследуются от темы сайта. Поле «Чек-лист к материалу» остаётся дополнительным способом вывода; для таблицы в тексте оно не требуется.

Отключение и удаление

При отключении компонента таблица остаётся читаемой. Удаление регистрации компонента сохраняет таблицу прогресса и данные. Общую папку docs/_shared не удаляйте: её используют другие дополнения. Пресеты и плагин редактора удаляйте только после проверки отсутствия назначений. Не пересохраняйте действующие чек-листы через редактор или фильтр, удаляющий ID.