PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.5
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.5
6.0.5 6.0.2 6.0.3 6.0.4 6.0.1 6.0.0 5.0.8 5.0.9 4.0.9 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 All 57 releases
taskbuilder / includes / admin / projects / wppm_open_project.php

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

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