| @@ -4,17 +4,29 @@ | ||
| 4 | 4 | } |
| 5 | 5 | global $wpdb,$wppmfunction,$current_user; |
| 6 | 6 | $wppm_users_role = get_option('wppm_user_role'); |
| 7 | 7 | $wppm_project_time = get_option('wppm_project_time'); |
| 8 | -$categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories ORDER BY name" ); | |
| 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 | +} | |
| 9 | 21 | ?> |
| 10 | -<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"> | |
| 11 | 23 | <div class="wppm_headers row"> |
| 12 | 24 | <div class="col-sm-12"> |
| 13 | 25 | <span class="wppm-heading-inline" style="margin-left:15px;"> |
| 14 | 26 | <?php echo esc_html_e('Create Project','taskbuilder');?> |
| 15 | 27 | </span> |
| 16 | - <?php if($current_user->has_cap('manage_options')){ ?> | |
| 28 | + <?php if($wppm_can_create_project){ ?> | |
| 17 | 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> |
| 18 | 30 | <?php } ?> |
| 19 | 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> |
| 20 | 32 | </div> |
| @@ -27,25 +39,27 @@ | ||
| 27 | 39 | <br> |
| 28 | 40 | <input name="name" class="form-control" id="wppm_project_name" type="text" size="40" aria-required="true"><br> |
| 29 | 41 | </div> |
| 30 | 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 } ?> | |
| 31 | 61 | <div class="row"> |
| 32 | - <div class="wppm_project_frm_fields col-sm-6"> | |
| 33 | - <span class="wppm_form_field_label"><b> | |
| 34 | - <?php echo esc_html_e('Start date','taskbuilder'); ?> | |
| 35 | - </b> | |
| 36 | - </span><br> | |
| 37 | - <input name="wppm_start_date" class="form-control" id="wppm_start_date" type="text" value="" size="40" aria-required="true"><br> | |
| 38 | - </div> | |
| 39 | - <div class="wppm_project_frm_fields col-sm-6"> | |
| 40 | - <span class="wppm_form_field_label"><b> | |
| 41 | - <?php echo esc_html_e('End date','taskbuilder'); ?> | |
| 42 | - </b> | |
| 43 | - </span><br> | |
| 44 | - <input name="wppm_end_date" id="wppm_end_date" class="form-control" type="text" value="" size="40" aria-required="true"><br> | |
| 45 | - </div> | |
| 46 | - </div> | |
| 47 | - <div class="row"> | |
| 48 | 62 | <div class="wppm_project_frm_fields col-sm-12"> |
| 49 | 63 | <span class="wppm_form_field_label"><b> |
| 50 | 64 | <b> |
| 51 | 65 | <?php echo esc_html_e('Description','taskbuilder'); ?> |
| @@ -88,13 +102,26 @@ | ||
| 88 | 102 | <div class="col-sm-12"> |
| 89 | 103 | <ui class="wppm_filter_display_users_container"></ui> |
| 90 | 104 | </div> |
| 91 | 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 } ?> | |
| 92 | 118 | <div class="row"> |
| 93 | 119 | <div class="wppm_frm_submit col-sm-12"> |
| 94 | - <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> | |
| 95 | 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> |
| 96 | 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' ) ); ?>"> | |
| 97 | 124 | </div> |
| 98 | 125 | </div> |
| 99 | 126 | </div> |
| 100 | 127 | </form> |
| @@ -106,33 +133,49 @@ | ||
| 106 | 133 | }); |
| 107 | 134 | jQuery("#wppm_end_date").flatpickr({ |
| 108 | 135 | enableTime: <?php echo ($wppm_project_time==1) ? 'true' : 'false' ?>, |
| 109 | 136 | dateFormat: "Y-m-d <?php echo ($wppm_project_time==1) ? 'H:i': '' ?>" |
| 110 | - }); | |
| 111 | - tinymce.remove(); | |
| 112 | - tinymce.init({ | |
| 113 | - selector:'#wppm_proj_description', | |
| 114 | - body_id: 'wppm_proj_description', | |
| 115 | - directionality : '<?php //echo 'rtl'; ?>', | |
| 116 | - menubar: false, | |
| 117 | - statusbar: false, | |
| 118 | - height : '200', | |
| 119 | - width : '100%', | |
| 120 | - plugins: [ | |
| 121 | - 'lists link image directionality paste' | |
| 122 | - ], | |
| 123 | - image_advtab: true, | |
| 124 | - toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image', | |
| 125 | - branding: false, | |
| 126 | - autoresize_bottom_margin: 20, | |
| 127 | - browser_spellcheck : true, | |
| 128 | - relative_urls : false, | |
| 129 | - paste_as_text: true, | |
| 130 | - remove_script_host : false, | |
| 131 | - convert_urls : true, | |
| 132 | - setup: function (editor) { | |
| 133 | - } | |
| 134 | - }); | |
| 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 } ?> | |
| 135 | 178 | jQuery("input[name='wppm_assigned_user']").keypress(function(e) { |
| 136 | 179 | //Enter key |
| 137 | 180 | if (e.which == 13) { |
| 138 | 181 | return false; |
| @@ -188,25 +231,40 @@ | ||
| 188 | 231 | function wppm_remove_user(e){ |
| 189 | 232 | jQuery(e).parent().parent().remove(); |
| 190 | 233 | } |
| 191 | 234 | |
| 192 | -function wppm_create_project(){ | |
| 193 | - if(!jQuery('#wppm_project_name').val()){ | |
| 194 | - alert("<?php _e('Project title is required','taskbuilder')?>"); | |
| 195 | - return false; | |
| 196 | - } | |
| 197 | - var dataform = new FormData(jQuery('#wppm_add_new_project')[0]); | |
| 198 | - jQuery('#wppm_project_container').html(wppm_admin.loading_html); | |
| 199 | - var description = tinyMCE.get('wppm_proj_description').getContent().trim(); | |
| 200 | - dataform.append('wppm_proj_description', description); | |
| 201 | - jQuery.ajax({ | |
| 202 | - url: wppm_admin.ajax_url, | |
| 203 | - type: 'POST', | |
| 204 | - data: dataform, | |
| 205 | - processData: false, | |
| 206 | - contentType: false | |
| 207 | - }) | |
| 208 | - .done(function (response_str) { | |
| 209 | - wppm_get_project_list(); | |
| 210 | - }); | |
| 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 | + }); | |
| 211 | 269 | } |
| 212 | 270 | </script> |