// static/admin/js/content-page-edit.js // Use centralized logger const contentPageEditLog = window.LogConfig.loggers.contentPageEdit || window.LogConfig.createLogger('contentPageEdit'); // ============================================ // CONTENT PAGE EDITOR FUNCTION // ============================================ function contentPageEditor(pageId) { return { // Inherit base layout functionality from init-alpine.js ...data(), // Page identifier for sidebar active state currentPage: 'content-pages', // Editor state pageId: pageId, form: { slug: '', title: '', content: '', content_format: 'html', template: 'default', meta_description: '', meta_keywords: '', is_published: false, show_in_header: false, show_in_footer: true, display_order: 0, vendor_id: null }, loading: false, saving: false, error: null, successMessage: null, // Initialize async init() { contentPageEditLog.info('=== CONTENT PAGE EDITOR INITIALIZING ==='); contentPageEditLog.info('Page ID:', this.pageId); // Prevent multiple initializations if (window._contentPageEditInitialized) { contentPageEditLog.warn('Content page editor already initialized, skipping...'); return; } window._contentPageEditInitialized = true; if (this.pageId) { // Edit mode - load existing page contentPageEditLog.group('Loading page for editing'); await this.loadPage(); contentPageEditLog.groupEnd(); } else { // Create mode - use default values contentPageEditLog.info('Create mode - using default form values'); } contentPageEditLog.info('=== CONTENT PAGE EDITOR INITIALIZATION COMPLETE ==='); }, // Load existing page async loadPage() { this.loading = true; this.error = null; try { contentPageEditLog.info(`Fetching page ${this.pageId}...`); const response = await apiClient.get(`/admin/content-pages/${this.pageId}`); contentPageEditLog.debug('API Response:', response); if (!response) { throw new Error('Invalid API response'); } // Handle response - API returns object directly const page = response.data || response; this.form = { slug: page.slug || '', title: page.title || '', content: page.content || '', content_format: page.content_format || 'html', template: page.template || 'default', meta_description: page.meta_description || '', meta_keywords: page.meta_keywords || '', is_published: page.is_published || false, show_in_header: page.show_in_header || false, show_in_footer: page.show_in_footer !== undefined ? page.show_in_footer : true, display_order: page.display_order || 0, vendor_id: page.vendor_id }; contentPageEditLog.info('Page loaded successfully'); } catch (err) { contentPageEditLog.error('Error loading page:', err); this.error = err.message || 'Failed to load page'; } finally { this.loading = false; } }, // Save page (create or update) async savePage() { if (this.saving) return; this.saving = true; this.error = null; this.successMessage = null; try { contentPageEditLog.info(this.pageId ? 'Updating page...' : 'Creating page...'); const payload = { slug: this.form.slug, title: this.form.title, content: this.form.content, content_format: this.form.content_format, template: this.form.template, meta_description: this.form.meta_description, meta_keywords: this.form.meta_keywords, is_published: this.form.is_published, show_in_header: this.form.show_in_header, show_in_footer: this.form.show_in_footer, display_order: this.form.display_order, vendor_id: this.form.vendor_id }; contentPageEditLog.debug('Payload:', payload); let response; if (this.pageId) { // Update existing page response = await apiClient.put(`/admin/content-pages/${this.pageId}`, payload); this.successMessage = 'Page updated successfully!'; contentPageEditLog.info('Page updated'); } else { // Create new page response = await apiClient.post('/admin/content-pages/platform', payload); this.successMessage = 'Page created successfully!'; contentPageEditLog.info('Page created'); // Redirect to edit page after creation const pageData = response.data || response; if (pageData && pageData.id) { setTimeout(() => { window.location.href = `/admin/content-pages/${pageData.id}/edit`; }, 1500); } } // Clear success message after 3 seconds setTimeout(() => { this.successMessage = null; }, 3000); } catch (err) { contentPageEditLog.error('Error saving page:', err); this.error = err.message || 'Failed to save page'; // Scroll to top to show error window.scrollTo({ top: 0, behavior: 'smooth' }); } finally { this.saving = false; } } }; }