| @@ -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_notices', array($this,'wppm_update_admin_notice')); | |
| 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')); |
| @@ -173,12 +175,37 @@ | ||
| 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')); |
| 176 | 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')); | |
| 177 | 186 | } |
| 178 | 187 | |
| 179 | 188 | // Load admin scripts |
| 180 | 189 | public function loadScripts(){ |
| 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 | + ); | |
| 181 | 208 | if(isset($_REQUEST['page']) && preg_match('/wppm-/',sanitize_text_field($_REQUEST['page'])) || (isset($_REQUEST['page']) && $_REQUEST['page'] == 'wppm_dashboard')) : |
| 182 | 209 | wp_enqueue_script('jquery'); |
| 183 | 210 | wp_enqueue_script('jquery-ui-core'); |
| 184 | 211 | wp_enqueue_script( 'jquery-ui-sortable' ); |
| @@ -271,8 +298,17 @@ | ||
| 271 | 298 | 'read', |
| 272 | 299 | 'wppm-projects', |
| 273 | 300 | array($this,'wppm_projects') |
| 274 | 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 | + | |
| 275 | 311 | |
| 276 | 312 | add_submenu_page( |
| 277 | 313 | 'wppm-dashboard', |
| 278 | 314 | esc_html__('Tasks', 'taskbuilder' ), |
| @@ -362,8 +398,25 @@ | ||
| 362 | 398 | 'wppm-addons', |
| 363 | 399 | array($this,'wppm_addons') |
| 364 | 400 | ); |
| 365 | 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 | + | |
| 366 | 419 | do_action('wppm_add_submenu_page'); |
| 367 | 420 | } |
| 368 | 421 | |
| 369 | 422 | public function wppm_projects(){ |
| @@ -386,8 +439,18 @@ | ||
| 386 | 439 | public function wppm_archived_tasks(){ |
| 387 | 440 | include WPPM_ABSPATH.'includes/admin/tasks/wppm_tasks.php'; |
| 388 | 441 | } |
| 389 | 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 | + | |
| 390 | 453 | public function wppm_email_notifications(){ |
| 391 | 454 | include WPPM_ABSPATH.'includes/admin/email_notifications/wppm_email_notifications.php'; |
| 392 | 455 | } |
| 393 | 456 | |
| @@ -612,8 +675,23 @@ | ||
| 612 | 675 | include WPPM_ABSPATH.'includes/admin/tasks/open_task/checklist/wppm_add_new_checklist.php'; |
| 613 | 676 | die(); |
| 614 | 677 | } |
| 615 | 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 | + | |
| 616 | 694 | public function wppm_add_new_checklist_item(){ |
| 617 | 695 | include WPPM_ABSPATH.'includes/admin/tasks/open_task/checklist/wppm_add_new_checklist_item.php'; |
| 618 | 696 | die(); |
| 619 | 697 | } |
| @@ -1179,8 +1257,41 @@ | ||
| 1179 | 1257 | } |
| 1180 | 1258 | |
| 1181 | 1259 | public function wppm_get_project_tasks_kanban_view(){ |
| 1182 | 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'; | |
| 1183 | 1294 | die(); |
| 1184 | 1295 | } |
| 1185 | 1296 | } |
| 1186 | 1297 | endif; |