BardSongbooks 0.1.9: оглавление и мелкий список
 
BardSongbooks 0.2.3: примечания и исполнение, параметры печати и ссылки публичного каталога
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
= BardSongbooks =
= BardSongbooks =
'''BardSongbooks''' — самописное расширение MediaWiki для личных песенников Бард-Вики. Зарегистрированный пользователь может создать несколько закрытых песенников, добавить в них страницы песен, расположить песни в любом порядке и подготовить печатную версию или PDF.
Текущая версия: '''0.1.9'''.


== Скачать ==
== Скачать ==


* [https://new.bard-wiki.net/downloads/extensions/BardSongbooks/BardSongbooks-0.1.9.zip BardSongbooks 0.1.9 — ZIP]
* [https://new.bard-wiki.net/downloads/extensions/BardSongbooks/BardSongbooks-0.2.3.zip BardSongbooks-0.2.3.zip]
* [https://new.bard-wiki.net/downloads/extensions/BardSongbooks/BardSongbooks-0.1.9.tar.gz BardSongbooks 0.1.9 — TAR.GZ]
* [https://new.bard-wiki.net/downloads/extensions/BardSongbooks/BardSongbooks-0.2.3.tar.gz BardSongbooks-0.2.3.tar.gz]
* [https://new.bard-wiki.net/downloads/extensions/BardSongbooks/SHA256SUMS Файл SHA256SUMS]
* [https://new.bard-wiki.net/downloads/extensions/BardSongbooks/SHA256SUMS SHA256SUMS]


<pre>
<pre>
de67bbdf31e67b78a01d22c4dd097aafcb89561e79aaaf2737210b88b569a247 BardSongbooks-0.1.9.zip
5626f68e59f0612e1ff24c9abddc7e67517b126e74aac864458ac826e1fee969 BardSongbooks-0.2.3.zip
09246223c66260ca94962bf38753c9e81982eb9e1e9b9d3fbaea395604dd6c94 BardSongbooks-0.1.9.tar.gz
4491f343ad65f4f4325c111d3c5dfef27e88876ec15795731de0b8d7ac006342 BardSongbooks-0.2.3.tar.gz
</pre>
</pre>


Архив распаковывается в каталог <code>BardSongbooks/</code>. Лицензия: GPL-2.0-or-later.
 
<code>BardSongbooks</code> — самописное расширение MediaWiki для личных песенников Бард-Вики. Зарегистрированный пользователь может создать несколько приватных или публичных песенников, добавить в них страницы песен, расположить песни в любом порядке и подготовить печатную версию или PDF.
 
Текущая версия: '''0.2.3'''.
 
== Изменения 0.2.3 ==
 
* Настройки showNotes и showPerformance сохраняются в существующем JSON bsb_settings, без миграции БД.
* «Показывать примечания»: при выключении удаляются раздел/список примечаний и ссылки-номера Cite в тексте; обычные надстрочные символы сохраняются.
* «Показывать исполнение»: при выключении убираются заголовок и таблица исполнения из Template:Song либо одноимённый раздел.
* «Только первый раздел» исключает аккорды и остальные варианты текста, но оставляет явно выбранные примечания/исполнение.
* В старых и новых песенниках showNotes/showPerformance по умолчанию true; существующие сохранённые параметры не переписываются.
* Параметры печати разделены на верхнюю строку полей и сетку галочек, с адаптацией для узкого экрана.
* Название в общем каталоге публичных песенников открывает печатную версию; права владельца и приватность не меняются.
 
 
=== Примечания и исполнение ===
 
«Показывать примечания» управляет разделом примечаний и номерами сносок в песне вместе. При выключении исчезают ссылки-номера Cite, список и заголовок примечаний; обычные надстрочные символы текста не удаляются.
 
«Показывать исполнение» управляет заголовком и таблицей исполнения, которые создаёт шаблон Song, а также отдельным одноимённым разделом, если он есть.
 
Обе галочки включены по умолчанию и сохраняются для каждого песенника в bsb_settings как showNotes и showPerformance. Для старых настроек без этих ключей используется true. Исходные страницы песен и старые сохранённые настройки при обновлении не переписываются. При снятой галочке значение false сохраняется и в приватном, и в публичном печатном просмотре.
 
«Только первый раздел песни» исключает аккорды и последующие варианты текста. Примечания и исполнение выбираются независимо: отмеченные дополнения остаются и при включённом первом разделе. Оглавление и количество колонок 1/2/3 работают как прежде.
 
Название в общем каталоге публичных песенников ведёт сразу на Special:SongbookPrint/<id>. Ссылка для общего доступа Special:Songbook/<id> остаётся прежней, менять книгу по-прежнему может только владелец.
 
Обновление с 0.2.1 на 0.2.3 не требует миграции БД или запуска updater. Версия 0.2.2 не выпускалась (отменённый частный черновик).
 
== Изменения 0.2.1 ==
 
* Убраны кнопки вверх/вниз. Порядок сохраняется перетаскиванием.
* Вместо «Убрать» — SVG-корзина в отдельной правой колонке. Длинные подписи переносятся, не сдвигая корзину.
* Данные и настройки книг, приватность, поиск и печать не меняются.


== Возможности ==
== Возможности ==


* несколько приватных песенников у одного пользователя;
* несколько песенников у одного пользователя;
* добавление песни прямо со страницы песни или из поиска в редакторе;
* добавление песни прямо со страницы песни;
* управление добавлением в служебной панели темы: справа в инструментах Vector 2022 и слева в старых Vector/MonoBook;
* управление добавлением в служебной колонке темы: справа в инструментах страницы Vector 2022 и слева в старых Vector/MonoBook;
* добавление из поиска в редакторе песенника;
* поиск по основному, альтернативному и оригинальному названию, композиторам, авторам текста, первой строке и всему индексированному тексту песни;
* поиск по основному, альтернативному и оригинальному названию, композиторам, авторам текста, первой строке и всему индексированному тексту песни;
* одновременный запрос по разным полям;
* одновременный запрос по разным полям: например, по автору и словам из текста;
* результаты вида <code>Название (авторы) — Первая строка</code>;
* результаты в формате <code>Название (авторы) — Первая строка</code>;
* произвольная перестановка песен перетаскиванием или кнопками вверх/вниз;
* произвольная перестановка песен перетаскиванием;
* ссылки на исходные страницы песен;
* ссылки на исходные страницы песен в списке и печатном представлении;
* печать песен подряд или каждой с новой страницы;
* печать песен подряд или каждой с новой страницы;
* от одной до трёх колонок внутри песни и размер шрифта от 8 до 16 пунктов;
* от одной до трёх колонок внутри каждой песни;
* сохранение строф целиком при разбиении на колонки;
* размер шрифта от 8 до 16 пунктов;
* сохранение строф при разбиении на колонки;
* возможность скрыть сведения о песне;
* возможность скрыть сведения о песне;
* режим «Только первый раздел песни», исключающий следующие разделы, например «Аккорды»;
* режим «Только первый раздел песни», исключающий последующие разделы, например «Аккорды»;
* дополнительное нумерованное оглавление без номеров страниц со ссылками на песни внутри печатного представления;
* дополнительное нумерованное оглавление без номеров страниц со ссылками на песни внутри печатного представления;
* печать и сохранение в PDF средствами браузера.
* печать и сохранение в PDF средствами браузера.
Новые и существующие песенники по умолчанию приватны. Владелец может опубликовать выбранную книгу для чтения всеми посетителями; право редактирования остаётся только у владельца.


== Требования ==
== Требования ==


* MediaWiki 1.43 или новее;
* MediaWiki 1.43 или новее;
* PHP 8.1 или новее; выпуск проверен на PHP 8.3;
* PHP 8.1 или новее; рабочая конфигурация проверена на PHP 8.3;
* MySQL или MariaDB, поддерживаемые установленной версией MediaWiki;
* MySQL или MariaDB, поддерживаемые установленной версией MediaWiki;
* расширение Cargo и таблица <code>cargo__song</code>;
* расширение Cargo и таблица <code>cargo__song</code>;
* стандартный полнотекстовый индекс MediaWiki <code>searchindex</code>.
* стандартная таблица полнотекстового индекса MediaWiki <code>searchindex</code>.


Поиск ожидает поля Cargo <code>Name</code>, <code>AlterName__full</code>, <code>OriginalName__full</code>, <code>Composer__full</code>, <code>Lyric__full</code>, <code>FirstString</code> и <code>_pageID</code>. Для другой схемы Cargo код поиска потребуется адаптировать.
Расширение ожидает в Cargo-таблице песен поля:
 
* <code>Name</code>;
* <code>AlterName__full</code>;
* <code>OriginalName__full</code>;
* <code>Composer__full</code>;
* <code>Lyric__full</code>;
* <code>FirstString</code>;
* <code>_pageID</code>.
 
Это расширение сделано для структуры Бард-Вики. На другой вики с иной схемой Cargo поиск потребуется адаптировать.


== Установка ==
== Установка ==


# Сделайте резервную копию базы данных, каталога расширений и <code>LocalSettings.php</code>.
# Сделайте резервную копию базы данных и <code>LocalSettings.php</code>.
# Распакуйте архив в <code>extensions/BardSongbooks</code>. Файл манифеста должен оказаться по пути <code>extensions/BardSongbooks/extension.json</code>.
# Распакуйте архив так, чтобы файл <code>extension.json</code> находился по пути:
 
  ```text
  extensions/BardSongbooks/extension.json
  ```
 
# Добавьте в <code>LocalSettings.php</code>:
# Добавьте в <code>LocalSettings.php</code>:


<syntaxhighlight lang="php">
  ```php
wfLoadExtension( 'BardSongbooks' );
  wfLoadExtension( 'BardSongbooks' );
</syntaxhighlight>
  ```


# Из корня MediaWiki выполните:
# Из корня MediaWiki выполните:


<syntaxhighlight lang="bash">
  ```bash
php maintenance/run.php update --quick
  php maintenance/run.php update --quick
</syntaxhighlight>
  ```


# Проверьте версию на странице [[Служебная:Версия]].
# Откройте <code>Служебная:Версия</code> и убедитесь, что <code>BardSongbooks</code> показан в списке расширений.
# Войдите как зарегистрированный пользователь и откройте [[Служебная:Мои песенники]].
# Войдите как обычный зарегистрированный пользователь и откройте <code>Служебная:Мои песенники</code>.


== Обновление ==
== Обновление ==


# Сохраните текущий каталог <code>extensions/BardSongbooks</code> и базу данных.
Переход с 0.2.0 на 0.2.1 меняет только интерфейс: миграция БД и запуск updater не требуются.
# Замените каталог файлами новой версии.
 
# Выполните <code>php maintenance/run.php update --quick</code>.
# Сделайте резервную копию текущего каталога <code>extensions/BardSongbooks</code> и базы данных.
# При необходимости очистите кеш браузера.
# Замените каталог расширения файлами новой версии.
# Проверьте создание песенника, поиск, перестановку и печатную версию.
# Выполните <code>php maintenance/run.php update --quick</code>. Для 0.2.0 он добавляет <code>bsb_is_public</code> с DEFAULT 0 и индекс публичного каталога, не меняя существующие книги, порядок или настройки.
# Сбросьте кеш браузера или добавьте <code>?debug=1</code>, если интерфейс продолжает использовать старые JavaScript/CSS-ресурсы.
# Проверьте создание тестового песенника, поиск, перестановку песен и печатное представление.


== Использование ==
== Использование ==


=== Создание ===
=== Создание песенника ===


Откройте «Мои песенники» в пользовательском меню или [[Служебная:Мои песенники]], введите название и нажмите «Создать». Один пользователь может иметь до 50 песенников. Названия песенников одного пользователя не повторяются.
После входа в систему откройте ссылку «Мои песенники» в меню пользователя или страницу <code>Служебная:Мои песенники</code>. Введите название и нажмите «Создать».


=== Добавление и поиск ===
Один пользователь может иметь не более 50 песенников. Названия песенников одного пользователя не должны повторяться.


Песню можно добавить со страницы самой песни либо найти в редакторе песенника. В один песенник нельзя дважды добавить одну страницу; предел — 500 песен.
=== Добавление песен ===


Запрос разбивается максимум на десять слов. Каждое слово должно встретиться хотя бы в одном поддерживаемом поле, но разные слова могут находиться в разных полях. Это позволяет одновременно искать по автору, части названия и словам из текста. Минимальная длина запроса — два символа, за один запрос возвращается до 30 результатов.
Песню можно добавить двумя способами:


=== Порядок ===
# открыть страницу песни и воспользоваться появившимся элементом добавления в песенник;
# открыть редактор песенника, ввести запрос в поле «Добавить песню» и выбрать результат.


Песни можно перетаскивать мышью либо перемещать кнопками вверх и вниз. Порядок хранится отдельно для каждого песенника.
В Vector 2022 блок выбора песенника находится внутри служебной панели «Инструменты»: при закреплённых инструментах — в правой колонке, при незакреплённых — в раскрывающемся меню «Инструменты». В старом Vector и MonoBook блок помещается в левую служебную колонку после обычных инструментов. Над содержимым статьи блок не выводится. Для других тем, где подходящей служебной области нет, используется запасной полноширинный вариант в начале содержимого.
 
В один песенник нельзя дважды добавить одну и ту же страницу. Максимум — 500 песен в песеннике.
 
=== Поиск ===
 
Запрос разбивается максимум на десять слов. Каждое слово должно встретиться хотя бы в одном из поддерживаемых полей, но разные слова могут находиться в разных полях. Поэтому запрос может одновременно содержать имя автора, часть названия и слова из текста.
 
Поиск охватывает:
 
* основное название;
* альтернативные названия;
* оригинальные названия;
* композиторов и авторов текста;
* первую строку;
* весь индексированный MediaWiki текст страницы песни.
 
Минимальная длина запроса — два символа. За один запрос возвращается до 30 результатов.
 
=== Порядок песен ===
 
Песни можно перетаскивать мышью; кнопки вверх и вниз убраны. Новый полный порядок сохраняется только для данного песенника. Чтобы убрать песню, нажмите значок корзины в отдельной правой колонке её строки. Корзина доступна с клавиатуры и имеет подсказку «Убрать песню из песенника». Убирается только запись в песеннике, исходная страница песни остаётся в Wiki.
 
=== Приватность, публикация и ссылка ===
 
В редакторе откройте «Доступ к песеннику», выберите «Публичный — доступен всем» и нажмите «Сохранить доступ». До нажатия кнопки состояние книги не меняется. Новые книги и все книги после обновления с 0.1.9 остаются приватными; автоматической публикации нет.
 
После публикации появляется поле «Ссылка на песенник» и кнопка «Копировать ссылку». Ссылка ведёт на обычную <code>Служебная:Песенник/&lt;id&gt;</code> и работает без входа. Название можно менять: ID и адрес книги сохраняются. При недоступном Clipboard API ссылка выделяется для обычного Ctrl+C.
 
Получатель видит упорядоченный список песен, ссылки на исходные страницы и печатное представление/PDF. У него нет поиска/добавления, перестановки, переименования, удаления, настроек или изменения видимости чужой книги. Все операции записи по-прежнему проверяют зарегистрированного владельца, POST и CSRF.
 
Для закрытия выберите «Приватный — только я» и сохраните. Книга исчезнет из каталога, её HTML, печать и API станут недоступны остальным, даже по старой ссылке. Уже скачанные PDF и сделанные другими людьми копии вернуть невозможно. Права чтения исходных страниц Wiki не расширяются: недоступные конкретному читателю песни исключаются из списка и печати.
 
=== Общий каталог всех пользователей ===
 
<code>Служебная:Публичные песенники</code> доступна без входа. Ссылки на неё есть в инструментах страницы и на странице «Мои песенники». Каталог показывает публичные книги '''всех пользователей''', а не только текущего.
 
Четыре колонки: «Название песенника» (ссылка), «Пользователь» (имя в Wiki, без email/настоящего имени), «Количество песен», «Дата последнего изменения». Сортировка — сначала недавно изменённые, при равенстве дат по ID. По 20 книг на страницу. Приватные книги не попадают в каталог.
 
=== API ===
 
* <code>action=bardsongbooks&amp;mode=public&amp;limit=20&amp;offset=0</code> — общий каталог, без входа;
* <code>action=bardsongbooks&amp;mode=items&amp;book=&lt;id&gt;</code> — содержимое: владелец для приватной книги, любой читатель для публичной;
* <code>mode=list</code> и <code>mode=search</code> сохраняют прежнее требование входа и права <code>bard-songbooks-use</code>;
* <code>action=bardsongbookedit&amp;op=visibility&amp;book=&lt;id&gt;&amp;public=1&amp;token=&lt;csrf&gt;</code> — публикация, только POST зарегистрированного владельца;
* для закрытия выполните тот же POST '''без параметра <code>public</code>'''. Boolean-параметры API MediaWiki истинны по присутствию; <code>public=0</code> тоже означает присутствие и не закрывает книгу.
 
Чтение видимости и публичного каталога использует primary DB для немедленного закрытия доступа без задержки реплик. Ответы HTML и API не предназначены для общего кеширования.


=== Печать и PDF ===
=== Печать и PDF ===


В редакторе выбираются расположение песен, 1–3 колонки внутри песни, размер шрифта, показ сведений и режим первого раздела. Строфы распределяются между колонками целиком. Заголовки остаются ссылками на исходные страницы.
В редакторе песенника задаются:


Кнопка «Печать / сохранить в PDF» открывает системный диалог браузера. Серверный PDF-файл расширение не создаёт.
* песни подряд или каждая с новой страницы;
* 1, 2 или 3 колонки внутри текста каждой песни;
* шрифт 8–16 пунктов;
* показ сведений о песне;
* печать только первого раздела песни.


Режим «Только первый раздел песни» отбрасывает содержимое начиная со следующего прямого заголовка H2–H6 и подходит для исключения раздела «Аккорды».
Строфы распределяются между колонками целиком и не должны разрываться внутри строфы. Заголовок песни остаётся ссылкой на исходную страницу. Кнопка «Печать / сохранить в PDF» открывает диалог браузера; создание PDF выполняет сам браузер.


Флажок «Оглавление» добавляет перед песнями нумерованный список без номеров страниц. Названия в списке являются внутренними ссылками и переводят к соответствующей песне в превью; ссылки могут сохраняться и в PDF, если это поддерживает выбранный PDF-принтер браузера. При режиме «Каждая песня с новой страницы» первая песня начинается с новой страницы после оглавления.
Режим «Только первый раздел песни» сохраняет основной раздел и отбрасывает содержимое начиная со следующего прямого заголовка H2–H6. Он предназначен, в частности, для исключения раздела «Аккорды».
 
Флажок «Оглавление» добавляет в начало печатного превью нумерованный список песен без номеров страниц. Названия в списке являются внутренними ссылками и переводят к соответствующей песне ниже. Настройка сохраняется в песеннике вместе с остальными параметрами печати.


== Данные и безопасность ==
== Данные и безопасность ==


Расширение создаёт только собственные таблицы:
Расширение создаёт две собственные таблицы:
 
* <code>bard_songbook</code> — песенники, владелец, название, параметры печати и <code>bsb_is_public</code> (0/1, по умолчанию 0);
* <code>bard_songbook_item</code> — страницы песен и их порядок в песеннике.


* <code>bard_songbook</code> — владелец, название и параметры печати;
Страницы песен, формы PageForms, шаблоны, Lua-модули и данные Cargo не изменяются.
* <code>bard_songbook_item</code> — страницы песен и их порядок.


Страницы песен, PageForms, шаблоны, Lua-модули и Cargo-данные не изменяются.
Право <code>bard-songbooks-use</code> по умолчанию выдано группе <code>user</code>. Анонимные посетители видят только публичные песенники. Приватные названия, состав и параметры закрыты в HTML, печати и API. Все операции изменения требуют входа, проверки владельца, POST-запроса и CSRF-токена MediaWiki.


Право <code>bard-songbooks-use</code> по умолчанию выдано группе <code>user</code>. Анонимным посетителям песенники недоступны. Изменения требуют входа, проверки владельца, POST-запроса и CSRF-токена MediaWiki.
== Удаление и откат ==


== Откат и удаление ==
Для отката замените каталог расширения сохранённой предыдущей версией. Новую колонку/индекс удалять не требуется. Код 0.1.9 снова закрывает все книги для посторонних; при повторном обновлении до 0.2.0 сохранённый выбор публичности вернётся. Полный откат данных выполняется отдельно по проверенной резервной копии.


Для отката верните сохранённый каталог предыдущей версии и выполните <code>php maintenance/run.php update --quick</code>.
Для отключения удалите или закомментируйте строку <code>wfLoadExtension( &#x27;BardSongbooks&#x27; );</code> в <code>LocalSettings.php</code>. Собственные таблицы при этом остаются в базе, поэтому песенники можно вернуть повторным включением расширения.


Для отключения удалите или закомментируйте <code>wfLoadExtension( 'BardSongbooks' );</code>. Таблицы и песенники при этом сохраняются.
Если расширение удаляется окончательно, таблицы <code>bard_songbook_item</code> и <code>bard_songbook</code> можно удалить вручную только после отдельной проверенной резервной копии. Сначала удаляется таблица элементов, затем таблица песенников.


Удалять таблицы вручную следует только при окончательном удалении расширения и после отдельной проверенной резервной копии. Сначала удаляется <code>bard_songbook_item</code>, затем <code>bard_songbook</code>.
== Ограничения версии 0.2.3 ==


== Ограничения версии 0.1.9 ==
* песенники привязаны к текущим версиям страниц песен и не фиксируют конкретную ревизию;
* совместное редактирование отсутствует: публичность даёт только чтение и печать;
* PDF создаётся браузером, серверного PDF-генератора нет;
* качество поиска полного текста зависит от актуальности стандартного индекса MediaWiki;
* схема поиска зависит от полей Cargo, используемых в Бард-Вики.


* песенник использует текущую версию страницы песни и не фиксирует ревизию;
== Структура расширения ==
* совместный доступ и публичная публикация песенника отсутствуют;
* PDF создаётся браузером;
* полнотекстовый поиск зависит от актуальности индекса MediaWiki;
* Cargo-поиск привязан к структуре Бард-Вики.


== История выпусков ==
* <code>includes/SongbookStore.php</code> — хранение, права владельца и поиск;
* <code>includes/SongPrintRenderer.php</code> — подготовка песен для печати;
* <code>includes/Special/</code> — страницы списка, редактора и печати;
* <code>includes/Api/</code> — API чтения и изменения песенников;
* <code>modules/</code> — JavaScript и CSS интерфейса;
* <code>sql/mysql/tables-generated.sql</code> — схема собственных таблиц;
* <code>i18n/</code> — сообщения интерфейса;
* <code>CHANGELOG.md</code> — история выпусков.


; 0.1.9
== Лицензия ==
: Мелкий шрифт подписей в списке песен; сохраняемое нумерованное оглавление без номеров страниц с внутренними ссылками на песни.
; 0.1.8
: Ссылка с [[Служебная:Версия]] на эту документацию; рабочая логика 0.1.7 не менялась.
; 0.1.7
: Блок убран из содержимого статьи и перенесён в служебную панель темы. В Vector 2022 он следует за «Инструментами» в правой закреплённой колонке либо в раскрывающемся меню; в старых Vector и MonoBook находится в левой колонке.
; 0.1.6
: Блок добавления песни перенесён в компактную правую колонку; на экранах до 720 пикселей он остаётся в обычном потоке, а при печати скрывается.
; 0.1.5
: Полная документация, журнал изменений, лицензия и публичные установочные архивы. Функциональность 0.1.4 не менялась.
; 0.1.4
: Ссылки на страницы песен и сохранение строф при распределении по колонкам.
; 0.1.3
: Полнотекстовый поиск, альтернативные названия и режим первого раздела.
; 0.1.1
: Составной поиск по названию, авторам и первой строке.
; 0.1.0
: Первый рабочий выпуск личных песенников.


См. также [[Расширения Бард-Вики|каталог самописных расширений Бард-Вики]].
GPL-2.0-or-later. Краткое уведомление находится в <code>LICENSE.md</code>, полный текст GNU GPL версии 2 — в <code>COPYING</code>.

Текущая версия от 09:38, 7 октября 2026

BardSongbooks

Скачать

5626f68e59f0612e1ff24c9abddc7e67517b126e74aac864458ac826e1fee969  BardSongbooks-0.2.3.zip
4491f343ad65f4f4325c111d3c5dfef27e88876ec15795731de0b8d7ac006342  BardSongbooks-0.2.3.tar.gz


BardSongbooks — самописное расширение MediaWiki для личных песенников Бард-Вики. Зарегистрированный пользователь может создать несколько приватных или публичных песенников, добавить в них страницы песен, расположить песни в любом порядке и подготовить печатную версию или PDF.

Текущая версия: 0.2.3.

Изменения 0.2.3

  • Настройки showNotes и showPerformance сохраняются в существующем JSON bsb_settings, без миграции БД.
  • «Показывать примечания»: при выключении удаляются раздел/список примечаний и ссылки-номера Cite в тексте; обычные надстрочные символы сохраняются.
  • «Показывать исполнение»: при выключении убираются заголовок и таблица исполнения из Template:Song либо одноимённый раздел.
  • «Только первый раздел» исключает аккорды и остальные варианты текста, но оставляет явно выбранные примечания/исполнение.
  • В старых и новых песенниках showNotes/showPerformance по умолчанию true; существующие сохранённые параметры не переписываются.
  • Параметры печати разделены на верхнюю строку полей и сетку галочек, с адаптацией для узкого экрана.
  • Название в общем каталоге публичных песенников открывает печатную версию; права владельца и приватность не меняются.


Примечания и исполнение

«Показывать примечания» управляет разделом примечаний и номерами сносок в песне вместе. При выключении исчезают ссылки-номера Cite, список и заголовок примечаний; обычные надстрочные символы текста не удаляются.

«Показывать исполнение» управляет заголовком и таблицей исполнения, которые создаёт шаблон Song, а также отдельным одноимённым разделом, если он есть.

Обе галочки включены по умолчанию и сохраняются для каждого песенника в bsb_settings как showNotes и showPerformance. Для старых настроек без этих ключей используется true. Исходные страницы песен и старые сохранённые настройки при обновлении не переписываются. При снятой галочке значение false сохраняется и в приватном, и в публичном печатном просмотре.

«Только первый раздел песни» исключает аккорды и последующие варианты текста. Примечания и исполнение выбираются независимо: отмеченные дополнения остаются и при включённом первом разделе. Оглавление и количество колонок 1/2/3 работают как прежде.

Название в общем каталоге публичных песенников ведёт сразу на Special:SongbookPrint/<id>. Ссылка для общего доступа Special:Songbook/<id> остаётся прежней, менять книгу по-прежнему может только владелец.

Обновление с 0.2.1 на 0.2.3 не требует миграции БД или запуска updater. Версия 0.2.2 не выпускалась (отменённый частный черновик).

Изменения 0.2.1

  • Убраны кнопки вверх/вниз. Порядок сохраняется перетаскиванием.
  • Вместо «Убрать» — SVG-корзина в отдельной правой колонке. Длинные подписи переносятся, не сдвигая корзину.
  • Данные и настройки книг, приватность, поиск и печать не меняются.

Возможности

  • несколько песенников у одного пользователя;
  • добавление песни прямо со страницы песни;
  • управление добавлением в служебной колонке темы: справа в инструментах страницы Vector 2022 и слева в старых Vector/MonoBook;
  • добавление из поиска в редакторе песенника;
  • поиск по основному, альтернативному и оригинальному названию, композиторам, авторам текста, первой строке и всему индексированному тексту песни;
  • одновременный запрос по разным полям: например, по автору и словам из текста;
  • результаты в формате Название (авторы) — Первая строка;
  • произвольная перестановка песен перетаскиванием;
  • ссылки на исходные страницы песен в списке и печатном представлении;
  • печать песен подряд или каждой с новой страницы;
  • от одной до трёх колонок внутри каждой песни;
  • размер шрифта от 8 до 16 пунктов;
  • сохранение строф при разбиении на колонки;
  • возможность скрыть сведения о песне;
  • режим «Только первый раздел песни», исключающий последующие разделы, например «Аккорды»;
  • дополнительное нумерованное оглавление без номеров страниц со ссылками на песни внутри печатного представления;
  • печать и сохранение в PDF средствами браузера.

Новые и существующие песенники по умолчанию приватны. Владелец может опубликовать выбранную книгу для чтения всеми посетителями; право редактирования остаётся только у владельца.

Требования

  • MediaWiki 1.43 или новее;
  • PHP 8.1 или новее; рабочая конфигурация проверена на PHP 8.3;
  • MySQL или MariaDB, поддерживаемые установленной версией MediaWiki;
  • расширение Cargo и таблица cargo__song;
  • стандартная таблица полнотекстового индекса MediaWiki searchindex.

Расширение ожидает в Cargo-таблице песен поля:

  • Name;
  • AlterName__full;
  • OriginalName__full;
  • Composer__full;
  • Lyric__full;
  • FirstString;
  • _pageID.

Это расширение сделано для структуры Бард-Вики. На другой вики с иной схемой Cargo поиск потребуется адаптировать.

Установка

  1. Сделайте резервную копию базы данных и LocalSettings.php.
  2. Распакуйте архив так, чтобы файл extension.json находился по пути:
  ```text
  extensions/BardSongbooks/extension.json
  ```
  1. Добавьте в LocalSettings.php:
  ```php
  wfLoadExtension( 'BardSongbooks' );
  ```
  1. Из корня MediaWiki выполните:
  ```bash
  php maintenance/run.php update --quick
  ```
  1. Откройте Служебная:Версия и убедитесь, что BardSongbooks показан в списке расширений.
  2. Войдите как обычный зарегистрированный пользователь и откройте Служебная:Мои песенники.

Обновление

Переход с 0.2.0 на 0.2.1 меняет только интерфейс: миграция БД и запуск updater не требуются.

  1. Сделайте резервную копию текущего каталога extensions/BardSongbooks и базы данных.
  2. Замените каталог расширения файлами новой версии.
  3. Выполните php maintenance/run.php update --quick. Для 0.2.0 он добавляет bsb_is_public с DEFAULT 0 и индекс публичного каталога, не меняя существующие книги, порядок или настройки.
  4. Сбросьте кеш браузера или добавьте ?debug=1, если интерфейс продолжает использовать старые JavaScript/CSS-ресурсы.
  5. Проверьте создание тестового песенника, поиск, перестановку песен и печатное представление.

Использование

Создание песенника

После входа в систему откройте ссылку «Мои песенники» в меню пользователя или страницу Служебная:Мои песенники. Введите название и нажмите «Создать».

Один пользователь может иметь не более 50 песенников. Названия песенников одного пользователя не должны повторяться.

Добавление песен

Песню можно добавить двумя способами:

  1. открыть страницу песни и воспользоваться появившимся элементом добавления в песенник;
  2. открыть редактор песенника, ввести запрос в поле «Добавить песню» и выбрать результат.

В Vector 2022 блок выбора песенника находится внутри служебной панели «Инструменты»: при закреплённых инструментах — в правой колонке, при незакреплённых — в раскрывающемся меню «Инструменты». В старом Vector и MonoBook блок помещается в левую служебную колонку после обычных инструментов. Над содержимым статьи блок не выводится. Для других тем, где подходящей служебной области нет, используется запасной полноширинный вариант в начале содержимого.

В один песенник нельзя дважды добавить одну и ту же страницу. Максимум — 500 песен в песеннике.

Поиск

Запрос разбивается максимум на десять слов. Каждое слово должно встретиться хотя бы в одном из поддерживаемых полей, но разные слова могут находиться в разных полях. Поэтому запрос может одновременно содержать имя автора, часть названия и слова из текста.

Поиск охватывает:

  • основное название;
  • альтернативные названия;
  • оригинальные названия;
  • композиторов и авторов текста;
  • первую строку;
  • весь индексированный MediaWiki текст страницы песни.

Минимальная длина запроса — два символа. За один запрос возвращается до 30 результатов.

Порядок песен

Песни можно перетаскивать мышью; кнопки вверх и вниз убраны. Новый полный порядок сохраняется только для данного песенника. Чтобы убрать песню, нажмите значок корзины в отдельной правой колонке её строки. Корзина доступна с клавиатуры и имеет подсказку «Убрать песню из песенника». Убирается только запись в песеннике, исходная страница песни остаётся в Wiki.

Приватность, публикация и ссылка

В редакторе откройте «Доступ к песеннику», выберите «Публичный — доступен всем» и нажмите «Сохранить доступ». До нажатия кнопки состояние книги не меняется. Новые книги и все книги после обновления с 0.1.9 остаются приватными; автоматической публикации нет.

После публикации появляется поле «Ссылка на песенник» и кнопка «Копировать ссылку». Ссылка ведёт на обычную Служебная:Песенник/<id> и работает без входа. Название можно менять: ID и адрес книги сохраняются. При недоступном Clipboard API ссылка выделяется для обычного Ctrl+C.

Получатель видит упорядоченный список песен, ссылки на исходные страницы и печатное представление/PDF. У него нет поиска/добавления, перестановки, переименования, удаления, настроек или изменения видимости чужой книги. Все операции записи по-прежнему проверяют зарегистрированного владельца, POST и CSRF.

Для закрытия выберите «Приватный — только я» и сохраните. Книга исчезнет из каталога, её HTML, печать и API станут недоступны остальным, даже по старой ссылке. Уже скачанные PDF и сделанные другими людьми копии вернуть невозможно. Права чтения исходных страниц Wiki не расширяются: недоступные конкретному читателю песни исключаются из списка и печати.

Общий каталог всех пользователей

Служебная:Публичные песенники доступна без входа. Ссылки на неё есть в инструментах страницы и на странице «Мои песенники». Каталог показывает публичные книги всех пользователей, а не только текущего.

Четыре колонки: «Название песенника» (ссылка), «Пользователь» (имя в Wiki, без email/настоящего имени), «Количество песен», «Дата последнего изменения». Сортировка — сначала недавно изменённые, при равенстве дат по ID. По 20 книг на страницу. Приватные книги не попадают в каталог.

API

  • action=bardsongbooks&mode=public&limit=20&offset=0 — общий каталог, без входа;
  • action=bardsongbooks&mode=items&book=<id> — содержимое: владелец для приватной книги, любой читатель для публичной;
  • mode=list и mode=search сохраняют прежнее требование входа и права bard-songbooks-use;
  • action=bardsongbookedit&op=visibility&book=<id>&public=1&token=<csrf> — публикация, только POST зарегистрированного владельца;
  • для закрытия выполните тот же POST без параметра public. Boolean-параметры API MediaWiki истинны по присутствию; public=0 тоже означает присутствие и не закрывает книгу.

Чтение видимости и публичного каталога использует primary DB для немедленного закрытия доступа без задержки реплик. Ответы HTML и API не предназначены для общего кеширования.

Печать и PDF

В редакторе песенника задаются:

  • песни подряд или каждая с новой страницы;
  • 1, 2 или 3 колонки внутри текста каждой песни;
  • шрифт 8–16 пунктов;
  • показ сведений о песне;
  • печать только первого раздела песни.

Строфы распределяются между колонками целиком и не должны разрываться внутри строфы. Заголовок песни остаётся ссылкой на исходную страницу. Кнопка «Печать / сохранить в PDF» открывает диалог браузера; создание PDF выполняет сам браузер.

Режим «Только первый раздел песни» сохраняет основной раздел и отбрасывает содержимое начиная со следующего прямого заголовка H2–H6. Он предназначен, в частности, для исключения раздела «Аккорды».

Флажок «Оглавление» добавляет в начало печатного превью нумерованный список песен без номеров страниц. Названия в списке являются внутренними ссылками и переводят к соответствующей песне ниже. Настройка сохраняется в песеннике вместе с остальными параметрами печати.

Данные и безопасность

Расширение создаёт две собственные таблицы:

  • bard_songbook — песенники, владелец, название, параметры печати и bsb_is_public (0/1, по умолчанию 0);
  • bard_songbook_item — страницы песен и их порядок в песеннике.

Страницы песен, формы PageForms, шаблоны, Lua-модули и данные Cargo не изменяются.

Право bard-songbooks-use по умолчанию выдано группе user. Анонимные посетители видят только публичные песенники. Приватные названия, состав и параметры закрыты в HTML, печати и API. Все операции изменения требуют входа, проверки владельца, POST-запроса и CSRF-токена MediaWiki.

Удаление и откат

Для отката замените каталог расширения сохранённой предыдущей версией. Новую колонку/индекс удалять не требуется. Код 0.1.9 снова закрывает все книги для посторонних; при повторном обновлении до 0.2.0 сохранённый выбор публичности вернётся. Полный откат данных выполняется отдельно по проверенной резервной копии.

Для отключения удалите или закомментируйте строку wfLoadExtension( 'BardSongbooks' ); в LocalSettings.php. Собственные таблицы при этом остаются в базе, поэтому песенники можно вернуть повторным включением расширения.

Если расширение удаляется окончательно, таблицы bard_songbook_item и bard_songbook можно удалить вручную только после отдельной проверенной резервной копии. Сначала удаляется таблица элементов, затем таблица песенников.

Ограничения версии 0.2.3

  • песенники привязаны к текущим версиям страниц песен и не фиксируют конкретную ревизию;
  • совместное редактирование отсутствует: публичность даёт только чтение и печать;
  • PDF создаётся браузером, серверного PDF-генератора нет;
  • качество поиска полного текста зависит от актуальности стандартного индекса MediaWiki;
  • схема поиска зависит от полей Cargo, используемых в Бард-Вики.

Структура расширения

  • includes/SongbookStore.php — хранение, права владельца и поиск;
  • includes/SongPrintRenderer.php — подготовка песен для печати;
  • includes/Special/ — страницы списка, редактора и печати;
  • includes/Api/ — API чтения и изменения песенников;
  • modules/ — JavaScript и CSS интерфейса;
  • sql/mysql/tables-generated.sql — схема собственных таблиц;
  • i18n/ — сообщения интерфейса;
  • CHANGELOG.md — история выпусков.

Лицензия

GPL-2.0-or-later. Краткое уведомление находится в LICENSE.md, полный текст GNU GPL версии 2 — в COPYING.