Dwindi Ramadhana
9b8fa7d0f9
fix: Navigation issues - newsletter menu, coupon routing, module toggle
...
Navigation Fixes:
1. Newsletter submenu now hidden when module disabled
- NavigationRegistry checks ModuleRegistry::is_enabled('newsletter')
- Menu updates dynamically based on module status
2. Module toggle now updates navigation in real-time
- Fixed toggle_module API to return success response (was returning error)
- Navigation cache flushes and rebuilds when module toggled
- Newsletter menu appears/disappears immediately after toggle
3. Coupon routes now activate Marketing menu (not Dashboard)
- Added special case in useActiveSection for /coupons paths
- Marketing menu stays active when viewing coupons
- Submenu shows correct Marketing items (Newsletter, Coupons)
4. Dashboard menu no longer always shows active
- Fixed by proper path matching in useActiveSection
- Only active when on dashboard routes
Files Modified (4):
- includes/Compat/NavigationRegistry.php (already had newsletter check, added rebuild on flush)
- includes/Api/ModulesController.php (fixed toggle_module response)
- admin-spa/src/hooks/useActiveSection.ts (added /coupons special case)
- admin-spa/dist/app.js (rebuilt)
All 4 navigation issues resolved!
2025-12-26 21:40:55 +07:00
dwindown
0e41d3ded5
fix: Login branding, submenu display, favicon standalone, notification strategy
...
## 1. Apply Logo to Standalone Login Screen ✅
**Issue:** Login page shows "WooNooW" text instead of brand logo
**Fix:**
- Fetch branding from `/store/settings` API
- Display logo image if available
- Fallback to store name text
- Show tagline below logo
- Use store name in footer
**Result:**
```tsx
{branding.logo ? (
<img src={branding.logo} alt={storeName} className="h-16" />
) : (
<h1>{branding.storeName}</h1>
)}
{branding.tagline && <p>{branding.tagline}</p>}
```
---
## 2. Fix Submenu Display Issue ✅
**Issue:**
- Click Settings → redirects to Store Details ✓
- Settings submenu shows correctly ✓
- Click other settings pages → Dashboard submenu appears ✗
**Root Cause:** `useActiveSection` hook didn't recognize `/settings` path
**Fix:**
```tsx
// Special case: /settings should match settings section
if (pathname === '/settings' || pathname.startsWith('/settings/')) {
const settingsNode = navTree.find(n => n.key === 'settings');
if (settingsNode) return settingsNode;
}
```
**Result:** Settings submenu now displays correctly on all settings pages
---
## 3. Apply Favicon in Standalone ✅
**Issue:** Favicon not showing in standalone mode (/admin)
**Root Cause:** Standalone doesn't call `wp_head()`, so Branding class hooks don't run
**Fix:** Added favicon directly to StandaloneAdmin.php
```php
$icon = get_option('woonoow_store_icon', '');
if (!empty($icon)) {
echo '<link rel="icon" href="' . esc_url($icon) . '">'
echo '<link rel="apple-touch-icon" href="' . esc_url($icon) . '">'
}
```
**Also:** Changed title to use store name dynamically
---
## 4. Notification Settings Strategy ✅
**Your Concern:** "We should not be optimistic the notification media is only email"
**Agreed!** Created comprehensive strategy document: `NOTIFICATION_STRATEGY.md`
### Architecture:
**Core (WooNooW):**
- Notification events system
- Email channel (built-in)
- Addon integration framework
- Settings UI with addon slots
**Addons:**
- WhatsApp
- Telegram
- SMS
- Discord
- Slack
- Push notifications
- etc.
### Settings Structure:
```
Notifications
├── Events (What to notify)
│ ├── Order Placed
│ │ ├── ✓ Email (to admin)
│ │ ├── ✓ WhatsApp (to customer) [addon]
│ │ └── ✗ Telegram [addon]
│ └── Low Stock Alert
│
├── Channels (How to notify)
│ ├── Email (Built-in) ✓
│ ├── WhatsApp [Addon]
│ ├── Telegram [Addon]
│ └── SMS [Addon]
│
└── Templates
├── Email Templates
└── Channel Templates [per addon]
```
### Integration Points:
```php
// Register channel
add_filter('woonoow_notification_channels', function($channels) {
$channels['whatsapp'] = [
'id' => 'whatsapp',
'label' => 'WhatsApp',
'icon' => 'message-circle',
];
return $channels;
});
// Send notification
add_action('woonoow_notification_send_whatsapp', function($event, $data) {
// Send WhatsApp message
}, 10, 2);
```
### Benefits:
- ✅ Extensible (any channel via addons)
- ✅ Flexible (multiple channels per event)
- ✅ No bloat (core = email only)
- ✅ Revenue opportunity (premium addons)
- ✅ Community friendly (free addons welcome)
---
## Summary
✅ Login screen shows brand logo + tagline
✅ Settings submenu displays correctly
✅ Favicon works in standalone mode
✅ Notification strategy documented (addon-based)
**Key Decision:** Notifications = Framework + Email core, everything else via addons
**Ready to implement notification system!**
2025-11-10 23:44:18 +07:00