PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 2.0.6
Taskbuilder – Project Management & Task Management Tool With Kanban Board v2.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 1.0.6 All 57 releases
taskbuilder / includes / admin / projects / projects_list.php

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

406 lines 27.9 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,$wppmfunction,$current_user;
6 $status = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses" );
7 $categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories" );
8 $proj_per_page = 20;
9 $page_no = (isset($_POST['page_no'])) ? intval(sanitize_text_field($_POST['page_no'])): '0';
10 $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : '';
11 $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :"ASC";
12 $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):"project_name";
13 $filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : "all";
14 $current_date = date('Y-m-d');
15 $wppm_pl_filter = "1=1";
16 $filters = array(
17 'sort_by' => $sort_by,
18 'order' => $order,
19 'search' => $search_tag,
20 'filter'=>$filter_by
21 );
22 $pl_filters = isset( $_COOKIE['wppm_proj_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_proj_filters'] ) ) : $filters;
23 if(!is_array($pl_filters)){
24 $pl_filters = json_decode($pl_filters);
25 $pl_filters_arr = (array) $pl_filters;
26 } else{
27 $pl_filters_arr = $filters;
28 }
29 $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : $pl_filters_arr['search'];
30 $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :$pl_filters_arr['order'];
31 $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):$pl_filters_arr['sort_by'];
32 $filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : $pl_filters_arr['filter'];
33 if($sort_by == ""){
34 $sort_by = 'project_name';
35 }
36 $filters = array(
37 'sort_by' => $sort_by,
38 'order' => $order,
39 'search'=>$search_tag,
40 'filter'=>$filter_by
41 );
42 setcookie('wppm_proj_filters',wp_json_encode( $filters ),time() + 3600);
43 if($pl_filters_arr['sort_by']=='status'){
44 $sort_by = 'proj_statuses.name';
45 }
46 if($pl_filters_arr['sort_by']=='category'){
47 $sort_by = 'proj_categories.name';
48 }
49 if($pl_filters_arr['sort_by']=='start_date'){
50 $sort_by = 'start_date';
51 }
52 if($pl_filters_arr['sort_by']=='end_date'){
53 $sort_by = 'end_date';
54 }
55 if($sort_by=='category'){
56 $sort_by = 'proj_categories.name';
57 }
58 if($filter_by=='completed'){
59 $wppm_pl_filter = "status='4'";
60 }elseif($filter_by=='overdue'){
61 $wppm_pl_filter = "status!='4' AND (CAST(end_date AS DATE)) < '$current_date'";
62 }elseif($filter_by == 'unassigned'){
63 $wppm_pl_filter = "users=''";
64 }elseif($filter_by == 'new'){
65 $wppm_pl_filter = "status='1'";
66 }elseif($filter_by == 'inprogress'){
67 $wppm_pl_filter = "status='2'";
68 }elseif($filter_by == 'hold'){
69 $wppm_pl_filter = "status='3'";
70 }elseif($filter_by == 'mine'){
71 $wppm_pl_filter = "(FIND_IN_SET('$current_user->ID',users)>0)";
72 }
73 $wppm_project_time = get_option('wppm_project_time');
74 $wppm_default_project_date = get_option('wppm_default_project_date');
75 if(!empty($search_tag)){
76 $search_tag_text = '%'.$search_tag.'%';
77 if($current_user->has_cap('manage_options')){
78 $query = ("SELECT Project.*
79 FROM {$wpdb->prefix}wppm_project AS Project
80 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
81 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
82 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
83 where $wppm_pl_filter AND (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text'))
84 Group by Project.id ORDER BY $sort_by $order");
85 $no_of_rows = ("SELECT count(*) FROM
86 (SELECT Project.*
87 FROM {$wpdb->prefix}wppm_project AS Project
88 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
89 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
90 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
91 where $wppm_pl_filter AND (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text')) Group by Project.id) AS Project" );
92 }else{
93 $query = ("SELECT Project.*
94 FROM {$wpdb->prefix}wppm_project AS Project
95 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
96 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
97 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
98 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
99 where $wppm_pl_filter AND (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text')) AND ((FIND_IN_SET('$current_user->ID',Project.users)>0) OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1))
100 Group by Project.id ORDER BY $sort_by $order");
101 $no_of_rows = ("SELECT count(*) FROM
102 (SELECT Project.*
103 FROM {$wpdb->prefix}wppm_project AS Project
104 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
105 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
106 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
107 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
108 where $wppm_pl_filter AND (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text')) AND ((FIND_IN_SET('$current_user->ID',Project.users)>0) OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1)) Group by Project.id) AS Project" );
109 }
110 }else{
111 if($current_user->has_cap('manage_options')){
112 if($sort_by=='project_name'|| $sort_by=='start_date' || $sort_by=='end_date'){
113 $query = ( "SELECT * FROM {$wpdb->prefix}wppm_project where $wppm_pl_filter ORDER BY $sort_by $order" );
114 $no_of_rows = ( "SELECT count(*) FROM {$wpdb->prefix}wppm_project where $wppm_pl_filter" );
115 } else{
116 $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
117 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
118 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
119 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
120 where $wppm_pl_filter Group by Project.id ORDER BY $sort_by $order");
121 $no_of_rows = ( "SELECT count(*) FROM (SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
122 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
123 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
124 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id where $wppm_pl_filter Group by Project.id) AS Project");
125 }
126 }else{
127 if($sort_by=='project_name'|| $sort_by=='start_date' || $sort_by=='end_date'){
128 $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
129 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
130 where ($wppm_pl_filter AND (FIND_IN_SET('$current_user->ID',Project.users)>0 OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1))) Group by Project.id ORDER BY $sort_by $order ");
131 $no_of_rows = ( "SELECT count(*) FROM (SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
132 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
133 where ($wppm_pl_filter AND (FIND_IN_SET('$current_user->ID',Project.users)>0 OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1))) Group by Project.id) AS Project");
134 } else{
135 $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
136 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
137 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
138 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
139 where ($wppm_pl_filter AND (FIND_IN_SET('$current_user->ID',Project.users)>0 OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1))) Group by Project.id ORDER BY $sort_by $order ");
140 $no_of_rows = ( "SELECT count(*) FROM (SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
141 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
142 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
143 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
144 where ($wppm_pl_filter AND (FIND_IN_SET('$current_user->ID',Project.users)>0 OR (Project.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1))) Group by Project.id) AS Project");
145 }
146 }
147 }
148 $no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows);
149 $totalrows = $wpdb->get_var( $no_of_rows );
150 $query = apply_filters('wppm_project_list_query',$query);
151 $limit_start=$page_no*$proj_per_page;
152 $limit="\n LIMIT ".$limit_start.",".$proj_per_page." ";
153 $query = $query.$limit;
154 $wppm_fillter = $wpdb->get_results($query);
155 ?>
156 <form id="wppm_project_list_frm">
157 <div id="wppm_project_list_container" class="wppm_bootstrap">
158 <div class="row">
159 <div class="col-sm-6" id="wppm_heading_inline">
160 <span class="wppm-heading-inline">
161 <?php echo esc_html_e('Projects','taskbuilder');?>
162 </span>
163 <?php if($current_user->has_cap('manage_options')){ ?>
164 <img width="25" height="30" id="wppm_add_new_project_btn" class="wppm_add_new_project_btn" onclick="wppm_add_new_project()" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/add.svg'); ?>" alt="add">
165 <?php } ?>
166 </div>
167 <div id="wppm_project_and_task_search" class="col-sm-6">
168 <img width="25px" id="wppm_project_search_filter_img" height="15px" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/search.svg'); ?>" alt="search">
169 <input type="search" id="wppm_project_search_filter" name="wppm_project_search_filter" class="form-control form-control-sm" aria-controls="selection-datatable" placeholder="<?php echo esc_attr__('Search','taskbuilder');?>" value="<?php echo (!empty($search_tag)) ? esc_attr($search_tag) : "" ?>">
170 </div>
171 </div>
172 <div class="row">
173 <div class="col-sm-6" id="wppm_project_filter_container">
174 <div class="wppm-filter-item">
175 <label for="wppm_project_filter"> <?php echo esc_html_e('Filter','taskbuilder');?></label>
176 <select id="wppm_project_filter" name="wppm_project_filter" onchange="wppm_apply_project_filter()">
177 <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
178 <option value="new" <?php echo ($filter_by == "new")? 'selected':""?>><?php echo esc_html_e('New','taskbuilder');?></option>
179 <option value="inprogress" <?php echo ($filter_by == "inprogress")? 'selected':""?>><?php echo esc_html_e('In Progress','taskbuilder');?></option>
180 <option value="hold" <?php echo ($filter_by == "hold")? 'selected':""?>><?php echo esc_html_e('Hold','taskbuilder');?></option>
181 <option value="completed" <?php echo ($filter_by == "completed")? 'selected':""?>><?php echo esc_html_e('Completed','taskbuilder');?></option>
182 <option value="mine" <?php echo ($filter_by == "mine")? 'selected':""?>><?php echo esc_html_e('Mine','taskbuilder');?></option>
183 <option value="unassigned" <?php echo ($filter_by == "unassigned")? 'selected':""?>><?php echo esc_html_e('Unassigned','taskbuilder');?></option>
184 <option value="overdue" <?php echo ($filter_by == "overdue")? 'selected':""?>><?php echo esc_html_e('Overdue','taskbuilder');?></option>
185 </select>
186 </div>
187 <div class="wppm_display_submit">
188 <div class="wppm-filter-actions">
189 <span class="wppm-link" onclick="wppm_pl_reset_filter()"> <?php echo esc_html_e('Reset','taskbuilder');?></span>
190 </div>
191 </div>
192 </div>
193 </div>
194 <div class="table-responsive">
195 <table id="wppm_project_table" class="wppm_table table">
196 <tr>
197 <th class="wppm_table_header">
198 <span id="wppm_proj_name_th"><?php echo esc_html_e('Project','taskbuilder'); ?></span>
199 <img width="16" height="16" onclick="wppm_sort_up_project_list('project_name','ASC')" style = "<?php echo ($sort_by == 'project_name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_name_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
200 <img width="16" height="16" onclick="wppm_sort_up_project_list('project_name','DESC')" style = "<?php echo ($sort_by == 'project_name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_name_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
201 </th>
202 <th class="wppm_table_header">
203 <span id="wppm_project_status_th"><?php echo esc_html_e('Status','taskbuilder'); ?></span>
204 <img width="16" height="16" onclick="wppm_sort_up_project_list('status','ASC')" style = "<?php echo ($sort_by == 'proj_statuses.name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_status_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
205 <img width="16" height="16" onclick="wppm_sort_up_project_list('status','DESC')" style = "<?php echo ($sort_by == 'proj_statuses.name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_status_img" class="wppm_chevron_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
206 </th>
207 <th class="wppm_table_header"><?php echo esc_html_e('Users','taskbuilder'); ?></th>
208 <th class="wppm_table_header">
209 <span id="wppm_project_category_th"><?php echo esc_html_e('Category','taskbuilder'); ?></span>
210 <img width="16" height="16" onclick="wppm_sort_up_project_list('category','ASC')" style = "<?php echo ($sort_by == 'proj_categories.name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_cat_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
211 <img width="16" height="16" onclick="wppm_sort_up_project_list('category','DESC')" style = "<?php echo ($sort_by == 'proj_categories.name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_cat_img" class="wppm_chevron_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
212 </th>
213 <?php if($wppm_default_project_date==1){ ?>
214 <th class="wppm_table_header">
215 <span id="wppm_project_start_date_th"><?php echo esc_html_e('Start Date','taskbuilder'); ?></span>
216 <img width="16" height="16" onclick="wppm_sort_up_project_list('start_date','ASC')" style = "<?php echo ($sort_by == 'start_date' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_start_date_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
217 <img width="16" height="16" onclick="wppm_sort_up_project_list('start_date','DESC')" style = "<?php echo ($sort_by == 'start_date' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_start_date_img" class="wppm_chevron_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
218 </th>
219 <th class="wppm_table_header">
220 <span id="wppm_project_end_date_th"><?php echo esc_html_e('End Date','taskbuilder'); ?></span>
221 <img width="16" height="16" onclick="wppm_sort_up_project_list('end_date','ASC')" style = "<?php echo ($sort_by == 'end_date' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_end_date_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
222 <img width="16" height="16" onclick="wppm_sort_up_project_list('end_date','DESC')" style = "<?php echo ($sort_by == 'end_date' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_end_date_img" class="wppm_chevron_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
223 </th>
224 <?php } ?>
225 <th class="wppm_table_header"><?php echo esc_html_e('No. of tasks','taskbuilder'); ?></th>
226 <th class="wppm_table_header"></th>
227 </tr>
228 <tbody>
229 <?php
230 $total_projects=0;
231 $users = array();
232 if(!empty($wppm_fillter)){
233 foreach( $wppm_fillter as $project ){
234 $total_projects++;
235 $status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id=$project->status" );
236 $users = explode(",",$project->users);
237 if(isset($project->cat_id)){
238 $category = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_categories where id=$project->cat_id" );
239 }
240 if(isset($project->id)){
241 if($current_user->has_cap('manage_options')){
242 $no_of_tasks = $wpdb->get_var("SELECT count(*) FROM {$wpdb->prefix}wppm_task WHERE project=$project->id ");
243 }else{
244 $query =("SELECT count(*) FROM
245 ( SELECT Task.*
246 FROM {$wpdb->prefix}wppm_task AS Task
247 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
248 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
249 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON proj.id = proj_meta.project_id
250 where Task.project = $project->id AND ((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$current_user->ID') OR (proj_users.user_id = '$current_user->ID' AND proj_users.role_id = 1 ) OR (proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1)) Group by Task.id ) AS Task");
251 $no_of_tasks = $wpdb->get_var($query);
252 }
253 }
254 if($wppm_project_time == 1){
255 $proj_start_date = $project->start_date;
256 $proj_end_date = $project->end_date;
257 } elseif($wppm_project_time == 0){
258 $psDate = new DateTime($project->start_date);
259 $peDate = new DateTime($project->end_date);
260 $proj_start_date = $psDate->format('Y-m-d');
261 $proj_end_date = $peDate->format('Y-m-d');
262 }
263 ?>
264 <tr onclick="wppm_open_project(<?php echo esc_attr($project->id) ?>)">
265 <td><?php echo esc_html_e($project->project_name,'taskbuilder') ?></td>
266 <td><span class="wppm_td_project_status" style="background-color:<?php echo esc_attr($status->bg_color);?>; color: <?php echo esc_attr($status->color); ?>"><?php echo esc_html_e($status->name,'taskbuilder') ?></span></td>
267 <td>
268 <?php
269 $i=0;
270 if(!empty(array_filter($users))){
271 foreach($users as $user){
272 $i++;
273 if( $i <= 4 ){
274 $user_info = get_user_by('id', $user );
275 if(!empty($user_info)){
276 ?>
277 <a href="#" title="<?php echo esc_html_e($user_info->display_name) ?>">
278 <?php echo get_avatar($user_info->ID, 25, "mysteryman");?>
279 </a> <?php
280 }
281 }
282 }
283 } else{
284 _e('None','wp_projects');
285 }
286 if($i > 4){
287 ?>
288 <a href="#" class="wppm_avatar">
289 <span id="wppm_avatar" style="background-color:black;" class="avatar">+<?php echo esc_html($i-4) ?></span>
290 </a>
291 <?php } ?>
292 </td>
293 <td class="wppm_table_td"><?php echo isset($category) ? esc_html_e($category,'taskbuilder'): "" ?></td>
294 <?php if($wppm_default_project_date==1){ ?>
295 <td class="wppm_table_td"><?php echo isset($proj_start_date) ? esc_html($proj_start_date): "" ?></td>
296 <td class="wppm_table_td"><?php echo isset($proj_end_date) ? esc_html($proj_end_date):"" ?></td>
297 <?php } ?>
298 <td class="wppm_table_td"><?php echo isset($no_of_tasks) ? esc_html($no_of_tasks):"" ?></td>
299 <td class="wppm_delete_action">
300 <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_project_permission('delete_project',esc_attr($project->id))))? "display:inline":"display:none"; ?>
301 <span style="<?php echo esc_attr($style); ?>" onclick="wppm_delete_project(<?php echo esc_attr($project->id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
302 <?php ?>
303 </td>
304 </tr>
305 <?php
306 }
307 }
308 ?>
309 </tbody>
310 </table>
311 <?php
312 $total_pages=ceil($totalrows/$proj_per_page);
313 $current_page=$page_no+1;
314 $prev_page_no=$current_page-1;
315 $prev_class=($prev_page_no==0)?'disabled':'';
316 $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page;
317 $next_class=($total_pages==$current_page)?'disabled':'';
318 ?>
319 <div class="wppm_project_result" style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>"><?php echo esc_html_e('Your search request returned no results.','taskbuilder');?></div>
320 <hr style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>">
321 </div>
322 <div class="row wppm_proj_pagination_container">
323 <div class="col-sm-4">
324 <?php echo esc_html_e('Total:','taskbuilder'); ?>&nbsp;<?php echo esc_html($total_projects) ?>&nbsp;<?php echo esc_html_e('of','taskbuilder') ?>&nbsp;<?php echo esc_html($totalrows) ?>&nbsp;<?php echo esc_html_e('Projects','taskbuilder')?>
325 </div>
326 <div class="col-sm-4">
327 <div class="wppm_proj_pagination" style="<?php echo esc_attr($total_pages==0)? "display:none;":"display:flex;"?>">
328 <span class="wppm-pagination-txt">
329 <span><?php echo esc_html($current_page); ?>&nbsp;<?php echo esc_html_e('of','taskbuilder');?>&nbsp;<?php echo esc_html($total_pages); ?>&nbsp;<?php echo esc_html_e('Page','taskbuilder'); ?></span>
330 </span>
331 <span
332 <?php echo esc_html($prev_class) ?>
333 style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>">
334 <a class="wppm_pagination_prev" onclick="return wppm_load_prev_page(<?php echo esc_attr($prev_page_no) ?>,<?php echo esc_attr($page_no) ?>,'<?php echo esc_attr($sort_by)?>','<?php echo esc_attr($order) ?>');"><?php echo esc_html_e('PREV','taskbuilder');?></a>
335 </span>
336 <span
337 <?php echo esc_attr($next_class) ?>
338 style="<?php echo (isset($next_class) && $next_class == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
339 <a class="wppm_pagination_next" onclick="return wppm_load_next_page('<?php echo esc_attr($next_page_no) ?>','<?php echo esc_attr($page_no) ?>','<?php echo esc_attr($sort_by)?>','<?php echo esc_attr($order) ?>');"><?php echo esc_html_e('NEXT','taskbuilder');?></a>
340 </span>
341 </div>
342 </div>
343 </div>
344 </div>
345 </form>
346 <script type="text/javascript">
347 jQuery( document ).ready( function( jQuery ) {
348 jQuery("input[name='wppm_project_search_filter']").keypress(function(e) {
349 //Enter key
350 if (e.which == 13) {
351 wppm_project_search_filter();
352 }
353 });
354 jQuery("#wppm_proj_name_th").hover(function(){
355 jQuery('#wppm_chevron_sort_up_project_name_img').show();
356 jQuery('#wppm_chevron_sort_down_project_name_img').hide();
357 });
358 jQuery("#wppm_project_status_th").hover(function(){
359 jQuery('#wppm_chevron_sort_up_project_status_img').show();
360 jQuery('#wppm_chevron_sort_down_project_status_img').hide();
361 });
362 jQuery("#wppm_project_category_th").hover(function(){
363 jQuery('#wppm_chevron_sort_up_project_cat_img').show();
364 jQuery('#wppm_chevron_sort_down_project_cat_img').hide();
365 });
366 jQuery("#wppm_project_start_date_th").hover(function(){
367 jQuery('#wppm_chevron_sort_up_project_start_date_img').show();
368 jQuery('#wppm_chevron_sort_down_project_start_date_img').hide();
369 });
370 jQuery("#wppm_project_end_date_th").hover(function(){
371 jQuery('#wppm_chevron_sort_up_project_end_date_img').show();
372 jQuery('#wppm_chevron_sort_down_project_end_date_img').hide();
373 });
374 jQuery(".wppm_delete_action").on("click", function(e){
375 e.preventDefault();
376 return false;
377 });
378
379 jQuery('#wppm_project_list_frm').on('submit', function (e) {
380 var dataform = new FormData(jQuery('#wppm_project_list_frm')[0]);
381 jQuery.ajax({
382 url: wppm_admin.ajax_url,
383 type: 'POST',
384 data: dataform,
385 processData: false,
386 contentType: false,
387 success: function () {
388 alert('form was submitted');
389 }
390 });
391 });
392 });
393 </script>
394 <?php
395 add_action('wp_footer', 'wppm_page_inline_script', 999999999999999999);
396 do_action('wppm_after_shortcode_loaded');
397 if(!function_exists('wppm_page_inline_script')) {
398 function wppm_page_inline_script() { ?>
399 <script type="text/javascript">
400 jQuery( document ).ready( function( jQuery ) {
401 wppm_get_project_list();
402 });
403 </script>
404 <?php }
405 }
406 ?>