mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 10:42:57 +00:00
219 lines
5.7 KiB
Markdown
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í
|