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

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