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 / open_task / wppm_edit_task_details.php

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

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