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

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