PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.7
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.7
6.0.7 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 All 59 releases
taskbuilder / includes / admin / projects / wppm_open_project.php

wppm_open_project.php in Taskbuilder – Project Management & Task Management Tool With Kanban Board 6.0.7, at includes/admin/projects/wppm_open_project.php

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