| | |
| | | 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"> |
| | |
| | | $hidden, |
| | | $name, |
| | | $name, |
| | | $dataset, |
| | | $name, |
| | | $labelBefore, |
| | | $off, |
| | |
| | | */ |
| | | 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; |
| | | } |
| | |
| | | $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'); |
| | |
| | | } |
| | | $out .= '</ul>'; |
| | | } |
| | | $cache->set($key, $out); |
| | | $cache->set($ID, $out); |
| | | return $out; |
| | | } |
| | | |
| | |
| | | */ |
| | | 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; |
| | | } |
| | |
| | | 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; |
| | |
| | | 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) { |
| | |
| | | $out .= '</ul>'; |
| | | } |
| | | |
| | | $cache->set($key, $out); |
| | | $cache->set($ID, $out); |
| | | |
| | | return $out; |
| | | } |
| | |
| | | </div> |
| | | <div class="summary"> |
| | | <div class="result"> |
| | | <h4></h4> |
| | | <h3></h3> |
| | | <p></p> |
| | | </div> |
| | | </div> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | </div> |
| | | |
| | | <button type="button" data-action="remove-from-group" title="Remove from Group"> |
| | | <?=jvbIcon('delete')?> |
| | | <?=jvbIcon('trash')?> |
| | | </button> |
| | | </div> |
| | | </template> |
| | |
| | | </div> |
| | | <div class="selection-controls"> |
| | | <button type="button" data-action="add-to-group"> |
| | | <?= jvbIcon('add') ?> |
| | | <?= jvbIcon('plus-square') ?> |
| | | New Group |
| | | </button> |
| | | </div> |
| | |
| | | </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> |
| | |
| | | $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); |
| | | } |
| | | |
| | | |
| | |
| | | return ''; |
| | | } |
| | | |
| | | $cache = CacheManager::for('locations'); |
| | | $cache = CacheManager::for('locations')->connectTo('taxonomy'); |
| | | $key = $cache->generateKey($location); |
| | | |
| | | $cached = false; |