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

479 lines 30.7 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 $settings = get_option("wppm-ap-modal");
11 $current_date = date('Y-m-d');
12 $id = isset($_POST) && isset($_POST['id']) ? intval(sanitize_text_field($_POST['id'])) : 0;
13 if (!isset($id)) {exit;}
14 $auth_id = $wppmfunction->get_project_meta($id,'project_auth_code',true);
15 $auth_id = sanitize_text_field($auth_id);
16 $project = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project where id = $id" );
17 $project_comment = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id=".$id." ORDER BY create_time DESC");
18 if(isset($project->users)){
19 $users = explode(",",$project->users);
20 }else{
21 $users = "";
22 }
23 $wppm_users_role = get_option('wppm_user_role');
24 if(isset($project->status)){
25 $project_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id=".$project->status);
26 }
27 if(isset($project->cat_id)){
28 $project_category = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id=".$project->cat_id);
29 }
30 if(!empty($project->description)){
31 $project_description = stripslashes((htmlspecialchars_decode($project->description, ENT_QUOTES)));
32 }
33 if($wppm_project_time == 1){
34 $proj_start_date = isset($project->start_date)? $project->start_date:"";
35 $proj_end_date = isset($project->end_date) ? $project->end_date: "" ;
36 } elseif($wppm_project_time == 0){
37 $psDate = isset($project->start_date) ? new DateTime($project->start_date): "";
38 $peDate = isset($project->end_date) ? new DateTime($project->end_date):"";
39 $proj_start_date = !empty($psDate) ? $psDate->format('Y-m-d'):"";
40 $proj_end_date = !empty($peDate) ? $peDate->format('Y-m-d'):"";
41 }
42
43 ?>
44 <form id="wppm_open_project" method="post">
45 <div class="row">
46 <div class="col-sm-12">
47 <span class="wppm-heading-inline"><?php echo esc_html_e('Project','taskbuilder');?></span>
48 <?php if($current_user->has_cap('manage_options')){ ?>
49 <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>
50 <?php } ?>
51 <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>
52 <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>
53 <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_project_permission('delete_project',$project->id)))? "display:inline":"display:none"; ?>
54 <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>
55 <?php $visibility_style = (($current_user->ID && $current_user->has_cap('manage_options')) && ($wppm_public_projects_permission==1))? "display:inline":"display:none"; ?>
56 <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>
57 <?php echo do_action('wppm_after_open_project_buttons',$project->id);?>
58 </div>
59 </div>
60 <div id="wppm_load_individual_project_container" class="row">
61 <div class="col-sm-8 wppm_body col-md-9">
62 <div class="row">
63 <div class="col-sm-12" id="wppm_project_details_container">
64 <div class="row">
65 <div class="col-sm-12">
66 <span class="wppm_project_label"> <?php echo isset($project->project_name) ? esc_html($project->project_name):"";
67 if (($wppmfunction->has_project_permission('change_project_details',$id)) || ($current_user->has_cap('manage_options'))) { ?>
68 <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>
69 <?php } ?>
70 </span>
71 </div>
72 </div>
73 <div class="row">
74 <div class="col-sm-3">
75 <span class="wppm_project_details_label"><?php echo esc_html_e('Created On:','taskbuilder');?></span>
76 </div>
77 <div class="col-sm-9">
78 <span class="wppm_project_details"><?php echo isset($project->date_created) ? esc_html($project->date_created):"" ?></span>
79 </div>
80 </div>
81 <?php if($wppm_default_project_date==1) { ?>
82 <div class="row">
83 <div class="col-sm-3">
84 <span class="wppm_project_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
85 </div>
86 <div class="col-sm-9">
87 <span class="wppm_project_details" id="wppm_edit_pstart_date"><?php echo (isset($proj_start_date))? esc_html($proj_start_date): "" ?></span>
88 </div>
89 <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' ) ); ?>">
90 </div>
91 <div class="row">
92 <div class="col-sm-3">
93 <span class="wppm_project_details_label"><?php echo esc_html_e('End Date:','taskbuilder');?></span>
94 </div>
95 <div class="col-sm-9">
96 <?php
97 $pstatus = isset($project->status) ? $project->status :"";
98 $style = ($pstatus!=4 && $proj_end_date < $current_date) ? "color:#FF0000":"color:#2C3E50"; ?>
99 <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>
100 </div>
101 <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' ) ); ?>">
102 </div>
103 <?php } ?>
104 <div class="row">
105 <div class="col-sm-3">
106 <span class="wppm_project_details_label"><?php echo esc_html_e('Project Category:','taskbuilder');?></span>
107 </div>
108 <div class="col-sm-9">
109 <span class="wppm_project_details"><?php echo (isset($project_category->name))? esc_html_e($project_category->name,'taskbuilder'):"" ?></span>
110 </div>
111 </div>
112 <div class="row">
113 <div class="col-sm-3">
114 <span class="wppm_project_details_label"><?php echo esc_html_e('Description:','taskbuilder');?></span>
115 </div>
116 <?php
117 $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(),));
118 ?>
119 <div class="col-sm-9 wppm_project_description">
120 <span><?php echo (isset($project_description))? wp_kses(wpautop($project_description),$allowedtags):"" ?></span>
121 </div>
122 </div>
123 </div>
124 </div>
125 <div id="wppm_proj_discussion_container">
126 <div class="row">
127 <div class="col-sm-12" style="margin-top:5px;">
128 <span class="wppm_proj_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
129 </div>
130 </div>
131 <div class="row">
132 <div class="col-sm-12">
133 <textarea id="wppm_proj_comment" placeholder="<?php echo esc_attr__('Write a comment...','taskbuilder');?>" onclick="wppm_add_proj_comment()" name="wppm_proj_comment"></textarea>
134 </div>
135 </div>
136 <div class="row" id="wppm_proj_comment_btn">
137 <div class="col-sm-6">
138 <span id="wppm_proj_attach_file" onclick="wppm_upload_proj_comment_file()"><?php echo esc_html_e('Attach Files','taskbuilder')?></span>
139 </div>
140 <div class="col-sm-6">
141 <button type="button" id="wppm_individual_cancel_proj_comment_btn" onclick="wppm_cancel_proj_comment();" class="wppm-btn-cancel">
142 <?php echo esc_html_e('Cancel','taskbuilder')?>
143 </button>
144 <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">
145 <?php echo esc_html_e('SEND','taskbuilder')?>
146 </button>
147 </div>
148 <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_submit_proj_comment' ) ); ?>">
149 </div>
150 <div class="row">
151 <div class="wppm_proj_attachment_container col-sm-12" style="display:none;">
152 </div>
153 </div>
154 </div>
155 <div class="wppm_thread_container">
156 <?php
157 if(!empty($project_comment)){
158 foreach($project_comment as $comment){
159 $user = get_userdata( $comment->created_by );
160 $comment_body = stripslashes((htmlspecialchars_decode($comment->body, ENT_QUOTES)));
161 $comment_body = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $comment_body);
162 $date = date("Y-m-d H:i:s" ,strtotime($comment->create_time));
163 $thread_date = date("d F Y, h:i:s A" ,strtotime($date));
164 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
165 if($attachment_ids!=""){
166 $attachments = explode(",",$attachment_ids);
167 } else {
168 $attachments = array();
169 }
170 ?>
171 <div class="wppm_proj_thread">
172 <div class="wppm_thread_avatar">
173 <?php echo (get_avatar($comment->created_by, 40));?>
174 </div>
175 <div class="wppm_thread_body">
176 <div class="wppm_thread_user_name">
177 <strong style="color:<?php echo esc_attr($appearance_settings['comment-primary-color']);?>"><?php echo esc_html($user->display_name) ?></strong> <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>
178 <div class="wppm_thread_action">
179 <?php if(( ($current_user->has_cap('manage_options')) || ($wppmfunction->has_proj_comment_permission('edit_proj_comment',$id,$comment->id)))){ ?>
180 <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>
181 <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>
182 <?php } ?>
183 </div>
184 </div>
185 <div class="wppm_thread_messege" style="color:<?php echo esc_attr($appearance_settings['comment-secondary-color']);?>">
186 <?php
187 $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(),));
188 if(!empty($comment_body)){
189 echo wp_kses(wpautop($comment_body),$allowedtags) ;
190 } ?>
191 </div>
192 <?php
193 if(!empty($attachments)):?> <br>
194 <strong class="wppm_attachment_title"><?php echo esc_html_e('Attachments','taskbuilder');?>:</strong><br>
195 <table class="wppm_attachment_tbl">
196 <tbody>
197 <?php
198 if(!empty($attachments)){
199 foreach( $attachments as $attachment ):
200 $attach = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_attachments where id=".$attachment);
201 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&pid='.$id.'&pac='.$auth_id;
202 $findStr = ".txt";
203 if(!empty( $attach)){
204 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
205 $attachment_name = sanitize_file_name($attachment_name);
206 }
207 if((!empty($attachment_name))){
208 ?>
209 <tr class="wppm_attachment_tr">
210 <td>
211 <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
212 <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
213 <?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)))){ ?>
214 <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>
215 <?php } ?>
216 </td>
217 </tr>
218 <?php }
219 endforeach;
220 } ?>
221 </tbody>
222 </table>
223 <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' ) ); ?>">
224 <?php do_action('wppm_after_project_comment_attachment',$id,$comment->id);?>
225 <?php endif;?>
226 </div>
227 </div>
228 <?php }
229 } ?>
230 </div>
231 </div>
232 <div class="wppm_individual_project_widget col-sm-4 wppm_sidebar col-md-3">
233 <div class="row wppm_widget" id="wppm_project_status_widget">
234 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
235 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
236 <?php $style = ($wppmfunction->has_project_permission('change_project_status',$id) || $current_user->has_cap('manage_options'))? "display:flex":"display:none"; ?>
237 <span class="wppm_edit_project_details_widget" style="<?php echo $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>
238 </div>
239 <hr class="widget_divider">
240 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
241 <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>
242 </div>
243 </div>
244 <div class="row wppm_widget" id="wppm_project_raisedby_widget">
245 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
246 <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>
247 <?php if ($current_user->has_cap('manage_options')) { ?>
248 <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>
249 <?php } ?>
250 </div>
251 <hr class="widget_divider"> <?php
252 if(isset($project->created_by)){
253 $user_info = get_userdata($project->created_by);
254 }else{
255 $user_info = "";
256 }
257 ?>
258 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
259 <div id="wppm_project_creator">
260 <div style="padding:2px 0;">
261 <span class="wppm_project_user_avatar"><?php echo isset($project->created_by)? (get_avatar($project->created_by, 25, "mysteryman")):""; ?></span>
262 <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_e($user_info->display_name,'taskbuilder') : "";?></span>
263 </div>
264 </div>
265 </div>
266 </div>
267 <div class="row wppm_widget" id="wppm_project_users_widget_container">
268 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
269 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Users','taskbuilder')?></h4>
270 <?php if ($wppmfunction->has_project_permission('assign_project_users',$id ) || $current_user->has_cap('manage_options')) { ?>
271 <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>
272 <?php } ?>
273 </div>
274 <hr class="widget_divider">
275 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
276 <div id="wppm_project_users">
277 <?php
278 if(!(empty(array_filter($users)))){
279 foreach($users as $user) {
280 $user_data = get_userdata($user);
281 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = $id AND user_id = $user");
282 ?>
283 <div style="padding:2px 0;">
284 <span class="wppm_project_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
285 <span class="wppm_project_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e($user_data->display_name,'taskbuilder'); ?></span>
286 <?php
287 if(!empty($wppm_users_role)){
288 foreach($wppm_users_role as $key=>$role){
289 if(!empty($role)){
290 foreach($role as $k=>$val){
291 if( !empty($project_user) && $key == $project_user->role_id){ ?>
292 <span class="wppm_project_user_role" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>">(<?php echo esc_html_e($role['label'],'taskbuilder'); ?>)</span><?php
293 }
294 }
295 }
296 }
297 }
298 ?>
299 </div>
300 <?php
301 }
302 } else {
303 ?><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
304 }
305 ?>
306 </div>
307 </div>
308 </div>
309 </div>
310 <input type="hidden" id="wppm_proj_nonce" value="<?php echo wp_create_nonce('wppm_upload_proj_attach_file')?>">
311 <input type="file" id="wppm_proj_attachment_upload" class="hidden" onchange="">
312 </div>
313 </form>
314 <style>
315 .wppm_comment_date i:hover{
316 color: <?php echo esc_attr($appearance_settings['comment-date-hover-color'])?>;
317 }
318 #wppm_open_project .wppm-add-new-btn:hover{
319 background-color: <?php echo esc_attr($appearance_settings['menu-button-hover-color'])?>!important;
320 }
321 </style>
322 <script>
323 jQuery( document ).ready( function( jQuery ) { <?php
324 if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_project_permission('change_project_details',$id))) { ?>
325 jQuery("#wppm_edit_pstart_date").flatpickr({
326 enableTime: true,
327 dateFormat: "Y-m-d H:i",
328 onChange: function(selectedDates, dateStr, instance) {
329 var data = {
330 action: 'wppm_set_change_proj_start_date',
331 proj_id:<?php echo esc_attr($project->id);?>,
332 date:dateStr,
333 _ajax_nonce:jQuery('#wppm_edit_pstart_date_ajax_nonce').val()
334 };
335 jQuery.post(wppm_admin.ajax_url, data, function(response) {
336 instance.close();
337 wppm_open_project(<?php echo esc_attr($project->id);?>);
338 });
339 },
340 });
341 jQuery("#wppm_edit_pend_date").flatpickr({
342 enableTime: true,
343 dateFormat: "Y-m-d H:i",
344 onChange: function(selectedDates, dateStr, instance) {
345 var data = {
346 action: 'wppm_set_change_proj_end_date',
347 proj_id:<?php echo esc_attr($project->id);?>,
348 date:dateStr,
349 _ajax_nonce:jQuery('#wppm_edit_pend_date_ajax_nonce').val()
350 };
351 jQuery.post(wppm_admin.ajax_url, data, function(response) {
352 instance.close();
353 wppm_open_project(<?php echo esc_attr($project->id);?>);
354 });
355 },
356 });
357 <?php } ?>
358 tinymce.remove();
359 tinymce.init({
360 selector:'#wppm_proj_description',
361 body_id: 'wppm_proj_description',
362 directionality : '<?php //echo 'rtl'; ?>',
363 menubar: false,
364 statusbar: false,
365 height : '200',
366 plugins: [
367 'lists link image directionality'
368 ],
369 image_advtab: true,
370 toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
371 branding: false,
372 autoresize_bottom_margin: 20,
373 browser_spellcheck : true,
374 relative_urls : false,
375 remove_script_host : false,
376 convert_urls : true,
377 setup: function (editor) {
378 }
379 });
380 });
381
382 function wppm_add_proj_comment(){
383 tinymce.remove();
384 tinymce.init({
385 selector:'#wppm_proj_comment',
386 body_id: 'wppm_proj_comment',
387 directionality : '<?php //echo 'rtl'; ?>',
388 menubar: false,
389 statusbar: false,
390 height : '200',
391 width : '100%',
392 plugins: [
393 'lists link image directionality paste'
394 ],
395 image_advtab: true,
396 toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
397 branding: false,
398 autoresize_bottom_margin: 20,
399 browser_spellcheck : true,
400 relative_urls : false,
401 remove_script_host : false,
402 convert_urls : true,
403 paste_as_text: true,
404 setup: function (editor) {
405 }
406 });
407 jQuery('#wppm_proj_comment_btn').show();
408 }
409
410 function wppm_upload_proj_comment_file(){
411 jQuery('#wppm_proj_attachment_upload').unbind('change');
412 jQuery('#wppm_proj_attachment_upload').on('change', function() {
413 var flag = false;
414 var file = this.files[0];
415 jQuery('#wppm_proj_attachment_upload').val('');
416 var allowedExtension = ['exe', 'php','js'];
417 var file_name_split = file.name.split('.');
418 var file_extension = file_name_split[file_name_split.length-1];
419 file_extension = file_extension.toLowerCase();
420 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
421 flag = true;
422 alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
423 };
424 <?php
425 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
426 var current_filesize=file.size/1000000;
427 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
428 flag = true;
429 alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
430 }
431 if (!flag){
432 var html_str = '<div class="wppm_attachment">'+
433 '<div class="progress" style="float: none !important; width: unset !important;">'+
434 '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
435 file.name+
436 '</div>'+
437 '<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>'+
438 '</div>'+
439 '</div>';
440 jQuery('.wppm_proj_attachment_container').show();
441 jQuery('.wppm_proj_attachment_container').append(html_str);
442 var attachment = jQuery('.wppm_proj_attachment_container').find('.wppm_attachment').last();
443 var data = new FormData();
444 data.append('file', file);
445 data.append('arr_name', file.name);
446 data.append('action', 'wppm_upload_proj_attach_file');
447 data.append('nonce', jQuery('#wppm_proj_nonce').val().trim());
448 jQuery.ajax({
449 type: 'post',
450 url: wppm_admin.ajax_url,
451 data: data,
452 xhr: function(){
453 var xhr = new window.XMLHttpRequest();
454 xhr.upload.addEventListener("progress", function(evt){
455 if (evt.lengthComputable) {
456 var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
457 jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
458 }
459 }, false);
460 return xhr;
461 },
462 processData: false,
463 contentType: false,
464 success: function(response) {
465 var return_obj=JSON.parse(response);
466 jQuery(attachment).find('.wppm_attachment_cancel').show();
467 if( parseInt(return_obj.id) != 0 ){
468 jQuery(attachment).append('<input type="hidden" class="wppm_proj_comment_attachment" name="wppm_proj_comment_attachment[]" value="'+return_obj.id+'">');
469 jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
470 }else {
471 jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
472 }
473 }
474 });
475 }
476 });
477 jQuery('#wppm_proj_attachment_upload').trigger('click');
478 }
479 </script>