PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 5.0.4
Taskbuilder – Project Management & Task Management Tool With Kanban Board v5.0.4
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 5.0.4, at includes/admin/tasks/wppm_add_new_task.php

354 lines 18.9 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 $orderby_prio_sql = (sanitize_sql_orderby( "name" ));
8 $cu_id = absint($current_user->ID);
9 $wppm_rich_text_editor = get_option('wppm_rich_text_editor');
10 $wppm_toolbar_actions = get_option('wppm_toolbar_actions');
11 $priorities = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task_priorities ORDER BY %s",$orderby_prio_sql) );
12 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
13 $wppm_create_tasks_coworkers_permission = get_option('wppm_allow_coworkers_create_task');
14 if($current_user->has_cap('manage_options') || $wppm_current_user_capability=='wppm_admin'){
15 $orderby_proj_sql = (sanitize_sql_orderby( "project_name" ));
16 $query = ("SELECT * FROM {$wpdb->prefix}wppm_project ORDER BY $orderby_proj_sql");
17 $where = "";
18 }else{
19 $orderby_proj_sql = (sanitize_sql_orderby( "project_name" ));
20 $query = ("SELECT Proj.*
21 FROM {$wpdb->prefix}wppm_project AS Proj
22 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Proj.id = proj_meta.project_id
23 Left join {$wpdb->prefix}wppm_project_users proj_users ON Proj.id = proj_users.proj_id
24 ");
25 if($wppm_create_tasks_coworkers_permission!=1){
26 $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'";
27 }else{
28 $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'";
29 }
30 }
31 $query = apply_filters("wppm_projects_list_in_create_task_query",$query);
32 $where = apply_filters("wppm_projects_list_in_create_task_query_where",$where);
33 $query.= $where;
34 $projects = $wpdb->get_results($query);
35 $start_date="";
36 $end_date="";
37 $wppm_task_list_view = get_option('wppm_default_task_list_view');
38 $wppm_default_task_date = get_option('wppm_default_task_date');
39 $wppm_task_fillter = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task");
40 $flag = false;
41 if(!empty($wppm_task_fillter)){
42 foreach($wppm_task_fillter as $key_filter=>$val_filter){
43 $val_array = (array) $val_filter;
44 $tusers = $val_array['users'];
45 $tusers_arr = explode(',',$tusers);
46 $tproject_id = $val_array['project'];
47 if(!empty($tusers) && in_array($current_user->ID,$tusers_arr)){
48 $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));
49 $tproject_id = absint( $tproject_id );
50 $project_users = $wpdb->get_var( $wpdb->prepare( "SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = %d",$tproject_id));
51 $project_users_arr = explode(',',(string)$project_users);
52 if((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)){
53 $flag= true;
54 break;
55 }
56 }
57 }
58 }
59 $cu_id = absint( $cu_id );
60 $project_creator = $wpdb->get_var( $wpdb->prepare( "SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = %d",$cu_id ));
61 ?>
62 <form class='wppm_add_new_task wppm_bootstrap' id="wppm_add_new_task" method="post">
63 <div class="wppm_headers row">
64 <div class="col-sm-12">
65 <span class="wppm-heading-inline">
66 <?php echo esc_html_e('Create Task','taskbuilder');?>
67 </span>
68 <?php if($proj_id==0){
69 if($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',0) || ($flag==true) || ($project_creator!="")){
70 $style = "display:inline;";
71 }else{
72 $style = "display:none;";
73 }
74 $style = apply_filters('wppm_add_new_task_btn_style',$style);
75 ?>
76 <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 <?php } ?>
78 <?php if($proj_id==0) {
79 $tstyle = "display:inline;";
80 $tstyle = apply_filters('wppm_task_list_btn_style',$tstyle);
81 ?>
82 <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>
83 <?php } else { ?>
84 <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>
85 <?php }
86 do_action('wppm_after_add_new_task_button',$style);?>
87 </div>
88 </div>
89 <div id='wppm_task_frm_field_container'>
90 <div class="row">
91 <div class="wppm_task_frm_fields col-sm-6">
92 <span class="wppm_form_field_label"><b>
93 <?php echo esc_html_e('Task Name','taskbuilder');?>
94 </b>
95 <span style="color:#ff0000;">*</span>
96 </span><br>
97 <input name="name" class="form-control" id="wppm_task_name" type="text" value="" size="40" aria-required="true"><br>
98 </div>
99 <div class="wppm_task_frm_fields wppm_project_autocomplete_container col-sm-6">
100 <span class="wppm_form_field_label"><b>
101 <?php echo esc_html_e('Project','taskbuilder');?>
102 </b>
103 </span><br>
104 <select searchable="search here" onchange="wppm_select_project()" class="form-control" size="40" name="wppm_task_project" id="wppm_task_project">
105 <?php
106 if(!empty($projects)){
107 foreach($projects as $proj) {
108 $project_id = esc_sql($proj->id);
109 if($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',0) || $wppm_current_user_capability=='wppm_admin'){
110 ?>
111 <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option><?php
112 }
113 else{
114 $project_id = absint( $project_id );
115 $cu_id = absint( $cu_id );
116 $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));
117 $project_users = $proj->users;
118 $project_users_arr = explode(',',(string)$project_users);
119 $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 ));
120 if(((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)) || ($project_creator_id!="")){
121 ?>
122 <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option>
123 <?php }
124 }
125 }
126 }?>
127 </select>
128 </div>
129 </div>
130 <?php if($wppm_default_task_date==1){ ?>
131 <div class="row">
132 <div class="wppm_task_frm_fields col-sm-6">
133 <span class="wppm_form_field_label"><b>
134 <?php echo esc_html_e('Start date','taskbuilder');?>
135 </b>
136 </span><br>
137 <?php $start_date = apply_filters( 'wppm_add_new_task_start_date',$start_date); ?>
138 <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>
139 </div>
140 <div class="wppm_task_frm_fields col-sm-6">
141 <span class="wppm_form_field_label"><b>
142 <?php echo esc_html_e('End date','taskbuilder');?>
143 </b>
144 </span><br>
145 <?php $end_date = apply_filters( 'wppm_add_new_task_end_date',$end_date); ?>
146 <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>
147 </div>
148 </div>
149 <?php } ?>
150 <div class="row">
151 <div class="wppm_task_frm_fields col-sm-12">
152 <span class="wppm_form_field_label"><b>
153 <?php echo esc_html_e('Description','taskbuilder');?>
154 </b>
155 </span><br>
156 <textarea id="wppm_task_description" name="wppm_task_description">
157 </textarea>
158 <br>
159 </div>
160 </div>
161 <div class="row">
162 <div class="wppm_task_frm_fields col-sm-12">
163 <span class="wppm_form_field_label"><b>
164 <?php echo esc_html_e('Priority','taskbuilder');?>
165 </b>
166 </span><br>
167 <select id="wppm_create_task_priority" name="wppm_create_task_priority" class="form-control">
168 <option value=""></option><?php
169 if(!empty($priorities)){
170 foreach ($priorities as $priority){
171 echo '<option value="'.esc_attr($priority->id).'">'.esc_html(stripcslashes($priority->name)).'</option>';
172 }
173 }
174 ?>
175 </select><br><br>
176 </div>
177 </div>
178 <div class="row">
179 <div class="wppm_task_frm_fields col-sm-12">
180 <span class="wppm_form_field_label"><b>
181 <?php echo esc_html_e('Task Members','taskbuilder');?>
182 </b>
183 </span><br>
184 <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');?>">
185 <br>
186 </div>
187 <div id="wppm_display_task_users" class="row">
188 <div class="col-sm-12">
189 <ui class="wppm_filter_display_users_container"></ui>
190 </div>
191 </div>
192 <?php do_action('wppm_after_task_fields_in_new_task_form');?>
193 <div class="row">
194 <div class="wppm_frm_submit col-sm-12">
195 <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>
196 <?php if($proj_id==0){ ?>
197 <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>
198 <?php } else {?>
199 <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>
200 <?php } ?>
201 <input type="hidden" name="action" value="wppm_create_task" />
202 </div>
203 </div>
204 </div>
205 </form>
206 <script>
207 jQuery( document ).ready( function( jQuery ) {
208 wppm_select_project();
209 jQuery("#wppm_task_start_date").flatpickr({
210 enableTime: true,
211 dateFormat: "Y-m-d H:i",
212 });
213 jQuery("#wppm_task_end_date").flatpickr({
214 enableTime: true,
215 dateFormat: "Y-m-d H:i"
216 //minDate: startdate
217 });<?php
218 if((!empty($wppm_rich_text_editor)) && ($wppm_rich_text_editor == 1)){
219 $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
220 $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";
221 $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";
222 $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";
223 $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)? ' alignleft aligncenter alignright ' :"";
224 $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :"";
225 $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";
226 $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";
227 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
228 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
229 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
230 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
231 $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
232 $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");?>
233 tinymce.remove();
234 tinymce.init({
235 selector:'#wppm_task_description',
236 body_id: 'wppm_task_description',
237 directionality : '<?php //echo 'rtl'; ?>',
238 menubar: false,
239 statusbar: false,
240 height : '200',
241 width : '100%',
242 plugins: [
243 'lists link image directionality paste textcolor'
244 ],
245 image_advtab: true,
246 toolbar: '<?php echo esc_js( $toolbar ); ?>',
247 branding: false,
248 autoresize_bottom_margin: 20,
249 browser_spellcheck : true,
250 relative_urls : false,
251 remove_script_host : false,
252 paste_as_text: true,
253 convert_urls : true,
254 setup: function (editor) {
255 }
256 });
257 <?php } ?>
258 jQuery("input[name='wppm_assign_task_users']").keypress(function(e) {
259 //Enter key
260 if (e.which == 13) {
261 return false;
262 }
263 });
264 jQuery( ".wppm_assign_task_users" ).autocomplete({
265 minLength: 1,
266 appendTo: jQuery('.wppm_assign_task_users').parent(),
267 source: function( request, response ) {
268 var term = request.term;
269 request = {
270 action: 'wppm_filter_autocomplete',
271 term : term,
272 field : 'task_users_by_project_name',
273 proj_id : jQuery('#wppm_task_project').val()
274 }
275 jQuery.getJSON( wppm_admin.ajax_url, request, function( data, status, xhr ) {
276 response(data);
277 });
278 },
279 select: function (event, ui) {
280 var html_str = '<li class="wppm_filter_display_element" style="list-style: none">'
281 +'<div class="flex-container">'
282 +'<div class="wppm_filter_display_text">'
283 +ui.item.label
284 +'<input type="hidden" name="user_names[]" value="'+ui.item.user_id+'">'
285 +'</div>'
286 +'<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>'
287 +'</div>'
288 +'</li>';
289 jQuery('#wppm_display_task_users .wppm_filter_display_users_container').append(html_str);
290 jQuery(this).val(''); return false;
291 }
292 }).focus(function() {
293 jQuery(this).autocomplete("search", "");
294 });
295 });
296
297 jQuery('#wppm_task_project option:eq(0)').prop('selected',true);
298 jQuery('#wppm_task_project').select2();
299 jQuery("#wppm_add_new_task").on("submit", function (e) {
300 e.preventDefault();
301 location.reload();
302 });
303
304 function wppm_remove_user(e){
305 jQuery(e).parent().parent().remove();
306 }
307
308 function wppm_select_project(){
309 jQuery('.wppm_filter_display_element').hide();
310 <?php do_action('wppm_display_cf_by_project') ?>
311 }
312
313 function wppm_create_task(e){
314 if(!jQuery('#wppm_task_name').val()){
315 alert("<?php echo esc_js(__('Task title is required','taskbuilder'))?>");
316 e.preventDefault();
317 return false;
318 }
319 <?php //do_action('wppm_create_task_js_function'); ?>
320 var dataform = new FormData(jQuery('#wppm_add_new_task')[0]);
321 //var validationResult = true;
322 var validation = {
323 isValid: true
324 };
325 jQuery(document).trigger('wppm_create_task_js_function', [
326 dataform,
327 validation
328 ]);
329
330 if(!validation.isValid){
331 e.preventDefault();
332 return false;
333 }
334 var is_tinymce = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();
335 var description = is_tinymce && tinymce.get('wppm_task_description') ? tinyMCE.get('wppm_task_description').getContent() : jQuery('#wppm_task_description').val().trim();
336 dataform.append('wppm_task_description', description);
337 jQuery('#wppm_task_container').html(wppm_admin.loading_html);
338 jQuery(document).trigger('wppm_create_task_dataform', [dataform]);
339 <?php //do_action('wppm_create_task_dataform'); ?>
340 jQuery.ajax({
341 url: wppm_admin.ajax_url,
342 type: 'POST',
343 data: dataform,
344 processData: false,
345 contentType: false
346 }) .done(function (response_str) {
347 <?php if($wppm_task_list_view==1){ ?>
348 wppm_get_task_list();
349 <?php } elseif($wppm_task_list_view==0){ ?>
350 wppm_display_grid_view();
351 <?php } ?>
352 });
353 }
354 </script>