PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 4.0.4
Taskbuilder – Project Management & Task Management Tool With Kanban Board v4.0.4
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 / projects / wppm_open_project.php

wppm_open_project.php in Taskbuilder – Project Management & Task Management Tool With Kanban Board 4.0.4, at includes/admin/projects/wppm_open_project.php

781 lines 51.1 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 global $wpdb,$current_user,$wppmfunction;
6 $wppm_project_time = get_option('wppm_project_time');
7 $wppm_default_project_date = get_option('wppm_default_project_date');
8 $wppm_public_projects_permission = get_option('wppm_public_projects_permission');
9 $appearance_settings = get_option("wppm-ap-individual-project");
10 $wppm_tinymce_visibility_open_project = get_option('wppm_tinymce_visibility_open_project');
11 $settings = get_option("wppm-ap-modal");
12 $wppm_rich_text_editor = get_option('wppm_rich_text_editor');
13 $wppm_toolbar_actions = get_option('wppm_toolbar_actions');
14 $wppm_date_setting = get_option('wppm_date_setting');
15 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
16 $current_date = date('Y-m-d');
17 $id = isset($_POST) && isset($_POST['id']) ? intval(sanitize_text_field($_POST['id'])) : 0;
18 if (!isset($id)) {exit;}
19 $auth_id = $wppmfunction->get_project_meta($id,'project_auth_code',true);
20 $auth_id = sanitize_text_field($auth_id);
21 $project = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project where id = '".esc_sql($id)."'" );
22 $orderby_sql = esc_sql(sanitize_sql_orderby("create_time DESC"));
23 // url authentication.
24 $auth_code = isset( $_POST['auth-code'] ) ? sanitize_text_field( $_POST['auth-code'] ) : ''; // phpcs:ignore
25 if ( ! $auth_code ) {
26 $auth_code = isset( $_POST['auth_code'] ) ? sanitize_text_field( $_POST['auth_code'] ) : ''; // phpcs:ignore
27 }
28
29 if ( $auth_code && $auth_id == $auth_code ) {
30 $url_auth = true;
31 }
32 $project_comment = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id='".esc_sql($id)."' ORDER BY $orderby_sql");
33 if(isset($project->users)){
34 $users = explode(",",$project->users);
35 }else{
36 $users = "";
37 }
38 $wppm_users_role = get_option('wppm_user_role');
39 if(isset($project->status)){
40 $projstatus = esc_sql($project->status);
41 $project_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = '$projstatus'");
42 }
43 if(isset($project->cat_id)){
44 $projcat = esc_sql($project->cat_id);
45 $project_category = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id = '$projcat'");
46 }
47 if(!empty($project->description)){
48 $project_description = stripslashes((htmlspecialchars_decode($project->description, ENT_QUOTES)));
49 }
50 if($wppm_project_time == 1){
51 $psDate = new DateTime($project->start_date);
52 $peDate = new DateTime($project->end_date);
53 if($project->start_date=='0000-00-00 00:00:00'){
54 if($wppm_date_setting=='Y-m-d H:i:s'){
55 $proj_start_date = '0000-00-00 00:00:00';
56 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
57 $proj_start_date = '00-00-0000 00:00:00';
58 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
59 $proj_start_date = '00-00-0000 00:00:00';
60 }else{
61 $proj_start_date = '0000-00-00 00:00:00';
62 }
63 }if($project->end_date=='0000-00-00 00:00:00'){
64 if($wppm_date_setting=='Y-m-d H:i:s'){
65 $proj_end_date = '0000-00-00 00:00:00';
66 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
67 $proj_end_date = '00-00-0000 00:00:00';
68 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
69 $proj_end_date = '00-00-0000 00:00:00';
70 }else{
71 $proj_end_date = '0000-00-00 00:00:00';
72 }
73 }else{
74 if(!empty($wppm_date_setting)){
75 $proj_start_date = $psDate->format($wppm_date_setting);
76 $proj_end_date = $peDate->format($wppm_date_setting);
77 }else{
78 $proj_start_date = isset($project->start_date)? $project->start_date:"";
79 $proj_end_date = isset($project->end_date) ? $project->end_date: "" ;
80 }
81 }
82 } elseif($wppm_project_time == 0){
83 $psDate = isset($project->start_date) ? new DateTime($project->start_date): "";
84 $peDate = isset($project->end_date) ? new DateTime($project->end_date):"";
85 $proj_start_date = !empty($psDate) ? $psDate->format( 'Y-m-d'):"";
86 $proj_end_date = !empty($peDate) ? $peDate->format( 'Y-m-d'):"";
87 if($project->start_date=='0000-00-00 00:00:00'){
88 if($wppm_date_setting=='Y-m-d H:i:s'){
89 $proj_start_date = '0000-00-00';
90 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
91 $proj_start_date = '00-00-0000';
92 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
93 $proj_start_date = '00-00-0000';
94 }else{
95 $proj_start_date = '0000-00-00';
96 }
97 }
98 if($project->end_date=='0000-00-00 00:00:00'){
99 if($wppm_date_setting=='Y-m-d H:i:s'){
100 $proj_end_date = '0000-00-00';
101 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
102 $proj_end_date = '00-00-0000';
103 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
104 $proj_end_date = '00-00-0000';
105 }else{
106 $proj_end_date = '0000-00-00';
107 }
108 }else{
109 if($wppm_date_setting=='Y-m-d H:i:s'){
110 $proj_start_date = $psDate->format('Y-m-d');
111 $proj_end_date = $peDate->format('Y-m-d');
112 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
113 $proj_start_date = $psDate->format('d-m-Y');
114 $proj_end_date = $peDate->format('d-m-Y');
115 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
116 $proj_start_date = $psDate->format('m-d-Y');
117 $proj_end_date = $peDate->format('m-d-Y');
118 }else{
119 $proj_start_date = !empty($psDate) ? $psDate->format( 'Y-m-d'):"";
120 $proj_end_date = !empty($peDate) ? $peDate->format( 'Y-m-d'):"";
121 }
122 }
123 }
124 $project_data = $wppmfunction->get_project($id);
125 $project_users = explode(",",$project_data['users']);
126 if(!empty($auth_code)){
127 if (!(($current_user->ID && $current_user->has_cap('manage_options')) || in_array($current_user->ID,$project_users) || ($project_data['created_by']==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || ($current_user->ID && $current_user->has_cap('wppm_admin'))) && ($url_auth==true)) {
128 ?>
129 <div style="align-item:center;" ><h6><?php esc_attr_e( 'Unauthorized access!', 'taskbuilder' ); ?></h6></div>
130 <?php
131 wp_die();
132 }
133 }
134
135 ?>
136 <form id="wppm_open_project" method="post">
137 <div class="row">
138 <div class="col-sm-12">
139 <span class="wppm-heading-inline"><?php echo esc_html_e('Project','taskbuilder');?></span>
140 <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin'){ ?>
141 <span class="wppm-add-new-btn btn-primary" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" id="wppm_add_new_project_btn" onclick="wppm_add_new_project()"><span style="margin-right:5px;"><img id="wppm_add_new_project_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus_icon.svg'); ?>" alt="plus_icon"></span><span><?php echo esc_html_e('Add New','taskbuilder');?></span></span>
142 <?php } ?>
143 <span class="wppm-add-new-btn btn-primary" id="wppm_project_list" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" onclick="wppm_get_project_list()" ><span style="margin-right:5px;"><img id ="wppm_project_list_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list-symbol.svg'); ?>" alt="list-symbol"></span><span><?php echo esc_html_e('Project List','taskbuilder');?></span></span>
144 <span class="wppm-add-new-btn btn-primary" id="wppm_project_tasks" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" onclick="wppm_get_project_tasks(<?php echo esc_attr($id) ?>)"><span style="margin-right:5px;"><img id ="wppm_task_list_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/task_list.svg'); ?>" alt="task_list"></span><span><?php echo esc_html_e('Tasks','taskbuilder');?></span></span>
145 <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_project_permission('delete_project',$project->id)) || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || ($current_user->ID && $current_user->has_cap('wppm_admin')))? "display:inline":"display:none"; ?>
146 <span class="wppm-add-new-btn btn-primary" id="wppm_delete_project_btn" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>;<?php echo esc_attr($style) ?>" onclick="wppm_delete_project(<?php echo esc_attr($id) ?>)"><span style="margin-right:5px;"><img id="wppm_delete_project_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/delete2.svg'); ?>" alt="delete"></span><span><?php echo esc_html_e('Delete','taskbuilder');?></span></span>
147 <?php $visibility_style = (($current_user->ID && ($current_user->has_cap('manage_options') || $current_user->has_cap('wppm_admin') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager'))) && ($wppm_public_projects_permission==1))? "display:inline":"display:none"; ?>
148 <span class="wppm-add-new-btn btn-primary" id="wppm_project_visibility" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>;<?php echo esc_attr($visibility_style) ?>" onclick="wppm_get_project_visibility(<?php echo esc_attr($id) ?>)"><span style="margin-right:5px;"><img id ="wppm_task_list_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/wppm_visibility.svg'); ?>" alt="project_visibility"></span><span><?php echo esc_html_e('Project Visibility','taskbuilder');?></span></span>
149 <?php echo do_action('wppm_after_open_project_buttons',$project->id);?>
150 </div>
151 </div>
152 <div id="wppm_load_individual_project_container" class="row">
153 <div class="col-sm-8 wppm_body col-md-9">
154 <div class="row">
155 <div class="col-sm-12" id="wppm_project_details_container">
156 <div class="row">
157 <div class="col-sm-12">
158 <span class="wppm_project_label"> <?php echo isset($project->project_name) ? esc_html($project->project_name):"";
159 if (($wppmfunction->has_project_permission('change_project_details',$id)) || ($current_user->has_cap('manage_options') || $current_user->has_cap('wppm_admin') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager'))) { ?>
160 <span id="wppm_individual_edit_project_subject" onclick="wppm_edit_proj_details(<?php echo esc_attr($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>
161 <?php } ?>
162 </span>
163 </div>
164 </div>
165 <div class="row">
166 <div class="col-sm-3">
167 <span class="wppm_project_details_label"><?php echo esc_html_e('Created On:','taskbuilder');?></span>
168 </div>
169 <div class="col-sm-9"><?php
170 $pcDate = isset($project->date_created) ? new DateTime($project->date_created): "";
171 if($wppm_project_time !=0){
172 if($wppm_date_setting=='Y-m-d H:i:s'){
173 $proj_create_date = !empty($pcDate) ? $pcDate->format('Y-m-d H:i:s'):"";
174 } elseif($wppm_date_setting=='d-m-Y H:i:s'){
175 $proj_create_date = !empty($pcDate) ? $pcDate->format('d-m-Y H:i:s'):"";
176 } elseif($wppm_date_setting=='m-d-Y H:i:s'){
177 $proj_create_date = !empty($pcDate) ? $pcDate->format('m-d-Y H:i:s'):"";
178 } else {
179 $proj_create_date = !empty($pcDate) ? $pcDate->format('Y-m-d H:i:s'):"";
180 }
181 } elseif($wppm_project_time == 0){
182 if($wppm_date_setting=='Y-m-d H:i:s'){
183 $proj_create_date = !empty($pcDate) ? $pcDate->format('Y-m-d'):"";
184 } elseif($wppm_date_setting=='d-m-Y H:i:s'){
185 $proj_create_date = !empty($pcDate) ? $pcDate->format('d-m-Y'):"";
186 } elseif($wppm_date_setting=='m-d-Y H:i:s'){
187 $proj_create_date = !empty($pcDate) ? $pcDate->format('m-d-Y'):"";
188 } else {
189 $proj_create_date = !empty($pcDate) ? $pcDate->format('Y-m-d'):"";
190 }
191 } ?>
192 <span class="wppm_project_details"><?php echo isset($proj_create_date) ? esc_html($proj_create_date):"" ?></span>
193 </div>
194 </div>
195 <?php if($wppm_default_project_date==1) { ?>
196 <div class="row">
197 <div class="col-sm-3">
198 <span class="wppm_project_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
199 </div>
200 <div class="col-sm-9">
201 <span class="wppm_project_details" id="wppm_edit_pstart_date"><?php echo (isset($proj_start_date))? esc_html($proj_start_date): "" ?></span>
202 </div>
203 <input type="hidden" name="wppm_edit_pstart_date_ajax_nonce" id="wppm_edit_pstart_date_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_change_proj_start_date' ) ); ?>">
204 </div>
205 <div class="row">
206 <div class="col-sm-3">
207 <span class="wppm_project_details_label"><?php echo esc_html_e('End Date:','taskbuilder');?></span>
208 </div>
209 <div class="col-sm-9">
210 <?php
211 $pstatus = isset($project->status) ? $project->status :"";
212 $style = ($pstatus!=4 && $proj_end_date < $current_date) ? "color:#FF0000":"color:#2C3E50"; ?>
213 <span class="wppm_project_details" id="wppm_edit_pend_date" style="<?php echo esc_attr($style); ?>"><?php echo (isset($proj_end_date))? esc_html($proj_end_date):"" ?></span>
214 </div>
215 <input type="hidden" name="wppm_edit_pend_date_ajax_nonce" id="wppm_edit_pend_date_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_change_proj_end_date' ) ); ?>">
216 </div>
217 <?php } ?>
218 <div class="row">
219 <div class="col-sm-3">
220 <span class="wppm_project_details_label"><?php echo esc_html_e('Project Category:','taskbuilder');?></span>
221 </div>
222 <div class="col-sm-9">
223 <span class="wppm_project_details"><?php echo (isset($project_category->name))? esc_html_e($project_category->name,'taskbuilder'):"" ?></span>
224 </div>
225 </div>
226 <div class="row">
227 <div class="col-sm-3">
228 <span class="wppm_project_details_label"><?php echo esc_html_e('Description:','taskbuilder');?></span>
229 </div>
230 <?php
231 $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(),));
232 ?>
233 <div class="col-sm-9 wppm_project_description">
234 <span><?php echo (isset($project_description))? wp_kses(wpautop($project_description),$allowedtags):"" ?></span>
235 </div>
236 </div>
237 </div>
238 </div>
239 <div id="wppm_proj_discussion_container">
240 <div class="row">
241 <div class="col-sm-12" style="margin-top:5px;">
242 <span class="wppm_proj_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
243 </div>
244 </div>
245 <div class="row">
246 <div class="col-sm-12">
247 <textarea id="wppm_proj_comment" placeholder="<?php echo esc_attr__('Write a comment...','taskbuilder');?>" onclick="wppm_add_proj_comment()" name="wppm_proj_comment"></textarea>
248 </div>
249 </div>
250 <div class="row" id="wppm_proj_comment_btn">
251 <div class="col-sm-6">
252 <span id="wppm_proj_attach_file" onclick="wppm_upload_proj_comment_file()"><?php echo esc_html_e('Attach Files','taskbuilder')?></span>
253 </div>
254 <div class="col-sm-6">
255 <button type="button" id="wppm_individual_cancel_proj_comment_btn" onclick="wppm_cancel_proj_comment();" class="wppm-btn-cancel">
256 <?php echo esc_html_e('Cancel','taskbuilder')?>
257 </button>
258 <button type="button" id="wppm_individual_submit_proj_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_proj_comment(<?php echo esc_attr($id); ?>);" class="wppm-btn">
259 <?php echo esc_html_e('SEND','taskbuilder')?>
260 </button>
261 </div>
262 <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_submit_proj_comment' ) ); ?>">
263 </div>
264 <div class="row">
265 <div class="wppm_proj_attachment_container col-sm-12" style="display:none;">
266 </div>
267 </div>
268 </div>
269 <div class="wppm_thread_container">
270 <?php
271 if(!empty($project_comment)){
272 foreach($project_comment as $comment){
273 $proj_comment_meta = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_comment_meta where proj_id='".esc_sql($id)."' AND comment_id='".esc_sql($comment->id)."'");
274 $user = get_userdata( $comment->created_by );
275 $comment_body = stripslashes((htmlspecialchars_decode($comment->body, ENT_QUOTES)));
276 $comment_body = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $comment_body);
277 $date = date("Y-m-d H:i:s" ,strtotime($comment->create_time));
278 $thread_date = date("d F Y, h:i:s A" ,strtotime($date));
279 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
280 if($attachment_ids!=""){
281 $attachments = explode(",",$attachment_ids);
282 } else {
283 $attachments = array();
284 }
285 ?>
286 <div class="wppm_proj_thread">
287 <div class="wppm_thread_avatar">
288 <?php echo (get_avatar($comment->created_by, 40));?>
289 </div>
290 <div class="wppm_thread_body">
291 <div class="wppm_thread_user_name">
292 <strong style="color:<?php echo esc_attr($appearance_settings['comment-primary-color']);?>"><?php echo esc_html($user->display_name) ?></strong>
293 <span><?php if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_status')){
294 $comment_log_body = unserialize($comment->body);
295 $prev_status = $comment_log_body['prev_status'];
296 $new_status = $comment_log_body['new_status'];
297 if(isset($prev_status)){
298 $prev_status = esc_sql($prev_status);
299 $project_prev_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = '$prev_status'");
300 }
301 if(isset($new_status)){
302 $new_status = esc_sql($new_status);
303 $project_new_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id= '$new_status'");
304 }
305 esc_html_e("changed status from $project_prev_status->name to $project_new_status->name","taskbuilder");
306 }
307 if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')){
308 $comment_log_body = unserialize($comment->body);
309 $prev_user = $comment_log_body['prev_user'];
310 $new_user = $comment_log_body['new_user'];
311 $prev_user_data = get_userdata($prev_user);
312 $new_user_data = get_userdata($new_user);
313 esc_html_e("changed creator from $prev_user_data->display_name to $new_user_data->display_name","taskbuilder");
314 }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')){
315 esc_html_e("changed the Assignee","taskbuilder");
316 }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat')){
317 $comment_log_body = unserialize($comment->body);
318 $prev_cat = $comment_log_body['prev_cat'];
319 $new_cat = $comment_log_body['new_cat'];
320 if(!empty($prev_cat)){
321 $prev_cat = esc_sql($prev_cat);
322 $project_prev_cat = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id= '$prev_cat'");
323 }
324 if(!empty($new_cat)){
325 $new_cat = esc_sql($new_cat);
326 $project_new_cat = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id='$new_cat'");
327 }
328 $proj_prev_cat_name = !empty($project_prev_cat) ? $project_prev_cat->name: "None";
329 $proj_new_cat_name = !empty($project_new_cat) ? $project_new_cat->name: "None";
330 esc_html_e("changed category from $proj_prev_cat_name to $proj_new_cat_name","taskbuilder");
331 }
332 ?></span>
333 <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>
334 <div class="wppm_thread_action">
335 <?php if(( (($current_user->has_cap('manage_options')) || ($wppmfunction->has_proj_comment_permission('edit_proj_comment',$id,$comment->id))) && ((empty($proj_comment_meta->comment_type))|| (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='comment')))){ ?>
336 <span title="Edit this thread" onclick="wppm_edit_proj_thread(<?php echo esc_attr($comment->id)?>,<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit1.svg'); ?>" alt="edit"></span>
337 <span title="Delete this thread" onclick="wppm_delete_proj_thread(<?php echo esc_attr($comment->id) ?>,<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
338 <?php } ?>
339 </div>
340 </div>
341 <div class="wppm_thread_messege" style="color:<?php echo esc_attr($appearance_settings['comment-secondary-color']);?>">
342 <?php
343 $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(),));
344 if(!empty($comment_body) && ((empty($proj_comment_meta->comment_type)) || (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='comment') || $proj_comment_meta->comment_type=='delete_proj_comment')){
345 echo wp_kses(wpautop($comment_body),$allowedtags) ;
346 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_status')){ ?>
347 <span class="wppm_admin_label" style="margin-right: 10px; background-color:<?php echo isset($project_prev_status->bg_color) ? esc_attr($project_prev_status->bg_color):""; ?>;color:<?php echo isset($project_prev_status->color) ? esc_attr($project_prev_status->color): "" ?>;"><?php echo isset($project_prev_status->name) ? esc_attr($project_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($project_new_status->bg_color) ? esc_attr($project_new_status->bg_color):""; ?>;color:<?php echo isset($project_new_status->color) ? esc_attr($project_new_status->color): "" ?>;"><?php echo isset($project_new_status->name) ? esc_attr($project_new_status->name) : "" ?></span><?php
348 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')) { ?>
349 <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
350 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')) {
351 $comment_log_body = unserialize($comment->body);
352 $prev_assign_user = $comment_log_body['prev_assign_user'];
353 $new_assign_user = $comment_log_body['new_assign_user'];
354 $prev_assign_user_array = array();
355 $new_assign_user_array = array();
356 if(!empty($prev_assign_user)){
357 $prev_assign_user_array = explode(",",$prev_assign_user);
358 }
359 if(!empty($new_assign_user)){
360 $new_assign_user_array = explode(",",$new_assign_user);
361 }
362 $assign_user_name = array();
363 $assign_user_name_str = "";
364 if(!empty($prev_assign_user_array)){
365 foreach($prev_assign_user_array as $val){
366 $assign_user = get_userdata($val);
367 $assign_user_name[] = $assign_user->display_name;
368 }
369 $assign_user_name_str = implode(",",$assign_user_name);
370 }
371 $new_assign_user_name = array();
372 $new_assign_user_name_str = "";
373 if(!empty($new_assign_user_array)){
374 foreach($new_assign_user_array as $val){
375 $new_assign_user = get_userdata($val);
376 $new_assign_user_name[] = $new_assign_user->display_name;
377 }
378 $new_assign_user_name_str = implode(",",$new_assign_user_name);
379 }
380 ?>
381 <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
382 }elseif(isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat'){ ?>
383 <span style="margin-right: 10px;"><?php echo !empty($project_prev_cat->name) ? esc_attr($project_prev_cat->name) : " 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($project_new_cat->name) ? esc_attr($project_new_cat->name) : "None" ?></span><?php
384 } ?>
385
386 </div>
387 <?php
388 if(!empty($attachments) && !(isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='delete_proj_comment')):?> <br>
389 <strong class="wppm_attachment_title"><?php echo esc_html_e('Attachments','taskbuilder');?>:</strong><br>
390 <table class="wppm_attachment_tbl">
391 <tbody>
392 <?php
393 if(!empty($attachments)){
394 foreach( $attachments as $attachment ):
395 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&pid='.$id.'&pac='.$auth_id;
396 $attachment = esc_sql($attachment);
397 $attach = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_attachments where id='$attachment'");
398 $findStr = ".txt";
399 if(!empty( $attach)){
400 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
401 $attachment_name = sanitize_file_name($attachment_name);
402 }
403 if((!empty($attachment_name))){
404 ?>
405 <tr class="wppm_attachment_tr">
406 <td>
407 <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
408 <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
409 <?php if((($comment->created_by == $current_user->ID) || ($current_user->has_cap('manage_options')) || ($wppmfunction->has_proj_comment_permission('edit_proj_comment',$id,$comment->id)))){ ?>
410 <span class="wppm_thread_action_btn" onclick="wppm_proj_thread_attachment_remove(this,<?php echo isset($attach->id)? esc_attr($attach->id):''; ?>,<?php echo isset($comment->id)? esc_attr($comment->id):''; ?>,<?php echo isset($comment->proj_id) ? esc_attr($comment->proj_id):'';?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cancel.svg'); ?>" alt="cancel"></span>
411 <?php } ?>
412 </td>
413 </tr>
414 <?php }
415 endforeach;
416 } ?>
417 </tbody>
418 </table>
419 <input type="hidden" name="wppm_proj_thread_attachment_remove_ajax_nonce" id="wppm_proj_thread_attachment_remove" value="<?php echo esc_attr( wp_create_nonce( 'wppm_remove_proj_thread_attachment' ) ); ?>">
420 <?php do_action('wppm_after_project_comment_attachment',$id,$comment->id);?>
421 <?php endif;?>
422 </div>
423 </div>
424 <?php }
425 } ?>
426 </div>
427 </div>
428 <div class="wppm_individual_project_widget col-sm-4 wppm_sidebar col-md-3">
429 <div class="row wppm_widget" id="wppm_project_status_widget">
430 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
431 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
432 <?php $style = ($wppmfunction->has_project_permission('change_project_status',$id) || $current_user->has_cap('manage_options') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || $wppm_current_user_capability == 'wppm_admin')? "display:flex":"display:none"; ?>
433 <span class="wppm_edit_project_details_widget" style="<?php echo $style ?>" onclick="wppm_edit_project_status(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
434 </div>
435 <hr class="widget_divider">
436 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
437 <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 class="wppm_admin_label" style="background-color:<?php echo isset($project_status->bg_color) ? esc_attr($project_status->bg_color):""; ?>;color:<?php echo isset($project_status->color) ? esc_attr($project_status->color): "" ?>;"><?php echo isset($project_status->name) ? esc_attr($project_status->name) : "" ?> </span></div>
438 </div>
439 </div>
440 <div class="row wppm_widget" id="wppm_project_raisedby_widget">
441 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
442 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Project Creator','taskbuilder')?></span></h4>
443 <?php if ($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'|| ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager')) { ?>
444 <span class="wppm_edit_project_details_widget" onclick="wppm_edit_project_creator(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
445 <?php } ?>
446 </div>
447 <hr class="widget_divider"> <?php
448 if(isset($project->created_by)){
449 $user_info = get_userdata($project->created_by);
450 }else{
451 $user_info = "";
452 }
453 ?>
454 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
455 <div id="wppm_project_creator">
456 <div style="padding:2px 0;">
457 <span class="wppm_project_user_avatar"><?php echo isset($project->created_by)? (get_avatar($project->created_by, 25, "mysteryman")):""; ?></span>
458 <span class="wppm_project_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>"><?php echo (!empty($user_info)) ? esc_html_e($user_info->display_name,'taskbuilder') : "";?></span>
459 </div>
460 </div>
461 </div>
462 </div>
463 <div class="row wppm_widget" id="wppm_project_users_widget_container">
464 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
465 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Users','taskbuilder')?></h4>
466 <?php if ($wppmfunction->has_project_permission('assign_project_users',$id ) || $current_user->has_cap('manage_options') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || $wppm_current_user_capability == 'wppm_admin') { ?>
467 <span class="wppm_edit_project_details_widget" onclick="wppm_get_users(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
468 <?php } ?>
469 </div>
470 <hr class="widget_divider">
471 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
472 <div id="wppm_project_users">
473 <?php
474 if(!(empty(array_filter($users)))){
475 foreach($users as $user) {
476 $user_data = get_userdata($user);
477 $user = esc_sql($user);
478 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '".esc_sql($id)."' AND user_id = '$user'");
479 ?>
480 <div style="padding:2px 0;">
481 <span class="wppm_project_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
482 <span class="wppm_project_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e($user_data->display_name,'taskbuilder'); ?></span>
483 <?php
484 if(!empty($wppm_users_role)){
485 foreach($wppm_users_role as $key=>$role){
486 if(!empty($role)){
487 foreach($role as $k=>$val){
488 if( !empty($project_user) && $key == $project_user->role_id){ ?>
489 <span class="wppm_project_user_role" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>">(<?php echo esc_html_e($role['label'],'taskbuilder'); ?>)</span><?php
490 }
491 }
492 }
493 }
494 }
495 ?>
496 </div>
497 <?php
498 }
499 } else {
500 ?><span class="wppm_project_users_not_assign_label" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>"> <?php echo esc_html_e('None','taskbuilder'); ?></span><?php
501 }
502 ?>
503 </div>
504 </div>
505 </div>
506 <?php echo do_action('wppm_after_project_widget',$project->id);?>
507 </div>
508 <div id="wppm_alert_success" class="alert alert-success wppm_alert" style="display:none;" role="alert">
509 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/success.svg'); ?>" alt="success"><span class="wppm_alert_text"></span>
510 </div>
511 <div id="wppm_alert_error" class="alert alert-danger wppm_alert" style="display:none;" role="alert">
512 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/warning-triangle.svg'); ?>" alt="warning-triangle"><span class="wppm_alert_text"></span>
513 </div>
514 <input type="hidden" id="wppm_proj_nonce" value="<?php echo wp_create_nonce('wppm_upload_proj_attach_file')?>">
515 <input type="file" id="wppm_proj_attachment_upload" class="hidden" onchange="">
516 </div>
517 </form>
518 <style>
519 .wppm_comment_date i:hover{
520 color: <?php echo esc_attr($appearance_settings['comment-date-hover-color'])?>;
521 }
522 #wppm_open_project .wppm-add-new-btn:hover{
523 background-color: <?php echo esc_attr($appearance_settings['menu-button-hover-color'])?>!important;
524 }
525 </style>
526 <script>
527 jQuery( document ).ready( function( jQuery ) { <?php
528 if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_project_permission('change_project_details',$id) || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || $wppm_current_user_capability == 'wppm_admin')) { ?>
529 jQuery("#wppm_edit_pstart_date").flatpickr({
530 enableTime: true,
531 dateFormat: "Y-m-d H:i",
532 onChange: function(selectedDates, dateStr, instance) {
533 var data = {
534 action: 'wppm_set_change_proj_start_date',
535 proj_id:<?php echo esc_attr($project->id);?>,
536 date:dateStr,
537 _ajax_nonce:jQuery('#wppm_edit_pstart_date_ajax_nonce').val()
538 };
539 jQuery.post(wppm_admin.ajax_url, data, function(response) {
540 instance.close();
541 wppm_open_project(<?php echo esc_attr($project->id);?>);
542 });
543 },
544 });
545 jQuery("#wppm_edit_pend_date").flatpickr({
546 enableTime: true,
547 dateFormat: "Y-m-d H:i",
548 onChange: function(selectedDates, dateStr, instance) {
549 var data = {
550 action: 'wppm_set_change_proj_end_date',
551 proj_id:<?php echo esc_attr($project->id);?>,
552 date:dateStr,
553 _ajax_nonce:jQuery('#wppm_edit_pend_date_ajax_nonce').val()
554 };
555 jQuery.post(wppm_admin.ajax_url, data, function(response) {
556 instance.close();
557 wppm_open_project(<?php echo esc_attr($project->id);?>);
558 });
559 },
560 });
561 <?php }
562 if((!empty($wppm_rich_text_editor)) && ($wppm_rich_text_editor == 1)){
563 $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
564 $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";
565 $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";
566 $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";
567 $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)? ' alignleft aligncenter alignright ' :"";
568 $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :"";
569 $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";
570 $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";
571 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
572 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
573 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
574 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
575 $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :""; ?>
576 tinymce.remove();
577 tinymce.init({
578 selector:'#wppm_proj_description',
579 body_id: 'wppm_proj_description',
580 directionality : '<?php //echo 'rtl'; ?>',
581 menubar: false,
582 statusbar: false,
583 height : '200',
584 plugins: [
585 'lists link image directionality textcolor'
586 ],
587 image_advtab: true,
588 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 ?>',
589 branding: false,
590 autoresize_bottom_margin: 20,
591 browser_spellcheck : true,
592 relative_urls : false,
593 remove_script_host : false,
594 convert_urls : true,
595 setup: function (editor) {
596 }
597 }); <?php
598 }
599 if($wppm_tinymce_visibility_open_project==1){
600 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
601 ?>
602 tinymce.remove();
603 tinymce.init({
604 selector:'#wppm_proj_comment',
605 body_id: 'wppm_proj_comment',
606 directionality : '<?php //echo 'rtl'; ?>',
607 menubar: false,
608 statusbar: false,
609 height : '200',
610 width : '100%',
611 plugins: [
612 'lists link image directionality paste textcolor'
613 ],
614 image_advtab: true,
615 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 ?>',
616 branding: false,
617 autoresize_bottom_margin: 20,
618 browser_spellcheck : true,
619 relative_urls : false,
620 remove_script_host : false,
621 convert_urls : true,
622 paste_as_text: true,
623 setup: function (editor) {
624 }
625 });
626 <?php } ?>
627 jQuery('#wppm_proj_comment_btn').show();
628 <?php } ?>
629 });
630
631 function wppm_add_proj_comment(){
632 <?php
633 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
634 ?>
635 tinymce.remove();
636 tinymce.init({
637 selector:'#wppm_proj_comment',
638 body_id: 'wppm_proj_comment',
639 directionality : '<?php //echo 'rtl'; ?>',
640 menubar: false,
641 statusbar: false,
642 height : '200',
643 width : '100%',
644 plugins: [
645 'lists link image directionality paste textcolor'
646 ],
647 image_advtab: true,
648 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 ?>',
649 branding: false,
650 autoresize_bottom_margin: 20,
651 browser_spellcheck : true,
652 relative_urls : false,
653 remove_script_host : false,
654 convert_urls : true,
655 paste_as_text: true,
656 setup: function (editor) {
657 }
658 });
659 <?php } else{ ?>
660 jQuery('#wppm_proj_comment').css("width", "100%");
661 jQuery('#wppm_proj_comment').css("height", "160px");
662 jQuery('#wppm_proj_comment').css("color", "#000");
663 <?php }?>
664 jQuery('#wppm_proj_comment_btn').show();
665 }
666
667 function wppm_cancel_proj_comment(){ <?php
668 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
669 ?>
670 tinyMCE. activeEditor. setContent('');
671 tinymce.remove('#wppm_proj_comment');
672 jQuery('#wppm_proj_comment_btn').hide();
673 <?php } else{
674 ?>
675 jQuery('#wppm_proj_comment').css("width", "80%");
676 jQuery('#wppm_proj_comment').css("height", "30px");
677 jQuery('#wppm_proj_comment').css("color", "#000");
678 jQuery('#wppm_proj_comment').css("padding", "5px");
679 jQuery('#wppm_proj_comment').css(" margin-bottom", "15px");
680 jQuery('#wppm_proj_comment').css("overflow", "hidden");
681 jQuery('#wppm_proj_comment').css("border", "1 px solid #eee");
682 jQuery('#wppm_proj_comment').css("color", "#eee");
683 jQuery('#wppm_proj_comment').css("margin-top", "10px");
684 jQuery('#wppm_proj_comment_btn').hide();
685 <?php }?>
686 }
687
688 function wppm_submit_proj_comment(proj_id){
689 var dataform = new FormData(jQuery('#wppm_open_project')[0]);
690 dataform.append('action','wppm_submit_proj_comment');
691 <?php
692 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){ ?>
693 var comment_body = tinyMCE.get('wppm_proj_comment').getContent().trim();
694 <?php } else{ ?>
695 var comment_body = jQuery("#wppm_proj_comment").val().trim();
696 <?php }?>
697 dataform.append('comment_body',comment_body);
698 dataform.append('proj_id',proj_id);
699 jQuery('#wppm_load_individual_project_container').html(wppm_admin.loading_html);
700 jQuery.ajax({
701 url: wppm_admin.ajax_url,
702 type: 'POST',
703 data: dataform,
704 processData: false,
705 contentType: false
706 })
707 .done(function (response_str) {
708 wppm_open_project(proj_id);
709 });
710 }
711
712 function wppm_upload_proj_comment_file(){
713 jQuery('#wppm_proj_attachment_upload').unbind('change');
714 jQuery('#wppm_proj_attachment_upload').on('change', function() {
715 var flag = false;
716 var file = this.files[0];
717 jQuery('#wppm_proj_attachment_upload').val('');
718 var allowedExtension = ['exe', 'php','js'];
719 var file_name_split = file.name.split('.');
720 var file_extension = file_name_split[file_name_split.length-1];
721 file_extension = file_extension.toLowerCase();
722 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
723 flag = true;
724 alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
725 };
726 <?php
727 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
728 var current_filesize=file.size/1000000;
729 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
730 flag = true;
731 alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
732 }
733 if (!flag){
734 var html_str = '<div class="wppm_attachment">'+
735 '<div class="progress" style="float: none !important; width: unset !important;">'+
736 '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
737 file.name+
738 '</div>'+
739 '<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>'+
740 '</div>'+
741 '</div>';
742 jQuery('.wppm_proj_attachment_container').show();
743 jQuery('.wppm_proj_attachment_container').append(html_str);
744 var attachment = jQuery('.wppm_proj_attachment_container').find('.wppm_attachment').last();
745 var data = new FormData();
746 data.append('file', file);
747 data.append('arr_name', file.name);
748 data.append('action', 'wppm_upload_proj_attach_file');
749 data.append('nonce', jQuery('#wppm_proj_nonce').val().trim());
750 jQuery.ajax({
751 type: 'post',
752 url: wppm_admin.ajax_url,
753 data: data,
754 xhr: function(){
755 var xhr = new window.XMLHttpRequest();
756 xhr.upload.addEventListener("progress", function(evt){
757 if (evt.lengthComputable) {
758 var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
759 jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
760 }
761 }, false);
762 return xhr;
763 },
764 processData: false,
765 contentType: false,
766 success: function(response) {
767 var return_obj=JSON.parse(response);
768 jQuery(attachment).find('.wppm_attachment_cancel').show();
769 if( parseInt(return_obj.id) != 0 ){
770 jQuery(attachment).append('<input type="hidden" class="wppm_proj_comment_attachment" name="wppm_proj_comment_attachment[]" value="'+return_obj.id+'">');
771 jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
772 }else {
773 jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
774 }
775 }
776 });
777 }
778 });
779 jQuery('#wppm_proj_attachment_upload').trigger('click');
780 }
781 </script>