PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 2.0.7
Adminify – White Label, Admin Menu Editor, Login Customizer v2.0.7
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
adminify / Inc / Modules / AdminColumns / AdminColumns.php

AdminColumns.php in Adminify – White Label, Admin Menu Editor, Login Customizer 2.0.7, at Inc/Modules/AdminColumns/AdminColumns.php

256 lines 8.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify\Inc\Modules\AdminColumns;
4
5 use WPAdminify\Inc\Modules\AdminColumns\Lib\Adminify_Columns_Manager;
6 use WPAdminify\Inc\Modules\AdminColumns\Lib\Inc\Carbon_Admin_Columns_Manager;
7 use WPAdminify\Inc\Modules\AdminColumns\Lib\Inc\Carbon_Admin_Column;
8 use WPAdminify\Inc\Utils;
9
10 // no direct access allowed
11 if (!defined('ABSPATH')) exit;
12
13 /**
14 * WP Adminify
15 * Module: Admin Columns
16 *
17 * @author Jewel Theme <support@jeweltheme.com>
18 */
19
20 class AdminColumns
21 {
22 public $url;
23
24 // Key: Unique Screen ID
25 private $key;
26
27 private $post_type;
28
29 public $prefix;
30
31 public function __construct()
32 {
33 $this->prefix = '_wpadminify_admin_columns_settings';
34
35 if (is_admin()) {
36 add_action('admin_menu', [$this, 'jltwp_adminify_admin_columns_menu'], 51);
37 add_action('admin_enqueue_scripts', [$this, 'jltwp_adminify_admin_columns_enqueue_scripts'], 100);
38 add_action('current_screen', [$this, 'manage_admin_columns']);
39 add_filter('admin_body_class', [$this, 'jltwp_adminify_admin_columns_body_class']);
40 }
41
42 add_action('wp_ajax_adminify_admin_columns', [$this, 'handle_adminify_admin_columns']);
43 }
44
45
46 /**
47 * Add Body Class
48 */
49 public function jltwp_adminify_admin_columns_body_class($classes)
50 {
51 $classes .= ' wp-adminify-admin-columns ';
52
53 if (is_rtl()) {
54 $classes .= ' wp-adminify-admin-columns-rtl ';
55 }
56 return $classes;
57 }
58
59
60 public function manage_admin_columns()
61 {
62
63 $screen = get_current_screen();
64
65 $allowed_screens_base = ['edit', 'edit-tags'];
66
67 if (!in_array($base = $screen->base, $allowed_screens_base)) return;
68
69 new Adminify_Columns_Manager();
70
71 if ($base == 'edit' && !empty($screen->post_type)) {
72 $this->manage_post_type_admin_columns($screen->post_type);
73 }
74
75 if ($base == 'edit-tags' && !empty($screen->taxonomy)) {
76 $this->manage_taxonomy_admin_columns($screen->taxonomy);
77 }
78 }
79
80 public function get_width($width)
81 {
82
83 $_width = null;
84
85 if (!empty($width_val = $width['value']) && $width_val != 'auto') {
86 $_width = (int) $width_val;
87 if ($width['unit'] == '%') $_width .= '%';
88 }
89
90 return $_width;
91 }
92
93 public function manage_post_type_admin_columns($post_type)
94 {
95
96 $columns = adminify__get_post_type_all_columns($post_type);
97 $columns_keys = array_keys($columns);
98 $display_columns = adminify_prepare_post_type_column_meta($post_type);
99 $display_column_keys = wp_list_pluck($display_columns, 'name');
100 $columns_manager = Carbon_Admin_Columns_Manager::modify_columns('post', $post_type);
101
102 array_unshift($display_column_keys, 'cb');
103 array_unshift($display_column_keys, 'adminify_move');
104
105 $remove_column_keys = array_values(array_diff($columns_keys, $display_column_keys));
106
107 // Remove Default Columns
108 if (!empty($remove_column_keys)) $columns_manager->remove($remove_column_keys);
109
110 // Modify Default Columns
111 $columns = array_map(function ($column) {
112 return Carbon_Admin_Column::create($column['label'])->set_name($column['name'])->set_width($this->get_width($column['width']))->set_callback('__return_false');
113 }, $display_columns);
114
115 // Add Custom Columns with callback
116
117 // @todo implement
118
119 $columns_manager->sort($display_column_keys)->add($columns);
120 }
121
122 public function manage_taxonomy_admin_columns($taxonomy)
123 {
124 $columns = adminify__get_taxonomy_all_columns($taxonomy);
125 $columns_keys = array_keys($columns);
126 $display_columns = adminify_prepare_taxonomy_column_meta($taxonomy);
127 $display_column_keys = wp_list_pluck($display_columns, 'name');
128 $remove_column_keys = array_values(array_diff($columns_keys, $display_column_keys));
129 $columns_manager = Carbon_Admin_Columns_Manager::modify_columns('taxonomy', $taxonomy);
130
131 // Remove Default Columns
132 if (!empty($remove_column_keys)) $columns_manager->remove($remove_column_keys);
133
134 // Modify Default Columns
135 $columns = array_map(function ($column) {
136 return Carbon_Admin_Column::create($column['label'])->set_name($column['name'])->set_width($this->get_width($column['width']));
137 }, $display_columns);
138
139 // Add Custom Columns with callback
140 // @todo implement
141
142 array_unshift($display_column_keys, 'cb');
143
144 $columns_manager->sort($display_column_keys)->add($columns);
145 }
146
147 public function handle_adminify_admin_columns()
148 {
149
150 check_ajax_referer('adminify-admin-columns-secirity');
151
152 if (!empty($_POST['route'])) {
153 $route_handler = 'handle_' . $_POST['route'];
154 if (is_callable(get_class($this), $route_handler)) $this->$route_handler($_POST);
155 }
156
157 wp_send_json_error(['message' => __('Something is wrong, no route found')], 400);
158 }
159
160 public function handle_get_taxonomy_data($data)
161 {
162 $data = adminify__get_taxonomies_columns();
163 wp_send_json_success($data);
164 }
165
166 public function handle_get_post_type_data($data)
167 {
168 $data = adminify__get_post_types_columns();
169 wp_send_json_success($data);
170 }
171
172 public function handle_save_columns_data($data)
173 {
174
175 $data = json_encode($data, JSON_UNESCAPED_SLASHES);
176 $data = str_replace('\\\\', '', $data);
177 $data = json_decode($data, true);
178
179 $post_types = empty($data['post_types']) ? [] : $data['post_types'];
180 $taxonomies = empty($data['taxonomies']) ? [] : $data['taxonomies'];
181
182 foreach ($post_types as $post_type) {
183 $display_columns = empty($post_type['display_columns']) ? [] : $post_type['display_columns'];
184 update_option('_adminify_admin_columns_meta_' . $post_type['name'], $display_columns);
185 }
186
187 foreach ($taxonomies as $taxonomy) {
188 $display_columns = empty($taxonomy['display_columns']) ? [] : $taxonomy['display_columns'];
189 update_option('_adminify_admin_taxonomy_columns_meta_' . $taxonomy['name'], $display_columns);
190 }
191
192 wp_send_json_success([
193 'post_types' => $post_types,
194 'taxonomies' => $taxonomies
195 ]);
196 }
197
198
199 public function jltwp_adminify_admin_columns_menu()
200 {
201 add_submenu_page(
202 'wp-adminify-settings',
203 esc_html__('Admin Columns by WP Adminify', 'adminify'),
204 esc_html__('Admin Columns', 'adminify'),
205 apply_filters('jltwp_adminify_capability', 'manage_options'),
206 'adminify-admin-columns', // Page slug, will be displayed in URL
207 [$this, 'jltwp_adminify_admin_columns_contents']
208 );
209 }
210
211
212 public function jltwp_adminify_admin_columns_enqueue_scripts()
213 {
214 global $pagenow;
215
216 if ('admin.php' === $pagenow && 'adminify-admin-columns' === $_GET['page']) {
217
218 wp_enqueue_style('wp-adminify-admin-columns');
219
220 // wp_enqueue_script('jquery');
221 // wp_enqueue_script('jquery-ui-core');
222 // wp_enqueue_script('jquery-ui-slider');
223
224 $adminify_columns_data = [
225 "ajax_nonce" => wp_create_nonce('adminify-admin-columns-secirity'),
226 "ajax_action" => 'adminify_admin_columns',
227 "ajaxurl" => admin_url('admin-ajax.php'),
228 "adminurl" => admin_url(),
229 "siteurl" => home_url(),
230 "is_pro" => wp_validate_boolean(jltwp_adminify()->can_use_premium_code__premium_only()),
231 'pro_notice' => Utils::adminify_upgrade_pro()
232 ];
233
234 wp_localize_script('wp-adminify-admin-columns', 'adminify_columns_data', $adminify_columns_data);
235 wp_enqueue_script('wp-adminify-admin-columns');
236 }
237 }
238
239
240 public function jltwp_adminify_admin_columns_contents()
241 {
242
243 ?>
244
245 <div class="wrap">
246 <div class="wp-adminify--admin-columns--editor--container">
247 <div class="wp-adminify--admin-columns--editor--settings mt-6">
248 <div id="wpadminify-admin-columns"></div>
249 </div>
250 </div>
251 </div>
252
253 <?php
254 }
255 }
256