PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 1.0.3
Adminify – White Label, Admin Menu Editor, Login Customizer v1.0.3
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.3, at inc/Modules/AdminColumns/AdminColumns.php

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