=== Validation Muse for Contact Form 7 ===
Contributors: simmotorlp
Tags: contact-form-7, cf7, validation, error-message, multilingual
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 8.0
Stable tag: 1.6.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Пользовательские сообщения об ошибках и обязательных полях для Contact Form 7. Per-form, per-field, совместимость с CF7 6.x SWV, мультиязычность.

== Description ==

**Validation Muse** позволяет писать собственные сообщения об ошибках для каждого поля Contact Form 7 — прямо в редакторе формы, для каждой формы и поля отдельно. Без кода, без глобальных настроек, без JavaScript-хаков.

Большинство плагинов валидации CF7 перестали работать, когда Contact Form 7 6.x представил **Schema-based Validation (SWV)**. Validation Muse запускает свои фильтры с приоритетом 20 (после ядра CF7) и использует Reflection, чтобы заменить SWV-ошибки для уже невалидных полей — поэтому ваш пользовательский текст действительно отображается на новом валидационном движке.

= Почему Validation Muse =

* **Совместимость с CF7 6.x SWV** — работает с новой Schema-based Validation, не только со старыми хуками.
* **Собственные regex- и правила длины** — задавайте свои regex-паттерны, минимальную и максимальную длину по полю, каждое со своим сообщением об ошибке.
* **Условные правила "Required-If"** — поле становится обязательным только когда заполнено/отмечено связанное поле.
* **Клиентская SWV-интеграция** — стандартные правила валидации (required, email, length) внедряются в нативный движок SWV CF7 для мгновенной обратной связи на фронтенде с полной поддержкой доступности (A11y).
* **Импорт/экспорт наборов правил и шаблоны** — экспортируйте/импортируйте правила валидации в JSON, копируйте их из других форм, применяйте глобальные шаблоны массово.
* **Токены-плейсхолдеры** — используйте `{field_label}`, `{min}` и `{max}` в сообщениях валидации для генерации динамического текста.
* **Per-form, per-field** — каждая форма хранит свои сообщения; нет глобального переопределения.
* **Хранится в post meta** — сообщения живут с формой, совместимы с дублированием формы CF7 и сторонними плагинами импорта/экспорта CF7.
* **Мультиязычность через WPML, Polylang и Flavor** — переводит правила через стандартные хуки WPML/Polylang, а также показывает языковые табы + кнопку AI Translate в один клик, когда активен Flavor.
* **Дружественен к разработчикам** — хуки расширяемости `vmcf7_loaded` и `vmcf7_validation_tag_types` позволяют добавлять собственные типы полей.
* **Лёгкий** — без admin-раздутия, без трекинга, без апселов.

= Поддерживаемые типы полей =

* Сообщения для обязательных полей: любой required-тег (`text`, `textarea`, `select`, `checkbox`, `radio`, `file` и т.д.).
* Сообщения о невалидном формате: `email`, `url`, `tel`, `number` (включая `range`), `date` и `time`.
* Собственные сообщения об ошибках при неудачной валидации: `file` (проверка размера/типа), `acceptance` (чекбокс не отмечен) и `quiz` (неверный ответ).
* HTML внутри сообщений разрешён и очищается через `wp_kses_post()`.
* Собственные regex- и мин/макс-правила длины работают для всех полей ввода (кроме acceptance и quiz).

= Переводы =

Плагин поставляется с `.pot`-файлом и уже переведён на немецкий, испанский, французский, португальский (Бразилия), русский и украинский. [Помогите перевести на ваш язык.](https://translate.wordpress.org/projects/wp-plugins/validation-muse-for-contact-form-7)

== Installation ==

1. Установите из **Плагины → Добавить новый**, найдя *Validation Muse for Contact Form 7*, или загрузите папку `validation-muse-for-contact-form-7` в `/wp-content/plugins/`.
2. Активируйте плагин. Contact Form 7 должен быть активен — Validation Muse автоматически деактивируется с уведомлением, если CF7 отсутствует.
3. Откройте любую форму Contact Form 7, перейдите в панель **Custom Validation**, включите её и напишите свои сообщения.
4. (Опционально) Установите плагин перевода Flavor для перевода сообщений по языкам с AI-помощью.

== Frequently Asked Questions ==

= Работает ли это с Contact Form 7 6.x и Schema-based Validation (SWV)? =

Да. Начиная с версии 1.3.0, Validation Muse цепляется на приоритет 20 (после ядра CF7) и использует Reflection для замены SWV-ошибок для уже невалидных полей. Начиная с 1.6.1, стандартные правила (required, email/url/tel/number/date/time, мин/макс длина) также внедряются прямо в собственную SWV-схему CF7, поэтому клиентская (фронтенд JS) валидация мгновенно показывает ваши сообщения — через нативный движок валидации CF7, без какого-либо дополнительного скрипта этого плагина.

= Чем это отличается от других плагинов валидации CF7? =

Validation Muse — единственный плагин валидации CF7, который (1) совместим с CF7 6.x SWV из коробки — как на сервере, так и в собственной клиентской валидации CF7, (2) хранит сообщения в post meta формы, поэтому они живут с формой (совместимо с дублированием формы CF7 и плагинами импорта/экспорта), и (3) интегрируется с плагином перевода Flavor для сообщений per language с one-click AI-переводом.

= Можно ли переводить сообщения валидации по языкам? =

Да — установите плагин Flavor, и Validation Muse покажет языковые табы в редакторе формы плюс кнопку *AI Translate*. Переводы хранятся в БД Flavor; удаление Validation Muse очищает их.

= Какие типы полей поддерживают пользовательские сообщения о невалидном формате? =

`email`, `url`, `tel`, `number` (включая `range`) и `date`. Любое обязательное поле любого типа может иметь собственное сообщение об обязательности.

= Где хранятся сообщения? =

В post meta каждой формы. Они живут с формой, поэтому дублирование формы (встроено в CF7) сохраняет сообщения. CF7 не имеет нативного экспорта, но сторонние плагины импорта/экспорта CF7 читают post meta — поэтому миграции между сайтами работают без отдельного шага импорта.

= Можно ли использовать HTML в сообщениях валидации? =

Да, базовый HTML разрешён и очищается через `wp_kses_post()`.

= Требует ли этот плагин Contact Form 7? =

Да. CF7 должен быть установлен и активен. Плагин показывает admin-уведомление и самодеактивируется, если CF7 отсутствует.

= Есть ли страница настроек? =

Нет. Конфигурация живёт внутри каждой формы, в панели **Custom Validation**. Глобальной страницы настроек нет по дизайну — каждая форма хранит свои сообщения.

= Трекает или отправляет ли плагин какие-либо данные? =

Нет. Validation Muse не делает никаких внешних запросов. Опциональная кнопка AI Translate (интеграция с Flavor) маршрутизируется через собственного провайдера Flavor.

== Screenshots ==

1. Панель **Custom Validation** внутри редактора Contact Form 7 — включение per-form, сообщения per-field.
2. Языковые табы и кнопка **AI Translate** (видимы когда плагин Flavor активен).
3. Сообщение об обязательном поле, отрендеренное на фронтенде.
4. Сообщение о невалидном формате email, отрендеренное на фронтенде.

== Changelog ==

= 1.6.3 =
* i18n: полностью регенерирован каталог перевода `.pot` — каталог был заморожен с версии 1.2.0 и покрывал лишь около 20% переводимых строк плагина (regex-/длина-правила, шаблоны правил, ошибки AI Translate и многое другое раньше не извлекались вовсе). Все шесть поставляемых языков (немецкий, испанский, французский, португальский, русский, украинский) теперь полностью переведены под актуальный интерфейс.
* Документация: синхронизированы все переведённые readme-файлы — список возможностей, поддерживаемые типы полей и FAQ теперь отражают функциональность 1.6.0–1.6.2 (собственные regex-/длина-правила, required-if, нативная клиентская SWV-валидация, шаблоны правил); их разделы Changelog/Upgrade Notice, ранее застрявшие на 1.4.2, теперь покрывают все версии вплоть до 1.6.2.
* Fix: добавлен отсутствовавший комментарий `translators:` для строки с плейсхолдером (качество i18n-кода, без изменений поведения).

= 1.6.2 =
* Fix: сообщения, сохранённые версиями до переименования плагина (хранившиеся под старым meta-префиксом `_cf7cv_`), были невидимы для текущего кода. Одноразовая миграция теперь автоматически переименовывает их в префикс `_vmcf7_`, восстанавливая утраченные сообщения. Безопасна при коллизиях, выполняется один раз.

= 1.6.1 =
* Fix: устранены дублирующиеся/перезаписанные сообщения валидации на фронтенде за счёт интеграции с нативным движком SWV CF7.
* Fix: панели и карточки предпросмотра в админке отображались развёрнутыми, так как редактор CF7 удаляет inline-стили.

= 1.6.0 =
* Новое: собственные regex- и правила мин/макс длины по полю, каждое со своим сообщением.
* Новое: сообщения валидации для полей `file`, `acceptance` и `quiz`; условные сообщения "required-if".
* Новое: токены-плейсхолдеры `{field_label}`, `{min}`, `{max}` в сообщениях.
* Новое: клиентская inline-валидация, отражающая серверные сообщения, с доступностью через `aria-describedby`.
* Новое: живой предпросмотр сообщений, копирование сообщений между формами, JSON импорт/экспорт наборов сообщений и lint редактора.
* Новое: регистрация строк WPML/Polylang наряду с мостом Flavor; импорт/экспорт переводов.

= 1.5.0 =
* Минимальный PHP повышен до 8.0; минимальный WordPress повышен до 6.0; протестировано до WordPress 7.0.
* Новое: собственные сообщения валидации для полей `time`.
* Более понятная обратная связь об ошибках AI Translate в редакторе форм.
* Замена сообщений SWV на основе Reflection теперь логирует сбои под WP_DEBUG для упрощения диагностики.
* Улучшена обработка ожидающих переводов (больше нет тихого фолбэка) с кэшированием на запрос.
* Код модернизирован под идиомы PHP 8; усилено экранирование вывода; добавлен первый набор тестов.

= 1.4.2 =
* Plugin URI: теперь указывает на отдельную страницу https://plugins.symonov.com/validation-muse-for-cf7/
* Без изменений кода или поведения

= 1.4.1 =
* Readme: USP-first переписывание для SEO-видимости
* Tags: общие `messages`/`forms`/`customization` заменены на целевые `contact-form-7`, `cf7`, `validation`, `error-message`, `multilingual`
* FAQ: добавлены записи про совместимость с CF7 6.x SWV, сравнение с другими плагинами валидации CF7, мультиязычность через Flavor

= 1.4.0 =
* Добавлена мультиязычная поддержка через интеграцию с плагином перевода Flavor
* Сообщения валидации теперь можно переводить per language в редакторе формы
* Языковые табы появляются автоматически когда плагин Flavor активен
* Кнопка AI Translate для one-click машинного перевода всех сообщений
* Переводы хранятся в БД Flavor — данные плагина остаются портативными
* Нулевой оверхед когда Flavor не установлен — все вызовы за `class_exists()`-проверками
* Переводы Flavor очищаются при удалении плагина

= 1.3.0 =
* Fixed compatibility with Contact Form 7 6.x SWV (Schema-based Validation)
* Validation filters now run at priority 20 (after CF7 core) to replace SWV error messages
* Added Reflection-based error replacement for already-invalidated fields
* Custom messages now correctly override default CF7 "The field is required." text

= 1.2.1 =
* Fixed variable name mismatch causing "No required fields" error

= 1.2.0 =
* Refactored codebase to follow WordPress Coding Standards
* Reorganized file structure for better maintainability
* Added PHPDoc blocks to all functions and methods
* Improved accessibility with ARIA labels
* Fixed JavaScript prefix inconsistency
* Fixed uninstall script to use correct meta prefix
* Added extensibility hooks (`vmcf7_loaded`, `vmcf7_validation_tag_types`)
* Changed capability check from `manage_options` to `wpcf7_edit_contact_forms`
* Updated POT file name to match text domain

= 1.1.2 =
* Changed plugin name.

= 1.1.1 =
* Added .gitignore file.

= 1.1.0 =
* Added WordPress repository collateral (readme, license, POT file).
* Reworked validation hooks to override required and invalid messages without relying on AJAX filters.
* Hardened sanitization, text domain loading, and uninstall cleanup for release readiness.

= 1.0.1 =
* Initial public iteration bundled with the project.

== Upgrade Notice ==

= 1.6.3 =
Релиз документации и переводов — без функциональных изменений или изменений поведения. Полностью обновляет переведённые readme и каталог переводов .pot/.po/.mo.

= 1.6.2 =
Восстанавливает сообщения валидации, сохранённые версиями до 1.2.0 (старый meta-префикс `_cf7cv_`), через одноразовую автоматическую миграцию. Безопасно, действий не требуется.

= 1.6.1 =
Исправляет дублирующиеся/перезаписанные сообщения валидации на фронтенде и регрессии вёрстки в админ-панели из 1.6.0. Рекомендуется всем пользователям 1.6.0.

= 1.6.0 =
Добавляет собственные regex/правила длины, больше типов полей, сообщения required-if, клиентское отражение, живой предпросмотр, импорт/экспорт/шаблоны правил и поддержку WPML/Polylang. Миграция данных не требуется.

= 1.5.0 =
Повышает минимальный PHP до 8.0 и минимальный WordPress до 6.0. Проверьте окружение хостинга перед обновлением.

= 1.4.2 =
Plugin URI теперь указывает на отдельную страницу на plugins.symonov.com. Без изменений кода.

= 1.4.1 =
Документационный релиз. Обновлён readme для лучшей видимости функций.

= 1.4.0 =
Добавляет мультиязычную поддержку через плагин перевода Flavor и one-click AI-перевод сообщений валидации. Миграция данных не требуется.

= 1.3.0 =
Восстанавливает совместимость с Contact Form 7 6.x Schema-based Validation (SWV). Рекомендуется для всех пользователей CF7 6.x.
