| | |
| | | exit; |
| | | } |
| | | |
| | | use JVBase\managers\CacheManager; |
| | | use JVBase\meta\MetaForm; |
| | | use JVBase\meta\MetaManager; |
| | | |
| | | /** |
| | |
| | | */ |
| | | 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) { |
| | |
| | | */ |
| | | 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); |
| | | } |
| | |
| | | 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> |
| | |
| | | <?= 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"> |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | </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"> |
| | |
| | | <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"> |
| | |
| | | </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; |