PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 5.0.5
Taskbuilder – Project Management & Task Management Tool With Kanban Board v5.0.5
6.0.5 6.0.2 6.0.3 6.0.4 6.0.1 6.0.0 5.0.8 5.0.9 4.0.9 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 All 57 releases
taskbuilder / includes / admin / projects / wppm_open_project.php

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

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