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

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