docs: Add comprehensive settings tree implementation plan
This commit is contained in:
550
SETTINGS_TREE_PLAN.md
Normal file
550
SETTINGS_TREE_PLAN.md
Normal file
@@ -0,0 +1,550 @@
|
|||||||
|
# WooNooW Settings Tree - Implementation Plan
|
||||||
|
|
||||||
|
## 📋 Overview
|
||||||
|
|
||||||
|
This document defines the complete settings structure for WooNooW Admin SPA, including what needs to be built, priorities, and implementation approach.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Strategy: Option A - Everyday Use Dashboard
|
||||||
|
|
||||||
|
**Philosophy:**
|
||||||
|
- Focus on most-used settings (80/20 rule)
|
||||||
|
- Bridge to wp-admin for advanced/rarely-used features
|
||||||
|
- Extensible for 3rd party plugins
|
||||||
|
- Coexist with WooCommerce (no replacement)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌲 Settings Tree Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
Settings
|
||||||
|
├── 🔧 WooNooW (Plugin Settings)
|
||||||
|
│ └── /settings
|
||||||
|
│
|
||||||
|
├── 🏪 General (Store Settings)
|
||||||
|
│ └── /settings/general
|
||||||
|
│
|
||||||
|
├── 💳 Payments (Payment Gateways)
|
||||||
|
│ └── /settings/payments
|
||||||
|
│
|
||||||
|
├── 📦 Shipping (Zones & Methods)
|
||||||
|
│ └── /settings/shipping
|
||||||
|
│
|
||||||
|
├── 📦 Products (Inventory & Downloads)
|
||||||
|
│ └── /settings/products
|
||||||
|
│
|
||||||
|
├── 💰 Tax (Tax Rates & Classes)
|
||||||
|
│ └── /settings/tax
|
||||||
|
│
|
||||||
|
├── 👤 Accounts & Privacy
|
||||||
|
│ └── /settings/accounts
|
||||||
|
│
|
||||||
|
├── 📧 Emails (Templates & Settings)
|
||||||
|
│ └── /settings/emails
|
||||||
|
│
|
||||||
|
├── ⚙️ Advanced (Bridge to wp-admin)
|
||||||
|
│ └── /wp-admin/admin.php?page=wc-settings&tab=advanced
|
||||||
|
│
|
||||||
|
├── 🔌 Integration (Bridge to wp-admin)
|
||||||
|
│ └── /wp-admin/admin.php?page=wc-settings&tab=integration
|
||||||
|
│
|
||||||
|
├── 🔍 Status (System Status)
|
||||||
|
│ └── /wp-admin/admin.php?page=wc-status
|
||||||
|
│
|
||||||
|
└── 🧩 Extensions (Marketplace)
|
||||||
|
└── /wp-admin/admin.php?page=wc-addons
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Implementation Priority
|
||||||
|
|
||||||
|
### **Phase 1: Core Settings (HIGH PRIORITY)** 🔴
|
||||||
|
|
||||||
|
#### 1. General Settings (`/settings/general`)
|
||||||
|
**Purpose:** Store address, currency, units
|
||||||
|
**Complexity:** Medium
|
||||||
|
**Estimated Time:** 4-6 hours
|
||||||
|
|
||||||
|
**Fields:**
|
||||||
|
- Store Address (address 1, address 2, city, country, state, postcode)
|
||||||
|
- Selling Location (sell to all countries, specific countries)
|
||||||
|
- Shipping Location (ship to all countries, specific countries, disable shipping)
|
||||||
|
- Default Customer Location (shop country, geolocate, no location by default)
|
||||||
|
- Currency (currency, position, thousand separator, decimal separator, decimals)
|
||||||
|
- API Settings (REST API enabled)
|
||||||
|
|
||||||
|
**UI Components:**
|
||||||
|
- Text inputs
|
||||||
|
- Country/State selectors
|
||||||
|
- Currency selector
|
||||||
|
- Radio groups
|
||||||
|
- Checkboxes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 2. Payment Settings (`/settings/payments`)
|
||||||
|
**Purpose:** Enable/disable payment gateways, configure settings
|
||||||
|
**Complexity:** Medium-High
|
||||||
|
**Estimated Time:** 6-8 hours
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- List all available payment gateways
|
||||||
|
- Enable/disable toggle for each gateway
|
||||||
|
- Gateway-specific settings (expandable panels)
|
||||||
|
- Drag-and-drop ordering
|
||||||
|
- Test mode indicators
|
||||||
|
|
||||||
|
**UI Components:**
|
||||||
|
- Sortable list
|
||||||
|
- Toggle switches
|
||||||
|
- Expandable panels (accordion)
|
||||||
|
- Gateway-specific forms (dynamic based on gateway)
|
||||||
|
|
||||||
|
**Gateways to Support:**
|
||||||
|
- Direct Bank Transfer (BACS)
|
||||||
|
- Check Payments
|
||||||
|
- Cash on Delivery
|
||||||
|
- PayPal (if installed)
|
||||||
|
- Stripe (if installed)
|
||||||
|
- Other 3rd party gateways (extensible)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 3. Shipping Settings (`/settings/shipping`)
|
||||||
|
**Purpose:** Shipping zones, methods, and classes
|
||||||
|
**Complexity:** High
|
||||||
|
**Estimated Time:** 8-12 hours
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- **Shipping Zones:**
|
||||||
|
- List all zones
|
||||||
|
- Add/edit/delete zones
|
||||||
|
- Zone regions (countries, states, postcodes)
|
||||||
|
- Zone methods (flat rate, free shipping, local pickup)
|
||||||
|
|
||||||
|
- **Shipping Classes:**
|
||||||
|
- List all classes
|
||||||
|
- Add/edit/delete classes
|
||||||
|
- Class descriptions
|
||||||
|
|
||||||
|
- **Shipping Options:**
|
||||||
|
- Enable/disable shipping calculator
|
||||||
|
- Hide shipping costs until address entered
|
||||||
|
- Debug mode
|
||||||
|
|
||||||
|
**UI Components:**
|
||||||
|
- Zone list with drag-and-drop
|
||||||
|
- Region selector (multi-select countries/states)
|
||||||
|
- Method configuration forms
|
||||||
|
- Shipping class manager
|
||||||
|
- Cost calculator inputs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **Phase 2: Product & Customer Settings (MEDIUM PRIORITY)** 🟡
|
||||||
|
|
||||||
|
#### 4. Product Settings (`/settings/products`)
|
||||||
|
**Purpose:** Shop page, inventory, downloadable products
|
||||||
|
**Complexity:** Medium
|
||||||
|
**Estimated Time:** 4-6 hours
|
||||||
|
|
||||||
|
**Sections:**
|
||||||
|
- **General:**
|
||||||
|
- Shop page
|
||||||
|
- Add to cart behavior
|
||||||
|
- Placeholder images
|
||||||
|
|
||||||
|
- **Inventory:**
|
||||||
|
- Manage stock
|
||||||
|
- Hold stock (minutes)
|
||||||
|
- Notifications (low stock, out of stock)
|
||||||
|
- Low stock threshold
|
||||||
|
- Out of stock threshold
|
||||||
|
- Hide out of stock items
|
||||||
|
|
||||||
|
- **Downloadable Products:**
|
||||||
|
- File download method
|
||||||
|
- Access restriction
|
||||||
|
- Grant access after payment
|
||||||
|
|
||||||
|
**UI Components:**
|
||||||
|
- Page selectors
|
||||||
|
- Number inputs
|
||||||
|
- Checkboxes
|
||||||
|
- Radio groups
|
||||||
|
- Select dropdowns
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 5. Tax Settings (`/settings/tax`)
|
||||||
|
**Purpose:** Tax rates, classes, and options
|
||||||
|
**Complexity:** Medium-High
|
||||||
|
**Estimated Time:** 6-8 hours
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- **Tax Options:**
|
||||||
|
- Prices entered with tax
|
||||||
|
- Calculate tax based on (customer address, shop address)
|
||||||
|
- Shipping tax class
|
||||||
|
- Rounding
|
||||||
|
- Additional tax classes
|
||||||
|
|
||||||
|
- **Standard Rates:**
|
||||||
|
- Country/State/Postcode
|
||||||
|
- Rate %
|
||||||
|
- Tax name
|
||||||
|
- Priority
|
||||||
|
- Compound
|
||||||
|
- Shipping
|
||||||
|
|
||||||
|
- **Tax Classes:**
|
||||||
|
- List all classes
|
||||||
|
- Add/edit/delete classes
|
||||||
|
|
||||||
|
**UI Components:**
|
||||||
|
- Tax rate table (sortable, editable)
|
||||||
|
- Country/State selectors
|
||||||
|
- Percentage inputs
|
||||||
|
- Checkbox groups
|
||||||
|
- Tax class manager
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 6. Accounts & Privacy (`/settings/accounts`)
|
||||||
|
**Purpose:** Guest checkout, account creation, privacy
|
||||||
|
**Complexity:** Low-Medium
|
||||||
|
**Estimated Time:** 3-4 hours
|
||||||
|
|
||||||
|
**Sections:**
|
||||||
|
- **Guest Checkout:**
|
||||||
|
- Allow customers to place orders without account
|
||||||
|
- Allow customers to log in during checkout
|
||||||
|
|
||||||
|
- **Account Creation:**
|
||||||
|
- Allow customers to create account during checkout
|
||||||
|
- Allow customers to create account on "My Account" page
|
||||||
|
- Automatically generate username
|
||||||
|
- Automatically generate password
|
||||||
|
|
||||||
|
- **Privacy:**
|
||||||
|
- Privacy policy page
|
||||||
|
- Registration privacy policy text
|
||||||
|
- Checkout privacy policy text
|
||||||
|
- Remove personal data (retention period)
|
||||||
|
- Remove access to download (retention period)
|
||||||
|
|
||||||
|
**UI Components:**
|
||||||
|
- Checkboxes
|
||||||
|
- Page selector
|
||||||
|
- Textarea for policy text
|
||||||
|
- Number inputs (retention periods)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **Phase 3: Communication (MEDIUM PRIORITY)** 🟡
|
||||||
|
|
||||||
|
#### 7. Email Settings (`/settings/emails`)
|
||||||
|
**Purpose:** Email templates and settings
|
||||||
|
**Complexity:** Medium-High
|
||||||
|
**Estimated Time:** 6-8 hours
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- **Email List:**
|
||||||
|
- New Order (admin)
|
||||||
|
- Cancelled Order (admin)
|
||||||
|
- Failed Order (admin)
|
||||||
|
- Order On-Hold (customer)
|
||||||
|
- Processing Order (customer)
|
||||||
|
- Completed Order (customer)
|
||||||
|
- Refunded Order (customer)
|
||||||
|
- Customer Invoice
|
||||||
|
- Customer Note
|
||||||
|
- Reset Password
|
||||||
|
- New Account
|
||||||
|
|
||||||
|
- **Email Settings (per email):**
|
||||||
|
- Enable/disable
|
||||||
|
- Subject
|
||||||
|
- Heading
|
||||||
|
- Additional content
|
||||||
|
- Email type (plain text, HTML, multipart)
|
||||||
|
|
||||||
|
- **Global Settings:**
|
||||||
|
- "From" name
|
||||||
|
- "From" email address
|
||||||
|
- Header image
|
||||||
|
- Footer text
|
||||||
|
- Base color
|
||||||
|
- Background color
|
||||||
|
- Body background color
|
||||||
|
- Body text color
|
||||||
|
|
||||||
|
**UI Components:**
|
||||||
|
- Email list with enable/disable toggles
|
||||||
|
- Email editor (per email)
|
||||||
|
- Color pickers
|
||||||
|
- Image uploader
|
||||||
|
- Text inputs
|
||||||
|
- Textarea
|
||||||
|
- Email preview
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **Phase 4: Advanced (KEEP IN WP-ADMIN)** ⚪
|
||||||
|
|
||||||
|
These settings are rarely used and can remain in wp-admin:
|
||||||
|
|
||||||
|
#### 8. Advanced Settings (Bridge)
|
||||||
|
- Page setup (cart, checkout, my account, terms)
|
||||||
|
- REST API
|
||||||
|
- Webhooks
|
||||||
|
- Legacy API
|
||||||
|
- WooCommerce.com account
|
||||||
|
|
||||||
|
#### 9. Integration Settings (Bridge)
|
||||||
|
- MaxMind Geolocation
|
||||||
|
- Other integrations
|
||||||
|
|
||||||
|
#### 10. System Status (Bridge)
|
||||||
|
- System status report
|
||||||
|
- Tools (clear cache, regenerate thumbnails, etc.)
|
||||||
|
- Logs
|
||||||
|
- Scheduled actions
|
||||||
|
|
||||||
|
#### 11. Extensions (Bridge)
|
||||||
|
- WooCommerce marketplace
|
||||||
|
- Browse extensions
|
||||||
|
- My subscriptions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Technical Implementation
|
||||||
|
|
||||||
|
### Backend (PHP)
|
||||||
|
|
||||||
|
**Files to Create/Modify:**
|
||||||
|
1. `includes/Admin/Rest/SettingsController.php` - REST endpoints
|
||||||
|
2. `includes/Compat/SettingsProvider.php` - Settings data provider
|
||||||
|
3. `includes/Compat/NavigationRegistry.php` - ✅ Already updated
|
||||||
|
|
||||||
|
**REST Endpoints:**
|
||||||
|
```php
|
||||||
|
GET /wp-json/woonoow/v1/settings/general
|
||||||
|
POST /wp-json/woonoow/v1/settings/general
|
||||||
|
GET /wp-json/woonoow/v1/settings/payments
|
||||||
|
POST /wp-json/woonoow/v1/settings/payments
|
||||||
|
GET /wp-json/woonoow/v1/settings/shipping
|
||||||
|
POST /wp-json/woonoow/v1/settings/shipping
|
||||||
|
// ... etc
|
||||||
|
```
|
||||||
|
|
||||||
|
**Data Flow:**
|
||||||
|
1. Frontend requests settings via REST API
|
||||||
|
2. Backend reads from WooCommerce options
|
||||||
|
3. Backend returns structured JSON
|
||||||
|
4. Frontend displays in form
|
||||||
|
5. User submits changes
|
||||||
|
6. Backend validates and saves to WooCommerce options
|
||||||
|
7. Frontend shows success/error
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Frontend (React/TypeScript)
|
||||||
|
|
||||||
|
**Files to Create:**
|
||||||
|
```
|
||||||
|
admin-spa/src/routes/Settings/
|
||||||
|
├── index.tsx ✅ Done (WooNooW settings)
|
||||||
|
├── General.tsx ✅ Placeholder created
|
||||||
|
├── Payments.tsx ✅ Placeholder created
|
||||||
|
├── Shipping.tsx ✅ Placeholder created
|
||||||
|
├── Products.tsx ⏳ To create
|
||||||
|
├── Tax.tsx ⏳ To create
|
||||||
|
├── Accounts.tsx ⏳ To create
|
||||||
|
├── Emails.tsx ⏳ To create
|
||||||
|
└── components/
|
||||||
|
├── SettingsForm.tsx ⏳ Reusable form component
|
||||||
|
├── SettingsSection.tsx ⏳ Section wrapper
|
||||||
|
├── SettingsField.tsx ⏳ Field renderer
|
||||||
|
├── PaymentGatewayList.tsx ⏳ Payment gateway manager
|
||||||
|
├── ShippingZoneList.tsx ⏳ Shipping zone manager
|
||||||
|
├── TaxRateTable.tsx ⏳ Tax rate editor
|
||||||
|
└── EmailTemplateList.tsx ⏳ Email template manager
|
||||||
|
```
|
||||||
|
|
||||||
|
**Shared Components:**
|
||||||
|
- Form wrapper with save/cancel
|
||||||
|
- Field renderer (text, select, checkbox, radio, textarea, color, image)
|
||||||
|
- Section headers
|
||||||
|
- Help text/tooltips
|
||||||
|
- Validation messages
|
||||||
|
- Loading states
|
||||||
|
- Success/error notifications
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎨 UI/UX Guidelines
|
||||||
|
|
||||||
|
### Layout
|
||||||
|
- Two-column layout on desktop (sidebar + content)
|
||||||
|
- Single column on mobile
|
||||||
|
- Sticky save button
|
||||||
|
- Breadcrumb navigation
|
||||||
|
- Section anchors (jump to section)
|
||||||
|
|
||||||
|
### Forms
|
||||||
|
- Clear labels and help text
|
||||||
|
- Inline validation
|
||||||
|
- Required field indicators
|
||||||
|
- Default values shown
|
||||||
|
- Reset to defaults button
|
||||||
|
- Unsaved changes warning
|
||||||
|
|
||||||
|
### Feedback
|
||||||
|
- Loading spinners during save
|
||||||
|
- Success toast notifications
|
||||||
|
- Error messages with details
|
||||||
|
- Confirmation dialogs for destructive actions
|
||||||
|
|
||||||
|
### Accessibility
|
||||||
|
- Keyboard navigation
|
||||||
|
- Screen reader support
|
||||||
|
- Focus indicators
|
||||||
|
- ARIA labels
|
||||||
|
- Color contrast compliance
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Implementation Checklist
|
||||||
|
|
||||||
|
### Phase 1: Core Settings
|
||||||
|
- [ ] General Settings page
|
||||||
|
- [ ] Store address fields
|
||||||
|
- [ ] Currency settings
|
||||||
|
- [ ] Location settings
|
||||||
|
- [ ] Save/load functionality
|
||||||
|
- [ ] Validation
|
||||||
|
|
||||||
|
- [ ] Payment Settings page
|
||||||
|
- [ ] Gateway list
|
||||||
|
- [ ] Enable/disable toggles
|
||||||
|
- [ ] Gateway configuration
|
||||||
|
- [ ] Drag-and-drop ordering
|
||||||
|
- [ ] Save/load functionality
|
||||||
|
|
||||||
|
- [ ] Shipping Settings page
|
||||||
|
- [ ] Shipping zones list
|
||||||
|
- [ ] Zone editor
|
||||||
|
- [ ] Region selector
|
||||||
|
- [ ] Shipping methods
|
||||||
|
- [ ] Shipping classes
|
||||||
|
- [ ] Save/load functionality
|
||||||
|
|
||||||
|
### Phase 2: Product & Customer Settings
|
||||||
|
- [ ] Product Settings page
|
||||||
|
- [ ] Tax Settings page
|
||||||
|
- [ ] Accounts & Privacy page
|
||||||
|
|
||||||
|
### Phase 3: Communication
|
||||||
|
- [ ] Email Settings page
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 Testing Requirements
|
||||||
|
|
||||||
|
### Functional Testing
|
||||||
|
- [ ] All fields save correctly
|
||||||
|
- [ ] Validation works
|
||||||
|
- [ ] Default values load
|
||||||
|
- [ ] Changes persist after reload
|
||||||
|
- [ ] Bridge links work
|
||||||
|
- [ ] Mobile responsive
|
||||||
|
|
||||||
|
### Integration Testing
|
||||||
|
- [ ] WooCommerce compatibility
|
||||||
|
- [ ] 3rd party gateway support
|
||||||
|
- [ ] Plugin conflict testing
|
||||||
|
- [ ] Multi-currency support
|
||||||
|
|
||||||
|
### User Testing
|
||||||
|
- [ ] Intuitive navigation
|
||||||
|
- [ ] Clear labels
|
||||||
|
- [ ] Helpful error messages
|
||||||
|
- [ ] Fast performance
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Documentation
|
||||||
|
|
||||||
|
### User Documentation
|
||||||
|
- Settings overview
|
||||||
|
- Field descriptions
|
||||||
|
- Common configurations
|
||||||
|
- Troubleshooting
|
||||||
|
|
||||||
|
### Developer Documentation
|
||||||
|
- API endpoints
|
||||||
|
- Filter hooks
|
||||||
|
- Extension points
|
||||||
|
- Code examples
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Migration Notes
|
||||||
|
|
||||||
|
**No data migration needed!**
|
||||||
|
- All settings use WooCommerce's native options
|
||||||
|
- Deactivating WooNooW restores wp-admin settings
|
||||||
|
- No data loss risk
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Success Metrics
|
||||||
|
|
||||||
|
### Phase 1 Complete When:
|
||||||
|
- ✅ General, Payments, Shipping pages functional
|
||||||
|
- ✅ All fields save/load correctly
|
||||||
|
- ✅ Mobile responsive
|
||||||
|
- ✅ No console errors
|
||||||
|
- ✅ User testing passed
|
||||||
|
|
||||||
|
### Phase 2 Complete When:
|
||||||
|
- ✅ Products, Tax, Accounts pages functional
|
||||||
|
- ✅ All validations working
|
||||||
|
- ✅ Performance acceptable (<2s load)
|
||||||
|
|
||||||
|
### Phase 3 Complete When:
|
||||||
|
- ✅ Email settings functional
|
||||||
|
- ✅ Email preview working
|
||||||
|
- ✅ Template customization working
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📅 Timeline Estimate
|
||||||
|
|
||||||
|
| Phase | Pages | Estimated Time | Priority |
|
||||||
|
|-------|-------|----------------|----------|
|
||||||
|
| Phase 1 | General, Payments, Shipping | 18-26 hours | 🔴 HIGH |
|
||||||
|
| Phase 2 | Products, Tax, Accounts | 13-18 hours | 🟡 MEDIUM |
|
||||||
|
| Phase 3 | Emails | 6-8 hours | 🟡 MEDIUM |
|
||||||
|
| **Total** | **7 pages** | **37-52 hours** | |
|
||||||
|
|
||||||
|
**Note:** Times include design, implementation, testing, and documentation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 Related Documents
|
||||||
|
|
||||||
|
- `PROGRESS_NOTE.md` - Development progress
|
||||||
|
- `SPA_ADMIN_MENU_PLAN.md` - Menu structure
|
||||||
|
- `PROJECT_SOP.md` - Development standards
|
||||||
|
- `STANDALONE_MODE_SUMMARY.md` - Mode documentation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Last Updated:** November 5, 2025
|
||||||
|
**Status:** 📋 Planning Complete, Ready for Implementation
|
||||||
|
**Next Step:** Implement Phase 1 - General Settings
|
||||||
Reference in New Issue
Block a user