﻿=== KDA Media Button ===
Contributors: deniskey
Tags: media, classic-editor, images, folder, upload
Requires at least: 5.0
Tested up to: 7.0
Stable tag: 1.3.3
Requires PHP: 7.2
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Плагин добавляет в классический редактор WordPress кнопку для выбора изображений из папки на сервере и вставки их в запись. Поддерживает загрузку новых файлов, выбор существующих, настройку папки, разрешённых форматов и прав доступа. Полностью переводим (включены русский и английский языки).

== Description ==

KDA Media Button расширяет классический редактор WordPress новой кнопкой. При нажатии открывается всплывающее окно с доступом к структуре сайта:

* Просмотр папок относительно заданной базовой папки.
* Загрузка новых изображений прямо в текущую папку.
* Выбор существующего изображения и вставка в запись.

Плагин полностью настраивается со страницы параметров:

* **Доступная папка** -- путь относительно корня сайта. Плагин может работать только внутри этой папки, что защищает остальную файловую систему.
* **Разрешённые форматы** -- список расширений через запятую. Если оставить пустым, разрешены все распространённые форматы изображений (jpg, jpeg, png, gif, webp, svg, ico, bmp, tiff, tif, avif).
* **Роли** -- выберите, какие роли (например, Администратор, Редактор) будут видеть кнопку в редакторе.
* **Класс ссылки** -- задайте CSS-класс для ссылки на изображение или оставьте пустым, чтобы отключить.
* **Журнал активности** -- опционально ведёт лог загрузок, удалений, создания и переименования папок.

= Работа с изображениями =

После выбора изображения можно настроить вставку:

* **Размер** -- вставить оригинал (Full) или сгенерированную копию (Thumbnail / Medium / Large).
* **Выравнивание** -- Нет, Слева, По центру или Справа (добавляет соответствующий класс WordPress).
* **Alt текст** -- альтернативный текст для вставляемого изображения.
* **Ссылка на полный размер** -- обернуть изображение в ссылку на полный файл со встроенным лайтбоксом.
* **Метаданные** -- разрешение (ширина×высота) и размер файла показываются перед вставкой, есть живой превью.

Можно выбрать несколько изображений и вставить их как галерею шорткодом `[kda_media_button_gallery]`:

`[kda_media_button_gallery urls="https://.../a.jpg,https://.../b.jpg" size="medium" columns="3" link="none"]`

= Управление файлами =

Всплывающее окно позволяет управлять структурой папок:

* Создавать новые подпапки.
* Переименовывать файлы и папки.
* Удалять файлы и папки (рекурсивно).

= Безопасность =

* Выход за пределы базовой папки блокируется.
* Загружаемые файлы проверяются по списку разрешённых форматов и обрабатываются через стандартный API загрузки WordPress.
* Все AJAX-запросы защищены nonces и проверкой ролей/прав.

== Installation ==

1. Загрузите папку `kda-media-button` в `/wp-content/plugins/`.
2. Активируйте плагин в меню «Плагины».
3. Перейдите в **Настройки → KDA Media Button** и задайте доступную папку, форматы и роли.
4. В классическом редакторе появится кнопка «Вставить изображение из папки».

== Frequently Asked Questions ==

= Работает ли с редактором блоков (Гутенберг)? =

Нет. Поддержка Гутенберга удалена. Плагин работает только с классическим редактором.

= Может ли плагин получить доступ к любой папке на сервере? =

Нет. Доступ ограничен папкой, заданной на странице настроек (относительно корня сайта). Directory traversal заблокирован.

= Какие форматы изображений разрешены по умолчанию? =

Все распространённые форматы изображений. Ограничить список можно на странице настроек.

== Upgrade Notice ==

= 1.3.3 =
Исправления ошибок и улучшения.

= 1.3.2 =
Исправления ошибок и улучшения.

= 1.3.1 =
Исправления ошибок и улучшения.

= 1.3.0 =
Улучшения и исправления ошибок.

= 1.2.24 =
Удалён жёстко прописанный путь к папке по умолчанию. Сохранение пустого поля «Доступная папка» теперь отклоняется с ошибкой.

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

= 1.2.22 =
Удалена поддержка блока Gutenberg и файлы блока. Публичные стили галереи по умолчанию отключены.

= 1.2.21 =
Исправлен fallback для папки по умолчанию в настройках и сохранение значения при сохранении формы.

= 1.2.20 =
Обновлён формат пути к доступной папке по умолчанию.

= 1.2.19 =
Добавлен русский readme, исправлена информация о поддерживаемых языках.

= 1.2.18 =
Исправления и улучшения.

== Changelog ==

= 1.3.3 =

* Исправлена выгрузка иконок плагина в WordPress.org.
* Исправлено повторное открытие лайтбокса после закрытия.
* Колонки галереи активны только при выборе нескольких изображений.
* Добавлена опция «Ссылка на полное изображение» в форму вставки.
* Убран автофокус с кнопки закрытия модального окна.

= 1.3.2 =

* Улучшена выгрузка ассетов плагина на WordPress.org.
* Исправлено повторное открытие лайтбокса после закрытия.
* Колонки галереи активны только при выборе нескольких изображений.
* Добавлена опция «Ссылка на полное изображение» в форму вставки.
* Убран автофокус с кнопки закрытия модального окна.

= 1.3.1 =

* Исправлен повторный вызов лайтбокса после закрытия без перезагрузки страницы.
* Колонки галереи теперь активны только при выборе нескольких изображений.
* Добавлен чекбокс «Ссылка на полное изображение» в форму вставки.
* Убран автофокус с кнопки закрытия модального окна при открытии.
* Улучшено отображение панели опций и валидация выбора.

= 1.3.0 =

* Улучшения и исправления ошибок интеграции с классическим редактором.
* Улучшена обработка папки по умолчанию и валидация настроек.
* Общие улучшения стабильности и удобства использования.

= 1.2.24 =

* Удалён жёстко прописанный путь к папке по умолчанию из кода.
* Сохранение пустого поля «Доступная папка» теперь отклоняется с ошибкой.
* Добавлена централизованная вспомогательная функция для получения папки.
* Улучшен процесс удаления плагина.

= 1.2.23 =

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

= 1.2.22 =

* Удалена поддержка блока Gutenberg и все связанные файлы.
* Публичные стили галереи по умолчанию отключены.
* Очищены активы и метаданные блока.

= 1.2.21 =

* Исправлен fallback для папки по умолчанию в настройках.
* Значение по умолчанию сохраняется при отправке формы.

= 1.2.20 =

* Обновлён формат пути к доступной папке по умолчанию.
* Нормализовано форматирование путей во всех точках получения.

= 1.2.19 =

* Добавлен русский readme.
* Исправлена информация о поддерживаемых языках.
* Обновлено имя участника.

= 1.2.18 =

* Security: blocked symlink escapes in path resolution and required `edit_posts`/`edit_pages` capability for REST access.
* Fixed `size` AJAX handler reading an undefined variable.
* Refactored legacy admin-ajax handlers to reuse shared core functions.
* Cached image metadata to speed up browsing.
* Added result limit to recursive search.
* Unified image/shortcode rendering with responsive `srcset`.
* SVG uploads/replacements are sanitized on save.
* Temporarily disabled Gutenberg block support.
* Registered the block via `register_block_type_from_metadata` (matches `block.json` `apiVersion: 2`); activity log is no longer autoloaded.

= 1.2.16 =

* Added Gutenberg block "Media from Folder" (`kda-media-button/media`).
* Added REST API endpoints: `browse`, `size`, `srcset`, `tree`, `upload`, `mkdir`, `rename`, `delete`, `clear_log`, `duplicate`, `bulk_delete`, `bulk_move`, `replace_image`.
* Added recursive folder search with subfolder checkbox.
* Added bulk delete, bulk move, file duplicate, copy URL (single + bulk).
* Added responsive `srcset`/`sizes` to gallery shortcode.
* Added non-image file support (inserted as links).
* Added WP-CLI commands: `wp kda-media-button clean-cache` and `wp kda-media-button rebuild-cache`.
* Added replace-image overwrite endpoint.
* Added settings page tabs: General, Permissions, Advanced, Activity log.
* Added keyboard navigation (arrow keys + Enter) and skeleton loaders.
* Added dark theme support (`prefers-color-scheme: dark`) and mobile breakpoint.

= 1.2.14 =

* Minor fixes and usability improvements.

= 1.0.0 =

* First version.
* Classic editor button opening a folder browser popup.
* Upload and select images with insertion into the post.
* Settings page: base folder, allowed formats and role restriction.
