PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 5.0.2
Taskbuilder – Project Management & Task Management Tool With Kanban Board v5.0.2
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 / tasks / wppm_tasks_list.php

wppm_tasks_list.php in Taskbuilder – Project Management & Task Management Tool With Kanban Board 5.0.2, at includes/admin/tasks/wppm_tasks_list.php

783 lines 50.5 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 $current_user,$wpdb,$wppmfunction;
6 $task_per_page = 20;
7 $page_no = isset($_POST['page_no']) ? intval(sanitize_text_field($_POST['page_no'])): '0';
8 $search_tag = isset($_POST['task_search']) ? sanitize_text_field($_POST['task_search']) : '';
9 $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :"ASC";
10 $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):"task_name";
11 $filter_by = isset($_POST['wppm_task_filter']) ? sanitize_text_field($_POST['wppm_task_filter']) : "all";
12 $proj_filter = isset($_POST['wppm_proj_filter']) ? sanitize_text_field($_POST['wppm_proj_filter']) : "0";
13 $proj_attr = isset($_POST['wppm_project_attr']) ? sanitize_text_field($_POST['wppm_project_attr']):"";
14 $public_projects = isset($_POST['public_projects']) ? sanitize_text_field($_POST['public_projects']):"0";
15 $page = isset($_POST['page']) ? sanitize_text_field($_POST['page']):"";
16 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
17 $wppm_create_tasks_coworkers_permission = get_option('wppm_allow_coworkers_create_task');
18 $orderby_proj_sql = esc_sql(sanitize_sql_orderby( "project_name" ));
19 $wppm_date_setting = get_option('wppm_date_setting');
20 $wppm_hide_completed_status_task = get_option('wppm_hide_completed_status_task');
21 $wppm_hide_task_statuses_from_frontend = get_option('wppm_hide_task_statuses_from_frontend');
22 if(!empty($wppm_hide_task_statuses_from_frontend)){
23 $wppm_hide_task_statuses_from_frontend = explode(",",$wppm_hide_task_statuses_from_frontend);
24 } else {
25 $wppm_hide_task_statuses_from_frontend = '';
26 }
27 $proj_attr = esc_sql($proj_attr);
28 $is_frontend = 0;
29 if(!empty($proj_attr )){
30 $wppm_proj_attr = ' AND (proj.project_name = "'.$proj_attr.'")';
31 }else{
32 $wppm_proj_attr = '';
33 }
34 $current_date = date('Y-m-d');
35 $current_date = esc_sql($current_date );
36 $cu_id = esc_sql($current_user->ID);
37 $archived_where = "";
38 if ( isset($page) && $page === 'wppm-archived-tasks' ) {
39 $archived_where = " AND is_archived = 1";
40 }
41 if( isset($page) && $page === 'wppm-tasks'){
42 $archived_where = " AND is_archived = 0";
43 }
44 $wppm_task_time = get_option('wppm_task_time');
45 $query = ("SELECT proj.*
46 FROM {$wpdb->prefix}wppm_project AS proj
47 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON proj.id = proj_meta.project_id");
48 if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
49 if(!empty($proj_attr )){
50 $where = " where project_name = '".$proj_attr."' Group by proj.id ORDER BY ".$orderby_proj_sql;
51 }else{
52 if(!empty($public_projects)){
53 $where = " where proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1 Group by proj.id ORDER BY ".$orderby_proj_sql;
54 }else{
55 $where = " Group by proj.id ORDER BY ".$orderby_proj_sql;
56 }
57 }
58 }else{
59 if(!empty($public_projects)){
60 $where = " where (proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) $wppm_proj_attr Group by proj.id ORDER BY $orderby_proj_sql";
61 }
62 else{
63 $where = " where ((FIND_IN_SET('$current_user->ID',proj.users)) OR (proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) OR ( proj.created_by='$cu_id')) $wppm_proj_attr Group by proj.id ORDER BY $orderby_proj_sql";
64 }
65 }
66 $where = apply_filters('wppm_project_filter_in_task_list_where',$where);
67 $query.= $where;
68 $projects = $wpdb->get_results($query);
69 $appearance_settings = get_option("wppm-ap-task-list");
70 $filters = array(
71 'sort_by' => $sort_by,
72 'order' => $order,
73 'search' => $search_tag,
74 'filter'=>$filter_by,
75 'proj_filter' =>$proj_filter
76 );
77 $tl_filters = isset( $_COOKIE['wppm_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_filters'] ) ) : $filters;
78 if(!is_array($tl_filters)){
79 $tl_filters = json_decode($tl_filters);
80 $tl_filters_arr = (array) $tl_filters;
81 } else{
82 $tl_filters_arr = $filters;
83 }
84 $wppm_tl_filter = "1=1";
85 $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :$tl_filters_arr['order'];
86 $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):$tl_filters_arr['sort_by'];
87 $search_tag = isset($_POST['task_search']) ? sanitize_text_field($_POST['task_search']) : $tl_filters_arr['search'];
88 $filter_by = isset($_POST['wppm_task_filter']) ? sanitize_text_field($_POST['wppm_task_filter']) : $tl_filters_arr['filter'];
89 $proj_filter = isset($_POST['wppm_proj_filter']) ? sanitize_text_field($_POST['wppm_proj_filter']) : $tl_filters_arr['proj_filter'];
90 $proj_filter = esc_sql($proj_filter);
91 if($sort_by == ""){
92 $sort_by = 'task_name';
93 }
94 $filters = array(
95 'sort_by' => $sort_by,
96 'order' => $order,
97 'search'=>$search_tag,
98 'filter'=>$filter_by,
99 'proj_filter'=>$proj_filter
100 );
101 setcookie('wppm_filters',wp_json_encode( $filters ),time() + 3600);
102
103 if($tl_filters_arr['sort_by']=='project'){
104 $sort_by = 'proj.project_name';
105 }
106 if($tl_filters_arr['sort_by']=='start_date'){
107 $sort_by = 'Task.start_date';
108 }
109 if($tl_filters_arr['sort_by']=='end_date'){
110 $sort_by = 'Task.end_date';
111 }
112 if($tl_filters_arr['sort_by']=='status'){
113 $sort_by = 'task_statuses.name';
114 }
115 if($tl_filters_arr['sort_by']=='priority'){
116 $sort_by='task_priorities.name';
117 }
118 if($filter_by=='all'){
119 if($wppm_hide_completed_status_task == 0){
120 $wppm_tl_filter = "Task.status!='4'";
121 }
122 }
123 if($filter_by=='4'){
124 $wppm_tl_filter = "Task.status='4'";
125 }elseif($filter_by=='overdue'){
126 $wppm_tl_filter = "Task.status!='4' AND (CAST(Task.end_date AS DATE)) < '$current_date'";
127 }elseif($filter_by == 'unassigned'){
128 $wppm_tl_filter = "Task.users=''";
129 }elseif($filter_by == '1'){
130 $wppm_tl_filter = "Task.status='1'";
131 }elseif($filter_by == '2'){
132 $wppm_tl_filter = "Task.status='2'";
133 }elseif($filter_by == '3'){
134 $wppm_tl_filter = "Task.status='3'";
135 }elseif($filter_by == 'mine'){
136 $wppm_tl_filter = "(FIND_IN_SET('$current_user->ID',Task.users)>0)";
137 }elseif($filter_by == 'archived'){
138 $wppm_tl_filter = "Task.is_archived = 1";
139 }
140
141 if(!empty($wppm_hide_task_statuses_from_frontend) && is_array($wppm_hide_task_statuses_from_frontend) && ((isset($_POST['is_frontend'])) && (sanitize_text_field($_POST['is_frontend'])==1))){
142 foreach($wppm_hide_task_statuses_from_frontend as $status){
143 $wppm_tl_filter .= " AND Task.status != '$status'";
144 }
145 }
146 if($proj_filter!=0){
147 $wppm_task_by_proj_filter = "Task.project = '$proj_filter'";
148 }else{
149 $wppm_task_by_proj_filter ="1=1";
150 }
151 $wppm_default_task_date = get_option('wppm_default_task_date');
152 $search_tag_text = '%'.$wpdb->esc_like($search_tag).'%';
153 if(!empty($search_tag)){
154 $search_tag_text = '%'.$wpdb->esc_like($search_tag).'%';
155 $query = ("SELECT Task.*
156 FROM {$wpdb->prefix}wppm_task AS Task
157 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
158 Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id
159 Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id
160 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
161 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.id,Task.users)>0) AND user.display_name LIKE '$search_tag_text'
162 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id");
163 }
164 else{
165 if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
166 if($sort_by=='task_name'|| $sort_by=='start_date' || $sort_by=='end_date'){
167 $query = ( "SELECT Task.* FROM {$wpdb->prefix}wppm_task AS Task
168 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
169 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id
170 ");
171 } else{
172 $query = ( "SELECT Task.* FROM {$wpdb->prefix}wppm_task AS Task
173 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
174 Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id
175 Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id
176 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id
177 ");
178 }
179 }else{
180 $query = ( "SELECT Task.*
181 FROM {$wpdb->prefix}wppm_task AS Task
182 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
183 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
184 Left join {$wpdb->prefix}wppm_task_statuses task_statuses ON Task.status = task_statuses.id
185 Left join {$wpdb->prefix}wppm_task_priorities task_priorities ON Task.priority = task_priorities.id
186 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Task.project = proj_meta.project_id
187 ");
188 }
189 }
190 $no_of_rows = ( "SELECT count(*) FROM ($query");
191 if(!empty($search_tag )){
192 if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
193 if(!empty($public_projects)){
194 $where = " where (proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) AND $wppm_tl_filter AND $wppm_task_by_proj_filter AND (Task.task_name LIKE '$search_tag_text' OR proj.project_name LIKE '$search_tag_text' OR task_statuses.name LIKE '$search_tag_text' OR task_priorities.name LIKE '$search_tag_text' OR user.display_name LIKE '$search_tag_text') $wppm_proj_attr ";
195 }else{
196 $where = " where $wppm_tl_filter AND $wppm_task_by_proj_filter AND (Task.task_name LIKE '$search_tag_text' OR proj.project_name LIKE '$search_tag_text' OR task_statuses.name LIKE '$search_tag_text' OR task_priorities.name LIKE '$search_tag_text' OR user.display_name LIKE '$search_tag_text') $wppm_proj_attr ";
197 }
198 } else{
199 if(!empty($public_projects)){
200 $where = " where (proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) AND $wppm_tl_filter AND $wppm_task_by_proj_filter AND (((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$cu_id') OR (proj_users.user_id = '$cu_id' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',proj.users)>0)) OR (Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) OR (proj.created_by='$cu_id' AND (FIND_IN_SET('$current_user->ID',proj.users)>0))) AND (Task.task_name LIKE '$search_tag_text' OR proj.project_name LIKE '$search_tag_text' OR task_statuses.name LIKE '$search_tag_text' OR task_priorities.name LIKE '$search_tag_text' OR user.display_name LIKE '$search_tag_text')) $wppm_proj_attr";
201 }else{
202 $where = " where $wppm_tl_filter AND $wppm_task_by_proj_filter AND (((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$cu_id') OR (proj_users.user_id = '$cu_id' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',proj.users)>0)) OR (Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) OR (proj.created_by='$cu_id' AND (FIND_IN_SET('$current_user->ID',proj.users)>0))) AND (Task.task_name LIKE '$search_tag_text' OR proj.project_name LIKE '$search_tag_text' OR task_statuses.name LIKE '$search_tag_text' OR task_priorities.name LIKE '$search_tag_text' OR user.display_name LIKE '$search_tag_text')) $wppm_proj_attr";
203 }
204 }
205 }else{
206 if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
207 if(!empty($public_projects)){
208 $where = " where (proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) AND $wppm_tl_filter AND $wppm_task_by_proj_filter $wppm_proj_attr";
209 }else{
210 $where = " where $wppm_tl_filter AND $wppm_task_by_proj_filter $wppm_proj_attr";
211 }
212 } else{
213 if(!empty($public_projects)){
214 $where = " where (proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) AND $wppm_tl_filter AND $wppm_task_by_proj_filter $wppm_proj_attr";
215 }else{
216 $where = " where $wppm_tl_filter AND $wppm_task_by_proj_filter AND ((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$cu_id') OR (proj_users.user_id = '$cu_id' AND proj_users.role_id = 1 AND (FIND_IN_SET('$current_user->ID',proj.users)>0)) OR (Task.project = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) OR (proj.created_by='$cu_id' AND (FIND_IN_SET('$current_user->ID',proj.users)>0))) $wppm_proj_attr";
217 }
218 }
219 }
220 $query = apply_filters('wppm_task_list_list_view_query',$query,$search_tag_text);
221 $no_of_rows= apply_filters('wppm_task_list_number_of_rows_query',$no_of_rows,$search_tag_text);
222 $where = apply_filters('wppm_task_list_query_where',$where, $wppm_tl_filter,$search_tag_text);
223 if($filter_by != 'archived'){
224 $where .= $archived_where;
225 }
226 $no_of_rows_where = $where." Group by Task.id) AS Task";
227 $no_of_rows .= $no_of_rows_where;
228 $no_of_rows = apply_filters('wppm_task_list_no_of_rows',$no_of_rows,$wppm_tl_filter,$search_tag_text);
229 $totalrows = $wpdb->get_var($no_of_rows);
230 $sort_by = esc_sql($sort_by);
231 $order = esc_sql($order);
232 $query .= $where." Group by Task.id ORDER BY ".$sort_by." ".$order."";
233 $query = apply_filters('wppm_task_list_query',$query);
234 $limit_start=$page_no*$task_per_page;
235 $limit="\n LIMIT ".$limit_start.",".$task_per_page." ";
236 $task_id_array = array();
237 $query = $query.$limit;
238 $wppm_task_fillter = $wpdb->get_results($query);
239 $flag = false;
240 $project_creator = $wpdb->get_var("SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = '$cu_id'");
241 if(!empty($wppm_task_fillter)){
242 foreach($wppm_task_fillter as $key_filter=>$val_filter){
243 $val_array = (array) $val_filter;
244 $tusers = $val_array['users'];
245 $tusers_arr = explode(',',$tusers);
246 $tproject_id = esc_sql($val_array['project']);
247 if(!empty($tusers) && in_array($current_user->ID,$tusers_arr)){
248 $project_user_role = $wpdb->get_var("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$tproject_id' AND user_id = '$cu_id'");
249 $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = '$tproject_id'");
250 $project_users_arr = explode(',',(string)$project_users);
251 if(((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr))){
252 $flag= true;
253 break;
254 }
255 }
256 }
257 }
258 if(($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',0) || ($flag==true) || ($project_creator!="")) && (isset($page) && $page != 'wppm-archived-tasks' )){
259 $style = "display:inline;";
260 }else{
261 $style = "display:none;";
262 }
263 $style = apply_filters('wppm_tl_add_new_task_btn_style',$style);
264 if($current_user->has_cap('manage_options') || $wppm_current_user_capability == ('wppm_admin') || ($flag==true) || ($wppmfunction->has_permission('change_task_status',0))!="" || ($project_creator!="")){
265 $cs_style = "display:flex;";
266 }else{
267 $cs_style = "display:none;";
268 }
269 if ( isset($page) && $page === 'wppm-archived-tasks' ) {
270 $ar_filter_style = "display:none;";
271 } else {
272 $ar_filter_style = "display:flex;";
273 }
274 $todo_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_task_statuses where id='".esc_sql(1)."'" );
275 $inp_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_task_statuses where id='".esc_sql(2)."'" );
276 $hold_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_task_statuses where id='".esc_sql(3)."'" );
277 $completed_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_task_statuses where id='".esc_sql(4)."'" );
278 $todo_status_style = (!empty($todo_status_name))? "display:inline" :"display:none;";
279 $inp_status_style = (!empty($inp_status_name))? "display:inline" :"display:none;";
280 $hold_status_style = (!empty($hold_status_name))? "display:inline" :"display:none;";
281 $completed_status_style = (!empty($completed_status_name))? "display:inline" :"display:none;";
282 if( isset($page) && $page === 'wppm-tasks'){
283 $arch_filter_style = "display:inline;";
284 }else{
285 $arch_filter_style = "display:none;";
286 }
287 ?>
288 <form id="wppm_task_list_frm">
289 <div id="wppm_task_list_container" class="wppm_bootstrap">
290 <div class="row">
291 <div class="col-sm-12" id="wppm_heading_inline">
292 <span class="wppm-heading-inline"><?php echo (isset($page) && $page === 'wppm-archived-tasks' ) ? esc_html_e('Archived Tasks','taskbuilder'): esc_html_e('Tasks','taskbuilder');?> </span>
293 <span class="wppm-add-new-btn btn-primary" id="wppm_add_new_task_btn_tl" style="background-color:<?php echo esc_attr($appearance_settings['list-header-button-background-color'])?>;color:<?php echo esc_attr($appearance_settings['list-header-button-text-color'])?>;<?php echo esc_attr($style)?>;" onclick="wppm_add_new_task()"><img class="wppm_add_new_task_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus_icon.svg'); ?>" alt="add_icon"><?php echo esc_html_e('Add New','taskbuilder');?></span>
294 </div>
295 </div>
296 <div style="display:flex;justify-content:space-between;margin-top:20px;flex-wrap: wrap;">
297 <div style="display:flex;flex-wrap: wrap;min-width: 0; max-width: 100%; ">
298 <div id="wppm_task_filter_container">
299 <div class="wppm-bulk-actions"style="margin-left: -14px !important;">
300 <button
301 id="wppm-task-bulk-actions-btn"
302 class="wppm-button small secondary"
303 type="button"
304 style="display:none;margin: 14px -20px 0px 22px; padding:14px;font: 13px Helvetica Neue, Arial, Helvetica, sans-serif !important;"
305 data-popover="wppm-task-bulk-actions">
306 <?php esc_attr_e( 'Bulk Actions ', 'taskbuilder' ); ?><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/wppm_chevron_down_icon.svg'); ?>" alt="chevron_down">
307 </button>
308 <div id="wppm-task-bulk-actions" class="gpopover wppm-popover-menu wppm-proj-bulk-actions">
309 <div class="wppm-popover-menu-item" style="<?php echo esc_attr($cs_style);?><?php echo esc_attr($ar_filter_style);?>" onclick="wppm_bulk_change_task_status('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_task_status' ) ); ?>');">
310 <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/gps-navigation.svg'); ?>" alt="task_status"><?php echo esc_html_e('Change Status','taskbuilder'); ?></span>
311 </div>
312 <div class="wppm-popover-menu-item" style="<?php echo esc_attr($ar_filter_style);?>" onclick="wppm_bulk_change_task_priority('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_task_priority' ) ); ?>');">
313 <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/priority_up_icon.svg'); ?>" alt="priority"><?php echo esc_html_e('Change Priority','taskbuilder'); ?></span>
314 </div>
315 <div class="wppm-popover-menu-item" onclick="wppm_bulk_delete_task('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_delete_task' ) ); ?>');">
316 <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash-alt-solid.svg'); ?>" alt="delete"><?php echo esc_html_e('Delete Tasks','taskbuilder'); ?></span>
317 </div>
318 </div>
319 <div class="wppm-filter-item">
320 <label for="wppm_task_filter" style="margin-left:20px;"> <?php echo esc_html_e('Filter','taskbuilder');?></label>
321 <select id="wppm_task_filter" name="wppm_task_filter" onchange="wppm_apply_task_filter('<?php echo esc_attr($page); ?>')" style="margin-left:20px;">
322 <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
323 <option value="1" style="<?php echo esc_attr($todo_status_style); ?>" <?php echo ($filter_by == "1")? 'selected':""?>><?php echo esc_html_e($todo_status_name,'taskbuilder');?></option>
324 <option value="2" style="<?php echo esc_attr($inp_status_style); ?>" <?php echo ($filter_by == "2")? 'selected':""?>><?php echo esc_html_e($inp_status_name,'taskbuilder');?></option>
325 <option value="3" style="<?php echo esc_attr($hold_status_style); ?>" <?php echo ($filter_by == "3")? 'selected':""?>><?php echo esc_html_e($hold_status_name,'taskbuilder');?></option>
326 <option value="4" style="<?php echo esc_attr($completed_status_style); ?>" <?php echo ($filter_by == "4")? 'selected':""?>><?php echo esc_html_e($completed_status_name,'taskbuilder');?></option>
327 <option value="mine" <?php echo ($filter_by == "mine")? 'selected':""?>><?php echo esc_html_e('Mine','taskbuilder');?></option>
328 <option value="unassigned" <?php echo ($filter_by == "unassigned")? 'selected':""?>><?php echo esc_html_e('Unassigned','taskbuilder');?></option>
329 <option value="overdue" <?php echo ($filter_by == "overdue")? 'selected':""?>><?php echo esc_html_e('Overdue','taskbuilder');?></option>
330 <option value="archived" style="<?php echo esc_attr($arch_filter_style); ?>" <?php echo ($filter_by == "archived")? 'selected':""?>><?php echo esc_html_e('Archived','taskbuilder');?></option>
331 </select>
332 </div>
333 </div>
334 </div>
335 <div class="wppm-filter-item wppm_project_autocomplete_container" style="margin: 0 0 0 28px;">
336 <label for="wppm_task_list_proj_filter">
337 <?php echo esc_html_e('Project','taskbuilder');?>
338 </label><br>
339 <select searchable="search here" onchange="wppm_tasks_by_select_project('<?php echo esc_attr($page); ?>')" class="form-control" size="40" name="wppm_task_list_proj_filter" id="wppm_task_list_proj_filter" data-width="100%" style="width: 100%!important;">
340 <option value="0" <?php echo ($proj_filter == 0)? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
341 <?php
342 if(!empty($projects)){
343 foreach($projects as $proj) {
344 ?>
345 <option value="<?php echo esc_attr($proj->id)?>" <?php echo ($proj_filter == $proj->id)? 'selected':""?>><?php echo esc_html_e($proj->project_name,'taskbuilder');?></option>
346 <?php }
347 } ?>
348 </select>
349 </div>
350 <div class="wppm_display_submit" style="margin: 0 0 -5px 10px;">
351 <div class="wppm-filter-actions">
352 <span class="wppm-link" onclick="wppm_tl_reset_filter('<?php echo esc_attr($page); ?>')"> <?php echo esc_html_e('Reset','taskbuilder');?></span>
353 </div>
354 </div>
355 </div>
356 <div id="wppm_task_search" style="display:flex;justify-content:flex-end;">
357 <img width="25px" height="15" class="wppm_task_search_filter_img" style="position: relative;top: 10px;left: 30px;" height="15px" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/search.svg'); ?>" alt="search">
358 <input type="search" id="wppm_task_search_filter" style="margin-right:10px;" name="wppm_task_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) : "" ?>">
359 </div>
360 </div>
361 </div>
362 <div style="display:flex;justify-content:flex-end;margin-right: 10px;">
363 <span id="wppm_grid_view_btn" onclick="wppm_view_task_search_filter(<?php echo esc_attr($page_no)?>,'<?php echo esc_attr($page)?>')"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/grid_view.svg'); ?>" alt="grid_view"><span><?php echo esc_html_e('Grid view','taskbuilder');?></span></span>
364 </div>
365 </div>
366 <script>
367 jQuery('#wppm-more-actions-btn, #wppm-task-bulk-actions-btn').gpopover({width: 200});
368 </script>
369 <div id="wppm_task_table_container" class="wppm_task_table_container table-responsive" style="padding: 0 15px 15px 15px;">
370 <table id="wppm_task_table" class="wppm_table table">
371 <thead>
372 <tr>
373 <th style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>" onchange="wppm_task_bulk_select_change()">
374 <div class="checkbox-container">
375 <input id="wppm_task_bulk_select_option" class="wppm-bulk-selector" type="checkbox" onchange="wppm_task_bulk_select_change();"/>
376 <label for="wppm_task_bulk_select_option"></label>
377 </div>
378 </th>
379 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
380 <div id="wppm_task_name_container">
381 <span id="wppm_task_name_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Task name','taskbuilder'); ?></span>
382 <img width="16" height="16" style = "<?php echo ($sort_by == 'task_name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('task_name','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_task_name_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
383 <img width="16" height="16" style = "<?php echo ($sort_by == 'task_name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('task_name','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_task_name_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
384 </div>
385 </th>
386 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
387 <span id="wppm_project_name_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Project','taskbuilder'); ?></span>
388 <img width="16" height="16" style = "<?php echo ($sort_by == 'proj.project_name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('project','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_list_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
389 <img width="16" height="16" style = "<?php echo ($sort_by == 'proj.project_name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('project','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_list_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
390 </th>
391 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
392 <span id="wppm_status_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder'); ?></span>
393 <img width="16" height="16" style = "<?php echo ($sort_by == 'task_statuses.name' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('status','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_status_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
394 <img width="16" height="16" style = "<?php echo ($sort_by == 'task_statuses.name' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('status','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_status_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
395 </th>
396 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
397 <span id="wppm_priority_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Priority','taskbuilder'); ?></span>
398 <img width="16" height="16" style = "<?php echo ($sort_by == ('task_priorities.name') && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('priority','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_priority_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
399 <img width="16" height="16" style = "<?php echo ($sort_by == ('task_priorities.name') && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('priority','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_priority_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
400 </th>
401 <?php if($wppm_default_task_date == 1) { ?>
402 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
403 <span id="wppm_start_date_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Start date','taskbuilder'); ?></span>
404 <img width="16" height="16" style = "<?php echo ($sort_by == 'Task.start_date' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('start_date','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_start_date_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
405 <img width="16" height="16" style = "<?php echo ($sort_by == 'Task.start_date' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('start_date','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_start_date_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
406 </th>
407 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
408 <span id="wppm_end_date_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('End date','taskbuilder'); ?></span>
409 <img width="16" height="16" style = "<?php echo ($sort_by == 'Task.end_date' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('end_date','ASC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_up_end_date_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
410 <img width="16" height="16" style = "<?php echo ($sort_by == 'Task.end_date' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" onclick="wppm_sort_up_task_list('end_date','DESC','<?php echo esc_attr($page); ?>')" class="wppm_chevron_img" id="wppm_chevron_sort_down_end_date_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
411 </th>
412 <?php } ?>
413 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
414 <span style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Assign To','taskbuilder'); ?></span>
415 </th>
416 <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
417 <span style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Progress','taskbuilder'); ?></span>
418 </th>
419 <?php do_action('wppm_table_header');?>
420 </tr>
421 </thead>
422 <tbody>
423 <?php
424 $task_index = 0;
425 if(!empty($wppm_task_fillter)){
426 foreach($wppm_task_fillter as $task) {
427 $task_id = esc_sql($task->id);
428 $checklists = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_checklist where task_id = '$task_id'" );
429 if(!empty($task)){
430 $taskdata = $wppmfunction->get_task($task->id);
431 $project_data = $wppmfunction->get_project($task->project);
432 $task_index++;
433 $total=$wpdb->get_var("SELECT COUNT(Items.id) AS check_id
434 FROM {$wpdb->prefix}wppm_checklist_items AS Items
435 Left join {$wpdb->prefix}wppm_checklist checklist ON Items.checklist_id = checklist.id
436 WHERE checklist.task_id = '$task_id'");
437 $total_checked_items=$wpdb->get_var("SELECT COUNT(Items.id) AS check_id
438 FROM {$wpdb->prefix}wppm_checklist_items AS Items
439 Left join {$wpdb->prefix}wppm_checklist checklist ON Items.checklist_id = checklist.id
440 WHERE checklist.task_id = '$task_id' AND Items.checked=1");
441
442 if(isset($task->status)){
443 $tstatus = esc_sql($task->status);
444 $status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id = '$tstatus'" );
445 }
446 if(!empty($task->priority)){
447 $tpriority = esc_sql($task->priority);
448 $priority = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id ='$tpriority' " );
449 }
450 if(isset($task->project)){
451 $tproj = esc_sql($task->project);
452 $project = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project where id = '$tproj'" );
453 }
454 if($wppm_task_time == 1){
455 $tsDate = new DateTime($task->start_date);
456 $teDate = new DateTime($task->end_date);
457 if($task->start_date=='0000-00-00 00:00:00'){
458 if($wppm_date_setting=='Y-m-d H:i:s'){
459 $task_start_date = '0000-00-00 00:00:00';
460 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
461 $task_start_date = '00-00-0000 00:00:00';
462 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
463 $task_start_date = '00-00-0000 00:00:00';
464 }else{
465 $task_start_date = '0000-00-00 00:00:00';
466 }
467 }if($task->end_date=='0000-00-00 00:00:00'){
468 if($wppm_date_setting=='Y-m-d H:i:s'){
469 $task_end_date = '0000-00-00 00:00:00';
470 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
471 $task_end_date = '00-00-0000 00:00:00';
472 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
473 $task_end_date = '00-00-0000 00:00:00';
474 }else{
475 $task_end_date = '0000-00-00 00:00:00';
476 }
477 }if($task->start_date!='0000-00-00 00:00:00'){
478 if(!empty($wppm_date_setting)){
479 $task_start_date = $tsDate->format($wppm_date_setting);
480 } else {
481 $task_start_date = isset($task->start_date)? $task->start_date:"";
482 }
483 }if($task->end_date!='0000-00-00 00:00:00'){
484 if(!empty($wppm_date_setting)){
485 $task_end_date = $teDate->format($wppm_date_setting);
486 }else{
487 $task_end_date = isset($task->end_date) ? $task->end_date: "" ;
488 }
489
490 }
491 } elseif($wppm_task_time == 0){
492 $tsDate = new DateTime($task->start_date);
493 $teDate = new DateTime($task->end_date);
494 $task_start_date = $tsDate->format('Y-m-d');
495 $task_end_date = $teDate->format('Y-m-d');
496 if($task->start_date=='0000-00-00 00:00:00'){
497 if($wppm_date_setting=='Y-m-d H:i:s'){
498 $task_start_date = '0000-00-00';
499 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
500 $task_start_date = '00-00-0000';
501 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
502 $task_start_date = '00-00-0000';
503 }else{
504 $task_start_date = '0000-00-00';
505 }
506 }
507 if($task->end_date=='0000-00-00 00:00:00'){
508 if($wppm_date_setting=='Y-m-d H:i:s'){
509 $task_end_date = '0000-00-00';
510 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
511 $task_end_date = '00-00-0000';
512 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
513 $task_end_date = '00-00-0000';
514 }else{
515 $task_end_date = '0000-00-00';
516 }
517 }
518 if($task->start_date!='0000-00-00 00:00:00'){
519 if($wppm_date_setting=='Y-m-d H:i:s'){
520 $task_start_date = $tsDate->format('Y-m-d');
521 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
522 $task_start_date = $tsDate->format('d-m-Y');
523 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
524 $task_start_date = $tsDate->format('m-d-Y');
525 }else{
526 $task_start_date = $tsDate->format('Y-m-d');
527 }
528 }
529 if($task->end_date!='0000-00-00 00:00:00'){
530 if($wppm_date_setting=='Y-m-d H:i:s'){
531 $task_end_date = $teDate->format('Y-m-d');
532 }elseif($wppm_date_setting=='d-m-Y H:i:s'){
533 $task_end_date = $teDate->format('d-m-Y');
534 }elseif($wppm_date_setting=='m-d-Y H:i:s'){
535 $task_end_date = $teDate->format('m-d-Y');
536 }else{
537 $task_end_date = $teDate->format('Y-m-d');
538 }
539 }
540 }
541 $url = $wppmfunction->get_task_url( $task->id, $is_frontend );
542 ?>
543 <tr onclick= "if(link)wppm_tl_handle_click(event, <?php echo esc_attr($task->id) ?>, '<?php echo esc_url( $url ); ?>')" >
544 <td class="bulk-selector" onmouseover="link=false;" onmouseout="link=true;">
545 <div class="wppm-pl-item-selector">
546 <div class="checkbox-container">
547 <input id="wppm_bulk_select_<?php echo esc_attr($task->id) ?>" class="wppm-task-bulk-select" type="checkbox" onchange="wppm_bulk_task_item_select_change();" value="<?php echo esc_attr( $task->id ); ?>"/>
548 <label for="wppm_bulk_select_<?php echo esc_attr($task->id) ?>"></label>
549 </div>
550 </div>
551 </td>
552 <td onmouseover="link=true;">
553 <?php echo esc_html_e($task->task_name,'taskbuilder') ?>
554 </td>
555 <td onmouseover="link=true;">
556 <?php if(!empty($project->project_name)){
557 echo esc_html_e($project->project_name,'taskbuilder');
558 }
559 ?>
560 </td>
561 <td onmouseover="link=true;">
562 <?php if(!empty($task->status)){ ?>
563 <span class="wppm_td_task_status" style="background-color:<?php echo (isset($status->bg_color))? esc_attr($status->bg_color):"";?>; color: <?php echo (isset($status->color))? esc_attr($status->color):""; ?>"><?php echo (isset($status->name))? esc_html_e($status->name,'taskbuilder'):"" ?></span>
564 <?php } ?>
565 </td>
566 <td onmouseover="link=true;">
567 <?php if(!empty($task->priority)){ ?>
568 <span class ="wppm_td_task_priority" style="background-color:<?php echo (isset($priority->bg_color))? esc_attr($priority->bg_color):"" ;?>; color: <?php echo (isset($priority->color))? esc_attr($priority->color):""; ?>"><?php echo (isset($priority->name))? esc_html_e($priority->name,'taskbuilder'):"" ?></span>
569 <?php } ?>
570 </td>
571 <?php if($wppm_default_task_date == 1) { ?>
572 <td onmouseover="link=true;">
573 <?php if(!empty($task_start_date)){ ?>
574 <?php echo esc_html_e($task_start_date,'taskbuilder');
575 } ?>
576 </td>
577 <td onmouseover="link=true;">
578 <?php if(!empty($task_end_date) && ($task->status!=4 && $task_end_date < $current_date && $task_end_date != '0000-00-00 00:00:00' && $task_end_date != '00-00-0000 00:00:00' && $task_end_date != '00-00-0000' && $task_end_date != '0000-00-00')){
579 $style = "color:#FF0000";
580 } else{
581 $style = "color:#2C3E50";
582 }?>
583 <span style="<?php echo esc_attr($style); ?>"><?php echo esc_html_e($task_end_date,'taskbuilder');?></span>
584 </td>
585 <?php } ?>
586 </td>
587 <td onmouseover="link=true;" style="text-align:center;">
588 <?php
589 $i=0;
590 if(!empty($project_data['users'])){
591 $proj_users = explode(',',$project_data['users']);
592 }
593 if(!empty($task->users)){
594 $users = explode(",",$task->users);
595 foreach($users as $user){
596 if( (!empty($proj_users)) && (in_array($user,$proj_users))){
597 $i++;
598 if( $i <= 4 ){
599 $userdata = get_userdata( $user );
600 if(!empty($userdata)){
601 ?>
602 <a href="#" title="<?php echo esc_attr($userdata->display_name); ?>">
603 <?php echo get_avatar($userdata->ID, 25, "mysteryman")?>
604 </a> <?php
605 }
606 }
607 }
608 }
609 }
610 if($i > 4){
611 ?>
612 <a href="#" class="wppm_avatar">
613 <span id="wppm_avatar" style="background-color:black;" class="avatar">+<?php echo esc_html($i-4) ?></span>
614 </a>
615 <?php } ?>
616 <?php
617 if($i==0){
618 echo esc_html_e('None','taskbuilder');
619 } ?>
620 </td>
621 <td onmouseover="link=true;">
622 <?php
623 $completion = 0;
624 if ($total != 0 && $total != NULL) {
625 $completion = intval($total_checked_items/$total*100);
626 }
627 echo esc_html($completion).'%';
628 ?>
629 </td>
630 <?php do_action('wppm_table_column');?>
631 </tr>
632 <?php }
633 }
634 }
635 ?>
636 </tbody>
637 </table>
638 <script>
639 function wppm_tl_handle_click(event, id, url) {
640 if ( ( event.ctrlKey || event.metaKey ) && url ) {
641 window.open(url, '_blank');
642 } else {
643 wppm_open_task(id);
644 }
645 }
646 </script>
647 <?php
648 $current_page=$page_no+1;
649 $total_pages=ceil($totalrows/$task_per_page);
650 $prev_page_no=$current_page-1;
651 $prev_class=($prev_page_no==0)?'disabled':'';
652 $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page;
653 $next_class=($total_pages==$current_page)?'disabled':'';
654 ?>
655 <div class="row" style="background-color:#ffffff;">
656 <div class="col-sm-12">
657 <div class="wppm_task_result" style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>"><?php _e('Your search request returned no results.','taskbuilder');?></div>
658 <hr style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>">
659 </div>
660 <div>
661 </div>
662 </div>
663 <div class="row wppm_task_pagination_container">
664 <div class="col-sm-4">
665 <?php echo esc_html_e('Total:','taskbuilder'); ?>&nbsp;<?php echo esc_attr($task_index) ?>&nbsp;<?php echo esc_html_e('of','taskbuilder') ?>&nbsp;<?php echo esc_html($totalrows) ?>&nbsp;<?php echo esc_html_e('Tasks','taskbuilder')?>
666 </div>
667 <div class="wppm_task_pagination col-sm-4" style="<?php echo esc_attr($total_pages==0)? "display:none;":"display:flex;"?>">
668 <span class="wppm-pagination-txt">
669 <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>
670 </span>
671 <span <?php echo esc_attr($prev_class) ?>
672 style="<?php echo (isset($prev_class) && esc_attr($prev_class)== 'disabled') ? 'display:none;':'display:block;'?>cursor:pointer;">
673 <a class="wppm_pagination_prev" onclick="return wppm_load_prev_task_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>
674 </span>
675 <span <?php echo esc_attr($next_class) ?>
676 style="<?php echo (isset($next_class) && esc_attr($next_class) == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
677 <a class="wppm_pagination_next" onclick="return wppm_load_next_task_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>
678 </span>
679 </div>
680 </div>
681 </form>
682 <style>
683 .select2-selection--single {
684 height: 30px!important;
685 }
686 .select2-dropdown:hover {
687 color: #23527c!important;;
688 }
689 .select2-results__options{
690 font:15px "Helvetica Neue",Arial,Helvetica,sans-serif !important;
691 margin: 0!important;
692 line-height: inherit!important;
693 }
694 .select2-selection__rendered{
695 font:15px "Helvetica Neue",Arial,Helvetica,sans-serif !important;
696 margin-top: 5px!important;
697 }
698 .select2-selection__rendered:hover{
699 color: #2271b1 !important;
700 }
701 .select2-container--default .select2-results__option--highlighted.select2-results__option--selectable{
702 background-color: #e85f08!important;
703 color: white !important;
704 }
705 .select2-container {
706 max-width: 150px !important;
707 min-width: 150px !important;
708 }
709 #wppm_task_filter{
710 min-height: 30px !important;
711 max-height: 35px !important;
712 }
713 #wppm_task_table tr:nth-child(even) td{
714 background-color:<?php echo esc_attr($appearance_settings['list-item-even-background-color'])?>;
715 color:<?php echo esc_attr($appearance_settings['list-item-even-text-color'])?>;
716 }
717 #wppm_task_table tr:nth-child(odd) td{
718 background-color:<?php echo esc_attr($appearance_settings['list-item-odd-background-color'])?>;
719 color:<?php echo esc_attr($appearance_settings['list-item-odd-text-color'])?>;
720 }
721 #wppm_task_table tr:hover td{
722 background-color:<?php echo esc_attr($appearance_settings['list-item-hover-background-color'])?>;
723 }
724 #wppm_task_table tr:hover td{
725 color: <?php echo esc_attr($appearance_settings['list-item-hover-text-color'])?>;
726 }
727 #wppm_add_new_task_btn_tl:hover{
728 background-color:<?php echo esc_attr($appearance_settings['list-header-button-hover-color'])?>!important;
729 }
730 </style>
731 <script type="text/javascript">
732 var link = true;
733 jQuery( document ).ready( function( jQuery ) {
734 jQuery("input[name='wppm_task_search_filter']").keypress(function(e) {
735 //Enter key
736 if (e.which == 13) {
737 wppm_task_search_filter('<?php echo esc_attr($page); ?>');
738 }
739 });
740 jQuery("#wppm_task_name_th").hover(function(){
741 jQuery('#wppm_chevron_sort_up_task_name_img').show();
742 jQuery('#wppm_chevron_sort_down_task_name_img').hide();
743 });
744 jQuery("#wppm_project_name_th").hover(function(){
745 jQuery('#wppm_chevron_sort_up_project_list_img').show();
746 jQuery('#wppm_chevron_sort_down_project_list_img').hide();
747 });
748 jQuery("#wppm_status_th").hover(function(){
749 jQuery('#wppm_chevron_sort_up_status_img').show();
750 jQuery('#wppm_chevron_sort_down_status_img').hide();
751 });
752 jQuery("#wppm_priority_th").hover(function(){
753 jQuery('#wppm_chevron_sort_up_priority_img').show();
754 jQuery('#wppm_chevron_sort_down_priority_img').hide();
755 });
756 jQuery("#wppm_start_date_th").hover(function(){
757 jQuery('#wppm_chevron_sort_up_start_date_img').show();
758 jQuery('#wppm_chevron_sort_down_start_date_img').hide();
759 });
760 jQuery("#wppm_end_date_th").hover(function(){
761 jQuery('#wppm_chevron_sort_up_end_date_img').show();
762 jQuery('#wppm_chevron_sort_down_end_date_img').hide();
763 });
764
765 })
766 jQuery('#wppm_task_list_proj_filter').select2({ dropdownAutoWidth: true, width: 'auto' });
767 jQuery('#wppm_task_list_proj_filter').val(<?php echo esc_attr($proj_filter) ?>);
768 /**
769 * Bulk item selector change
770 */
771 function wppm_bulk_task_item_select_change() {
772 jQuery("#wppm-task-bulk-actions-btn").show();
773 var items = jQuery(".wppm-task-bulk-select:checked");
774 var checked = items.length === 0 ? false : true;
775 if(checked){
776 jQuery(".wppm-bulk-selector").prop("checked", checked);
777 }else{
778 jQuery("#wppm-task-bulk-actions-btn").hide();
779 jQuery(".wppm-bulk-selector").prop("checked", false);
780 }
781 }
782 </script>
783