# Template Source of Truth ## Single Source of Truth: `/includes/Email/DefaultTemplates.php` This file contains **clean markdown templates** without HTML tags inside shortcodes. ### Structure ```php namespace WooNooW\Email; class DefaultTemplates { public static function get_all_templates() { return [ 'customer' => [ 'order_placed' => '...', 'order_confirmed' => '...', 'order_shipped' => '...', 'order_completed' => '...', 'order_cancelled' => '...', 'payment_received' => '...', 'payment_failed' => '...', 'registered' => '...', 'vip_upgraded' => '...', ], 'staff' => [ 'order_placed' => '...', 'order_confirmed' => '...', 'order_shipped' => '...', 'order_completed' => '...', 'order_cancelled' => '...', 'payment_received' => '...', 'payment_failed' => '...', ], ]; } public static function get_default_subject($recipient, $event) { // Returns subject string } } ``` ### Template Format Templates use **clean markdown** inside `[card]` shortcodes: ```markdown [card type="hero"] ## Thank you for your order, {customer_name}! We've received your order and will begin processing it right away. [/card] [card] **Order Number:** #{order_number} **Order Date:** {order_date} **Order Total:** {order_total} [/card] [button url="{order_url}"]View Order Details[/button] ``` **NOT** HTML like this: ```html [card type="hero"]

Thank you for your order, {customer_name}!

We've received your order...

[/card] ``` ## How It's Used ### TemplateProvider.php `/includes/Core/Notifications/TemplateProvider.php` uses the Email templates: ```php use WooNooW\Email\DefaultTemplates as EmailDefaultTemplates; // Get all templates $allEmailTemplates = EmailDefaultTemplates::get_all_templates(); // Get specific template $body = $allEmailTemplates[$recipient_type][$template_name]; $subject = EmailDefaultTemplates::get_default_subject($recipient_type, $template_name); ``` ### Event ID Mapping API event IDs are mapped to template names: | API Event ID | Template Name | |-------------|---------------| | `order_processing` | `order_confirmed` | | `new_customer` | `registered` | | Others | Same name | ## Deprecated Files ### `/includes/Core/Notifications/DefaultEmailTemplates.php` ❌ **DO NOT USE** - This file contains old templates with HTML tags inside shortcodes. It's kept for backwards compatibility only and is marked as deprecated. ## Frontend Conversion When templates are loaded in the editor: 1. **Database** stores HTML (for backwards compatibility) 2. **converter.ts** converts HTML to clean markdown using `convertHtmlToMarkdown()` 3. **CodeEditor** displays clean markdown 4. **User edits** in markdown 5. **Saves** back as HTML (via blocks → HTML conversion) This ensures smooth editing experience while maintaining compatibility. ## Benefits ✅ **Clean markdown editing** - No HTML tags in markdown mode ✅ **Single source of truth** - One place to update templates ✅ **Better UX** - Markdown toolbar and syntax highlighting ✅ **Mobile-friendly** - Easy to type on any device ✅ **Maintainable** - Clear separation of concerns