PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 5.0.7
Taskbuilder – Project Management & Task Management Tool With Kanban Board v5.0.7
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.7, at includes/admin/tasks/open_task/wppm_open_task.php

1,104 lines 70.3 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 </div>
243 </div>
244 <div id="wppm_load_individual_task_container" class="row">
245 <div class="col-sm-8 wppm_body col-md-9">
246 <div class="wppm_task_details_container">
247 <div class="row">
248 <div class="col-sm-12">
249 <span class="wppm_task_label"> <?php echo isset($task->task_name) ? esc_html($task->task_name ):"" ?>
250 <?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) { ?>
251 <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>
252 <?php } ?>
253 </span>
254 </div>
255 </div>
256 <div class="row">
257 <div class="col-sm-3">
258 <span class="wppm_task_details_label"><?php echo esc_html_e('Project:','taskbuilder');?></span>
259 </div>
260 <div class="col-sm-9">
261 <span class="wppm_task_details"><?php echo (isset($project_name))? esc_html($project_name ):"" ?></span>
262 </div>
263 </div>
264 <div class="row">
265 <div class="col-sm-3">
266 <span class="wppm_task_details_label"><?php echo esc_html_e('Created On:','taskbuilder');?></span>
267 </div>
268 <div class="col-sm-9"><?php
269 $tcDate = isset($task->date_created) ? new DateTime($task->date_created): "";
270 if($wppm_task_time !=0){
271 if($wppm_date_setting=='Y-m-d H:i:s'){
272 $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d H:i:s'):"";
273 } elseif($wppm_date_setting=='d-m-Y H:i:s'){
274 $task_create_date = !empty($tcDate) ? $tcDate->format('d-m-Y H:i:s'):"";
275 } elseif($wppm_date_setting=='m-d-Y H:i:s'){
276 $task_create_date = !empty($tcDate) ? $tcDate->format('m-d-Y H:i:s'):"";
277 } else {
278 $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d H:i:s'):"";
279 }
280 } elseif($wppm_task_time == 0){
281 if($wppm_date_setting=='Y-m-d H:i:s'){
282 $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d'):"";
283 } elseif($wppm_date_setting=='d-m-Y H:i:s'){
284 $task_create_date = !empty($tcDate) ? $tcDate->format('d-m-Y'):"";
285 } elseif($wppm_date_setting=='m-d-Y H:i:s'){
286 $task_create_date = !empty($tcDate) ? $tcDate->format('m-d-Y'):"";
287 } else {
288 $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d'):"";
289 }
290 } ?>
291 <span class="wppm_task_details"><?php echo (isset($task_create_date))? esc_html($task_create_date):"" ?></span>
292 </div>
293 </div>
294 <?php if($wppm_default_task_date == 1 && $wppm_deafault_time_duration_task==0){ ?>
295 <div class="row">
296 <div class="col-sm-3">
297 <span class="wppm_task_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
298 </div>
299 <div class="col-sm-9">
300 <span class="wppm_task_details" id="wppm_edit_tstart_date"><?php echo (isset($task_start_date))? esc_html($task_start_date):"" ?></span>
301 </div>
302 <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' ) ); ?>">
303 </div>
304 <div class="row">
305 <div class="col-sm-3">
306 <span class="wppm_task_details_label"><?php echo esc_html_e('End Date:','taskbuilder');?></span>
307 </div>
308 <div class="col-sm-9">
309 <?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"; ?>
310 <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>
311 </div>
312 <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' ) ); ?>">
313 </div>
314 <?php }
315 if($wppm_deafault_time_duration_task==1){
316 $wppm_task_duration = $wppmfunction->wppm_get_duration($task->start_date,$task->end_date);
317 $tstatus = isset($task->status) ? $task->status :"";
318 $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"; ?>
319 <div class="row">
320 <div class="col-sm-3">
321 <span class="wppm_task_details_label"><?php echo esc_html_e('Task Duration:','taskbuilder');?></span>
322 </div>
323 <div class="col-sm-9">
324 <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>
325 </div>
326 </div> <?php
327 }?>
328 <div class="row">
329 <div class="col-sm-3">
330 <span class="wppm_task_details_label"><?php echo esc_html_e('Task Priority:','taskbuilder');?></span>
331 </div>
332 <div class="col-sm-9">
333 <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>
334 </div>
335 </div>
336 <div class="row">
337 <div class="col-sm-3">
338 <span class="wppm_task_details_label"><?php echo esc_html_e('Description:','taskbuilder');?></span>
339 </div>
340 <div class="col-sm-9">
341 <span class="wppm_task_description"><?php echo (!empty($task_description))? wp_kses_post(wpautop($task_description)):"" ?></span>
342 </div>
343 </div>
344 <?php do_action('wppm_after_task_details_in_open_task',$task->id, $task->project);?>
345 </div>
346 <div class="wppm_task_checklist_container" id="wppm_task_checklist_container">
347 <div id="wppm_checklist_container">
348 <?php
349 if(!empty($wppm_checklist)){
350 foreach( $wppm_checklist as $key=>$list){
351 ?>
352 <div class="row">
353 <div class="col-sm-8">
354 <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>
355 </div>
356 <?php
357 $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"; ?>
358 <?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"; ?>
359 <?php if($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')){ ?>
360 <div class="col-sm-4" style="text-align:right;<?php echo esc_attr($check_style) ?>">
361 <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>
362 <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' ) ); ?>">
363 </div>
364 <?php }?>
365 </div>
366 <div class="wppm_progress_bar_container row">
367 <div class="col-sm-4">
368 <span class="wppm_progressbar_label" id="wppm_progressbar_label_<?php echo esc_attr($list->id)?>">0%</span>
369 </div>
370 <div class="wppm_progress_bar col-sm-8">
371 <div id="CheckProgress_<?php echo esc_attr($list->id);?>" class="wppm_checkprogress" role="progressbar" style="width: 0%" aria-valuemin="0" aria-valuemax="100"></div>
372 </div>
373 </div>
374 <?php
375 $list_id = absint($list->id);
376 $sql = $wpdb->prepare(
377 "SELECT *
378 FROM {$wpdb->prefix}wppm_checklist_items
379 WHERE checklist_id = %d
380 ORDER BY load_order ASC",
381 $list_id
382 );
383 // Execute
384 $wppm_checklist_items = $wpdb->get_results($sql);
385 ?>
386 <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;">
387 <?php
388 if(!empty( $wppm_checklist_items)){
389 foreach($wppm_checklist_items as $key=>$val){
390 $checked = $val->checked == 1 ? 'checked="checked"' : '';
391 ?>
392 <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;">
393 <div class="col-sm-8" id="wppm_checklist_item_container_<?php echo esc_attr($val->id) ?>">
394 <span class="wppm_chk_items_drag">☰</span>
395 <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>
396 <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' ) ); ?>">
397 </div>
398 <?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) { ?>
399 <div class="col-sm-4" id="wppm_checklist_action_<?php echo esc_attr($val->id) ?>" style="text-align:right; display:none;cursor:pointer;">
400 <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>
401 <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' ) ); ?>">
402 <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>
403 <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' ) ); ?>">
404 </div>
405 <?php } ?>
406 </li>
407 <?php
408 }
409 } ?>
410 <?php if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
411 <div class="row">
412 <div class="col-sm-12 wppm_add_checklist_item_container_<?php echo esc_attr($list->id) ?>" style="padding-top:15px;">
413 <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>
414 </div>
415 </div>
416 <?php }?>
417 <?php if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
418 <div class="row">
419 <div class="col-sm-12" style="display:none;" id="wppm_add_checklist_label_container_<?php echo esc_attr($list->id) ?>">
420 <div class="row" id="wppm_add_new_checklist_item_<?php echo esc_attr($list->id) ?>">
421 <div class="col-sm-12">
422 <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;">
423 <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) ?>)">
424 <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' ) ); ?>">
425 <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>
426 </div>
427 </div>
428 </br>
429 </div>
430 </div>
431 <?php }?>
432 <hr class="wppm_checklist_divider">
433 </ul>
434 <?php
435 }
436 } ?>
437 </div><?php
438 if($user_role != 3){
439 if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
440 <div id="wppm_add_checklist_container">
441 <div class="row">
442 <div class="col-sm-12">
443 <span id="wppm_add_checklist" onclick="wppm_add_checklist()"> <?php echo esc_html_e('+Add a checklist','taskbuilder')?> </span>
444 </div>
445 </div>
446 <div class="row" id="wppm_add_new_checklist" style="display:none;">
447 <div class="col-sm-12">
448 <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">
449 <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) ?>)">
450 <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' ) ); ?>">
451 <span onclick="wppm_remove_add_checklist()"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cross1.svg'); ?>"></span>
452 </div>
453 </div>
454 </br>
455 </div><?php
456 }
457 }?>
458 </div>
459 <div id="wppm_activity_container" style="<?php echo ($wppm_task_hide_comment_section==0 || $user_role==3) ? 'display:none;' : 'display:block;' ?>">
460 <div class="row">
461 <div class="col-sm-12" style="margin-top:5px;">
462 <span class="wppm_task_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
463 </div>
464 </div>
465 <div class="row">
466 <div class="col-sm-12" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
467 <textarea id="wppm_task_comment" placeholder="<?php echo esc_attr__('Write a comment...','taskbuilder');?>" onclick="wppm_add_task_comment()" name="wppm_task_comment"></textarea>
468 </div>
469 </div>
470 <div class="row" id="wppm_comment_btn" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
471 <div class="col-sm-6">
472 <span id="wppm_attach_file" onclick="wppm_upload_file()"><?php echo esc_html_e('Attach Files','taskbuilder')?></span>
473 </div>
474 <div class="col-sm-6">
475 <button type="button" id="wppm_individual_cancel_comment_btn" onclick="wppm_cancel_comment();" class="wppm-btn-cancel">
476 <?php echo esc_html_e('Cancel','taskbuilder')?>
477 </button>
478 <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">
479 <?php echo esc_html_e('SEND','taskbuilder')?>
480 </button>
481 <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_submit_task_comment' ) ); ?>">
482 </div>
483 </div>
484 <div class="row" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
485 <div class="wppm_attachment_container col-sm-12" style="display:none;">
486 </div>
487 </div>
488 </div>
489 <div class="wppm_thread_container" style="<?php echo ($wppm_task_hide_comment_section==0 || $user_role==3) ? 'display:none;' : 'display:block;' ?>">
490 <?php
491 if(!empty($task_comment)){
492 foreach($task_comment as $comment){
493 $task_comment_meta = $wpdb->get_row( $wpdb->prepare(
494 "SELECT *
495 FROM {$wpdb->prefix}wppm_task_comment_meta
496 WHERE task_id = %d
497 AND comment_id = %d",
498 absint($id),
499 absint($comment->id)
500 )
501 );
502 $user = get_userdata( $comment->created_by );
503 $comment_body = (!empty($comment->body) ? wp_kses_post(wpautop($comment->body)) : '');
504 $date = wp_date("Y-m-d H:i:s" ,strtotime($comment->create_time));
505 $thread_date = wp_date("d F Y, h:i:s A" ,strtotime($date));
506 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
507 if($attachment_ids!=""){
508 $attachments = explode(",",$attachment_ids);
509 } else {
510 $attachments = array();
511 }
512 ?>
513 <div class="wppm_thread">
514 <div class="wppm_thread_avatar">
515 <?php echo (get_avatar($comment->created_by, 40));?>
516 </div>
517 <div class="wppm_thread_body">
518 <div class="wppm_thread_user_name">
519 <strong style="color:<?php echo esc_attr($appearance_settings['comment-primary-color']);?>"><?php echo isset($user->display_name) ? esc_html($user->display_name) : '' ?></strong>
520 <span><?php if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_status')){
521 $comment_log_body = unserialize($comment->body);
522 $prev_status = $comment_log_body['prev_status'];
523 $new_status = $comment_log_body['new_status'];
524 if(isset($prev_status)){
525 $task_prev_status = $wpdb->get_row( $wpdb->prepare(
526 "SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id = %d",
527 absint($prev_status)
528 ));
529 }
530 if(isset($new_status)){
531 $task_new_status = $wpdb->get_row( $wpdb->prepare(
532 "SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id = %d",
533 absint($new_status)
534 ));
535 }
536 printf(
537 esc_html__( 'Changed status from %1$s to %2$s', 'taskbuilder' ),
538 esc_html( $task_prev_status->name ),
539 esc_html( $task_new_status->name )
540 );
541 } if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_creator')){
542 $comment_log_body = unserialize($comment->body);
543 $prev_user = $comment_log_body['prev_user'];
544 $new_user = $comment_log_body['new_user'];
545 $prev_user_data = get_userdata($prev_user);
546 $new_user_data = get_userdata($new_user);
547 printf(
548 esc_html__( 'Changed creator from %1$s to %2$s', 'taskbuilder' ),
549 esc_html( $prev_user_data->display_name ),
550 esc_html( $new_user_data->display_name )
551 );
552 }
553 if( !empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_assign_user')){
554 esc_html_e("changed the Assignee","taskbuilder");
555 }
556 if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_priority')){
557 $comment_log_body = unserialize($comment->body);
558 $prev_prio = $comment_log_body['prev_prio'];
559 $new_prio = $comment_log_body['new_prio'];
560 if(isset($prev_prio)){
561 $prev_prio = absint($prev_prio);
562 $task_prev_prio = $wpdb->get_row( $wpdb->prepare(
563 "SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id = %d",
564 $prev_prio
565 ));
566 }
567 if(isset($new_prio)){
568 $new_prio = absint($new_prio);
569 $task_new_prio = $wpdb->get_row( $wpdb->prepare(
570 "SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id = %d",
571 $new_prio
572 ));
573 }
574 $task_prev_prio_name = !empty($task_prev_prio) ? $task_prev_prio->name: "None";
575 $task_new_prio_name = !empty($task_new_prio) ? $task_new_prio->name: "None";
576 printf(
577 esc_html__( 'Changed priority from %1$s to %2$s', 'taskbuilder' ),
578 esc_html( $task_prev_prio_name ),
579 esc_html( $task_new_prio_name )
580 );
581 }
582 ?>
583 <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>
584 <div class="wppm_thread_action">
585 <?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)){ ?>
586 <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>
587 <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>
588 <?php } ?>
589 </div>
590 </div>
591 <div class="wppm_thread_messege" style="color:<?php echo esc_attr($appearance_settings['comment-secondary-color']);?>">
592 <?php
593 $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(),));
594 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'))){
595 echo wp_kses(wpautop($comment_body),$allowedtags);
596 } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_status')){ ?>
597 <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
598 }elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_creator')){ ?>
599 <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
600 } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_assign_user')) {
601 $comment_log_body = unserialize($comment->body);
602 $prev_assign_user = $comment_log_body['prev_assign_user'];
603 $new_assign_user = $comment_log_body['new_assign_user'];
604 $prev_assign_user_array = array();
605 $new_assign_user_array = array();
606 if(!empty($prev_assign_user)){
607 $prev_assign_user_array = explode(",",$prev_assign_user);
608 }
609 if(!empty($new_assign_user)){
610 $new_assign_user_array = explode(",",$new_assign_user);
611 }
612 $assign_user_name = array();
613 $assign_user_name_str = "";
614 if(!empty($prev_assign_user_array)){
615 foreach($prev_assign_user_array as $val){
616 $assign_user = get_userdata($val);
617 $assign_user_name[] = $assign_user->display_name;
618 }
619 $assign_user_name_str = implode(",",$assign_user_name);
620 }
621 $new_assign_user_name = array();
622 $new_assign_user_name_str = "";
623 if(!empty($new_assign_user_array)){
624 foreach($new_assign_user_array as $val){
625 $new_assign_user = get_userdata($val);
626 $new_assign_user_name[] = $new_assign_user->display_name;
627 }
628 $new_assign_user_name_str = implode(",",$new_assign_user_name);
629 }
630 ?>
631 <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
632 } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_priority')){ ?>
633 <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
634 } ?>
635
636 </div>
637 <?php
638 if(!empty($attachments)&& (isset($task_comment_meta->comment_type) && !($task_comment_meta->comment_type=='delete_task_comment'))):?> <br>
639 <strong class="wppm_attachment_title"><?php echo esc_html_e('Attachments','taskbuilder');?>:</strong><br>
640 <table class="wppm_attachment_tbl">
641 <tbody>
642 <?php
643 if(!empty($attachments)){
644 foreach( $attachments as $attachment ):
645 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&tid='.$id.'&tac='.$auth_id;
646 $attachment = absint($attachment);
647 $attach = $wpdb->get_row( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_attachments where id=%d",$attachment));
648 $findStr = ".txt";
649 if(!empty( $attach)){
650 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
651 $attachment_name = sanitize_file_name($attachment_name);
652 }
653 if((!empty($attachment_name))){
654 ?>
655 <tr class="wppm_attachment_tr">
656 <td>
657 <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
658 <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
659 <?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)){ ?>
660 <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>
661 <?php } ?>
662 </td>
663 </tr>
664 <input type="hidden" name="wppm_ajax_nonce" id="wppm_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_remove_thread_attachment' ) ); ?>">
665 <?php }
666 endforeach;
667 } ?>
668 </tbody>
669 </table>
670 <?php do_action('wppm_after_comment_attachment',$id,$comment->id);?>
671 <?php endif;?>
672 </div>
673 </div>
674 <?php }
675 } ?>
676 </div>
677 </div>
678 <div class="wppm_individual_task_widget col-sm-4 wppm_sidebar col-md-3">
679 <div class="row wppm_widget" id="wppm_status_widget">
680 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
681 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
682 <?php
683 if($user_role != 3){
684 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))){
685 ?>
686 <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>
687 <?php
688 }
689 }
690 ?>
691 </div>
692 <hr class="widget_divider">
693 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
694 <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>
695 </div>
696 </div>
697 <div class="row wppm_widget" id="wppm_raisedby_widget">
698 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
699 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>">
700 <?php echo esc_html_e('Task Creator','taskbuilder')?></h4>
701 <?php if($user_role != 3){
702 if ((($wppmfunction->has_permission('change_raised_by',$id ) || $current_user->has_cap('manage_options')) && ($task->is_archived!=1))) { ?>
703 <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>
704 <?php }
705 }?>
706 </div>
707 <hr class="widget_divider"> <?php
708 if(isset($task->created_by)){
709 $user_info = get_userdata($task->created_by);
710 }else{
711 $user_info ="";
712 }
713 ?>
714 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
715 <div style="padding:2px 0;">
716 <span class="wppm_task_user_avatar"><?php echo (get_avatar($task->created_by, 25, "mysteryman")); ?></span>
717 <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>
718 </div>
719 </div>
720 </div>
721 <div class="row wppm_widget" id="wppm_task_users_widget_container">
722 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
723 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>;"><?php echo esc_html_e('Users','taskbuilder')?></h4>
724 <?php
725 if($user_role != 3){
726 if ((($wppmfunction->has_permission('assign_task_users',$id ) || $current_user->has_cap('manage_options')) && ($task->is_archived!=1))) { ?>
727 <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>
728 <?php }
729 }?>
730 </div>
731 <hr class="widget_divider">
732 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
733 <div id="wppm_task_users">
734 <?php
735 $i=0;
736 if(!empty($users)){
737 foreach($users as $user) {
738 $user_data = get_userdata($user);
739 if(!empty($project_data['users'])){
740 $proj_users = explode(',',$project_data['users']);
741 if(in_array($user,$proj_users)){
742 $i++;
743 ?>
744 <div style="padding:2px 0;">
745 <span class="wppm_task_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
746 <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>
747 </div>
748 <?php
749 }
750 }
751 }
752 }
753 if($i==0){ ?>
754 <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
755 }
756 ?>
757 </div>
758 </div>
759 </div>
760 <?php do_action('wppm_after_task_widgets',$id,$task_id );?>
761 </div>
762 <input type="hidden" id="wppm_nonce" value="<?php echo esc_attr(wp_create_nonce('wppm_upload_file'))?>">
763 <input type="file" id="wppm_attachment_upload" class="hidden" onchange="">
764 </div>
765 </form>
766 <style>
767 .wppm_comment_date i:hover{
768 color: <?php echo esc_attr($appearance_settings['comment-date-hover-color'])?>;
769 }
770 #Layer_1{
771 fill:red!important;
772 }
773 </style>
774 <script>
775 jQuery( document ).ready( function( jQuery ) {
776 const button = document.getElementById('wppm_print_task_btn');
777 const box = document.getElementById('wppmprint_menu');
778
779 // Show box on button click
780 button.addEventListener('click', (e) => {
781 e.stopPropagation(); // prevent document click from firing immediately
782 box.style.display = 'flex';
783 });
784
785 // Prevent hiding when clicking inside box
786 box.addEventListener('click', (e) => {
787 e.stopPropagation();
788 });
789
790 // Hide when clicking outside
791 document.addEventListener('click', () => {
792 box.style.display = 'none';
793 });
794 <?php
795 if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task->id))){ ?>
796 jQuery("#wppm_edit_tstart_date").flatpickr({
797 enableTime: true,
798 dateFormat: "Y-m-d H:i",
799 onChange: function(selectedDates, dateStr, instance) {
800 var data = {
801 action: 'wppm_set_change_task_start_date',
802 task_id:<?php echo esc_attr($task->id);?>,
803 date:dateStr,
804 _ajax_nonce:jQuery('#wppm_edit_tstart_date_ajax_nonce').val()
805 };
806 jQuery.post(wppm_admin.ajax_url, data, function(response) {
807 instance.close();
808 wppm_open_task(<?php echo esc_attr($task->id);?>);
809 });
810 },
811 });
812 jQuery("#wppm_edit_tend_date").flatpickr({
813 enableTime: true,
814 dateFormat: "Y-m-d H:i",
815 onChange: function(selectedDates, dateStr, instance) {
816 var data = {
817 action: 'wppm_set_change_task_end_date',
818 task_id:<?php echo esc_attr($task->id);?>,
819 date:dateStr,
820 _ajax_nonce:jQuery('#wppm_edit_tend_date_ajax_nonce').val()
821 };
822 jQuery.post(wppm_admin.ajax_url, data, function(response) {
823 instance.close();
824 wppm_open_task(<?php echo esc_attr($task->id);?>);
825 });
826 },
827 });
828 <?php } ?>
829 <?php foreach ($wppm_checklist as $chklist) { ?>
830 var $checkboxes = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>);
831 var $progress = jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>);
832 var total = $checkboxes.length;
833 var checked = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>).filter(':checked').length;
834 var progressWidth = Math.ceil((checked / total) * 100);
835 jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('background','#5ba4cf');
836 jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('width', progressWidth + '%');
837 if(progressWidth>0){
838 jQuery('#wppm_progressbar_label_'+<?php echo esc_attr($chklist->id);?>).text(progressWidth+'%');
839 }
840 <?php $wppm_checklist_items = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_checklist_items where checklist_id=%d",$chklist->id));
841 foreach ($wppm_checklist_items as $chkitems) {
842 ?> jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseover", function () {
843 jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","inline");
844 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#e7e8ea");
845 })
846 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseout", function () {
847 jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","none");
848 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#ffffff");
849 })
850 <?php
851 }
852 }
853 $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
854 $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";
855 $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";
856 $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";
857 $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)? ' alignleft aligncenter alignright ' :"";
858 $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :"";
859 $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";
860 $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";
861 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
862 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
863 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
864 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
865 $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
866 $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");
867 if(($wppm_tinymce_visibility_open_task==1)){ ?>
868 if((wppm_admin.rich_text_editor) && (wppm_admin.rich_text_editor.trim().length > 0) && (wppm_admin.rich_text_editor == 1)){
869 tinymce.remove();
870 tinymce.init({
871 selector:'#wppm_task_comment',
872 body_id: 'wppm_task_comment',
873 directionality : '<?php //echo 'rtl'; ?>',
874 menubar: false,
875 statusbar: false,
876 height : '200',
877 width : '100%',
878 plugins: [
879 'lists link image directionality paste textcolor'
880 ],
881 image_advtab: true,
882 toolbar:'<?php echo esc_js( $toolbar ); ?>',
883 branding: false,
884 autoresize_bottom_margin: 20,
885 browser_spellcheck : true,
886 relative_urls : false,
887 remove_script_host : false,
888 convert_urls : true,
889 paste_as_text: true,
890 setup: function (editor) {
891 }
892 });
893 jQuery('#wppm_comment_btn').show();
894 }
895 <?php } ?>
896 });
897
898 jQuery(function(jQuery){
899 // Checklist Sorting
900 jQuery(".wppm_checklist_items_container").sortable({
901 handle: ".wppm_chk_items_drag",
902 update: function() {
903 let order = [];
904 jQuery(this).find("li").each(function(){
905 order.push(jQuery(this).data("id")); // checklist item id
906 });
907
908 // AJAX Save
909 jQuery.post(wppm_admin.ajax_url, {
910 action: "wppm_update_checklist_order",
911 order: order,
912 task_id: <?php echo esc_attr($id); ?>,
913 _ajax_nonce: '<?php echo esc_attr( wp_create_nonce( 'wppm_update_checklist_order' ) ); ?>'
914 }, function(response_str){
915 var response = JSON.parse(response_str);
916 jQuery('.wppm_submit_wait').hide();
917 if (response.sucess_status=='1') {
918 jQuery('#wppm_alert_success .wppm_alert_text').text(response.messege);
919 }
920 jQuery('#wppm_alert_success').slideDown('fast',function(){});
921 setTimeout(function(){ jQuery('#wppm_alert_success').slideUp('fast',function(){}); }, 3000);
922 });
923 }
924 });
925
926 });
927
928 function wppm_cancel_comment(){ <?php
929 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
930 ?>
931 tinyMCE. activeEditor. setContent('');
932 tinymce.remove('#wppm_task_comment');
933 jQuery('#wppm_comment_btn').hide();
934 <?php } else{
935 ?>
936 jQuery('#wppm_task_comment').css("width", "80%");
937 jQuery('#wppm_task_comment').css("height", "30px");
938 jQuery('#wppm_task_comment').css("color", "#000");
939 jQuery('#wppm_task_comment').css("padding", "5px");
940 jQuery('#wppm_task_comment').css(" margin-bottom", "15px");
941 jQuery('#wppm_task_comment').css("overflow", "hidden");
942 jQuery('#wppm_task_comment').css("border", "1 px solid #eee");
943 jQuery('#wppm_task_comment').css("color", "#eee");
944 jQuery('#wppm_task_comment').css("margin-top", "10px");
945 jQuery('#wppm_comment_btn').hide();
946 <?php }?>
947 }
948
949 function wppm_add_task_comment(){
950 if((wppm_admin.rich_text_editor == 1)){
951 tinymce.remove();
952 tinymce.init({
953 selector:'#wppm_task_comment',
954 body_id: 'wppm_task_comment',
955 directionality : '<?php //echo 'rtl'; ?>',
956 menubar: false,
957 statusbar: false,
958 height : '200',
959 width : '100%',
960 plugins: [
961 'lists link image directionality paste textcolor'
962 ],
963 image_advtab: true,
964 toolbar:'<?php echo esc_js( $toolbar ); ?>',
965 branding: false,
966 autoresize_bottom_margin: 20,
967 browser_spellcheck : true,
968 relative_urls : false,
969 remove_script_host : false,
970 convert_urls : true,
971 paste_as_text: true,
972 setup: function (editor) {
973 }
974 });
975 } else{
976 jQuery('#wppm_task_comment').css("width", "100%");
977 jQuery('#wppm_task_comment').css("height", "160px");
978 jQuery('#wppm_task_comment').css("color", "#000");
979 }
980 jQuery('#wppm_comment_btn').show();
981 }
982
983 function wppm_submit_task_comment(id,proj_id){
984 var dataform = new FormData(jQuery('#wppm_open_task')[0]);
985 dataform.append('action','wppm_submit_task_comment');
986 if((wppm_admin.rich_text_editor == 1)){
987 var comment_body = tinyMCE.get('wppm_task_comment').getContent().trim();
988 } else{
989 var comment_body = jQuery("#wppm_task_comment").val();
990 }
991 dataform.append('comment_body',comment_body);
992 dataform.append('task_id',id);
993 jQuery('#wppm_task_container').html(wppm_admin.loading_html);
994 jQuery.ajax({
995 url: wppm_admin.ajax_url,
996 type: 'POST',
997 data: dataform,
998 processData: false,
999 contentType: false
1000 })
1001 .done(function (response_str) {
1002 if((proj_id!=0)||(proj_id!="")){
1003 wppm_open_project_tasks(id,proj_id);
1004 }else if((proj_id==0)||(proj_id=="")){
1005 wppm_open_task(id);
1006 }
1007 });
1008 }
1009
1010 function wppm_add_checklist_item(checklist_id){
1011 jQuery('#wppm_add_checklist_label_container_'+checklist_id).show();
1012 jQuery('#wppm_add_checklist_item_btn_'+checklist_id).hide();
1013 jQuery('.wppm_add_checklist_label_container_'+checklist_id).show();
1014 jQuery('.wppm_checklist_item_label_'+checklist_id).css('height', '30px');
1015 jQuery('.wppm_add_new_item_btn_'+checklist_id).css('margin', '10px');
1016 }
1017
1018 function wppm_add_checklist(){
1019 jQuery('#wppm_add_checklist').hide();
1020 jQuery('#wppm_add_new_checklist').show();
1021 }
1022
1023 function wppm_remove_add_checklist_container(checklist_id){
1024 jQuery('#wppm_add_checklist_label_container_'+checklist_id).hide();
1025 jQuery('#wppm_add_checklist_item_btn_'+checklist_id).show();
1026 }
1027
1028 function wppm_remove_add_checklist(){
1029 jQuery('#wppm_add_new_checklist').hide();
1030 jQuery('#wppm_add_checklist').show();
1031 }
1032
1033 function wppm_upload_file(){
1034 jQuery('#wppm_attachment_upload').unbind('change');
1035 jQuery('#wppm_attachment_upload').on('change', function() {
1036 var flag = false;
1037 var file = this.files[0];
1038 jQuery('#wppm_attachment_upload').val('');
1039 var allowedExtension = ['exe', 'php','js'];
1040 var file_name_split = file.name.split('.');
1041 var file_extension = file_name_split[file_name_split.length-1];
1042 file_extension = file_extension.toLowerCase();
1043 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
1044 flag = true;
1045 alert("<?php echo esc_js(__( 'Attached file type not allowed!', 'taskbuilder' ) ); ?>");
1046
1047 };
1048 <?php
1049 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
1050 var current_filesize=file.size/1000000;
1051 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
1052 flag = true;
1053 alert("<?php echo esc_js(__('File size exceed allowed limit!','taskbuilder')); ?>");
1054 }
1055 if (!flag){
1056 var html_str = '<div class="wppm_attachment">'+
1057 '<div class="progress" style="float: none !important; width: unset !important;">'+
1058 '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
1059 file.name+
1060 '</div>'+
1061 '<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>'+
1062 '</div>'+
1063 '</div>';
1064 jQuery('.wppm_attachment_container').show();
1065 jQuery('.wppm_attachment_container').append(html_str);
1066 var attachment = jQuery('.wppm_attachment_container').find('.wppm_attachment').last();
1067 var data = new FormData();
1068 data.append('file', file);
1069 data.append('arr_name', file.name);
1070 data.append('action', 'wppm_upload_file');
1071 data.append('nonce', jQuery('#wppm_nonce').val().trim());
1072 jQuery.ajax({
1073 type: 'post',
1074 url: wppm_admin.ajax_url,
1075 data: data,
1076 xhr: function(){
1077 var xhr = new window.XMLHttpRequest();
1078 xhr.upload.addEventListener("progress", function(evt){
1079 if (evt.lengthComputable) {
1080 var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
1081 jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
1082 }
1083 }, false);
1084 return xhr;
1085 },
1086 processData: false,
1087 contentType: false,
1088 success: function(response) {
1089 var return_obj=JSON.parse(response);
1090 jQuery(attachment).find('.wppm_attachment_cancel').show();
1091 if( parseInt(return_obj.id) != 0 ){
1092 jQuery(attachment).append('<input type="hidden" class="wppm_comment_attachment" name="wppm_comment_attachment[]" value="'+return_obj.id+'">');
1093 jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
1094 }else {
1095 jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
1096 }
1097 }
1098 });
1099 }
1100 });
1101 jQuery('#wppm_attachment_upload').trigger('click');
1102 }
1103 </script>
1104