| @@ -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')); |
| @@ -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,8 +244,9 @@ | ||
| 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>'; |
| 222 | 251 | $wppm_rich_text_editor = get_option('wppm_rich_text_editor'); |
| 223 | 252 | $wppm_tinymce_visibility_open_task = get_option('wppm_tinymce_visibility_open_task'); |
| @@ -245,18 +274,26 @@ | ||
| 245 | 274 | // Dashboard Menus |
| 246 | 275 | public function wppm_register_dashboard_menu(){ |
| 247 | 276 | global $current_user,$wppmfunction; |
| 248 | 277 | add_menu_page( |
| 249 | - esc_html__( 'Projects', 'taskbuilder'), | |
| 250 | - esc_html__( 'Projects','taskbuilder'), | |
| 278 | + esc_html__( 'Taskbuilder', 'taskbuilder'), | |
| 279 | + esc_html__( 'Taskbuilder','taskbuilder'), | |
| 251 | 280 | 'read', |
| 252 | - 'wppm-projects', | |
| 253 | - array($this,'wppm_projects'), | |
| 254 | - WPPM_PLUGIN_URL.'asset/images/tasklist.svg', | |
| 281 | + 'wppm-dashboard', | |
| 282 | + array($this,'wppm_dashboard'), | |
| 283 | + WPPM_PLUGIN_URL.'asset/images/taskbuilder_logo.svg', | |
| 255 | 284 | 25 |
| 256 | 285 | ); |
| 257 | 286 | add_submenu_page( |
| 258 | - 'wppm-projects', | |
| 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', | |
| 259 | 296 | esc_html__('Project List', 'taskbuilder' ), |
| 260 | 297 | esc_html__('Projects', 'taskbuilder' ), |
| 261 | 298 | 'read', |
| 262 | 299 | 'wppm-projects', |
| @@ -261,11 +298,20 @@ | ||
| 261 | 298 | 'read', |
| 262 | 299 | 'wppm-projects', |
| 263 | 300 | array($this,'wppm_projects') |
| 264 | 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 | + | |
| 265 | 311 | |
| 266 | 312 | add_submenu_page( |
| 267 | - 'wppm-projects', | |
| 313 | + 'wppm-dashboard', | |
| 268 | 314 | esc_html__('Tasks', 'taskbuilder' ), |
| 269 | 315 | esc_html__('Tasks', 'taskbuilder' ), |
| 270 | 316 | 'read', |
| 271 | 317 | 'wppm-tasks', |
| @@ -272,9 +318,9 @@ | ||
| 272 | 318 | array($this,'wppm_tasks') |
| 273 | 319 | ); |
| 274 | 320 | |
| 275 | 321 | add_submenu_page( |
| 276 | - 'wppm-projects', | |
| 322 | + 'wppm-dashboard', | |
| 277 | 323 | esc_html__('Archived Tasks', 'taskbuilder' ), |
| 278 | 324 | esc_html__('Archived Tasks', 'taskbuilder' ), |
| 279 | 325 | 'read', |
| 280 | 326 | 'wppm-archived-tasks', |
| @@ -282,9 +328,9 @@ | ||
| 282 | 328 | ); |
| 283 | 329 | |
| 284 | 330 | if(current_user_can('manage_options')){ |
| 285 | 331 | add_submenu_page( |
| 286 | - 'wppm-projects', | |
| 332 | + 'wppm-dashboard', | |
| 287 | 333 | esc_html__('Email Notifications', 'taskbuilder' ), |
| 288 | 334 | esc_html__('Email Notifications', 'taskbuilder' ), |
| 289 | 335 | 'manage_options', |
| 290 | 336 | 'wppm-email-notifications', |
| @@ -290,9 +336,9 @@ | ||
| 290 | 336 | 'wppm-email-notifications', |
| 291 | 337 | array($this,'wppm_email_notifications') |
| 292 | 338 | ); |
| 293 | 339 | add_submenu_page( |
| 294 | - 'wppm-projects', | |
| 340 | + 'wppm-dashboard', | |
| 295 | 341 | esc_html__('Settings', 'taskbuilder' ), |
| 296 | 342 | esc_html__('Settings', 'taskbuilder' ), |
| 297 | 343 | 'manage_options', |
| 298 | 344 | 'wppm-settings', |
| @@ -298,9 +344,9 @@ | ||
| 298 | 344 | 'wppm-settings', |
| 299 | 345 | array($this,'settings') |
| 300 | 346 | ); |
| 301 | 347 | add_submenu_page( |
| 302 | - 'wppm-projects', | |
| 348 | + 'wppm-dashboard', | |
| 303 | 349 | esc_html__('License', 'taskbuilder' ), |
| 304 | 350 | esc_html__('License', 'taskbuilder' ), |
| 305 | 351 | 'manage_options', |
| 306 | 352 | 'wppm-license', |
| @@ -307,9 +353,9 @@ | ||
| 307 | 353 | array($this,'licenses') |
| 308 | 354 | ); |
| 309 | 355 | |
| 310 | 356 | add_submenu_page( |
| 311 | - 'wppm-projects', | |
| 357 | + 'wppm-dashboard', | |
| 312 | 358 | esc_html__('Pro Features', 'taskbuilder' ), |
| 313 | 359 | esc_html__('Pro Features', 'taskbuilder' ), |
| 314 | 360 | 'manage_options', |
| 315 | 361 | 'wppm-addons', |
| @@ -319,9 +365,9 @@ | ||
| 319 | 365 | } |
| 320 | 366 | |
| 321 | 367 | if(current_user_can('wppm_admin') && !current_user_can('manage_options')){ |
| 322 | 368 | add_submenu_page( |
| 323 | - 'wppm-projects', | |
| 369 | + 'wppm-dashboard', | |
| 324 | 370 | esc_html__('Email Notifications', 'taskbuilder' ), |
| 325 | 371 | esc_html__('Email Notifications', 'taskbuilder' ), |
| 326 | 372 | 'wppm_admin', |
| 327 | 373 | 'wppm-email-notifications', |
| @@ -327,9 +373,9 @@ | ||
| 327 | 373 | 'wppm-email-notifications', |
| 328 | 374 | array($this,'wppm_email_notifications') |
| 329 | 375 | ); |
| 330 | 376 | add_submenu_page( |
| 331 | - 'wppm-projects', | |
| 377 | + 'wppm-dashboard', | |
| 332 | 378 | esc_html__('Settings', 'taskbuilder' ), |
| 333 | 379 | esc_html__('Settings', 'taskbuilder' ), |
| 334 | 380 | 'wppm_admin', |
| 335 | 381 | 'wppm-settings', |
| @@ -335,9 +381,9 @@ | ||
| 335 | 381 | 'wppm-settings', |
| 336 | 382 | array($this,'settings') |
| 337 | 383 | ); |
| 338 | 384 | add_submenu_page( |
| 339 | - 'wppm-projects', | |
| 385 | + 'wppm-dashboard', | |
| 340 | 386 | esc_html__('License', 'taskbuilder' ), |
| 341 | 387 | esc_html__('License', 'taskbuilder' ), |
| 342 | 388 | 'manage_options', |
| 343 | 389 | 'wppm-license', |
| @@ -344,9 +390,9 @@ | ||
| 344 | 390 | array($this,'licenses') |
| 345 | 391 | ); |
| 346 | 392 | |
| 347 | 393 | add_submenu_page( |
| 348 | - 'wppm-projects', | |
| 394 | + 'wppm-dashboard', | |
| 349 | 395 | esc_html__('Addons', 'taskbuilder' ), |
| 350 | 396 | esc_html__('Addons', 'taskbuilder' ), |
| 351 | 397 | 'wppm_admin', |
| 352 | 398 | 'wppm-addons', |
| @@ -352,8 +398,25 @@ | ||
| 352 | 398 | 'wppm-addons', |
| 353 | 399 | array($this,'wppm_addons') |
| 354 | 400 | ); |
| 355 | 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 | + | |
| 356 | 419 | do_action('wppm_add_submenu_page'); |
| 357 | 420 | } |
| 358 | 421 | |
| 359 | 422 | public function wppm_projects(){ |
| @@ -359,8 +422,12 @@ | ||
| 359 | 422 | public function wppm_projects(){ |
| 360 | 423 | include WPPM_ABSPATH.'includes/admin/projects/projects.php'; |
| 361 | 424 | } |
| 362 | 425 | |
| 426 | + public function wppm_dashboard(){ | |
| 427 | + include WPPM_ABSPATH.'includes/admin/dashboard.php'; | |
| 428 | + } | |
| 429 | + | |
| 363 | 430 | public function wppm_add_new_project(){ |
| 364 | 431 | include WPPM_ABSPATH.'includes/admin/projects/wppm_add_new_project.php'; |
| 365 | 432 | die(); |
| 366 | 433 | } |
| @@ -372,8 +439,18 @@ | ||
| 372 | 439 | public function wppm_archived_tasks(){ |
| 373 | 440 | include WPPM_ABSPATH.'includes/admin/tasks/wppm_tasks.php'; |
| 374 | 441 | } |
| 375 | 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 | + | |
| 376 | 453 | public function wppm_email_notifications(){ |
| 377 | 454 | include WPPM_ABSPATH.'includes/admin/email_notifications/wppm_email_notifications.php'; |
| 378 | 455 | } |
| 379 | 456 | |
| @@ -598,8 +675,23 @@ | ||
| 598 | 675 | include WPPM_ABSPATH.'includes/admin/tasks/open_task/checklist/wppm_add_new_checklist.php'; |
| 599 | 676 | die(); |
| 600 | 677 | } |
| 601 | 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 | + | |
| 602 | 694 | public function wppm_add_new_checklist_item(){ |
| 603 | 695 | include WPPM_ABSPATH.'includes/admin/tasks/open_task/checklist/wppm_add_new_checklist_item.php'; |
| 604 | 696 | die(); |
| 605 | 697 | } |
| @@ -849,12 +941,8 @@ | ||
| 849 | 941 | public function wppm_addons(){ |
| 850 | 942 | include WPPM_ABSPATH.'includes/admin/addons.php'; |
| 851 | 943 | } |
| 852 | 944 | |
| 853 | - public function wppm_other_plugins(){ | |
| 854 | - include WPPM_ABSPATH.'includes/admin/wppm_other_plugins.php'; | |
| 855 | - } | |
| 856 | - | |
| 857 | 945 | public function wppm_clone_task(){ |
| 858 | 946 | include WPPM_ABSPATH.'includes/admin/tasks/open_task/wppm_clone_task.php'; |
| 859 | 947 | die(); |
| 860 | 948 | } |
| @@ -1160,8 +1248,50 @@ | ||
| 1160 | 1248 | } |
| 1161 | 1249 | |
| 1162 | 1250 | public function wppm_archive_task(){ |
| 1163 | 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'; | |
| 1164 | 1294 | die(); |
| 1165 | 1295 | } |
| 1166 | 1296 | } |
| 1167 | 1297 | endif; |