dwindown
1573bff7b3
feat: Card-based email system implementation
...
## ✅ Core Card System Complete!
### base.html Template
- ✅ Single, theme-agnostic template
- ✅ Card system CSS (default, highlight, info, warning, success, bg)
- ✅ Customizable header (logo/text)
- ✅ Customizable footer + social icons
- ✅ Customizable body background
- ✅ Mobile responsive
- ✅ Email client compatible (Outlook, Gmail, etc.)
### EmailRenderer.php - Card Parser
- ✅ `parse_cards()` - Parses [card]...[/card] syntax
- ✅ `parse_card_attributes()` - Extracts type and bg attributes
- ✅ `render_card()` - Renders card HTML
- ✅ `render_card_spacing()` - 24px spacing between cards
- ✅ `render_html()` - Email customization support
- ✅ `get_social_icon_url()` - Social media icons
### Card Types Supported
```
[card] → Default white card
[card type="highlight"] → Purple gradient card
[card type="info"] → Blue info card
[card type="warning"] → Yellow warning card
[card type="success"] → Green success card
[card bg="https://..."] → Background image card
```
### Email Customization
- ✅ Header: Logo or text
- ✅ Body background color
- ✅ Footer text
- ✅ Social media links (Facebook, Instagram, Twitter, LinkedIn)
- ✅ Stored in `woonoow_notification_settings[email_appearance]`
### Default Templates Updated
- ✅ order_placed_email - Multi-card layout
- ✅ order_processing_email - Success card + summary
- ✅ Other templates ready to update
---
**Architecture:**
```
Content with [card] tags
↓
parse_cards()
↓
render_card() × N
↓
base.html template
↓
Beautiful HTML email! 🎨
```
**Next:** Settings UI + Live Preview 🚀
2025-11-12 23:14:00 +07:00
dwindown
c8adb9e924
feat: Integrate WooCommerce email templates
...
## ✅ Issue #4 : WooCommerce Template Integration
**TemplateProvider.php:**
- ✅ Added `get_wc_email_template()` method
- ✅ Loads actual WooCommerce email subjects
- ✅ Falls back to custom defaults if WC not available
- ✅ Maps WooNooW events to WC email classes:
- order_placed → WC_Email_New_Order
- order_processing → WC_Email_Customer_Processing_Order
- order_completed → WC_Email_Customer_Completed_Order
- order_cancelled → WC_Email_Cancelled_Order
- order_refunded → WC_Email_Customer_Refunded_Order
- new_customer → WC_Email_Customer_New_Account
- customer_note → WC_Email_Customer_Note
### How It Works
1. On template load, checks if WooCommerce is active
2. Loads WC email objects via `WC()->mailer()->get_emails()`
3. Extracts subject, heading, enabled status
4. Uses WC subject as default, falls back to custom if not available
5. Body remains custom (WC templates are HTML, we use plain text)
### Benefits
- ✅ Consistent with WooCommerce email settings
- ✅ Respects store owner customizations
- ✅ Automatic updates when WC emails change
- ✅ Graceful fallback if WC not available
---
**Result:** Templates now load from WooCommerce! 🎉
2025-11-11 21:06:56 +07:00
dwindown
97e76a837b
feat: Add template editor and push notifications infrastructure
...
## ✅ Template Editor + Push Notifications
### Backend (PHP)
**1. TemplateProvider** (`includes/Core/Notifications/TemplateProvider.php`)
- Manages notification templates in wp_options
- Default templates for all events x channels
- Variable system (order, product, customer, store)
- Template CRUD operations
- Variable replacement engine
**2. PushNotificationHandler** (`includes/Core/Notifications/PushNotificationHandler.php`)
- VAPID keys generation and storage
- Push subscription management
- Queue system for push notifications
- User-specific subscriptions
- Service worker integration ready
**3. NotificationsController** - Extended with:
- GET /notifications/templates - List all templates
- GET /notifications/templates/:eventId/:channelId - Get template
- POST /notifications/templates - Save template
- DELETE /notifications/templates/:eventId/:channelId - Reset to default
- GET /notifications/push/vapid-key - Get VAPID public key
- POST /notifications/push/subscribe - Subscribe to push
- POST /notifications/push/unsubscribe - Unsubscribe
**4. Push channel added to built-in channels**
### Frontend (React)
**1. TemplateEditor Component** (`TemplateEditor.tsx`)
- Modal dialog for editing templates
- Subject + Body text editors
- Variable insertion with dropdown
- Click-to-insert variables
- Live preview
- Save and reset to default
- Per event + channel customization
**2. Templates Page** - Completely rewritten:
- Lists all events x channels
- Shows "Custom" badge for customized templates
- Edit button opens template editor
- Fetches templates from API
- Variable reference guide
- Organized by channel
### Key Features
✅ **Simple Text Editor** (not HTML builder)
- Subject line
- Body text with variables
- Variable picker
- Preview mode
✅ **Variable System**
- Order variables: {order_number}, {order_total}, etc.
- Customer variables: {customer_name}, {customer_email}, etc.
- Product variables: {product_name}, {stock_quantity}, etc.
- Store variables: {store_name}, {store_url}, etc.
- Click to insert at cursor position
✅ **Push Notifications Ready**
- VAPID key generation
- Subscription management
- Queue system
- PWA integration ready
- Built-in channel (alongside email)
✅ **Template Management**
- Default templates for all events
- Per-event, per-channel customization
- Reset to default functionality
- Custom badge indicator
### Default Templates Included
**Email:**
- Order Placed, Processing, Completed, Cancelled, Refunded
- Low Stock, Out of Stock
- New Customer, Customer Note
**Push:**
- Order Placed, Processing, Completed
- Low Stock Alert
### Next Steps
1. ✅ Service worker for push notifications
2. ✅ Push subscription UI in Channels page
3. ✅ Test push notifications
4. ✅ Addon integration examples
---
**Ready for testing!** 🚀
2025-11-11 13:09:33 +07:00