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

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

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