From 42fa8304ddb811b0f725f245130f70c0f5e86a6c Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 04 Nov 2025 06:12:02 +0000
Subject: [PATCH] =Refactored LoginManager to be more extensible and configurable, as well as an AjaxRateLimiter
---
inc/helpers/renderFields.php | 241 +++++++++++++++++++++++++----------------------
1 files changed, 129 insertions(+), 112 deletions(-)
diff --git a/inc/helpers/renderFields.php b/inc/helpers/renderFields.php
index 44cf5cd..16bb348 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;
/**
@@ -57,7 +59,7 @@
*/
function jvbRenderLinks(int $ID, MetaManager|null $meta = null):string
{
- $cache = new JVBase\managers\CacheManager('bio-'.$ID, WEEK_IN_SECONDS);
+ $cache = CacheManager::for('bio-'.$ID, WEEK_IN_SECONDS);
$key = 'links';
$cached = $cache->get($key);
if ($cached) {
@@ -134,12 +136,12 @@
*/
function jvbRenderContactInfo(int $ID, MetaManager|null $meta = null):string
{
- $cache = new JVBase\managers\CacheManager('bio-'.$ID, WEEK_IN_SECONDS);
+ $cache = CacheManager::for('bio-'.$ID, WEEK_IN_SECONDS);
$key = 'contact';
-// $cached = $cache->get($key);
-// if($cached){
-// return $cached;
-// }
+ $cached = $cache->get($key);
+ if($cached){
+ return $cached;
+ }
if (!$meta) {
$meta = jvbGetMeta($ID);
}
@@ -324,10 +326,32 @@
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">
- <div class="empty-group">
+ <div class="empty-group row">
<p>Drag here to create new group!</p>
</div>
</template>
@@ -335,27 +359,41 @@
<?= jvbImageMeta() ?>
</template>
<template class="imageGroup">
- <details class="upload-group">
- <summary class="row btw">
- <div class="group-header">
- <div class="group-actions">
- <button type="button" class="add-selection-to-group" title="Add selected images to this group">
- <?= jvbIcon('add') ?>
- Add to Group
- </button>
- <button type="button" class="remove-group" title="Delete group">
- <?= jvbIcon('delete') ?>
- Delete Group
- </button>
+ <div class="upload-group">
+ <div class="group-header">
+ <div class="selected">
+ <div class="field">
+ <input type="checkbox" id="select-all-group" name="select-all-group">
+ <label for="select-all-group">
+ Select All
+ </label>
+ </div>
+ <div class="info" hidden>
</div>
</div>
- <div class="group-content col">
- <div class="item-grid group"></div>
- <p class="hint group-count"></p>
+ <div class="group-actions">
+ <button type="button" data-action="add-to-group" title="Add selected uploads to this group">
+ <?= jvbIcon('add') ?>
+ Add Here
+ </button>
+ <button type="button" data-action="delete-group" title="Delete group">
+ <?= jvbIcon('delete') ?>
+ Delete Group
+ </button>
</div>
- </summary>
- <div class="fields"></div>
- </details>
+ </div>
+ <details>
+ <summary class="row btw">
+ Extra Fields
+ </summary>
+ <div class="fields"></div>
+ </details>
+ <div class="group-content col">
+ <div class="item-grid group"></div>
+ <p class="hint group-count"></p>
+ </div>
+ </div>
+
</template>
<template class="groupActions">
<div class="item-actions">
@@ -368,7 +406,7 @@
</label>
</div>
- <button type="button" class="remove" title="Remove from Group">
+ <button type="button" data-action="remove-from-group" title="Remove from Group">
<?=jvbIcon('delete')?>
</button>
</div>
@@ -379,14 +417,10 @@
<span class="selection-count">0</span> items selected
</div>
<div class="selection-controls">
- <button type="button" class="create-from-selection">
+ <button type="button" data-action="add-to-group">
<?= jvbIcon('add') ?>
New Group
</button>
- <button type="button" class="deselect-all">
- <?= jvbIcon('close') ?>
- Deselect All
- </button>
</div>
</div>
</template>
@@ -412,65 +446,43 @@
</div>
</template>
<template class="uploadItem">
- <div class="upload-item">
- <div class="preview">
- <img>
- <?php jvbRenderProgressBar('<span class="icon"></span><span class="details"></span>') ?>
- <div class="actions">
- <input type="checkbox" class="upload-select" name="select-item" id="select-item">
- <label for="select-item" aria-label="Select image"></label>
- <div class="item-actions">
- <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" class="remove" title="Remove from Group">
- <?=jvbIcon('delete')?>
- </button>
- </div>
-
- </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">
- <div class="restore-notification">
- <div class="restore-content">
+ <dialog class="restore-uploads">
+ <div class="wrap">
<div class="restore-message">
<h4>Looks like we left things hanging</h4>
<p class="restore-details"></p>
<p class="hint">If you'd rather start over, you can clear this information.</p>
</div>
<div class="restore-actions">
- <div class="selection-controls">
- <button type="button" class="select-all-restore">Select All</button>
- <button type="button" class="select-none-restore">Select None</button>
+ <div class="selected">
+ <div class="field">
+ <input type="checkbox" id="select-all-restore" name="select-all-restore">
+ <label for="select-all-restore">
+ Select All
+ </label>
+ </div>
+ <div class="info" hidden>
+ </div>
</div>
- <div class="action-buttons">
- <button type="button" class="restore-selected">
+ <div class="m-actions row nowrap">
+ <button type="button" data-action="restore">
<?= jvbIcon('restore') ?>
Restore Selected
</button>
- <button type="button" class="restart-uploads">
- <?= jvbIcon('delete') ?>
- Scrap Cache
- </button>
- <button type="button" class="dismiss-cache-check" title="Dismiss notification">
+ <button type="button" data-action="clear-cache" title="Clear cache and close window">
<?= jvbIcon('close') ?>
- Dismiss
+ Clear Cache
</button>
</div>
</div>
</div>
- </div>
+ </dialog>
</template>
<template class="restoreField">
<div class="restore-field">
@@ -478,24 +490,6 @@
<div class="item-grid restore"></div>
</div>
</template>
- <template class="restoreItem">
- <label class="restore-item">
- <div class="preview">
- <img>
- <div class="image-placeholder"><svg width="40" height="40" fill="currentColor" viewBox="0 0 256 256">
- <path d="M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40ZM56,56H200V158.75l-26.07-26.06a16,16,0,0,0-22.63,0l-20,20-44-44a16,16,0,0,0-22.62,0L56,117.37V56Zm144,144H56V141.67l36.7-36.7,44,44a8,8,0,0,0,11.31,0l20-20L200,161.67V200ZM148,100a12,12,0,1,1,12,12A12,12,0,0,1,148,100Z"/>
- </svg></div>
- </div>
- <div class="restore-item-info">
- <div class="name"></div>
- <div class="restore-item-meta">
- </div>
- </div>
- <div class="restore-item-controls">
- <input type="checkbox" id="restore-" class="restore-checkbox" checked>
- </div>
- </label>
- </template>
<template class="startOverConfirmation">
<dialog class="start-over-confirmation">
@@ -519,44 +513,67 @@
</div>
</dialog>
</template>
+ <template class="dragPreview">
+ <div class="drag-preview">
+ <div class="drag-items"><div class="drag-item"></div></div>
+ <div class="drag-count" hidden></div>
+ </div>
+ </template>
<?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 : '';
+ $fields = array_merge([
+ 'image_data' => [
+ 'type' => 'group',
+ 'wrap' => 'details',
+ 'label' => 'Image Info',
+ 'hint' => 'These will be automatically generated if left blank.',
+ 'fields' => [
+ '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);
- 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>';
+
+ return $form->render('image_data',null, $fields,false, true);
}
+
function jvbLocationLinks(array $location): string {
if (empty($location['address'])) {
return '';
}
- $cache = new \JVBase\managers\CacheManager('location');
+ $cache = CacheManager::for('locations');
$key = $cache->generateKey($location);
$cached = false;
--
Gitblit v1.10.0