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

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