| @@ -7,23 +7,26 @@ | ||
| 7 | 7 | $wppm_project_time = get_option('wppm_project_time'); |
| 8 | 8 | $wppm_default_project_date = get_option('wppm_default_project_date'); |
| 9 | 9 | $wppm_public_projects_permission = get_option('wppm_public_projects_permission'); |
| 10 | 10 | $orderby_sql = sanitize_sql_orderby("name"); |
| 11 | -$categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories ORDER BY $orderby_sql" ); | |
| 11 | +$sql = "SELECT * FROM {$wpdb->prefix}wppm_project_categories ORDER BY {$orderby_sql}"; | |
| 12 | +$categories = $wpdb->get_results($sql); | |
| 12 | 13 | $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true ); |
| 13 | 14 | $wppm_rich_text_editor = get_option('wppm_rich_text_editor'); |
| 14 | 15 | $wppm_toolbar_actions = get_option('wppm_toolbar_actions'); |
| 15 | -if (!($current_user->ID && $current_user->has_cap('wppm_admin') || $current_user->has_cap('manage_options') || $current_user->ID && $current_user->has_cap('wppm_manager'))) { | |
| 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) { | |
| 16 | 19 | exit; |
| 17 | 20 | } |
| 18 | 21 | ?> |
| 19 | -<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"> | |
| 20 | 23 | <div class="wppm_headers row"> |
| 21 | 24 | <div class="col-sm-12"> |
| 22 | 25 | <span class="wppm-heading-inline" style="margin-left:15px;"> |
| 23 | 26 | <?php echo esc_html_e('Create Project','taskbuilder');?> |
| 24 | 27 | </span> |
| 25 | - <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin' ){ ?> | |
| 28 | + <?php if($wppm_can_create_project){ ?> | |
| 26 | 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> |
| 27 | 30 | <?php } ?> |
| 28 | 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> |
| 29 | 32 | </div> |
| @@ -99,8 +102,9 @@ | ||
| 99 | 102 | <div class="col-sm-12"> |
| 100 | 103 | <ui class="wppm_filter_display_users_container"></ui> |
| 101 | 104 | </div> |
| 102 | 105 | </div> |
| 106 | + <?php do_action('wppm_after_project_fields_in_new_project_form');?> | |
| 103 | 107 | <?php if( $wppm_public_projects_permission==1) { ?> |
| 104 | 108 | <div id="wppm_public_projects_permission" class="row"> |
| 105 | 109 | <div class="col-sm-12"> |
| 106 | 110 | <span class="wppm_form_field_label"><b> |
| @@ -112,9 +116,9 @@ | ||
| 112 | 116 | </div> |
| 113 | 117 | <?php } ?> |
| 114 | 118 | <div class="row"> |
| 115 | 119 | <div class="wppm_frm_submit col-sm-12"> |
| 116 | - <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> | |
| 117 | 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> |
| 118 | 122 | <input type="hidden" name="action" value="wppm_create_project" /> |
| 119 | 123 | <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_create_project' ) ); ?>"> |
| 120 | 124 | </div> |
| @@ -143,9 +147,10 @@ | ||
| 143 | 147 | $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :""; |
| 144 | 148 | $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :""; |
| 145 | 149 | $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :""; |
| 146 | 150 | $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :""; |
| 147 | - $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :""; ?> | |
| 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");?> | |
| 148 | 153 | tinymce.remove(); |
| 149 | 154 | tinymce.init({ |
| 150 | 155 | selector:'#wppm_proj_description', |
| 151 | 156 | body_id: 'wppm_proj_description', |
| @@ -157,9 +162,9 @@ | ||
| 157 | 162 | plugins: [ |
| 158 | 163 | 'lists link image directionality paste textcolor' |
| 159 | 164 | ], |
| 160 | 165 | image_advtab: true, |
| 161 | - 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 ?>', | |
| 166 | + toolbar: '<?php echo esc_js( $toolbar ); ?>', | |
| 162 | 167 | branding: false, |
| 163 | 168 | autoresize_bottom_margin: 20, |
| 164 | 169 | browser_spellcheck : true, |
| 165 | 170 | relative_urls : false, |
| @@ -226,27 +231,40 @@ | ||
| 226 | 231 | function wppm_remove_user(e){ |
| 227 | 232 | jQuery(e).parent().parent().remove(); |
| 228 | 233 | } |
| 229 | 234 | |
| 230 | -function wppm_create_project(){ | |
| 231 | - if(!jQuery('#wppm_project_name').val()){ | |
| 232 | - alert("<?php _e('Project title is required','taskbuilder')?>"); | |
| 233 | - return false; | |
| 234 | - } | |
| 235 | - var dataform = new FormData(jQuery('#wppm_add_new_project')[0]); | |
| 236 | - var is_tinymce = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); | |
| 237 | - var description = is_tinymce && tinymce.get('wppm_proj_description') ? tinyMCE.get('wppm_proj_description').getContent() : jQuery('#wppm_proj_description').val().trim(); | |
| 238 | - dataform.append('wppm_proj_description', description); | |
| 239 | - jQuery('#wppm_project_container').html(wppm_admin.loading_html); | |
| 240 | - <?php echo do_action('wppm_create_project_dataform');?> | |
| 241 | - jQuery.ajax({ | |
| 242 | - url: wppm_admin.ajax_url, | |
| 243 | - type: 'POST', | |
| 244 | - data: dataform, | |
| 245 | - processData: false, | |
| 246 | - contentType: false | |
| 247 | - }) | |
| 248 | - .done(function (response_str) { | |
| 249 | - wppm_get_project_list(); | |
| 250 | - }); | |
| 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 | + }); | |
| 251 | 269 | } |
| 252 | 270 | </script> |