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

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