# Copy Paste Tools for Advanced Custom Fields

Плагін для WordPress, що додає можливість копіювання та вставки блоків ACF (Advanced Custom Fields) між різними сторінками та постами. Тепер з підтримкою міжсайтового перенесення зображень через ZIP архіви!

## Особливості

- ✅ **Копіювання блоків ACF** - повне та часткове (без медіа)
- ✅ **Вставка блоків** - з автоматичною валідацією структури
- ✅ **Підтримка всіх типів полів** - текст, текстова область, repeater, group, flexible content
- ✅ **Налаштовуваний режим вставки** - додавання або заміна рядків repeater
- ✅ **Міжсайтове перенесення зображень** - через ZIP архіви (НОВЕ!)
- ✅ **Розумне визначення дублікатів** - уникайте повторних завантажень (НОВЕ!)
- ✅ **Сторінка налаштувань** - повний контроль над поведінкою плагіна (НОВЕ!)
- ✅ **Автоматичне додавання рядків** в repeater поля
- ✅ **Очищення блоків** - видалення всіх даних та рядків
- ✅ **Безпечне збереження** - в sessionStorage та системному буфері
- ✅ **Сумісність** - працює з будь-якими версіями ACF

## Встановлення

1. Завантажте файли плагіна в папку `/wp-content/plugins/copy-paste-tools-for-acf/`
2. Активуйте плагін в адмін-панелі WordPress
3. Плагін автоматично додасть кнопки до всіх ACF блоків

## Налаштування

Перейдіть до **Налаштування > Copy Paste Tools for ACF** для конфігурації:

### Загальні налаштування

**Режим вставки для repeater полів:**
- **Додати до існуючих рядків** (за замовчуванням) - зберігає існуючі дані
- **Замінити існуючі рядки** - очищає все та вставляє нове

### Налаштування міжсайтового перенесення

**Увімкнути міжсайтове перенесення:**
- Додає дві нові кнопки: 🌐 (Експорт) та 📦 (Імпорт)

**Режим обробки зображень:**
- **Перевіряти за назвою та розміром** - пропускає, якщо знайдено точний збіг
- **Перевіряти тільки за назвою** - пропускає, якщо існує файл з такою назвою
- **Завантажити всі зображення** - завжди створює нові копії

## Використання

### Кнопки плагіна (стандартний режим)

Кожен ACF блок отримує панель з кнопками:

- **📋** - Повне копіювання (включаючи медіа)
- **📄** - Часткове копіювання (без медіа)
- **📥** - Вставка даних з буфера
- **🧹** - Очищення блоку

### Додаткові кнопки (міжсайтовий режим)

Коли увімкнено міжсайтове перенесення:

- **🌐** - Копіювати для іншого сайту (експорт зображень в ZIP)
- **📦** - Вставити з іншого сайту (імпорт зображень з ZIP)

### Процес роботи

#### Стандартне копіювання (в межах одного сайту)

1. **Копіювання**:
   - Натисніть 📋 або 📄 на блоці, який хочете скопіювати
   - Дані збережуться в локальному буфері

2. **Вставка**:
   - Перейдіть на іншу сторінку/пост
   - Натисніть 📥 на блоці, куди хочете вставити дані
   - Підтвердіть вставку в діалозі

3. **Очищення**:
   - Натисніть 🧹 для видалення всіх даних з блоку

#### Міжсайтове перенесення (з зображеннями)

1. **Експорт (на вихідному сайті)**:
   - Натисніть 🌐 на блоці, який хочете експортувати
   - Дані збережуться в буфері
   - ZIP архів з зображеннями автоматично завантажиться

2. **Імпорт (на цільовому сайті)**:
   - Скопіюйте дані блоку в буфер (через звичайне копіювання або вручну)
   - Натисніть 📦 на блоці призначення
   - Оберіть завантажений ZIP файл
   - Зображення завантажаться відповідно до налаштувань
   - Дані автоматично вставляться з оновленими ID зображень

## Підтримувані типи полів

- **Текстові поля** - text, textarea, email, url, number
- **Repeater поля** - з автоматичним додаванням рядків
- **Group поля** - вкладені групи полів
- **Flexible Content** - лейаути з полями
- **Select та Radio** - списки та радіо-кнопки
- **Медіа поля** - image, gallery, file (тільки в повному копіюванні)

## Технічні деталі

### Зберігання даних

- **Session Storage** - локальне зберігання в браузері
- **System Clipboard** - системний буфер обміну
- **JSON формат** - читабельна структура даних

### Автоматичні функції

- **Валідація структури** - перевірка відповідності полів
- **Додавання рядків** - автоматичне створення рядків в repeater
- **Очищення рядків** - видалення всіх рядків repeater
- **Оновлення кнопок** - динамічний стан кнопки вставки

### Сумісність

- **ACF API** - використання офіційного API з fallback до DOM
- **Всі версії ACF** - від 5.0 до останніх
- **Всі теми** - незалежно від теми WordPress

## Структура файлів

```
copy-paste-tools-for-acf/
├── copy-paste-tools-for-acf.php    # Основний файл плагіна
├── assets/
│   ├── admin.css        # Стилі кнопок та інтерфейсу
│   └── admin.js         # JavaScript функціональність
├── languages/           # Файли перекладів
│   ├── copy-paste-tools-for-acf-uk_UA.po
│   ├── copy-paste-tools-for-acf-en_US.po
│   └── ...
└── README.md            # Документація
```

## Технічні деталі міжсайтового перенесення

### Формат ZIP архіву

```
cptacf-export-TIMESTAMP.zip
├── manifest.json        # Метадані зображень
├── image1.jpg          # Зображення 1
├── image2.png          # Зображення 2
└── ...
```

### Manifest файл

```json
[
  {
    "id": 123,
    "filename": "image.jpg",
    "filesize": 45678,
    "mime_type": "image/jpeg",
    "title": "Зображення",
    "alt": "Alt текст",
    "description": "Опис"
  }
]
```

## Безпека

- ✅ Валідація всіх вхідних даних
- ✅ Перевірка прав користувача (upload_files, manage_options)
- ✅ Безпечне збереження в браузері
- ✅ Захист від XSS атак
- ✅ Nonce перевірка для AJAX запитів
- ✅ Очищення тимчасових файлів після операцій

## Вимоги

Плагін підтримує:
- WordPress 5.0+
- PHP 7.4+ (з підтримкою ZipArchive)
- ACF 5.0+
- Всі сучасні браузери

## Ліцензія

GPL v2 or later - вільно використовувати, змінювати та розповсюджувати.

## Історія версій

### **1.3.1** - Січень 2026
- 🐛 **ВИПРАВЛЕНО:** Баг з подвійною вставкою контенту (тепер значення замінюються, а не додаються)
- ✨ **ПОКРАЩЕНО:** Рекурсивний збір медіа файлів з repeater та вкладених полів
- ✨ **ПОКРАЩЕНО:** Функція експорту тепер правильно обробляє відео та інші типи файлів
- ✨ **ПОКРАЩЕНО:** Функція імпорту з кращою обробкою дублікатів
- ✨ **ПОКРАЩЕНО:** Маппінг ID зображень після імпорту для repeater та flexible content
- ✨ **ПОКРАЩЕНО:** Збереження метаданих (caption, alt, description) при імпорті
- 🔧 **ОПТИМІЗОВАНО:** Видалення дублікатів при експорті медіа файлів
- 🔧 **ОПТИМІЗОВАНО:** Кращий пошук існуючих файлів в медіа-бібліотеці
- 🔧 **ОПТИМІЗОВАНО:** Уніфіковане застосування значень до полів в repeater

### **1.3.0** - Листопад 2025
- ✨ **НОВЕ:** Сторінка налаштувань плагіну
- ✨ **НОВЕ:** Налаштовуваний режим вставки для repeater (додавання/заміна)
- ✨ **НОВЕ:** Міжсайтове перенесення зображень через ZIP
- ✨ **НОВЕ:** Розумне визначення дублікатів зображень
- ✨ **НОВЕ:** Експорт зображень з автоматичним завантаженням ZIP
- ✨ **НОВЕ:** Імпорт зображень з вибором файлу
- ✨ **НОВЕ:** Система маппінгу ID для збереження зв'язків
- 🔧 **ПОКРАЩЕННЯ:** Логіка вставки в repeater тепер враховує налаштування
- 🔧 **ПОКРАЩЕННЯ:** Кращі повідомлення про помилки
- 🔧 **ПОКРАЩЕННЯ:** Оновлені переклади з новими рядками
- 🔧 **ПОКРАЩЕННЯ:** Інтуїтивніші іконки кнопок

### **1.2.1** - Жовтень 2025
- Зміна slug та назви на copy-paste-tools-for-acf

### **1.2.0** - Жовтень 2025
- Додано підтримку інтернаціоналізації (i18n)
- Додано українські та англійські переклади
- Покращена локалізація всіх елементів інтерфейсу
- Підвищена доступність з proper text domains
- Оновлена структура плагіна для стандартів WordPress.org

### **1.1.0**
- Додано підтримку копіювання та вставки медіа полів
- Покращена обробка вкладених repeater полів
- Додано міжсайтове копіювання/вставку
- Покращена валідація та обробка помилок
- Виправлено візуальне оновлення медіа полів після вставки
- Додано режим часткового копіювання (без медіа)
- Покращена маніпуляція DOM для кращої сумісності

### **1.0.0**
- Перший реліз з повною функціональністю копіювання/вставки ACF блоків
