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

800 lines 52.6 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 = date('Y-m-d');
19 $id = isset($_POST) && isset($_POST['id']) ? intval(sanitize_text_field($_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( "SELECT * FROM {$wpdb->prefix}wppm_project where id = '".esc_sql($id)."'" );
24 $orderby_sql = esc_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( "SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id='".esc_sql($id)."' ORDER BY $orderby_sql");
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 = esc_sql($project->status);
43 $project_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = '$projstatus'");
44 }
45 if(isset($project->cat_id)){
46 $projcat = esc_sql($project->cat_id);
47 $project_category = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id = '$projcat'");
48 }
49 if(!empty($project->description)){
50 $project_description = stripslashes((htmlspecialchars_decode($project->description, ENT_QUOTES)));
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 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 && $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_e($project_category->name,'taskbuilder'):"" ?></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 (isset($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 = stripslashes((htmlspecialchars_decode($comment->body, ENT_QUOTES)));
295 $comment_body = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $comment_body);
296 $date = date("Y-m-d H:i:s" ,strtotime($comment->create_time));
297 $thread_date = date("d F Y, h:i:s A" ,strtotime($date));
298 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
299 if($attachment_ids!=""){
300 $attachments = explode(",",$attachment_ids);
301 } else {
302 $attachments = array();
303 }
304 ?>
305 <div class="wppm_proj_thread">
306 <div class="wppm_thread_avatar">
307 <?php echo (get_avatar($comment->created_by, 40));?>
308 </div>
309 <div class="wppm_thread_body">
310 <div class="wppm_thread_user_name">
311 <strong style="color:<?php echo esc_attr($appearance_settings['comment-primary-color']);?>"><?php echo esc_html($user->display_name) ?></strong>
312 <span><?php if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_status')){
313 $comment_log_body = unserialize($comment->body);
314 $prev_status = $comment_log_body['prev_status'];
315 $new_status = $comment_log_body['new_status'];
316 if(isset($prev_status)){
317 $prev_status = esc_sql($prev_status);
318 $project_prev_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = '$prev_status'");
319 }
320 if(isset($new_status)){
321 $new_status = esc_sql($new_status);
322 $project_new_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id= '$new_status'");
323 }
324 esc_html_e("changed status from $project_prev_status->name to $project_new_status->name","taskbuilder");
325 }
326 if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')){
327 $comment_log_body = unserialize($comment->body);
328 $prev_user = $comment_log_body['prev_user'];
329 $new_user = $comment_log_body['new_user'];
330 $prev_user_data = get_userdata($prev_user);
331 $new_user_data = get_userdata($new_user);
332 esc_html_e("changed creator from $prev_user_data->display_name to $new_user_data->display_name","taskbuilder");
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 }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat')){
336 $comment_log_body = unserialize($comment->body);
337 $prev_cat = $comment_log_body['prev_cat'];
338 $new_cat = $comment_log_body['new_cat'];
339 if(!empty($prev_cat)){
340 $prev_cat = esc_sql($prev_cat);
341 $project_prev_cat = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id= '$prev_cat'");
342 }
343 if(!empty($new_cat)){
344 $new_cat = esc_sql($new_cat);
345 $project_new_cat = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id='$new_cat'");
346 }
347 $proj_prev_cat_name = !empty($project_prev_cat) ? $project_prev_cat->name: "None";
348 $proj_new_cat_name = !empty($project_new_cat) ? $project_new_cat->name: "None";
349 esc_html_e("changed category from $proj_prev_cat_name to $proj_new_cat_name","taskbuilder");
350 }
351 ?></span>
352 <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>
353 <div class="wppm_thread_action">
354 <?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')))){ ?>
355 <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>
356 <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>
357 <?php } ?>
358 </div>
359 </div>
360 <div class="wppm_thread_messege" style="color:<?php echo esc_attr($appearance_settings['comment-secondary-color']);?>">
361 <?php
362 $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(),));
363 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')){
364 echo wp_kses(wpautop($comment_body),$allowedtags) ;
365 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_status')){ ?>
366 <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
367 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')) { ?>
368 <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
369 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')) {
370 $comment_log_body = unserialize($comment->body);
371 $prev_assign_user = $comment_log_body['prev_assign_user'];
372 $new_assign_user = $comment_log_body['new_assign_user'];
373 $prev_assign_user_array = array();
374 $new_assign_user_array = array();
375 if(!empty($prev_assign_user)){
376 $prev_assign_user_array = explode(",",$prev_assign_user);
377 }
378 if(!empty($new_assign_user)){
379 $new_assign_user_array = explode(",",$new_assign_user);
380 }
381 $assign_user_name = array();
382 $assign_user_name_str = "";
383 if(!empty($prev_assign_user_array)){
384 foreach($prev_assign_user_array as $val){
385 $assign_user = get_userdata($val);
386 $assign_user_name[] = $assign_user->display_name;
387 }
388 $assign_user_name_str = implode(",",$assign_user_name);
389 }
390 $new_assign_user_name = array();
391 $new_assign_user_name_str = "";
392 if(!empty($new_assign_user_array)){
393 foreach($new_assign_user_array as $val){
394 $new_assign_user = get_userdata($val);
395 $new_assign_user_name[] = $new_assign_user->display_name;
396 }
397 $new_assign_user_name_str = implode(",",$new_assign_user_name);
398 }
399 ?>
400 <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
401 }elseif(isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat'){ ?>
402 <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
403 } ?>
404
405 </div>
406 <?php
407 if(!empty($attachments) && !(isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='delete_proj_comment')):?> <br>
408 <strong class="wppm_attachment_title"><?php echo esc_html_e('Attachments','taskbuilder');?>:</strong><br>
409 <table class="wppm_attachment_tbl">
410 <tbody>
411 <?php
412 if(!empty($attachments)){
413 foreach( $attachments as $attachment ):
414 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&pid='.$id.'&pac='.$auth_id;
415 $attachment = esc_sql($attachment);
416 $attach = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_attachments where id='$attachment'");
417 $findStr = ".txt";
418 if(!empty( $attach)){
419 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
420 $attachment_name = sanitize_file_name($attachment_name);
421 }
422 if((!empty($attachment_name))){
423 ?>
424 <tr class="wppm_attachment_tr">
425 <td>
426 <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
427 <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
428 <?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)))){ ?>
429 <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>
430 <?php } ?>
431 </td>
432 </tr>
433 <?php }
434 endforeach;
435 } ?>
436 </tbody>
437 </table>
438 <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' ) ); ?>">
439 <?php do_action('wppm_after_project_comment_attachment',$id,$comment->id);?>
440 <?php endif;?>
441 </div>
442 </div>
443 <?php }
444 } ?>
445 </div>
446 </div>
447 <div class="wppm_individual_project_widget col-sm-4 wppm_sidebar col-md-3">
448 <div class="row wppm_widget" id="wppm_project_status_widget">
449 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
450 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
451 <?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"; ?>
452 <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>
453 </div>
454 <hr class="widget_divider">
455 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
456 <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>
457 </div>
458 </div>
459 <div class="row wppm_widget" id="wppm_project_raisedby_widget">
460 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
461 <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>
462 <?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')) { ?>
463 <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>
464 <?php } ?>
465 </div>
466 <hr class="widget_divider"> <?php
467 if(isset($project->created_by)){
468 $user_info = get_userdata($project->created_by);
469 }else{
470 $user_info = "";
471 }
472 ?>
473 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
474 <div id="wppm_project_creator">
475 <div style="padding:2px 0;">
476 <span class="wppm_project_user_avatar"><?php echo isset($project->created_by)? (get_avatar($project->created_by, 25, "mysteryman")):""; ?></span>
477 <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>
478 </div>
479 </div>
480 </div>
481 </div>
482 <div class="row wppm_widget" id="wppm_project_users_widget_container">
483 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
484 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Users','taskbuilder')?></h4>
485 <?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') { ?>
486 <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>
487 <?php } ?>
488 </div>
489 <hr class="widget_divider">
490 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
491 <div id="wppm_project_users">
492 <?php
493 if(!(empty(array_filter($users)))){
494 foreach($users as $user) {
495 $user_data = get_userdata($user);
496 $user = esc_sql($user);
497 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '".esc_sql($id)."' AND user_id = '$user'");
498 ?>
499 <div style="padding:2px 0;">
500 <span class="wppm_project_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
501 <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>
502 <?php
503 if(!empty($wppm_users_role)){
504 foreach($wppm_users_role as $key=>$role){
505 if(!empty($role)){
506 foreach($role as $k=>$val){
507 if( !empty($project_user) && $key == $project_user->role_id){ ?>
508 <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
509 }
510 }
511 }
512 }
513 }
514 ?>
515 </div>
516 <?php
517 }
518 } else {
519 ?><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
520 }
521 ?>
522 </div>
523 </div>
524 </div>
525 <?php echo do_action('wppm_after_project_widget',$project->id);?>
526 </div>
527 <div id="wppm_alert_success" class="alert alert-success wppm_alert" style="display:none;" role="alert">
528 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/success.svg'); ?>" alt="success"><span class="wppm_alert_text"></span>
529 </div>
530 <div id="wppm_alert_error" class="alert alert-danger wppm_alert" style="display:none;" role="alert">
531 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/warning-triangle.svg'); ?>" alt="warning-triangle"><span class="wppm_alert_text"></span>
532 </div>
533 <input type="hidden" id="wppm_proj_nonce" value="<?php echo wp_create_nonce('wppm_upload_proj_attach_file')?>">
534 <input type="file" id="wppm_proj_attachment_upload" class="hidden" onchange="">
535 </div>
536 </form>
537 <style>
538 .wppm_comment_date i:hover{
539 color: <?php echo esc_attr($appearance_settings['comment-date-hover-color'])?>;
540 }
541 #wppm_open_project .wppm-add-new-btn:hover{
542 background-color: <?php echo esc_attr($appearance_settings['menu-button-hover-color'])?>!important;
543 }
544 </style>
545 <script>
546 jQuery( document ).ready( function( jQuery ) { <?php
547 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')) { ?>
548 jQuery("#wppm_edit_pstart_date").flatpickr({
549 enableTime: true,
550 dateFormat: "Y-m-d H:i",
551 onChange: function(selectedDates, dateStr, instance) {
552 var data = {
553 action: 'wppm_set_change_proj_start_date',
554 proj_id:<?php echo esc_attr($project->id);?>,
555 date:dateStr,
556 _ajax_nonce:jQuery('#wppm_edit_pstart_date_ajax_nonce').val()
557 };
558 jQuery.post(wppm_admin.ajax_url, data, function(response) {
559 instance.close();
560 wppm_open_project(<?php echo esc_attr($project->id);?>);
561 });
562 },
563 });
564 jQuery("#wppm_edit_pend_date").flatpickr({
565 enableTime: true,
566 dateFormat: "Y-m-d H:i",
567 onChange: function(selectedDates, dateStr, instance) {
568 var data = {
569 action: 'wppm_set_change_proj_end_date',
570 proj_id:<?php echo esc_attr($project->id);?>,
571 date:dateStr,
572 _ajax_nonce:jQuery('#wppm_edit_pend_date_ajax_nonce').val()
573 };
574 jQuery.post(wppm_admin.ajax_url, data, function(response) {
575 instance.close();
576 wppm_open_project(<?php echo esc_attr($project->id);?>);
577 });
578 },
579 });
580 <?php }
581 if((!empty($wppm_rich_text_editor)) && ($wppm_rich_text_editor == 1)){
582 $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
583 $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";
584 $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";
585 $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";
586 $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)? ' alignleft aligncenter alignright ' :"";
587 $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :"";
588 $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";
589 $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";
590 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
591 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
592 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
593 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
594 $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :""; ?>
595 tinymce.remove();
596 tinymce.init({
597 selector:'#wppm_proj_description',
598 body_id: 'wppm_proj_description',
599 directionality : '<?php //echo 'rtl'; ?>',
600 menubar: false,
601 statusbar: false,
602 height : '200',
603 plugins: [
604 'lists link image directionality textcolor'
605 ],
606 image_advtab: true,
607 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 ?>',
608 branding: false,
609 autoresize_bottom_margin: 20,
610 browser_spellcheck : true,
611 relative_urls : false,
612 remove_script_host : false,
613 convert_urls : true,
614 setup: function (editor) {
615 }
616 }); <?php
617 }
618 if($wppm_tinymce_visibility_open_project==1){
619 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
620 ?>
621 tinymce.remove();
622 tinymce.init({
623 selector:'#wppm_proj_comment',
624 body_id: 'wppm_proj_comment',
625 directionality : '<?php //echo 'rtl'; ?>',
626 menubar: false,
627 statusbar: false,
628 height : '200',
629 width : '100%',
630 plugins: [
631 'lists link image directionality paste textcolor'
632 ],
633 image_advtab: true,
634 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 ?>',
635 branding: false,
636 autoresize_bottom_margin: 20,
637 browser_spellcheck : true,
638 relative_urls : false,
639 remove_script_host : false,
640 convert_urls : true,
641 paste_as_text: true,
642 setup: function (editor) {
643 }
644 });
645 <?php } ?>
646 jQuery('#wppm_proj_comment_btn').show();
647 <?php } ?>
648 });
649
650 function wppm_add_proj_comment(){
651 <?php
652 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
653 ?>
654 tinymce.remove();
655 tinymce.init({
656 selector:'#wppm_proj_comment',
657 body_id: 'wppm_proj_comment',
658 directionality : '<?php //echo 'rtl'; ?>',
659 menubar: false,
660 statusbar: false,
661 height : '200',
662 width : '100%',
663 plugins: [
664 'lists link image directionality paste textcolor'
665 ],
666 image_advtab: true,
667 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 ?>',
668 branding: false,
669 autoresize_bottom_margin: 20,
670 browser_spellcheck : true,
671 relative_urls : false,
672 remove_script_host : false,
673 convert_urls : true,
674 paste_as_text: true,
675 setup: function (editor) {
676 }
677 });
678 <?php } else{ ?>
679 jQuery('#wppm_proj_comment').css("width", "100%");
680 jQuery('#wppm_proj_comment').css("height", "160px");
681 jQuery('#wppm_proj_comment').css("color", "#000");
682 <?php }?>
683 jQuery('#wppm_proj_comment_btn').show();
684 }
685
686 function wppm_cancel_proj_comment(){ <?php
687 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
688 ?>
689 tinyMCE. activeEditor. setContent('');
690 tinymce.remove('#wppm_proj_comment');
691 jQuery('#wppm_proj_comment_btn').hide();
692 <?php } else{
693 ?>
694 jQuery('#wppm_proj_comment').css("width", "80%");
695 jQuery('#wppm_proj_comment').css("height", "30px");
696 jQuery('#wppm_proj_comment').css("color", "#000");
697 jQuery('#wppm_proj_comment').css("padding", "5px");
698 jQuery('#wppm_proj_comment').css(" margin-bottom", "15px");
699 jQuery('#wppm_proj_comment').css("overflow", "hidden");
700 jQuery('#wppm_proj_comment').css("border", "1 px solid #eee");
701 jQuery('#wppm_proj_comment').css("color", "#eee");
702 jQuery('#wppm_proj_comment').css("margin-top", "10px");
703 jQuery('#wppm_proj_comment_btn').hide();
704 <?php }?>
705 }
706
707 function wppm_submit_proj_comment(proj_id){
708 var dataform = new FormData(jQuery('#wppm_open_project')[0]);
709 dataform.append('action','wppm_submit_proj_comment');
710 <?php
711 if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){ ?>
712 var comment_body = tinyMCE.get('wppm_proj_comment').getContent().trim();
713 <?php } else{ ?>
714 var comment_body = jQuery("#wppm_proj_comment").val().trim();
715 <?php }?>
716 dataform.append('comment_body',comment_body);
717 dataform.append('proj_id',proj_id);
718 jQuery('#wppm_load_individual_project_container').html(wppm_admin.loading_html);
719 jQuery.ajax({
720 url: wppm_admin.ajax_url,
721 type: 'POST',
722 data: dataform,
723 processData: false,
724 contentType: false
725 })
726 .done(function (response_str) {
727 wppm_open_project(proj_id);
728 });
729 }
730
731 function wppm_upload_proj_comment_file(){
732 jQuery('#wppm_proj_attachment_upload').unbind('change');
733 jQuery('#wppm_proj_attachment_upload').on('change', function() {
734 var flag = false;
735 var file = this.files[0];
736 jQuery('#wppm_proj_attachment_upload').val('');
737 var allowedExtension = ['exe', 'php','js'];
738 var file_name_split = file.name.split('.');
739 var file_extension = file_name_split[file_name_split.length-1];
740 file_extension = file_extension.toLowerCase();
741 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
742 flag = true;
743 alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
744 };
745 <?php
746 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
747 var current_filesize=file.size/1000000;
748 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
749 flag = true;
750 alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
751 }
752 if (!flag){
753 var html_str = '<div class="wppm_attachment">'+
754 '<div class="progress" style="float: none !important; width: unset !important;">'+
755 '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
756 file.name+
757 '</div>'+
758 '<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>'+
759 '</div>'+
760 '</div>';
761 jQuery('.wppm_proj_attachment_container').show();
762 jQuery('.wppm_proj_attachment_container').append(html_str);
763 var attachment = jQuery('.wppm_proj_attachment_container').find('.wppm_attachment').last();
764 var data = new FormData();
765 data.append('file', file);
766 data.append('arr_name', file.name);
767 data.append('action', 'wppm_upload_proj_attach_file');
768 data.append('nonce', jQuery('#wppm_proj_nonce').val().trim());
769 jQuery.ajax({
770 type: 'post',
771 url: wppm_admin.ajax_url,
772 data: data,
773 xhr: function(){
774 var xhr = new window.XMLHttpRequest();
775 xhr.upload.addEventListener("progress", function(evt){
776 if (evt.lengthComputable) {
777 var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
778 jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
779 }
780 }, false);
781 return xhr;
782 },
783 processData: false,
784 contentType: false,
785 success: function(response) {
786 var return_obj=JSON.parse(response);
787 jQuery(attachment).find('.wppm_attachment_cancel').show();
788 if( parseInt(return_obj.id) != 0 ){
789 jQuery(attachment).append('<input type="hidden" class="wppm_proj_comment_attachment" name="wppm_proj_comment_attachment[]" value="'+return_obj.id+'">');
790 jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
791 }else {
792 jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
793 }
794 }
795 });
796 }
797 });
798 jQuery('#wppm_proj_attachment_upload').trigger('click');
799 }
800 </script>