| | |
| | | } else if (typeof fieldValue === 'string') { |
| | | try { |
| | | const parsed = JSON.parse(fieldValue); |
| | | termIds = Array.isArray(parsed) ? parsed.map(v => String(v)) : [String(parsed)]; |
| | | termIds = Array.isArray(parsed) ? |
| | | parsed.map(v => String(v)) : [String(parsed)]; |
| | | } catch (e) { |
| | | termIds = fieldValue.split(',').map(v => v.trim()); |
| | | } |
| | |
| | | const hiddenInput = fieldWrapper.querySelector(`input[type="hidden"][name="${fieldName}"]`); |
| | | if (hiddenInput) { |
| | | hiddenInput.value = termIds.join(','); |
| | | |
| | | // Trigger TaxonomySelector to update visual display |
| | | const toggle = fieldWrapper.querySelector('.taxonomy-toggle'); |
| | | if (toggle && toggle.dataset.fieldId && window.jvbTaxonomy) { |
| | | window.jvbTaxonomy.updateFieldFromInput(toggle.dataset.fieldId); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | const grid = fieldWrapper.querySelector('.item-grid'); |
| | | const uploadContainer = fieldWrapper.querySelector('.file-upload-container'); |
| | | |
| | | // Clear existing items first |
| | | if (grid) { |
| | | window.removeChildren(grid); |
| | | } |
| | | |
| | | fieldWrapper.querySelector('.progress')?.remove(); |
| | | |
| | | if (grid) { |
| | | window.removeChildren(grid); |
| | | itemIds.forEach(itemId => { |
| | | const template = window.getTemplate('uploadItem'); |
| | | |
| | |
| | | |
| | | let input = template.querySelector('input[name="select-item"]'); |
| | | let label = template.querySelector('label[for="select-item"]'); |
| | | |
| | | template.dataset.id = itemId; |
| | | input.name = input.name + `-${itemId}`; |
| | | input.id = input.name; |
| | | label.htmlFor = input.name; |
| | | |
| | | |
| | | const img = template.querySelector('img'); |
| | | |
| | | template.querySelector('video').remove(); |
| | | template.querySelector('video')?.remove(); |
| | | const details = template.querySelector('details'); |
| | | |
| | | // Populate with data |
| | |
| | | if (altInput) altInput.value = data['image-alt-text'] || data.alt || ''; |
| | | if (captionInput) captionInput.value = data['image-caption'] || data.caption || ''; |
| | | } else { |
| | | console.warn('No image data found for ID:', itemId); |
| | | console.warn('No image data found for ID:', itemId, 'Available data:', Object.keys(imagesData)); |
| | | } |
| | | |
| | | // Remove hint if present |