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