PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 5.0.0
Taskbuilder – Project Management & Task Management Tool With Kanban Board v5.0.0
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 5.0.0, at includes/admin/projects/wppm_open_project.php

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