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

532 lines 32.7 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 if (!(($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_permission('view_task',$id)))) {exit;}
11 $proj_id = isset($_POST) && isset($_POST['proj_id']) ? intval(sanitize_text_field($_POST['proj_id'])) : 0;
12 $auth_id = $wppmfunction->wppm_get_auth_code($id);
13 $auth_id = sanitize_text_field($auth_id);
14 if(!empty($id)){
15 $task = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task where id=".$id);
16 $project_data = $wppmfunction->get_project($task->project);
17 $task_comment = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_comment where task_id=".$id." ORDER BY create_time DESC");
18 }
19 $user_role = $wpdb->get_var( "SELECT role_id FROM {$wpdb->prefix}wppm_project_users where proj_id = $task->project AND user_id = $current_user->ID");
20 if(!empty($task->project)){
21 $project_name = $wpdb->get_var( "SELECT project_name FROM {$wpdb->prefix}wppm_project where id=".$task->project);
22 }
23 $wppm_checklist=$wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_checklist where task_id=".$task->id );
24 if(!empty($task->status)){
25 $task_status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id=".$task->status);
26 }
27 if(!empty($task->priority)){
28 $task_priority = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id=".$task->priority);
29 }
30 if(!empty($task->users)){
31 $users = explode(",",$task->users);
32 }
33
34 if(!empty($task->description)){
35 $task_description = stripslashes((htmlspecialchars_decode($task->description, ENT_QUOTES)));
36 }
37
38 ?>
39 <form id="wppm_open_task" method="post">
40 <div class="wppm_headers row">
41 <div class="col-sm-8">
42 <span class="wppm-heading-inline">
43 <?php echo esc_html_e('Task','taskbuilder');?>
44 </span>
45 <?php if($proj_id==0) { ?>
46 <span onclick="wppm_add_new_task(<?php echo esc_attr($proj_id) ?>)" class="wppm_add_new_task_btn" id="wppm_add_new_task_btn" title="Create Task"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="add"></span>
47 <?php }
48 else{ ?>
49 <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) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="add"></span>
50 <?php } ?>
51 <?php if($proj_id==0) {
52 $task_list_function = ($task_list_view==1)?"wppm_get_task_list()":"wppm_view_task_search_filter()";
53 ?>
54 <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>
55 <?php }
56 else{
57 ?>
58 <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>
59 <?php } ?>
60 <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_permission('delete_task',$id)))? "display:inline":"display:none"; ?>
61 <?php $clone_style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_permission('clone_task',$id)))? "display:inline":"display:none"; ?>
62 <span class="wppm-delete_task_btn" id="wppm_delete_task_btn" title="Delete Task" onclick="wppm_get_delete_task(<?php echo esc_attr($id) ?>)" style="<?php echo esc_attr($style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/bin.svg'); ?>" alt="delete"></span>
63 <div class="wppm-clone_task_btn" id="wppm_clone_task_btn" title="Clone Task" onclick="wppm_clone_task(<?php echo esc_attr($id) ?>)" style="<?php echo esc_attr($clone_style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/duplicate.svg'); ?>" alt="clone"></div>
64 <?php do_action('wppm_individual_task_button',$id);?>
65 </div>
66 </div>
67 <div id="wppm_load_individual_task_container" class="row">
68 <div class="col-sm-8 wppm_body col-md-9">
69 <div class="wppm_task_details_container">
70 <div class="row">
71 <div class="col-sm-12">
72 <span class="wppm_task_label"> <?php echo esc_html_e($task->task_name,'taskbuilder');
73 if ($wppmfunction->has_permission('change_task_details',$id) || $current_user->has_cap('manage_options')) { ?>
74 <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>
75 <?php } ?>
76 </span>
77 </div>
78 </div>
79 <div class="row">
80 <div class="col-sm-3">
81 <span class="wppm_task_details_label"><?php echo esc_html_e('Project:','taskbuilder');?></span>
82 </div>
83 <div class="col-sm-9">
84 <span class="wppm_task_details"><?php echo (isset($project_name))? esc_html_e($project_name,'taskbuilder'):"" ?></span>
85 </div>
86 </div>
87 <div class="row">
88 <div class="col-sm-3">
89 <span class="wppm_task_details_label"><?php echo esc_html_e('Created On:','taskbuilder');?></span>
90 </div>
91 <div class="col-sm-9">
92 <span class="wppm_task_details"><?php echo (isset($task->date_created))? esc_html($task->date_created):"" ?></span>
93 </div>
94 </div>
95 <?php if($wppm_default_task_date == 1){ ?>
96 <div class="row">
97 <div class="col-sm-3">
98 <span class="wppm_task_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
99 </div>
100 <div class="col-sm-9">
101 <span class="wppm_task_details"><?php echo (isset($task->start_date))? esc_html($task->start_date):"" ?></span>
102 </div>
103 </div>
104 <div class="row">
105 <div class="col-sm-3">
106 <span class="wppm_task_details_label"><?php echo esc_html_e('End Date:','taskbuilder');?></span>
107 </div>
108 <div class="col-sm-9">
109 <span class="wppm_task_details"><?php echo (isset($task->end_date))? esc_html($task->end_date):"" ?></span>
110 </div>
111 </div>
112 <?php } ?>
113 <div class="row">
114 <div class="col-sm-3">
115 <span class="wppm_task_details_label"><?php echo esc_html_e('Task Priority:','taskbuilder');?></span>
116 </div>
117 <div class="col-sm-9">
118 <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>
119 </div>
120 </div>
121 <div class="row">
122 <div class="col-sm-3">
123 <span class="wppm_task_details_label"><?php echo esc_html_e('Description:','taskbuilder');?></span>
124 </div>
125 <?php
126 $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(),));?>
127 <div class="col-sm-9">
128 <span class="wppm_task_description"><?php echo (isset($task_description))? wp_kses(wpautop($task_description),$allowedtags):"" ?></span>
129 </div>
130 </div>
131 <?php do_action('wppm_after_task_details_in_open_task',$task->id, $task->project);?>
132 </div>
133 <div class="wppm_task_checklist_container" id="wppm_task_checklist_container">
134 <div id="wppm_checklist_container">
135 <?php
136 if(!empty($wppm_checklist)){
137 foreach( $wppm_checklist as $key=>$list){
138 ?>
139 <div class="row">
140 <div class="col-sm-8">
141 <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>
142 </div>
143 <?php $check_style = (($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1))? "display:inline":"display:none"; ?>
144 <?php $disabled = (($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1))? "":"disabled"; ?>
145 <div class="col-sm-4" style="text-align:right;<?php echo esc_attr($check_style) ?>">
146 <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>
147 </div>
148 </div>
149 <div class="wppm_progress_bar_container row">
150 <div class="col-sm-4">
151 <span class="wppm_progressbar_label" id="wppm_progressbar_label_<?php echo esc_attr($list->id)?>">0%</span>
152 </div>
153 <div class="wppm_progress_bar col-sm-8">
154 <div id="CheckProgress_<?php echo esc_attr($list->id);?>" class="wppm_checkprogress" role="progressbar" style="width: 0%" aria-valuemin="0" aria-valuemax="100"></div>
155 </div>
156 </div>
157 <?php
158 $wppm_checklist_items = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_checklist_items where checklist_id=".$list->id);
159 ?>
160 <?php
161 if(!empty( $wppm_checklist_items)){
162 foreach($wppm_checklist_items as $key=>$val){
163 $checked = $val->checked == 1 ? 'checked="checked"' : '';
164 ?>
165 <div id="wppm_checklist_<?php echo esc_attr($val->id) ?>" class="row" style="margin-bottom:10px;font: 15px 'Helvetica Neue',Helvetica,Arial,sans-serif;">
166 <div class="col-sm-8" id="wppm_checklist_item_container_<?php echo esc_attr($val->id) ?>">
167 <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>
168 </div>
169 <?php if ($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1) { ?>
170 <div class="col-sm-4" id="wppm_checklist_action_<?php echo esc_attr($val->id) ?>" style="text-align:right; display:none;cursor:pointer;">
171 <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>
172 </div>
173 <?php } ?>
174 </div>
175 <?php
176 }
177 } ?>
178 <div class="row">
179 <div class="col-sm-12 wppm_add_checklist_item_container_<?php echo esc_attr($list->id) ?>" style="padding-top:15px;">
180 <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>
181 </div>
182 </div>
183 <div class="row">
184 <div class="col-sm-12" style="display:none;" id="wppm_add_checklist_label_container_<?php echo esc_attr($list->id) ?>">
185 <div class="row" id="wppm_add_new_checklist_item_<?php echo esc_attr($list->id) ?>">
186 <div class="col-sm-12">
187 <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;">
188 <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) ?>)">
189 <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>
190 </div>
191 </div>
192 </br>
193 </div>
194 </div>
195 <hr class="wppm_checklist_divider">
196 <?php
197 }
198 } ?>
199 </div>
200 <div id="wppm_add_checklist_container">
201 <div class="row">
202 <div class="col-sm-12">
203 <span id="wppm_add_checklist" onclick="wppm_add_checklist()"> <?php echo esc_html_e('+Add a checklist','taskbuilder')?> </span>
204 </div>
205 </div>
206 <div class="row" id="wppm_add_new_checklist" style="display:none;">
207 <div class="col-sm-12">
208 <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">
209 <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) ?>)">
210 <span onclick="wppm_remove_add_checklist()"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cross1.svg'); ?>"></span>
211 </div>
212 </div>
213 </br>
214 </div>
215 </div>
216 <div id="wppm_activity_container">
217 <div class="row">
218 <div class="col-sm-12" style="margin-top:5px;">
219 <span class="wppm_task_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
220 </div>
221 </div>
222 <div class="row">
223 <div class="col-sm-12">
224 <textarea id="wppm_task_comment" placeholder="<?php echo esc_attr__('Write a comment...','taskbuilder');?>" onclick="wppm_add_task_comment()" name="wppm_task_comment"></textarea>
225 </div>
226 </div>
227 <div class="row" id="wppm_comment_btn">
228 <div class="col-sm-6">
229 <span id="wppm_attach_file" onclick="wppm_upload_file()"><?php echo esc_html_e('Attach Files','taskbuilder')?></span>
230 </div>
231 <div class="col-sm-6">
232 <button type="button" id="wppm_individual_cancel_comment_btn" onclick="wppm_cancel_comment();" class="wppm-btn-cancel">
233 <?php echo esc_html_e('Cancel','taskbuilder')?>
234 </button>
235 <button type="button" id="wppm_individual_submit_task_comment_btn" onclick="wppm_submit_task_comment(<?php echo esc_attr($id); ?>,<?php echo esc_attr($proj_id); ?>);" class="wppm-btn">
236 <?php echo esc_html_e('SEND','taskbuilder')?>
237 </button>
238 </div>
239 </div>
240 <div class="row">
241 <div class="wppm_attachment_container col-sm-12" style="display:none;">
242 </div>
243 </div>
244 </div>
245 <div class="wppm_thread_container">
246 <?php
247 if(!empty($task_comment)){
248 foreach($task_comment as $comment){
249 $user = get_userdata( $comment->created_by );
250 $comment_body = stripslashes((htmlspecialchars_decode($comment->body, ENT_QUOTES)));
251 $comment_body = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $comment_body);
252 $date = date("Y-m-d H:i:s" ,strtotime($comment->create_time));
253 $thread_date = date("d F Y, h:i:s A" ,strtotime($date));
254 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
255 if($attachment_ids!=""){
256 $attachments = explode(",",$attachment_ids);
257 } else {
258 $attachments = array();
259 }
260 ?>
261 <div class="wppm_thread">
262 <div class="wppm_thread_avatar">
263 <?php echo (get_avatar($comment->created_by, 40));?>
264 </div>
265 <div class="wppm_thread_body">
266 <div class="wppm_thread_user_name">
267 <strong><?php echo esc_html($user->display_name) ?></strong> <small class="wppm_comment_date"><i><?php echo esc_html($thread_date) ?></i></small>
268 <div class="wppm_thread_action">
269 <?php if(( ($current_user->has_cap('manage_options')) || ($wppmfunction->has_comment_permission('edit_task_comment',$id,$comment->id)))){ ?>
270 <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>
271 <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>
272 <?php } ?>
273 </div>
274 </div>
275 <div class="wppm_thread_messege">
276 <?php
277 $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(),));
278 if(!empty($comment_body)){
279 echo wp_kses(wpautop($comment_body),$allowedtags) ;
280 } ?>
281 </div>
282 <?php
283 if(!empty($attachments)):?> <br>
284 <strong class="wppm_attachment_title"><?php echo esc_html_e('Attachments','taskbuilder');?>:</strong><br>
285 <table class="wppm_attachment_tbl">
286 <tbody>
287 <?php
288 if(!empty($attachments)){
289 foreach( $attachments as $attachment ):
290 $attach = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_attachments where id=".$attachment);
291 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&tid='.$id.'&tac='.$auth_id;
292 $findStr = ".txt";
293 if(!empty( $attach)){
294 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
295 $attachment_name = sanitize_file_name($attachment_name);
296 }
297 if((!empty($attachment_name))){
298 ?>
299 <tr class="wppm_attachment_tr">
300 <td>
301 <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
302 <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
303 <?php if((($comment->created_by == $current_user->ID) || ($current_user->has_cap('manage_options')) || ($wppmfunction->has_comment_permission('edit_task_comment',$id,$comment->id)))){ ?>
304 <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>
305 <?php } ?>
306 </td>
307 </tr>
308 <?php }
309 endforeach;
310 } ?>
311 </tbody>
312 </table>
313 <?php do_action('wppm_after_comment_attachment',$id,$comment->id);?>
314 <?php endif;?>
315 </div>
316 </div>
317 <?php }
318 } ?>
319 </div>
320 </div>
321 <div class="wppm_individual_task_widget col-sm-4 wppm_sidebar col-md-3">
322 <div class="row wppm_widget" id="wppm_status_widget">
323 <h4 class="widget_header"><?php echo esc_html_e('Status','taskbuilder')?>
324 <?php if ($wppmfunction->has_permission('change_status',$id) || $current_user->has_cap('manage_options')) { ?>
325 <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></h4>
326 <?php } ?>
327 <hr class="widget_divider">
328 <div class="wppm_sidebar_labels"><span class="wppm_label_info"><?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>
329 </div>
330 <div class="row wppm_widget" id="wppm_raisedby_widget">
331 <h4 class="widget_header">
332 <?php echo esc_html_e('Task Creator','taskbuilder')?>
333 <?php if ($wppmfunction->has_permission('change_raised_by',$id ) || $current_user->has_cap('manage_options')) { ?>
334 <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></h4>
335 <?php } ?>
336 <hr class="widget_divider"> <?php
337 $user_info = get_userdata($task->created_by);
338 ?>
339 <div style="padding:2px 0;">
340 <span class="wppm_task_user_avatar"><?php echo (get_avatar($task->created_by, 25, "mysteryman")); ?></span>
341 <span class="wppm_task_user_names"><?php echo esc_html($user_info->display_name); ?></span>
342 </div>
343 </div>
344 <div class="row wppm_widget" id="wppm_task_users_widget_container">
345 <h4 class="widget_header">
346 <?php if ($wppmfunction->has_permission('assign_task_users',$id ) || $current_user->has_cap('manage_options')) { ?>
347 <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>
348 <?php } ?>
349 <span><?php echo esc_html_e('Users','taskbuilder')?></span></h4>
350 <hr class="widget_divider">
351 <div id="wppm_task_users">
352 <?php
353 $i=0;
354 if(!empty($users)){
355 foreach($users as $user) {
356 $user_data = get_userdata($user);
357 if(!empty($project_data['users'])){
358 $proj_users = explode(',',$project_data['users']);
359 if(in_array($user,$proj_users)){
360 $i++;
361 ?>
362 <div style="padding:2px 0;">
363 <span class="wppm_task_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
364 <span class="wppm_task_user_names"><?php echo ((!empty($user_data))? esc_html($user_data->display_name) :"") ?></span>
365 </div>
366 <?php
367 }
368 }
369 }
370 }
371 if($i==0){ ?>
372 <span class="wppm_display_user_none"><?php echo esc_html_e('None','taskbuilder'); ?></span> <?php
373 }
374 ?>
375 </div>
376 </div>
377 <?php do_action('wppm_after_task_widgets',$id,$proj_id);?>
378 </div>
379 <input type="hidden" id="wppm_nonce" value="<?php echo wp_create_nonce()?>">
380 <input type="file" id="wppm_attachment_upload" class="hidden" onchange="">
381 </div>
382 </form>
383 <script>
384 jQuery( document ).ready( function( jQuery ) {
385 <?php foreach ($wppm_checklist as $chklist) { ?>
386 var $checkboxes = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>);
387 var $progress = jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>);
388 var total = $checkboxes.length;
389 var checked = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>).filter(':checked').length;
390 var progressWidth = Math.ceil((checked / total) * 100);
391 jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('background','#5ba4cf');
392 jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('width', progressWidth + '%');
393 if(progressWidth>0){
394 jQuery('#wppm_progressbar_label_'+<?php echo esc_attr($chklist->id);?>).text(progressWidth+'%');
395 }
396 <?php $wppm_checklist_items = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_checklist_items where checklist_id=".$chklist->id);
397 foreach ($wppm_checklist_items as $chkitems) {
398 ?> jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseover", function () {
399 jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","inline");
400 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#e7e8ea");
401 })
402 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseout", function () {
403 jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","none");
404 jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#ffffff");
405 })
406 <?php
407 }
408 }
409 ?>
410 });
411
412 function wppm_add_task_comment(){
413 tinymce.remove();
414 tinymce.init({
415 selector:'#wppm_task_comment',
416 body_id: 'wppm_task_comment',
417 directionality : '<?php //echo 'rtl'; ?>',
418 menubar: false,
419 statusbar: false,
420 height : '200',
421 width : '100%',
422 plugins: [
423 'lists link image directionality paste'
424 ],
425 image_advtab: true,
426 toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
427 branding: false,
428 autoresize_bottom_margin: 20,
429 browser_spellcheck : true,
430 relative_urls : false,
431 remove_script_host : false,
432 convert_urls : true,
433 paste_as_text: true,
434 setup: function (editor) {
435 }
436 });
437 jQuery('#wppm_comment_btn').show();
438 }
439
440 function wppm_add_checklist_item(checklist_id){
441 jQuery('#wppm_add_checklist_label_container_'+checklist_id).show();
442 jQuery('#wppm_add_checklist_item_btn_'+checklist_id).hide();
443 jQuery('.wppm_add_checklist_label_container_'+checklist_id).show();
444 jQuery('.wppm_checklist_item_label_'+checklist_id).css('height', '30px');
445 jQuery('.wppm_add_new_item_btn_'+checklist_id).css('margin', '10px');
446 }
447
448 function wppm_add_checklist(){
449 jQuery('#wppm_add_checklist').hide();
450 jQuery('#wppm_add_new_checklist').show();
451 }
452
453 function wppm_remove_add_checklist_container(checklist_id){
454 jQuery('#wppm_add_checklist_label_container_'+checklist_id).hide();
455 jQuery('#wppm_add_checklist_item_btn_'+checklist_id).show();
456 }
457
458 function wppm_remove_add_checklist(){
459 jQuery('#wppm_add_new_checklist').hide();
460 jQuery('#wppm_add_checklist').show();
461 }
462
463 function wppm_upload_file(){
464 jQuery('#wppm_attachment_upload').unbind('change');
465 jQuery('#wppm_attachment_upload').on('change', function() {
466 var flag = false;
467 var file = this.files[0];
468 jQuery('#wppm_attachment_upload').val('');
469 var allowedExtension = ['exe', 'php','js'];
470 var file_name_split = file.name.split('.');
471 var file_extension = file_name_split[file_name_split.length-1];
472 file_extension = file_extension.toLowerCase();
473 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
474 flag = true;
475 alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
476 };
477 <?php
478 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
479 var current_filesize=file.size/1000000;
480 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
481 flag = true;
482 alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
483 }
484 if (!flag){
485 var html_str = '<div class="wppm_attachment">'+
486 '<div class="progress" style="float: none !important; width: unset !important;">'+
487 '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
488 file.name+
489 '</div>'+
490 '<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>'+
491 '</div>'+
492 '</div>';
493 jQuery('.wppm_attachment_container').show();
494 jQuery('.wppm_attachment_container').append(html_str);
495 var attachment = jQuery('.wppm_attachment_container').find('.wppm_attachment').last();
496 var data = new FormData();
497 data.append('file', file);
498 data.append('arr_name', file.name);
499 data.append('action', 'wppm_upload_file');
500 data.append('nonce', jQuery('#wppm_nonce').val().trim());
501 jQuery.ajax({
502 type: 'post',
503 url: wppm_admin.ajax_url,
504 data: data,
505 xhr: function(){
506 var xhr = new window.XMLHttpRequest();
507 xhr.upload.addEventListener("progress", function(evt){
508 if (evt.lengthComputable) {
509 var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
510 jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
511 }
512 }, false);
513 return xhr;
514 },
515 processData: false,
516 contentType: false,
517 success: function(response) {
518 var return_obj=JSON.parse(response);
519 jQuery(attachment).find('.wppm_attachment_cancel').show();
520 if( parseInt(return_obj.id) != 0 ){
521 jQuery(attachment).append('<input type="hidden" class="wppm_comment_attachment" name="wppm_comment_attachment[]" value="'+return_obj.id+'">');
522 jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
523 }else {
524 jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
525 }
526 }
527 });
528 }
529 });
530 jQuery('#wppm_attachment_upload').trigger('click');
531 }
532 </script>