From d7dbe7fee362d587dfc334135d9581b6216a4295 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 23 Nov 2025 04:13:56 +0000
Subject: [PATCH] =Timeline block, and feed block updated. DataStore.js refactored to not block rendering
---
inc/blocks/CustomBlocks.php | 151 ++++++++++----------------------------------------
1 files changed, 31 insertions(+), 120 deletions(-)
diff --git a/inc/blocks/CustomBlocks.php b/inc/blocks/CustomBlocks.php
index 966276f..43831f2 100644
--- a/inc/blocks/CustomBlocks.php
+++ b/inc/blocks/CustomBlocks.php
@@ -14,13 +14,9 @@
class CustomBlocks
{
protected CacheManager $cache;
- protected CacheManager $imgCache;
public function __construct()
{
$this->cache = CacheManager::for('blocks', WEEK_IN_SECONDS);
- $this->imgCache = CacheManager::for('images', WEEK_IN_SECONDS);
-
-
add_filter('render_block', [$this, 'render'], 999, 3);
@@ -241,7 +237,7 @@
if (array_key_exists('useFeaturedImage', $attrs)) {
global $post;
$ID = get_post_thumbnail_id($post->ID);
- } else {
+ } else if (array_key_exists('id', $attrs)) {
$ID = (int)$attrs['id'];
}
@@ -781,7 +777,6 @@
protected function render_core_template_part(array $block, string $content):string
{
- $check = ['header', 'footer'];
$isHeaderTemplate = (
(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'))
@@ -792,7 +787,8 @@
) ? 'footer' : false;
- if ($isHeaderTemplate || $isFooterTemplate) {
+ if (($isHeaderTemplate || $isFooterTemplate)) {
+
$tag = $isHeaderTemplate ?: $isFooterTemplate ?: 'div';
$breadcrumbs = $themeSwitch = $afterHeader = $beforeHeader = $footerText= '';
@@ -821,12 +817,21 @@
$beforeHeader = '<section class="pre-footer">'.$beforeHeader.'</section>';
}
$footerText = jvbRandomFooterText();
- }
+ }
+// jvbDump($beforeHeader,'beforeHeader');
+// jvbDump('<'.$tag.$this->getClassesAndStyles($block['attrs']).'>','tag');
+// jvbDump($themeSwitch,'themeSwitch');
+// jvbDump($this->inside($block, $tag, $content),'inside');
+// jvbDump($footerText,'footerText');
+// jvbDump($afterHeader, 'afterheader');
+// jvbDump($breadcrumbs, 'breadcrumbs');
+
return $beforeHeader.'<'.$tag.$this->getClassesAndStyles($block['attrs']).'>'.
$themeSwitch .
- $this->inside($block, $tag, $content).
+ $this->inside($block, $tag, $content) .
$footerText.'</'.$tag.'>'.$afterHeader.$breadcrumbs;
}
+
return $content;
}
//core_term_description
@@ -870,8 +875,6 @@
protected function localize_feedblock():void
{
wp_localize_script('jvb-feed-view-script', 'feedSettings', [
- 'apiUrl' => rest_url('jvb/v1/'),
- 'nonce' => wp_create_nonce('wp_rest'),
'currentUser' => is_user_logged_in() ? [
'id' => get_current_user_id()
] : null,
@@ -921,7 +924,9 @@
$tag = (str_contains($tag, ' class')) ? strtok($tag, ' class') : $tag;
$tag = trim($tag);
}
-
+ if (!str_starts_with($o, '<'.$tag)) {
+ return $o;
+ }
$len = strlen('</'.$tag.'>');
@@ -988,30 +993,16 @@
int $ID = 0,
string $start = 'tiny',
string $replace = 'large',
- string $postSlug = ''
+ ?string $postSlug = null
):string {
- $image = $this->image($ID, $start, $replace);
- if ($ID === 0) {
- $ID = $this->imageID($ID);
- }
- if ($postSlug==='') {
- global $post;
- $postSlug = $post->post_name;
- }
- if (!$ID) {
- return '';
- }
- $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;
+ $image = jvbFormatImage($ID, $start, $replace, true, $postSlug);
+
if ($close) {
- $img .= '</a>';
+ return $image;
}
- return $img;
+ $len = strlen('</a>');
+ return substr_replace($image, '', -$len, $len);
}
public function image(string $ID = '', string $start = 'tiny', string $replace = 'large'):string
{
@@ -1023,41 +1014,7 @@
if ($ID === 0 || $ID === false) {
return '';
}
-
- $img = wp_get_attachment_image_src($ID, $start);
- if (!$img) return '';
- $img = $img[0];
-
- $data = $this->gallerySizes($ID, $replace);
-
- $alt = get_post_meta($ID, '_wp_attachment_image_alt', true);
- $alt = ($alt=='')? '' : ' alt="'.$alt.'" ';
-
- return '<img width="100%" height="auto" src="' .
- $img . '"' .$alt . $data . ' loading="lazy" decoding="async">';
- }
- public function gallerySizes(int $ID, string $replace = 'medium'):string
- {
- if (!wp_get_attachment_image_src($ID)) {
- return '';
- }
- if ($replace == 'large') {
- return 'data-small="'.
- wp_get_attachment_image_src($ID, 'large')[0].'" data-medium="'.
- wp_get_attachment_image_src($ID, 'full')[0].'" data-full="'.
- wp_get_attachment_image_src($ID, 'full')[0].'"';
- } elseif ($replace == 'medium') {
- return 'data-small="'.
- wp_get_attachment_image_src($ID, 'large')[0].'" data-medium="'.
- wp_get_attachment_image_src($ID, 'large')[0].'" data-full="'.
- wp_get_attachment_image_src($ID, 'large')[0].'"';
- } elseif ($replace == 'thumbnail') {
- return 'data-small="'.
- wp_get_attachment_image_src($ID, 'medium')[0].'" data-medium="'.
- wp_get_attachment_image_src($ID, 'medium')[0].'" data-full="'.
- wp_get_attachment_image_src($ID, 'medium')[0].'"';
- }
- return '';
+ return jvbFormatImage($ID, $start, $replace, false);
}
public function sanitizeBlockName(array $block):string
{
@@ -1753,61 +1710,15 @@
return $styles;
}
- public function getGallerySizes(int $ID, string $replace):string
- {
- if (!wp_get_attachment_image_src($ID)) {
- return '';
- }
- if (!has_image_size($replace)) {
- $replace = 'large';
- }
-
- if ($replace == 'large') {
- return 'data-small="' .
- wp_get_attachment_image_src($ID)[0] . '" data-medium="' .
- wp_get_attachment_image_src($ID, 'large')[0] . '" data-full="' .
- wp_get_attachment_image_src($ID, 'full')[0] . '"';
- } elseif ($replace == 'medium') {
- return 'data-small="'.
- wp_get_attachment_image_src($ID, 'large')[0].'" data-medium="'.
- wp_get_attachment_image_src($ID, 'large')[0].'" data-full="'.
- wp_get_attachment_image_src($ID, 'large')[0].'"';
- } elseif ($replace == 'thumbnail') {
- return 'data-small="'.
- wp_get_attachment_image_src($ID, 'medium')[0].'" data-medium="'.
- wp_get_attachment_image_src($ID, 'medium')[0].'" data-full="'.
- wp_get_attachment_image_src($ID, 'medium')[0].'"';
- }
- return '';
- }
-
public function formatImage(int $ID = 0, string $start = 'tiny', string $replace = 'large'):string
{
- if ($ID === 0) {
- $ID = $this->imageID($ID);
- }
- if ($ID === 0) {
- return '';
- }
-
- return $this->imgCache->remember(
- ['ID' => $ID, 'start' => $start, 'replace' => $replace],
- function() use ($ID, $start, $replace) {
- $img = wp_get_attachment_image_src($ID, $start);
- if (!$img) {
- return'';
- }
- $img = $img[0];
-
- $data = $this->getGallerySizes($ID, $replace);
-
-
-
- $alt = get_post_meta($ID, '_wp_attachment_image_alt', true);
- $alt = ($alt=='')? '' : ' alt="'.$alt.'" ';
- return '<img width="300px" height="300px" src="'.$img.'"'.$alt.$data.' loading="lazy" decoding="async">';
- }
- );
+ if ($ID === 0) {
+ $ID = $this->imageID($ID);
+ }
+ if ($ID === 0) {
+ return '';
+ }
+ return jvbFormatImage($ID, $start, $replace);
}
}
--
Gitblit v1.10.0