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/helpers/renderFields.php | 188 ++++++++++++++++++++++++++--------------------
1 files changed, 105 insertions(+), 83 deletions(-)
diff --git a/inc/helpers/renderFields.php b/inc/helpers/renderFields.php
index 5c806d0..4817908 100644
--- a/inc/helpers/renderFields.php
+++ b/inc/helpers/renderFields.php
@@ -4,6 +4,8 @@
exit;
}
+use JVBase\managers\CacheManager;
+use JVBase\meta\MetaForm;
use JVBase\meta\MetaManager;
/**
@@ -23,12 +25,16 @@
string $labelAfter,
string $on,
string $off,
- bool $hidden = false
+ bool $hidden = false,
+ array $data = []
):string {
$hidden = ($hidden) ? ' hidden' : '';
+ $dataset = (!empty($data)) ? implode('', array_map(function ($key, $value) {
+ return ' data-'.$key.'="'.$value.'"';
+ }, array_keys($data), array_values($data))) : '';
return sprintf(
- '<div class="toggle-text" %s>
- <input value="all" name="%s" id="%s" type="checkbox">
+ '<div class="toggle-text"%s>
+ <input value="all" name="%s" id="%s" type="checkbox"%s>
<label for="%s" class="row">
%s
<span class="text row">
@@ -41,6 +47,7 @@
$hidden,
$name,
$name,
+ $dataset,
$name,
$labelBefore,
$off,
@@ -57,9 +64,8 @@
*/
function jvbRenderLinks(int $ID, MetaManager|null $meta = null):string
{
- $cache = new JVBase\managers\CacheManager('bio-'.$ID, WEEK_IN_SECONDS);
- $key = 'links';
- $cached = $cache->get($key);
+ $cache = CacheManager::for('user_links', WEEK_IN_SECONDS)->connectTo('post')->connectTo('taxonomy');
+ $cached = $cache->get($ID);
if ($cached) {
return $cached;
}
@@ -77,41 +83,41 @@
$url = $link['url'];
switch (true) {
case strpos($url, 'facebook'):
- $i = jvbIcon('facebook');
+ $i = jvbIcon('facebook-logo');
break;
case strpos($url, 'instagram'):
- $i = jvbIcon('instagram');
+ $i = jvbIcon('instagram-logo');
break;
case strpos($url, 'tiktok'):
- $i = jvbIcon('tiktok');
+ $i = jvbIcon('tiktok-logo');
break;
case strpos($url, 'x.com'):
$i = jvbIcon('x');
break;
case strpos($url, 'youtube'):
- $i = jvbIcon('youtube');
+ $i = jvbIcon('youtube-logo');
break;
case strpos($url, 'mastadon'):
- $i = jvbIcon('mastadon');
+ $i = jvbIcon('mastadon-logo');
break;
case strpos($url, 'fediverse'):
case strpos($url, 'bluesky'):
- $i = jvbIcon('fediverse');
+ $i = jvbIcon('fediverse-logo');
break;
case strpos($url, 'linktree'):
- $i = jvbIcon('linktree');
+ $i = jvbIcon('linktree-logo');
break;
case strpos($url, 'snapchat'):
- $i = jvbIcon('snapchat');
+ $i = jvbIcon('snapchat-logo');
break;
case strpos($url, 'twitch'):
- $i = jvbIcon('twitch');
+ $i = jvbIcon('twitch-logo');
break;
case strpos($url, 'threads'):
- $i = jvbIcon('threads');
+ $i = jvbIcon('threads-logo');
break;
case strpos($url, 'twitter'):
- $i = jvbIcon('twitter');
+ $i = jvbIcon('twitter-logo');
break;
default:
$i = jvbIcon('link');
@@ -122,7 +128,7 @@
}
$out .= '</ul>';
}
- $cache->set($key, $out);
+ $cache->set($ID, $out);
return $out;
}
@@ -134,12 +140,12 @@
*/
function jvbRenderContactInfo(int $ID, MetaManager|null $meta = null):string
{
- $cache = new JVBase\managers\CacheManager('bio-'.$ID, WEEK_IN_SECONDS);
- $key = 'contact';
-// $cached = $cache->get($key);
-// if($cached){
-// return $cached;
-// }
+ $cache = CacheManager::for('contact', WEEK_IN_SECONDS)->connectTo('post')->connectTo('taxonomy');
+
+ $cached = $cache->get($ID);
+ if($cached){
+ return $cached;
+ }
if (!$meta) {
$meta = jvbGetMeta($ID);
}
@@ -156,7 +162,7 @@
switch ($p) {
case 'text':
$link = 'sms:+1'.$phone.';?body='.rawurlencode('Hey! I found you on edmonton.ink, and I wanted to reach out.');
- $label = jvbIcon('text').'<span>Text</span>';
+ $label = jvbIcon('chat').'<span>Text</span>';
break;
case 'call':
$link = 'tel:+1'.$phone;
@@ -165,7 +171,7 @@
case 'email':
$link = 'mailto:'.$meta->getValue('email').'?subject='.rawurlencode('Contact from edmonton.ink').'&body='.rawurlencode('Hey,
I found you on edmonton.ink, and I wanted to reach out!');
- $label = jvbIcon('email').'<span>Email</span>';
+ $label = jvbIcon('envelope').'<span>Email</span>';
break;
}
if ($link) {
@@ -176,7 +182,7 @@
$out .= '</ul>';
}
- $cache->set($key, $out);
+ $cache->set($ID, $out);
return $out;
}
@@ -324,6 +330,28 @@
add_action('wp_footer', 'jvbOutputImageTemplates');
function jvbOutputImageTemplates() {
+ if (wp_script_is('jvb-form')) {
+ jvbInlineStyles('forms');
+ ?>
+ <template class="formSummary">
+ <div class="form-summary">
+ <h2>Success!</h2>
+ <div class="message">
+ <p>We're picking up what you're laying down.</p>
+ <p>You'll get an email with your response. If you can't find it, check your spam.</p>
+ <p>If you need to make any changes, respond to that email.</p>
+ <p>You can see a summary of what you wrote below:</p>
+ </div>
+ <div class="summary">
+ <div class="result">
+ <h4></h4>
+ <p></p>
+ </div>
+ </div>
+ </div>
+ </template>
+ <?php
+ }
if (wp_script_is('jvb-uploader')) {
?>
<template class="emptyGroup">
@@ -341,7 +369,7 @@
<div class="field">
<input type="checkbox" id="select-all-group" name="select-all-group">
<label for="select-all-group">
- Select All
+ Select All In Group
</label>
</div>
<div class="info" hidden>
@@ -349,11 +377,11 @@
</div>
<div class="group-actions">
<button type="button" data-action="add-to-group" title="Add selected uploads to this group">
- <?= jvbIcon('add') ?>
+ <?= jvbIcon('plus-square') ?>
Add Here
</button>
<button type="button" data-action="delete-group" title="Delete group">
- <?= jvbIcon('delete') ?>
+ <?= jvbIcon('trash') ?>
Delete Group
</button>
</div>
@@ -383,7 +411,7 @@
</div>
<button type="button" data-action="remove-from-group" title="Remove from Group">
- <?=jvbIcon('delete')?>
+ <?=jvbIcon('trash')?>
</button>
</div>
</template>
@@ -394,7 +422,7 @@
</div>
<div class="selection-controls">
<button type="button" data-action="add-to-group">
- <?= jvbIcon('add') ?>
+ <?= jvbIcon('plus-square') ?>
New Group
</button>
</div>
@@ -422,34 +450,10 @@
</div>
</template>
<template class="uploadItem">
- <div class="item upload">
- <div class="preview">
- <?php jvbRenderProgressBar('',true) ?>
- <input type="checkbox" class="upload-select" name="select-item" id="select-item">
- <label for="select-item" aria-label="Select image">
- <img>
- <video></video>
- <span></span>
- </label>
- <div class="item-actions row btw">
- <div class="radio-button">
- <input type="radio" class="featured btn" name="featured" id="featured" hidden>
- <label for="featured">
- <?=jvbIcon('star')?>
- <?=jvbIcon('star', ['style' => 'fill'])?>
- <span class="screen-reader-text">Set as featured image</span>
- </label>
- </div>
-
- <button type="button" data-action="delete-upload" title="Remove from Group">
- <?=jvbIcon('delete')?>
- </button>
- </div>
- </div>
- <details>
- <summary class="row btw"><?=jvbIcon('edit')?><span>Edit Image Info</span></summary>
- </details>
- </div>
+ <?php
+ $form = new MetaForm();
+ $form->renderImagePreview();
+ ?>
</template>
<template class="restoreNotification">
<dialog class="restore-uploads">
@@ -472,11 +476,11 @@
</div>
<div class="m-actions row nowrap">
<button type="button" data-action="restore">
- <?= jvbIcon('restore') ?>
+ <?= jvbIcon('arrow-counter-clockwise') ?>
Restore Selected
</button>
<button type="button" data-action="clear-cache" title="Clear cache and close window">
- <?= jvbIcon('close') ?>
+ <?= jvbIcon('x') ?>
Clear Cache
</button>
</div>
@@ -522,41 +526,59 @@
<?php
}
if (wp_script_is('jvb-selector')) {
- \JVBase\forms\TaxonomySelector::class::outputSelector();
+ \JVBase\forms\TaxonomySelector::class::outputSelectorModal();
}
}
-function jvbImageMeta(int|null $ID = null, string $title = '', string $alt = '', string $caption = ''):string
+function jvbImageMeta(int|null $ID = null, string $title = '', string $alt = '', string $caption = '', array $fields = []):string
{
+ $form = new MetaForm();
+ $dataID = ($ID) ? ['image-id' => $ID] : false;
+ $addID = ($ID) ? '-'.$ID : '';
- $dataID = ($ID) ? ' data-image-id="'.$ID.'"' : '';
- $ID = ($ID) ? '-'.$ID : '';
- return '<div class="upload-meta"'.$dataID.'>
- <div class="field">
- <label for="image-title'.$ID.'">Image Title</label>
- <input type="text" id="image-title'.$ID.'" name="image-title'.$ID.'" value="'.$title.'">
- </div>
- <div class="field">
- <label for="image-alt-text'.$ID.'">Image Alt Text</label>
- <input type="text" id="image-alt-text'.$ID.'" name="image-alt-text'.$ID.'" value="'.$alt.'">
- <p class="hint">Alt text helps the visually impaired, as well as some benefits for SEO.</p>
- </div>
- <div class="field">
- <label for="image-caption'.$ID.'">Image Caption</label>
- <textarea id="image-caption'.$ID.'" name="image-caption'.$ID.'">'.$caption.'</textarea>
- </div>
- <p class="hint">These will be automatically generated if left blank.</p>
- </div>';
+ $defaultFields = [
+ 'image-title'.$addID => [
+ 'type' => 'text',
+ 'label' => 'Image Title',
+ 'value' => $title,
+ 'data' => $dataID
+ ],
+ 'image-alt-text'.$addID => [
+ 'type' => 'text',
+ 'label' => 'Alt Text',
+ 'value' => $alt,
+ 'hint' => 'Alt text helps the visually impaired, as well as some benefits for SEO.',
+ 'data' => $dataID
+ ],
+ 'image-caption'.$addID => [
+ 'type' => 'textarea',
+ 'value' => $caption,
+ 'label' => 'Image Caption',
+ 'data' => $dataID
+ ]
+ ];
+ $fields = array_merge($defaultFields, $fields);
+
+ $config = [
+ 'type' => 'group',
+ 'wrap' => 'details',
+ 'label' => 'Image Info',
+ 'hint' => 'These will be automatically generated if left blank.',
+ 'fields' => $fields
+ ];
+
+ return $form->render('image_data',null, $config,false, true);
}
+
function jvbLocationLinks(array $location): string {
if (empty($location['address'])) {
return '';
}
- $cache = new \JVBase\managers\CacheManager('location');
+ $cache = CacheManager::for('locations')->connectTo('taxonomy');
$key = $cache->generateKey($location);
$cached = false;
--
Gitblit v1.10.0