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 +210 -84 1.0.0 → 6.0.7 View file →
@@ -2,19 +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="";
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 ));
15 62 ?>
16 -<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">
17 64 <div class="wppm_headers row">
18 65 <div class="col-sm-12">
19 66 <span class="wppm-heading-inline">
20 67 <?php echo esc_html_e('Create Task','taskbuilder');?>
@@ -19,21 +66,31 @@
19 66 <span class="wppm-heading-inline">
20 67 <?php echo esc_html_e('Create Task','taskbuilder');?>
21 68 </span>
22 69 <?php if($proj_id==0){
23 - $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 + }
24 75 $style = apply_filters('wppm_add_new_task_btn_style',$style);
25 76 ?>
26 - <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>
27 78 <?php } ?>
28 - <?php if($proj_id==0) {
29 - $tstyle = "display:inline;";
30 - $tstyle = apply_filters('wppm_task_list_btn_style',$tstyle);
31 - ?>
32 - <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>
33 - <?php } else { ?>
34 - <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>
35 - <?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);?>
36 93 </div>
37 94 </div>
38 95 <div id='wppm_task_frm_field_container'>
39 96 <div class="row">
@@ -51,33 +108,60 @@
51 108 </b>
52 109 </span><br>
53 110 <select searchable="search here" onchange="wppm_select_project()" class="form-control" size="40" name="wppm_task_project" id="wppm_task_project">
54 111 <?php
55 - if(!empty($projects)){
56 - foreach($projects as $proj) {
57 - ?>
58 - <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html_e($proj->project_name,'taskbuilder');?></option>
59 - <?php }
60 - } ?>
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 + }?>
61 141 </select>
62 142 </div>
63 143 </div>
64 - <div class="row">
65 - <div class="wppm_task_frm_fields col-sm-6">
66 - <span class="wppm_form_field_label"><b>
67 - <?php echo esc_html_e('Start date','taskbuilder');?>
68 - </b>
69 - </span><br>
70 - <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>
71 162 </div>
72 - <div class="wppm_task_frm_fields col-sm-6">
73 - <span class="wppm_form_field_label"><b>
74 - <?php echo esc_html_e('End date','taskbuilder');?>
75 - </b>
76 - </span><br>
77 - <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>
78 - </div>
79 - </div>
163 + <?php } ?>
80 164 <div class="row">
81 165 <div class="wppm_task_frm_fields col-sm-12">
82 166 <span class="wppm_form_field_label"><b>
83 167 <?php echo esc_html_e('Description','taskbuilder');?>
@@ -121,9 +205,9 @@
121 205 </div>
122 206 <?php do_action('wppm_after_task_fields_in_new_task_form');?>
123 207 <div class="row">
124 208 <div class="wppm_frm_submit col-sm-12">
125 - <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>
126 210 <?php if($proj_id==0){ ?>
127 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>
128 212 <?php } else {?>
129 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>
@@ -143,33 +227,49 @@
143 227 jQuery("#wppm_task_end_date").flatpickr({
144 228 enableTime: true,
145 229 dateFormat: "Y-m-d H:i"
146 230 //minDate: startdate
147 - });
148 - tinymce.remove();
149 - tinymce.init({
150 - selector:'#wppm_task_description',
151 - body_id: 'wppm_task_description',
152 - directionality : '<?php //echo 'rtl'; ?>',
153 - menubar: false,
154 - statusbar: false,
155 - height : '200',
156 - width : '100%',
157 - plugins: [
158 - 'lists link image directionality paste'
159 - ],
160 - image_advtab: true,
161 - toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
162 - branding: false,
163 - autoresize_bottom_margin: 20,
164 - browser_spellcheck : true,
165 - relative_urls : false,
166 - remove_script_host : false,
167 - paste_as_text: true,
168 - convert_urls : true,
169 - setup: function (editor) {
170 - }
171 - });
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 } ?>
172 272 jQuery("input[name='wppm_assign_task_users']").keypress(function(e) {
173 273 //Enter key
174 274 if (e.which == 13) {
175 275 return false;
@@ -209,8 +309,12 @@
209 309 });
210 310
211 311 jQuery('#wppm_task_project option:eq(0)').prop('selected',true);
212 312 jQuery('#wppm_task_project').select2();
313 +jQuery("#wppm_add_new_task").on("submit", function (e) {
314 + e.preventDefault();
315 + location.reload();
316 +});
213 317
214 318 function wppm_remove_user(e){
215 319 jQuery(e).parent().parent().remove();
216 320 }
@@ -216,29 +320,51 @@
216 320 }
217 321
218 322 function wppm_select_project(){
219 323 jQuery('.wppm_filter_display_element').hide();
220 - <?php do_action('wppm_display_cf_by_project') ?>
324 + <?php do_action('wppm_display_cf_by_project',$proj_id) ?>
221 325 }
222 326
223 -function wppm_create_task(){
224 - if(!jQuery('#wppm_task_name').val()){
225 - alert("<?php _e('Task title is required','taskbuilder')?>");
226 - return false;
227 - }
228 - <?php do_action('wppm_create_ticket_js_function'); ?>
229 - var dataform = new FormData(jQuery('#wppm_add_new_task')[0]);
230 - jQuery('#wppm_task_container').html(wppm_admin.loading_html);
231 - var description = tinyMCE.get('wppm_task_description').getContent().trim();
232 - dataform.append('wppm_task_description', description);
233 - jQuery.ajax({
234 - url: wppm_admin.ajax_url,
235 - type: 'POST',
236 - data: dataform,
237 - processData: false,
238 - contentType: false
239 - })
240 - .done(function (response_str) {
241 - wppm_get_task_list();
242 - });
327 +function wppm_create_task(e){
328 + if(!jQuery('#wppm_task_name').val()){
329 + alert("<?php echo esc_js(__('Task title is required','taskbuilder'))?>");
330 + e.preventDefault();
331 + return false;
332 + }
333 + <?php //do_action('wppm_create_task_js_function'); ?>
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);
351 + jQuery('#wppm_task_container').html(wppm_admin.loading_html);
352 + jQuery(document).trigger('wppm_create_task_dataform', [dataform]);
353 + <?php //do_action('wppm_create_task_dataform'); ?>
354 + jQuery.ajax({
355 + url: wppm_admin.ajax_url,
356 + type: 'POST',
357 + data: dataform,
358 + processData: false,
359 + contentType: false
360 + }) .done(function (response_str) {
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){ ?>
364 + wppm_get_task_list();
365 +<?php } elseif($wppm_task_list_view == 0){ ?>
366 + wppm_display_grid_view();
367 +<?php } ?>
368 + });
243 369 }
244 370 </script>