From 86c6cd3cc099d2480932ede03c12cea01e625c94 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 26 Apr 2026 21:56:28 +0000
Subject: [PATCH] =Requiring files based on Site class settings

---
 inc/helpers/ui.php |   75 ++++++++++++++++---------------------
 1 files changed, 32 insertions(+), 43 deletions(-)

diff --git a/inc/helpers/ui.php b/inc/helpers/ui.php
index 8dac9d4..c9a5c1f 100644
--- a/inc/helpers/ui.php
+++ b/inc/helpers/ui.php
@@ -1,6 +1,7 @@
 <?php
 
-use JVBase\utility\Features;
+use JVBase\meta\Form;
+use JVBase\base\Site;
 use JVBase\utility\Image;
 
 if (!defined('ABSPATH')) {
@@ -12,7 +13,7 @@
 
 function jvbClientQueue():void
 {
-    if (!Features::forSite()->has('dashboard') || !is_user_logged_in()) {
+    if (!Site::has('dashboard') || !is_user_logged_in()) {
         return;
     }
 
@@ -86,8 +87,8 @@
 			<div class="actions row end">
 				<button class="retry" data-action="retry"><span>Retry</span><?= jvbIcon('arrows-clockwise')?></button>
 				<button class="cancel" data-action="cancel"><span>Cancel</span><?= jvbIcon('x-square')?></button>
+				<button class="refresh" data-action="refresh" title="Refresh to see changes"><span>Refresh</span><?= jvbIcon('arrows-clockwise')?></button>
 				<button class="dismiss" data-action="dismiss"><span>Dismiss</span><?= jvbIcon('eye-closed')?></button>
-
 			</div>
 		</div>
 	</template>
@@ -110,7 +111,8 @@
  */
 function jvbNotificationMenu():string
 {
-    if (jvbSiteHasNotifications() && is_user_logged_in()) {
+	$membership = Site::membership();
+    if ($membership && $membership->has('notifications') && is_user_logged_in()) {
 
         ob_start();
         ?>
@@ -157,7 +159,7 @@
  */
 function jvbHelpMenu():string
 {
-	if (!Features::forSite()->has('helpMenu')) {
+	if (!Site::has('helpMenu')) {
 		return '';
 	}
     $out = get_option(BASE.'help_menu');
@@ -212,24 +214,7 @@
  */
 function jvbSearch(string $placeholder = 'Search...', string $id = 'search'):string
 {
-	$id = sanitize_title($id);
-	return sprintf(
-		'<div class="search-container row start nowrap">
-		  <input type="search" id="%s" placeholder="%s">
-		  <button
-			title="Clear Search"
-			type="button"
-			class="clear-search"
-			aria-label="Clear search"
-			onclick="this.previousElementSibling.value = \'\'; this.previousElementSibling.focus();"
-		  >%s</button>
-		  <button type="button" title="Search" class="toggle search" aria-label="Toggles search input visually" onclick="this.parentNode.classList.toggle(\'open\');this.previousElementSibling.previousElementSibling.focus();">%s</button>
-		</div>',
-		$id,
-		$placeholder,
-		jvbIcon('x', ['title'=> 'Clear Search']),
-		jvbIcon('magnifying-glass')
-	);
+	return Form::search($placeholder, $id);
 }
 
 
@@ -269,7 +254,7 @@
 function jvbImageCaption(int $imgID, string $start = 'tiny', string $end = 'large', bool $addLink = true, ?string $postSlug = null):string
 {
 	$caption = wp_get_attachment_caption($imgID);
-	$caption = ($caption && $caption !== '') ? '<figcaption>'.apply_filters('the_content', $caption).'</figcaption>' : '';
+	$caption = ($caption && $caption !== '') ? '<figcaption>'.jvb_filter_content( $caption).'</figcaption>' : '';
 	return '<figure>'.jvbFormatImage($imgID, $start, $end, $addLink, $postSlug).$caption.'</figure>';
 }
 
@@ -313,15 +298,13 @@
 
     ?>
     <nav id="<?=$id?>" class="on-this-page index">
-        <label>Jump to:
-            <button type="button" aria-label="Show Index" title="Show Index" class="toggle" aria-expanded="false">
-                <?= jvbIcon('plus-square') ?>
-            </button>
-        </label>
+		<button type="button" aria-label="Show Index" title="Show Index" class="toggle main" aria-expanded="false">
+			<span>Jump To:</span><?= jvbIcon('plus-square') ?>
+		</button>
         <ul>
-            <li>
+            <li id="back-to-top">
                 <a href="#top" title="Back to Top">
-                    <?= jvbIcon('caret-circle-up') ?>
+                    <?= jvbIcon('caret-circle-up') ?><span>Back to Top</span>
                 </a>
             </li>
             <?php
@@ -410,13 +393,13 @@
 			<h2>'.$config['title'].'</h2>';
 			if ( array_key_exists('description', $config)) {
 				if (!is_array($config['description'])) {
-					$content .= apply_filters('the_content', $config['description']);
+					$content .= jvb_filter_content( $config['description']);
 				} else {
 //					foreach ($config['description'] as $desc) {
-//						$content .= apply_filters('the_content', $desc);
+//						$content .= jvb_filter_content( $desc);
 //					}
 					$content .= implode('',array_map(function ($paragraph) {
-						return apply_filters('the_content', $paragraph);
+						return jvb_filter_content( $paragraph);
 					}, $config['description']));
 				}
 
@@ -436,24 +419,30 @@
 	return $out;
 }
 
-function jvbRenderProgressBar(string $inside ='', $top = false, $icon = true)
+function jvbRenderProgressBar(string $inside ='', $top = false, $icon = true, $return = false):string
 {
+
 	$top = $top ? ' abs top' : '';
-	?>
-	<div class="progress<?=$top?>">
+	$bar = sprintf(
+		'<div class="progress%s">
 		<div class="bar">
 			<div class="fill"></div>
 		</div>
 		<div class="row btw">
-			<?php if ($icon) { ?>
-				<i class="icon"></i>
-			<?php } ?>
+			%s
 			<div class="details">
-				<?=$inside?>
+				%s
 			</div>
 		</div>
-	</div>
-	<?php
+	</div>',
+		$top,
+		($icon) ? '<i class="icon"></i>': '',
+		$inside
+	);
+	if (!$return) {
+		echo $bar;
+	}
+	return $bar;
 }
 
 function jvbFormStatus(string $message = '') {

--
Gitblit v1.10.0