mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 10:42:57 +00:00
393 lines
8.9 KiB
Markdown
393 lines
8.9 KiB
Markdown
# Navigation Management - Quick Start Guide
|
|
|
|
## 🚀 Get Started in 5 Minutes
|
|
|
|
### Step 1: Run the Migration (30 seconds)
|
|
```bash
|
|
# From project root directory
|
|
make migrate-up
|
|
|
|
# Or if you don't have make:
|
|
cd database/migrations
|
|
goose postgres "your-connection-string" up
|
|
```
|
|
|
|
**What this does:**
|
|
- Creates `navigation_items` table
|
|
- Creates `social_links` table
|
|
- Seeds 12 default navigation items
|
|
- Adds settings columns for navigation
|
|
|
|
### Step 2: Restart Your Application (1 minute)
|
|
```bash
|
|
# Terminal 1 - Backend
|
|
go run main.go
|
|
|
|
# Terminal 2 - Frontend
|
|
cd frontend
|
|
npm start
|
|
```
|
|
|
|
### Step 3: Access Admin Panel (30 seconds)
|
|
1. Open browser to `http://localhost:3000`
|
|
2. Login as admin
|
|
3. Navigate to `/admin/navigace` or click "Správa navigace" in admin sidebar
|
|
|
|
### Step 4: Customize Your Navigation (3 minutes)
|
|
|
|
#### Quick Tasks:
|
|
|
|
**A. Reorder Items**
|
|
- Use ↑ ↓ buttons to move items up or down
|
|
- Changes save automatically
|
|
|
|
**B. Hide Unwanted Items**
|
|
- Click edit icon (✏️) on any item
|
|
- Toggle "Viditelné" switch off
|
|
- Click "Uložit"
|
|
|
|
**C. Add Social Media**
|
|
1. Switch to "Sociální sítě" tab
|
|
2. Click "Přidat sociální síť"
|
|
3. Select platform (e.g., Facebook)
|
|
4. Paste your profile URL
|
|
5. Click "Uložit"
|
|
|
|
**D. Create Custom Link**
|
|
1. Click "Přidat položku"
|
|
2. Enter label (e.g., "Fanshop")
|
|
3. Select Type: "Externí odkaz"
|
|
4. Enter URL (e.g., `https://shop.example.com`)
|
|
5. Select target: "Nové okno" (_blank)
|
|
6. Click "Uložit"
|
|
|
|
**E. Create Dropdown Menu**
|
|
1. Create parent: Type "Dropdown", Label "Média"
|
|
2. Create children:
|
|
- Type "Stránka", Page "videos", Label "Videa"
|
|
- Type "Stránka", Page "gallery", Label "Fotogalerie"
|
|
- Type "Externí odkaz", URL to YouTube channel
|
|
3. Children appear as dropdown on hover
|
|
|
|
## 📋 Common Scenarios
|
|
|
|
### Scenario 1: Add Fanshop Link
|
|
```
|
|
Label: Fanshop
|
|
Type: Externí odkaz
|
|
URL: https://yourshop.com
|
|
Target: _blank (Nové okno)
|
|
Visible: Yes
|
|
```
|
|
|
|
### Scenario 2: Hide "Tabulky" Temporarily
|
|
```
|
|
1. Find "Tabulky" in list
|
|
2. Click edit icon
|
|
3. Toggle "Viditelné" to OFF
|
|
4. Save
|
|
```
|
|
|
|
### Scenario 3: Add All Social Media
|
|
```
|
|
Facebook:
|
|
- Platform: facebook
|
|
- URL: https://www.facebook.com/yourpage
|
|
|
|
Instagram:
|
|
- Platform: instagram
|
|
- URL: https://www.instagram.com/yourhandle
|
|
|
|
YouTube:
|
|
- Platform: youtube
|
|
- URL: https://www.youtube.com/@yourchannel
|
|
```
|
|
|
|
### Scenario 4: Create "O nás" Dropdown
|
|
```
|
|
Parent Item:
|
|
- Label: O nás
|
|
- Type: dropdown
|
|
- Visible: Yes
|
|
|
|
Child 1:
|
|
- Label: O klubu
|
|
- Type: page
|
|
- Page Type: about
|
|
- Parent: (select "O nás")
|
|
|
|
Child 2:
|
|
- Label: Historie
|
|
- Type: internal
|
|
- URL: /historie
|
|
- Parent: (select "O nás")
|
|
|
|
Child 3:
|
|
- Label: Kontakt
|
|
- Type: page
|
|
- Page Type: contact
|
|
- Parent: (select "O nás")
|
|
```
|
|
|
|
## 🎯 Navigation Types Explained
|
|
|
|
### Page Type (Best for System Pages)
|
|
**Use when:** Linking to built-in pages like Home, Calendar, Matches
|
|
|
|
**Example:**
|
|
- Label: "Zápasy"
|
|
- Type: page
|
|
- Page Type: matches
|
|
- ✅ Auto-maps to `/zapasy`
|
|
|
|
### Internal Type (For Custom Pages)
|
|
**Use when:** Linking to custom pages you created
|
|
|
|
**Example:**
|
|
- Label: "Historie"
|
|
- Type: internal
|
|
- URL: /historie
|
|
- ✅ Stays within your app
|
|
|
|
### External Type (For Outside Links)
|
|
**Use when:** Linking to external websites
|
|
|
|
**Example:**
|
|
- Label: "Vstupenky"
|
|
- Type: external
|
|
- URL: https://tickets.example.com
|
|
- Target: _blank
|
|
- ✅ Opens in new tab
|
|
|
|
### Dropdown Type (For Nested Menus)
|
|
**Use when:** Grouping related links
|
|
|
|
**Example:**
|
|
- Label: "Média"
|
|
- Type: dropdown
|
|
- ✅ Shows children on hover
|
|
|
|
## 🎨 Page Type Options Reference
|
|
|
|
| Page Type | Label | URL |
|
|
|-----------|-------|-----|
|
|
| home | Domů | / |
|
|
| about | O klubu | /o-klubu |
|
|
| calendar | Kalendář | /kalendar |
|
|
| matches | Zápasy | /zapasy |
|
|
| activities | Aktivity | /aktivity |
|
|
| players | Hráči | /hraci |
|
|
| tables | Tabulky | /tabulky |
|
|
| blog | Články | /blog |
|
|
| videos | Videa | /videa |
|
|
| gallery | Fotogalerie | /galerie |
|
|
| sponsors | Sponzoři | /sponzori |
|
|
| contact | Kontakt | /kontakt |
|
|
| search | Hledat | /hledat |
|
|
|
|
## 🌐 Social Media Platforms
|
|
|
|
### Supported Platforms:
|
|
- ✅ Facebook
|
|
- ✅ Instagram
|
|
- ✅ YouTube
|
|
- ✅ Twitter
|
|
- ✅ TikTok
|
|
- ✅ LinkedIn
|
|
- ✅ Discord
|
|
- ✅ Twitch
|
|
|
|
### URL Format Tips:
|
|
```
|
|
✅ Good:
|
|
https://www.facebook.com/yourpage
|
|
https://www.instagram.com/yourhandle
|
|
https://www.youtube.com/@yourchannel
|
|
|
|
✅ Also works:
|
|
facebook.com/yourpage
|
|
@yourhandle
|
|
yourhandle
|
|
|
|
❌ Avoid:
|
|
facebook.com (missing page)
|
|
www.facebook.com (missing protocol)
|
|
```
|
|
|
|
## 🔧 Pro Tips
|
|
|
|
### 1. Optimal Navigation Size
|
|
- **Desktop**: 8-12 items (including dropdowns)
|
|
- **Mobile**: Consider grouping with dropdowns if >10 items
|
|
- **Dropdown children**: Max 5-8 per parent
|
|
|
|
### 2. Order Best Practices
|
|
```
|
|
Recommended order:
|
|
1. Domů (Home) - Always first
|
|
2. O klubu (About)
|
|
3. Kalendář/Zápasy (Events)
|
|
4. Content (Články, Videa, Galerie)
|
|
5. Team (Hráči, Tabulky)
|
|
6. Support (Sponzoři, Kontakt)
|
|
```
|
|
|
|
### 3. Social Media Order
|
|
```
|
|
By usage:
|
|
1. Facebook (most popular in Czech Republic)
|
|
2. Instagram (visual content)
|
|
3. YouTube (video content)
|
|
4. Twitter/TikTok (engagement)
|
|
```
|
|
|
|
### 4. Mobile Menu Considerations
|
|
- All items show in mobile drawer
|
|
- Dropdowns become expandable sections
|
|
- Social links appear at bottom
|
|
- Keep labels short (max 15 characters)
|
|
|
|
### 5. External Links
|
|
- Always use https:// for security
|
|
- Set target="_blank" to open in new window
|
|
- Consider adding "Fanshop", "Vstupenky", "Partner sites"
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Problem: Changes Not Visible
|
|
**Solution:**
|
|
1. Hard refresh browser (Ctrl+Shift+R)
|
|
2. Check "Viditelné" toggle is ON
|
|
3. Verify backend is running
|
|
4. Check browser console for errors
|
|
|
|
### Problem: Can't Access Admin Panel
|
|
**Solution:**
|
|
1. Verify you're logged in as admin
|
|
2. Check URL is correct: `/admin/navigace`
|
|
3. Clear browser cache and cookies
|
|
4. Try different browser
|
|
|
|
### Problem: Social Icons Not Showing
|
|
**Solution:**
|
|
1. Verify URL format is correct
|
|
2. Check visibility toggle is ON
|
|
3. Make sure platform name matches list
|
|
4. Clear frontend cache
|
|
|
|
### Problem: Dropdown Not Working
|
|
**Solution:**
|
|
1. Verify parent type is "dropdown"
|
|
2. Check children have parent_id set correctly
|
|
3. Ensure both parent and children are visible
|
|
4. Test hover behavior (not click on desktop)
|
|
|
|
### Problem: Migration Error
|
|
**Solution:**
|
|
```bash
|
|
# Check if tables already exist
|
|
psql -d your_database -c "\dt navigation*"
|
|
|
|
# If they exist, you can skip or:
|
|
# 1. Drop tables manually
|
|
# 2. Run migration again
|
|
|
|
# Or rollback and re-run:
|
|
goose postgres "connection-string" down
|
|
goose postgres "connection-string" up
|
|
```
|
|
|
|
## 📊 Testing Checklist
|
|
|
|
After setup, verify these work:
|
|
|
|
- [ ] Admin page loads at `/admin/navigace`
|
|
- [ ] Can create new navigation item
|
|
- [ ] Can edit existing item
|
|
- [ ] Can delete item (shows confirmation)
|
|
- [ ] Can reorder with up/down buttons
|
|
- [ ] Can toggle visibility
|
|
- [ ] Navigation appears on frontend
|
|
- [ ] Dropdowns work on hover
|
|
- [ ] Mobile menu works properly
|
|
- [ ] Social links show in top bar
|
|
- [ ] External links open in new tab
|
|
- [ ] Active page is highlighted
|
|
|
|
## 🎓 Advanced Features
|
|
|
|
### Custom CSS Classes
|
|
Add custom styling to specific items:
|
|
```
|
|
1. Edit navigation item
|
|
2. Add CSS class: "nav-highlighted"
|
|
3. Create CSS in your theme:
|
|
.nav-highlighted {
|
|
background: var(--club-primary);
|
|
color: white;
|
|
font-weight: bold;
|
|
}
|
|
```
|
|
|
|
### Authentication-Based Navigation
|
|
Show items only to logged-in users:
|
|
```
|
|
1. Edit navigation item
|
|
2. Toggle "requires_auth" to true
|
|
3. Item only shows when user is logged in
|
|
```
|
|
|
|
### Admin-Only Items
|
|
Show items only to admins:
|
|
```
|
|
1. Edit navigation item
|
|
2. Toggle "requires_admin" to true
|
|
3. Item only shows for admin users
|
|
```
|
|
|
|
## 📞 Need Help?
|
|
|
|
### Resources:
|
|
1. **Full Documentation**: See `NAVIGATION_SYSTEM.md`
|
|
2. **Implementation Details**: See `NAVIGATION_IMPLEMENTATION_SUMMARY.md`
|
|
3. **API Reference**: Check controller comments in code
|
|
4. **Code Examples**: Look at `NavigationAdminPage.tsx`
|
|
|
|
### Common Questions:
|
|
|
|
**Q: Can I have multi-level dropdowns?**
|
|
A: Currently supports one level (parent → children). Multi-level coming in future update.
|
|
|
|
**Q: How many navigation items can I have?**
|
|
A: Unlimited, but 8-12 is optimal for UX.
|
|
|
|
**Q: Can I import/export navigation?**
|
|
A: Not yet, but you can backup via database dump.
|
|
|
|
**Q: Will this work with existing navigation?**
|
|
A: Yes! Existing Navbar component already supports all features. The old settings-based custom_nav is still compatible.
|
|
|
|
**Q: Can I preview before publishing?**
|
|
A: Use visibility toggle to test. Hidden items are only visible to admins in the list.
|
|
|
|
## ✨ Success!
|
|
|
|
You're now ready to manage your navigation like a pro! 🎉
|
|
|
|
**What you can do:**
|
|
- ✅ Unlimited custom navigation items
|
|
- ✅ Dropdown menus for better organization
|
|
- ✅ Social media integration
|
|
- ✅ Reorder anything with a click
|
|
- ✅ Show/hide items dynamically
|
|
- ✅ Mix internal and external links
|
|
- ✅ Mobile-responsive automatically
|
|
|
|
**Next steps:**
|
|
1. Customize your navigation structure
|
|
2. Add your social media profiles
|
|
3. Test on mobile devices
|
|
4. Share feedback!
|
|
|
|
Happy navigating! 🚀
|