PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 2.0.8
Taskbuilder – Project Management & Task Management Tool With Kanban Board v2.0.8
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
← All changes | includes/admin/projects/projects_list.php +182 -48 1.0.12.0.8 View file →
@@ -7,55 +7,112 @@
7 7 $categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories" );
8 8 $proj_per_page = 20;
9 9 $page_no = (isset($_POST['page_no'])) ? intval(sanitize_text_field($_POST['page_no'])): '0';
10 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 +$sort_by = apply_filters('wppm_project_list_sort_by_query',$sort_by);
76 +$order = apply_filters('wppm_project_list_order_query',$order);
77 +$search_tag_text = '%'.$search_tag.'%';
11 78 if(!empty($search_tag)){
12 79 $search_tag_text = '%'.$search_tag.'%';
80 + $query = ("SELECT Project.*
81 + FROM {$wpdb->prefix}wppm_project AS Project
82 + Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
83 + Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
84 + Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
85 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
86 + ");
13 87 if($current_user->has_cap('manage_options')){
14 - $query = ("SELECT Project.*
15 - FROM {$wpdb->prefix}wppm_project AS Project
16 - Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
17 - Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
18 - Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
19 - where 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')
20 - Group by Project.id");
21 - $no_of_rows = ("SELECT count(*) FROM
22 - (SELECT Project.*
23 - FROM {$wpdb->prefix}wppm_project AS Project
24 - Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
25 - Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
26 - Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
27 - where 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" );
88 + $where = " 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'))";
28 89 }else{
29 - $query = ("SELECT Project.*
30 - FROM {$wpdb->prefix}wppm_project AS Project
31 - Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
32 - Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
33 - Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
34 - where (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)
35 - Group by Project.id");
36 - $no_of_rows = ("SELECT count(*) FROM
37 - (SELECT Project.*
38 - FROM {$wpdb->prefix}wppm_project AS Project
39 - Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
40 - Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
41 - Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
42 - where (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) Group by Project.id) AS Project" );
90 + $where = " 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))";
43 91 }
44 92 }else{
93 + if($sort_by=='project_name'|| $sort_by=='start_date' || $sort_by=='end_date'){
94 + $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
95 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
96 + ");
97 + } else{
98 + $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
99 + Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
100 + Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
101 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
102 + ");
103 + }
45 104 if($current_user->has_cap('manage_options')){
46 - $query = ( "SELECT * FROM {$wpdb->prefix}wppm_project" );
47 - $no_of_rows = ( "SELECT count(*) FROM {$wpdb->prefix}wppm_project" );
105 + $where = " where $wppm_pl_filter";
48 106 }else{
49 - $query = ( "SELECT * FROM {$wpdb->prefix}wppm_project
50 - where (FIND_IN_SET('$current_user->ID',users)>0)
51 - ");
52 - $no_of_rows = ( "SELECT count(*) FROM {$wpdb->prefix}wppm_project
53 - where (FIND_IN_SET('$current_user->ID',users)>0)
54 - ");
107 + $where = " 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)))";
55 108 }
56 109 }
57 -$no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows);
110 +$no_of_rows = ( "SELECT count(*) FROM ($query");
111 +$no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows,$wppm_pl_filter,$search_tag);
112 +$where = apply_filters('wppm_project_list_query_where',$where, $wppm_pl_filter,$search_tag);
113 +$query .= $where." Group by Project.id ORDER BY $sort_by $order";
114 +$no_of_rows .= $where." Group by Project.id) AS Project";
58 115 $totalrows = $wpdb->get_var( $no_of_rows );
59 116 $query = apply_filters('wppm_project_list_query',$query);
60 117 $limit_start=$page_no*$proj_per_page;
61 118 $limit="\n LIMIT ".$limit_start.",".$proj_per_page." ";
@@ -77,17 +134,61 @@
77 134 <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">
78 135 <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) : "" ?>">
79 136 </div>
80 137 </div>
138 + <div class="row">
139 + <div class="col-sm-6" id="wppm_project_filter_container">
140 + <div class="wppm-filter-item">
141 + <label for="wppm_project_filter"> <?php echo esc_html_e('Filter','taskbuilder');?></label>
142 + <select id="wppm_project_filter" name="wppm_project_filter" onchange="wppm_apply_project_filter()">
143 + <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
144 + <option value="new" <?php echo ($filter_by == "new")? 'selected':""?>><?php echo esc_html_e('New','taskbuilder');?></option>
145 + <option value="inprogress" <?php echo ($filter_by == "inprogress")? 'selected':""?>><?php echo esc_html_e('In Progress','taskbuilder');?></option>
146 + <option value="hold" <?php echo ($filter_by == "hold")? 'selected':""?>><?php echo esc_html_e('Hold','taskbuilder');?></option>
147 + <option value="completed" <?php echo ($filter_by == "completed")? 'selected':""?>><?php echo esc_html_e('Completed','taskbuilder');?></option>
148 + <option value="mine" <?php echo ($filter_by == "mine")? 'selected':""?>><?php echo esc_html_e('Mine','taskbuilder');?></option>
149 + <option value="unassigned" <?php echo ($filter_by == "unassigned")? 'selected':""?>><?php echo esc_html_e('Unassigned','taskbuilder');?></option>
150 + <option value="overdue" <?php echo ($filter_by == "overdue")? 'selected':""?>><?php echo esc_html_e('Overdue','taskbuilder');?></option>
151 + </select>
152 + </div>
153 + <div class="wppm_display_submit">
154 + <div class="wppm-filter-actions">
155 + <span class="wppm-link" onclick="wppm_pl_reset_filter()"> <?php echo esc_html_e('Reset','taskbuilder');?></span>
156 + </div>
157 + </div>
158 + </div>
159 + </div>
81 160 <div class="table-responsive">
82 161 <table id="wppm_project_table" class="wppm_table table">
83 162 <tr>
84 - <th class="wppm_table_header"><?php echo esc_html_e('Project','taskbuilder'); ?></th>
85 - <th class="wppm_table_header"><?php echo esc_html_e('Status','taskbuilder'); ?></th>
163 + <th class="wppm_table_header">
164 + <span id="wppm_proj_name_th"><?php echo esc_html_e('Project','taskbuilder'); ?></span>
165 + <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">
166 + <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">
167 + </th>
168 + <th class="wppm_table_header">
169 + <span id="wppm_project_status_th"><?php echo esc_html_e('Status','taskbuilder'); ?></span>
170 + <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">
171 + <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">
172 + </th>
86 173 <th class="wppm_table_header"><?php echo esc_html_e('Users','taskbuilder'); ?></th>
87 - <th class="wppm_table_header"><?php echo esc_html_e('Category','taskbuilder'); ?></th>
88 - <th class="wppm_table_header" ><?php echo esc_html_e('Start Date','taskbuilder'); ?></th>
89 - <th class="wppm_table_header"><?php echo esc_html_e('End Date','taskbuilder'); ?></th>
174 + <th class="wppm_table_header">
175 + <span id="wppm_project_category_th"><?php echo esc_html_e('Category','taskbuilder'); ?></span>
176 + <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">
177 + <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">
178 + </th>
179 + <?php if($wppm_default_project_date==1){ ?>
180 + <th class="wppm_table_header">
181 + <span id="wppm_project_start_date_th"><?php echo esc_html_e('Start Date','taskbuilder'); ?></span>
182 + <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">
183 + <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">
184 + </th>
185 + <th class="wppm_table_header">
186 + <span id="wppm_project_end_date_th"><?php echo esc_html_e('End Date','taskbuilder'); ?></span>
187 + <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">
188 + <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">
189 + </th>
190 + <?php } ?>
90 191 <th class="wppm_table_header"><?php echo esc_html_e('No. of tasks','taskbuilder'); ?></th>
91 192 <th class="wppm_table_header"></th>
92 193 </tr>
93 194 <tbody>
@@ -110,12 +211,22 @@
110 211 ( SELECT Task.*
111 212 FROM {$wpdb->prefix}wppm_task AS Task
112 213 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
113 214 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
114 - 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 ))Group by Task.id ) AS Task");
215 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON proj.id = proj_meta.project_id
216 + 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");
115 217 $no_of_tasks = $wpdb->get_var($query);
116 218 }
117 219 }
220 + if($wppm_project_time == 1){
221 + $proj_start_date = $project->start_date;
222 + $proj_end_date = $project->end_date;
223 + } elseif($wppm_project_time == 0){
224 + $psDate = new DateTime($project->start_date);
225 + $peDate = new DateTime($project->end_date);
226 + $proj_start_date = $psDate->format('Y-m-d');
227 + $proj_end_date = $peDate->format('Y-m-d');
228 + }
118 229 ?>
119 230 <tr onclick="wppm_open_project(<?php echo esc_attr($project->id) ?>)">
120 231 <td><?php echo esc_html_e($project->project_name,'taskbuilder') ?></td>
121 232 <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>
@@ -145,10 +256,13 @@
145 256 </a>
146 257 <?php } ?>
147 258 </td>
148 259 <td class="wppm_table_td"><?php echo isset($category) ? esc_html_e($category,'taskbuilder'): "" ?></td>
149 - <td class="wppm_table_td"><?php echo isset($project->start_date) ? esc_html($project->start_date): "" ?></td>
150 - <td class="wppm_table_td"><?php echo isset($project->end_date) ? esc_html($project->end_date):"" ?></td>
260 + <?php if($wppm_default_project_date==1){ ?>
261 + <td class="wppm_table_td"><?php echo isset($proj_start_date) ? esc_html($proj_start_date): "" ?></td>
262 + <?php $style = ($project->status!=4 && $proj_end_date < $current_date) ? "color:#FF0000":"color:#2C3E50"; ?>
263 + <td class="wppm_table_td"><span style="<?php echo esc_attr($style); ?>"><?php echo isset($proj_end_date) ? esc_html($proj_end_date):"" ?></td></span>
264 + <?php } ?>
151 265 <td class="wppm_table_td"><?php echo isset($no_of_tasks) ? esc_html($no_of_tasks):"" ?></td>
152 266 <td class="wppm_delete_action">
153 267 <?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"; ?>
154 268 <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>
@@ -183,14 +297,14 @@
183 297 </span>
184 298 <span
185 299 <?php echo esc_html($prev_class) ?>
186 300 style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>">
187 - <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_html_e('PREV','taskbuilder');?></a>
301 + <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>
188 302 </span>
189 303 <span
190 304 <?php echo esc_attr($next_class) ?>
191 305 style="<?php echo (isset($next_class) && $next_class == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
192 - <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($limit_start)?>);"><?php echo esc_html_e('NEXT','taskbuilder');?></a>
306 + <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>
193 307 </span>
194 308 </div>
195 309 </div>
196 310 </div>
@@ -203,8 +317,28 @@
203 317 if (e.which == 13) {
204 318 wppm_project_search_filter();
205 319 }
206 320 });
321 + jQuery("#wppm_proj_name_th").hover(function(){
322 + jQuery('#wppm_chevron_sort_up_project_name_img').show();
323 + jQuery('#wppm_chevron_sort_down_project_name_img').hide();
324 + });
325 + jQuery("#wppm_project_status_th").hover(function(){
326 + jQuery('#wppm_chevron_sort_up_project_status_img').show();
327 + jQuery('#wppm_chevron_sort_down_project_status_img').hide();
328 + });
329 + jQuery("#wppm_project_category_th").hover(function(){
330 + jQuery('#wppm_chevron_sort_up_project_cat_img').show();
331 + jQuery('#wppm_chevron_sort_down_project_cat_img').hide();
332 + });
333 + jQuery("#wppm_project_start_date_th").hover(function(){
334 + jQuery('#wppm_chevron_sort_up_project_start_date_img').show();
335 + jQuery('#wppm_chevron_sort_down_project_start_date_img').hide();
336 + });
337 + jQuery("#wppm_project_end_date_th").hover(function(){
338 + jQuery('#wppm_chevron_sort_up_project_end_date_img').show();
339 + jQuery('#wppm_chevron_sort_down_project_end_date_img').hide();
340 + });
207 341 jQuery(".wppm_delete_action").on("click", function(e){
208 342 e.preventDefault();
209 343 return false;
210 344 });
@@ -224,9 +358,9 @@
224 358 });
225 359 });
226 360 </script>
227 361 <?php
228 -add_action('wp_footer', 'wppm_page_inline_script', 99999999999999999999);
362 +add_action('wp_footer', 'wppm_page_inline_script', 999999999999999999);
229 363 do_action('wppm_after_shortcode_loaded');
230 364 if(!function_exists('wppm_page_inline_script')) {
231 365 function wppm_page_inline_script() { ?>
232 366 <script type="text/javascript">