/** * Display the reply form. * * @since 3.0.0 * @param array $args Additional arguments * @return void */ function wpas_get_reply_form($args = array()) { global $wp_query; $post_id = $wp_query->post->ID; $status = wpas_get_ticket_status($post_id); $defaults = array('form_id' => 'wpas-new-reply', 'form_class' => 'wpas-form', 'container' => 'div', 'container_id' => 'wpas-reply-box', 'container_class' => 'wpas-form-group wpas-wysiwyg-textarea', 'textarea_before' => '', 'textarea_after' => '', 'textarea_class' => 'wpas-form-control wpas-wysiwyg'); $args = wp_parse_args($args, $defaults); /** * Filter the form class. * * This can be useful for addons doing something on the reply form, * like adding an upload feature for instance. * * @since 3.0.0 * @var string */ $form_class = apply_filters('wpas_frontend_reply_form_class', $args['form_class']); /** * wpas_ticket_details_reply_form_before hook * * @since 3.0.0 */ do_action('wpas_ticket_details_reply_form_before'); if ('closed' === $status) { echo wpas_get_notification_markup('info', sprintf(__('The ticket has been closed. If you feel that your issue has not been solved yet or something new came up in relation to this ticket, <a href="%s">you can re-open it by clicking this link</a>.', 'awesome-support'), wpas_get_reopen_url())); /** * Check if the ticket is currently open and if the current user * is allowed to post a reply. */ } elseif ('open' === $status && true === wpas_can_reply_ticket()) { ?> <form id="<?php echo $args['form_id']; ?> " class="<?php echo $form_class; ?> " method="post" action="<?php echo get_permalink($post_id); ?> " enctype="multipart/form-data"> <?php /** * wpas_ticket_details_reply_textarea_before hook * * @since 3.0.0 */ do_action('wpas_ticket_details_reply_textarea_before'); ?> <<?php echo $args['container']; ?> id="<?php echo $args['container_id']; ?> " class="<?php echo $args['container_class']; ?> "> <?php echo $args['textarea_before']; /** * Load the visual editor if enabled */ if (true === boolval(wpas_get_option('frontend_wysiwyg_editor'))) { $editor_defaults = apply_filters('wpas_ticket_editor_args', array('media_buttons' => false, 'textarea_name' => 'wpas_user_reply', 'textarea_rows' => 10, 'tabindex' => 2, 'editor_class' => $args['textarea_class'], 'quicktags' => false, 'tinymce' => array('toolbar1' => 'bold,italic,underline,strikethrough,hr,|,bullist,numlist,|,link,unlink', 'toolbar2' => ''))); wp_editor('', 'wpas-reply-wysiwyg', apply_filters('wpas_reply_wysiwyg_args', $editor_defaults)); } else { /** * Define if the reply can be submitted empty or not. * * @since 3.0.0 * @var boolean */ $can_submit_empty = apply_filters('wpas_can_reply_be_empty', false); ?> <textarea class="form-control" rows="10" name="wpas_user_reply" rows="6" id="wpas-reply-textarea" placeholder="<?php _e('Type your reply here.', 'awesome-support'); ?> " <?php if (false === $can_submit_empty) { ?> required="required"<?php } ?> ></textarea> <?php } echo $args['textarea_after']; ?> </<?php echo $args['container']; ?> > <?php /** * wpas_ticket_details_reply_textarea_after hook * * @since 3.0.0 */ do_action('wpas_ticket_details_reply_textarea_after'); if (current_user_can('close_ticket')) { ?> <div class="checkbox"> <label for="close_ticket" data-toggle="tooltip" data-placement="right" title="" data-original-title="<?php _e('No reply is required to close', 'awesome-support'); ?> "> <input type="checkbox" name="wpas_close_ticket" id="close_ticket" value="true"> <?php _e('Close this ticket', 'awesome-support'); ?> </label> </div> <?php } /** * wpas_ticket_details_reply_close_checkbox_after hook * * @since 3.0.0 */ do_action('wpas_ticket_details_reply_close_checkbox_after'); ?> <input type="hidden" name="ticket_id" value="<?php echo $post_id; ?> " /> <?php wp_nonce_field('send_reply', 'client_reply', false, true); wpas_do_field('submit_new_reply'); wpas_make_button(__('Reply', 'awesome-support'), array('name' => 'wpas-submit', 'onsubmit' => __('Please Wait...', 'awesome-support'))); /** * wpas_ticket_details_reply_close_checkbox_after hook * * @since 3.0.0 */ do_action('wpas_ticket_details_reply_form_before_close'); ?> </form> <?php /** * This case is an agent viewing the ticket from the front-end. All actions are tracked in the back-end only, that's why we prevent agents from replying through the front-end. */ } elseif ('open' === $status && false === wpas_can_reply_ticket()) { echo wpas_get_notification_markup('info', sprintf(__('To reply to this ticket, please <a href="%s">go to your admin panel</a>.', 'awesome-support'), add_query_arg(array('post' => $post_id, 'action' => 'edit'), admin_url('post.php')))); } else { echo wpas_get_notification_markup('info', __('You are not allowed to reply to this ticket.', 'awesome-support')); } /** * wpas_ticket_details_reply_form_after hook * * @since 3.0.0 */ do_action('wpas_ticket_details_reply_form_after'); }
_e('Register', 'awesome-support'); ?> </h3> <?php $first_name = new WPAS_Custom_Field('first_name', array('name' => 'first_name', 'args' => array('required' => true, 'field_type' => 'text', 'label' => __('First Name', 'awesome-support'), 'placeholder' => __('First Name', 'awesome-support'), 'sanitize' => 'sanitize_text_field'))); echo $first_name->get_output(); $last_name = new WPAS_Custom_Field('last_name', array('name' => 'last_name', 'args' => array('required' => true, 'field_type' => 'text', 'label' => __('Last Name', 'awesome-support'), 'placeholder' => __('Last Name', 'awesome-support'), 'sanitize' => 'sanitize_text_field'))); echo $last_name->get_output(); $email = new WPAS_Custom_Field('email', array('name' => 'email', 'args' => array('required' => true, 'field_type' => 'email', 'label' => __('Email', 'awesome-support'), 'placeholder' => __('Email', 'awesome-support'), 'sanitize' => 'sanitize_text_field'))); echo $email->get_output(); $pwd = new WPAS_Custom_Field('password', array('name' => 'password', 'args' => array('required' => true, 'field_type' => 'password', 'label' => __('Enter a password', 'awesome-support'), 'placeholder' => __('Password', 'awesome-support'), 'sanitize' => 'sanitize_text_field'))); echo $pwd->get_output(); $showpwd = new WPAS_Custom_Field('pwdshow', array('name' => 'pwdshow', 'args' => array('required' => false, 'field_type' => 'checkbox', 'sanitize' => 'sanitize_text_field', 'options' => array('1' => _x('Show Password', 'Login form', 'awesome-support'))))); echo $showpwd->get_output(); /** * wpas_after_registration_fields hook * * @Awesome_Support::terms_and_conditions_checkbox() */ do_action('wpas_after_registration_fields'); wpas_do_field('register', $redirect_to); wp_nonce_field('register', 'user_registration', false, true); wpas_make_button(__('Create Account', 'awesome-support'), array('onsubmit' => __('Creating Account...', 'awesome-support'))); ?> </form> <?php } ?> </div>
* @since 3.0.0 */ do_action('wpas_submission_form_inside_after_subject'); /** * Filter the description field arguments * * @since 3.2.0 */ $body_args = apply_filters('wpas_description_field_args', array('name' => 'message', 'args' => array('required' => true, 'field_type' => 'wysiwyg', 'label' => __('Description', 'awesome-support'), 'sanitize' => 'sanitize_text_field'))); $body = new WPAS_Custom_Field('message', $body_args); echo $body->get_output(); /** * The wpas_submission_form_inside_before hook has to be placed * right before the submission button. * * @since 3.0.0 */ do_action('wpas_submission_form_inside_before_submit'); wp_nonce_field('new_ticket', 'wpas_nonce', true, true); wpas_make_button(__('Submit ticket', 'awesome-support'), array('name' => 'wpas-submit')); /** * The wpas_submission_form_inside_before hook has to be placed * right before the form closing tag. * * @since 3.0.0 */ do_action('wpas_submission_form_inside_after'); wpas_do_field('submit_new_ticket'); ?> </form> </div>