From 7935d26cd16a4f8f69a59a44e27a7263b60e54bf Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 14 Sep 2026 19:05:30 +0000
Subject: [PATCH] =Simple Calendar block up and running
---
inc/blocks/SimpleCalendarBlock.php | 70 ++++++++++++++++++++---------------
1 files changed, 40 insertions(+), 30 deletions(-)
diff --git a/inc/blocks/SimpleCalendarBlock.php b/inc/blocks/SimpleCalendarBlock.php
index c83d0a3..41eaa2b 100644
--- a/inc/blocks/SimpleCalendarBlock.php
+++ b/inc/blocks/SimpleCalendarBlock.php
@@ -2,6 +2,7 @@
namespace JVBase\blocks;
use DateTime;
+use JVBase\helpers\Events;
use JVBase\managers\Cache;
use JVBase\meta\Meta;
use JVBase\registrar\Registrar;
@@ -154,7 +155,7 @@
$title .= sprintf(
' %s %s',
is_tax() ? 'happening on' : 'in',
- $this->getMonthName((int)$this->has('emonth')),
+ Events::getMonthName((int)$this->has('emonth')),
);
}
if ($this->has('eday')) {
@@ -188,7 +189,8 @@
}
if (!empty($out)) {
$content = sprintf(
- '<ul class="term-list content"><li class="label">Content:</li>%s</ul>',
+ '<details class="content row start"><summary>%sBy Content</summary><ul class="term-list content">%s</ul></details>',
+ jvbIcon('calendar-alt'),
implode('', $out)
);
}
@@ -213,10 +215,13 @@
}
}
if (!empty($out)) {
+ $inst = Registrar::getInstance($slug);
$taxonomies .= sprintf(
- '<ul class="term-list row start %s"><li class="label">%s</li>%s</ul>',
+ '<details class="%s row start"><summary>%sBy %s</summary><ul class="term-list row start %s">%s</ul></details>',
+ $inst->getSlug(),
+ jvbIcon($inst->getIcon()??'folder'),
+ $inst->getSingular(),
$slug,
- $title,
implode('', $out)
);
}
@@ -225,10 +230,10 @@
$dates = $this->getDateNavigation();
- if (!is_post_type_archive($this->content[0]) || $this->isDatedArchive()) {
+ if (!is_post_type_archive($this->firstContent()) || $this->isDatedArchive()) {
echo sprintf(
'<a href="%s" class="btn chip">All Events</a>',
- get_post_type_archive_link($this->content[0])
+ get_post_type_archive_link($this->firstContent())
);
}
if (!empty($content) || !empty($taxonomies) || !empty($dates)) {
@@ -306,7 +311,7 @@
foreach ($months as $month => $days) {
$m = intval($month);
- $monthName = $this->getMonthName($m);
+ $monthName = Events::getMonthName($m);
$out .= sprintf(
'<li><a href="%s/%d/%s" title="View all posts in %s, %d">%s</a></li>',
@@ -368,7 +373,7 @@
$events = implode('', array_map([$this, 'formatItem'], $items->posts));
$events = empty($events) ? '<p class="empty">Nothing here yet</p>' : sprintf(
- '<ul class="item-list">%s</ul>',
+ '<ul class="item-list col">%s</ul>',
$events
);
$total = $items->max_num_pages;
@@ -400,6 +405,7 @@
'post_status' => 'publish',
'orderby' => 'meta_value',
'meta_key' => BASE.'date_start',
+ 'order' => 'ASC',
'meta_type' => 'DATETIME',
'posts_per_page'=> 30,
'fields' => 'ids',
@@ -449,22 +455,38 @@
{
$meta = Meta::forPost($ID);
$type = jvbNoBase(get_post_type($ID));
+ if (empty($meta->get('date_start'))) {
+ return '';
+ }
$date = strtotime($meta->get('date_start'));
+ $img = empty($meta->get('post_thumbnail')) ? '' : jvbFormatImage($meta->get('post_thumbnail'), 'tiny', 'medium');
+ $fields = $meta->getAll();
return sprintf(
'<li class="item %s">
%s
- <h3>
- <a href="%s" title="Learn More">%s</a>
- <small><time datetime="%s">%s</time></small>
- </h3>
+ %s
+ <div class="row start header">
+ %s
+ <h3>
+ <a href="%s" title="Learn More">%s</a>
+ </h3>
+ </div>
+ <div class="meta">
+ <p>%s</p>
+ %s
+ %s
+ </div>
%s
</li>',
$type,
- empty($meta->get('post_thumbnail')) ? '' : jvbFormatImage($meta->get('post_thumbnail'), 'tiny', 'medium'),
+ Events::tags($fields),
+ $img,
+ Events::calendarDay($fields['date_start']),
get_the_permalink($ID),
$meta->get('post_title'),
- date('c', $date),
- date('F j, Y', $date),
+ Events::formatDay($meta->get('date_start'), $meta->get('time_start'), $meta->get('time_end')),
+ Events::location($fields),
+ Events::terms($fields, false),
empty($meta->get('post_excerpt')) ? '' : wpautop($meta->get('post_excerpt'))
);
}
@@ -490,21 +512,9 @@
false;
}
- protected function getMonthName(int $num):string
+
+ protected function firstContent():string
{
- return match($num) {
- 1 => 'January',
- 2 => 'February',
- 3 => 'March',
- 4 => 'April',
- 5 => 'May',
- 6 => 'June',
- 7 => 'July',
- 8 => 'August',
- 9 => 'September',
- 10 => 'October',
- 11 => 'November',
- 12 => 'December',
- };
+ return array_keys($this->content)[0]??'';
}
}
--
Gitblit v1.10.0