PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.76
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.76
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / extensions / Data_Table_Builder / templates / view-editor.php

view-editor.php in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.76, at includes/extensions/Data_Table_Builder/templates/view-editor.php

317 lines 15.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Data Table Builder editor view.
4 *
5 * @package King_Addons
6 */
7
8 if (!defined('ABSPATH')) {
9 exit;
10 }
11
12 $table_id = isset($_GET['table_id']) ? absint($_GET['table_id']) : 0;
13 $table = $table_id ? get_post($table_id) : null;
14 $is_edit = $table && $table->post_type === \King_Addons\Data_Table_Builder::POST_TYPE;
15
16 $data = $is_edit ? get_post_meta($table->ID, \King_Addons\Data_Table_Builder::META_DATA, true) : [];
17 $config = $is_edit ? get_post_meta($table->ID, \King_Addons\Data_Table_Builder::META_CONFIG, true) : [];
18 $style = $is_edit ? get_post_meta($table->ID, \King_Addons\Data_Table_Builder::META_STYLE, true) : [];
19 $filters = $is_edit ? get_post_meta($table->ID, \King_Addons\Data_Table_Builder::META_FILTERS, true) : [];
20 $responsive = $is_edit ? get_post_meta($table->ID, \King_Addons\Data_Table_Builder::META_RESPONSIVE, true) : [];
21
22 if (!is_array($data)) {
23 $data = [];
24 }
25
26 if (!is_array($filters)) {
27 $filters = [];
28 }
29
30 if (empty($data['columns'])) {
31 $data['columns'] = [
32 ['label' => __('Column 1', 'king-addons'), 'type' => 'text', 'sortable' => true, 'hide_mobile' => false, 'align' => 'left'],
33 ['label' => __('Column 2', 'king-addons'), 'type' => 'text', 'sortable' => true, 'hide_mobile' => false, 'align' => 'left'],
34 ['label' => __('Column 3', 'king-addons'), 'type' => 'text', 'sortable' => true, 'hide_mobile' => false, 'align' => 'left'],
35 ];
36 }
37
38 if (empty($data['rows'])) {
39 $rows = [];
40 for ($i = 0; $i < 5; $i++) {
41 $row = [];
42 foreach ($data['columns'] as $column) {
43 $row[] = [
44 'value' => '',
45 'tooltip' => '',
46 'rowspan' => 1,
47 'colspan' => 1,
48 ];
49 }
50 $rows[] = $row;
51 }
52 $data['rows'] = $rows;
53 }
54
55 $default_config = [
56 'search' => true,
57 'sorting' => true,
58 'pagination' => true,
59 'rows_per_page' => (int) ($settings['default_rows_per_page'] ?? 10),
60 ];
61
62 $default_style = [
63 'preset' => $settings['default_preset'] ?? 'minimal',
64 'theme' => $settings['default_theme'] ?? 'dark',
65 'zebra' => true,
66 ];
67
68 $default_responsive = [
69 'scroll_x' => true,
70 'hide_columns' => [],
71 ];
72
73 $config = wp_parse_args(is_array($config) ? $config : [], $default_config);
74 $style = wp_parse_args(is_array($style) ? $style : [], $default_style);
75 $responsive = wp_parse_args(is_array($responsive) ? $responsive : [], $default_responsive);
76
77 $state = [
78 'columns' => $data['columns'],
79 'rows' => $data['rows'],
80 'config' => $config,
81 'style' => $style,
82 'responsive' => $responsive,
83 'filters' => $filters,
84 ];
85
86 $presets = [
87 'minimal' => __('Minimal', 'king-addons'),
88 'glass' => __('Glass', 'king-addons'),
89 'contrast' => __('Contrast', 'king-addons'),
90 'soft-gray' => __('Soft Gray', 'king-addons'),
91 'modern-lines' => __('Modern Lines', 'king-addons'),
92 'card-table' => __('Card Table', 'king-addons'),
93 'dark-mode' => __('Dark Mode', 'king-addons'),
94 'highlight-header' => __('Highlighted Header', 'king-addons'),
95 'pricing' => __('Pricing Comparison', 'king-addons'),
96 'feature-matrix' => __('Feature Matrix', 'king-addons'),
97 ];
98 ?>
99
100 <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" class="kng-table-form">
101 <input type="hidden" name="action" value="kng_table_save">
102 <input type="hidden" name="table_id" value="<?php echo esc_attr($table_id); ?>">
103 <?php wp_nonce_field('kng_table_save'); ?>
104
105 <input type="hidden" name="kng_table_data" id="kng-table-data" value="">
106 <input type="hidden" name="kng_table_config" id="kng-table-config" value="">
107 <input type="hidden" name="kng_table_style" id="kng-table-style" value="">
108 <input type="hidden" name="kng_table_filters" id="kng-table-filters" value="<?php echo esc_attr(wp_json_encode($filters)); ?>">
109 <input type="hidden" name="kng_table_responsive" id="kng-table-responsive" value="">
110
111 <div class="kng-table-editor-actions">
112 <div class="kng-table-editor-actions-left">
113 <input type="text" name="title" value="<?php echo esc_attr($is_edit ? $table->post_title : ''); ?>" placeholder="<?php esc_attr_e('Table name', 'king-addons'); ?>" class="kng-table-title-input">
114 </div>
115 <div class="kng-table-editor-actions-right">
116 <?php if ($is_edit) : ?>
117 <a href="<?php echo esc_url(add_query_arg(['page' => 'king-addons-table-builder', 'view' => 'tables'], admin_url('admin.php'))); ?>" class="ka-btn ka-btn-secondary ka-btn-sm">
118 <?php esc_html_e('Back to list', 'king-addons'); ?>
119 </a>
120 <?php endif; ?>
121 <button type="submit" class="ka-btn ka-btn-primary">
122 <?php echo $is_edit ? esc_html__('Save Changes', 'king-addons') : esc_html__('Create Table', 'king-addons'); ?>
123 </button>
124 </div>
125 </div>
126
127 <div class="kng-table-editor" data-state="<?php echo esc_attr(wp_json_encode($state)); ?>">
128 <aside class="kng-table-sidebar">
129 <div class="ka-card">
130 <div class="ka-card-header">
131 <span class="dashicons dashicons-list-view purple"></span>
132 <h2><?php esc_html_e('Structure', 'king-addons'); ?></h2>
133 </div>
134 <div class="ka-card-body">
135 <div class="kng-column-list"></div>
136 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm kng-add-column">
137 <span class="dashicons dashicons-plus"></span>
138 <?php esc_html_e('Add Column', 'king-addons'); ?>
139 </button>
140 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm kng-remove-column">
141 <span class="dashicons dashicons-trash"></span>
142 <?php esc_html_e('Remove Column', 'king-addons'); ?>
143 </button>
144 </div>
145 </div>
146
147 <div class="ka-card">
148 <div class="ka-card-header">
149 <span class="dashicons dashicons-editor-table purple"></span>
150 <h2><?php esc_html_e('Rows', 'king-addons'); ?></h2>
151 </div>
152 <div class="ka-card-body">
153 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm kng-add-row">
154 <span class="dashicons dashicons-plus"></span>
155 <?php esc_html_e('Add Row', 'king-addons'); ?>
156 </button>
157 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm kng-remove-row">
158 <span class="dashicons dashicons-trash"></span>
159 <?php esc_html_e('Remove Row', 'king-addons'); ?>
160 </button>
161 </div>
162 </div>
163
164 <div class="ka-card">
165 <div class="ka-card-header">
166 <span class="dashicons dashicons-search purple"></span>
167 <h2><?php esc_html_e('Features', 'king-addons'); ?></h2>
168 </div>
169 <div class="ka-card-body">
170 <label class="ka-toggle">
171 <input type="checkbox" data-config="search" <?php checked(!empty($config['search'])); ?> />
172 <span class="ka-toggle-slider"></span>
173 <span class="ka-toggle-label"><?php esc_html_e('Search', 'king-addons'); ?></span>
174 </label>
175 <label class="ka-toggle">
176 <input type="checkbox" data-config="sorting" <?php checked(!empty($config['sorting'])); ?> />
177 <span class="ka-toggle-slider"></span>
178 <span class="ka-toggle-label"><?php esc_html_e('Sorting', 'king-addons'); ?></span>
179 </label>
180 <label class="ka-toggle">
181 <input type="checkbox" data-config="pagination" <?php checked(!empty($config['pagination'])); ?> />
182 <span class="ka-toggle-slider"></span>
183 <span class="ka-toggle-label"><?php esc_html_e('Pagination', 'king-addons'); ?></span>
184 </label>
185 <div class="kng-field">
186 <label><?php esc_html_e('Rows per page', 'king-addons'); ?></label>
187 <input type="number" min="5" max="100" data-config="rows_per_page" value="<?php echo esc_attr($config['rows_per_page']); ?>">
188 </div>
189 </div>
190 </div>
191
192 <div class="ka-card">
193 <div class="ka-card-header">
194 <span class="dashicons dashicons-art purple"></span>
195 <h2><?php esc_html_e('Style', 'king-addons'); ?></h2>
196 </div>
197 <div class="ka-card-body">
198 <div class="kng-field">
199 <label><?php esc_html_e('Preset', 'king-addons'); ?></label>
200 <select data-style="preset">
201 <?php foreach ($presets as $key => $label) : ?>
202 <option value="<?php echo esc_attr($key); ?>" <?php selected($style['preset'], $key); ?>>
203 <?php echo esc_html($label); ?>
204 </option>
205 <?php endforeach; ?>
206 </select>
207 </div>
208 <div class="kng-field">
209 <label><?php esc_html_e('Theme', 'king-addons'); ?></label>
210 <select data-style="theme">
211 <option value="dark" <?php selected($style['theme'], 'dark'); ?>><?php esc_html_e('Dark', 'king-addons'); ?></option>
212 <option value="light" <?php selected($style['theme'], 'light'); ?>><?php esc_html_e('Light', 'king-addons'); ?></option>
213 </select>
214 </div>
215 <label class="ka-toggle">
216 <input type="checkbox" data-style="zebra" <?php checked(!empty($style['zebra'])); ?> />
217 <span class="ka-toggle-slider"></span>
218 <span class="ka-toggle-label"><?php esc_html_e('Zebra rows', 'king-addons'); ?></span>
219 </label>
220 </div>
221 </div>
222
223 <div class="ka-card">
224 <div class="ka-card-header">
225 <span class="dashicons dashicons-smartphone purple"></span>
226 <h2><?php esc_html_e('Responsive', 'king-addons'); ?></h2>
227 </div>
228 <div class="ka-card-body">
229 <label class="ka-toggle">
230 <input type="checkbox" data-responsive="scroll_x" <?php checked(!empty($responsive['scroll_x'])); ?> />
231 <span class="ka-toggle-slider"></span>
232 <span class="ka-toggle-label"><?php esc_html_e('Horizontal scroll on mobile', 'king-addons'); ?></span>
233 </label>
234 <p class="ka-row-desc"><?php esc_html_e('Hide columns on mobile in the Structure panel.', 'king-addons'); ?></p>
235 </div>
236 </div>
237
238 <div class="ka-card">
239 <div class="ka-card-header">
240 <span class="dashicons dashicons-lock pink"></span>
241 <h2><?php esc_html_e('Advanced', 'king-addons'); ?></h2>
242 <?php if (!$is_pro) : ?><span class="ka-pro-badge">PRO</span><?php endif; ?>
243 </div>
244 <div class="ka-card-body">
245 <p><?php esc_html_e('Conditional formatting, formulas, and advanced filters are available in Pro.', 'king-addons'); ?></p>
246 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm" disabled>
247 <?php esc_html_e('Unlock Pro Features', 'king-addons'); ?>
248 </button>
249 </div>
250 </div>
251 </aside>
252
253 <section class="kng-table-main">
254 <div class="kng-table-grid-wrap">
255 <table class="kng-table-grid" id="kng-table-grid">
256 <thead></thead>
257 <tbody></tbody>
258 </table>
259 </div>
260 <div class="kng-table-import">
261 <div class="kng-table-import-header">
262 <h3><?php esc_html_e('Paste CSV / TSV', 'king-addons'); ?></h3>
263 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm kng-paste-clipboard">
264 <span class="dashicons dashicons-clipboard"></span>
265 <?php esc_html_e('Paste from Clipboard', 'king-addons'); ?>
266 </button>
267 </div>
268 <textarea class="kng-table-import-text" rows="4" placeholder="Name,Price,Stock"></textarea>
269 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm kng-apply-import">
270 <?php esc_html_e('Apply Data', 'king-addons'); ?>
271 </button>
272 </div>
273 </section>
274
275 <aside class="kng-table-inspector">
276 <div class="ka-card">
277 <div class="ka-card-header">
278 <span class="dashicons dashicons-feedback purple"></span>
279 <h2><?php esc_html_e('Cell Inspector', 'king-addons'); ?></h2>
280 </div>
281 <div class="ka-card-body">
282 <div class="kng-field">
283 <label><?php esc_html_e('Tooltip', 'king-addons'); ?></label>
284 <input type="text" class="kng-cell-tooltip" placeholder="<?php esc_attr_e('Tooltip text', 'king-addons'); ?>">
285 </div>
286 <div class="kng-field">
287 <label><?php esc_html_e('Row span', 'king-addons'); ?></label>
288 <input type="number" min="1" max="10" class="kng-cell-rowspan" value="1">
289 </div>
290 <div class="kng-field">
291 <label><?php esc_html_e('Col span', 'king-addons'); ?></label>
292 <input type="number" min="1" max="10" class="kng-cell-colspan" value="1">
293 </div>
294 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm kng-apply-span">
295 <?php esc_html_e('Apply Span', 'king-addons'); ?>
296 </button>
297 </div>
298 </div>
299
300 <div class="ka-card">
301 <div class="ka-card-header">
302 <span class="dashicons dashicons-admin-tools purple"></span>
303 <h2><?php esc_html_e('Quick Actions', 'king-addons'); ?></h2>
304 </div>
305 <div class="ka-card-body">
306 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm" disabled>
307 <?php esc_html_e('Merge cells (Pro)', 'king-addons'); ?>
308 </button>
309 <button type="button" class="ka-btn ka-btn-secondary ka-btn-sm" disabled>
310 <?php esc_html_e('Formula helper (Pro)', 'king-addons'); ?>
311 </button>
312 </div>
313 </div>
314 </aside>
315 </div>
316 </form>
317