PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 3.0.0
Taskbuilder – Project Management & Task Management Tool With Kanban Board v3.0.0
6.0.5 6.0.2 6.0.3 6.0.4 6.0.1 6.0.0 5.0.8 5.0.9 4.0.9 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 All 57 releases
← All changes | includes/admin/projects/projects_list.php +197 -55 1.0.33.0.0 View file →
@@ -4,59 +4,116 @@
4 4 }
5 5 global $wpdb,$wppmfunction,$current_user;
6 6 $status = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses" );
7 7 $categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories" );
8 +$appearance_settings = get_option("wppm-ap-project-list");
8 9 $proj_per_page = 20;
9 10 $page_no = (isset($_POST['page_no'])) ? intval(sanitize_text_field($_POST['page_no'])): '0';
10 11 $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : '';
12 +$order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :"ASC";
13 +$sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):"project_name";
14 +$filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : "all";
15 +$current_date = date('Y-m-d');
16 +$wppm_pl_filter = "1=1";
17 +$filters = array(
18 + 'sort_by' => $sort_by,
19 + 'order' => $order,
20 + 'search' => $search_tag,
21 + 'filter'=>$filter_by
22 +);
23 +$pl_filters = isset( $_COOKIE['wppm_proj_filters'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['wppm_proj_filters'] ) ) : $filters;
24 +if(!is_array($pl_filters)){
25 + $pl_filters = json_decode($pl_filters);
26 + $pl_filters_arr = (array) $pl_filters;
27 +} else{
28 + $pl_filters_arr = $filters;
29 +}
30 +$search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : $pl_filters_arr['search'];
31 +$order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :$pl_filters_arr['order'];
32 +$sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):$pl_filters_arr['sort_by'];
33 +$filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : $pl_filters_arr['filter'];
34 +if($sort_by == ""){
35 + $sort_by = 'project_name';
36 +}
37 +$filters = array(
38 + 'sort_by' => $sort_by,
39 + 'order' => $order,
40 + 'search'=>$search_tag,
41 + 'filter'=>$filter_by
42 +);
43 +setcookie('wppm_proj_filters',wp_json_encode( $filters ),time() + 3600);
44 +if($pl_filters_arr['sort_by']=='status'){
45 + $sort_by = 'proj_statuses.name';
46 +}
47 +if($pl_filters_arr['sort_by']=='category'){
48 + $sort_by = 'proj_categories.name';
49 +}
50 +if($pl_filters_arr['sort_by']=='start_date'){
51 + $sort_by = 'start_date';
52 +}
53 +if($pl_filters_arr['sort_by']=='end_date'){
54 + $sort_by = 'end_date';
55 +}
56 +if($sort_by=='category'){
57 + $sort_by = 'proj_categories.name';
58 +}
59 +if($filter_by=='completed'){
60 + $wppm_pl_filter = "status='4'";
61 +}elseif($filter_by=='overdue'){
62 + $wppm_pl_filter = "status!='4' AND (CAST(end_date AS DATE)) < '$current_date'";
63 +}elseif($filter_by == 'unassigned'){
64 + $wppm_pl_filter = "users=''";
65 +}elseif($filter_by == 'new'){
66 + $wppm_pl_filter = "status='1'";
67 +}elseif($filter_by == 'inprogress'){
68 + $wppm_pl_filter = "status='2'";
69 +}elseif($filter_by == 'hold'){
70 + $wppm_pl_filter = "status='3'";
71 +}elseif($filter_by == 'mine'){
72 + $wppm_pl_filter = "(FIND_IN_SET('$current_user->ID',users)>0)";
73 +}
11 74 $wppm_project_time = get_option('wppm_project_time');
75 +$wppm_default_project_date = get_option('wppm_default_project_date');
76 +$sort_by = apply_filters('wppm_project_list_sort_by_query',$sort_by);
77 +$order = apply_filters('wppm_project_list_order_query',$order);
78 +$search_tag_text = '%'.$search_tag.'%';
12 79 if(!empty($search_tag)){
13 80 $search_tag_text = '%'.$search_tag.'%';
81 + $query = ("SELECT Project.*
82 + FROM {$wpdb->prefix}wppm_project AS Project
83 + Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
84 + Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
85 + Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
86 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
87 + ");
14 88 if($current_user->has_cap('manage_options')){
15 - $query = ("SELECT Project.*
16 - FROM {$wpdb->prefix}wppm_project AS Project
17 - Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
18 - Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
19 - Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
20 - 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')
21 - Group by Project.id");
22 - $no_of_rows = ("SELECT count(*) FROM
23 - (SELECT Project.*
24 - FROM {$wpdb->prefix}wppm_project AS Project
25 - Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
26 - Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
27 - Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
28 - 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" );
89 + $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'))";
29 90 }else{
30 - $query = ("SELECT Project.*
31 - FROM {$wpdb->prefix}wppm_project AS Project
32 - Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
33 - Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
34 - Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
35 - 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)
36 - Group by Project.id");
37 - $no_of_rows = ("SELECT count(*) FROM
38 - (SELECT Project.*
39 - FROM {$wpdb->prefix}wppm_project AS Project
40 - Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
41 - Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
42 - Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
43 - 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" );
91 + $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))";
44 92 }
45 93 }else{
94 + if($sort_by=='project_name'|| $sort_by=='start_date' || $sort_by=='end_date'){
95 + $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
96 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
97 + ");
98 + } else{
99 + $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
100 + Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
101 + Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
102 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
103 + ");
104 + }
46 105 if($current_user->has_cap('manage_options')){
47 - $query = ( "SELECT * FROM {$wpdb->prefix}wppm_project" );
48 - $no_of_rows = ( "SELECT count(*) FROM {$wpdb->prefix}wppm_project" );
106 + $where = " where $wppm_pl_filter";
49 107 }else{
50 - $query = ( "SELECT * FROM {$wpdb->prefix}wppm_project
51 - where (FIND_IN_SET('$current_user->ID',users)>0)
52 - ");
53 - $no_of_rows = ( "SELECT count(*) FROM {$wpdb->prefix}wppm_project
54 - where (FIND_IN_SET('$current_user->ID',users)>0)
55 - ");
108 + $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)))";
56 109 }
57 110 }
58 -$no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows);
111 +$no_of_rows = ( "SELECT count(*) FROM ($query");
112 +$no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows,$wppm_pl_filter,$search_tag);
113 +$where = apply_filters('wppm_project_list_query_where',$where, $wppm_pl_filter,$search_tag);
114 +$query .= $where." Group by Project.id ORDER BY $sort_by $order";
115 +$no_of_rows .= $where." Group by Project.id) AS Project";
59 116 $totalrows = $wpdb->get_var( $no_of_rows );
60 117 $query = apply_filters('wppm_project_list_query',$query);
61 118 $limit_start=$page_no*$proj_per_page;
62 119 $limit="\n LIMIT ".$limit_start.",".$proj_per_page." ";
@@ -78,19 +135,64 @@
78 135 <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">
79 136 <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) : "" ?>">
80 137 </div>
81 138 </div>
139 + <div class="row">
140 + <div class="col-sm-6" id="wppm_project_filter_container">
141 + <div class="wppm-filter-item">
142 + <label for="wppm_project_filter"> <?php echo esc_html_e('Filter','taskbuilder');?></label>
143 + <select id="wppm_project_filter" name="wppm_project_filter" onchange="wppm_apply_project_filter()">
144 + <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
145 + <option value="new" <?php echo ($filter_by == "new")? 'selected':""?>><?php echo esc_html_e('New','taskbuilder');?></option>
146 + <option value="inprogress" <?php echo ($filter_by == "inprogress")? 'selected':""?>><?php echo esc_html_e('In Progress','taskbuilder');?></option>
147 + <option value="hold" <?php echo ($filter_by == "hold")? 'selected':""?>><?php echo esc_html_e('Hold','taskbuilder');?></option>
148 + <option value="completed" <?php echo ($filter_by == "completed")? 'selected':""?>><?php echo esc_html_e('Completed','taskbuilder');?></option>
149 + <option value="mine" <?php echo ($filter_by == "mine")? 'selected':""?>><?php echo esc_html_e('Mine','taskbuilder');?></option>
150 + <option value="unassigned" <?php echo ($filter_by == "unassigned")? 'selected':""?>><?php echo esc_html_e('Unassigned','taskbuilder');?></option>
151 + <option value="overdue" <?php echo ($filter_by == "overdue")? 'selected':""?>><?php echo esc_html_e('Overdue','taskbuilder');?></option>
152 + </select>
153 + </div>
154 + <div class="wppm_display_submit">
155 + <div class="wppm-filter-actions">
156 + <span class="wppm-link" onclick="wppm_pl_reset_filter()"> <?php echo esc_html_e('Reset','taskbuilder');?></span>
157 + </div>
158 + </div>
159 + </div>
160 + </div>
82 161 <div class="table-responsive">
83 162 <table id="wppm_project_table" class="wppm_table table">
84 163 <tr>
85 - <th class="wppm_table_header"><?php echo esc_html_e('Project','taskbuilder'); ?></th>
86 - <th class="wppm_table_header"><?php echo esc_html_e('Status','taskbuilder'); ?></th>
87 - <th class="wppm_table_header"><?php echo esc_html_e('Users','taskbuilder'); ?></th>
88 - <th class="wppm_table_header"><?php echo esc_html_e('Category','taskbuilder'); ?></th>
89 - <th class="wppm_table_header" ><?php echo esc_html_e('Start Date','taskbuilder'); ?></th>
90 - <th class="wppm_table_header"><?php echo esc_html_e('End Date','taskbuilder'); ?></th>
91 - <th class="wppm_table_header"><?php echo esc_html_e('No. of tasks','taskbuilder'); ?></th>
92 - <th class="wppm_table_header"></th>
164 + <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
165 + <span id="wppm_proj_name_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Project','taskbuilder'); ?></span>
166 + <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">
167 + <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">
168 + </th>
169 + <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
170 + <span id="wppm_project_status_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder'); ?></span>
171 + <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">
172 + <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">
173 + </th>
174 + <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
175 + <span id="wppm_proj_list_users_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Users','taskbuilder'); ?></span></th>
176 + <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
177 + <span id="wppm_project_category_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Category','taskbuilder'); ?></span>
178 + <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">
179 + <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">
180 + </th>
181 + <?php if($wppm_default_project_date==1){ ?>
182 + <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
183 + <span id="wppm_project_start_date_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Start Date','taskbuilder'); ?></span>
184 + <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">
185 + <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">
186 + </th>
187 + <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
188 + <span id="wppm_project_end_date_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('End Date','taskbuilder'); ?></span>
189 + <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">
190 + <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">
191 + </th>
192 + <?php } ?>
193 + <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>"><span style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('No. of tasks','taskbuilder'); ?></span></th>
194 + <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>"></th>
93 195 </tr>
94 196 <tbody>
95 197 <?php
96 198 $total_projects=0;
@@ -111,9 +213,10 @@
111 213 ( SELECT Task.*
112 214 FROM {$wpdb->prefix}wppm_task AS Task
113 215 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
114 216 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
115 - 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");
217 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON proj.id = proj_meta.project_id
218 + 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");
116 219 $no_of_tasks = $wpdb->get_var($query);
117 220 }
118 221 }
119 222 if($wppm_project_time == 1){
@@ -119,12 +222,12 @@
119 222 if($wppm_project_time == 1){
120 223 $proj_start_date = $project->start_date;
121 224 $proj_end_date = $project->end_date;
122 225 } elseif($wppm_project_time == 0){
123 - $psDate = new DateTime($project->start_date);
124 - $peDate = new DateTime($project->end_date);
125 - $proj_start_date = $psDate->format('Y-m-d');
126 - $proj_end_date = $peDate->format('Y-m-d');
226 + $psDate = new DateTime($project->start_date);
227 + $peDate = new DateTime($project->end_date);
228 + $proj_start_date = $psDate->format('Y-m-d');
229 + $proj_end_date = $peDate->format('Y-m-d');
127 230 }
128 231 ?>
129 232 <tr onclick="wppm_open_project(<?php echo esc_attr($project->id) ?>)">
130 233 <td><?php echo esc_html_e($project->project_name,'taskbuilder') ?></td>
@@ -155,10 +258,13 @@
155 258 </a>
156 259 <?php } ?>
157 260 </td>
158 261 <td class="wppm_table_td"><?php echo isset($category) ? esc_html_e($category,'taskbuilder'): "" ?></td>
159 - <td class="wppm_table_td"><?php echo isset($proj_start_date) ? esc_html($proj_start_date): "" ?></td>
160 - <td class="wppm_table_td"><?php echo isset($proj_end_date) ? esc_html($proj_end_date):"" ?></td>
262 + <?php if($wppm_default_project_date==1){ ?>
263 + <td class="wppm_table_td"><?php echo isset($proj_start_date) ? esc_html($proj_start_date): "" ?></td>
264 + <?php $style = ($project->status!=4 && $proj_end_date < $current_date) ? "color:#FF0000":"color:#2C3E50"; ?>
265 + <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>
266 + <?php } ?>
161 267 <td class="wppm_table_td"><?php echo isset($no_of_tasks) ? esc_html($no_of_tasks):"" ?></td>
162 268 <td class="wppm_delete_action">
163 269 <?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"; ?>
164 270 <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>
@@ -193,14 +299,14 @@
193 299 </span>
194 300 <span
195 301 <?php echo esc_html($prev_class) ?>
196 302 style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>">
197 - <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>
303 + <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>
198 304 </span>
199 305 <span
200 306 <?php echo esc_attr($next_class) ?>
201 307 style="<?php echo (isset($next_class) && $next_class == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
202 - <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>
308 + <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>
203 309 </span>
204 310 </div>
205 311 </div>
206 312 </div>
@@ -205,8 +311,24 @@
205 311 </div>
206 312 </div>
207 313 </div>
208 314 </form>
315 +<style>
316 + #wppm_project_table tr:nth-child(even) td{
317 + background-color:<?php echo esc_attr($appearance_settings['list-item-even-background-color'])?>!important;
318 + color:<?php echo esc_attr($appearance_settings['list-item-even-text-color'])?>!important;
319 + }
320 + #wppm_project_table tr:nth-child(odd) td{
321 + background-color:<?php echo esc_attr($appearance_settings['list-item-odd-background-color'])?>!important;
322 + color:<?php echo esc_attr($appearance_settings['list-item-odd-text-color'])?>!important;
323 + }
324 + #wppm_project_table tr:hover td{
325 + background-color:<?php echo esc_attr($appearance_settings['list-item-hover-background-color'])?>!important;
326 + }
327 + #wppm_project_table tr:hover td{
328 + color: <?php echo esc_attr($appearance_settings['list-item-hover-text-color'])?>!important;
329 + }
330 +</style>
209 331 <script type="text/javascript">
210 332 jQuery( document ).ready( function( jQuery ) {
211 333 jQuery("input[name='wppm_project_search_filter']").keypress(function(e) {
212 334 //Enter key
@@ -213,8 +335,28 @@
213 335 if (e.which == 13) {
214 336 wppm_project_search_filter();
215 337 }
216 338 });
339 + jQuery("#wppm_proj_name_th").hover(function(){
340 + jQuery('#wppm_chevron_sort_up_project_name_img').show();
341 + jQuery('#wppm_chevron_sort_down_project_name_img').hide();
342 + });
343 + jQuery("#wppm_project_status_th").hover(function(){
344 + jQuery('#wppm_chevron_sort_up_project_status_img').show();
345 + jQuery('#wppm_chevron_sort_down_project_status_img').hide();
346 + });
347 + jQuery("#wppm_project_category_th").hover(function(){
348 + jQuery('#wppm_chevron_sort_up_project_cat_img').show();
349 + jQuery('#wppm_chevron_sort_down_project_cat_img').hide();
350 + });
351 + jQuery("#wppm_project_start_date_th").hover(function(){
352 + jQuery('#wppm_chevron_sort_up_project_start_date_img').show();
353 + jQuery('#wppm_chevron_sort_down_project_start_date_img').hide();
354 + });
355 + jQuery("#wppm_project_end_date_th").hover(function(){
356 + jQuery('#wppm_chevron_sort_up_project_end_date_img').show();
357 + jQuery('#wppm_chevron_sort_down_project_end_date_img').hide();
358 + });
217 359 jQuery(".wppm_delete_action").on("click", function(e){
218 360 e.preventDefault();
219 361 return false;
220 362 });
@@ -234,9 +376,9 @@
234 376 });
235 377 });
236 378 </script>
237 379 <?php
238 -add_action('wp_footer', 'wppm_page_inline_script', 99999999999999999999);
380 +add_action('wp_footer', 'wppm_page_inline_script', 999999999999999999);
239 381 do_action('wppm_after_shortcode_loaded');
240 382 if(!function_exists('wppm_page_inline_script')) {
241 383 function wppm_page_inline_script() { ?>
242 384 <script type="text/javascript">