Files
MyClub/DOCS/MYUIBRIX_PREVIEW_MODE.md
Tomáš Dvořák 12cba639b9 upload
2025-10-16 13:32:05 +02:00

219 lines
5.7 KiB
Markdown

# MyUIbrix - Režim náhledu / Preview Mode
## 🔒 Koncept izolace náhledu
MyUIbrix nyní odděluje **režim úprav (náhled)** od **produkčního zobrazení**.
---
## 🎯 Jak to funguje
### **Před uložením:**
- ✅ Změny vidíte **pouze VY** (admin v režimu úprav)
- ❌ Běžní návštěvníci webu změny **NEVIDÍ**
- 🔒 Preview mode je izolován od produkce
### **Po kliknutí "Publikovat":**
- ✅ Změny se uloží do databáze
- ✅ Stránka se automaticky obnoví
- ✅ Změny jsou **viditelné všem** návštěvníkům
- ✅ Produkční web používá nové nastavení
---
## 🛠️ Technická implementace
### 1. **Preview Events (previewMode flag)**
Všechny události pro živý náhled nyní obsahují `previewMode: true`:
```typescript
window.dispatchEvent(new CustomEvent('myuibrix-change', {
detail: {
elementName,
variant,
visible,
previewMode: true // ← Klíčový příznak!
}
}));
```
**Události jsou odesílány POUZE když:**
- `isEditing === true` (editor je aktivní)
- Admin má zapnutý režim úprav
### 2. **Filtrování v hooks**
Hook `usePageElementConfig` ignoruje preview události pokud nejsou v preview mode:
```typescript
const handleMyUIbrixChange = ((event: CustomEvent) => {
const { elementName, variant, visible, previewMode } = event.detail;
// Aplikuj změny POUZE v preview mode
if (previewMode) {
setConfigs(prev => ({ ...prev, [elementName]: variant }));
setVisibility(prev => ({ ...prev, [elementName]: visible }));
}
}) as EventListener;
```
### 3. **Produkční reload po uložení**
Po úspěšném uložení se stránka automaticky obnoví:
```typescript
await batchUpdatePageElementConfigs(configsToSave);
toast({
title: 'Změny úspěšně uloženy!',
description: 'Změny jsou nyní viditelné na produkci.',
status: 'success',
});
// Reload aby se načetla nová konfigurace z databáze
setTimeout(() => {
window.location.reload();
}, 1500);
```
---
## 📋 Workflow pro administrátora
### Krok 1: Aktivace editoru
```
1. Přejděte na homepage
2. Klikněte na fialové tlačítko ✏️ (pravý dolní roh)
NEBO použijte: /?myuibrix=edit
```
### Krok 2: Úpravy (Preview Mode)
```
✓ Vidíte horní lištu s textem "🔒 REŽIM NÁHLEDU"
✓ Pod tím text: "Změny vidíte pouze vy"
✓ Klikejte na elementy, měňte varianty
✓ Změny se zobrazují OKAMŽITĚ, ale jen VÁM
```
### Krok 3: Publikování
```
1. Klikněte "Publikovat" v horní liště
2. Zobrazí se: "Změny úspěšně uloženy!"
3. Stránka se automaticky obnoví (1.5s)
4. ✅ Změny jsou nyní viditelné všem
```
---
## 🔍 Co vidí různí uživatelé
| Uživatel | Co vidí během editace | Co vidí po uložení |
|----------|----------------------|-------------------|
| **Admin (editor zapnutý)** | ✅ Preview změn v reálném čase | ✅ Produkční verze po reloadu |
| **Admin (editor vypnutý)** | ❌ Pouze produkční verze | ✅ Produkční verze |
| **Běžný návštěvník** | ❌ Pouze produkční verze | ✅ Produkční verze |
---
## 🎨 Vizuální indikátory
### V režimu úprav uvidíte:
**1. Horní lišta:**
```
⚽ ELEMENTOR | 🔒 REŽIM NÁHLEDU | Změny vidíte pouze vy
```
**2. Oranžový badge:**
- Bliká (animation pulse)
- Text: "🔒 REŽIM NÁHLEDU"
- Připomíná, že jste v preview mode
**3. Modrá ohraničení:**
- Elementy při najetí myší
- Vybraný element má modrý overlay
---
## 📁 Změněné soubory
### Frontend:
1. **`frontend/src/components/editor/MyUIbrixEditor.tsx`**
- Přidán `previewMode: true` do všech událostí
- Události se odesílají pouze když `isEditing === true`
- Přidán vizuální indikátor "REŽIM NÁHLEDU"
- Reload stránky po uložení
2. **`frontend/src/hooks/usePageElementConfig.ts`**
- Filtrování událostí podle `previewMode` příznaku
- Ignoruje preview události v produkci
---
## ⚠️ Důležité poznámky
### ✅ Výhody:
- Bezpečné testování změn před publikací
- Žádné nechtěné změny na produkci
- Jasné oddělení náhledu a produkce
- Lepší UX pro administrátory
### 🔄 Reload po uložení:
- **Důvod:** Zajistí, že se načte nová konfigurace z databáze
- **Trvání:** 1.5 sekundy delay (čas na zobrazení toastu)
- **Alternativa:** Mohli bychom použít SSE/WebSocket pro live reload bez refresh
### 🎯 Best Practices:
1. **Vždy testujte změny** před publikováním
2. **Klikněte na různé elementy** abyste viděli jak vypadají
3. **Zkontrolujte mobile view** pomocí viewport switcher
4. **Publikujte až když jste spokojeni** s výsledkem
---
## 🔧 Řešení problémů
### Problem: Změny se nezobrazují po uložení
**Řešení:**
- Zkontrolujte, že se stránka automaticky obnovila
- Pokud ne, manuálně obnovte (F5)
- Vyčistěte cache prohlížeče
### Problem: Vidím změny i když nejsem v editoru
**Řešení:**
- Ujistěte se, že jste ukončili režim úprav (ESC nebo ✕)
- Obnovte stránku pro reset
### Problem: Preview se nenahrává
**Řešení:**
- Zkontrolujte konzoli prohlížeče (F12)
- Ujistěte se, že backend běží
- Zkontrolujte endpoint: `/api/v1/page-elements?page_type=homepage`
---
## 🚀 Budoucí vylepšení
Možná rozšíření:
1. **Historii změn** - Undo/Redo funkce
2. **Verzování** - Ukládání verzí konfigurací
3. **Plánované publikování** - Nastavit čas pro auto-publikaci
4. **Multi-user preview** - Sdílení preview URL s jinými adminy
5. **A/B testování** - Testování více variant najednou
---
**Implementováno:** 14. října 2025
**Verze:** 2.0.0
**Status:** ✅ Production Ready
---
## 📞 Kontakt
Pokud máte otázky nebo návrhy na vylepšení:
- Otevřete issue na GitHubu
- Kontaktujte vývojový tým
- Přečtěte si `MYUIBRIX_IMPROVEMENTS.md` pro více informací