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

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