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 +178 -399 5.0.32.0.8 View file →
@@ -4,12 +4,8 @@
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");
9 -$wppm_date_setting = get_option('wppm_date_setting');
10 -$wppm_deafault_time_duration_project = get_option('wppm_display_time_duration_project');
11 -$wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
12 8 $proj_per_page = 20;
13 9 $page_no = (isset($_POST['page_no'])) ? intval(sanitize_text_field($_POST['page_no'])): '0';
14 10 $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : '';
15 11 $order = isset($_POST['order']) ? sanitize_text_field($_POST['order']) :"ASC";
@@ -16,16 +12,8 @@
16 12 $sort_by = isset($_POST['sort_by']) ? sanitize_text_field($_POST['sort_by']):"project_name";
17 13 $filter_by = isset($_POST['wppm_project_filter']) ? sanitize_text_field($_POST['wppm_project_filter']) : "all";
18 14 $current_date = date('Y-m-d');
19 15 $wppm_pl_filter = "1=1";
20 -$wppm_hide_completed_status_proj = get_option('wppm_hide_completed_status_proj');
21 -$cu_id = esc_sql($current_user->ID);
22 -$wppm_hide_proj_statuses_from_frontend = get_option('wppm_hide_proj_statuses_from_frontend');
23 -if(!empty($wppm_hide_proj_statuses_from_frontend)){
24 - $wppm_hide_proj_statuses_from_frontend = explode(",",$wppm_hide_proj_statuses_from_frontend);
25 -} else {
26 - $wppm_hide_proj_statuses_from_frontend = '';
27 -}
28 16 $filters = array(
29 17 'sort_by' => $sort_by,
30 18 'order' => $order,
31 19 'search' => $search_tag,
@@ -51,60 +39,45 @@
51 39 'search'=>$search_tag,
52 40 'filter'=>$filter_by
53 41 );
54 42 setcookie('wppm_proj_filters',wp_json_encode( $filters ),time() + 3600);
55 -
56 -$allowed_sort_by = [
57 - 'project_name' => 'project_name',
58 - 'status' => 'proj_statuses.name',
59 - 'category' => 'proj_categories.name',
60 - 'start_date' => 'start_date',
61 - 'end_date' => 'end_date',
62 - 'TIMESTAMPDIFF(SECOND, start_date, end_date)'=> 'TIMESTAMPDIFF(SECOND, start_date, end_date)'
63 -];
64 -// Resolve sort_by safely
65 -$sort_key = isset($pl_filters_arr['sort_by'])
66 - ? sanitize_text_field($pl_filters_arr['sort_by'])
67 - : 'project_name';
68 -
69 -$sort_by = $allowed_sort_by[$sort_key] ?? 'project_name';
70 -$order = ( isset($pl_filters_arr['order']) && strtoupper($pl_filters_arr['order']) === 'ASC' )
71 - ? 'ASC'
72 - : 'DESC';
73 -if($filter_by=='all'){
74 - if($wppm_hide_completed_status_proj == 0){
75 - $wppm_pl_filter = "status!='4'";
76 - }
43 +if($pl_filters_arr['sort_by']=='status'){
44 + $sort_by = 'proj_statuses.name';
77 45 }
78 -if($filter_by=='4'){
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'){
79 59 $wppm_pl_filter = "status='4'";
80 60 }elseif($filter_by=='overdue'){
81 61 $wppm_pl_filter = "status!='4' AND (CAST(end_date AS DATE)) < '$current_date'";
82 62 }elseif($filter_by == 'unassigned'){
83 63 $wppm_pl_filter = "users=''";
84 -}elseif($filter_by == '1'){
64 +}elseif($filter_by == 'new'){
85 65 $wppm_pl_filter = "status='1'";
86 -}elseif($filter_by == '2'){
66 +}elseif($filter_by == 'inprogress'){
87 67 $wppm_pl_filter = "status='2'";
88 -}elseif($filter_by == '3'){
68 +}elseif($filter_by == 'hold'){
89 69 $wppm_pl_filter = "status='3'";
90 70 }elseif($filter_by == 'mine'){
91 71 $wppm_pl_filter = "(FIND_IN_SET('$current_user->ID',users)>0)";
92 72 }
93 -
94 -if(!empty($wppm_hide_proj_statuses_from_frontend) && is_array($wppm_hide_proj_statuses_from_frontend) && ((isset($_POST['is_frontend'])) && (sanitize_text_field($_POST['is_frontend'])==1))){
95 - foreach($wppm_hide_proj_statuses_from_frontend as $status){
96 - $wppm_pl_filter .= " AND status != '$status'";
97 - }
98 -}
99 -
100 73 $wppm_project_time = get_option('wppm_project_time');
101 74 $wppm_default_project_date = get_option('wppm_default_project_date');
102 75 $sort_by = apply_filters('wppm_project_list_sort_by_query',$sort_by);
103 76 $order = apply_filters('wppm_project_list_order_query',$order);
104 -$search_tag_text = '%'.$wpdb->esc_like($search_tag).'%';
77 +$search_tag_text = '%'.$search_tag.'%';
105 78 if(!empty($search_tag)){
106 - $search_tag_text = '%'.$wpdb->esc_like($search_tag).'%';
79 + $search_tag_text = '%'.$search_tag.'%';
107 80 $query = ("SELECT Project.*
108 81 FROM {$wpdb->prefix}wppm_project AS Project
109 82 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
110 83 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
@@ -110,12 +83,12 @@
110 83 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
111 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')
112 85 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
113 86 ");
114 - if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
87 + if($current_user->has_cap('manage_options')){
115 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'))";
116 89 }else{
117 - $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) OR Project.created_by='$cu_id')";
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))";
118 91 }
119 92 }else{
120 93 if($sort_by=='project_name'|| $sort_by=='start_date' || $sort_by=='end_date'){
121 94 $query = ( "SELECT Project.* FROM {$wpdb->prefix}wppm_project AS Project
@@ -127,12 +100,12 @@
127 100 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
128 101 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Project.id = proj_meta.project_id
129 102 ");
130 103 }
131 - if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
104 + if($current_user->has_cap('manage_options')){
132 105 $where = " where $wppm_pl_filter";
133 106 }else{
134 - $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)) OR Project.created_by='$cu_id')";
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)))";
135 108 }
136 109 }
137 110 $no_of_rows = ( "SELECT count(*) FROM ($query");
138 111 $no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows,$wppm_pl_filter,$search_tag);
@@ -144,134 +117,82 @@
144 117 $limit_start=$page_no*$proj_per_page;
145 118 $limit="\n LIMIT ".$limit_start.",".$proj_per_page." ";
146 119 $query = $query.$limit;
147 120 $wppm_fillter = $wpdb->get_results($query);
148 -$new_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(1)."'" );
149 -$inp_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(2)."'" );
150 -$hold_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(3)."'" );
151 -$completed_status_name = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_statuses where id='".esc_sql(4)."'" );
152 -$new_style = (!empty($new_status_name))? "display:inline" :"display:none;";
153 -$inp_status_style = (!empty($inp_status_name))? "display:inline" :"display:none;";
154 -$hold_status_style = (!empty($hold_status_name))? "display:inline" :"display:none;";
155 -$complete_status_style = (!empty($completed_status_name))? "display:inline" :"display:none;";
156 121 ?>
157 122 <form id="wppm_project_list_frm">
158 - <div id="wppm-container">
159 - <div id="wppm_project_list_container" class="wppm_bootstrap">
160 - <div class="row">
161 - <div class="col-sm-12" id="wppm_heading_inline">
162 - <span class="wppm-heading-inline">
163 - <?php echo esc_html_e('Projects','taskbuilder');?>
164 - </span>
165 - <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin' ){ ?>
166 - <img width="25" height="30" id="wppm_add_new_project_btn" class="wppm_add_new_project_btn" onclick="wppm_add_new_project()" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/add.svg'); ?>" alt="add">
167 - <?php } ?>
123 + <div id="wppm_project_list_container" class="wppm_bootstrap">
124 + <div class="row">
125 + <div class="col-sm-6" id="wppm_heading_inline">
126 + <span class="wppm-heading-inline">
127 + <?php echo esc_html_e('Projects','taskbuilder');?>
128 + </span>
129 + <?php if($current_user->has_cap('manage_options')){ ?>
130 + <img width="25" height="30" id="wppm_add_new_project_btn" class="wppm_add_new_project_btn" onclick="wppm_add_new_project()" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/add.svg'); ?>" alt="add">
131 + <?php } ?>
132 + </div>
133 + <div id="wppm_project_and_task_search" class="col-sm-6">
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">
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) : "" ?>">
136 + </div>
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>
168 152 </div>
169 - </div>
170 - <div style="display:flex;justify-content:space-between;margin-top:20px;flex-wrap: wrap;">
171 - <div style="display:flex;flex-wrap: wrap;">
172 - <div id="wppm_project_filter_container">
173 - <div class="wppm-bulk-actions" style="margin-bottom: 10px;">
174 - <button
175 - id="wppm-bulk-actions-btn"
176 - class="wppm-button small secondary"
177 - type="button"
178 - style="display:none;padding:14px;font: 13px Helvetica Neue, Arial, Helvetica, sans-serif !important"
179 - data-popover="wppm-bulk-actions">
180 - <?php esc_attr_e( 'Bulk Actions ', 'taskbuilder' ); ?><img style="color:#313042" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/wppm_chevron_down_icon.svg'); ?>" alt="chevron_down">
181 - </button>
182 - <div id="wppm-bulk-actions" class="gpopover wppm-popover-menu wppm-proj-bulk-actions">
183 - <div class="wppm-popover-menu-item" onclick="wppm_bulk_change_status('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_status' ) ); ?>');">
184 - <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/gps-navigation.svg'); ?>" alt="status"><?php echo esc_html_e('Change Status','taskbuilder'); ?></span>
185 - </div>
186 - <div class="wppm-popover-menu-item" onclick="wppm_bulk_change_category('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_change_category' ) ); ?>');">
187 - <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/tags.svg'); ?>" alt="category"><?php echo esc_html_e('Change Category','taskbuilder'); ?></span>
188 - </div>
189 - <div class="wppm-popover-menu-item" onclick="wppm_bulk_assign_users('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_assign_users' ) ); ?>');">
190 - <span><img style="margin-right:5px;" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/users.svg'); ?>" alt="users"><?php echo esc_html_e('Assign Co-workers','taskbuilder'); ?></span>
191 - </div>
192 - <div class="wppm-popover-menu-item" onclick="wppm_bulk_delete_project('<?php echo esc_attr( wp_create_nonce( 'wppm_bulk_assign_users' ) ); ?>');">
193 - <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','taskbuilder'); ?></span>
194 - </div>
195 - </div>
196 - </div>
197 - <div class="wppm-filter-item">
198 - <label for="wppm_project_filter"> <?php echo esc_html_e('Filter','taskbuilder');?></label>
199 - <select id="wppm_project_filter" name="wppm_project_filter" onchange="wppm_apply_project_filter()">
200 - <option value="all"<?php echo ($filter_by == "all")? 'selected':""?>><?php echo esc_html_e('All','taskbuilder');?></option>
201 - <option style="<?php echo $new_style ?>" value="1" <?php echo ($filter_by == "1")? 'selected':""?>><?php echo esc_html_e($new_status_name,'taskbuilder');?></option>
202 - <option style="<?php echo $inp_status_style ?>" value="2" <?php echo ($filter_by == "2")? 'selected':""?>><?php echo esc_html_e($inp_status_name,'taskbuilder');?></option>
203 - <option style="<?php echo $hold_status_style ?>" value="3" <?php echo ($filter_by == "3")? 'selected':""?>><?php echo esc_html_e($hold_status_name,'taskbuilder');?></option>
204 - <option style="<?php echo $complete_status_style ?>" value="4" <?php echo ($filter_by == "4")? 'selected':""?>><?php echo esc_html_e($completed_status_name,'taskbuilder');?></option>
205 - <option value="mine" <?php echo ($filter_by == "mine")? 'selected':""?>><?php echo esc_html_e('Mine','taskbuilder');?></option>
206 - <option value="unassigned" <?php echo ($filter_by == "unassigned")? 'selected':""?>><?php echo esc_html_e('Unassigned','taskbuilder');?></option>
207 - <option value="overdue" <?php echo ($filter_by == "overdue")? 'selected':""?>><?php echo esc_html_e('Overdue','taskbuilder');?></option>
208 - </select>
209 - </div>
210 - <div class="wppm_display_submit">
211 - <div class="wppm-filter-actions">
212 - <span class="wppm-link" onclick="wppm_pl_reset_filter()"> <?php echo esc_html_e('Reset','taskbuilder');?></span>
213 - </div>
214 - </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>
215 156 </div>
216 157 </div>
217 - <div id="wppm_project_and_task_search" style="display:flex;justify-content:flex-end;">
218 - <img width="25px" id="wppm_project_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">
219 - <input type="search" id="wppm_project_search_filter" style="margin-right:10px;" 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) : "" ?>">
220 - </div>
221 158 </div>
222 - <script>
223 - jQuery('#wppm-more-actions-btn, #wppm-bulk-actions-btn').gpopover({width: 200});
224 - </script>
225 - <div class="table-responsive">
226 - <table id="wppm_project_table" class="wppm_table table">
227 - <tr>
228 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>" onchange="wppm_bulk_select_change()">
229 - <div class="checkbox-container">
230 - <input id="wppm_bulk_select_option" class="wppm-bulk-selector" type="checkbox" onchange="wppm_bulk_select_change();"/>
231 - <label for="wppm_bulk_select_option"></label>
232 - </div>
233 - </th>
234 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
235 - <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>
236 - <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">
237 - <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">
238 - </th>
239 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
240 - <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>
241 - <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">
242 - <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">
243 - </th>
244 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
245 - <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>
246 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
247 - <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>
248 - <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">
249 - <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">
250 - </th>
251 - <?php if($wppm_default_project_date==1 && $wppm_deafault_time_duration_project==0){ ?>
252 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
253 - <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>
254 - <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">
255 - <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">
256 - </th>
257 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
258 - <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>
259 - <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">
260 - <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">
261 - </th>
262 - <?php }
263 - if( $wppm_deafault_time_duration_project==1){ ?>
264 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>">
265 - <span id="wppm_project_time_duration_th" style="color:<?php echo esc_attr($appearance_settings['list-header-text-color'])?>"><?php echo esc_html_e('Duration','taskbuilder'); ?></span>
266 - <img width="16" height="16" onclick="wppm_sort_up_project_list('TIMESTAMPDIFF(SECOND, start_date, end_date)','ASC')" style = "<?php echo ($sort_by == 'TIMESTAMPDIFF(SECOND, start_date, end_date)' && $order == 'DESC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_up_project_time_duration_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_up_icon.svg'); ?>" alt="chevron_sort_up_icon">
267 - <img width="16" height="16" onclick="wppm_sort_up_project_list('TIMESTAMPDIFF(SECOND, start_date, end_date)','DESC')" style = "<?php echo ($sort_by == 'TIMESTAMPDIFF(SECOND, start_date, end_date)' && $order == 'ASC') ? 'display:inline': 'display:none;'?>" class="wppm_chevron_img" id="wppm_chevron_sort_down_project_time_duration_img" class="wppm_chevron_img" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/sort_down_icon.svg'); ?>" alt="chevron_sort_down_icon">
268 - </th>
269 - <?php }?>
270 - <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>
271 - <th class="wppm_table_header" style="background-color:<?php echo esc_attr($appearance_settings['list-header-background-color'])?>"></th>
272 - </tr>
273 - <tbody>
159 + </div>
160 + <div class="table-responsive">
161 + <table id="wppm_project_table" class="wppm_table table">
162 + <tr>
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>
173 + <th class="wppm_table_header"><?php echo esc_html_e('Users','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 } ?>
191 + <th class="wppm_table_header"><?php echo esc_html_e('No. of tasks','taskbuilder'); ?></th>
192 + <th class="wppm_table_header"></th>
193 + </tr>
194 + <tbody>
274 195 <?php
275 196 $total_projects=0;
276 197 $users = array();
277 198 if(!empty($wppm_fillter)){
@@ -276,21 +197,16 @@
276 197 $users = array();
277 198 if(!empty($wppm_fillter)){
278 199 foreach( $wppm_fillter as $project ){
279 200 $total_projects++;
280 - $proejctdata = $wppmfunction->get_project($project->id);
281 - $wppm_proj_duration = $wppmfunction->wppm_get_duration($project->start_date,$project->end_date);
282 - $pstatus= esc_sql($project->status);
283 - $status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id='$pstatus'" );
201 + $status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id=$project->status" );
284 202 $users = explode(",",$project->users);
285 - $pid= esc_sql($project->id);
286 203 if(isset($project->cat_id)){
287 - $pcat_id = esc_sql($project->cat_id);
288 - $category = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_categories where id='$pcat_id'" );
204 + $category = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_categories where id=$project->cat_id" );
289 205 }
290 206 if(isset($project->id)){
291 - if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'){
292 - $no_of_tasks = $wpdb->get_var("SELECT count(*) FROM {$wpdb->prefix}wppm_task WHERE project='$pid' ");
207 + if($current_user->has_cap('manage_options')){
208 + $no_of_tasks = $wpdb->get_var("SELECT count(*) FROM {$wpdb->prefix}wppm_task WHERE project=$project->id ");
293 209 }else{
294 210 $query =("SELECT count(*) FROM
295 211 ( SELECT Task.*
296 212 FROM {$wpdb->prefix}wppm_task AS Task
@@ -296,224 +212,105 @@
296 212 FROM {$wpdb->prefix}wppm_task AS Task
297 213 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
298 214 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
299 215 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON proj.id = proj_meta.project_id
300 - where Task.project = '$pid' 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 ) OR (proj.id = proj_meta.project_id AND proj_meta.meta_key='public_project' AND proj_meta.meta_value=1) OR ( Task.project = proj.id AND proj.created_by='$cu_id')) Group by Task.id ) AS Task");
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");
301 217 $no_of_tasks = $wpdb->get_var($query);
302 - }
303 - $no_of_tasks = apply_filters('wppm_no_of_task_proj_list_query',$no_of_tasks,$project->id);
304 218 }
305 - if($wppm_project_time == 1){
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){
306 224 $psDate = new DateTime($project->start_date);
307 225 $peDate = new DateTime($project->end_date);
308 - if($project->start_date=='0000-00-00 00:00:00'){
309 - if($wppm_date_setting=='Y-m-d H:i:s'){
310 - $proj_start_date = '0000-00-00 00:00:00';
311 - }elseif($wppm_date_setting=='d-m-Y H:i:s'){
312 - $proj_start_date = '00-00-0000 00:00:00';
313 - }elseif($wppm_date_setting=='m-d-Y H:i:s'){
314 - $proj_start_date = '00-00-0000 00:00:00';
315 - }else{
316 - $proj_start_date = '0000-00-00 00:00:00';
317 - }
318 - }if($project->end_date=='0000-00-00 00:00:00'){
319 - if($wppm_date_setting=='Y-m-d H:i:s'){
320 - $proj_end_date = '0000-00-00 00:00:00';
321 - }elseif($wppm_date_setting=='d-m-Y H:i:s'){
322 - $proj_end_date = '00-00-0000 00:00:00';
323 - }elseif($wppm_date_setting=='m-d-Y H:i:s'){
324 - $proj_end_date = '00-00-0000 00:00:00';
325 - }else{
326 - $proj_end_date = '0000-00-00 00:00:00';
327 - }
328 - }
329 - if($project->start_date!='0000-00-00 00:00:00'){
330 - if(!empty($wppm_date_setting)){
331 - $proj_start_date = $psDate->format($wppm_date_setting);
332 - }else{
333 - $proj_start_date = isset($project->start_date)? $project->start_date:"";
334 - }
335 - }
336 - if($project->end_date!='0000-00-00 00:00:00'){
337 - if(!empty($wppm_date_setting)){
338 - $proj_end_date = $peDate->format($wppm_date_setting);
339 - }else{
340 - $proj_end_date = isset($project->end_date) ? $project->end_date: "" ;
341 - }
342 - }
343 - } elseif($wppm_project_time == 0){
344 - $psDate = new DateTime($project->start_date);
345 - $peDate = new DateTime($project->end_date);
346 - $proj_start_date = $psDate->format('Y-m-d');
347 - $proj_end_date = $peDate->format('Y-m-d');
348 - if($project->start_date=='0000-00-00 00:00:00'){
349 - if($wppm_date_setting=='Y-m-d H:i:s'){
350 - $proj_start_date = '0000-00-00';
351 - }elseif($wppm_date_setting=='d-m-Y H:i:s'){
352 - $proj_start_date = '00-00-0000';
353 - }elseif($wppm_date_setting=='m-d-Y H:i:s'){
354 - $proj_start_date = '00-00-0000';
355 - }else{
356 - $proj_start_date = '0000-00-00';
357 - }
358 - }
359 - if($project->end_date=='0000-00-00 00:00:00'){
360 - if($wppm_date_setting=='Y-m-d H:i:s'){
361 - $proj_end_date = '0000-00-00';
362 - }elseif($wppm_date_setting=='d-m-Y H:i:s'){
363 - $proj_end_date = '00-00-0000';
364 - }elseif($wppm_date_setting=='m-d-Y H:i:s'){
365 - $proj_end_date = '00-00-0000';
366 - }else{
367 - $proj_end_date = '0000-00-00';
368 - }
369 -
370 - }if($project->start_date!='0000-00-00 00:00:00'){
371 - if($wppm_date_setting=='Y-m-d H:i:s'){
372 - $proj_start_date = $psDate->format('Y-m-d');
373 - }elseif($wppm_date_setting=='d-m-Y H:i:s'){
374 - $proj_start_date = $psDate->format('d-m-Y');
375 - }elseif($wppm_date_setting=='m-d-Y H:i:s'){
376 - $proj_start_date = $psDate->format('m-d-Y');
377 - }else{
378 - $proj_start_date = $psDate->format('Y-m-d');
379 - }
380 - }
381 - if($project->end_date!='0000-00-00 00:00:00'){
382 - if($wppm_date_setting=='Y-m-d H:i:s'){
383 - $proj_end_date = $peDate->format('Y-m-d');
384 - }elseif($wppm_date_setting=='d-m-Y H:i:s'){
385 - $proj_end_date = $peDate->format('d-m-Y');
386 - }elseif($wppm_date_setting=='m-d-Y H:i:s'){
387 - $proj_end_date = $peDate->format('m-d-Y');
388 - }else{
389 - $proj_end_date = $peDate->format('Y-m-d');
226 + $proj_start_date = $psDate->format('Y-m-d');
227 + $proj_end_date = $peDate->format('Y-m-d');
228 + }
229 + ?>
230 + <tr onclick="wppm_open_project(<?php echo esc_attr($project->id) ?>)">
231 + <td><?php echo esc_html_e($project->project_name,'taskbuilder') ?></td>
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>
233 + <td>
234 + <?php
235 + $i=0;
236 + if(!empty(array_filter($users))){
237 + foreach($users as $user){
238 + $i++;
239 + if( $i <= 4 ){
240 + $user_info = get_user_by('id', $user );
241 + if(!empty($user_info)){
242 + ?>
243 + <a href="#" title="<?php echo esc_html_e($user_info->display_name) ?>">
244 + <?php echo get_avatar($user_info->ID, 25, "mysteryman");?>
245 + </a> <?php
390 246 }
391 - }
392 - }
393 - ?>
394 - <tr onclick="if(link)wppm_open_project(<?php echo esc_attr($project->id) ?>)">
395 - <td class="bulk-selector" onmouseover="link=false;" onmouseout="link=true;">
396 - <div class="wppm-pl-item-selector">
397 - <div class="checkbox-container">
398 - <input id="wppm_bulk_select_<?php echo esc_attr($project->id) ?>" class="wppm-bulk-select" type="checkbox" onchange="wppm_bulk_item_select_change();" value="<?php echo esc_attr( $project->id ); ?>"/>
399 - <label for="wppm_bulk_select_<?php echo esc_attr($project->id) ?>"></label>
400 - </div>
401 - </div>
402 - </td>
403 - <td onmouseover="link=true;"><?php echo esc_html_e($project->project_name,'taskbuilder') ?></td>
404 - <td onmouseover="link=true;"><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>
405 - <td onmouseover="link=true;">
406 - <?php
407 - $i=0;
408 - if(!empty(array_filter($users))){
409 - foreach($users as $user){
410 - $i++;
411 - if( $i <= 4 ){
412 - $user_info = get_user_by('id', $user );
413 - if(!empty($user_info)){
414 - ?>
415 - <a href="#" title="<?php echo esc_html_e($user_info->display_name) ?>">
416 - <?php echo get_avatar($user_info->ID, 25, "mysteryman");?>
417 - </a> <?php
418 - }
419 - }
420 247 }
421 - } else{
422 - _e('None','wp_projects');
423 248 }
424 - if($i > 4){
425 - ?>
426 - <a href="#" class="wppm_avatar">
427 - <span id="wppm_avatar" style="background-color:black;" class="avatar">+<?php echo esc_html($i-4) ?></span>
428 - </a>
429 - <?php } ?>
430 - </td>
431 - <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($category) ? esc_html_e($category,'taskbuilder'): "" ?></td>
432 - <?php if($wppm_default_project_date==1 && $wppm_deafault_time_duration_project==0){ ?>
433 - <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($proj_start_date) ? esc_html($proj_start_date): "" ?></td>
434 - <?php
435 - if(!empty($proj_end_date) && $project->status!=4 && $proj_end_date < $current_date && ($proj_end_date != '0000-00-00 00:00:00' && $proj_end_date != '00-00-0000 00:00:00' && $proj_end_date != '00-00-0000' && $proj_end_date != '0000-00-00')) {
436 - $style = "color:#FF0000";
437 - } else {
438 - $style = "color:#2C3E50";
439 - } ?>
440 - <td onmouseover="link=true;" class="wppm_table_td"><span style="<?php echo esc_attr($style); ?>"><?php echo isset($proj_end_date) ? esc_html($proj_end_date):"" ?></span></td>
249 + } else{
250 + _e('None','wp_projects');
251 + }
252 + if($i > 4){
253 + ?>
254 + <a href="#" class="wppm_avatar">
255 + <span id="wppm_avatar" style="background-color:black;" class="avatar">+<?php echo esc_html($i-4) ?></span>
256 + </a>
441 257 <?php } ?>
442 - <?php if($wppm_deafault_time_duration_project==1){ ?>
443 - <?php
444 - if(!empty($proj_end_date) && $project->status!=4 && $proj_end_date < $current_date && ($proj_end_date != '0000-00-00 00:00:00' && $proj_end_date != '00-00-0000 00:00:00' && $proj_end_date != '00-00-0000' && $proj_end_date != '0000-00-00')) {
445 - $style = "color:#FF0000";
446 - } else {
447 - $style = "color:#2C3E50";
448 - } ?>
449 - <td onmouseover="link=true;" class="wppm_table_td"><span style="<?php echo esc_attr($style); ?>"><?php echo isset($wppm_proj_duration) ? esc_html($wppm_proj_duration):"" ?></span></td>
450 - <?php } ?>
451 - <td onmouseover="link=true;" class="wppm_table_td"><?php echo isset($no_of_tasks) ? esc_html($no_of_tasks):"" ?></td>
452 - <td onmouseover="link=true;" class="wppm_delete_action">
453 - <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_project_permission('delete_project',esc_attr($project->id))) || $wppm_current_user_capability == 'wppm_admin' || ($proejctdata['created_by']==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') )? "display:inline":"display:none"; ?>
454 - <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>
455 - <?php ?>
456 - </td>
457 - </tr>
458 - <?php
459 - }
258 + </td>
259 + <td class="wppm_table_td"><?php echo isset($category) ? esc_html_e($category,'taskbuilder'): "" ?></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 } ?>
265 + <td class="wppm_table_td"><?php echo isset($no_of_tasks) ? esc_html($no_of_tasks):"" ?></td>
266 + <td class="wppm_delete_action">
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"; ?>
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>
269 + <?php ?>
270 + </td>
271 + </tr>
272 + <?php
460 273 }
461 - ?>
462 - </tbody>
463 - </table>
464 - <?php
465 - $total_pages=ceil($totalrows/$proj_per_page);
466 - $current_page=$page_no+1;
467 - $prev_page_no=$current_page-1;
468 - $prev_class=($prev_page_no==0)?'disabled':'';
469 - $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page;
470 - $next_class=($total_pages==$current_page)?'disabled':'';
471 - ?>
472 - <div class="wppm_project_result" style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>"><?php echo esc_html_e('Your search request returned no results.','taskbuilder');?></div>
473 - <hr style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>">
274 + }
275 + ?>
276 + </tbody>
277 + </table>
278 + <?php
279 + $total_pages=ceil($totalrows/$proj_per_page);
280 + $current_page=$page_no+1;
281 + $prev_page_no=$current_page-1;
282 + $prev_class=($prev_page_no==0)?'disabled':'';
283 + $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page;
284 + $next_class=($total_pages==$current_page)?'disabled':'';
285 + ?>
286 + <div class="wppm_project_result" style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>"><?php echo esc_html_e('Your search request returned no results.','taskbuilder');?></div>
287 + <hr style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>">
288 + </div>
289 + <div class="row wppm_proj_pagination_container">
290 + <div class="col-sm-4">
291 + <?php echo esc_html_e('Total:','taskbuilder'); ?>&nbsp;<?php echo esc_html($total_projects) ?>&nbsp;<?php echo esc_html_e('of','taskbuilder') ?>&nbsp;<?php echo esc_html($totalrows) ?>&nbsp;<?php echo esc_html_e('Projects','taskbuilder')?>
474 292 </div>
475 - <div class="row wppm_proj_pagination_container">
476 - <div class="col-sm-4">
477 - <?php echo esc_html_e('Total:','taskbuilder'); ?>&nbsp;<?php echo esc_html($total_projects) ?>&nbsp;<?php echo esc_html_e('of','taskbuilder') ?>&nbsp;<?php echo esc_html($totalrows) ?>&nbsp;<?php echo esc_html_e('Projects','taskbuilder')?>
293 + <div class="col-sm-4">
294 + <div class="wppm_proj_pagination" style="<?php echo esc_attr($total_pages==0)? "display:none;":"display:flex;"?>">
295 + <span class="wppm-pagination-txt">
296 + <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>
297 + </span>
298 + <span
299 + <?php echo esc_html($prev_class) ?>
300 + style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>">
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>
302 + </span>
303 + <span
304 + <?php echo esc_attr($next_class) ?>
305 + style="<?php echo (isset($next_class) && $next_class == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
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>
307 + </span>
478 308 </div>
479 - <div class="col-sm-4">
480 - <div class="wppm_proj_pagination" style="<?php echo esc_attr($total_pages==0)? "display:none;":"display:flex;"?>">
481 - <span class="wppm-pagination-txt">
482 - <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>
483 - </span>
484 - <span
485 - <?php echo esc_html($prev_class) ?>
486 - style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>">
487 - <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>
488 - </span>
489 - <span
490 - <?php echo esc_attr($next_class) ?>
491 - style="<?php echo (isset($next_class) && $next_class == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
492 - <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>
493 - </span>
494 - </div>
495 - </div>
496 309 </div>
497 310 </div>
498 311 </div>
499 312 </form>
500 -<style>
501 - #wppm_project_table tr:nth-child(even) td{
502 - background-color:<?php echo esc_attr($appearance_settings['list-item-even-background-color'])?>!important;
503 - color:<?php echo esc_attr($appearance_settings['list-item-even-text-color'])?>!important;
504 - }
505 - #wppm_project_table tr:nth-child(odd) td{
506 - background-color:<?php echo esc_attr($appearance_settings['list-item-odd-background-color'])?>!important;
507 - color:<?php echo esc_attr($appearance_settings['list-item-odd-text-color'])?>!important;
508 - }
509 - #wppm_project_table tr:hover td{
510 - background-color:<?php echo esc_attr($appearance_settings['list-item-hover-background-color'])?>!important;
511 - }
512 - #wppm_project_table tr:hover td{
513 - color: <?php echo esc_attr($appearance_settings['list-item-hover-text-color'])?>!important;
514 - }
515 -</style>
516 313 <script type="text/javascript">
517 314 jQuery( document ).ready( function( jQuery ) {
518 315 jQuery("input[name='wppm_project_search_filter']").keypress(function(e) {
519 316 //Enter key
@@ -540,12 +337,8 @@
540 337 jQuery("#wppm_project_end_date_th").hover(function(){
541 338 jQuery('#wppm_chevron_sort_up_project_end_date_img').show();
542 339 jQuery('#wppm_chevron_sort_down_project_end_date_img').hide();
543 340 });
544 - jQuery("#wppm_project_time_duration_th").hover(function(){
545 - jQuery('#wppm_chevron_sort_up_project_time_duration_img').show();
546 - jQuery('#wppm_chevron_sort_down_project_time_duration_img').hide();
547 - });
548 341 jQuery(".wppm_delete_action").on("click", function(e){
549 342 e.preventDefault();
550 343 return false;
551 344 });
@@ -563,22 +356,8 @@
563 356 }
564 357 });
565 358 });
566 359 });
567 - /**
568 - * Bulk item selector change
569 - */
570 -function wppm_bulk_item_select_change() {
571 - jQuery("#wppm-bulk-actions-btn").show();
572 - var items = jQuery(".wppm-bulk-select:checked");
573 - var checked = items.length === 0 ? false : true;
574 - if(checked){
575 - jQuery(".wppm-bulk-selector").prop("checked", checked);
576 - }else{
577 - jQuery("#wppm-bulk-actions-btn").hide();
578 - jQuery(".wppm-bulk-selector").prop("checked", false);
579 - }
580 -}
581 360 </script>
582 361 <?php
583 362 add_action('wp_footer', 'wppm_page_inline_script', 999999999999999999);
584 363 do_action('wppm_after_shortcode_loaded');