PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.6
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.6
6.0.6 6.0.5 6.0.2 6.0.3 6.0.4 6.0.1 6.0.0 5.0.8 5.0.9 4.0.9 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 All 58 releases
taskbuilder / includes / admin / tasks / wppm_add_new_task.php

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

370 lines 20.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit; // Exit if accessed directly
4 }
5 global $current_user,$wpdb,$wppmfunction;
6 $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 = "";
19 }else{
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 }
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);
36 $start_date="";
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 ));
62 ?>
63 <form class='wppm_add_new_task wppm_bootstrap' id="wppm_add_new_task" method="post">
64 <div class="wppm_headers row">
65 <div class="col-sm-12">
66 <span class="wppm-heading-inline">
67 <?php echo esc_html_e('Create Task','taskbuilder');?>
68 </span>
69 <?php if($proj_id==0){
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 }
75 $style = apply_filters('wppm_add_new_task_btn_style',$style);
76 ?>
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>
78 <?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);?>
93 </div>
94 </div>
95 <div id='wppm_task_frm_field_container'>
96 <div class="row">
97 <div class="wppm_task_frm_fields col-sm-6">
98 <span class="wppm_form_field_label"><b>
99 <?php echo esc_html_e('Task Name','taskbuilder');?>
100 </b>
101 <span style="color:#ff0000;">*</span>
102 </span><br>
103 <input name="name" class="form-control" id="wppm_task_name" type="text" value="" size="40" aria-required="true"><br>
104 </div>
105 <div class="wppm_task_frm_fields wppm_project_autocomplete_container col-sm-6">
106 <span class="wppm_form_field_label"><b>
107 <?php echo esc_html_e('Project','taskbuilder');?>
108 </b>
109 </span><br>
110 <select searchable="search here" onchange="wppm_select_project()" class="form-control" size="40" name="wppm_task_project" id="wppm_task_project">
111 <?php
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 }?>
141 </select>
142 </div>
143 </div>
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>
162 </div>
163 <?php } ?>
164 <div class="row">
165 <div class="wppm_task_frm_fields col-sm-12">
166 <span class="wppm_form_field_label"><b>
167 <?php echo esc_html_e('Description','taskbuilder');?>
168 </b>
169 </span><br>
170 <textarea id="wppm_task_description" name="wppm_task_description">
171 </textarea>
172 <br>
173 </div>
174 </div>
175 <div class="row">
176 <div class="wppm_task_frm_fields col-sm-12">
177 <span class="wppm_form_field_label"><b>
178 <?php echo esc_html_e('Priority','taskbuilder');?>
179 </b>
180 </span><br>
181 <select id="wppm_create_task_priority" name="wppm_create_task_priority" class="form-control">
182 <option value=""></option><?php
183 if(!empty($priorities)){
184 foreach ($priorities as $priority){
185 echo '<option value="'.esc_attr($priority->id).'">'.esc_html(stripcslashes($priority->name)).'</option>';
186 }
187 }
188 ?>
189 </select><br><br>
190 </div>
191 </div>
192 <div class="row">
193 <div class="wppm_task_frm_fields col-sm-12">
194 <span class="wppm_form_field_label"><b>
195 <?php echo esc_html_e('Task Members','taskbuilder');?>
196 </b>
197 </span><br>
198 <input class="form-control wppm_assign_task_users ui-autocomplete-input" name="wppm_assign_task_users" type="text" autocomplete="off" placeholder="<?php echo esc_attr__('Search User...','taskbuilder');?>">
199 <br>
200 </div>
201 <div id="wppm_display_task_users" class="row">
202 <div class="col-sm-12">
203 <ui class="wppm_filter_display_users_container"></ui>
204 </div>
205 </div>
206 <?php do_action('wppm_after_task_fields_in_new_task_form');?>
207 <div class="row">
208 <div class="wppm_frm_submit col-sm-12">
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>
210 <?php if($proj_id==0){ ?>
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>
212 <?php } else {?>
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>
214 <?php } ?>
215 <input type="hidden" name="action" value="wppm_create_task" />
216 </div>
217 </div>
218 </div>
219 </form>
220 <script>
221 jQuery( document ).ready( function( jQuery ) {
222 wppm_select_project();
223 jQuery("#wppm_task_start_date").flatpickr({
224 enableTime: true,
225 dateFormat: "Y-m-d H:i",
226 });
227 jQuery("#wppm_task_end_date").flatpickr({
228 enableTime: true,
229 dateFormat: "Y-m-d H:i"
230 //minDate: startdate
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 } ?>
272 jQuery("input[name='wppm_assign_task_users']").keypress(function(e) {
273 //Enter key
274 if (e.which == 13) {
275 return false;
276 }
277 });
278 jQuery( ".wppm_assign_task_users" ).autocomplete({
279 minLength: 1,
280 appendTo: jQuery('.wppm_assign_task_users').parent(),
281 source: function( request, response ) {
282 var term = request.term;
283 request = {
284 action: 'wppm_filter_autocomplete',
285 term : term,
286 field : 'task_users_by_project_name',
287 proj_id : jQuery('#wppm_task_project').val()
288 }
289 jQuery.getJSON( wppm_admin.ajax_url, request, function( data, status, xhr ) {
290 response(data);
291 });
292 },
293 select: function (event, ui) {
294 var html_str = '<li class="wppm_filter_display_element" style="list-style: none">'
295 +'<div class="flex-container">'
296 +'<div class="wppm_filter_display_text">'
297 +ui.item.label
298 +'<input type="hidden" name="user_names[]" value="'+ui.item.user_id+'">'
299 +'</div>'
300 +'<div class="wppm_filter_display_remove" onclick="wppm_remove_user(this);"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cross.svg'); ?>" alt="delete"></div>'
301 +'</div>'
302 +'</li>';
303 jQuery('#wppm_display_task_users .wppm_filter_display_users_container').append(html_str);
304 jQuery(this).val(''); return false;
305 }
306 }).focus(function() {
307 jQuery(this).autocomplete("search", "");
308 });
309 });
310
311 jQuery('#wppm_task_project option:eq(0)').prop('selected',true);
312 jQuery('#wppm_task_project').select2();
313 jQuery("#wppm_add_new_task").on("submit", function (e) {
314 e.preventDefault();
315 location.reload();
316 });
317
318 function wppm_remove_user(e){
319 jQuery(e).parent().parent().remove();
320 }
321
322 function wppm_select_project(){
323 jQuery('.wppm_filter_display_element').hide();
324 <?php do_action('wppm_display_cf_by_project',$proj_id) ?>
325 }
326
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 });
369 }
370 </script>