=== 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.
