PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.7
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.7
6.0.7 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 All 59 releases
← All changes | includes/admin/projects/wppm_add_new_project.php +127 -68 1.0.0 → 6.0.7 View file →
@@ -3,17 +3,30 @@
3 3 exit; // Exit if accessed directly
4 4 }
5 5 global $wpdb,$wppmfunction,$current_user;
6 6 $wppm_users_role = get_option('wppm_user_role');
7 -$categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories ORDER BY name" );
7 +$wppm_project_time = get_option('wppm_project_time');
8 +$wppm_default_project_date = get_option('wppm_default_project_date');
9 +$wppm_public_projects_permission = get_option('wppm_public_projects_permission');
10 +$orderby_sql = sanitize_sql_orderby("name");
11 +$sql = "SELECT * FROM {$wpdb->prefix}wppm_project_categories ORDER BY {$orderby_sql}";
12 +$categories = $wpdb->get_results($sql);
13 +$wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
14 +$wppm_rich_text_editor = get_option('wppm_rich_text_editor');
15 +$wppm_toolbar_actions = get_option('wppm_toolbar_actions');
16 +$wppm_can_create_project = ( $current_user->ID && $current_user->has_cap('wppm_admin') ) || $current_user->has_cap('manage_options') || ( $current_user->ID && $current_user->has_cap('wppm_manager') );
17 +$wppm_can_create_project = apply_filters( 'wppm_can_create_project', $wppm_can_create_project, $current_user->ID );
18 +if (!$wppm_can_create_project) {
19 + exit;
20 +}
8 21 ?>
9 -<form class='wppm_add_new_project wppm_bootstrap' onsubmit="return wppm_create_project();" id="wppm_add_new_project" method="post">
22 +<form class='wppm_add_new_project wppm_bootstrap' id="wppm_add_new_project" method="post">
10 23 <div class="wppm_headers row">
11 24 <div class="col-sm-12">
12 25 <span class="wppm-heading-inline" style="margin-left:15px;">
13 26 <?php echo esc_html_e('Create Project','taskbuilder');?>
14 27 </span>
15 - <?php if($current_user->has_cap('manage_options')){ ?>
28 + <?php if($wppm_can_create_project){ ?>
16 29 <span class="wppm-add-new-btn btn-primary" id="wppm_add_new_proj" onclick="wppm_add_new_project()" ><span style="margin-right:5px;"></span><span><?php echo esc_html_e('+Create Project','taskbuilder');?></span></span>
17 30 <?php } ?>
18 31 <span class="wppm-add-new-btn btn-primary" id="wppm_project_list" onclick="wppm_get_project_list()" ><span style="margin-right:5px;"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list-symbol.svg'); ?>" alt="list-symbol"></span><span><?php echo esc_html_e('Project List','taskbuilder');?></span></span>
19 32 </div>
@@ -26,25 +39,27 @@
26 39 <br>
27 40 <input name="name" class="form-control" id="wppm_project_name" type="text" size="40" aria-required="true"><br>
28 41 </div>
29 42 </div>
43 + <?php if($wppm_default_project_date==1){ ?>
44 + <div class="row">
45 + <div class="wppm_project_frm_fields col-sm-6">
46 + <span class="wppm_form_field_label"><b>
47 + <?php echo esc_html_e('Start date','taskbuilder'); ?>
48 + </b>
49 + </span><br>
50 + <input name="wppm_start_date" class="form-control" id="wppm_start_date" type="text" value="" size="40" aria-required="true"><br>
51 + </div>
52 + <div class="wppm_project_frm_fields col-sm-6">
53 + <span class="wppm_form_field_label"><b>
54 + <?php echo esc_html_e('End date','taskbuilder'); ?>
55 + </b>
56 + </span><br>
57 + <input name="wppm_end_date" id="wppm_end_date" class="form-control" type="text" value="" size="40" aria-required="true"><br>
58 + </div>
59 + </div>
60 + <?php } ?>
30 61 <div class="row">
31 - <div class="wppm_project_frm_fields col-sm-6">
32 - <span class="wppm_form_field_label"><b>
33 - <?php echo esc_html_e('Start date','taskbuilder'); ?>
34 - </b>
35 - </span><br>
36 - <input name="wppm_start_date" class="form-control" id="wppm_start_date" type="text" value="" size="40" aria-required="true"><br>
37 - </div>
38 - <div class="wppm_project_frm_fields col-sm-6">
39 - <span class="wppm_form_field_label"><b>
40 - <?php echo esc_html_e('End date','taskbuilder'); ?>
41 - </b>
42 - </span><br>
43 - <input name="wppm_end_date" id="wppm_end_date" class="form-control" type="text" value="" size="40" aria-required="true"><br>
44 - </div>
45 - </div>
46 - <div class="row">
47 62 <div class="wppm_project_frm_fields col-sm-12">
48 63 <span class="wppm_form_field_label"><b>
49 64 <b>
50 65 <?php echo esc_html_e('Description','taskbuilder'); ?>
@@ -87,13 +102,26 @@
87 102 <div class="col-sm-12">
88 103 <ui class="wppm_filter_display_users_container"></ui>
89 104 </div>
90 105 </div>
106 + <?php do_action('wppm_after_project_fields_in_new_project_form');?>
107 + <?php if( $wppm_public_projects_permission==1) { ?>
108 + <div id="wppm_public_projects_permission" class="row">
109 + <div class="col-sm-12">
110 + <span class="wppm_form_field_label"><b>
111 + <input type="checkbox" name="wppm_public_project"" />
112 + <label id="wppm_public_project_label"><?php echo esc_html_e('Make Project Public','taskbuilder'); ?></label>
113 + </b>
114 + </span><br>
115 + </div>
116 + </div>
117 + <?php } ?>
91 118 <div class="row">
92 119 <div class="wppm_frm_submit col-sm-12">
93 - <button type="submit" class="wppm-submit-btn" id="wppm-submit-proj-btn"><?php echo esc_html_e('Add Project','taskbuilder'); ?></button>
120 + <button type="submit" class="wppm-submit-btn" id="wppm-submit-proj-btn" onclick="wppm_create_project(event)"><?php echo esc_html_e('Add Project','taskbuilder'); ?></button>
94 121 <button type="button" class="wppm_reset_btn" id="wppm_submit_proj_reset_btn" onclick="wppm_add_new_project()"><?php echo esc_html_e('Reset Form','taskbuilder') ?></button>
95 122 <input type="hidden" name="action" value="wppm_create_project" />
123 + <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_create_project' ) ); ?>">
96 124 </div>
97 125 </div>
98 126 </div>
99 127 </form>
@@ -99,39 +127,55 @@
99 127 </form>
100 128 <script>
101 129 jQuery( document ).ready( function( jQuery ) {
102 130 jQuery("#wppm_start_date").flatpickr({
103 - enableTime: true,
104 - dateFormat: "Y-m-d H:i",
131 + enableTime: <?php echo ($wppm_project_time == 1) ? 'true' : 'false' ?>,
132 + dateFormat: "Y-m-d <?php echo ($wppm_project_time == 1) ? 'H:i': '' ?>"
105 133 });
106 134 jQuery("#wppm_end_date").flatpickr({
107 - enableTime: true,
108 - dateFormat: "Y-m-d H:i"
109 - });
110 - tinymce.remove();
111 - tinymce.init({
112 - selector:'#wppm_proj_description',
113 - body_id: 'wppm_proj_description',
114 - directionality : '<?php //echo 'rtl'; ?>',
115 - menubar: false,
116 - statusbar: false,
117 - height : '200',
118 - width : '100%',
119 - plugins: [
120 - 'lists link image directionality paste'
121 - ],
122 - image_advtab: true,
123 - toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
124 - branding: false,
125 - autoresize_bottom_margin: 20,
126 - browser_spellcheck : true,
127 - relative_urls : false,
128 - paste_as_text: true,
129 - remove_script_host : false,
130 - convert_urls : true,
131 - setup: function (editor) {
132 - }
133 - });
135 + enableTime: <?php echo ($wppm_project_time==1) ? 'true' : 'false' ?>,
136 + dateFormat: "Y-m-d <?php echo ($wppm_project_time==1) ? 'H:i': '' ?>"
137 + });<?php
138 + if((!empty($wppm_rich_text_editor)) && ($wppm_rich_text_editor == 1)){
139 + $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
140 + $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";
141 + $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";
142 + $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";
143 + $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)? ' alignleft aligncenter alignright ' :"";
144 + $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :"";
145 + $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";
146 + $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";
147 + $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
148 + $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
149 + $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
150 + $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
151 + $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
152 + $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");?>
153 + tinymce.remove();
154 + tinymce.init({
155 + selector:'#wppm_proj_description',
156 + body_id: 'wppm_proj_description',
157 + directionality : '<?php //echo 'rtl'; ?>',
158 + menubar: false,
159 + statusbar: false,
160 + height : '200',
161 + width : '100%',
162 + plugins: [
163 + 'lists link image directionality paste textcolor'
164 + ],
165 + image_advtab: true,
166 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
167 + branding: false,
168 + autoresize_bottom_margin: 20,
169 + browser_spellcheck : true,
170 + relative_urls : false,
171 + paste_as_text: true,
172 + remove_script_host : false,
173 + convert_urls : true,
174 + setup: function (editor) {
175 + }
176 + });
177 + <?php } ?>
134 178 jQuery("input[name='wppm_assigned_user']").keypress(function(e) {
135 179 //Enter key
136 180 if (e.which == 13) {
137 181 return false;
@@ -187,25 +231,40 @@
187 231 function wppm_remove_user(e){
188 232 jQuery(e).parent().parent().remove();
189 233 }
190 234
191 -function wppm_create_project(){
192 - if(!jQuery('#wppm_project_name').val()){
193 - alert("<?php _e('Project title is required','taskbuilder')?>");
194 - return false;
195 - }
196 - var dataform = new FormData(jQuery('#wppm_add_new_project')[0]);
197 - jQuery('#wppm_project_container').html(wppm_admin.loading_html);
198 - var description = tinyMCE.get('wppm_proj_description').getContent().trim();
199 - dataform.append('wppm_proj_description', description);
200 - jQuery.ajax({
201 - url: wppm_admin.ajax_url,
202 - type: 'POST',
203 - data: dataform,
204 - processData: false,
205 - contentType: false
206 - })
207 - .done(function (response_str) {
208 - wppm_get_project_list();
209 - });
235 +function wppm_create_project(e){
236 + e.preventDefault(); // Always prevent default
237 +
238 + if (!jQuery('#wppm_project_name').val()) {
239 + alert('Project title is required');
240 + return false;
241 + }
242 + var dataform = new FormData(jQuery('#wppm_add_new_project')[0]);
243 + var is_tinymce = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();
244 + var description = is_tinymce && tinymce.get('wppm_proj_description') ? tinyMCE.get('wppm_proj_description').getContent() : jQuery('#wppm_proj_description').val().trim();
245 + dataform.append('wppm_proj_description', description);
246 + var validation = {
247 + isValid: true
248 + };
249 + jQuery(document).trigger('wppm_create_project_js_function', [
250 + dataform,
251 + validation
252 + ]);
253 + if(!validation.isValid){
254 + return false;
255 + }
256 + jQuery(document).trigger('wppm_create_project_dataform', [dataform]);
257 + jQuery('#wppm_project_container').html(wppm_admin.loading_html);
258 + <?php //echo do_action('wppm_create_project_dataform');?>
259 + jQuery.ajax({
260 + url: wppm_admin.ajax_url,
261 + type: 'POST',
262 + data: dataform,
263 + processData: false,
264 + contentType: false
265 + })
266 + .done(function (response_str) {
267 + wppm_get_project_list();
268 + });
210 269 }
211 270 </script>