| 1 |
<?php |
| 2 |
/** |
| 3 |
* Maintenance Mode page builder view. |
| 4 |
* |
| 5 |
* @package King_Addons |
| 6 |
*/ |
| 7 |
|
| 8 |
if (!defined('ABSPATH')) { |
| 9 |
exit; |
| 10 |
} |
| 11 |
|
| 12 |
$template_source = $settings['template_source'] ?? 'built_in'; |
| 13 |
$template_id = $settings['template_id'] ?? 'minimal'; |
| 14 |
$page_id = (int) ($settings['page_id'] ?? 0); |
| 15 |
$elementor_id = (int) ($settings['elementor_id'] ?? 0); |
| 16 |
$mode = $settings['mode'] ?? 'coming_soon'; |
| 17 |
$pro_templates = $this->get_pro_templates(); |
| 18 |
|
| 19 |
if (!$is_pro && in_array($template_id, $pro_templates, true)) { |
| 20 |
$template_id = 'minimal'; |
| 21 |
} |
| 22 |
|
| 23 |
$pages = get_pages([ |
| 24 |
'sort_column' => 'post_title', |
| 25 |
'sort_order' => 'ASC', |
| 26 |
'post_status' => 'publish', |
| 27 |
]); |
| 28 |
|
| 29 |
$elementor_templates = []; |
| 30 |
if (class_exists('\\Elementor\\Plugin')) { |
| 31 |
$elementor_templates = get_posts([ |
| 32 |
'post_type' => 'elementor_library', |
| 33 |
'post_status' => 'publish', |
| 34 |
'posts_per_page' => 50, |
| 35 |
'orderby' => 'title', |
| 36 |
'order' => 'ASC', |
| 37 |
]); |
| 38 |
} |
| 39 |
|
| 40 |
$preview_url = wp_nonce_url(add_query_arg([ |
| 41 |
'kng_maintenance_preview' => 1, |
| 42 |
], home_url('/')), 'kng_maintenance_preview', '_kng_preview_nonce'); |
| 43 |
?> |
| 44 |
|
| 45 |
<form method="post" action="options.php"> |
| 46 |
<?php settings_fields('kng_maintenance_settings_group'); ?> |
| 47 |
|
| 48 |
<div class="ka-card"> |
| 49 |
<div class="ka-card-header"> |
| 50 |
<span class="dashicons dashicons-layout purple"></span> |
| 51 |
<h2><?php esc_html_e('Page Source', 'king-addons'); ?></h2> |
| 52 |
</div> |
| 53 |
<div class="ka-card-body kng-maintenance-source-grid"> |
| 54 |
<label class="kng-maintenance-radio"> |
| 55 |
<input type="radio" name="kng_maintenance_settings[template_source]" value="built_in" <?php checked($template_source, 'built_in'); ?>> |
| 56 |
<span><?php esc_html_e('Built-in Templates', 'king-addons'); ?></span> |
| 57 |
</label> |
| 58 |
<label class="kng-maintenance-radio"> |
| 59 |
<input type="radio" name="kng_maintenance_settings[template_source]" value="page" <?php checked($template_source, 'page'); ?>> |
| 60 |
<span><?php esc_html_e('WordPress Page', 'king-addons'); ?></span> |
| 61 |
</label> |
| 62 |
<label class="kng-maintenance-radio <?php echo empty($elementor_templates) ? 'is-disabled' : ''; ?>"> |
| 63 |
<input type="radio" name="kng_maintenance_settings[template_source]" value="elementor" <?php checked($template_source, 'elementor'); ?> <?php disabled(empty($elementor_templates)); ?>> |
| 64 |
<span><?php esc_html_e('Elementor Template', 'king-addons'); ?></span> |
| 65 |
<?php if (empty($elementor_templates)) : ?> |
| 66 |
<small><?php esc_html_e('Elementor not detected', 'king-addons'); ?></small> |
| 67 |
<?php endif; ?> |
| 68 |
</label> |
| 69 |
</div> |
| 70 |
</div> |
| 71 |
|
| 72 |
<div class="ka-card kng-maintenance-section" data-section="built_in"> |
| 73 |
<div class="ka-card-header"> |
| 74 |
<span class="dashicons dashicons-art purple"></span> |
| 75 |
<h2><?php esc_html_e('Built-in Templates', 'king-addons'); ?></h2> |
| 76 |
</div> |
| 77 |
<div class="ka-card-body"> |
| 78 |
<div class="kng-maintenance-template-grid"> |
| 79 |
<?php foreach ($templates as $key => $label) : |
| 80 |
$is_pro_template = in_array($key, $pro_templates, true); |
| 81 |
$is_locked = $is_pro_template && !$is_pro; |
| 82 |
?> |
| 83 |
<label class="kng-maintenance-template-card<?php echo $is_locked ? ' is-locked' : ''; ?>"> |
| 84 |
<input type="radio" name="kng_maintenance_settings[template_id]" value="<?php echo esc_attr($key); ?>" <?php checked($template_id, $key); ?> <?php disabled($is_locked); ?>> |
| 85 |
<div class="kng-maintenance-template-preview kng-maintenance-template-<?php echo esc_attr($key); ?>"> |
| 86 |
<div class="kng-template-line"></div> |
| 87 |
<div class="kng-template-line"></div> |
| 88 |
<div class="kng-template-line"></div> |
| 89 |
</div> |
| 90 |
<strong><?php echo esc_html($label); ?></strong> |
| 91 |
<?php if ($is_pro_template) : ?> |
| 92 |
<span class="ka-pro-badge">PRO</span> |
| 93 |
<?php endif; ?> |
| 94 |
</label> |
| 95 |
<?php endforeach; ?> |
| 96 |
</div> |
| 97 |
</div> |
| 98 |
</div> |
| 99 |
|
| 100 |
<div class="ka-card kng-maintenance-section" data-section="built_in"> |
| 101 |
<div class="ka-card-header"> |
| 102 |
<span class="dashicons dashicons-edit purple"></span> |
| 103 |
<h2><?php esc_html_e('Template Content', 'king-addons'); ?></h2> |
| 104 |
</div> |
| 105 |
<div class="ka-card-body"> |
| 106 |
<?php foreach ($templates as $key => $label) : |
| 107 |
$content = $this->get_template_content($key); |
| 108 |
?> |
| 109 |
<div class="kng-maintenance-content-block" data-template="<?php echo esc_attr($key); ?>"> |
| 110 |
<div class="kng-maintenance-content-grid"> |
| 111 |
<div class="kng-field"> |
| 112 |
<label><?php esc_html_e('Badge text', 'king-addons'); ?></label> |
| 113 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][badge]" value="<?php echo esc_attr($content['badge']); ?>" placeholder="<?php echo esc_attr($mode === 'maintenance' ? __('Maintenance Mode', 'king-addons') : __('Coming Soon', 'king-addons')); ?>"> |
| 114 |
</div> |
| 115 |
<div class="kng-field"> |
| 116 |
<label><?php esc_html_e('Headline', 'king-addons'); ?></label> |
| 117 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][headline]" value="<?php echo esc_attr($content['headline']); ?>"> |
| 118 |
</div> |
| 119 |
<div class="kng-field"> |
| 120 |
<label><?php esc_html_e('Subhead', 'king-addons'); ?></label> |
| 121 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][subhead]" value="<?php echo esc_attr($content['subhead']); ?>"> |
| 122 |
</div> |
| 123 |
<div class="kng-field"> |
| 124 |
<label><?php esc_html_e('Launch label (optional)', 'king-addons'); ?></label> |
| 125 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][launch_label]" value="<?php echo esc_attr($content['launch_label']); ?>" placeholder="<?php esc_attr_e('Estimated return: 2025-06-01', 'king-addons'); ?>"> |
| 126 |
</div> |
| 127 |
<div class="kng-field"> |
| 128 |
<label><?php esc_html_e('Footer left', 'king-addons'); ?></label> |
| 129 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][footer_left]" value="<?php echo esc_attr($content['footer_left']); ?>"> |
| 130 |
</div> |
| 131 |
<div class="kng-field"> |
| 132 |
<label><?php esc_html_e('Footer right', 'king-addons'); ?></label> |
| 133 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][footer_right]" value="<?php echo esc_attr($content['footer_right']); ?>"> |
| 134 |
</div> |
| 135 |
</div> |
| 136 |
|
| 137 |
<?php if ($key === 'countdown') : ?> |
| 138 |
<div class="kng-maintenance-content-grid kng-maintenance-content-grid-sm"> |
| 139 |
<div class="kng-field"> |
| 140 |
<label><?php esc_html_e('Days', 'king-addons'); ?></label> |
| 141 |
<input type="number" min="0" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][countdown_days]" value="<?php echo esc_attr($content['countdown_days']); ?>"> |
| 142 |
</div> |
| 143 |
<div class="kng-field"> |
| 144 |
<label><?php esc_html_e('Hours', 'king-addons'); ?></label> |
| 145 |
<input type="number" min="0" max="23" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][countdown_hours]" value="<?php echo esc_attr($content['countdown_hours']); ?>"> |
| 146 |
</div> |
| 147 |
<div class="kng-field"> |
| 148 |
<label><?php esc_html_e('Minutes', 'king-addons'); ?></label> |
| 149 |
<input type="number" min="0" max="59" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][countdown_minutes]" value="<?php echo esc_attr($content['countdown_minutes']); ?>"> |
| 150 |
</div> |
| 151 |
</div> |
| 152 |
<?php endif; ?> |
| 153 |
|
| 154 |
<?php if ($key === 'progress') : ?> |
| 155 |
<div class="kng-maintenance-content-grid kng-maintenance-content-grid-sm"> |
| 156 |
<div class="kng-field"> |
| 157 |
<label><?php esc_html_e('Progress (%)', 'king-addons'); ?></label> |
| 158 |
<input type="number" min="0" max="100" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][progress_percent]" value="<?php echo esc_attr($content['progress_percent']); ?>"> |
| 159 |
</div> |
| 160 |
<div class="kng-field"> |
| 161 |
<label><?php esc_html_e('Progress label', 'king-addons'); ?></label> |
| 162 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][progress_label]" value="<?php echo esc_attr($content['progress_label']); ?>"> |
| 163 |
</div> |
| 164 |
</div> |
| 165 |
<?php endif; ?> |
| 166 |
|
| 167 |
<?php if (in_array($key, ['subscribe', 'product-launch'], true)) : ?> |
| 168 |
<div class="kng-maintenance-content-grid kng-maintenance-content-grid-sm"> |
| 169 |
<div class="kng-field"> |
| 170 |
<label><?php esc_html_e('Email placeholder', 'king-addons'); ?></label> |
| 171 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][form_placeholder]" value="<?php echo esc_attr($content['form_placeholder']); ?>"> |
| 172 |
</div> |
| 173 |
<div class="kng-field"> |
| 174 |
<label><?php esc_html_e('Button label', 'king-addons'); ?></label> |
| 175 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][form_button]" value="<?php echo esc_attr($content['form_button']); ?>"> |
| 176 |
</div> |
| 177 |
</div> |
| 178 |
<?php endif; ?> |
| 179 |
|
| 180 |
<?php if ($key === 'split') : ?> |
| 181 |
<div class="kng-maintenance-content-grid"> |
| 182 |
<div class="kng-field"> |
| 183 |
<label><?php esc_html_e('Left title', 'king-addons'); ?></label> |
| 184 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][split_title_a]" value="<?php echo esc_attr($content['split_title_a']); ?>"> |
| 185 |
</div> |
| 186 |
<div class="kng-field"> |
| 187 |
<label><?php esc_html_e('Left text', 'king-addons'); ?></label> |
| 188 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][split_text_a]" value="<?php echo esc_attr($content['split_text_a']); ?>"> |
| 189 |
</div> |
| 190 |
<div class="kng-field"> |
| 191 |
<label><?php esc_html_e('Right title', 'king-addons'); ?></label> |
| 192 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][split_title_b]" value="<?php echo esc_attr($content['split_title_b']); ?>"> |
| 193 |
</div> |
| 194 |
<div class="kng-field"> |
| 195 |
<label><?php esc_html_e('Right text', 'king-addons'); ?></label> |
| 196 |
<input type="text" name="kng_maintenance_settings[template_content][<?php echo esc_attr($key); ?>][split_text_b]" value="<?php echo esc_attr($content['split_text_b']); ?>"> |
| 197 |
</div> |
| 198 |
</div> |
| 199 |
<?php endif; ?> |
| 200 |
</div> |
| 201 |
<?php endforeach; ?> |
| 202 |
</div> |
| 203 |
</div> |
| 204 |
|
| 205 |
<div class="ka-card kng-maintenance-section" data-section="page"> |
| 206 |
<div class="ka-card-header"> |
| 207 |
<span class="dashicons dashicons-admin-page purple"></span> |
| 208 |
<h2><?php esc_html_e('Select WordPress Page', 'king-addons'); ?></h2> |
| 209 |
</div> |
| 210 |
<div class="ka-card-body"> |
| 211 |
<select name="kng_maintenance_settings[page_id]"> |
| 212 |
<option value="0"><?php esc_html_e('Select a page', 'king-addons'); ?></option> |
| 213 |
<?php foreach ($pages as $page) : ?> |
| 214 |
<option value="<?php echo esc_attr($page->ID); ?>" <?php selected($page_id, $page->ID); ?>> |
| 215 |
<?php echo esc_html($page->post_title); ?> |
| 216 |
</option> |
| 217 |
<?php endforeach; ?> |
| 218 |
</select> |
| 219 |
<p class="kng-maintenance-note"><?php esc_html_e('Use an existing page as the maintenance view.', 'king-addons'); ?></p> |
| 220 |
</div> |
| 221 |
</div> |
| 222 |
|
| 223 |
<div class="ka-card kng-maintenance-section" data-section="elementor"> |
| 224 |
<div class="ka-card-header"> |
| 225 |
<span class="dashicons dashicons-welcome-widgets-menus purple"></span> |
| 226 |
<h2><?php esc_html_e('Select Elementor Template', 'king-addons'); ?></h2> |
| 227 |
</div> |
| 228 |
<div class="ka-card-body"> |
| 229 |
<select name="kng_maintenance_settings[elementor_id]" <?php disabled(empty($elementor_templates)); ?>> |
| 230 |
<option value="0"><?php esc_html_e('Select a template', 'king-addons'); ?></option> |
| 231 |
<?php foreach ($elementor_templates as $template) : ?> |
| 232 |
<option value="<?php echo esc_attr($template->ID); ?>" <?php selected($elementor_id, $template->ID); ?>> |
| 233 |
<?php echo esc_html($template->post_title); ?> |
| 234 |
</option> |
| 235 |
<?php endforeach; ?> |
| 236 |
</select> |
| 237 |
<p class="kng-maintenance-note"><?php esc_html_e('Elementor templates give you full design control.', 'king-addons'); ?></p> |
| 238 |
</div> |
| 239 |
</div> |
| 240 |
|
| 241 |
<div class="ka-card"> |
| 242 |
<div class="ka-card-header"> |
| 243 |
<span class="dashicons dashicons-admin-appearance purple"></span> |
| 244 |
<h2><?php esc_html_e('Appearance', 'king-addons'); ?></h2> |
| 245 |
</div> |
| 246 |
<div class="ka-card-body"> |
| 247 |
<div class="ka-row"> |
| 248 |
<div class="ka-row-label"><?php esc_html_e('Theme', 'king-addons'); ?></div> |
| 249 |
<div class="ka-row-field"> |
| 250 |
<select name="kng_maintenance_settings[theme]"> |
| 251 |
<option value="dark" <?php selected($settings['theme'] ?? 'dark', 'dark'); ?>><?php esc_html_e('Dark (Default)', 'king-addons'); ?></option> |
| 252 |
<option value="light" <?php selected($settings['theme'] ?? 'dark', 'light'); ?>><?php esc_html_e('Light', 'king-addons'); ?></option> |
| 253 |
</select> |
| 254 |
</div> |
| 255 |
</div> |
| 256 |
<div class="ka-row"> |
| 257 |
<div class="ka-row-label"><?php esc_html_e('Shortcode', 'king-addons'); ?></div> |
| 258 |
<div class="ka-row-field"> |
| 259 |
<code>[kng_maintenance_page id="<?php echo esc_html($template_id); ?>"]</code> |
| 260 |
<p class="kng-maintenance-note"><?php esc_html_e('Use shortcode to preview inside any page.', 'king-addons'); ?></p> |
| 261 |
</div> |
| 262 |
</div> |
| 263 |
<div class="kng-maintenance-actions"> |
| 264 |
<a href="<?php echo esc_url($preview_url); ?>" target="_blank" class="ka-btn ka-btn-secondary"> |
| 265 |
<?php esc_html_e('Preview Page', 'king-addons'); ?> |
| 266 |
</a> |
| 267 |
</div> |
| 268 |
</div> |
| 269 |
</div> |
| 270 |
|
| 271 |
<div class="ka-card"> |
| 272 |
<div class="ka-submit"> |
| 273 |
<button type="submit" class="ka-btn ka-btn-primary"> |
| 274 |
<?php esc_html_e('Save Builder', 'king-addons'); ?> |
| 275 |
</button> |
| 276 |
</div> |
| 277 |
</div> |
| 278 |
</form> |
| 279 |
|