PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 5.0.9
Taskbuilder – Project Management & Task Management Tool With Kanban Board v5.0.9
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 1.0.6 All 57 releases
taskbuilder / includes / admin / tasks / open_task / wppm_open_task.php

wppm_open_task.php in Taskbuilder – Project Management & Task Management Tool With Kanban Board 5.0.9, at includes/admin/tasks/open_task/wppm_open_task.php

1,120 lines 72.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit; // Exit if accessed directly
4 }
5
6 global $current_user,$wpdb,$wppmfunction;
7 $id = isset($_POST) && isset($_POST['id']) ? intval(sanitize_text_field(wp_unslash($_POST['id']))) : "0";
8 $page = isset($_POST) && isset($_POST['page']) ? sanitize_text_field(wp_unslash($_POST['page'])) : '';
9 $task_list_view = get_option('wppm_default_task_list_view');
10 $project_id = isset($_POST) && isset($_POST['project_id']) ? intval(sanitize_text_field($_POST['project_id'])) : "0";
11 $wppm_default_task_date = get_option('wppm_default_task_date');
12 $wppm_task_time = get_option('wppm_task_time');
13 $appearance_settings = get_option("wppm-ap-individual-task");
14 $wppm_tinymce_visibility_open_task = get_option('wppm_tinymce_visibility_open_task');
15 $settings = get_option("wppm-ap-modal");
16 $wppm_rich_text_editor = get_option('wppm_rich_text_editor');
17 $wppm_toolbar_actions = get_option('wppm_toolbar_actions');
18 $wppm_date_setting = get_option('wppm_date_setting');
19 $wppm_task_hide_comment_section = get_option('wppm_task_hide_comment_section');
20 $wppm_deafault_time_duration_task = get_option('wppm_display_time_duration_task');
21 $url_auth = false;
22 $auth_id = $wppmfunction->wppm_get_auth_code($id);
23 $auth_id = sanitize_text_field($auth_id);
24 // url authentication.
25 $auth_code = isset( $_POST['auth-code'] ) ? sanitize_text_field( wp_unslash($_POST['auth-code'] ) ) : ''; // phpcs:ignore
26 if ( ! $auth_code ) {
27 $auth_code = isset( $_POST['auth_code'] ) ? sanitize_text_field( wp_unslash($_POST['auth_code'] ) ) : ''; // phpcs:ignore
28 }
29
30 if ( $auth_code && $auth_id == $auth_code ) {
31 $url_auth = true;
32 }
33 if (!(($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_permission('view_task',$id)) || ($url_auth==true))) { ?>
34 <div style="align-item:center;" ><h6><?php esc_attr_e( 'Unauthorized access!', 'taskbuilder' ); ?></h6></div>
35 <?php
36 wp_die();
37 }
38 $proj_id = isset($_POST) && isset($_POST['proj_id']) ? intval(sanitize_text_field(wp_unslash($_POST['proj_id']))) : 0;
39 $current_date = wp_date('Y-m-d');
40 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
41 $cu_id = absint($current_user->ID);
42 if(!empty($id)){
43 $task = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task where id=%d",$id));
44 $project_data = $wppmfunction->get_project($task->project);
45 $task_comment = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task_comment where task_id=%d ORDER BY create_time DESC",$id));
46 $orderby_proj_sql = (sanitize_sql_orderby( "create_time DESC" ));
47 $task_comment = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task_comment where task_id=%d ORDER BY ". $orderby_proj_sql,$id));
48 $task_proj = isset($task->project) ? absint($task->project) :"";
49 $task_id = isset($task->id) ? absint($task->id):"";
50 }
51 $user_role = $wpdb->get_var( $wpdb->prepare("SELECT role_id FROM {$wpdb->prefix}wppm_project_users where proj_id = %d AND user_id = %d",$task_proj,$cu_id));
52 if(!empty($task_proj)){
53 $project_name = $wpdb->get_var( $wpdb->prepare("SELECT project_name FROM {$wpdb->prefix}wppm_project where id= %d",$task_proj));
54 }
55 $wppm_checklist=$wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_checklist where task_id=%d",$task_id));
56 if(!empty($task->status)){
57 $task_status_var = absint($task->status);
58 $task_status = $wpdb->get_row( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id=%d",$task_status_var));
59 }
60 if(!empty($task->priority)){
61 $task_priority_var = absint($task->priority);
62 $task_priority = $wpdb->get_row( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id=%d",$task_priority_var));
63 }
64 if(!empty($task->users)){
65 $users = explode(",",$task->users);
66 }
67
68 if(!empty($task->description)){
69 $task_description = !empty($task->description) ? wp_kses_post(wpautop($task->description)) : '';
70 }
71
72 if($wppm_task_time == 1){
73 $tsDate = new DateTime($task->start_date);
74 $teDate = new DateTime($task->end_date);
75 if($task->start_date=='0000-00-00 00:00:00'){
76 if($wppm_date_setting=='Y-m-d H:i:s'){
77 $task_start_date = '0000-00-00 00:00:00';
78 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
79 $task_start_date = '00-00-0000 00:00:00';
80 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
81 $task_start_date = '00-00-0000 00:00:00';
82 }else{
83 $task_start_date = '0000-00-00 00:00:00';
84 }
85 }if($task->end_date=='0000-00-00 00:00:00'){
86 if($wppm_date_setting=='Y-m-d H:i:s'){
87 $task_end_date = '0000-00-00 00:00:00';
88 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
89 $task_end_date = '00-00-0000 00:00:00';
90 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
91 $task_end_date = '00-00-0000 00:00:00';
92 }else{
93 $task_end_date = '0000-00-00 00:00:00';
94 }
95 }if($task->start_date!='0000-00-00 00:00:00'){
96 if(!empty($wppm_date_setting)){
97 $task_start_date = $tsDate->format($wppm_date_setting);
98 }else{
99 $task_start_date = isset($task->start_date)? $task->start_date:"";
100 }
101 }
102 if($task->end_date!='0000-00-00 00:00:00'){
103 if(!empty($wppm_date_setting)){
104 $task_end_date = $teDate->format($wppm_date_setting);
105 }else{
106 $task_end_date = isset($task->end_date) ? $task->end_date: "" ;
107 }
108 }
109 } elseif($wppm_task_time == 0){
110 $tsDate = isset($task->start_date) ? new DateTime($task->start_date): "";
111 $teDate = isset($task->end_date) ? new DateTime($task->end_date):"";
112 $task_start_date = !empty($tsDate) ? $tsDate->format( $wppm_date_setting):"";
113 $task_end_date = !empty($teDate) ? $teDate->format( $wppm_date_setting):"";
114 if($task->start_date=='0000-00-00 00:00:00'){
115 if($wppm_date_setting=='Y-m-d H:i:s'){
116 $task_start_date = '0000-00-00';
117 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
118 $task_start_date = '00-00-0000';
119 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
120 $task_start_date = '00-00-0000';
121 }else{
122 $task_start_date = '0000-00-00';
123 }
124 }
125 if($task->end_date=='0000-00-00 00:00:00'){
126 if($wppm_date_setting=='Y-m-d H:i:s'){
127 $task_end_date = '0000-00-00';
128 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
129 $task_end_date = '00-00-0000';
130 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
131 $task_end_date = '00-00-0000';
132 }
133 else{
134 $task_end_date = '0000-00-00';
135 }
136 }if($task->start_date!='0000-00-00 00:00:00'){
137 if($wppm_date_setting=='Y-m-d H:i:s'){
138 $task_start_date = $tsDate->format('Y-m-d');
139 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
140 $task_start_date = $tsDate->format('d-m-Y');
141 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
142 $task_start_date = $tsDate->format('m-d-Y');
143 }else{
144 $task_start_date = $tsDate->format('Y-m-d');
145 }
146 }if($task->end_date!='0000-00-00 00:00:00'){
147 if($wppm_date_setting=='Y-m-d H:i:s'){
148 $task_end_date = $teDate->format('Y-m-d');
149 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
150 $task_end_date = $teDate->format('d-m-Y');
151 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
152 $task_end_date = $teDate->format('m-d-Y');
153 }else{
154 $task_end_date = $teDate->format('Y-m-d');
155 }
156 }
157 }
158 $flag = false;
159 $wppm_task_fillter = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task where id=%d",$id));
160 if(!empty($wppm_task_fillter)){
161 foreach($wppm_task_fillter as $key_filter=>$val_filter){
162 $val_array = (array) $val_filter;
163 $tusers = $val_array['users'];
164 $tusers_arr = explode(',',$tusers);
165 $tproject_id = $val_array['project'];
166 $tproject_id = absint($tproject_id);
167 if(!empty($tusers) && in_array($current_user->ID,$tusers_arr)){
168 $project_user_role = $wpdb->get_var( $wpdb->prepare("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$tproject_id,$cu_id));
169 $project_users = $wpdb->get_var( $wpdb->prepare("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = %d",$tproject_id));
170 $project_users_arr = explode(',',(string)$project_users);
171 if((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)){
172 $flag= true;
173 break;
174 }
175 }
176 }
177 }
178 $project_creator = $wpdb->get_var( $wpdb->prepare("SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = %d",$cu_id));
179 ?>
180 <form id="wppm_open_task" method="post">
181 <div id="wppm_alert_success" class="alert alert-success wppm_alert" style="display:none;" role="alert">
182 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/success.svg'); ?>" alt="success"> <span class="wppm_alert_text"></span>
183 </div>
184 <div id="wppm_alert_error" class="alert alert-danger wppm_alert" style="display:none;" role="alert">
185 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/warning-triangle.svg'); ?>" alt="warning-triangle"> <span class="wppm_alert_text"></span>
186 </div>
187 <div class="wppm_headers row">
188 <div class="col-sm-8">
189 <span class="wppm-heading-inline">
190 <?php echo esc_html_e('Task','taskbuilder');?>
191 </span><?php
192 if(($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',$task_id) || ($flag==true) || $project_creator!="") && $task->is_archived!=1){
193 $style = "display:inline;";
194 }else{
195 $style = "display:none;";
196 }
197 $style = apply_filters('wppm_add_new_task_btn_style_open_task_form',$style);
198 if(($wppm_task_fillter && (!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)) || $wppm_current_user_capability == 'wppm_admin'|| $wppm_current_user_capability == 'wppm_manager' || $current_user->has_cap('manage_options') || $project_data['created_by']==$current_user->ID){
199 $archive_style= "display:inline;";
200 }else{
201 $archive_style= "display:none;";
202 }
203 if($proj_id==0) {
204 ?> <span onclick="wppm_add_new_task(<?php echo esc_attr($proj_id) ?>,<?php echo esc_attr($project_id) ?>)" class="wppm_add_new_task_btn" id="wppm_add_new_task_btn" style="<?php echo esc_attr($style)?>" title="<?php esc_attr_e( 'Create Task', 'taskbuilder' ); ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="add"></span>
205 <?php }
206 else{ ?>
207 <span class="wppm_add_new_task_btn" id="wppm_add_new_task_btn" title="<?php esc_attr_e( '"Create Task', 'taskbuilder' ); ?>" onclick="wppm_create_project_task(<?php echo esc_attr($proj_id) ?>)" style="<?php echo esc_attr($style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="add"></span>
208 <?php } ?>
209 <?php if($proj_id==0) {
210 if (($project_id!=0)) {
211 $task_list_function = "wppm_get_project_tasks_kanban_view( {$project_id})";
212 }
213 if (empty($project_id) && $task_list_view == 1) {
214 $task_list_function = "wppm_get_task_list('', {$project_id})";
215 }
216 if(empty($task_list_view) && empty($project_id)) {
217 $task_list_function = "wppm_view_task_search_filter('', '', {$project_id})";
218 }
219 ?>
220 <span class="wppm-task-list-btn" id="wppm_task_list_btn" title="<?php esc_attr_e( 'Task List', 'taskbuilder' ); ?>"onclick="<?php echo esc_attr($task_list_function) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list"></span>
221 <?php }
222 else{
223 ?>
224 <span class="wppm-task-list-btn" id="wppm_task_list_btn" title="<?php esc_attr_e( 'Task List', 'taskbuilder' ); ?>" onclick="wppm_get_project_tasks(<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list"></span>
225 <?php } ?>
226 <?php $style = ((($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_permission('delete_task',$id)) || $wppm_current_user_capability == 'wppm_admin'|| $project_data['created_by']==$current_user->ID ) && $user_role != 3) ? "display:inline":"display:none"; ?>
227 <?php $clone_style = ((($current_user->ID && $current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin') || ($wppmfunction->has_permission('clone_task',$id)) || $project_data['created_by']==$current_user->ID ) && $task->is_archived!=1 && $user_role != 3) ? "display:inline":"display:none"; ?>
228 <?php $ar_css = ($task->is_archived==1) ? "display:none;" : "display:inline"; ?>
229 <span class="wppm-dashboard-btn" id="wppm_dashboard_btn" title="<?php esc_attr_e( 'Dashboard', 'taskbuilder' ); ?>" onclick="wppm_get_project_tasks(<?php echo esc_attr($proj_id) ?>)">
230 <a href="<?php echo esc_url(admin_url('admin.php?page=wppm-dashboard')); ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/dashboard-icon.svg'); ?>" alt="dashboard"></a>
231 </span>
232 <span class="wppm-delete_task_btn" id="wppm_delete_task_btn" title="Delete Task" onclick="wppm_get_delete_task(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>,<?php echo esc_attr($project_id) ?>)" style="<?php echo esc_attr($style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/bin.svg'); ?>" alt="delete"></span>
233 <div class="wppm-clone_task_btn" id="wppm_clone_task_btn" title="Clone Task" onclick="wppm_clone_task(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id)?>,<?php echo esc_attr($project_id) ?>)" style="<?php echo esc_attr($clone_style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/duplicate.svg'); ?>" alt="clone"></div>
234 <span class="wppm-print_task_btn" id="wppm_print_task_btn" title="Print Task" onclick="wppm_print_task(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/printer_menu.svg'); ?>" alt="print" style="<?php echo esc_attr($ar_css);?>"></span>
235 <span class="wppm-archieve_task_btn" id="wppm_archieve_task_btn" title="<?php echo ($task->is_archived==1 ) ? 'Restore Task' : 'Archive Task'; ?>" onclick="wppm_archive_task(<?php echo esc_attr($id) ?>,<?php echo esc_attr($task->is_archived) ?>,<?php echo esc_attr($project_id) ?>)" style="<?php echo esc_attr($archive_style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/archive.svg'); ?>" alt="archive"></span>
236 <input type="hidden" name="wppm_archive_task_ajax_nonce" id="wppm_archive_task_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_archive_task_ajax_nonce' ) ); ?>">
237 <div class="menu" id="wppmprint_menu" onclick="event.stopPropagation();">
238 <a href="#" id="wppm_openPDF" onclick="wppm_open_pdf(<?php echo esc_attr($id) ?>)">🖨️ <?php echo esc_html_e('Open In Browser','taskbuilder');?></a>
239 <a href="#" id="wppm_downloadPDF" onclick="wppm_download_pdf(<?php echo esc_attr($id) ?>)">💾 <?php echo esc_html_e('Download PDF','taskbuilder');?></a>
240 </div>
241 <?php do_action('wppm_individual_task_button',$id);
242 $time_tracker_active = class_exists('WPPM_TIMER');
243 if(!$time_tracker_active){
244 ?>
245 <span class="wppm_timer_log_btn" id="wppm_timer_log_btn" title="Timer Log" onclick="wppm_timer_log_pro()"><img src="<?php echo esc_url( WPPM_PLUGIN_URL.'asset/images/timer.svg'); ?>" alt="timer_log"></span>
246 <?php } ?>
247 </div>
248 </div>
249 <div id="wppm_load_individual_task_container" class="row">
250 <div class="col-sm-8 wppm_body col-md-9">
251 <div class="wppm_task_details_container">
252 <div class="row">
253 <div class="col-sm-12">
254 <span class="wppm_task_label"> <?php echo isset($task->task_name) ? esc_html($task->task_name ):"" ?>
255 <?php if (($wppmfunction->has_permission('change_task_details',$id) || $current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin') && $task->is_archived!=1) { ?>
256 <span id="wppm_individual_edit_task_subject" onclick="wppm_edit_task_details(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>,<?php echo esc_attr($project_id) ?>)" class="btn btn-sm wppm_action_btn" style="background-color:#FFFFFF !important;color:#000000 !important;"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
257 <?php } ?>
258 </span>
259 </div>
260 </div>
261 <div class="row">
262 <div class="col-sm-3">
263 <span class="wppm_task_details_label"><?php echo esc_html_e('Project:','taskbuilder');?></span>
264 </div>
265 <div class="col-sm-9">
266 <span class="wppm_task_details"><?php echo (isset($project_name))? esc_html($project_name ):"" ?></span>
267 </div>
268 </div>
269 <div class="row">
270 <div class="col-sm-3">
271 <span class="wppm_task_details_label"><?php echo esc_html_e('Created On:','taskbuilder');?></span>
272 </div>
273 <div class="col-sm-9"><?php
274 $tcDate = isset($task->date_created) ? new DateTime($task->date_created): "";
275 if($wppm_task_time !=0){
276 if($wppm_date_setting=='Y-m-d H:i:s'){
277 $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d H:i:s'):"";
278 } elseif($wppm_date_setting=='d-m-Y H:i:s'){
279 $task_create_date = !empty($tcDate) ? $tcDate->format('d-m-Y H:i:s'):"";
280 } elseif($wppm_date_setting=='m-d-Y H:i:s'){
281 $task_create_date = !empty($tcDate) ? $tcDate->format('m-d-Y H:i:s'):"";
282 } else {
283 $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d H:i:s'):"";
284 }
285 } elseif($wppm_task_time == 0){
286 if($wppm_date_setting=='Y-m-d H:i:s'){
287 $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d'):"";
288 } elseif($wppm_date_setting=='d-m-Y H:i:s'){
289 $task_create_date = !empty($tcDate) ? $tcDate->format('d-m-Y'):"";
290 } elseif($wppm_date_setting=='m-d-Y H:i:s'){
291 $task_create_date = !empty($tcDate) ? $tcDate->format('m-d-Y'):"";
292 } else {
293 $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d'):"";
294 }
295 } ?>
296 <span class="wppm_task_details"><?php echo (isset($task_create_date))? esc_html($task_create_date):"" ?></span>
297 </div>
298 </div>
299 <?php if($wppm_default_task_date == 1 && $wppm_deafault_time_duration_task==0){ ?>
300 <div class="row">
301 <div class="col-sm-3">
302 <span class="wppm_task_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
303 </div>
304 <div class="col-sm-9">
305 <span class="wppm_task_details" id="wppm_edit_tstart_date"><?php echo (isset($task_start_date))? esc_html($task_start_date):"" ?></span>
306 </div>
307 <input type="hidden" name="wppm_edit_tstart_date_ajax_nonce" id="wppm_edit_tstart_date_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_change_task_start_date' ) ); ?>">
308 </div>
309 <div class="row">
310 <div class="col-sm-3">
311 <span class="wppm_task_details_label"><?php echo esc_html_e('End Date:','taskbuilder');?></span>
312 </div>
313 <div class="col-sm-9">
314 <?php $style = (!empty($task->end_date) && ($task->status!=4 && $task->end_date < $current_date && $task->end_date != '0000-00-00 00:00:00' && $task->end_date != '00-00-0000 00:00:00' && $task->end_date != '00-00-0000' && $task->end_date != '0000-00-00')) ? "color:#FF0000":"color:#2C3E50"; ?>
315 <span class="wppm_task_details" id="wppm_edit_tend_date" style="<?php echo esc_attr($style); ?>"><?php echo (isset($task_end_date))? esc_html($task_end_date):"" ?></span>
316 </div>
317 <input type="hidden" name="wppm_edit_tend_date_ajax_nonce" id="wppm_edit_tend_date_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_change_task_end_date' ) ); ?>">
318 </div>
319 <?php }
320 if($wppm_deafault_time_duration_task==1){
321 $wppm_task_duration = $wppmfunction->wppm_get_duration($task->start_date,$task->end_date);
322 $tstatus = isset($task->status) ? $task->status :"";
323 $style = (!empty($task->end_date) && $tstatus!=4 && $task->end_date < $current_date && ($task->end_date != '0000-00-00 00:00:00' && $task->end_date != '00-00-0000 00:00:00' && $task->end_date != '00-00-0000' && $task->end_date != '0000-00-00')) ? "color:#FF1111":"color:#2C3E51"; ?>
324 <div class="row">
325 <div class="col-sm-3">
326 <span class="wppm_task_details_label"><?php echo esc_html_e('Task Duration:','taskbuilder');?></span>
327 </div>
328 <div class="col-sm-9">
329 <span class="wppm_task_details" id="wppm_edit_task_duration" style="<?php echo esc_attr($style); ?>"><?php echo (isset($wppm_task_duration))? esc_html($wppm_task_duration ): "" ?></span>
330 </div>
331 </div> <?php
332 }?>
333 <div class="row">
334 <div class="col-sm-3">
335 <span class="wppm_task_details_label"><?php echo esc_html_e('Task Priority:','taskbuilder');?></span>
336 </div>
337 <div class="col-sm-9">
338 <span class="wppm_task_details_priority"><span class="wppm_admin_label" style="background-color:<?php echo (isset($task_priority->bg_color))? esc_html($task_priority->bg_color):""?>;color:<?php echo (isset($task_priority->color))? esc_html($task_priority->color):""?>;"><?php echo (isset($task_priority->name)) ? esc_html($task_priority->name):"" ?> </span></span>
339 </div>
340 </div>
341 <div class="row">
342 <div class="col-sm-3">
343 <span class="wppm_task_details_label"><?php echo esc_html_e('Description:','taskbuilder');?></span>
344 </div>
345 <div class="col-sm-9">
346 <span class="wppm_task_description"><?php echo (!empty($task_description))? wp_kses_post(wpautop($task_description)):"" ?></span>
347 </div>
348 </div>
349 <?php do_action('wppm_after_task_details_in_open_task',$task->id, $task->project);?>
350 </div>
351 <div class="wppm_task_checklist_container" id="wppm_task_checklist_container">
352 <div id="wppm_checklist_container">
353 <?php
354 if(!empty($wppm_checklist)){
355 foreach( $wppm_checklist as $key=>$list){
356 ?>
357 <div class="row">
358 <div class="col-sm-8">
359 <span class="wppm_checklist_label"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/checklist.svg'); ?>" alt="checklist"><?php echo isset($list->checklist_name) ? esc_html($list->checklist_name):"" ?></span>
360 </div>
361 <?php
362 $check_style = (($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1 || $wppmfunction->has_permission('edit_checklist',$task->id)) && $task->is_archived!=1)? "display:inline":"display:none"; ?>
363 <?php $disabled = (($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1 || $wppmfunction->has_permission('delete_checklist',$task->id)|| ($wppmfunction->has_permission('add_checklist',0))) && $task->is_archived!=1)? "":"disabled"; ?>
364 <?php if($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')){ ?>
365 <div class="col-sm-4" style="text-align:right;<?php echo esc_attr($check_style) ?>">
366 <a class="wppm_delete_checklist" onclick="wppm_delete_checklist(<?php echo esc_attr($list->id);?>,<?php echo esc_attr($task->id);?>,<?php echo esc_attr($proj_id);?>)"><?php echo esc_html_e('Delete Checklist','taskbuilder');?></a>
367 <input type="hidden" name="wppm_delete_checklist_ajax_nonce" id="wppm_delete_checklist_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_delete_checklist' ) ); ?>">
368 </div>
369 <?php }?>
370 </div>
371 <div class="wppm_progress_bar_container row">
372 <div class="col-sm-4">
373 <span class="wppm_progressbar_label" id="wppm_progressbar_label_<?php echo esc_attr($list->id)?>">0%</span>
374 </div>
375 <div class="wppm_progress_bar col-sm-8">
376 <div id="CheckProgress_<?php echo esc_attr($list->id);?>" class="wppm_checkprogress" role="progressbar" style="width: 0%" aria-valuemin="0" aria-valuemax="100"></div>
377 </div>
378 </div>
379 <?php
380 $list_id = absint($list->id);
381 $sql = $wpdb->prepare(
382 "SELECT *
383 FROM {$wpdb->prefix}wppm_checklist_items
384 WHERE checklist_id = %d
385 ORDER BY load_order ASC",
386 $list_id
387 );
388 // Execute
389 $wppm_checklist_items = $wpdb->get_results($sql);
390 ?>
391 <ul id="wppm_checklist_items_container_<?php echo esc_attr($list->id) ?>" class="wppm_checklist_items_container" style="list-style-type: none; padding-left:0px; margin-top:10px; margin-bottom:10px;">
392 <?php
393 if(!empty( $wppm_checklist_items)){
394 foreach($wppm_checklist_items as $key=>$val){
395 $checked = $val->checked == 1 ? 'checked="checked"' : '';
396 ?>
397 <li id="wppm_checklist_<?php echo esc_attr($val->id) ?>" data-id="<?php echo esc_attr($val->id); ?>" class="row wppm_checklist_item" style="margin-bottom:10px;font: 15px 'Helvetica Neue',Helvetica,Arial,sans-serif;">
398 <div class="col-sm-8" id="wppm_checklist_item_container_<?php echo esc_attr($val->id) ?>">
399 <span class="wppm_chk_items_drag">☰</span>
400 <input id="wppm_checklist_item_<?php echo esc_attr($val->id) ?>" class="wppm_checklist_item_<?php echo esc_attr($val->checklist_id) ?>" onchange="wppm_checklist_progress(<?php echo esc_attr($val->checklist_id) ?>,<?php echo esc_attr($val->id) ?>,<?php echo esc_attr($task->id) ?>)" type="checkbox" name="wppm_checklist" <?php echo esc_attr($checked) ?> value="<?php echo esc_attr($val->id) ?>" <?php echo esc_attr($disabled) ?> style="margin:5px;"><label style="padding-top: 5px;font-weight: normal;font: 13px 'Helvetica Neue',Helvetica,Arial,sans-serif;"><?php echo isset($val->item_name) ? esc_html($val->item_name) : "" ?></label>
401 <input type="hidden" name="wppm_checklist_progress_ajax_nonce" id="wppm_checklist_progress_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_checklist_progress' ) ); ?>">
402 </div>
403 <?php if (($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1 || $wppmfunction->has_permission('delete_checklist',$task->id)) && $task->is_archived!=1) { ?>
404 <div class="col-sm-4" id="wppm_checklist_action_<?php echo esc_attr($val->id) ?>" style="text-align:right; display:none;cursor:pointer;">
405 <span onclick=wppm_edit_checklist_item(<?php echo esc_attr($val->id) ?>,<?php echo esc_attr($val->checklist_id) ?>,<?php echo esc_attr( $proj_id);?>,<?php echo esc_attr($id) ?>)><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit1.svg'); ?>" alt="edit"></span>
406 <input type="hidden" name="wppm_edit_checklist_item_ajax_nonce" id="wppm_edit_checklist_item_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_edit_checklist_item' ) ); ?>">
407 <span onclick=wppm_delete_checklist_item(<?php echo esc_attr($val->id) ?>,<?php echo esc_attr($val->checklist_id) ?>,<?php echo esc_attr($proj_id);?>,<?php echo esc_attr($id) ?>)><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
408 <input type="hidden" name="wppm_delete_checklist_item_ajax_nonce" id="wppm_delete_checklist_item_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_remove_checklist_item' ) ); ?>">
409 </div>
410 <?php } ?>
411 </li>
412 <?php
413 }
414 } ?>
415 <?php if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
416 <div class="row">
417 <div class="col-sm-12 wppm_add_checklist_item_container_<?php echo esc_attr($list->id) ?>" style="padding-top:15px;">
418 <a class="wppm_add_checklist" id="wppm_add_checklist_item_btn_<?php echo esc_attr($list->id) ?>" onclick="wppm_add_checklist_item(<?php echo esc_attr($list->id)?>)"><?php echo esc_html_e('+ Add item','taskbuilder');?></a>
419 </div>
420 </div>
421 <?php }?>
422 <?php if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
423 <div class="row">
424 <div class="col-sm-12" style="display:none;" id="wppm_add_checklist_label_container_<?php echo esc_attr($list->id) ?>">
425 <div class="row" id="wppm_add_new_checklist_item_<?php echo esc_attr($list->id) ?>">
426 <div class="col-sm-12">
427 <input type="text" id="wppm_checklist_item_label_<?php echo esc_attr($list->id) ?>" class="wppm_checklist_item_label_<?php echo esc_attr($list->id) ?>" placeholder="<?php echo esc_attr__('Add an item','taskbuilder') ?>" name="wppm_checklist_item_label" style="font: 13px 'Helvetica Neue',Helvetica,Arial,sans-serif;">
428 <input type="button" value="Add" class="btn btn-success btn-sm wppm_add_new_item_btn_<?php echo esc_attr($list->id); ?>" onclick="wppm_add_new_checklist_item(<?php echo esc_attr($list->id)?>,<?php echo esc_attr($task->id)?>,<?php echo esc_attr($proj_id) ?>)">
429 <input type="hidden" name="wppm_checklist_item_ajax_nonce" id="wppm_checklist_item_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_add_new_checklist_item' ) ); ?>">
430 <span onclick="wppm_remove_add_checklist_container(<?php echo esc_attr($list->id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cancel.svg'); ?>" alt="delete"></span>
431 </div>
432 </div>
433 </br>
434 </div>
435 </div>
436 <?php }?>
437 <hr class="wppm_checklist_divider">
438 </ul>
439 <?php
440 }
441 } ?>
442 </div><?php
443 if($user_role != 3){
444 if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
445 <div id="wppm_add_checklist_container">
446 <div class="row">
447 <div class="col-sm-12">
448 <span id="wppm_add_checklist" onclick="wppm_add_checklist()"> <?php echo esc_html_e('+Add a checklist','taskbuilder')?> </span>
449 </div>
450 </div>
451 <div class="row" id="wppm_add_new_checklist" style="display:none;">
452 <div class="col-sm-12">
453 <input type="text" class="wppm_checklist_label" placeholder="<?php echo esc_attr__('Please insert checklist title','taskbuilder');?>" id="wppm_checklist_label" name="wppm_checklist_label">
454 <input type="button" value="Add" id="wppm_checklist_btn" class="btn btn-success btn-sm" onclick="wppm_add_new_checklist(<?php echo esc_attr($id)?>,<?php echo esc_attr($proj_id) ?>)">
455 <input type="hidden" name="wppm_checklist_ajax_nonce" id="wppm_checklist_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_add_new_checklist' ) ); ?>">
456 <span onclick="wppm_remove_add_checklist()"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cross1.svg'); ?>"></span>
457 </div>
458 </div>
459 </br>
460 </div><?php
461 }
462 }?>
463 </div>
464 <div id="wppm_activity_container" style="<?php echo ($wppm_task_hide_comment_section==0 || $user_role==3) ? 'display:none;' : 'display:block;' ?>">
465 <div class="row">
466 <div class="col-sm-12" style="margin-top:5px;">
467 <span class="wppm_task_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
468 </div>
469 </div>
470 <div class="row">
471 <div class="col-sm-12" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
472 <textarea id="wppm_task_comment" placeholder="<?php echo esc_attr__('Write a comment...','taskbuilder');?>" onclick="wppm_add_task_comment()" name="wppm_task_comment"></textarea>
473 </div>
474 </div>
475 <div class="row" id="wppm_comment_btn" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
476 <div class="col-sm-6">
477 <span id="wppm_attach_file" onclick="wppm_upload_file()"><?php echo esc_html_e('Attach Files','taskbuilder')?></span>
478 </div>
479 <div class="col-sm-6">
480 <button type="button" id="wppm_individual_cancel_comment_btn" onclick="wppm_cancel_comment();" class="wppm-btn-cancel">
481 <?php echo esc_html_e('Cancel','taskbuilder')?>
482 </button>
483 <button type="button" id="wppm_individual_submit_task_comment_btn" style="background-color:<?php echo esc_attr($appearance_settings['comment-send-btn-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['comment-send-btn-color'])?>!important;" onclick="wppm_submit_task_comment(<?php echo esc_attr($id); ?>,<?php echo esc_attr($proj_id); ?>);" class="wppm-btn">
484 <?php echo esc_html_e('SEND','taskbuilder')?>
485 </button>
486 <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_submit_task_comment' ) ); ?>">
487 </div>
488 </div>
489 <div class="row" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
490 <div class="wppm_attachment_container col-sm-12" style="display:none;">
491 </div>
492 </div>
493 </div>
494 <div class="wppm_thread_container" style="<?php echo ($wppm_task_hide_comment_section==0 || $user_role==3) ? 'display:none;' : 'display:block;' ?>">
495 <?php
496 if(!empty($task_comment)){
497 foreach($task_comment as $comment){
498 $task_comment_meta = $wpdb->get_row( $wpdb->prepare(
499 "SELECT *
500 FROM {$wpdb->prefix}wppm_task_comment_meta
501 WHERE task_id = %d
502 AND comment_id = %d",
503 absint($id),
504 absint($comment->id)
505 )
506 );
507 $user = get_userdata( $comment->created_by );
508 $comment_body = (!empty($comment->body) ? wp_kses_post(wpautop($comment->body)) : '');
509 $date = wp_date("Y-m-d H:i:s" ,strtotime($comment->create_time));
510 $thread_date = wp_date("d F Y, h:i:s A" ,strtotime($date));
511 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
512 if($attachment_ids!=""){
513 $attachments = explode(",",$attachment_ids);
514 } else {
515 $attachments = array();
516 }
517 ?>
518 <div class="wppm_thread">
519 <div class="wppm_thread_avatar">
520 <?php echo (get_avatar($comment->created_by, 40));?>
521 </div>
522 <div class="wppm_thread_body">
523 <div class="wppm_thread_user_name">
524 <strong style="color:<?php echo esc_attr($appearance_settings['comment-primary-color']);?>"><?php echo isset($user->display_name) ? esc_html($user->display_name) : '' ?></strong>
525 <span><?php if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_status')){
526 $comment_log_body = unserialize($comment->body);
527 $prev_status = $comment_log_body['prev_status'];
528 $new_status = $comment_log_body['new_status'];
529 if(isset($prev_status)){
530 $task_prev_status = $wpdb->get_row( $wpdb->prepare(
531 "SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id = %d",
532 absint($prev_status)
533 ));
534 }
535 if(isset($new_status)){
536 $task_new_status = $wpdb->get_row( $wpdb->prepare(
537 "SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id = %d",
538 absint($new_status)
539 ));
540 }
541 printf(
542 esc_html__( 'Changed status from %1$s to %2$s', 'taskbuilder' ),
543 esc_html( $task_prev_status->name ),
544 esc_html( $task_new_status->name )
545 );
546 } if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_creator')){
547 $comment_log_body = unserialize($comment->body);
548 $prev_user = $comment_log_body['prev_user'];
549 $new_user = $comment_log_body['new_user'];
550 $prev_user_data = get_userdata($prev_user);
551 $new_user_data = get_userdata($new_user);
552 printf(
553 esc_html__( 'Changed creator from %1$s to %2$s', 'taskbuilder' ),
554 esc_html( $prev_user_data->display_name ),
555 esc_html( $new_user_data->display_name )
556 );
557 }
558 if( !empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_assign_user')){
559 esc_html_e("changed the Assignee","taskbuilder");
560 }
561 if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_priority')){
562 $comment_log_body = unserialize($comment->body);
563 $prev_prio = $comment_log_body['prev_prio'];
564 $new_prio = $comment_log_body['new_prio'];
565 if(isset($prev_prio)){
566 $prev_prio = absint($prev_prio);
567 $task_prev_prio = $wpdb->get_row( $wpdb->prepare(
568 "SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id = %d",
569 $prev_prio
570 ));
571 }
572 if(isset($new_prio)){
573 $new_prio = absint($new_prio);
574 $task_new_prio = $wpdb->get_row( $wpdb->prepare(
575 "SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id = %d",
576 $new_prio
577 ));
578 }
579 $task_prev_prio_name = !empty($task_prev_prio) ? $task_prev_prio->name: "None";
580 $task_new_prio_name = !empty($task_new_prio) ? $task_new_prio->name: "None";
581 printf(
582 esc_html__( 'Changed priority from %1$s to %2$s', 'taskbuilder' ),
583 esc_html( $task_prev_prio_name ),
584 esc_html( $task_new_prio_name )
585 );
586 }
587 ?>
588 <small class="wppm_comment_date" style="color:<?php echo esc_attr($appearance_settings['comment-date-color']);?>"><i><?php echo isset($thread_date) ? esc_html($thread_date) : '' ?></i></small>
589 <div class="wppm_thread_action">
590 <?php if((((($current_user->has_cap('manage_options')) || ($wppmfunction->has_comment_permission('edit_task_comment',$id,$comment->id))) && ((empty($task_comment_meta->comment_type)) || (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='comment')))) && ($task->is_archived!=1)){ ?>
591 <span title="Edit this thread" onclick="wppm_edit_thread(<?php echo esc_attr($comment->id)?>,<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit1.svg'); ?>" alt="edit"></span>
592 <span title="Delete this thread" onclick="wppm_delete_thread(<?php echo esc_attr($comment->id) ?>,<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
593 <?php } ?>
594 </div>
595 </div>
596 <div class="wppm_thread_messege" style="color:<?php echo esc_attr($appearance_settings['comment-secondary-color']);?>">
597 <?php
598 $allowedtags = array( 'br' => array(), 'abbr' => array('title' => array(),), 'p' => array(), 'strong' => array(), 'a' => array('href' => array(), 'title' => array(), 'target'=> array(), 'rel'=>array()),'em' =>array(),'span' =>array(), 'blockquote'=>array('cite' => array(),),'div' => array('class' => array(),'title' => array(),'style' => array(),),'ul'=>array(),'li'=>array(),'ol'=>array(),'img' => array( 'alt'=> array(),'class' => array(),'height' => array(),'src'=> array(),'width'=> array(),));
599 if(!empty($comment_body) && ((empty($task_comment_meta->comment_type)) || (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='comment') || (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='delete_task_comment'))){
600 echo wp_kses(wpautop($comment_body),$allowedtags);
601 } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_status')){ ?>
602 <span class="wppm_admin_label" style="margin-right: 10px; background-color:<?php echo isset($task_prev_status->bg_color) ? esc_attr($task_prev_status->bg_color):""; ?>;color:<?php echo isset($task_prev_status->color) ? esc_attr($task_prev_status->color): "" ?>;"><?php echo isset($task_prev_status->name) ? esc_attr($task_prev_status->name) : "" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span class="wppm_admin_label" style="margin-left:10px; background-color:<?php echo isset($task_new_status->bg_color) ? esc_attr($task_new_status->bg_color):""; ?>;color:<?php echo isset($task_new_status->color) ? esc_attr($task_new_status->color): "" ?>;"><?php echo isset($task_new_status->name) ? esc_attr($task_new_status->name) : "" ?></span><?php
603 }elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_creator')){ ?>
604 <span style="margin-right: 10px;"><?php echo isset($prev_user_data->display_name) ? esc_attr($prev_user_data->display_name) : "" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span style="margin-left:10px;"><?php echo isset($new_user_data->display_name) ? esc_attr($new_user_data->display_name) : "" ?></span><?php
605 } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_assign_user')) {
606 $comment_log_body = unserialize($comment->body);
607 $prev_assign_user = $comment_log_body['prev_assign_user'];
608 $new_assign_user = $comment_log_body['new_assign_user'];
609 $prev_assign_user_array = array();
610 $new_assign_user_array = array();
611 if(!empty($prev_assign_user)){
612 $prev_assign_user_array = explode(",",$prev_assign_user);
613 }
614 if(!empty($new_assign_user)){
615 $new_assign_user_array = explode(",",$new_assign_user);
616 }
617 $assign_user_name = array();
618 $assign_user_name_str = "";
619 if(!empty($prev_assign_user_array)){
620 foreach($prev_assign_user_array as $val){
621 $assign_user = get_userdata($val);
622 $assign_user_name[] = $assign_user->display_name;
623 }
624 $assign_user_name_str = implode(",",$assign_user_name);
625 }
626 $new_assign_user_name = array();
627 $new_assign_user_name_str = "";
628 if(!empty($new_assign_user_array)){
629 foreach($new_assign_user_array as $val){
630 $new_assign_user = get_userdata($val);
631 $new_assign_user_name[] = $new_assign_user->display_name;
632 }
633 $new_assign_user_name_str = implode(",",$new_assign_user_name);
634 }
635 ?>
636 <span style="margin-right: 10px;"><?php echo !empty($assign_user_name) ? esc_attr( $assign_user_name_str) : "None" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span style="margin-left:10px;"><?php echo !empty($new_assign_user_name_str) ? esc_attr($new_assign_user_name_str) : "None" ?></span><?php
637 } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_priority')){ ?>
638 <span class="wppm_admin_label" style="margin-right: 10px; background-color:<?php echo isset($task_prev_prio->bg_color) ? esc_attr($task_prev_prio->bg_color):""; ?>;color:<?php echo isset($task_prev_prio->color) ? esc_attr($task_prev_prio->color): "" ?>;"><?php echo !empty($task_prev_prio->name) ? esc_attr($task_prev_prio->name) : "None" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span class="wppm_admin_label" style="margin-left:10px; background-color:<?php echo isset($task_new_prio->bg_color) ? esc_attr($task_new_prio->bg_color):""; ?>;color:<?php echo isset($task_new_prio->color) ? esc_attr($task_new_prio->color): "" ?>;"><?php echo !empty($task_new_prio->name) ? esc_attr($task_new_prio->name) : "None" ?></span><?php
639 } ?>
640
641 </div>
642 <?php
643 if(!empty($attachments)&& (isset($task_comment_meta->comment_type) && !($task_comment_meta->comment_type=='delete_task_comment'))):?> <br>
644 <strong class="wppm_attachment_title"><?php echo esc_html_e('Attachments','taskbuilder');?>:</strong><br>
645 <table class="wppm_attachment_tbl">
646 <tbody>
647 <?php
648 if(!empty($attachments)){
649 foreach( $attachments as $attachment ):
650 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&tid='.$id.'&tac='.$auth_id;
651 $attachment = absint($attachment);
652 $attach = $wpdb->get_row( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_attachments where id=%d",$attachment));
653 $findStr = ".txt";
654 if(!empty( $attach)){
655 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
656 $attachment_name = sanitize_file_name($attachment_name);
657 }
658 if((!empty($attachment_name))){
659 ?>
660 <tr class="wppm_attachment_tr">
661 <td>
662 <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
663 <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
664 <?php if((($comment->created_by == $current_user->ID) || ($current_user->has_cap('manage_options')) || ($wppmfunction->has_comment_permission('edit_task_comment',$id,$comment->id))) && ($task->is_archived!=1)){ ?>
665 <span class="wppm_thread_action_btn" onclick="wppm_thread_attachment_remove(this,<?php echo !empty($attach->id) ? esc_attr($attach->id) : 0; ?>,<?php echo !empty($comment->id) ? esc_attr($comment->id) : 0; ?>,<?php echo !empty($id) ? esc_attr($id) : 0; ?>,<?php echo !empty($proj_id) ? esc_attr($proj_id) : 0;?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cancel.svg'); ?>" alt="cancel"></span>
666 <?php } ?>
667 </td>
668 </tr>
669 <input type="hidden" name="wppm_ajax_nonce" id="wppm_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_remove_thread_attachment' ) ); ?>">
670 <?php }
671 endforeach;
672 } ?>
673 </tbody>
674 </table>
675 <?php do_action('wppm_after_comment_attachment',$id,$comment->id);?>
676 <?php endif;?>
677 </div>
678 </div>
679 <?php }
680 } ?>
681 </div>
682 </div>
683 <div class="wppm_individual_task_widget col-sm-4 wppm_sidebar col-md-3">
684 <div class="row wppm_widget" id="wppm_status_widget">
685 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
686 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
687 <?php
688 if($user_role != 3){
689 if((($current_user->has_cap('manage_options') || $wppm_current_user_capability == ('wppm_admin') || ($flag==true) || ($wppmfunction->has_permission('change_task_status',$id))!="") && ($task->is_archived!=1))){
690 ?>
691 <span class="wppm_edit_task_details_widget" onclick="wppm_edit_task_status(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>,<?php echo esc_attr($project_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
692 <?php
693 }
694 }
695 ?>
696 </div>
697 <hr class="widget_divider">
698 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
699 <div class="wppm_sidebar_labels"><span class="wppm_label_info" style="color:<?php echo esc_attr($appearance_settings['widget-body-label-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?>:</span> <span class="wppm_admin_label" style="background-color:<?php echo (isset($task_status->bg_color))? esc_attr($task_status->bg_color):""?>;color:<?php echo (isset($task_status->color))? esc_attr($task_status->color):""?>;"><?php echo (isset($task_status->name))? esc_attr($task_status->name):"" ?> </span></div>
700 </div>
701 </div>
702 <div class="row wppm_widget" id="wppm_raisedby_widget">
703 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
704 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>">
705 <?php echo esc_html_e('Task Creator','taskbuilder')?></h4>
706 <?php if($user_role != 3){
707 if ((($wppmfunction->has_permission('change_raised_by',$id ) || $current_user->has_cap('manage_options')) && ($task->is_archived!=1))) { ?>
708 <span class="wppm_edit_task_details_widget" onclick="wppm_edit_task_creator(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>,<?php echo esc_attr($project_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
709 <?php }
710 }?>
711 </div>
712 <hr class="widget_divider"> <?php
713 if(isset($task->created_by)){
714 $user_info = get_userdata($task->created_by);
715 }else{
716 $user_info ="";
717 }
718 ?>
719 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
720 <div style="padding:2px 0;">
721 <span class="wppm_task_user_avatar"><?php echo (get_avatar($task->created_by, 25, "mysteryman")); ?></span>
722 <span class="wppm_task_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>;"><?php echo isset($user_info->display_name)?esc_html($user_info->display_name):""; ?></span>
723 </div>
724 </div>
725 </div>
726 <div class="row wppm_widget" id="wppm_task_users_widget_container">
727 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
728 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>;"><?php echo esc_html_e('Users','taskbuilder')?></h4>
729 <?php
730 if($user_role != 3){
731 if ((($wppmfunction->has_permission('assign_task_users',$id ) || $current_user->has_cap('manage_options')) && ($task->is_archived!=1))) { ?>
732 <span class="wppm_edit_task_details_widget" onclick="wppm_edit_task_users(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>,<?php echo esc_attr($project_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
733 <?php }
734 }?>
735 </div>
736 <hr class="widget_divider">
737 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
738 <div id="wppm_task_users">
739 <?php
740 $i=0;
741 if(!empty($users)){
742 foreach($users as $user) {
743 $user_data = get_userdata($user);
744 if(!empty($project_data['users'])){
745 $proj_users = explode(',',$project_data['users']);
746 if(in_array($user,$proj_users)){
747 $i++;
748 ?>
749 <div style="padding:2px 0;">
750 <span class="wppm_task_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
751 <span class="wppm_task_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>;"><?php echo ((!empty($user_data))? esc_html($user_data->display_name) :"") ?></span>
752 </div>
753 <?php
754 }
755 }
756 }
757 }
758 if($i==0){ ?>
759 <span class="wppm_display_user_none" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>"><?php echo esc_html_e('None','taskbuilder'); ?></span> <?php
760 }
761 ?>
762 </div>
763 </div>
764 </div>
765 <?php do_action('wppm_after_task_widgets',$id,$task_id );?>
766 </div>
767 <input type="hidden" id="wppm_nonce" value="<?php echo esc_attr(wp_create_nonce('wppm_upload_file'))?>">
768 <input type="file" id="wppm_attachment_upload" class="hidden" onchange="">
769 </div>
770 </form>
771 <style>
772 .wppm_comment_date i:hover{
773 color: <?php echo esc_attr($appearance_settings['comment-date-hover-color'])?>;
774 }
775 #Layer_1{
776 fill:red!important;
777 }
778 </style>
779 <script>
780 jQuery( document ).ready( function( jQuery ) {
781 const button = document.getElementById('wppm_print_task_btn');
782 const box = document.getElementById('wppmprint_menu');
783
784 // Show box on button click
785 button.addEventListener('click', (e) => {
786 e.stopPropagation(); // prevent document click from firing immediately
787 box.style.display = 'flex';
788 });
789
790 // Prevent hiding when clicking inside box
791 box.addEventListener('click', (e) => {
792 e.stopPropagation();
793 });
794
795 // Hide when clicking outside
796 document.addEventListener('click', () => {
797 box.style.display = 'none';
798 });
799 <?php
800 if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task->id))){ ?>
801 jQuery("#wppm_edit_tstart_date").flatpickr({
802 enableTime: true,
803 dateFormat: "Y-m-d H:i",
804 onChange: function(selectedDates, dateStr, instance) {
805 var data = {
806 action: 'wppm_set_change_task_start_date',
807 task_id:<?php echo esc_attr($task->id);?>,
808 date:dateStr,
809 _ajax_nonce:jQuery('#wppm_edit_tstart_date_ajax_nonce').val()
810 };
811 jQuery.post(wppm_admin.ajax_url, data, function(response) {
812 instance.close();
813 wppm_open_task(<?php echo esc_attr($task->id);?>);
814 });
815 },
816 });
817 jQuery("#wppm_edit_tend_date").flatpickr({
818 enableTime: true,
819 dateFormat: "Y-m-d H:i",
820 onChange: function(selectedDates, dateStr, instance) {
821 var data = {
822 action: 'wppm_set_change_task_end_date',
823 task_id:<?php echo esc_attr($task->id);?>,
824 date:dateStr,
825 _ajax_nonce:jQuery('#wppm_edit_tend_date_ajax_nonce').val()
826 };
827 jQuery.post(wppm_admin.ajax_url, data, function(response) {
828 instance.close();
829 wppm_open_task(<?php echo esc_attr($task->id);?>);
830 });
831 },
832 });
833 <?php } ?>
834 <?php foreach ($wppm_checklist as $chklist) { ?>
835 var $checkboxes = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>);
836 var $progress = jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>);
837 var total = $checkboxes.length;
838 var checked = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>).filter(':checked').length;
839 var progressWidth = Math.ceil((checked / total) * 100);
840 jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('background','#5ba4cf');
841 jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('width', progressWidth + '%');
842 if(progressWidth>0){
843 jQuery('#wppm_progressbar_label_'+<?php echo esc_attr($chklist->id);?>).text(progressWidth+'%');
844 }
845 <?php $wppm_checklist_items = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_checklist_items where checklist_id=%d",$chklist->id));
846 foreach ($wppm_checklist_items as $chkitems) {
847 ?> jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseover", function () {
848 jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","inline");
849 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#e7e8ea");
850 })
851 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseout", function () {
852 jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","none");
853 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#ffffff");
854 })
855 <?php
856 }
857 }
858 $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
859 $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";
860 $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";
861 $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";
862 $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)? ' alignleft aligncenter alignright ' :"";
863 $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :"";
864 $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";
865 $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";
866 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
867 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
868 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
869 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
870 $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
871 $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");
872 if(($wppm_tinymce_visibility_open_task==1)){ ?>
873 if((wppm_admin.rich_text_editor) && (wppm_admin.rich_text_editor.trim().length > 0) && (wppm_admin.rich_text_editor == 1)){
874 tinymce.remove();
875 tinymce.init({
876 selector:'#wppm_task_comment',
877 body_id: 'wppm_task_comment',
878 directionality : '<?php //echo 'rtl'; ?>',
879 menubar: false,
880 statusbar: false,
881 height : '200',
882 width : '100%',
883 plugins: [
884 'lists link image directionality paste textcolor'
885 ],
886 image_advtab: true,
887 toolbar:'<?php echo esc_js( $toolbar ); ?>',
888 branding: false,
889 autoresize_bottom_margin: 20,
890 browser_spellcheck : true,
891 relative_urls : false,
892 remove_script_host : false,
893 convert_urls : true,
894 paste_as_text: true,
895 setup: function (editor) {
896 }
897 });
898 jQuery('#wppm_comment_btn').show();
899 }
900 <?php } ?>
901 });
902
903 jQuery(function(jQuery){
904 // Checklist Sorting
905 jQuery(".wppm_checklist_items_container").sortable({
906 handle: ".wppm_chk_items_drag",
907 update: function() {
908 let order = [];
909 jQuery(this).find("li").each(function(){
910 order.push(jQuery(this).data("id")); // checklist item id
911 });
912
913 // AJAX Save
914 jQuery.post(wppm_admin.ajax_url, {
915 action: "wppm_update_checklist_order",
916 order: order,
917 task_id: <?php echo esc_attr($id); ?>,
918 _ajax_nonce: '<?php echo esc_attr( wp_create_nonce( 'wppm_update_checklist_order' ) ); ?>'
919 }, function(response_str){
920 var response = JSON.parse(response_str);
921 jQuery('.wppm_submit_wait').hide();
922 if (response.sucess_status=='1') {
923 jQuery('#wppm_alert_success .wppm_alert_text').text(response.messege);
924 }
925 jQuery('#wppm_alert_success').slideDown('fast',function(){});
926 setTimeout(function(){ jQuery('#wppm_alert_success').slideUp('fast',function(){}); }, 3000);
927 });
928 }
929 });
930
931 });
932
933 function wppm_cancel_comment(){ <?php
934 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
935 ?>
936 tinyMCE. activeEditor. setContent('');
937 tinymce.remove('#wppm_task_comment');
938 jQuery('#wppm_comment_btn').hide();
939 <?php } else{
940 ?>
941 jQuery('#wppm_task_comment').css("width", "80%");
942 jQuery('#wppm_task_comment').css("height", "30px");
943 jQuery('#wppm_task_comment').css("color", "#000");
944 jQuery('#wppm_task_comment').css("padding", "5px");
945 jQuery('#wppm_task_comment').css(" margin-bottom", "15px");
946 jQuery('#wppm_task_comment').css("overflow", "hidden");
947 jQuery('#wppm_task_comment').css("border", "1 px solid #eee");
948 jQuery('#wppm_task_comment').css("color", "#eee");
949 jQuery('#wppm_task_comment').css("margin-top", "10px");
950 jQuery('#wppm_comment_btn').hide();
951 <?php }?>
952 }
953
954 function wppm_add_task_comment(){
955 if((wppm_admin.rich_text_editor == 1)){
956 tinymce.remove();
957 tinymce.init({
958 selector:'#wppm_task_comment',
959 body_id: 'wppm_task_comment',
960 directionality : '<?php //echo 'rtl'; ?>',
961 menubar: false,
962 statusbar: false,
963 height : '200',
964 width : '100%',
965 plugins: [
966 'lists link image directionality paste textcolor'
967 ],
968 image_advtab: true,
969 toolbar:'<?php echo esc_js( $toolbar ); ?>',
970 branding: false,
971 autoresize_bottom_margin: 20,
972 browser_spellcheck : true,
973 relative_urls : false,
974 remove_script_host : false,
975 convert_urls : true,
976 paste_as_text: true,
977 setup: function (editor) {
978 }
979 });
980 } else{
981 jQuery('#wppm_task_comment').css("width", "100%");
982 jQuery('#wppm_task_comment').css("height", "160px");
983 jQuery('#wppm_task_comment').css("color", "#000");
984 }
985 jQuery('#wppm_comment_btn').show();
986 }
987
988 function wppm_submit_task_comment(id,proj_id){
989 var dataform = new FormData(jQuery('#wppm_open_task')[0]);
990 dataform.append('action','wppm_submit_task_comment');
991 if((wppm_admin.rich_text_editor == 1)){
992 var comment_body = tinyMCE.get('wppm_task_comment').getContent().trim();
993 } else{
994 var comment_body = jQuery("#wppm_task_comment").val();
995 }
996 dataform.append('comment_body',comment_body);
997 dataform.append('task_id',id);
998 jQuery('#wppm_task_container').html(wppm_admin.loading_html);
999 jQuery.ajax({
1000 url: wppm_admin.ajax_url,
1001 type: 'POST',
1002 data: dataform,
1003 processData: false,
1004 contentType: false
1005 })
1006 .done(function (response_str) {
1007 if((proj_id!=0)||(proj_id!="")){
1008 wppm_open_project_tasks(id,proj_id);
1009 }else if((proj_id==0)||(proj_id=="")){
1010 wppm_open_task(id);
1011 }
1012 });
1013 }
1014
1015 function wppm_add_checklist_item(checklist_id){
1016 jQuery('#wppm_add_checklist_label_container_'+checklist_id).show();
1017 jQuery('#wppm_add_checklist_item_btn_'+checklist_id).hide();
1018 jQuery('.wppm_add_checklist_label_container_'+checklist_id).show();
1019 jQuery('.wppm_checklist_item_label_'+checklist_id).css('height', '30px');
1020 jQuery('.wppm_add_new_item_btn_'+checklist_id).css('margin', '10px');
1021 }
1022
1023 function wppm_add_checklist(){
1024 jQuery('#wppm_add_checklist').hide();
1025 jQuery('#wppm_add_new_checklist').show();
1026 }
1027
1028 function wppm_remove_add_checklist_container(checklist_id){
1029 jQuery('#wppm_add_checklist_label_container_'+checklist_id).hide();
1030 jQuery('#wppm_add_checklist_item_btn_'+checklist_id).show();
1031 }
1032
1033 function wppm_remove_add_checklist(){
1034 jQuery('#wppm_add_new_checklist').hide();
1035 jQuery('#wppm_add_checklist').show();
1036 }
1037
1038 function wppm_timer_log_pro(){
1039 if (confirm('<?php echo esc_js(
1040 __('Unlock the time tracker feature. Available in Taskbuilder Pro along with reports, integrations, automation and more. Do you want to view pricing?', 'taskbuilder')
1041 ); ?>')) {
1042 window.open(
1043 '<?php echo esc_url('https://taskbuilder.net/pricing/'); ?>',
1044 '_blank'
1045 );
1046 }
1047 }
1048
1049 function wppm_upload_file(){
1050 jQuery('#wppm_attachment_upload').unbind('change');
1051 jQuery('#wppm_attachment_upload').on('change', function() {
1052 var flag = false;
1053 var file = this.files[0];
1054 jQuery('#wppm_attachment_upload').val('');
1055 var allowedExtension = ['exe', 'php','js'];
1056 var file_name_split = file.name.split('.');
1057 var file_extension = file_name_split[file_name_split.length-1];
1058 file_extension = file_extension.toLowerCase();
1059 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
1060 flag = true;
1061 alert("<?php echo esc_js(__( 'Attached file type not allowed!', 'taskbuilder' ) ); ?>");
1062
1063 };
1064 <?php
1065 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
1066 var current_filesize=file.size/1000000;
1067 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
1068 flag = true;
1069 alert("<?php echo esc_js(__('File size exceed allowed limit!','taskbuilder')); ?>");
1070 }
1071 if (!flag){
1072 var html_str = '<div class="wppm_attachment">'+
1073 '<div class="progress" style="float: none !important; width: unset !important;">'+
1074 '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
1075 file.name+
1076 '</div>'+
1077 '<span class="wppm_attachment_cancel" onclick="wppm_attachment_cancel(this);" style="display:none;"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cross_icon.svg'); ?>" alt="delete_icon"></span>'+
1078 '</div>'+
1079 '</div>';
1080 jQuery('.wppm_attachment_container').show();
1081 jQuery('.wppm_attachment_container').append(html_str);
1082 var attachment = jQuery('.wppm_attachment_container').find('.wppm_attachment').last();
1083 var data = new FormData();
1084 data.append('file', file);
1085 data.append('arr_name', file.name);
1086 data.append('action', 'wppm_upload_file');
1087 data.append('nonce', jQuery('#wppm_nonce').val().trim());
1088 jQuery.ajax({
1089 type: 'post',
1090 url: wppm_admin.ajax_url,
1091 data: data,
1092 xhr: function(){
1093 var xhr = new window.XMLHttpRequest();
1094 xhr.upload.addEventListener("progress", function(evt){
1095 if (evt.lengthComputable) {
1096 var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
1097 jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
1098 }
1099 }, false);
1100 return xhr;
1101 },
1102 processData: false,
1103 contentType: false,
1104 success: function(response) {
1105 var return_obj=JSON.parse(response);
1106 jQuery(attachment).find('.wppm_attachment_cancel').show();
1107 if( parseInt(return_obj.id) != 0 ){
1108 jQuery(attachment).append('<input type="hidden" class="wppm_comment_attachment" name="wppm_comment_attachment[]" value="'+return_obj.id+'">');
1109 jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
1110 }else {
1111 jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
1112 }
1113 }
1114 });
1115 }
1116 });
1117 jQuery('#wppm_attachment_upload').trigger('click');
1118 }
1119 </script>
1120