From e9967fa22781d922ba4eb8fb44fe72d200ac4b14 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 10 Nov 2025 21:04:10 +0000
Subject: [PATCH] =IconsManager.php update

---
 inc/blocks/CustomBlocks.php |  109 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 67 insertions(+), 42 deletions(-)

diff --git a/inc/blocks/CustomBlocks.php b/inc/blocks/CustomBlocks.php
index 8e175b8..966276f 100644
--- a/inc/blocks/CustomBlocks.php
+++ b/inc/blocks/CustomBlocks.php
@@ -20,7 +20,10 @@
         $this->cache = CacheManager::for('blocks', WEEK_IN_SECONDS);
 		$this->imgCache = CacheManager::for('images', WEEK_IN_SECONDS);
 
-        add_action('render_block', [$this, 'render'], 10, 3);
+
+		add_filter('render_block', [$this, 'render'], 999, 3);
+
+
         add_action('init', [$this, 'registerBlockStyles']);
     }
 
@@ -67,8 +70,10 @@
 
     public function render(string $content, array $block, WP_Block $instance)
     {
-        $method = 'render_'.$this->sanitizeBlockName($block);
+		$blockName = $this->sanitizeBlockName($block);
+        $method = 'render_'.$blockName;
 		$function = BASE.$method;
+
 		if (function_exists($function)) {
 //			return $this->cache->remember(
 //				$block,
@@ -77,8 +82,7 @@
 //				}
 //			);
 			return $function($block, $content);
-		}
-		if (method_exists($this, $method)) {
+		} else if (method_exists($this, $method)) {
 			return $this->$method($block, $content);
 			//TODO: Recache it
 //			return $this->cache->remember(
@@ -94,9 +98,10 @@
 				'core/post-title',
 				'core/list-item',
 				'core/site-title',
+				'jvb/forms'
 			];
 			if (!in_array($block['blockName'], $ignore)) {
-				jvbDump('No method found for '.print_r($block['blockName'], true));
+//				jvbDump('No method found for '.print_r($block['blockName'], true));
 			}
 		}
         if ($block['blockName'] === 'jvb/feed') {
@@ -220,6 +225,7 @@
         $attrs = $block['attrs'] ?? [];
         $innerContent = $this->innerBlocks($block);
 
+		$position = 'object-position: center;';
 		if (array_key_exists('focalPoint', $attrs)) {
 			$x = (array_key_exists('x', $attrs['focalPoint'])) ? ($attrs['focalPoint']['x'] * 100).'%' : 'center';
 			$y = (array_key_exists('y', $attrs['focalPoint'])) ? ($attrs['focalPoint']['y'] * 100).'%' : 'center';
@@ -231,8 +237,16 @@
         $backgroundType = $attrs['backgroundType'] ?? 'image';
         $background = '';
 
-        if ($backgroundType === 'image' && isset($attrs['id'])) {
-			$background .= str_replace('<img', '<img style="'.$position.'"', $this->image($attrs['id']));
+		$ID = false;
+		if (array_key_exists('useFeaturedImage', $attrs)) {
+			global $post;
+			$ID = get_post_thumbnail_id($post->ID);
+		} else {
+			$ID = (int)$attrs['id'];
+		}
+
+        if ($backgroundType === 'image' && $ID) {
+			$background .= str_replace('<img', '<img style="'.$position.'"', $this->image($ID));
         } elseif ($backgroundType === 'video' && isset($attrs['url'])) {
             $background .= '<video style="'.$position.'"autoplay muted loop playsinline src="' . esc_url($attrs['url']) . '"></video>';
         }
@@ -471,8 +485,8 @@
             aria-label="Open Menu"
             aria-controls="navigation-' .$ID. '"
             aria-expanded="false">'.
-            jvbIcon('menu', ['title'=>'Toggle Menu']).
-            jvbIcon('close', ['title'=>'Toggle Menu']).
+            jvbIcon('list', ['title'=>'Toggle Menu']).
+            jvbIcon('x', ['title'=>'Toggle Menu']).
             '</button>';
         $class = ($toggle === '') ?
             $this->getClassesAndStyles($block['attrs'], ['mobile']) :
@@ -537,7 +551,7 @@
         $linkOpen = $this->build_navigation_link($block['attrs'], $aria);
         $content = '<li'.$classes.'>'.$linkOpen.$block['attrs']['label'].
                    '</a><button class="toggle" data-action="toggle-submenu" title="Toggle Submenu" aria-label="Open '.$block['attrs']['label'].' Submenu" aria-expanded="false" aria-controls="'.$id.'-submenu">'.
-                   jvbIcon('submenu', ['title'=>'Toggle Submenu']).
+                   jvbIcon('caret-down', ['title'=>'Toggle Submenu']).
                    '</button><ul class="submenu" id='.$id.'-submenu">';
 
         $content .= $this->innerBlocks($block);
@@ -607,8 +621,10 @@
     //core_post_excerpt
     protected function render_core_post_featured_image(array $block):string
     {
+		global $post;
+		$ID = get_post_thumbnail_id($post->ID);
         return '<figure'.$this->getClassesAndStyles($block['attrs']).'>'.
-               $this->imageLink(true).
+               $this->image($ID).
                '</figure>';
     }
     //core_post_navigation_link
@@ -767,12 +783,12 @@
 
 		$check = ['header', 'footer'];
 		$isHeaderTemplate = (
-			(array_key_exists('slug', $block['attrs']) && str_contains($block['attrs']['slug'], 'header')) ||
-			(array_key_exists('tagName', $block['attrs']) && str_contains($block['attrs']['tagName'], 'header'))
+			(array_key_exists('slug', $block['attrs']) && str_contains(strtolower($block['attrs']['slug']), 'header')) ||
+			(array_key_exists('tagName', $block['attrs']) && str_contains(strtolower($block['attrs']['tagName']), 'header'))
 		) ? 'header' : false;
 		$isFooterTemplate = (
-			(array_key_exists('slug', $block['attrs']) && str_contains($block['attrs']['slug'], 'footer')) ||
-			(array_key_exists('tagName', $block['attrs']) && str_contains($block['attrs']['tagName'], 'footer'))
+			(array_key_exists('slug', $block['attrs']) && str_contains(strtolower($block['attrs']['slug']), 'footer')) ||
+			(array_key_exists('tagName', $block['attrs']) && str_contains(strtolower($block['attrs']['tagName']), 'footer'))
 		) ? 'footer' : false;
 
 
@@ -788,11 +804,12 @@
 				}
                 $checked = (is_user_logged_in() && current_user_can('prefers_dark_theme', true)) ? ' checked' : '';
                 $title = ($checked == '') ? 'Toggle Dark Mode' : 'Toggle Light Mode';
-                $themeSwitch = '<label title="'.$title.'" id="theme-switch" class="toggle-switch" for="theme-switcher">
+				$showThemeSwitch = (bool)apply_filters('jvb_show_theme_switch', true);
+                $themeSwitch = ($showThemeSwitch) ? '<label title="'.$title.'" id="theme-switch" class="toggle-switch" for="theme-switcher">
                     <input class="theme-switch row" id="theme-switcher" type="checkbox"'.$checked.' data-setting="theme" data-theme role="switch" name="dark-mode"><span class="slider">'.
-					jvbIcon('light', ['title'=> 'Light Mode']).
-					jvbIcon('dark', ['title'=>'Dark Mode']).
-					'</span></label>';
+					jvbIcon('sun-dim', ['title'=> 'Light Mode']).
+					jvbIcon('moon', ['title'=>'Dark Mode']).
+					'</span></label>' : '';
                 $breadcrumbs = jvbBuildBreadcrumbs();
 				$afterHeader = apply_filters('jvbBelowHeader', $afterHeader);
 				if ($afterHeader !== '') {
@@ -859,8 +876,6 @@
                 'id' => get_current_user_id()
             ] : null,
             'from'  => get_the_ID(),
-            'icons' => jvbFeedBlockIcons(),
-
         ]);
     }
 
@@ -876,18 +891,22 @@
 
     public function innerBlocks(array $block, string $before = '', string $after = ''):string
     {
-        $content = '';
-        foreach ($block['innerBlocks'] as $b) {
-            $method = 'render_'.$this->sanitizeBlockName($b);
-            $content .= $before;
-            if (method_exists($this, $method)) {
-                $content .= $this->$method($b, '');
-            } else {
-                $content .= render_block($b);
-            }
-            $content .= $after;
-        }
-        return $content;
+		$content = '';
+		foreach ($block['innerBlocks'] as $b) {
+			$method = 'render_'.$this->sanitizeBlockName($b);
+			$function = BASE.$method;
+
+			$content .= $before;
+			if (function_exists($function)) {
+				$content .= $function($b, '');
+			} else if (method_exists($this, $method)) {
+				$content .= $this->$method($b, '');
+			} else {
+				$content .= render_block($b);
+			}
+			$content .= $after;
+		}
+		return $content;
     }
 
     public function inside(array $block, mixed $tag = false, mixed $o = false):string
@@ -946,8 +965,8 @@
 
     public function imageID(int|string $ID, array $block = []):int|false
     {
-
         if ($ID === '' && !empty($block)) {
+
             if (($block['blockName'] === 'core/post-featured-image' ||
                  (!array_key_exists('attrs', $block) && !array_key_exists('id', $block['attrs'])))) {
                 $ID = get_post_thumbnail_id();
@@ -982,7 +1001,11 @@
         if (!$ID) {
             return '';
         }
-        $imgSlug = get_post($ID)->post_name;
+		$img = get_post($ID);
+		if (!$img) {
+			return '';
+		}
+        $imgSlug = $img->post_name;
 
         $img = '<a class="open-gallery" target="_blank" rel="nofollow" data-opens="gallery-'.$postSlug.'" data-focus="'.$postSlug.'-'.$imgSlug.'">'.$image;
         if ($close) {
@@ -1167,7 +1190,6 @@
     }
     protected function getClass(string $key, string|bool|array|int $value, array $attrs):string|array
     {
-
         switch ($key) {
             //Any additional classes the user adds
             case 'className':
@@ -1177,6 +1199,7 @@
                     default => str_replace('is-style-', '', $value),
                 };
 			case 'contentPosition':
+
 				$classes = [];
 				$pos = explode(' ', $value);
 				foreach($pos as $p) {
@@ -1229,14 +1252,14 @@
 //
 //				}
 				if (!array_key_exists('justifyContent', $value) && !array_key_exists('contentPosition', $attrs)) {
-					$classes[] = 'start';
+					$classes[] = ($type === 'row') ? 'start' : 'a-start';
 				}
 				if (array_key_exists('justifyContent', $value)  && !array_key_exists('contentPosition', $attrs)) {
 					if (in_array($value['justifyContent'], ['left', 'right','space-between'])) {
 //						jvbDump($type);
 						switch ($value['justifyContent']) {
 							case 'right':
-								$classes[] = 'end';
+								$classes[] = ($type === 'row') ? 'end' : 'a-end';
 								break;
 							case 'space-between':
 								$classes[] = 'btw';
@@ -1412,6 +1435,7 @@
 				return '';
             default:
 				$ignore = [
+					'useFeaturedImage',
 					'opacity',
 					'borderColor',
 					'backgroundColor',
@@ -1453,8 +1477,8 @@
 				];
 				if (!is_admin() &&!in_array($key, $ignore)) {
 //					TESTING
-					jvbDump($key, 'getClass');
-					jvbDump($attrs);
+//					jvbDump($key, 'getClass');
+//					jvbDump($attrs);
 				}
 
                 return '';
@@ -1674,6 +1698,7 @@
             // Any other attributes that need direct styling
             default:
 				$ignore = [
+					'useFeaturedImage',
 					'opacity',
 					'textAlign',
 					'minHeightUnit',
@@ -1718,8 +1743,8 @@
 				];
 				if (!is_admin() && !in_array($key, $ignore)) {
 					//TESTING
-					jvbDump($key, 'getStyle');
-					jvbDump($attrs);
+//					jvbDump($key, 'getStyle');
+//					jvbDump($attrs);
 				}
                 // No default inline styles
                 break;

--
Gitblit v1.10.0