Jake Vanderwerf
2025-12-21 3aada9949d51024a92a8b5c6cb70d12f9c3cac16
inc/helpers/renderFields.php
@@ -25,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">
@@ -43,6 +47,7 @@
        $hidden,
        $name,
        $name,
      $dataset,
        $name,
        $labelBefore,
        $off,
@@ -59,9 +64,8 @@
 */
function jvbRenderLinks(int $ID, MetaManager|null $meta = null):string
{
    $cache = CacheManager::for('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;
    }
@@ -79,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');
@@ -124,7 +128,7 @@
        }
        $out .= '</ul>';
    }
    $cache->set($key, $out);
    $cache->set($ID, $out);
    return $out;
}
@@ -136,9 +140,9 @@
 */
function jvbRenderContactInfo(int $ID, MetaManager|null $meta = null):string
{
    $cache = CacheManager::for('bio-'.$ID, WEEK_IN_SECONDS);
    $key = 'contact';
    $cached = $cache->get($key);
    $cache = CacheManager::for('contact', WEEK_IN_SECONDS)->connectTo('post')->connectTo('taxonomy');
    $cached = $cache->get($ID);
    if($cached){
        return $cached;
    }
@@ -158,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;
@@ -167,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) {
@@ -178,7 +182,7 @@
        $out .= '</ul>';
    }
    $cache->set($key, $out);
    $cache->set($ID, $out);
    return $out;
}
@@ -340,7 +344,7 @@
            </div>
            <div class="summary">
               <div class="result">
                  <h4></h4>
                  <h3></h3>
                  <p></p>
               </div>
            </div>
@@ -365,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>
@@ -373,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>
@@ -407,7 +411,7 @@
            </div>
            <button type="button" data-action="remove-from-group" title="Remove from Group">
               <?=jvbIcon('delete')?>
               <?=jvbIcon('trash')?>
            </button>
         </div>
      </template>
@@ -418,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>
@@ -471,12 +475,16 @@
                     </div>
                  </div>
                  <div class="m-actions row nowrap">
                     <button type="button" data-action="restore-all">
                        <?= jvbIcon('infinity') ?>
                        Restore All
                     </button>
                     <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>
@@ -532,38 +540,39 @@
   $dataID = ($ID) ? ['image-id' => $ID] : false;
   $addID = ($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
            ]
         ]
   $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);
   ];
   $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, $fields,false, true);
   return $form->render('image_data',null, $config,false, true);
}
@@ -573,7 +582,7 @@
      return '';
   }
   $cache = CacheManager::for('locations');
   $cache = CacheManager::for('locations')->connectTo('taxonomy');
   $key = $cache->generateKey($location);
   $cached = false;