| 1 |
<?php |
| 2 |
/** |
| 3 |
* Site Preloader Dashboard Tab. |
| 4 |
* |
| 5 |
* @package King_Addons |
| 6 |
* @since 1.0.0 |
| 7 |
* |
| 8 |
* @var array $settings Current settings. |
| 9 |
* @var bool $is_pro Whether Pro version is active. |
| 10 |
* @var array $presets Available presets. |
| 11 |
*/ |
| 12 |
|
| 13 |
if (!defined('ABSPATH')) { |
| 14 |
exit; |
| 15 |
} |
| 16 |
|
| 17 |
$current_preset = $settings['template'] ?? 'spinner-circle'; |
| 18 |
$preset_info = $presets[$current_preset] ?? $presets['spinner-circle']; |
| 19 |
?> |
| 20 |
|
| 21 |
<div class="ka-preloader-dashboard"> |
| 22 |
<!-- Quick Stats --> |
| 23 |
<div class="ka-stats-grid ka-preloader-stats"> |
| 24 |
<div class="ka-stat-card"> |
| 25 |
<div class="ka-stat-label"><?php esc_html_e('Status', 'king-addons'); ?></div> |
| 26 |
<div class="ka-stat-value <?php echo !empty($settings['enabled']) ? 'good' : ''; ?>"> |
| 27 |
<?php echo !empty($settings['enabled']) ? esc_html__('Active', 'king-addons') : esc_html__('Inactive', 'king-addons'); ?> |
| 28 |
</div> |
| 29 |
</div> |
| 30 |
<div class="ka-stat-card"> |
| 31 |
<div class="ka-stat-label"><?php esc_html_e('Current Template', 'king-addons'); ?></div> |
| 32 |
<div class="ka-stat-value ka-stat-value--small"><?php echo esc_html($preset_info['title']); ?></div> |
| 33 |
</div> |
| 34 |
<div class="ka-stat-card"> |
| 35 |
<div class="ka-stat-label"><?php esc_html_e('Display Mode', 'king-addons'); ?></div> |
| 36 |
<div class="ka-stat-value ka-stat-value--small"> |
| 37 |
<?php |
| 38 |
$trigger_labels = [ |
| 39 |
'always' => __('Every Visit', 'king-addons'), |
| 40 |
'first_visit' => __('First Visit', 'king-addons'), |
| 41 |
'once_per_session' => __('Once Per Session', 'king-addons'), |
| 42 |
'once_per_day' => __('Once Per Day', 'king-addons'), |
| 43 |
]; |
| 44 |
echo esc_html($trigger_labels[$settings['trigger_type'] ?? 'always']); |
| 45 |
?> |
| 46 |
</div> |
| 47 |
</div> |
| 48 |
<div class="ka-stat-card"> |
| 49 |
<div class="ka-stat-label"><?php esc_html_e('Hide After', 'king-addons'); ?></div> |
| 50 |
<div class="ka-stat-value ka-stat-value--small"> |
| 51 |
<?php |
| 52 |
$hide_labels = [ |
| 53 |
'window_load' => __('Page Load', 'king-addons'), |
| 54 |
'dom_ready' => __('DOM Ready', 'king-addons'), |
| 55 |
'timeout' => __('Timeout', 'king-addons'), |
| 56 |
]; |
| 57 |
echo esc_html($hide_labels[$settings['hide_strategy'] ?? 'window_load']); |
| 58 |
?> |
| 59 |
</div> |
| 60 |
</div> |
| 61 |
</div> |
| 62 |
|
| 63 |
<div class="ka-preloader-dashboard__grid"> |
| 64 |
<!-- Quick Enable Card --> |
| 65 |
<div class="ka-card ka-preloader-quick-enable"> |
| 66 |
<div class="ka-card-body"> |
| 67 |
<div class="ka-preloader-quick-enable__content"> |
| 68 |
<div class="ka-preloader-quick-enable__icon"> |
| 69 |
<span class="dashicons dashicons-<?php echo !empty($settings['enabled']) ? 'yes-alt' : 'controls-play'; ?>"></span> |
| 70 |
</div> |
| 71 |
<div class="ka-preloader-quick-enable__text"> |
| 72 |
<h3><?php echo !empty($settings['enabled']) ? esc_html__('Preloader is Active', 'king-addons') : esc_html__('Enable Preloader', 'king-addons'); ?></h3> |
| 73 |
<p><?php echo !empty($settings['enabled']) |
| 74 |
? esc_html__('Your preloader is currently showing on your website.', 'king-addons') |
| 75 |
: esc_html__('Activate the preloader to display it on your website.', 'king-addons'); |
| 76 |
?></p> |
| 77 |
</div> |
| 78 |
<form action="<?php echo esc_url(admin_url('admin-post.php')); ?>" method="post" class="ka-preloader-quick-enable__form"> |
| 79 |
<?php wp_nonce_field('king_addons_site_preloader_save'); ?> |
| 80 |
<input type="hidden" name="action" value="king_addons_site_preloader_save" /> |
| 81 |
<input type="hidden" name="current_tab" value="dashboard" /> |
| 82 |
<?php foreach ($settings as $key => $value): ?> |
| 83 |
<?php if ($key !== 'enabled'): ?> |
| 84 |
<?php if (is_array($value)): ?> |
| 85 |
<?php foreach ($value as $arr_val): ?> |
| 86 |
<input type="hidden" name="<?php echo esc_attr($key); ?>[]" value="<?php echo esc_attr($arr_val); ?>" /> |
| 87 |
<?php endforeach; ?> |
| 88 |
<?php else: ?> |
| 89 |
<input type="hidden" name="<?php echo esc_attr($key); ?>" value="<?php echo esc_attr($value); ?>" /> |
| 90 |
<?php endif; ?> |
| 91 |
<?php endif; ?> |
| 92 |
<?php endforeach; ?> |
| 93 |
<input type="hidden" name="enabled" value="<?php echo empty($settings['enabled']) ? '1' : '0'; ?>" /> |
| 94 |
<button type="submit" class="ka-btn <?php echo !empty($settings['enabled']) ? 'ka-btn-secondary' : 'ka-btn-primary'; ?>"> |
| 95 |
<?php echo !empty($settings['enabled']) ? esc_html__('Disable', 'king-addons') : esc_html__('Enable', 'king-addons'); ?> |
| 96 |
</button> |
| 97 |
</form> |
| 98 |
</div> |
| 99 |
</div> |
| 100 |
</div> |
| 101 |
|
| 102 |
<!-- Current Preview --> |
| 103 |
<div class="ka-card ka-preloader-preview-card"> |
| 104 |
<div class="ka-card-header"> |
| 105 |
<span class="dashicons dashicons-visibility"></span> |
| 106 |
<h2><?php esc_html_e('Current Preview', 'king-addons'); ?></h2> |
| 107 |
</div> |
| 108 |
<div class="ka-preloader-preview-area" id="ka-dashboard-preview"> |
| 109 |
<div class="ka-preloader-preview-wrapper" style="<?php echo esc_attr($this->get_preview_styles($settings)); ?>"> |
| 110 |
<?php $this->render_preset_html($current_preset, $settings); ?> |
| 111 |
</div> |
| 112 |
</div> |
| 113 |
<div class="ka-card-footer"> |
| 114 |
<button type="button" class="ka-btn ka-btn-secondary" onclick="kaPreloaderOpenPreview()"> |
| 115 |
<span class="dashicons dashicons-fullscreen-alt"></span> |
| 116 |
<?php esc_html_e('Full Preview', 'king-addons'); ?> |
| 117 |
</button> |
| 118 |
<a href="<?php echo esc_url(add_query_arg('tab', 'templates', admin_url('admin.php?page=king-addons-site-preloader'))); ?>" class="ka-btn ka-btn-primary"> |
| 119 |
<span class="dashicons dashicons-edit"></span> |
| 120 |
<?php esc_html_e('Change Template', 'king-addons'); ?> |
| 121 |
</a> |
| 122 |
</div> |
| 123 |
</div> |
| 124 |
</div> |
| 125 |
|
| 126 |
<!-- Quick Actions --> |
| 127 |
<div class="ka-card"> |
| 128 |
<div class="ka-card-header"> |
| 129 |
<span class="dashicons dashicons-admin-tools"></span> |
| 130 |
<h2><?php esc_html_e('Quick Actions', 'king-addons'); ?></h2> |
| 131 |
</div> |
| 132 |
<div class="ka-card-body"> |
| 133 |
<div class="ka-preloader-actions"> |
| 134 |
<a href="<?php echo esc_url(add_query_arg('tab', 'settings', admin_url('admin.php?page=king-addons-site-preloader'))); ?>" class="ka-preloader-action-card"> |
| 135 |
<span class="dashicons dashicons-admin-generic"></span> |
| 136 |
<span class="ka-preloader-action-card__title"><?php esc_html_e('General Settings', 'king-addons'); ?></span> |
| 137 |
<span class="ka-preloader-action-card__desc"><?php esc_html_e('Configure display rules and behavior', 'king-addons'); ?></span> |
| 138 |
</a> |
| 139 |
<a href="<?php echo esc_url(add_query_arg('tab', 'templates', admin_url('admin.php?page=king-addons-site-preloader'))); ?>" class="ka-preloader-action-card"> |
| 140 |
<span class="dashicons dashicons-layout"></span> |
| 141 |
<span class="ka-preloader-action-card__title"><?php esc_html_e('Choose Template', 'king-addons'); ?></span> |
| 142 |
<span class="ka-preloader-action-card__desc"><?php esc_html_e('Select from 12 animation presets', 'king-addons'); ?></span> |
| 143 |
</a> |
| 144 |
<a href="<?php echo esc_url(add_query_arg('tab', 'rules', admin_url('admin.php?page=king-addons-site-preloader'))); ?>" class="ka-preloader-action-card"> |
| 145 |
<span class="dashicons dashicons-filter"></span> |
| 146 |
<span class="ka-preloader-action-card__title"><?php esc_html_e('Display Rules', 'king-addons'); ?></span> |
| 147 |
<span class="ka-preloader-action-card__desc"><?php esc_html_e('Set conditions for different pages', 'king-addons'); ?></span> |
| 148 |
</a> |
| 149 |
<a href="<?php echo esc_url(add_query_arg('tab', 'advanced', admin_url('admin.php?page=king-addons-site-preloader'))); ?>" class="ka-preloader-action-card"> |
| 150 |
<span class="dashicons dashicons-admin-settings"></span> |
| 151 |
<span class="ka-preloader-action-card__title"><?php esc_html_e('Advanced Options', 'king-addons'); ?></span> |
| 152 |
<span class="ka-preloader-action-card__desc"><?php esc_html_e('Fine-tune timing and CSS', 'king-addons'); ?></span> |
| 153 |
</a> |
| 154 |
</div> |
| 155 |
</div> |
| 156 |
</div> |
| 157 |
|
| 158 |
<!-- Pro Features Promo --> |
| 159 |
<?php if (!$is_pro): ?> |
| 160 |
<div class="ka-upgrade-card"> |
| 161 |
<h3><?php esc_html_e('Unlock Pro Features', 'king-addons'); ?></h3> |
| 162 |
<p><?php esc_html_e('Get access to advanced preloader customization options', 'king-addons'); ?></p> |
| 163 |
<ul> |
| 164 |
<li><?php esc_html_e('Custom Preloader Builder with layers', 'king-addons'); ?></li> |
| 165 |
<li><?php esc_html_e('Lottie, SVG, and GIF animations', 'king-addons'); ?></li> |
| 166 |
<li><?php esc_html_e('Advanced display conditions by role, device, referrer', 'king-addons'); ?></li> |
| 167 |
<li><?php esc_html_e('Different preloaders for different pages', 'king-addons'); ?></li> |
| 168 |
<li><?php esc_html_e('AJAX navigation support', 'king-addons'); ?></li> |
| 169 |
<li><?php esc_html_e('Custom CSS and JS hooks', 'king-addons'); ?></li> |
| 170 |
<li><?php esc_html_e('Import/Export settings', 'king-addons'); ?></li> |
| 171 |
</ul> |
| 172 |
<a href="https://kingaddons.com/pricing/?utm_source=kng-preloader-upgrade&utm_medium=plugin&utm_campaign=kng" target="_blank" class="ka-btn ka-btn-pink"> |
| 173 |
<span class="dashicons dashicons-star-filled"></span> |
| 174 |
<?php esc_html_e('Upgrade to Pro', 'king-addons'); ?> |
| 175 |
</a> |
| 176 |
</div> |
| 177 |
<?php endif; ?> |
| 178 |
</div> |
| 179 |
|
| 180 |
<?php |
| 181 |
/** |
| 182 |
* Helper method to get preview styles. |
| 183 |
*/ |
| 184 |
function get_preview_styles_from_settings($settings) { |
| 185 |
$styles = []; |
| 186 |
|
| 187 |
$bg_type = $settings['bg_type'] ?? 'solid'; |
| 188 |
$bg_color = $settings['bg_color'] ?? '#ffffff'; |
| 189 |
|
| 190 |
if ($bg_type === 'gradient') { |
| 191 |
$start = $settings['bg_gradient_start'] ?? '#ffffff'; |
| 192 |
$end = $settings['bg_gradient_end'] ?? '#f5f5f7'; |
| 193 |
$styles[] = "background: linear-gradient(135deg, {$start} 0%, {$end} 100%)"; |
| 194 |
} else { |
| 195 |
$styles[] = "background-color: {$bg_color}"; |
| 196 |
} |
| 197 |
|
| 198 |
$accent = $settings['accent_color'] ?? '#0071e3'; |
| 199 |
$styles[] = "--kng-preloader-accent: {$accent}"; |
| 200 |
|
| 201 |
$size = $settings['spinner_size'] ?? 48; |
| 202 |
$styles[] = "--kng-preloader-size: {$size}px"; |
| 203 |
|
| 204 |
return implode('; ', $styles); |
| 205 |
} |
| 206 |
?> |
| 207 |
|