PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.6
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.6
6.0.6 6.0.5 6.0.2 6.0.3 6.0.4 6.0.1 6.0.0 5.0.8 5.0.9 4.0.9 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 All 58 releases
← All changes | includes/class-wppm-admin.php +192 -56 5.0.36.0.6 View file →
@@ -10,9 +10,11 @@
10 10 // constructor
11 11 public function __construct() {
12 12 add_action( 'admin_enqueue_scripts', array( $this, 'loadScripts') );
13 13 add_action( 'admin_menu', array($this,'wppm_register_dashboard_menu') );
14 - // add_action( 'admin_init',array($this,'wppm_appearance_setting_tab') );
14 + add_action( 'admin_notices', array($this,'wppm_update_admin_notice'));
15 + add_action('wp_footer', array($this,'wppm_add_notification_container'));
16 + add_action('admin_footer', array($this,'wppm_add_notification_container'));
15 17 add_action( 'wp_ajax_wppm_add_new_project',array($this,'wppm_add_new_project'));
16 18 add_action( 'wp_ajax_wppm_open_project',array($this,'wppm_open_project'));
17 19 add_action( 'wp_ajax_nopriv_wppm_open_project',array($this,'wppm_open_project'));
18 20 add_action( 'wp_ajax_wppm_get_users',array($this,'wppm_get_users'));
@@ -52,9 +54,9 @@
52 54 add_action('wp_ajax_wppm_set_edit_task_status',array($this,'wppm_set_edit_task_status'));
53 55 add_action('wp_ajax_wppm_delete_task_status',array($this,'wppm_delete_task_status'));
54 56 add_action('wp_ajax_wppm_set_task_status_order',array($this,'wppm_set_task_status_order'));
55 57 add_action('wp_ajax_wppm_create_task',array($this,'wppm_create_task'));
56 - add_action('wp_ajax_wppm_get_task_list_card_view',array($this,'wppm_get_task_list_card_view'),100,3);
58 + add_action('wp_ajax_wppm_get_task_list_card_view',array($this,'wppm_get_task_list_card_view'),100,4);
57 59 add_action('wp_ajax_wppm_drag_and_drop_card',array($this,'wppm_drag_and_drop_card'));
58 60 add_action('wp_ajax_wppm_open_task',array($this,'wppm_open_task'));
59 61 add_action( 'wp_ajax_nopriv_wppm_open_task',array($this,'wppm_open_task'));
60 62 add_action('wp_ajax_wppm_add_new_checklist',array($this,'wppm_add_new_checklist'));
@@ -91,9 +93,9 @@
91 93 add_action('wp_ajax_wppm_edit_project_creator',array($this,'wppm_edit_project_creator'));
92 94 add_action('wp_ajax_wppm_set_change_project_raised_by',array($this,'wppm_set_change_project_raised_by'));
93 95 add_action('wp_ajax_wppm_get_delete_project',array($this,'wppm_get_delete_project'));
94 96 add_action('wp_ajax_wppm_set_delete_project',array($this,'wppm_set_delete_project'));
95 - add_action('wp_ajax_wppm_get_delete_task',array($this,'wppm_get_delete_task'),100,2);
97 + add_action('wp_ajax_wppm_get_delete_task',array($this,'wppm_get_delete_task'),100,3);
96 98 add_action('wp_ajax_wppm_set_delete_task',array($this,'wppm_set_delete_task'));
97 99 add_action('wp_ajax_wppm_get_edit_email_notification',array($this,'wppm_get_edit_email_notification'));
98 100 add_action('wp_ajax_wppm_get_templates',array($this,'wppm_get_templates'));
99 101 add_action('wp_ajax_wppm_set_edit_email_notification',array($this,'wppm_set_edit_email_notification'));
@@ -106,9 +108,9 @@
106 108 add_action('wppm_after_project_created',array($this,'wppm_en_project_created'),100,1);
107 109 add_action('wppm_after_submit_task_comment',array($this,'wppm_en_submit_task_comment'),10,2);
108 110 add_action('wppm_after_submit_proj_comment',array($this,'wppm_en_submit_proj_comment'),10,2);
109 111 add_action('wp_ajax_wppm_set_general_settings',array($this,'wppm_set_general_settings'));
110 - add_action('wp_ajax_wppm_get_project_tasks',array($this,'wppm_get_project_tasks'));
112 + add_action('wp_ajax_wppm_get_project_tasks',array($this,'wppm_get_project_tasks'),100,2);
111 113 add_action('wp_ajax_wppm_remove_thread_attachment',array($this,'wppm_remove_thread_attachment'),10,5);
112 114 add_action('wp_ajax_wppm_remove_proj_thread_attachment',array($this,'wppm_remove_proj_thread_attachment'),10,4);
113 115 add_action('wp_ajax_wppm_remove_checklist_item',array($this,'wppm_remove_checklist_item'),10,4);
114 116 add_action('wp_ajax_wppm_clone_task',array($this,'wppm_clone_task'),10,2);
@@ -172,13 +174,39 @@
172 174 add_action('wp_ajax_wppm_update_checklist_order',array($this,'wppm_update_checklist_order'));
173 175 add_action('wp_ajax_wppm_edit_checklist_item',array($this,'wppm_edit_checklist_item'),10,5);
174 176 add_action('wp_ajax_wppm_set_checklist_item_name',array($this,'wppm_set_checklist_item_name'),10,3);
175 177 add_action('wp_ajax_wppm_archive_task',array($this,'wppm_archive_task'));
178 + add_action('wp_ajax_wppm_get_project_tasks_kanban_view',array($this,'wppm_get_project_tasks_kanban_view'));
179 + add_action('wp_ajax_wppm_get_notifications',array($this,'wppm_get_notifications_callback'));
180 + add_action('wp_ajax_wppm_mark_notification_read',array($this,'wppm_mark_notification_as_read'));
181 + add_action('wp_ajax_wppm_archive_project',array($this,'wppm_archive_project'));
182 + add_action('wp_ajax_wppm_archieve_project_list',array($this,'wppm_archieve_project_list'),100,1);
183 + add_action('wp_ajax_wppm_add_new_subtask',array($this,'wppm_add_new_subtask'));
184 + add_action('wp_ajax_wppm_remove_subtask',array($this,'wppm_remove_subtask'));
185 + add_action('wp_ajax_wppm_convert_subtask_to_task',array($this,'wppm_convert_subtask_to_task'));
176 186 }
177 187
178 188 // Load admin scripts
179 189 public function loadScripts(){
180 - if(isset($_REQUEST['page']) && preg_match('/wppm-/',sanitize_text_field($_REQUEST['page']))) :
190 + $loading_html = '<div class="wppm_loading_icon"><img src="'.WPPM_PLUGIN_URL.'asset/images/ajax-loading.gif"></div>';
191 + wp_enqueue_script(
192 + 'wppm-notification',
193 + WPPM_PLUGIN_URL . 'asset/js/notification.js',
194 + array( 'jquery' ),
195 + WPPM_VERSION,
196 + true
197 + );
198 +
199 + wp_localize_script(
200 + 'wppm-notification',
201 + 'wppm_notification',
202 + array(
203 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
204 + 'nonce' => wp_create_nonce( 'wppm_notification_nonce' ),
205 + 'loading_html' => $loading_html,
206 + )
207 + );
208 + if(isset($_REQUEST['page']) && preg_match('/wppm-/',sanitize_text_field($_REQUEST['page'])) || (isset($_REQUEST['page']) && $_REQUEST['page'] == 'wppm_dashboard')) :
181 209 wp_enqueue_script('jquery');
182 210 wp_enqueue_script('jquery-ui-core');
183 211 wp_enqueue_script( 'jquery-ui-sortable' );
184 212 wp_enqueue_script( 'jquery-ui-datepicker' );
@@ -216,22 +244,29 @@
216 244 wp_enqueue_script('wppm-datatable-js', WPPM_PLUGIN_URL.'asset/lib/DataTables/datatables.min.js?version='.WPPM_VERSION, ['jquery'], null, true);
217 245 wp_enqueue_style('wppm-datatable-css', WPPM_PLUGIN_URL.'asset/lib/DataTables/datatables.min.css?version='.WPPM_VERSION );
218 246 // selectWoo.
219 247 wp_enqueue_script( 'selectWoo', WPPM_PLUGIN_URL . 'asset/js/selectWoo/selectWoo.full.min.js', array( 'jquery' ), WPPM_VERSION, true );
248 + wp_enqueue_script('chartjs',WPPM_PLUGIN_URL.'asset/lib/chartjs/chart.js?version='.WPPM_VERSION, ['jquery'], null, true);
220 249 //localize script
221 250 $loading_html = '<div class="wppm_loading_icon"><img src="'.WPPM_PLUGIN_URL.'asset/images/ajax-loading.gif"></div>';
251 + $wppm_rich_text_editor = get_option('wppm_rich_text_editor');
252 + $wppm_tinymce_visibility_open_task = get_option('wppm_tinymce_visibility_open_task');
253 + $wppm_tinymce_visibility_open_project = get_option('wppm_tinymce_visibility_open_project');
222 254 $localize_script_data = apply_filters( 'wppm_admin_localize_script', array(
223 - 'ajax_url' => admin_url( 'admin-ajax.php' ),
255 + 'ajax_url' => esc_url(admin_url( 'admin-ajax.php' )),
224 256 'loading_html' => $loading_html,
225 - 'add_new_category' => __('Add New Category','taskbuilder'),
226 - 'edit_category' =>__('Edit Category','taskbuilder'),
227 - 'please_wait' =>__('Please wait ...','taskbuilder'),
228 - 'confirm' =>__('Are you sure?','taskbuilder'),
229 - 'add_new_status' =>__('Add New Status','taskbuilder'),
230 - 'edit_status' =>__('Edit status','taskbuilder'),
231 - 'add_new_priority' =>__('Add New Priority','taskbuilder'),
232 - 'templates' => __('Templates','taskbuilder'),
257 + 'add_new_category' => esc_html__('Add New Category','taskbuilder'),
258 + 'edit_category' => esc_html__('Edit Category','taskbuilder'),
259 + 'please_wait' => esc_html__('Please wait ...','taskbuilder'),
260 + 'confirm' => esc_html__('Are you sure?','taskbuilder'),
261 + 'add_new_status' => esc_html__('Add New Status','taskbuilder'),
262 + 'edit_status' => esc_html__('Edit status','taskbuilder'),
263 + 'add_new_priority' => esc_html__('Add New Priority','taskbuilder'),
264 + 'templates' => esc_html__('Templates','taskbuilder'),
233 265 'page' => isset($_REQUEST['page']) ? sanitize_text_field($_REQUEST['page']) : '',
266 + 'rich_text_editor' => !empty($wppm_rich_text_editor) ? (int) $wppm_rich_text_editor : 0,
267 + 'wppm_tinymce_visibility_open_task' => !empty($wppm_tinymce_visibility_open_task) ? (int) $wppm_tinymce_visibility_open_task : 0,
268 + 'wppm_tinymce_visibility_open_project' => !empty($wppm_tinymce_visibility_open_project) ? (int) $wppm_tinymce_visibility_open_project : 0,
234 269 ));
235 270 wp_localize_script( 'wppm-admin', 'wppm_admin', $localize_script_data );
236 271 endif;
237 272 }
@@ -239,29 +274,46 @@
239 274 // Dashboard Menus
240 275 public function wppm_register_dashboard_menu(){
241 276 global $current_user,$wppmfunction;
242 277 add_menu_page(
243 - __( 'Projects', 'taskbuilder'),
244 - __( 'Projects','taskbuilder'),
278 + esc_html__( 'Taskbuilder', 'taskbuilder'),
279 + esc_html__( 'Taskbuilder','taskbuilder'),
245 280 'read',
246 - 'wppm-projects',
247 - array($this,'wppm_projects'),
248 - WPPM_PLUGIN_URL.'asset/images/tasklist.svg',
281 + 'wppm-dashboard',
282 + array($this,'wppm_dashboard'),
283 + WPPM_PLUGIN_URL.'asset/images/taskbuilder_logo.svg',
249 284 25
250 285 );
251 286 add_submenu_page(
252 - 'wppm-projects',
253 - __('Project List', 'taskbuilder' ),
254 - __('Projects', 'taskbuilder' ),
287 + 'wppm-dashboard',
288 + esc_html__('Dashboard', 'taskbuilder' ),
289 + esc_html__('Dashboard', 'taskbuilder' ),
290 + 'read',
291 + 'wppm-dashboard',
292 + array($this,'wppm_dashboard')
293 + );
294 + add_submenu_page(
295 + 'wppm-dashboard',
296 + esc_html__('Project List', 'taskbuilder' ),
297 + esc_html__('Projects', 'taskbuilder' ),
255 298 'read',
256 299 'wppm-projects',
257 300 array($this,'wppm_projects')
258 301 );
302 + // add_submenu_page(
303 + // 'wppm-dashboard',
304 + // esc_html__('Archived Projects', 'taskbuilder' ),
305 + // esc_html__('Archived Projects', 'taskbuilder' ),
306 + // 'read',
307 + // 'wppm-archived-projects',
308 + // array($this,'wppm_archived_projects')
309 + // );
310 +
259 311
260 312 add_submenu_page(
261 - 'wppm-projects',
262 - __('Tasks', 'taskbuilder' ),
263 - __('Tasks', 'taskbuilder' ),
313 + 'wppm-dashboard',
314 + esc_html__('Tasks', 'taskbuilder' ),
315 + esc_html__('Tasks', 'taskbuilder' ),
264 316 'read',
265 317 'wppm-tasks',
266 318 array($this,'wppm_tasks')
267 319 );
@@ -266,11 +318,11 @@
266 318 array($this,'wppm_tasks')
267 319 );
268 320
269 321 add_submenu_page(
270 - 'wppm-projects',
271 - __('Archived Tasks', 'taskbuilder' ),
272 - __('Archived Tasks', 'taskbuilder' ),
322 + 'wppm-dashboard',
323 + esc_html__('Archived Tasks', 'taskbuilder' ),
324 + esc_html__('Archived Tasks', 'taskbuilder' ),
273 325 'read',
274 326 'wppm-archived-tasks',
275 327 array($this,'wppm_archived_tasks')
276 328 );
@@ -276,27 +328,27 @@
276 328 );
277 329
278 330 if(current_user_can('manage_options')){
279 331 add_submenu_page(
280 - 'wppm-projects',
281 - __('Email Notifications', 'taskbuilder' ),
282 - __('Email Notifications', 'taskbuilder' ),
332 + 'wppm-dashboard',
333 + esc_html__('Email Notifications', 'taskbuilder' ),
334 + esc_html__('Email Notifications', 'taskbuilder' ),
283 335 'manage_options',
284 336 'wppm-email-notifications',
285 337 array($this,'wppm_email_notifications')
286 338 );
287 339 add_submenu_page(
288 - 'wppm-projects',
289 - __('Settings', 'taskbuilder' ),
290 - __('Settings', 'taskbuilder' ),
340 + 'wppm-dashboard',
341 + esc_html__('Settings', 'taskbuilder' ),
342 + esc_html__('Settings', 'taskbuilder' ),
291 343 'manage_options',
292 344 'wppm-settings',
293 345 array($this,'settings')
294 346 );
295 347 add_submenu_page(
296 - 'wppm-projects',
297 - __('License', 'taskbuilder' ),
298 - __('License', 'taskbuilder' ),
348 + 'wppm-dashboard',
349 + esc_html__('License', 'taskbuilder' ),
350 + esc_html__('License', 'taskbuilder' ),
299 351 'manage_options',
300 352 'wppm-license',
301 353 array($this,'licenses')
302 354 );
@@ -301,11 +353,11 @@
301 353 array($this,'licenses')
302 354 );
303 355
304 356 add_submenu_page(
305 - 'wppm-projects',
306 - __('Pro Features', 'taskbuilder' ),
307 - __('Pro Features', 'taskbuilder' ),
357 + 'wppm-dashboard',
358 + esc_html__('Pro Features', 'taskbuilder' ),
359 + esc_html__('Pro Features', 'taskbuilder' ),
308 360 'manage_options',
309 361 'wppm-addons',
310 362 array($this,'wppm_addons')
311 363 );
@@ -313,27 +365,27 @@
313 365 }
314 366
315 367 if(current_user_can('wppm_admin') && !current_user_can('manage_options')){
316 368 add_submenu_page(
317 - 'wppm-projects',
318 - __('Email Notifications', 'taskbuilder' ),
319 - __('Email Notifications', 'taskbuilder' ),
369 + 'wppm-dashboard',
370 + esc_html__('Email Notifications', 'taskbuilder' ),
371 + esc_html__('Email Notifications', 'taskbuilder' ),
320 372 'wppm_admin',
321 373 'wppm-email-notifications',
322 374 array($this,'wppm_email_notifications')
323 375 );
324 376 add_submenu_page(
325 - 'wppm-projects',
326 - __('Settings', 'taskbuilder' ),
327 - __('Settings', 'taskbuilder' ),
377 + 'wppm-dashboard',
378 + esc_html__('Settings', 'taskbuilder' ),
379 + esc_html__('Settings', 'taskbuilder' ),
328 380 'wppm_admin',
329 381 'wppm-settings',
330 382 array($this,'settings')
331 383 );
332 384 add_submenu_page(
333 - 'wppm-projects',
334 - __('License', 'taskbuilder' ),
335 - __('License', 'taskbuilder' ),
385 + 'wppm-dashboard',
386 + esc_html__('License', 'taskbuilder' ),
387 + esc_html__('License', 'taskbuilder' ),
336 388 'manage_options',
337 389 'wppm-license',
338 390 array($this,'licenses')
339 391 );
@@ -338,16 +390,33 @@
338 390 array($this,'licenses')
339 391 );
340 392
341 393 add_submenu_page(
342 - 'wppm-projects',
343 - __('Addons', 'taskbuilder' ),
344 - __('Addons', 'taskbuilder' ),
394 + 'wppm-dashboard',
395 + esc_html__('Addons', 'taskbuilder' ),
396 + esc_html__('Addons', 'taskbuilder' ),
345 397 'wppm_admin',
346 398 'wppm-addons',
347 399 array($this,'wppm_addons')
348 400 );
349 401 }
402 +
403 + if ( current_user_can('manage_options') || current_user_can('wppm_admin') ) {
404 + foreach ( wppm_get_locked_pro_addons_by_placement('menu') as $wppm_addon_key => $wppm_addon ) {
405 + add_submenu_page(
406 + 'wppm-dashboard',
407 + $wppm_addon['label'],
408 + $wppm_addon['label'] . ' <span class="wppm-pro-badge" title="' . esc_attr__('Pro feature', 'taskbuilder') . '">' . wppm_pro_badge_svg() . '</span>',
409 + 'read',
410 + 'wppm-pro-' . $wppm_addon_key,
411 + function() use ( $wppm_addon ) {
412 + $addon = $wppm_addon;
413 + include WPPM_ABSPATH . 'includes/admin/wppm_pro_addon_teaser.php';
414 + }
415 + );
416 + }
417 + }
418 +
350 419 do_action('wppm_add_submenu_page');
351 420 }
352 421
353 422 public function wppm_projects(){
@@ -353,8 +422,12 @@
353 422 public function wppm_projects(){
354 423 include WPPM_ABSPATH.'includes/admin/projects/projects.php';
355 424 }
356 425
426 + public function wppm_dashboard(){
427 + include WPPM_ABSPATH.'includes/admin/dashboard.php';
428 + }
429 +
357 430 public function wppm_add_new_project(){
358 431 include WPPM_ABSPATH.'includes/admin/projects/wppm_add_new_project.php';
359 432 die();
360 433 }
@@ -366,8 +439,18 @@
366 439 public function wppm_archived_tasks(){
367 440 include WPPM_ABSPATH.'includes/admin/tasks/wppm_tasks.php';
368 441 }
369 442
443 + // public function wppm_archived_projects(){
444 + // include WPPM_ABSPATH.'includes/admin/projects/projects.php';
445 + // }
446 +
447 + public function wppm_archieve_project_list(){
448 + $is_archieved = 1;
449 + include WPPM_ABSPATH.'includes/admin/projects/projects.php';
450 + die();
451 + }
452 +
370 453 public function wppm_email_notifications(){
371 454 include WPPM_ABSPATH.'includes/admin/email_notifications/wppm_email_notifications.php';
372 455 }
373 456
@@ -592,8 +675,23 @@
592 675 include WPPM_ABSPATH.'includes/admin/tasks/open_task/checklist/wppm_add_new_checklist.php';
593 676 die();
594 677 }
595 678
679 + public function wppm_add_new_subtask(){
680 + include WPPM_ABSPATH.'includes/admin/tasks/open_task/subtask/wppm_add_new_subtask.php';
681 + die();
682 + }
683 +
684 + public function wppm_remove_subtask(){
685 + include WPPM_ABSPATH.'includes/admin/tasks/open_task/subtask/wppm_remove_subtask.php';
686 + die();
687 + }
688 +
689 + public function wppm_convert_subtask_to_task(){
690 + include WPPM_ABSPATH.'includes/admin/tasks/open_task/subtask/wppm_convert_subtask_to_task.php';
691 + die();
692 + }
693 +
596 694 public function wppm_add_new_checklist_item(){
597 695 include WPPM_ABSPATH.'includes/admin/tasks/open_task/checklist/wppm_add_new_checklist_item.php';
598 696 die();
599 697 }
@@ -843,12 +941,8 @@
843 941 public function wppm_addons(){
844 942 include WPPM_ABSPATH.'includes/admin/addons.php';
845 943 }
846 944
847 - public function wppm_other_plugins(){
848 - include WPPM_ABSPATH.'includes/admin/wppm_other_plugins.php';
849 - }
850 -
851 945 public function wppm_clone_task(){
852 946 include WPPM_ABSPATH.'includes/admin/tasks/open_task/wppm_clone_task.php';
853 947 die();
854 948 }
@@ -1154,8 +1248,50 @@
1154 1248 }
1155 1249
1156 1250 public function wppm_archive_task(){
1157 1251 include WPPM_ABSPATH.'includes/admin/tasks/open_task/wppm_update_archive_task.php';
1252 + die();
1253 + }
1254 +
1255 + public function wppm_update_admin_notice(){
1256 + include WPPM_ABSPATH.'includes/admin/wppm_update_admin_notice.php';
1257 + }
1258 +
1259 + public function wppm_get_project_tasks_kanban_view(){
1260 + include WPPM_ABSPATH.'includes/admin/projects/open_project/wppm_get_project_tasks_kanban_view.php';
1261 + die();
1262 + }
1263 +
1264 + public function wppm_get_notifications_callback(){
1265 + include WPPM_ABSPATH.'includes/admin/email_notifications/wppm_get_notifications.php';
1266 + die();
1267 + }
1268 +
1269 + public function wppm_add_notification_container(){
1270 + $mention_notification = get_option('wppm_default_global_mention_comment_notification',1);
1271 + if ( ! $mention_notification ) {
1272 + return;
1273 + }
1274 + echo
1275 + ' <div id="wppm_notification_bell">
1276 + <i class="dashicons dashicons-bell"></i>
1277 + <span class="wppm-badge">0</span>
1278 + </div>
1279 + <div id="wppm-notification-container"></div>';
1280 + }
1281 +
1282 + public function wppm_mark_notification_as_read(){
1283 + global $wpdb;
1284 + $id = isset($_POST['id']) ? intval(sanitize_text_field($_POST['id'])) : 0;
1285 + $wpdb->update(
1286 + $wpdb->prefix . 'wppm_notifications',
1287 + array('is_read' => 1),
1288 + array('id' => $id)
1289 + );
1290 + wp_send_json_success();
1291 + }
1292 + public function wppm_archive_project(){
1293 + include WPPM_ABSPATH.'includes/admin/projects/open_project/wppm_update_archive_project.php';
1158 1294 die();
1159 1295 }
1160 1296 }
1161 1297 endif;