| | |
| | | <?php |
| | | |
| | | use JVBase\managers\Cache; |
| | | use JVBase\meta\Form; |
| | | use JVBase\base\Site; |
| | | use JVBase\utility\Image; |
| | |
| | | } |
| | | |
| | | ?> |
| | | <aside id="queue" class="left col start btw main" aria-expanded="false" > |
| | | <div class="status-actions row start nowrap"> |
| | | <div class="refresh row btw"> |
| | | <span class="countdown row" title="Will refresh again...">5</span> |
| | | <button class="refreshNow row" title="Check now"> |
| | | <?= jvbIcon('arrows-clockwise', ['title'=> 'Check now']) ?> |
| | | </button> |
| | | </div> |
| | | <aside id="queue" class="left col top main" aria-expanded="false" > |
| | | <div class="m-actions row left nowrap"> |
| | | <button class="refresh row" title="Check now"> |
| | | <?= jvbIcon('arrows-clockwise', ['title'=> 'Check now']) ?> |
| | | <span class="countdown row indicator" title="Will refresh again...">5</span> |
| | | </button> |
| | | <div class="popup row"><span></span></div> |
| | | </div> |
| | | |
| | | <div class="header col start"> |
| | | <h3>Queue Status</h3> |
| | | <div class="header col top"> |
| | | <h2>Queue Status</h2> |
| | | <nav class="filters"> |
| | | <?php |
| | | $filters = [ |
| | |
| | | $active = ($i === 0) ? ' active': ''; |
| | | ?> |
| | | <input type="radio" id="qfilter-<?=$filter?>" name="qfilter" class="btn filter<?=$active?>" data-filter="<?=$filter?>"> |
| | | <label for="qfilter-<?=$filter?>" data-count="0"><span class="count row"></span><?=$title?></label> |
| | | <label for="qfilter-<?=$filter?>" data-count="0"><span class="count indicator row"></span><?=$title?></label> |
| | | <?php |
| | | $i++; |
| | | } |
| | |
| | | ?> |
| | | </nav> |
| | | </div> |
| | | <div class="qitems col a-start nowrap"> |
| | | <div class="qitems item-grid col left nowrap"> |
| | | </div> |
| | | <div class="queue-actions row btw nowrap"> |
| | | <div class="queue-actions row x-btw nowrap"> |
| | | <button class="dismiss-all">Clear Completed</button> |
| | | <button class="retry-all">Retry Failed</button> |
| | | </div> |
| | | </aside> |
| | | <button class="qtoggle row" title="Show Queue" aria-controls="queue" > |
| | | <button class="qtoggle sticky" title="Show Queue" aria-controls="queue" > |
| | | <?= jvbIcon('floppy-disk') ?> |
| | | <span class="screen-reader-text"></span> |
| | | <span class="indicator"></span> |
| | |
| | | </button> |
| | | <template class="queueItem"> |
| | | <div class="item"> |
| | | <div class="header row btw"> |
| | | <div class="header row x-btw"> |
| | | <span class="type"></span> |
| | | <span class="status row"><?= jvbIcon('arrows-clockwise') ?><span class="screen-reader-text"></span></span> |
| | | </div> |
| | | <?php jvbRenderProgressBar('',false,false) ?> |
| | | <div class="info"> |
| | | <div class="details"></div> |
| | | <div class="time row start"> |
| | | <div class="time row left"> |
| | | <?= jvbIcon('clock') ?> |
| | | <span class="started">Started: <time></time></span> |
| | | <span class="completed" hidden><span>Completed: </span><time></time></span> |
| | | </div> |
| | | </div> |
| | | <div class="actions row end"> |
| | | <div class="actions row right"> |
| | | <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></button> |
| | | </template> |
| | | <template class="emptyQueue"> |
| | | <div class="empty-queue row">Everything is up to date.</div> |
| | | <div class="empty queue row">Everything is up to date.</div> |
| | | </template> |
| | | <?php |
| | | } |
| | |
| | | </a> |
| | | </li> |
| | | <li class="notifications has-submenu"> |
| | | <button class="toggle notifications" type="button" title="Toggle Notifications" aria-expanded="false" aria-controls="notifications-dropdown"> |
| | | <button class="toggle notifications" type="button" data-action="toggle-submenu" title="Toggle Notifications" aria-expanded="false" aria-controls="notifications-dropdown"> |
| | | <?= jvbIcon('bell', ['title'=> 'No Notifications'])?> |
| | | <?= jvbIcon('bell-ringing', ['title'=> 'New Notifications']) ?> |
| | | <span class="notification-badge" aria-label="Notifications"> |
| | | </span> |
| | | </button> |
| | | <ul class="notifications-preview submenu"> |
| | | <ul class="notifications-preview submenu" id="notifications-dropdown"> |
| | | <li id="view-all"><a href="<?=get_home_url(null, '/dash/notifications/')?>" class="view-all">View All Notifications</a></li> |
| | | </ul> |
| | | <template class="notificationItem"> |
| | |
| | | */ |
| | | function jvbHelpMenu():string |
| | | { |
| | | if (!Site::has('helpMenu')) { |
| | | if (!Site::has('help_menu')) { |
| | | return ''; |
| | | } |
| | | $out = get_option(BASE.'help_menu'); |
| | | |
| | | if ($out === false) { |
| | | $open = '<li><a href="'; |
| | | $mid = '">'; |
| | | $close = '</a></li>'; |
| | | $cache = Cache::for('help_menu'); |
| | | $out = $cache->remember( |
| | | 'help_menu', |
| | | function () { |
| | | $open = '<li><a href="'; |
| | | $mid = '">'; |
| | | $close = '</a></li>'; |
| | | |
| | | $titles = array( |
| | | 'About', |
| | | 'Contact', |
| | | 'Request a Feature', |
| | | 'Technical Issue', |
| | | ); |
| | | $links = ''; |
| | | foreach ($titles as $t) { |
| | | $page = new WP_Query(array( |
| | | 'post_type' => 'page', |
| | | 'title' => $t, |
| | | 'fields' => 'ids' |
| | | )); |
| | | if ($page->have_posts()) { |
| | | $end = ($t == 'About') ? '<li><a href="'.get_home_url(null, '/directory/partners/').'" title="View our Partners">Partners</a></li>' : ''; |
| | | $links .= $open.get_the_permalink($page->posts[0]).'" title="'.$t.$mid.$t.$close.$end; |
| | | } |
| | | wp_reset_postdata(); |
| | | } |
| | | $titles = array( |
| | | 'About', |
| | | 'Contact', |
| | | 'Request a Feature', |
| | | 'Technical Issue', |
| | | ); |
| | | $links = ''; |
| | | foreach ($titles as $t) { |
| | | $page = new WP_Query(array( |
| | | 'post_type' => 'page', |
| | | 'title' => $t, |
| | | 'fields' => 'ids' |
| | | )); |
| | | if ($page->have_posts()) { |
| | | $end = ($t == 'About') ? '<li><a href="'.get_home_url(null, '/directory/partners/').'" title="View our Partners">Partners</a></li>' : ''; |
| | | $links .= $open.get_the_permalink($page->posts[0]).'" title="'.$t.$mid.$t.$close.$end; |
| | | } |
| | | wp_reset_postdata(); |
| | | } |
| | | |
| | | $out = '<li class="has-submenu"> |
| | | <button class="toggle quick-help" type="button" title="Toggle Quick Help Menu" aria-expanded="false" aria-controls="quick-help" aria-label="Toggle Quick Help Menu">'.jvbIcon('question', ['title'=> 'Quick Help']).'</button> |
| | | <ul class="submenu"> |
| | | return '<li class="has-submenu"> |
| | | <button class="toggle quick-help" data-action="toggle-submenu" type="button" title="Toggle Quick Help Menu" aria-expanded="false" aria-controls="quick-help" aria-label="Toggle Quick Help Menu">'.jvbIcon('question', ['title'=> 'Quick Help']).'</button> |
| | | <ul class="submenu" id="quick-help"> |
| | | '.$links.' |
| | | </ul> |
| | | </li>'; |
| | | |
| | | update_option(BASE.'help_menu', $out); |
| | | } |
| | | } |
| | | ); |
| | | |
| | | if (is_user_logged_in()) { |
| | | $out .= '<li><a href="'.wp_logout_url(get_home_url()).'" title="Logout">'.jvbIcon('sign-out').'<span class="screen-reader-text">Logout</span></a></li>'; |
| | |
| | | * Outputs the search bar (likely don't need anymore) |
| | | * @return string |
| | | */ |
| | | function jvbSearch(string $placeholder = 'Search...', string $id = 'search'):string |
| | | function jvbSearch(string $placeholder = 'Search...', string $id = 'search', string $label = '', string $buttonText = '', bool $buttonInside = false, bool $hideSearch = false):string |
| | | { |
| | | return Form::search($placeholder, $id); |
| | | return Form::search($placeholder, $id, $label, $buttonText, $buttonInside, $hideSearch); |
| | | } |
| | | |
| | | |
| | |
| | | </aside> |
| | | <template class="notificationPopup"> |
| | | <div class="toast" role="status" aria-live="polite"> |
| | | <div class="toast-content row btw"> |
| | | <div class="toast-content row x-btw"> |
| | | <p></p> |
| | | <button type="button" class="close-toast" aria-label="Close"> |
| | | <?= jvbIcon('x') ?> |
| | |
| | | echo ''; |
| | | return ''; |
| | | } |
| | | $header = '<nav class="tabs row start" role="tablist">'; |
| | | $header = '<nav class="tabs row left" role="tablist">'; |
| | | $content = ''; |
| | | $i = 0; |
| | | |
| | |
| | | $active = ($i === 0) ? ' active' : ''; |
| | | $selected = ($i === 0) ? 'true' : 'false'; |
| | | $hidden = (array_key_exists('hidden', $config)) ? ' hidden' : ''; |
| | | $header .= '<button type="button" class="button tab'.$active.'" data-tab="'.$slug.'" role="tab" aria-selected="'.$selected.'"'.$hidden.'> |
| | | <h2 class="row">'; |
| | | $header .= '<button type="button" class="button tab'.$active.'" data-tab="'.$slug.'" role="tab" aria-selected="'.$selected.'"'.$hidden.'>'; |
| | | if (array_key_exists('icon', $config)) { |
| | | $header .= jvbIcon($config['icon']); |
| | | } |
| | | $header .= $config['title'].'</h2> |
| | | $header .= $config['title'].' |
| | | </button>'; |
| | | |
| | | //Content |
| | |
| | | if ($i !== 0) { |
| | | $content .= ' hidden'; |
| | | } |
| | | $content .= '> |
| | | <h2>'.$config['title'].'</h2>'; |
| | | $content .= '>'; |
| | | |
| | | if (array_key_exists('header', $config)) { |
| | | $content .= $config['header']; |
| | | } else { |
| | | $content .= '<h2>'.$config['title'].'</h2>'; |
| | | if ( array_key_exists('description', $config)) { |
| | | if (!is_array($config['description'])) { |
| | | $content .= jvb_filter_content( $config['description']); |
| | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | $content .= $config['content'].' |
| | | </div>'; |
| | |
| | | <div class="bar"> |
| | | <div class="fill"></div> |
| | | </div> |
| | | <div class="row btw"> |
| | | <div class="row x-btw"> |
| | | %s |
| | | <div class="details"> |
| | | %s |
| | |
| | | return $bar; |
| | | } |
| | | |
| | | function jvbFormStatus(string $message = '') { |
| | | return '<div class="restore-form col" hidden> |
| | | <h3>Looks like we left things hanging...</h3> |
| | | <p>We\'ve filled in the fields with what you put last time.</p> |
| | | <div class="actions"> |
| | | <button type="button" data-action="clear-form"> |
| | | '.jvbIcon('arrows-clockwise').' |
| | | <span>Start Over</span> |
| | | </button> |
| | | <button type="button" data-action="dismiss-restore"> |
| | | '.jvbIcon('x').' |
| | | <span>Dismiss</span> |
| | | </button> |
| | | </div> |
| | | </div> |
| | | function jvbFormStatus(string $message = ''):string |
| | | { |
| | | return sprintf( |
| | | '%s |
| | | <div class="fstatus row" hidden> |
| | | <div class="spinner"></div> |
| | | <i class="icon"></i> |
| | | <p class="message">'.$message.'</p> |
| | | </div>'; |
| | | <p class="message">%s</p> |
| | | </div>', |
| | | jvbFormRestore(), |
| | | $message |
| | | ); |
| | | } |
| | | function jvbFormRestore():string |
| | | { |
| | | return sprintf( |
| | | '<div class="restore-form col" hidden> |
| | | <h3>Looks like we left things hanging...</h3> |
| | | <p>Would you like to continue where you left off?</p> |
| | | <div class="actions"> |
| | | <button class="restore" type="button" data-action="restore">%s<span>Restore</span></button> |
| | | <button type="button" class="discard" data-action="clear"> |
| | | %s |
| | | <span>Discard</span> |
| | | </button> |
| | | </div> |
| | | </div>', |
| | | jvbFormIcon('clock-clockwise'), |
| | | jvbFormIcon('x'), |
| | | ); |
| | | } |
| | | |
| | | |
| | | function jvbDarkModeToggle():string |
| | | { |
| | | $checked = (is_user_logged_in() && current_user_can('prefers_dark_theme', true)) ? ' checked' : ''; |
| | | $title = ($checked == '') ? 'Toggle Dark Mode' : 'Toggle Light Mode'; |
| | | $showThemeSwitch = (bool)apply_filters('jvb_show_theme_switch', true); |
| | | $themeSwitch = sprintf( |
| | | '<label title="%s" id="theme-switch" class="switch" for="theme-switcher"> |
| | | <input class="theme-switch row" id="theme-switcher" name="theme-switcher" type="checkbox"%s data-setting="theme" data-theme role="switch" name="dark-mode" aria-label="Toggle dark mode"> |
| | | <span class="slider">%s%s</span> |
| | | </label>', |
| | | $title, |
| | | $checked, |
| | | jvbIcon('sun-dim', ['title'=> 'Light Mode']), |
| | | jvbIcon('moon', ['title'=>'Dark Mode']) |
| | | ); |
| | | return ($showThemeSwitch) ? $themeSwitch : ''; |
| | | } |