NG CMS — Плагин «Шаблоны новостей» (news_templates)
==================================================
Коротко
------
Плагин добавляет в редактор новости (в админке) выпадающее меню с предустановленными текстовыми шаблонами. Шаблоны хранятся в БД и вставляются в тело новости одним кликом. В комплекте — облегчённый BBCode‑тулбар и модальные окна для вставки ссылок, e‑mail, изображений и медиа.
Возможности
-----------
- Хранение произвольного числа шаблонов (заголовок + текст, флаг «Активен»).
- Быстрая вставка шаблона в активное поле редактора без перезагрузки страницы.
- Мини‑тулбар BBCode (жирный, курсив, списки, цитата, код, спойлер и др.).
- Модальные окна для вставки URL, e‑mail, изображений (с загрузкой), медиа.
- Drag & Drop загрузка изображений/файлов с автоматической подстановкой BBCode.
- RPC‑метод для получения списка активных шаблонов (используется JS в админке).
Установка
--------
1) Админка → Плагины → news_templates → Установить.
2) Будет создана таблица `prefix_news_templates`.
3) По умолчанию создано 3 «пустых» слота под шаблоны (можно изменить в настройках).
Удаление: Админка → Плагины → news_templates → Удалить. Таблица и настройки будут очищены.
Настройка
---------
- «Количество шаблонов» — задаёт, сколько строк для редактирования выводить в настройках плагина. Это же число используется как максимум при сохранении.
- Для каждой строки доступны поля: «Заголовок», «Текст шаблона», «Активен».
- Порядок отображения соответствует номеру строки (поле `ord`). Чтобы переупорядочить — отредактируйте нужные строки.
Как это работает в редакторе
----------------------------
- На странице создания/редактирования новости автоматически подключается общий скрипт `lib/news_editor.js`, который добавляет кнопку «Шаблоны» в тулбар редактора.
- При первом открытии меню скрипт вызывает RPC‑метод и подтягивает активные шаблоны:
  - Метод: `plugin.news_templates.list`
  - Права: только для авторизованных пользователей админки
  - Формат ответа: JSON `{ status, data: [{ id, ord, title, content }, ...] }`
- Клик по пункту просто вставляет содержимое шаблона (поле `content`) в активную текстовую область.
Зависимости и совместимость
---------------------------
- Работает с дефолтными админ‑скинами NG CMS (Bootstrap 3/5) и без jQuery — есть нативные fallbacks.
- Для кнопок и иконок используется Font Awesome (идёт в составе админ‑тем).
- Загрузка изображений/файлов использует RPC бэкенды NG CMS (методы `admin.images.upload`, `admin.files.upload` и аналоги). Если в сборке отсутствуют конкретные обработчики — будет использована доступная альтернатива.
Структура БД
------------
Таблица `prefix_news_templates`:
- `id` — PK, auto_increment
- `ord` — порядковый номер
- `title` — заголовок шаблона
- `content` — текст шаблона
- `active` — 0/1, отображать в меню
- `dt` — дата изменения (unix time)
RPC
---
- Зарегистрирован метод `plugin.news_templates.list` (см. `news_templates.php`).
- Возвращает только активные шаблоны, отсортированные по `ord`, затем по `id`.
- Доступ разрешён только авторизованным пользователям (в админке).
Подсказки по использованию
--------------------------
- Если кнопка «Шаблоны» не появилась:
  - Проверьте, что плагин установлен и включён.
  - Убедитесь, что загружается `lib/news_editor.js` (в консоли не должно быть ошибок 404/JS).
  - Посмотрите ошибки в консоли/сети по RPC `plugin.news_templates.list`.
- Шаблоны можно заводить как заготовки BBCode или чистого текста. При вставке формат никак не изменяется.
Пример оформления новости с BBCode
----------------------------------
Ниже — типовой «скелет» новости, который вы можете сохранить одним из шаблонов и вставлять при создании материалов.
[p][b]Короткий анонс:[/b] Одним–двумя предложениями опишите, о чём материал.[/p]
[img="https://example.com/path/to/cover.jpg" align="center" width="960" height="540"]Подпись к изображению[/img]
[p]Основной текст новости. Допускается [b]выделение[/b], [i]курсив[/i], [u]подчёркивание[/u] и др.[/p]
[quote]Ключевая цитата источника или выдержка из документа.[/quote]
[p][b]Список ключевых фактов:[/b][/p]
[ul]
[li]Факт №1[/li]
[li]Факт №2[/li]
[li]Факт №3[/li]
[/ul]
[p]Полезные ссылки: [url="https://example.com"]официальный сайт[/url], [url="https://example.com/faq"]FAQ[/url].[/p]
[spoiler]Дополнительные детали, которые можно скрыть под спойлер.[/spoiler]
[code=js]
// Короткий пример кода (если уместно)
function hello(name){
  return 'Hello, ' + name + '!';
}
[/code]
[media width="640" height="360"]https://example.com/embed/video.mp4[/media]
[p][i]Автор: Имя Фамилия. Контакты: [email]editor@example.com[/email][/i][/p]
Лицензия и авторство
---------------------
Автор: сообщество NGCMS. Плагин распространяется на условиях лицензии проекта NG CMS.
