| 1 |
<?php |
| 2 |
if ( ! defined( 'ABSPATH' ) ) { |
| 3 |
exit; // Exit if accessed directly |
| 4 |
} |
| 5 |
|
| 6 |
global $wpdb,$wppmfunction,$current_user; |
| 7 |
$task_id = isset($_POST['task_id']) ? intval(sanitize_text_field(wp_unslash($_POST['task_id']))) : '' ; |
| 8 |
$proj_id = isset($_POST['proj_id']) ? intval(sanitize_text_field(wp_unslash($_POST['proj_id']))) : '' ; |
| 9 |
if (!(($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task_id))) {exit;} |
| 10 |
$task_data = $wppmfunction->get_task($task_id); |
| 11 |
$settings = get_option("wppm-ap-modal"); |
| 12 |
$orderby_proj_sql = (sanitize_sql_orderby( "project_name" )); |
| 13 |
$project_data = $wppmfunction->get_project(intval(sanitize_text_field($task_data['project']))); |
| 14 |
if($current_user->has_cap('manage_options')){ |
| 15 |
$projects = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_project ORDER BY $orderby_proj_sql"); |
| 16 |
}else{ |
| 17 |
$sql = $wpdb->prepare( |
| 18 |
"SELECT Proj.* |
| 19 |
FROM {$wpdb->prefix}wppm_project AS Proj |
| 20 |
LEFT JOIN {$wpdb->prefix}wppm_project_meta AS proj_meta |
| 21 |
ON Proj.id = proj_meta.project_id |
| 22 |
WHERE FIND_IN_SET(%d, Proj.users) |
| 23 |
OR (proj_meta.meta_key = 'public_project' AND proj_meta.meta_value = 1) |
| 24 |
GROUP BY Proj.id", |
| 25 |
$current_user->ID |
| 26 |
); |
| 27 |
// 4️⃣ Append ORDER BY (safe because we whitelisted columns) |
| 28 |
$sql .= " ORDER BY $orderby_proj_sql"; |
| 29 |
|
| 30 |
// 5️⃣ Execute |
| 31 |
$projects = $wpdb->get_results($sql); |
| 32 |
} |
| 33 |
$priority_id = sanitize_text_field($task_data['priority']); |
| 34 |
$project_id = sanitize_text_field($task_data['project']); |
| 35 |
|
| 36 |
$priorities = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task_priorities"); |
| 37 |
ob_start(); |
| 38 |
?> |
| 39 |
<form id="frm_get_edit_task_deatils" method="post"> |
| 40 |
<div class="row" style="padding-left:2px;"> |
| 41 |
<div class="col-sm-12"> |
| 42 |
<label class="wppm_edit_task_label" for="wppm_edit_task_label"><?php echo esc_html_e('Task','taskbuilder') ?> </label> |
| 43 |
</div> |
| 44 |
</div> |
| 45 |
<div class="row" style="padding-left:2px;"> |
| 46 |
<div class="col-sm-12"> |
| 47 |
<input type="text" class="wppm_edit_task_label form-control" name="wppm_edit_task_label" id="wppm_edit_task_label" value="<?php echo isset($task_data['task_name']) ? esc_attr($task_data['task_name']) :"" ?>"> |
| 48 |
</div> |
| 49 |
</div> |
| 50 |
<div class="row" style="padding-left:2px;"> |
| 51 |
<div class="col-sm-12"> |
| 52 |
<label class="wppm_edit_project_label" for="wppm_edit_project_label"><?php esc_html_e('Project:','taskbuilder') ?> </label> |
| 53 |
</div> |
| 54 |
</div> |
| 55 |
<div class="row" style="padding-left:2px;padding-bottom: 10px;"> |
| 56 |
<div class="col-sm-12"> |
| 57 |
<select searchable="search here" onchange="wppm_select_project()" class="form-control" size="40" name="wppm_task_project" id="wppm_task_project"> |
| 58 |
<?php |
| 59 |
if(!empty($projects)){ |
| 60 |
foreach($projects as $proj) { |
| 61 |
?> |
| 62 |
<option <?php echo esc_attr($proj->id)==esc_attr($project_id) ?'selected="selected"':''?> value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option> |
| 63 |
<?php } |
| 64 |
} ?> |
| 65 |
</select> |
| 66 |
</div> |
| 67 |
</div> |
| 68 |
<div class="row" style="padding-left:2px;"> |
| 69 |
<div class="col-sm-12"> |
| 70 |
<label class="wppm_edit_task_start_date" for="wppm_edit_task_start_date"><?php echo esc_html_e('Start Date','taskbuilder') ?> </label> |
| 71 |
</div> |
| 72 |
</div> |
| 73 |
<div class="row" style="padding-left:2px;"> |
| 74 |
<div class="col-sm-12"> |
| 75 |
<input name="wppm_edit_task_start_date" class="form-control" id="wppm_edit_task_start_date" type="text" value="<?php echo isset($task_data['start_date'])? esc_attr($task_data['start_date']):""?>" size="40" aria-required="true"><br> |
| 76 |
</div> |
| 77 |
</div> |
| 78 |
<div class="row" style="padding-left:2px;"> |
| 79 |
<div class="col-sm-12"> |
| 80 |
<label class="wppm_edit_task_end_date" for="wppm_edit_task_end_date"><?php echo esc_html_e('End Date','taskbuilder') ?> </label> |
| 81 |
</div> |
| 82 |
</div> |
| 83 |
<div class="row" style="padding-left:2px;"> |
| 84 |
<div class="col-sm-12"> |
| 85 |
<input name="wppm_edit_task_end_date" class="form-control" id="wppm_edit_task_end_date" type="text" value="<?php echo isset($task_data['end_date']) ? esc_attr($task_data['end_date']):"" ?>" size="40" aria-required="true"><br> |
| 86 |
</div> |
| 87 |
</div> |
| 88 |
<div class="row" style="padding-left:2px;"> |
| 89 |
<div class="col-sm-12"> |
| 90 |
<label class="wppm_edit_task_priority_label" for="wppm_edit_task_priority_label" id="wppm_edit_task_priority_label"><?php echo esc_html_e('Task Priority','taskbuilder');?></label> |
| 91 |
</div> |
| 92 |
</div> |
| 93 |
<div class="row" style="padding-left:2px;"> |
| 94 |
<div class="col-sm-12"> |
| 95 |
<select class="form-control" name="wppm_edit_task_priority" id="wppm_edit_task_priority"> |
| 96 |
<option></option> |
| 97 |
<?php |
| 98 |
if(!empty($priorities)){ |
| 99 |
foreach ( $priorities as $priority ) : |
| 100 |
$selected = $priority_id == $priority->id ? 'selected="selected"' : ''; |
| 101 |
echo '<option '.esc_attr($selected).' value="'.esc_attr($priority->id).'">'.esc_html($priority->name).'</option>'; |
| 102 |
endforeach; |
| 103 |
} |
| 104 |
?> |
| 105 |
</select> |
| 106 |
</div> |
| 107 |
</div> |
| 108 |
<div class="row" style="padding-left:2px;"> |
| 109 |
<div class="col-sm-12"> |
| 110 |
<label class="wppm_edit_task_description_label" id="wppm_edit_task_description_label"> |
| 111 |
<?php echo esc_html_e('Description','taskbuilder');?> |
| 112 |
</label> |
| 113 |
</div> |
| 114 |
</div> |
| 115 |
<div class="row" style="padding-left:2px;"> |
| 116 |
<div class="col-sm-12"> |
| 117 |
<textarea id="wppm_edit_task_description" class="form-control" name="wppm_edit_task_description"> |
| 118 |
<?php echo !empty($task_data['description']) ? wp_kses_post(wpautop($task_data['description'])) :""?> |
| 119 |
</textarea> |
| 120 |
</div> |
| 121 |
</div> |
| 122 |
<?php do_action('wppm_edit_task_details',$task_id,$project_id);?> |
| 123 |
<input type="hidden" name="action" value="wppm_set_change_task_details" /> |
| 124 |
<input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr(wp_create_nonce('wppm_set_change_task_details'))?>"> |
| 125 |
<input type="hidden" name="user_id" id="user_id" value=""> |
| 126 |
<input type="hidden" name="task_id" value="<?php echo esc_attr($task_id) ?>" /> |
| 127 |
</form> |
| 128 |
<style> |
| 129 |
.select2-results__options { |
| 130 |
color:<?php echo esc_attr( $settings['body-text-color'])?>!important; |
| 131 |
} |
| 132 |
</style> |
| 133 |
<script> |
| 134 |
jQuery( document ).ready( function( jQuery ) { |
| 135 |
wppm_select_project(); |
| 136 |
jQuery("#wppm_edit_task_start_date").flatpickr({ |
| 137 |
enableTime: true, |
| 138 |
dateFormat: "Y-m-d H:i", |
| 139 |
}); |
| 140 |
jQuery("#wppm_edit_task_end_date").flatpickr({ |
| 141 |
enableTime: true, |
| 142 |
dateFormat: "Y-m-d H:i" |
| 143 |
//minDate: startdate |
| 144 |
}); |
| 145 |
tinymce.remove(); |
| 146 |
tinymce.init({ |
| 147 |
selector:'#wppm_edit_task_description', |
| 148 |
body_id: 'wppm_edit_task_description', |
| 149 |
directionality : '<?php //echo 'rtl'; ?>', |
| 150 |
menubar: false, |
| 151 |
statusbar: false, |
| 152 |
height : '200', |
| 153 |
width : '100%', |
| 154 |
plugins: [ |
| 155 |
'lists link image directionality paste' |
| 156 |
], |
| 157 |
image_advtab: true, |
| 158 |
toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image', |
| 159 |
branding: false, |
| 160 |
autoresize_bottom_margin: 20, |
| 161 |
browser_spellcheck : true, |
| 162 |
relative_urls : false, |
| 163 |
remove_script_host : false, |
| 164 |
convert_urls : true, |
| 165 |
paste_as_text: true, |
| 166 |
content_style: |
| 167 |
`body { |
| 168 |
color:<?php echo esc_attr( $settings['body-text-color'])?>!important; |
| 169 |
}`, |
| 170 |
setup: function (editor) { |
| 171 |
} |
| 172 |
}); |
| 173 |
}); |
| 174 |
jQuery('#wppm_task_project').select2(); |
| 175 |
function wppm_select_project(){ |
| 176 |
jQuery('.wppm_filter_display_element').hide(); |
| 177 |
<?php do_action('wppm_display_cf_by_project_in_edit_task_details') ?> |
| 178 |
} |
| 179 |
jQuery('#wppm_edit_project_label').select2(); |
| 180 |
|
| 181 |
</script> |
| 182 |
<?php |
| 183 |
$body = ob_get_clean(); |
| 184 |
|
| 185 |
ob_start(); |
| 186 |
?> |
| 187 |
<button type="button" class="btn <?php echo ($proj_id!="0") ? 'wppm_popup_close': 'wppm_task_popup_close' ?> " onclick="<?php echo ($proj_id!=0) ? "wppm_modal_close()":"wppm_task_modal_close()"?>"><?php echo esc_html_e('Close','taskbuilder');?></button> |
| 188 |
<button type="button" class="btn <?php echo ($proj_id!="0") ? 'wppm_popup_action': 'wppm_task_popup_action' ?> " onclick="wppm_set_change_task_details(<?php echo esc_attr($task_id)?>,<?php echo esc_attr($proj_id) ?>);"><?php echo esc_html_e('Save','taskbuilder');?></button> |
| 189 |
<?php |
| 190 |
$footer = ob_get_clean(); |
| 191 |
|
| 192 |
$output = array( |
| 193 |
'body' => $body, |
| 194 |
'footer' => $footer |
| 195 |
); |
| 196 |
echo wp_json_encode( $output ); |
| 197 |
?> |
| 198 |
|