From 9f86429a1252b45c95b7c62fbaa1b82de3723997 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 05 Jan 2026 18:16:07 +0000
Subject: [PATCH] =Complete TaxonomySelector.js and TaxonomyCreator.js refactor
---
inc/meta/MetaRenderer.php | 74 +++++++++++++++++++++++++++++++++++--
1 files changed, 70 insertions(+), 4 deletions(-)
diff --git a/inc/meta/MetaRenderer.php b/inc/meta/MetaRenderer.php
index 263c46e..cbf8d4b 100644
--- a/inc/meta/MetaRenderer.php
+++ b/inc/meta/MetaRenderer.php
@@ -59,7 +59,7 @@
$link = 'mailto:'.$value.'?subject='.rawurlencode('Contact from edmonton.ink').'&body='.rawurlencode('Hey,
I found you on edmonton.ink, and I wanted to reach out!');
- return '<a href="'.$link.'" title="Send an Email">'.jvbIcon('email').'<span>Email</span></a>';
+ return '<a href="'.$link.'" title="Send an Email">'.jvbIcon('envelope').'<span>Email</span></a>';
}
protected function renderUrlField(string $name, string $value, array $field):string
@@ -94,6 +94,72 @@
return jvbRenderTermList($terms, $field['label']);
}
+ protected function renderTagListField(string $name, array|bool $value, array $field): string
+ {
+ if (empty($value) || !is_array($value)) {
+ return '';
+ }
+
+ if (!isset($field['fields']) || !is_array($field['fields'])) {
+ return '';
+ }
+
+ $tag_format = $field['tag_format'] ?? 'first_field';
+ $output = '<div class="tag-list-display">';
+
+ if (!empty($field['label']) && ($field['show_label'] ?? false)) {
+ $output .= '<h4 class="tag-list-label">' . esc_html($field['label']) . '</h4>';
+ }
+
+ $output .= '<div class="tag-list-items">';
+
+ foreach ($value as $item) {
+ if (!is_array($item) || empty($item)) {
+ continue;
+ }
+
+ $tag_text = $this->getTagDisplayText($item, $tag_format);
+ $output .= '<span class="tag-list-item">' . esc_html($tag_text) . '</span>';
+ }
+
+ $output .= '</div></div>';
+
+ return $output;
+ }
+
+ /**
+ * Get display text for a tag based on format
+ */
+ protected function getTagDisplayText(array $data, string $format): string
+ {
+ $values = array_filter(array_values($data));
+
+ if (empty($values)) {
+ return '';
+ }
+
+ switch ($format) {
+ case 'first_field':
+ return $values[0];
+
+ case 'all_fields':
+ return implode(', ', $values);
+
+ default:
+ // Template format like "{name} ({email})"
+ if (strpos($format, '{') !== false) {
+ $text = $format;
+ foreach ($data as $key => $value) {
+ $text = str_replace('{' . $key . '}', $value, $text);
+ }
+ return $text;
+ }
+
+ // Use specific field
+ return $data[$format] ?? $values[0];
+ }
+ }
+
protected function renderRepeaterField($name, $value, $field):string
{
// jvbDump($value, 'Repeater Field:');
@@ -422,7 +488,7 @@
// Add icon if configured
$show_icon = $field['show_icon'] ?? true;
- $icon_html = $show_icon ? jvbIcon('time') : '';
+ $icon_html = $show_icon ? jvbIcon('clock') : '';
return sprintf(
'<div class="time-field-display">%s<span class="time-value">%s</span></div>',
@@ -458,7 +524,7 @@
// Add icon if configured
$show_icon = $field['show_icon'] ?? true;
- $icon_html = $show_icon ? jvbIcon('event') : '';
+ $icon_html = $show_icon ? jvbIcon('calendar') : '';
return sprintf(
'<div class="datetime-field-display">%s<span class="datetime-value">%s</span></div>',
@@ -484,7 +550,7 @@
// Add icon if configured
$show_icon = $field['show_icon'] ?? true;
- $icon_html = $show_icon ? jvbIcon('event') : '';
+ $icon_html = $show_icon ? jvbIcon('calendar') : '';
return sprintf(
'<div class="date-field-display">%s<span class="date-value">%s</span></div>',
--
Gitblit v1.10.0