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

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