PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 1.0.5
Adminify – White Label, Admin Menu Editor, Login Customizer v1.0.5
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 1.0.5, at Inc/Modules/AdminColumns/AdminColumns.php

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