From 235ce5716edc2f7cbe80fdccf26eac7269587839 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 08 Jun 2026 04:38:18 +0000
Subject: [PATCH] =FavouritesManager.php and FavouritesRoutes.php fixes. Moving all logic to FavouritesManager.php. Still some left to do

---
 assets/js/concise/SchemaManager.js |   63 ++++---------------------------
 1 files changed, 8 insertions(+), 55 deletions(-)

diff --git a/assets/js/concise/SchemaManager.js b/assets/js/concise/SchemaManager.js
index bad3fa4..b4aba23 100644
--- a/assets/js/concise/SchemaManager.js
+++ b/assets/js/concise/SchemaManager.js
@@ -15,18 +15,13 @@
 
 	init() {
 		// Initialize FormController
-		if (window.jvbForm && !window.formController) {
-			this.formController = new window.jvbForm();
-			window.formController = this.formController;
-		} else if (window.formController) {
-			this.formController = window.formController;
-		}
+		this.formController = window.formController
 
 		// Initialize main Tabs (they're outside forms, so FormController won't handle them)
 		if (window.jvbTabs) {
 			const tabContainer = document.querySelector('.jvb-seo-admin');
 			if (tabContainer) {
-				this.tabsInstance = new window.jvbTabs(tabContainer);
+				this.tabsInstance = window.jvbTabs.registerTab(tabContainer);
 			}
 		}
 
@@ -321,46 +316,23 @@
 		form.dataset.currentType = newType;
 
 		// Use PopulateForm to properly populate all fields including repeaters
-		if (window.jvbPopulateForm) {
-			const populator = new window.jvbPopulateForm();
-			const preservedFields = [];
+		if (window.jvbPopulate) {
+			this.populate = window.jvbPopulate.populate;
 
 			// Populate each field that exists in both schemas
 			Object.keys(currentData).forEach(fieldName => {
 				const fieldWrapper = form.querySelector(`[data-field="${fieldName}"]`);
 				if (fieldWrapper) {
-					const fieldType = this.getFieldType(fieldWrapper);
 					const fieldValue = currentData[fieldName];
-
-					// Use PopulateForm's methods for complex fields
-					if (fieldType === 'repeater' && Array.isArray(fieldValue)) {
-						populator.populateRepeaterField(fieldWrapper, fieldName, fieldValue);
-						preservedFields.push(fieldName);
-					} else if (fieldValue !== null && fieldValue !== undefined && fieldValue !== '') {
-						// Simple field - populate directly
-						const field = fieldWrapper.querySelector(`[name="${fieldName}"]`) ||
-							fieldWrapper.querySelector(`[name^="${fieldName}"]`);
-						if (field) {
-							this.populateSimpleField(field, fieldValue);
-							preservedFields.push(fieldName);
-						}
-					}
+					this.populate(fieldWrapper, fieldName, fieldValue);
 				}
 			});
 
 			// Announce changes
-			if (preservedFields.length > 0) {
-				const message = `Schema type changed to ${newType}. Preserved ${preservedFields.length} field value(s).`;
-				console.log(message);
 
-				if (this.a11y && typeof this.a11y.announce === 'function') {
-					this.a11y.announce(message);
-				}
-			} else {
-				const message = `Schema type changed to ${newType}.`;
-				if (this.a11y && typeof this.a11y.announce === 'function') {
-					this.a11y.announce(message);
-				}
+			const message = `Schema type changed to ${newType}.`;
+			if (this.a11y && typeof this.a11y.announce === 'function') {
+				this.a11y.announce(message);
 			}
 		}
 	}
@@ -416,25 +388,6 @@
 	}
 
 	/**
-	 * Populate a simple field with value
-	 */
-	populateSimpleField(field, value) {
-		if (field.type === 'checkbox') {
-			field.checked = value === '1' || value === 'true' || value === true;
-		} else if (field.tagName === 'SELECT') {
-			setTimeout(() => {
-				field.value = value;
-			}, 10);
-		} else {
-			field.value = value;
-		}
-
-		// Visual feedback
-		field.classList.add('value-preserved');
-		setTimeout(() => field.classList.remove('value-preserved'), 2000);
-	}
-
-	/**
 	 * Add CSS for preserved field indication
 	 */
 	addPreservedFieldStyles() {

--
Gitblit v1.10.0