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

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