Dwindi Ramadhana
863610043d
fix: Dashboard always active + Full wishlist settings implementation
...
Dashboard Navigation Fix:
- Fixed ActiveNavLink to only activate Dashboard on / or /dashboard/* paths
- Dashboard no longer shows active when on other routes (Marketing, Settings, etc.)
- Proper path matching logic for all main menu items
Wishlist Settings - Full Implementation:
Backend (PHP):
1. Guest Wishlist Support
- Modified check_permission() to allow guests if enable_guest_wishlist is true
- Guests can now add/remove wishlist items (stored in user meta when they log in)
2. Max Items Limit
- Added max_items_per_wishlist enforcement in add_to_wishlist()
- Returns error when limit reached with helpful message
- 0 = unlimited (default)
Frontend (React):
3. Show in Header Setting
- Added useModuleSettings hook to customer-spa
- Wishlist icon respects show_in_header setting (default: true)
- Icon hidden when setting is false
4. Show Add to Cart Button Setting
- Wishlist page checks show_add_to_cart_button setting
- Add to cart buttons hidden when setting is false (default: true)
- Allows wishlist-only mode without purchase prompts
Files Added (1):
- customer-spa/src/hooks/useModuleSettings.ts
Files Modified (5):
- admin-spa/src/App.tsx (dashboard active fix)
- includes/Frontend/WishlistController.php (guest support, max items)
- customer-spa/src/layouts/BaseLayout.tsx (show_in_header)
- customer-spa/src/pages/Account/Wishlist.tsx (show_add_to_cart_button)
- admin-spa/dist/app.js + customer-spa/dist/app.js (rebuilt)
Implemented Settings (4 of 8):
✅ enable_guest_wishlist - Backend permission check
✅ show_in_header - Frontend icon visibility
✅ max_items_per_wishlist - Backend validation
✅ show_add_to_cart_button - Frontend button visibility
Not Yet Implemented (4 of 8):
- wishlist_page (page selector - would need routing logic)
- enable_sharing (share functionality - needs share UI)
- enable_email_notifications (back in stock - needs cron job)
- enable_multiple_wishlists (multiple lists - needs data structure change)
All core wishlist settings now functional!
2025-12-26 21:57:56 +07:00
Dwindi Ramadhana
07020bc0dd
feat: Implement centralized module management system
...
- Add ModuleRegistry for managing built-in modules (newsletter, wishlist, affiliate, subscription, licensing)
- Add ModulesController REST API for module enable/disable
- Create Modules settings page with category grouping and toggle controls
- Integrate module checks across admin-spa and customer-spa
- Add useModules hook for both SPAs to check module status
- Hide newsletter from footer builder when module disabled
- Hide wishlist features when module disabled (product cards, account menu, wishlist page)
- Protect wishlist API endpoints with module checks
- Auto-update navigation tree when modules toggled
- Clean up obsolete documentation files
- Add comprehensive documentation:
- MODULE_SYSTEM_IMPLEMENTATION.md
- MODULE_INTEGRATION_SUMMARY.md
- ADDON_MODULE_INTEGRATION.md (proposal)
- ADDON_MODULE_DESIGN_DECISIONS.md (design doc)
- FEATURE_ROADMAP.md
- SHIPPING_INTEGRATION.md
Module system provides:
- Centralized enable/disable for all features
- Automatic navigation updates
- Frontend/backend integration
- Foundation for addon-module unification
2025-12-26 19:19:49 +07:00
Dwindi Ramadhana
0b08ddefa1
feat: implement wishlist feature with admin toggle
...
- Add WishlistController with full CRUD API
- Create wishlist page in My Account
- Add heart icon to all product card layouts (always visible)
- Implement useWishlist hook for state management
- Add wishlist toggle in admin Settings > Customer
- Fix wishlist menu visibility based on admin settings
- Fix double navigation in wishlist page
- Fix variable product navigation to use React Router
- Add TypeScript type casting fix for addresses
2025-12-26 01:44:15 +07:00
Dwindi Ramadhana
100f9cce55
feat: implement multiple saved addresses with modal selector in checkout
...
- Add AddressController with full CRUD API for saved addresses
- Implement address management UI in My Account > Addresses
- Add modal-based address selector in checkout (Tokopedia-style)
- Hide checkout forms when saved address is selected
- Add search functionality in address modal
- Auto-select default addresses on page load
- Fix variable products to show 'Select Options' instead of 'Add to Cart'
- Add admin toggle for multiple addresses feature
- Clean up debug logs and fix TypeScript errors
2025-12-26 01:16:11 +07:00
Dwindi Ramadhana
9ac09582d2
feat: implement header/footer visibility controls for checkout and thankyou pages
...
- Created LayoutWrapper component to conditionally render header/footer based on route
- Created MinimalHeader component (logo only)
- Created MinimalFooter component (trust badges + policy links)
- Created usePageVisibility hook to get visibility settings per page
- Wrapped ClassicLayout with LayoutWrapper for conditional rendering
- Header/footer visibility now controlled directly in React SPA
- Settings: show/minimal/hide for both header and footer
- Background color support for checkout and thankyou pages
2025-12-25 22:20:48 +07:00
Dwindi Ramadhana
f397ef850f
feat: Add product images support with WP Media Library integration
...
- Add WP Media Library integration for product and variation images
- Support images array (URLs) conversion to attachment IDs
- Add images array to API responses (Admin & Customer SPA)
- Implement drag-and-drop sortable images in Admin product form
- Add image gallery thumbnails in Customer SPA product page
- Initialize WooCommerce session for guest cart operations
- Fix product variations and attributes display in Customer SPA
- Add variation image field in Admin SPA
Changes:
- includes/Api/ProductsController.php: Handle images array, add to responses
- includes/Frontend/ShopController.php: Add images array for customer SPA
- includes/Frontend/CartController.php: Initialize WC session for guests
- admin-spa/src/lib/wp-media.ts: Add openWPMediaGallery function
- admin-spa/src/routes/Products/partials/tabs/GeneralTab.tsx: WP Media + sortable images
- admin-spa/src/routes/Products/partials/tabs/VariationsTab.tsx: Add variation image field
- customer-spa/src/pages/Product/index.tsx: Add gallery thumbnails display
2025-11-26 16:18:43 +07:00