PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.7
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.7
6.0.7 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 All 59 releases
← All changes | includes/admin/tasks/wppm_add_new_task.php +194 -72 1.0.4 → 6.0.7 View file →
@@ -2,20 +2,66 @@
2 2 if ( ! defined( 'ABSPATH' ) ) {
3 3 exit; // Exit if accessed directly
4 4 }
5 5 global $current_user,$wpdb,$wppmfunction;
6 -$proj_id = isset($_POST['proj_id']) ? intval(sanitize_text_field($_POST['proj_id'])) : 0 ;
7 -$priorities = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_priorities ORDER BY name" );
8 -if($current_user->has_cap('manage_options')){
9 - $projects = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project ORDER BY project_name" );
6 +$proj_id = isset($_POST['proj_id']) ? intval(sanitize_text_field(wp_unslash($_POST['proj_id']))) : 0 ;
7 +$current_project_id = isset($_POST['project_id']) ? intval(sanitize_text_field(wp_unslash($_POST['project_id']))) : 0 ;
8 +$orderby_prio_sql = (sanitize_sql_orderby( "name" ));
9 +$cu_id = absint($current_user->ID);
10 +$wppm_rich_text_editor = get_option('wppm_rich_text_editor');
11 +$wppm_toolbar_actions = get_option('wppm_toolbar_actions');
12 +$priorities = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task_priorities ORDER BY %s",$orderby_prio_sql) );
13 +$wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
14 +$wppm_create_tasks_coworkers_permission = get_option('wppm_allow_coworkers_create_task');
15 +if($current_user->has_cap('manage_options') || $wppm_current_user_capability=='wppm_admin'){
16 + $orderby_proj_sql = (sanitize_sql_orderby( "project_name" ));
17 + $query = ("SELECT * FROM {$wpdb->prefix}wppm_project ORDER BY $orderby_proj_sql");
18 + $where = "";
10 19 }else{
11 - $projects = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project where FIND_IN_SET($current_user->ID,users) ORDER BY project_name" );
20 + $orderby_proj_sql = (sanitize_sql_orderby( "project_name" ));
21 + $query = ("SELECT Proj.*
22 + FROM {$wpdb->prefix}wppm_project AS Proj
23 + Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Proj.id = proj_meta.project_id
24 + Left join {$wpdb->prefix}wppm_project_users proj_users ON Proj.id = proj_users.proj_id
25 + ");
26 + if($wppm_create_tasks_coworkers_permission!=1){
27 + $where = " where ((FIND_IN_SET('$current_user->ID',Proj.users) 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 (Proj.created_by='$cu_id')) Group by Proj.id ORDER BY '$orderby_proj_sql'";
28 + }else{
29 + $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')) Group by Proj.id ORDER BY '$orderby_proj_sql'";
30 + }
12 31 }
32 +$query = apply_filters("wppm_projects_list_in_create_task_query",$query);
33 +$where = apply_filters("wppm_projects_list_in_create_task_query_where",$where);
34 +$query.= $where;
35 +$projects = $wpdb->get_results($query);
13 36 $start_date="";
14 37 $end_date="";
15 38 $wppm_task_list_view = get_option('wppm_default_task_list_view');
39 +$wppm_default_task_date = get_option('wppm_default_task_date');
40 +$wppm_task_fillter = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task");
41 +$flag = false;
42 +if(!empty($wppm_task_fillter)){
43 + foreach($wppm_task_fillter as $key_filter=>$val_filter){
44 + $val_array = (array) $val_filter;
45 + $tusers = $val_array['users'];
46 + $tusers_arr = explode(',',$tusers);
47 + $tproject_id = $val_array['project'];
48 + if(!empty($tusers) && in_array($current_user->ID,$tusers_arr)){
49 + $project_user_role = $wpdb->get_var( $wpdb->prepare( "SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$tproject_id,$cu_id));
50 + $tproject_id = absint( $tproject_id );
51 + $project_users = $wpdb->get_var( $wpdb->prepare( "SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = %d",$tproject_id));
52 + $project_users_arr = explode(',',(string)$project_users);
53 + if((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)){
54 + $flag= true;
55 + break;
56 + }
57 + }
58 + }
59 +}
60 +$cu_id = absint( $cu_id );
61 +$project_creator = $wpdb->get_var( $wpdb->prepare( "SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = %d",$cu_id ));
16 62 ?>
17 -<form class='wppm_add_new_task wppm_bootstrap' onsubmit="return wppm_create_task();" id="wppm_add_new_task" method="post">
63 +<form class='wppm_add_new_task wppm_bootstrap' id="wppm_add_new_task" method="post">
18 64 <div class="wppm_headers row">
19 65 <div class="col-sm-12">
20 66 <span class="wppm-heading-inline">
21 67 <?php echo esc_html_e('Create Task','taskbuilder');?>
@@ -20,21 +66,31 @@
20 66 <span class="wppm-heading-inline">
21 67 <?php echo esc_html_e('Create Task','taskbuilder');?>
22 68 </span>
23 69 <?php if($proj_id==0){
24 - $style = "display:inline;";
70 + if($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',0) || ($flag==true) || ($project_creator!="")){
71 + $style = "display:inline;";
72 + }else{
73 + $style = "display:none;";
74 + }
25 75 $style = apply_filters('wppm_add_new_task_btn_style',$style);
26 76 ?>
27 - <span onclick="wppm_add_new_task()" class="wppm_add_new_task_btn" title="Create Task" style=<?php echo esc_attr($style);?>><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="plus-icon"></span>
77 + <span onclick="wppm_add_new_task('',<?php echo esc_attr($current_project_id); ?>)" class="wppm_add_new_task_btn" title="Create Task" style=<?php echo esc_attr($style);?>><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="plus-icon"></span>
28 78 <?php } ?>
29 - <?php if($proj_id==0) {
30 - $tstyle = "display:inline;";
31 - $tstyle = apply_filters('wppm_task_list_btn_style',$tstyle);
32 - ?>
33 - <span class="wppm-task-list-btn" title="Task List" onclick="wppm_get_task_list()" style="<?php echo esc_attr($tstyle);?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span>
34 - <?php } else { ?>
35 - <span class="wppm-task-list-btn" id="wppm_task_list_btn" title="Task List" onclick="wppm_get_project_tasks(<?php echo esc_attr($proj_id)?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span>
36 - <?php } ?>
79 + <?php
80 + if(!empty($current_project_id)){
81 + ?><span class="wppm-task-list-btn" title="Task List" onclick="wppm_get_project_tasks_kanban_view( <?php echo esc_attr($current_project_id); ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span><?php
82 + }else{
83 + if($proj_id==0) {
84 + $tstyle = "display:inline;";
85 + $tstyle = apply_filters('wppm_task_list_btn_style',$tstyle);
86 + ?>
87 + <span class="wppm-task-list-btn" title="Task List" onclick="wppm_get_task_list()" style="<?php echo esc_attr($tstyle);?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span>
88 + <?php } else { ?>
89 + <span class="wppm-task-list-btn" id="wppm_task_list_btn" title="Task List" onclick="wppm_get_project_tasks(<?php echo esc_attr($proj_id)?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span>
90 + <?php }
91 + }
92 + do_action('wppm_after_add_new_task_button',$style);?>
37 93 </div>
38 94 </div>
39 95 <div id='wppm_task_frm_field_container'>
40 96 <div class="row">
@@ -52,33 +108,60 @@
52 108 </b>
53 109 </span><br>
54 110 <select searchable="search here" onchange="wppm_select_project()" class="form-control" size="40" name="wppm_task_project" id="wppm_task_project">
55 111 <?php
56 - if(!empty($projects)){
57 - foreach($projects as $proj) {
58 - ?>
59 - <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html_e($proj->project_name,'taskbuilder');?></option>
60 - <?php }
61 - } ?>
112 + if($current_project_id != 0){
113 + $current_project_name = $wpdb->get_var( $wpdb->prepare( "SELECT project_name FROM {$wpdb->prefix}wppm_project WHERE id = %d",$current_project_id));
114 + if($current_project_id && $current_project_name){
115 + echo '<option value="'.esc_attr($current_project_id).'" selected="selected">'.esc_html($current_project_name).'</option>';
116 + }
117 + }
118 + else{
119 + if(!empty($projects)){
120 + foreach($projects as $proj) {
121 + $project_id = esc_sql($proj->id);
122 + if($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',0) || $wppm_current_user_capability=='wppm_admin'){
123 + ?>
124 + <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option><?php
125 + }
126 + else{
127 + $project_id = absint( $project_id );
128 + $cu_id = absint( $cu_id );
129 + $project_user_role = $wpdb->get_var( $wpdb->prepare("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$project_id, $cu_id));
130 + $project_users = $proj->users;
131 + $project_users_arr = explode(',',(string)$project_users);
132 + $project_creator_id = $wpdb->get_var( $wpdb->prepare( "SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = %d AND id = %d",$cu_id,$project_id ));
133 + if(((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)) || ($project_creator_id!="")){
134 + ?>
135 + <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option>
136 + <?php }
137 + }
138 + }
139 + }
140 + }?>
62 141 </select>
63 142 </div>
64 143 </div>
65 - <div class="row">
66 - <div class="wppm_task_frm_fields col-sm-6">
67 - <span class="wppm_form_field_label"><b>
68 - <?php echo esc_html_e('Start date','taskbuilder');?>
69 - </b>
70 - </span><br>
71 - <input name="wppm_task_start_date" class="form-control" id="wppm_task_start_date" type="text" value="<?php echo $start_date = apply_filters('wppm_add_new_task_start_date',esc_attr($start_date));?>" size="40" aria-required="true"><br>
144 + <?php if($wppm_default_task_date==1){ ?>
145 + <div class="row">
146 + <div class="wppm_task_frm_fields col-sm-6">
147 + <span class="wppm_form_field_label"><b>
148 + <?php echo esc_html_e('Start date','taskbuilder');?>
149 + </b>
150 + </span><br>
151 + <?php $start_date = apply_filters( 'wppm_add_new_task_start_date',$start_date); ?>
152 + <input name="wppm_task_start_date" class="form-control" id="wppm_task_start_date" type="text" value="<?php echo esc_attr( $start_date ); ?>" size="40" aria-required="true"><br>
153 + </div>
154 + <div class="wppm_task_frm_fields col-sm-6">
155 + <span class="wppm_form_field_label"><b>
156 + <?php echo esc_html_e('End date','taskbuilder');?>
157 + </b>
158 + </span><br>
159 + <?php $end_date = apply_filters( 'wppm_add_new_task_end_date',$end_date); ?>
160 + <input name="wppm_task_end_date" id="wppm_task_end_date" class="form-control" type="text" value="<?php echo esc_attr( $end_date ); ?>" size="40" aria-required="true"><br>
161 + </div>
72 162 </div>
73 - <div class="wppm_task_frm_fields col-sm-6">
74 - <span class="wppm_form_field_label"><b>
75 - <?php echo esc_html_e('End date','taskbuilder');?>
76 - </b>
77 - </span><br>
78 - <input name="wppm_task_end_date" id="wppm_task_end_date" class="form-control" type="text" value="<?php echo $end_date= apply_filters('wppm_add_new_task_end_date', esc_attr($end_date));?>" size="40" aria-required="true"><br>
79 - </div>
80 - </div>
163 + <?php } ?>
81 164 <div class="row">
82 165 <div class="wppm_task_frm_fields col-sm-12">
83 166 <span class="wppm_form_field_label"><b>
84 167 <?php echo esc_html_e('Description','taskbuilder');?>
@@ -122,9 +205,9 @@
122 205 </div>
123 206 <?php do_action('wppm_after_task_fields_in_new_task_form');?>
124 207 <div class="row">
125 208 <div class="wppm_frm_submit col-sm-12">
126 - <button type="submit" class="wppm-submit-btn" id="wppm-submit-task-btn"><?php echo esc_html_e('Add Task','taskbuilder');?></button>
209 + <button type="submit" class="wppm-submit-btn" id="wppm-submit-task-btn" onclick="wppm_create_task(event)"><?php echo esc_html_e('Add Task','taskbuilder');?></button>
127 210 <?php if($proj_id==0){ ?>
128 211 <button type="button" class="wppm_reset_btn" id="wppm_submit_task_reset_btn" onclick="wppm_add_new_task()"><?php echo esc_html_e('Reset form','taskbuilder');?></button>
129 212 <?php } else {?>
130 213 <button type="button" class="wppm_reset_btn" id="wppm_submit_task_reset_btn" onclick="wppm_create_project_task(<?php echo esc_attr($proj_id) ?>)"><?php echo esc_html_e('Reset form','taskbuilder');?></button>
@@ -144,33 +227,49 @@
144 227 jQuery("#wppm_task_end_date").flatpickr({
145 228 enableTime: true,
146 229 dateFormat: "Y-m-d H:i"
147 230 //minDate: startdate
148 - });
149 - tinymce.remove();
150 - tinymce.init({
151 - selector:'#wppm_task_description',
152 - body_id: 'wppm_task_description',
153 - directionality : '<?php //echo 'rtl'; ?>',
154 - menubar: false,
155 - statusbar: false,
156 - height : '200',
157 - width : '100%',
158 - plugins: [
159 - 'lists link image directionality paste'
160 - ],
161 - image_advtab: true,
162 - toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
163 - branding: false,
164 - autoresize_bottom_margin: 20,
165 - browser_spellcheck : true,
166 - relative_urls : false,
167 - remove_script_host : false,
168 - paste_as_text: true,
169 - convert_urls : true,
170 - setup: function (editor) {
171 - }
172 - });
231 + });<?php
232 + if((!empty($wppm_rich_text_editor)) && ($wppm_rich_text_editor == 1)){
233 + $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
234 + $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";
235 + $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";
236 + $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";
237 + $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)? ' alignleft aligncenter alignright ' :"";
238 + $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :"";
239 + $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";
240 + $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";
241 + $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
242 + $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
243 + $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
244 + $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
245 + $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
246 + $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");?>
247 + tinymce.remove();
248 + tinymce.init({
249 + selector:'#wppm_task_description',
250 + body_id: 'wppm_task_description',
251 + directionality : '<?php //echo 'rtl'; ?>',
252 + menubar: false,
253 + statusbar: false,
254 + height : '200',
255 + width : '100%',
256 + plugins: [
257 + 'lists link image directionality paste textcolor'
258 + ],
259 + image_advtab: true,
260 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
261 + branding: false,
262 + autoresize_bottom_margin: 20,
263 + browser_spellcheck : true,
264 + relative_urls : false,
265 + remove_script_host : false,
266 + paste_as_text: true,
267 + convert_urls : true,
268 + setup: function (editor) {
269 + }
270 + });
271 + <?php } ?>
173 272 jQuery("input[name='wppm_assign_task_users']").keypress(function(e) {
174 273 //Enter key
175 274 if (e.which == 13) {
176 275 return false;
@@ -210,8 +309,12 @@
210 309 });
211 310
212 311 jQuery('#wppm_task_project option:eq(0)').prop('selected',true);
213 312 jQuery('#wppm_task_project').select2();
313 +jQuery("#wppm_add_new_task").on("submit", function (e) {
314 + e.preventDefault();
315 + location.reload();
316 +});
214 317
215 318 function wppm_remove_user(e){
216 319 jQuery(e).parent().parent().remove();
217 320 }
@@ -217,21 +320,38 @@
217 320 }
218 321
219 322 function wppm_select_project(){
220 323 jQuery('.wppm_filter_display_element').hide();
221 - <?php do_action('wppm_display_cf_by_project') ?>
324 + <?php do_action('wppm_display_cf_by_project',$proj_id) ?>
222 325 }
223 326
224 -function wppm_create_task(){
327 +function wppm_create_task(e){
225 328 if(!jQuery('#wppm_task_name').val()){
226 - alert("<?php _e('Task title is required','taskbuilder')?>");
329 + alert("<?php echo esc_js(__('Task title is required','taskbuilder'))?>");
330 + e.preventDefault();
227 331 return false;
228 332 }
229 - <?php do_action('wppm_create_ticket_js_function'); ?>
333 + <?php //do_action('wppm_create_task_js_function'); ?>
230 334 var dataform = new FormData(jQuery('#wppm_add_new_task')[0]);
335 + //var validationResult = true;
336 + var validation = {
337 + isValid: true
338 + };
339 + jQuery(document).trigger('wppm_create_task_js_function', [
340 + dataform,
341 + validation
342 + ]);
343 +
344 + if(!validation.isValid){
345 + e.preventDefault();
346 + return false;
347 + }
348 + var is_tinymce = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();
349 + var description = is_tinymce && tinymce.get('wppm_task_description') ? tinyMCE.get('wppm_task_description').getContent() : jQuery('#wppm_task_description').val().trim();
350 + dataform.append('wppm_task_description', description);
231 351 jQuery('#wppm_task_container').html(wppm_admin.loading_html);
232 - var description = tinyMCE.get('wppm_task_description').getContent().trim();
233 - dataform.append('wppm_task_description', description);
352 + jQuery(document).trigger('wppm_create_task_dataform', [dataform]);
353 + <?php //do_action('wppm_create_task_dataform'); ?>
234 354 jQuery.ajax({
235 355 url: wppm_admin.ajax_url,
236 356 type: 'POST',
237 357 data: dataform,
@@ -237,12 +357,14 @@
237 357 data: dataform,
238 358 processData: false,
239 359 contentType: false
240 360 }) .done(function (response_str) {
241 - <?php if($wppm_task_list_view==1){ ?>
361 + <?php if($current_project_id != 0){ ?>
362 + wppm_get_project_tasks_kanban_view(<?php echo (int)$current_project_id; ?>);
363 +<?php } elseif($wppm_task_list_view == 1){ ?>
242 364 wppm_get_task_list();
243 - <?php } elseif($wppm_task_list_view==0){ ?>
365 +<?php } elseif($wppm_task_list_view == 0){ ?>
244 366 wppm_display_grid_view();
245 - <?php } ?>
367 +<?php } ?>
246 368 });
247 369 }
248 370 </script>