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

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