From a9b3b28d001941921aa70d37fdc87c758a163a44 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 05 Jun 2026 16:47:03 +0000
Subject: [PATCH] =Some hefty changes to FeedBlock. Transitioning to loading first page in php to save on extra requests. Got a bit to do yet, but I have to work on Northeh for a bit here.

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

diff --git a/inc/managers/DirectoryManager.php b/inc/managers/DirectoryManager.php
index a4ebc71..4645f97 100644
--- a/inc/managers/DirectoryManager.php
+++ b/inc/managers/DirectoryManager.php
@@ -38,7 +38,7 @@
 
 		jvb_register_do_once('buildDirectories', [$this, 'activate']);
 		add_action('init', [$this, 'registerDirectories']);
-        add_filter('render_block', [$this, 'renderBlock'], 998, 3);
+        add_filter('pre_render_block', [$this, 'renderBlock'], 20, 3);
     }
 
     public function registerDirectories():void
@@ -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);
@@ -698,7 +707,7 @@
         return $out;
     }
 
-    public function renderBlock(string $content, array $block, WP_Block $instance)
+    public function renderBlock(?string $content, array $block, ?WP_Block $instance)
     {
         if (!is_post_type_archive(BASE.'directory') && !is_singular(BASE.'directory')) {
             return $content;
@@ -707,7 +716,6 @@
             return $content;
         }
 
-		error_log('Still working on directory manager...');
         // For archive page
         if (is_post_type_archive(BASE.'directory') && $block['blockName'] === 'core/group') {
             return ($block['attrs']['tagName']??'' === 'main') ? '<main>'.$this->renderArchive().'</main>' : $content;

--
Gitblit v1.10.0