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
← All changes | includes/admin/tasks/wppm_add_new_task.php +369 -334 5.0.06.0.6 View file →
@@ -1,335 +1,370 @@
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 -}
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 +}
335 370 </script>