From ba1e1ccf869b818f7a7a897264dfea05563a7796 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 07 Jun 2026 20:10:20 +0000
Subject: [PATCH] =Major overhaul of Integrations. Playing around with adding fields to post types through Registrar from an integrations' class file.

---
 inc/managers/DirectoryManager.php |   27 ++++++++++++++++++---------
 1 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/inc/managers/DirectoryManager.php b/inc/managers/DirectoryManager.php
index a72afb8..ffe4843 100644
--- a/inc/managers/DirectoryManager.php
+++ b/inc/managers/DirectoryManager.php
@@ -90,21 +90,21 @@
 			$directories = [];
 			//content
 
-			$content = Registrar::getFeatured('show_directory', 'post');
+			$content = Registrar::withFeature('show_directory', 'post');
 			if(!empty($content)) {
 				foreach ($content as $key) {
 					$directories[$key] = 'content';
 				}
 			}
 
-			$taxonomies = Registrar::getFeatured('show_directory', 'term');
+			$taxonomies = Registrar::withFeature('show_directory', 'term');
 			if(!empty($taxonomies)) {
 				foreach ($taxonomies as $key) {
 					$directories[$key] = 'taxonomy';
 				}
 			}
 
-			$users = Registrar::getFeatured('show_directory', 'user');
+			$users = Registrar::withFeature('show_directory', 'user');
 			if(!empty($users)) {
 				foreach ($users as $key) {
 					$directories[$key] = 'user';
@@ -325,7 +325,7 @@
         string $name = '',
         string $url = '',
         string $ID = '',
-        $extra = false
+        ?array $extra = null
     ):array {
         if ($name == '') {
             $name = get_the_title();
@@ -438,12 +438,20 @@
 	return $this->cache->remember(
 		$cacheKey,
 		function() use ($slug, $type, $registrar, $config, $paged) {
-			$out = '<h1>' . $this->directoryTitle($registrar) . '</h1>';
+
+			$out = '<h1>' . $config['title'] . '</h1>';
 			$out .= '<div class="description">';
 			foreach ($config['description'] ?? [] as $p) {
 				$out .= '<p>' . $p . '</p>';
 			}
 			$out .= '</div>';
+			$link = match($registrar->getType()) {
+				'post'	=> get_post_type_archive_link($registrar->getBased()),
+				'term'	=> false,
+				'user'	=> get_post_type_archive_link($registrar->getProfile()->getBased()),
+				default => false,
+			};
+			$out .= $link ? '<ul class="buttons"><li><a href="'.$link.'">See All</a></li></ul>' : '';
 			$out .= $this->renderIndex($slug);
 
 			$list = [];
@@ -466,7 +474,7 @@
 
 					$get = new WP_Query($args);
 
-						$hasExtra = $registrar->hasFeature('directory_extra');
+						$hasExtra = !empty($config['directory_extra']??[]);
 						if ($get->have_posts()) {
 							while ( $get->have_posts() ) {
 								$get->the_post();
@@ -673,12 +681,13 @@
             foreach ($items as $item) {
                 $extra = '';
                 if (!empty($item['extra'])) {
-                    $extra = '<span>';
+                    $extra = '<ul class="term-list row">';
                     foreach ($item['extra'] as $ext) {
+						$icon = Registrar::getInstance($ext['type'])->getIcon();
                         $umamiType = ($ext['type'] === BASE.'shop') ? 'click_shop' : 'click_taxonomy';
-                        $extra .= '<a href="'.$ext['url'].'"'.$umami->trackContentClick($item['id'],$umamiType, ['source_type' => 'directory']).'>'.$ext['name'].'</a>';
+                        $extra .= '<li><a href="'.$ext['url'].'"'.$umami->trackContentClick($item['id'],$umamiType, ['source_type' => 'directory']).'>'.jvbIcon($icon).$ext['name'].'</a></li>';
                     }
-                    $extra .= '</span>';
+                    $extra .= '</ul>';
                 }
 
 				$item_html = apply_filters('jvb_directory_render_item', '', $item, $type, $extra);

--
Gitblit v1.10.0