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

1,123 lines 72.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 $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 if (empty($attachment)) {
653 continue; // or return, depending on the context
654 }
655 $attach = $wpdb->get_row( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_attachments where id=%d",$attachment));
656 $findStr = ".txt";
657 if(!empty( $attach)){
658 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
659 $attachment_name = sanitize_file_name($attachment_name);
660 }
661 if((!empty($attachment_name))){
662 ?>
663 <tr class="wppm_attachment_tr">
664 <td>
665 <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
666 <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
667 <?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)){ ?>
668 <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>
669 <?php } ?>
670 </td>
671 </tr>
672 <input type="hidden" name="wppm_ajax_nonce" id="wppm_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_remove_thread_attachment' ) ); ?>">
673 <?php }
674 endforeach;
675 } ?>
676 </tbody>
677 </table>
678 <?php do_action('wppm_after_comment_attachment',$id,$comment->id);?>
679 <?php endif;?>
680 </div>
681 </div>
682 <?php }
683 } ?>
684 </div>
685 </div>
686 <div class="wppm_individual_task_widget col-sm-4 wppm_sidebar col-md-3">
687 <div class="row wppm_widget" id="wppm_status_widget">
688 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
689 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
690 <?php
691 if($user_role != 3){
692 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))){
693 ?>
694 <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>
695 <?php
696 }
697 }
698 ?>
699 </div>
700 <hr class="widget_divider">
701 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
702 <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>
703 </div>
704 </div>
705 <div class="row wppm_widget" id="wppm_raisedby_widget">
706 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
707 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>">
708 <?php echo esc_html_e('Task Creator','taskbuilder')?></h4>
709 <?php if($user_role != 3){
710 if ((($wppmfunction->has_permission('change_raised_by',$id ) || $current_user->has_cap('manage_options')) && ($task->is_archived!=1))) { ?>
711 <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>
712 <?php }
713 }?>
714 </div>
715 <hr class="widget_divider"> <?php
716 if(isset($task->created_by)){
717 $user_info = get_userdata($task->created_by);
718 }else{
719 $user_info ="";
720 }
721 ?>
722 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
723 <div style="padding:2px 0;">
724 <span class="wppm_task_user_avatar"><?php echo (get_avatar($task->created_by, 25, "mysteryman")); ?></span>
725 <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>
726 </div>
727 </div>
728 </div>
729 <div class="row wppm_widget" id="wppm_task_users_widget_container">
730 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
731 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>;"><?php echo esc_html_e('Users','taskbuilder')?></h4>
732 <?php
733 if($user_role != 3){
734 if ((($wppmfunction->has_permission('assign_task_users',$id ) || $current_user->has_cap('manage_options')) && ($task->is_archived!=1))) { ?>
735 <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>
736 <?php }
737 }?>
738 </div>
739 <hr class="widget_divider">
740 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
741 <div id="wppm_task_users">
742 <?php
743 $i=0;
744 if(!empty($users)){
745 foreach($users as $user) {
746 $user_data = get_userdata($user);
747 if(!empty($project_data['users'])){
748 $proj_users = explode(',',$project_data['users']);
749 if(in_array($user,$proj_users)){
750 $i++;
751 ?>
752 <div style="padding:2px 0;">
753 <span class="wppm_task_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
754 <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>
755 </div>
756 <?php
757 }
758 }
759 }
760 }
761 if($i==0){ ?>
762 <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
763 }
764 ?>
765 </div>
766 </div>
767 </div>
768 <?php do_action('wppm_after_task_widgets',$id,$task_id );?>
769 </div>
770 <input type="hidden" id="wppm_nonce" value="<?php echo esc_attr(wp_create_nonce('wppm_upload_file'))?>">
771 <input type="file" id="wppm_attachment_upload" class="hidden" onchange="">
772 </div>
773 </form>
774 <style>
775 .wppm_comment_date i:hover{
776 color: <?php echo esc_attr($appearance_settings['comment-date-hover-color'])?>;
777 }
778 #Layer_1{
779 fill:red!important;
780 }
781 </style>
782 <script>
783 jQuery( document ).ready( function( jQuery ) {
784 const button = document.getElementById('wppm_print_task_btn');
785 const box = document.getElementById('wppmprint_menu');
786
787 // Show box on button click
788 button.addEventListener('click', (e) => {
789 e.stopPropagation(); // prevent document click from firing immediately
790 box.style.display = 'flex';
791 });
792
793 // Prevent hiding when clicking inside box
794 box.addEventListener('click', (e) => {
795 e.stopPropagation();
796 });
797
798 // Hide when clicking outside
799 document.addEventListener('click', () => {
800 box.style.display = 'none';
801 });
802 <?php
803 if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task->id))){ ?>
804 jQuery("#wppm_edit_tstart_date").flatpickr({
805 enableTime: true,
806 dateFormat: "Y-m-d H:i",
807 onChange: function(selectedDates, dateStr, instance) {
808 var data = {
809 action: 'wppm_set_change_task_start_date',
810 task_id:<?php echo esc_attr($task->id);?>,
811 date:dateStr,
812 _ajax_nonce:jQuery('#wppm_edit_tstart_date_ajax_nonce').val()
813 };
814 jQuery.post(wppm_admin.ajax_url, data, function(response) {
815 instance.close();
816 wppm_open_task(<?php echo esc_attr($task->id);?>);
817 });
818 },
819 });
820 jQuery("#wppm_edit_tend_date").flatpickr({
821 enableTime: true,
822 dateFormat: "Y-m-d H:i",
823 onChange: function(selectedDates, dateStr, instance) {
824 var data = {
825 action: 'wppm_set_change_task_end_date',
826 task_id:<?php echo esc_attr($task->id);?>,
827 date:dateStr,
828 _ajax_nonce:jQuery('#wppm_edit_tend_date_ajax_nonce').val()
829 };
830 jQuery.post(wppm_admin.ajax_url, data, function(response) {
831 instance.close();
832 wppm_open_task(<?php echo esc_attr($task->id);?>);
833 });
834 },
835 });
836 <?php } ?>
837 <?php foreach ($wppm_checklist as $chklist) { ?>
838 var $checkboxes = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>);
839 var $progress = jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>);
840 var total = $checkboxes.length;
841 var checked = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>).filter(':checked').length;
842 var progressWidth = Math.ceil((checked / total) * 100);
843 jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('background','#5ba4cf');
844 jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('width', progressWidth + '%');
845 if(progressWidth>0){
846 jQuery('#wppm_progressbar_label_'+<?php echo esc_attr($chklist->id);?>).text(progressWidth+'%');
847 }
848 <?php $wppm_checklist_items = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_checklist_items where checklist_id=%d",$chklist->id));
849 foreach ($wppm_checklist_items as $chkitems) {
850 ?> jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseover", function () {
851 jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","inline");
852 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#e7e8ea");
853 })
854 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseout", function () {
855 jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","none");
856 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#ffffff");
857 })
858 <?php
859 }
860 }
861 $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
862 $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";
863 $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";
864 $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";
865 $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)? ' alignleft aligncenter alignright ' :"";
866 $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :"";
867 $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";
868 $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";
869 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
870 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
871 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
872 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
873 $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
874 $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");
875 if(($wppm_tinymce_visibility_open_task==1)){ ?>
876 if((wppm_admin.rich_text_editor) && (wppm_admin.rich_text_editor.trim().length > 0) && (wppm_admin.rich_text_editor == 1)){
877 tinymce.remove();
878 tinymce.init({
879 selector:'#wppm_task_comment',
880 body_id: 'wppm_task_comment',
881 directionality : '<?php //echo 'rtl'; ?>',
882 menubar: false,
883 statusbar: false,
884 height : '200',
885 width : '100%',
886 plugins: [
887 'lists link image directionality paste textcolor'
888 ],
889 image_advtab: true,
890 toolbar:'<?php echo esc_js( $toolbar ); ?>',
891 branding: false,
892 autoresize_bottom_margin: 20,
893 browser_spellcheck : true,
894 relative_urls : false,
895 remove_script_host : false,
896 convert_urls : true,
897 paste_as_text: true,
898 setup: function (editor) {
899 }
900 });
901 jQuery('#wppm_comment_btn').show();
902 }
903 <?php } ?>
904 });
905
906 jQuery(function(jQuery){
907 // Checklist Sorting
908 jQuery(".wppm_checklist_items_container").sortable({
909 handle: ".wppm_chk_items_drag",
910 update: function() {
911 let order = [];
912 jQuery(this).find("li").each(function(){
913 order.push(jQuery(this).data("id")); // checklist item id
914 });
915
916 // AJAX Save
917 jQuery.post(wppm_admin.ajax_url, {
918 action: "wppm_update_checklist_order",
919 order: order,
920 task_id: <?php echo esc_attr($id); ?>,
921 _ajax_nonce: '<?php echo esc_attr( wp_create_nonce( 'wppm_update_checklist_order' ) ); ?>'
922 }, function(response_str){
923 var response = JSON.parse(response_str);
924 jQuery('.wppm_submit_wait').hide();
925 if (response.sucess_status=='1') {
926 jQuery('#wppm_alert_success .wppm_alert_text').text(response.messege);
927 }
928 jQuery('#wppm_alert_success').slideDown('fast',function(){});
929 setTimeout(function(){ jQuery('#wppm_alert_success').slideUp('fast',function(){}); }, 3000);
930 });
931 }
932 });
933
934 });
935
936 function wppm_cancel_comment(){ <?php
937 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
938 ?>
939 tinyMCE. activeEditor. setContent('');
940 tinymce.remove('#wppm_task_comment');
941 jQuery('#wppm_comment_btn').hide();
942 <?php } else{
943 ?>
944 jQuery('#wppm_task_comment').css("width", "80%");
945 jQuery('#wppm_task_comment').css("height", "30px");
946 jQuery('#wppm_task_comment').css("color", "#000");
947 jQuery('#wppm_task_comment').css("padding", "5px");
948 jQuery('#wppm_task_comment').css(" margin-bottom", "15px");
949 jQuery('#wppm_task_comment').css("overflow", "hidden");
950 jQuery('#wppm_task_comment').css("border", "1 px solid #eee");
951 jQuery('#wppm_task_comment').css("color", "#eee");
952 jQuery('#wppm_task_comment').css("margin-top", "10px");
953 jQuery('#wppm_comment_btn').hide();
954 <?php }?>
955 }
956
957 function wppm_add_task_comment(){
958 if((wppm_admin.rich_text_editor == 1)){
959 tinymce.remove();
960 tinymce.init({
961 selector:'#wppm_task_comment',
962 body_id: 'wppm_task_comment',
963 directionality : '<?php //echo 'rtl'; ?>',
964 menubar: false,
965 statusbar: false,
966 height : '200',
967 width : '100%',
968 plugins: [
969 'lists link image directionality paste textcolor'
970 ],
971 image_advtab: true,
972 toolbar:'<?php echo esc_js( $toolbar ); ?>',
973 branding: false,
974 autoresize_bottom_margin: 20,
975 browser_spellcheck : true,
976 relative_urls : false,
977 remove_script_host : false,
978 convert_urls : true,
979 paste_as_text: true,
980 setup: function (editor) {
981 }
982 });
983 } else{
984 jQuery('#wppm_task_comment').css("width", "100%");
985 jQuery('#wppm_task_comment').css("height", "160px");
986 jQuery('#wppm_task_comment').css("color", "#000");
987 }
988 jQuery('#wppm_comment_btn').show();
989 }
990
991 function wppm_submit_task_comment(id,proj_id){
992 var dataform = new FormData(jQuery('#wppm_open_task')[0]);
993 dataform.append('action','wppm_submit_task_comment');
994 if((wppm_admin.rich_text_editor == 1)){
995 var comment_body = tinyMCE.get('wppm_task_comment').getContent().trim();
996 } else{
997 var comment_body = jQuery("#wppm_task_comment").val();
998 }
999 dataform.append('comment_body',comment_body);
1000 dataform.append('task_id',id);
1001 jQuery('#wppm_task_container').html(wppm_admin.loading_html);
1002 jQuery.ajax({
1003 url: wppm_admin.ajax_url,
1004 type: 'POST',
1005 data: dataform,
1006 processData: false,
1007 contentType: false
1008 })
1009 .done(function (response_str) {
1010 if((proj_id!=0)||(proj_id!="")){
1011 wppm_open_project_tasks(id,proj_id);
1012 }else if((proj_id==0)||(proj_id=="")){
1013 wppm_open_task(id);
1014 }
1015 });
1016 }
1017
1018 function wppm_add_checklist_item(checklist_id){
1019 jQuery('#wppm_add_checklist_label_container_'+checklist_id).show();
1020 jQuery('#wppm_add_checklist_item_btn_'+checklist_id).hide();
1021 jQuery('.wppm_add_checklist_label_container_'+checklist_id).show();
1022 jQuery('.wppm_checklist_item_label_'+checklist_id).css('height', '30px');
1023 jQuery('.wppm_add_new_item_btn_'+checklist_id).css('margin', '10px');
1024 }
1025
1026 function wppm_add_checklist(){
1027 jQuery('#wppm_add_checklist').hide();
1028 jQuery('#wppm_add_new_checklist').show();
1029 }
1030
1031 function wppm_remove_add_checklist_container(checklist_id){
1032 jQuery('#wppm_add_checklist_label_container_'+checklist_id).hide();
1033 jQuery('#wppm_add_checklist_item_btn_'+checklist_id).show();
1034 }
1035
1036 function wppm_remove_add_checklist(){
1037 jQuery('#wppm_add_new_checklist').hide();
1038 jQuery('#wppm_add_checklist').show();
1039 }
1040
1041 function wppm_timer_log_pro(){
1042 if (confirm('<?php echo esc_js(
1043 __('Unlock the time tracker feature. Available in Taskbuilder Pro along with reports, integrations, automation and more. Do you want to view pricing?', 'taskbuilder')
1044 ); ?>')) {
1045 window.open(
1046 '<?php echo esc_url('https://taskbuilder.net/pricing/'); ?>',
1047 '_blank'
1048 );
1049 }
1050 }
1051
1052 function wppm_upload_file(){
1053 jQuery('#wppm_attachment_upload').unbind('change');
1054 jQuery('#wppm_attachment_upload').on('change', function() {
1055 var flag = false;
1056 var file = this.files[0];
1057 jQuery('#wppm_attachment_upload').val('');
1058 var allowedExtension = ['exe', 'php','js'];
1059 var file_name_split = file.name.split('.');
1060 var file_extension = file_name_split[file_name_split.length-1];
1061 file_extension = file_extension.toLowerCase();
1062 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
1063 flag = true;
1064 alert("<?php echo esc_js(__( 'Attached file type not allowed!', 'taskbuilder' ) ); ?>");
1065
1066 };
1067 <?php
1068 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
1069 var current_filesize=file.size/1000000;
1070 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
1071 flag = true;
1072 alert("<?php echo esc_js(__('File size exceed allowed limit!','taskbuilder')); ?>");
1073 }
1074 if (!flag){
1075 var html_str = '<div class="wppm_attachment">'+
1076 '<div class="progress" style="float: none !important; width: unset !important;">'+
1077 '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
1078 file.name+
1079 '</div>'+
1080 '<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>'+
1081 '</div>'+
1082 '</div>';
1083 jQuery('.wppm_attachment_container').show();
1084 jQuery('.wppm_attachment_container').append(html_str);
1085 var attachment = jQuery('.wppm_attachment_container').find('.wppm_attachment').last();
1086 var data = new FormData();
1087 data.append('file', file);
1088 data.append('arr_name', file.name);
1089 data.append('action', 'wppm_upload_file');
1090 data.append('nonce', jQuery('#wppm_nonce').val().trim());
1091 jQuery.ajax({
1092 type: 'post',
1093 url: wppm_admin.ajax_url,
1094 data: data,
1095 xhr: function(){
1096 var xhr = new window.XMLHttpRequest();
1097 xhr.upload.addEventListener("progress", function(evt){
1098 if (evt.lengthComputable) {
1099 var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
1100 jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
1101 }
1102 }, false);
1103 return xhr;
1104 },
1105 processData: false,
1106 contentType: false,
1107 success: function(response) {
1108 var return_obj=JSON.parse(response);
1109 jQuery(attachment).find('.wppm_attachment_cancel').show();
1110 if( parseInt(return_obj.id) != 0 ){
1111 jQuery(attachment).append('<input type="hidden" class="wppm_comment_attachment" name="wppm_comment_attachment[]" value="'+return_obj.id+'">');
1112 jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
1113 }else {
1114 jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
1115 }
1116 }
1117 });
1118 }
1119 });
1120 jQuery('#wppm_attachment_upload').trigger('click');
1121 }
1122 </script>
1123