From 474109a5df0a06f5343ab184838fe2d80e3872a8 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 11 Jan 2026 19:23:20 +0000
Subject: [PATCH] =Fixed timeline CRUD.js issue where this.activeItem was set null when we still needed it

---
 inc/helpers/renderFields.php |   87 ++++++++++++++++++++++++++-----------------
 1 files changed, 52 insertions(+), 35 deletions(-)

diff --git a/inc/helpers/renderFields.php b/inc/helpers/renderFields.php
index 859d67e..3fa3207 100644
--- a/inc/helpers/renderFields.php
+++ b/inc/helpers/renderFields.php
@@ -4,6 +4,7 @@
 	exit;
 }
 
+use JVBase\forms\TaxonomySelector;
 use JVBase\managers\CacheManager;
 use JVBase\meta\MetaForm;
 use JVBase\meta\MetaManager;
@@ -316,17 +317,34 @@
     $out = ($label === '') ? '' : '<h2 class="inline">'.$label.'</h2>';
     $out .= '<ul class="term-list '.jvbNoBase($terms[array_key_first($terms)]->taxonomy).'">';
     foreach ($terms as $term) {
-        $out .= '<li>
-            <a href="'.get_term_link($term->term_id, $term->taxonomy).'" title="'.$term->name.'">'.
-                $term->name.
-            '</a>
-        </li>';
+        $out .= '<li>'.jvbGetTermLink($term).'</li>';
     }
     $out .= '</ul>';
 
     return $out;
 }
 
+function jvbGetTermLink(int|WP_Term $term, string $taxonomy = ''):string
+{
+	if (is_int($term)){
+		$term = get_term($term, jvbCheckBase($taxonomy));
+		if (is_wp_error($term)) {
+			return '';
+		}
+	}
+	$cache = CacheManager::for($term->taxonomy);
+	$key = $term->term_id.'-link';
+	return $cache->remember(
+		$key,
+		function() use ($term) {
+			return '<a href="'.get_term_link($term->term_id, $term->taxonomy).'" title="'.$term->name.'">'.
+			$term->name.
+			'</a>';
+		}
+	);
+}
+
+
 add_action('wp_footer', 'jvbOutputImageTemplates');
 
 function jvbOutputImageTemplates() {
@@ -367,15 +385,15 @@
 				<div class="group-header">
 					<div class="selected">
 						<div class="field">
-							<input type="checkbox" id="select-all-group" name="select-all-group">
-							<label for="select-all-group">
+							<input type="checkbox" id="select-all" name="select-all" data-selects="item-grid" data-select-all>
+							<label for="select-all">
 								Select All In Group
 							</label>
 						</div>
 						<div class="info" hidden>
 						</div>
 					</div>
-					<div class="group-actions">
+					<div class="selection-actions">
 						<button type="button" data-action="add-to-group" title="Add selected uploads to this group">
 							<?= jvbIcon('plus-square') ?>
 							Add Here
@@ -393,8 +411,8 @@
 					<div class="fields"></div>
 				</details>
 				<div class="group-content col">
+					<p class="hint count"></p>
 					<div class="item-grid group"></div>
-					<p class="hint group-count"></p>
 				</div>
 			</div>
 
@@ -460,10 +478,10 @@
 				<div class="wrap">
 					<div class="restore-message">
 						<h4>Looks like we left things hanging</h4>
-						<p class="restore-details"></p>
+						<p class="details"></p>
 						<p class="hint">If you'd rather start over, you can clear this information.</p>
 					</div>
-					<div class="restore-actions">
+					<div class="selection-actions">
 						<div class="selected">
 							<div class="field">
 								<input type="checkbox" id="select-all-restore" name="select-all-restore">
@@ -493,10 +511,10 @@
 			</dialog>
 		</template>
 		<template class="restoreField">
-			<div class="restore-field">
-				<h3></h3>
+			<details class="restore-field">
+				<summary><h3><a></a></h3></summary>
 				<div class="item-grid restore"></div>
-			</div>
+			</details>
 		</template>
 
 		<template class="startOverConfirmation">
@@ -530,7 +548,7 @@
 		<?php
 	}
 	if (wp_script_is('jvb-selector')) {
-		\JVBase\forms\TaxonomySelector::class::outputSelectorModal();
+		TaxonomySelector::class::outputSelectorModal();
 	}
 }
 
@@ -540,39 +558,38 @@
 	$dataID = ($ID) ? ['image-id' => $ID] : false;
 	$addID = ($ID) ? '-'.$ID : '';
 
-
 	$defaultFields = [
 		'image-title'.$addID => [
-			'type'	=> 'text',
-			'label'	=> 'Image Title',
-			'value'	=> $title,
-			'data'	=> $dataID
+			'type'  => 'text',
+			'label' => 'Image Title',
+			'value' => $title,
+			'data'  => $dataID
 		],
 		'image-alt-text'.$addID => [
-			'type'	=> 'text',
-			'label'	=> 'Alt Text',
-			'value'	=> $alt,
-			'hint'	=> 'Alt text helps the visually impaired, as well as some benefits for SEO.',
-			'data'	=> $dataID
+			'type'  => 'text',
+			'label' => 'Alt Text',
+			'value' => $alt,
+			'hint'  => 'Alt text helps the visually impaired, as well as some benefits for SEO.',
+			'data'  => $dataID
 		],
 		'image-caption'.$addID => [
-			'type'	=> 'textarea',
-			'value'	=> $caption,
-			'label'	=> 'Image Caption',
-			'data'	=> $dataID
+			'type'  => 'textarea',
+			'value' => $caption,
+			'label' => 'Image Caption',
+			'data'  => $dataID
 		]
 	];
 	$fields = array_merge($defaultFields, $fields);
 
 	$config = [
-		'type'	=> 'group',
-		'wrap'	=> 'details',
-		'label'	=> 'Image Info',
-		'hint'	=> 'These will be automatically generated if left blank.',
-		'fields'	=> $fields
+		'type'   => 'group',
+		'wrap'   => 'details',
+		'label'  => 'Image Info',
+		'hint'   => 'These will be automatically generated if left blank.',
+		'fields' => $fields
 	];
 
-	return $form->render('image_data',null, $config,false, true);
+	return $form->render('image_data', null, $config, false, true);
 }
 
 

--
Gitblit v1.10.0