This commit is contained in:
Tomáš Dvořák
2025-10-16 13:32:05 +02:00
commit 12cba639b9
663 changed files with 168914 additions and 0 deletions
+335
View File
@@ -0,0 +1,335 @@
# Split Navigation Management System
## 🎯 Overview
The navigation system now supports **separate management** for:
1. **Webová navigace** (Frontend) - Public website menu
2. **Admin panel** - Admin sidebar navigation
3. **Sociální sítě** - Social media links
## ✨ Key Features
### Frontend Navigation
- **Dynamic menu** on public website
- Supports dropdown menus with sub-items
- Mobile-responsive
- Hover menus on desktop
- Customizable ordering
### Admin Panel Navigation
- **Manage sidebar** menu in admin interface
- **Preset admin pages** - Quick selection
- **Custom links** - Add external tools (Webmail, etc.)
- **Categories** - Group items with dropdown
- **Hide unused sections** - Keep it clean
- **Reorder items** - Prioritize your workflow
### Social Media Links
- Add/remove social platforms
- Customizable ordering
- Show/hide toggle
- Supports: Facebook, Instagram, YouTube, Twitter, TikTok, LinkedIn, Discord, Twitch
## 📍 Quick Access
**Admin Panel Location:** `/admin`**Navigace** (in sidebar under "Nastavení")
**Quick Search:** Press `Ctrl+K` in admin and type "navigace"
## 🚀 Getting Started
### 1. Frontend Navigation Setup
1. Go to `/admin/navigace`
2. Click tab **"Webová navigace"**
3. Click **"Přidat hlavní položku"**
4. Select:
- **Type:** Page (for existing pages) or External (for outside links)
- **Page:** Choose from dropdown (Home, Blog, Calendar, etc.)
- **Visible:** Toggle on/off
5. Use up/down arrows to reorder
6. For dropdown menus:
- Set type to "Dropdown"
- After saving, click "Přidat podpoložku" to add children
**Example:** Create "Teams" dropdown with sub-pages
```
Main Item:
- Label: Týmy
- Type: Dropdown
- Visible: Yes
Sub-items (click "Přidat podpoložku"):
- A-tým → /hraci
- Mládež → /mladez
- Trenéři → /treneri
```
### 2. Admin Panel Navigation Setup
1. Go to `/admin/navigace`
2. Click tab **"Admin panel"**
3. Click **"Přidat položku do admin panelu"**
4. Choose from preset admin pages OR create custom link:
**Preset Pages:**
- Nástěnka, Analytika, Týmy, Zápasy, etc.
- Automatically sets correct URL
**Custom External Link (e.g., Webmail):**
```
Label: Webmail
Type: Externí odkaz
URL: https://webmail.yourclub.com
Target: _blank (new window)
```
**Create Category:**
```
Main Item:
- Label: Obsah
- Type: Kategorie (dropdown)
Sub-items:
- Články → /admin/clanky
- Videa → /admin/videa
- Galerie → /admin/galerie
```
### 3. Social Media Links
1. Go to `/admin/navigace`
2. Click tab **"Sociální sítě"**
3. Click **"Přidat sociální síť"**
4. Select platform and enter URL
5. Reorder with up/down arrows
## 🎨 Admin Panel Customization Examples
### Hide Unused Sections
Don't use Teams feature? Just toggle **visibility off** - item stays in database but hidden from sidebar.
### Add External Tools
```yaml
Webmail:
Label: "Webmail"
Type: External
URL: "https://webmail.example.com"
Target: _blank
Google Analytics:
Label: "Analytics Dashboard"
Type: External
URL: "https://analytics.google.com/..."
Target: _blank
```
### Organize by Category
```
📊 Dashboard
- Nástěnka
- Analytika
📝 Content Management
- Články
- Videa
- Galerie
⚙️ Settings
- Nastavení
- Uživatelé
- Navigace
🔗 External Tools
- Webmail
- Google Drive
```
### Custom Names
Rename default pages:
```
"Články" → "News & Updates"
"Zápasy" → "Match Center"
"Týmy" → "Squad Management"
```
## 📋 Available Preset Admin Pages
### Main
- **Nástěnka** - `/admin` - Dashboard overview
- **Analytika** - `/admin/analytika` - Analytics & stats
### Content
- **Týmy** - `/admin/tymy` - Team management
- **Zápasy** - `/admin/zapasy` - Match management
- **Aktivity** - `/admin/aktivity` - Events & activities
- **Hráči** - `/admin/hraci` - Player roster
- **Články** - `/admin/clanky` - Articles/Blog posts
- **Videa** - `/admin/videa` - Video management
- **Galerie** - `/admin/galerie` - Photo gallery
### Communication
- **Zprávy** - `/admin/zpravy` - Messages/Contact forms
- **Kontakty** - `/admin/kontakty` - Contact management
- **Zpravodaj** - `/admin/newsletter` - Newsletter campaigns
### Settings
- **Navigace** - `/admin/navigace` - Navigation management
- **Uživatelé** - `/admin/uzivatele` - User accounts
- **Nastavení** - `/admin/nastaveni` - General settings
- **Soubory** - `/admin/soubory` - File manager
- **Prefetch** - `/admin/prefetch` - Cache management
- **Dokumentace** - `/admin/docs` - Help docs
## 🔧 Technical Details
### Navigation Item Properties
| Field | Frontend Nav | Admin Nav | Description |
|-------|-------------|-----------|-------------|
| **label** | ✅ | ✅ | Display name |
| **type** | page, internal, external, dropdown | internal, external, dropdown | Item type |
| **page_type** | Frontend pages | Admin pages | Preset page identifier |
| **url** | Auto or custom | Auto or custom | Link URL |
| **visible** | ✅ | ✅ | Show/hide toggle |
| **display_order** | ✅ | ✅ | Sort order |
| **parent_id** | ✅ | ✅ | For nested items |
| **target** | _self, _blank | _self, _blank | Link target |
| **requires_admin** | false | true | Marks as admin nav |
### Database Separation
Navigation items are **not stored in separate tables**. Instead:
- Items with `requires_admin = false` → Frontend navigation
- Items with `requires_admin = true` → Admin panel navigation
This allows:
- ✅ Unified management interface
- ✅ Shared functionality (reorder, visibility, etc.)
- ✅ Easy migration between frontend/admin
- ✅ Consistent API endpoints
### API Endpoints
Same endpoints handle both types:
```
GET /api/v1/navigation # Public (requires_admin=false only)
GET /api/v1/admin/navigation # Admin (all items)
POST /api/v1/admin/navigation
PUT /api/v1/admin/navigation/:id
DELETE /api/v1/admin/navigation/:id
POST /api/v1/admin/navigation/reorder
```
## 💡 Best Practices
### Frontend Navigation
- **Keep it simple** - Max 7-9 top items
- **Logical grouping** - Use dropdowns for related pages
- **Clear labels** - Users should know where they're going
- **Mobile-first** - Test on mobile devices
### Admin Panel
- **Hide unused** - Don't delete, just hide
- **Categorize** - Group related pages
- **Custom tools** - Add frequently-used external links
- **Prioritize** - Most-used items at top
### General
- **Test changes** - Preview before making live
- **Document custom** - Note any custom URLs
- **Regular review** - Remove unused items periodically
## 🐛 Troubleshooting
### Admin panel items not showing
- Check `requires_admin` is set to `true`
- Verify visibility is enabled
- Check browser console for errors
### Frontend navigation not updating
- Changes require page refresh
- Check API endpoint returns data
- Verify `requires_admin` is `false`
### Dropdown not working
- Parent must have type="dropdown"
- Children must have parent_id set
- Children must be visible
### Custom URL not working
- Ensure URL starts with `/` for internal
- Use full `https://` for external
- Check target setting for external links
## 🎓 Examples & Use Cases
### Use Case 1: Multi-Team Club
```
Frontend:
├── Domů
├── Týmy (dropdown)
│ ├── A-tým
│ ├── B-tým
│ ├── Dorost
│ └── Přípravka
├── Zápasy
└── Kontakt
Admin:
├── Dashboard
├── Content (dropdown)
│ ├── Články
│ ├── Zápasy
│ └── Galerie
└── Nastavení
```
### Use Case 2: External Tools Integration
```
Admin Panel:
├── Dashboard
├── Content Management
├── Settings
├── ─────────────
├── 🔗 External Tools
│ ├── Webmail
│ ├── Google Drive
│ ├── Canva Design
│ └── Social Scheduler
```
### Use Case 3: Minimal Setup
Hide everything except:
```
Frontend:
- Domů
- Zápasy
- Kontakt
Admin:
- Nástěnka
- Zápasy
- Nastavení
```
## 📚 Related Documentation
- **ENHANCED_NAVIGATION_SYSTEM.md** - Full technical documentation
- **NAVIGATION_QUICK_START.md** - Quick reference guide
- **Admin Search** - `Ctrl+K` → Type "navigace"
## 🆘 Support
Having issues?
1. Check this guide first
2. Review browser console for errors
3. Verify database migrations are current
4. Check API responses in Network tab
---
**Version:** 2.0
**Feature:** Split Navigation Management
**Status:** ✅ Production Ready
**Date:** October 2025