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