FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ultimate-faqs
/
includes
Edit File: InstallationWalkthrough.class.php
<?php /** * Class to handle everything related to the walk-through that runs on plugin activation */ if ( ! defined( 'ABSPATH' ) ) exit; class ewdufaqInstallationWalkthrough { public function __construct() { add_action( 'admin_menu', array( $this, 'register_install_screen' ) ); add_action( 'admin_head', array( $this, 'hide_install_screen_menu_item' ) ); add_action( 'admin_init', array( $this, 'redirect' ), 9999 ); add_action( 'admin_head', array( $this, 'admin_enqueue' ) ); add_action( 'wp_ajax_ewd_ufaq_welcome_add_category', array( $this, 'create_category' ) ); add_action( 'wp_ajax_ewd_ufaq_welcome_add_faq', array( $this, 'create_faq' ) ); add_action( 'wp_ajax_ewd_ufaq_welcome_add_faq_page', array( $this, 'add_faqs_page' ) ); add_action( 'wp_ajax_ewd_ufaq_welcome_set_options', array( $this, 'set_options' ) ); } /** * On activation, redirect the user if they haven't used the plugin before * @since 2.0.0 */ public function redirect() { if ( ! get_transient( 'ewd-ufaq-getting-started' ) ) return; delete_transient( 'ewd-ufaq-getting-started' ); if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) return; if ( ! empty( get_posts( array( 'post_type' => EWD_UFAQ_FAQ_POST_TYPE ) ) ) ) { return; } wp_safe_redirect( admin_url( 'index.php?page=ewd-ufaq-getting-started' ) ); exit; } /** * Create the installation admin page * @since 2.0.0 */ public function register_install_screen() { add_dashboard_page( esc_html__( 'Ultimate FAQs - Welcome!', 'ultimate-faqs' ), esc_html__( 'Ultimate FAQs - Welcome!', 'ultimate-faqs' ), 'manage_options', 'ewd-ufaq-getting-started', array($this, 'display_install_screen') ); } /** * Hide the installation admin page from the WordPress sidebar menu * @since 2.0.0 */ public function hide_install_screen_menu_item() { remove_submenu_page( 'index.php', 'ewd-ufaq-getting-started' ); } /** * Create an FAQ category * @since 2.0.0 */ public function create_category() { global $ewd_ufaq_controller; if ( ! check_ajax_referer( 'ewd-ufaq-getting-started', 'nonce' ) || ! current_user_can( $ewd_ufaq_controller->settings->get_setting( 'access-role' ) ) ) { ewdufaqHelper::admin_nopriv_ajax(); } $category_name = isset( $_POST['category_name'] ) ? sanitize_text_field( $_POST['category_name'] ) : ''; $category_description = isset( $_POST['category_description'] ) ? sanitize_textarea_field( $_POST['category_description'] ) : ''; $category_term_id = wp_insert_term( $category_name, EWD_UFAQ_FAQ_CATEGORY_TAXONOMY, array('description' => $category_description) ); echo json_encode ( array( 'category_name' => $category_name, 'category_id' => $category_term_id['term_id'] ) ); exit(); } public function create_faq() { global $ewd_ufaq_controller; if ( ! check_ajax_referer( 'ewd-ufaq-getting-started', 'nonce' ) || ! current_user_can( $ewd_ufaq_controller->settings->get_setting( 'access-role' ) ) ) { ewdufaqHelper::admin_nopriv_ajax(); } $args = array( 'post_title' => isset( $_POST['faq_question'] ) ? sanitize_text_field( $_POST['faq_question'] ) : '', 'post_content' => isset( $_POST['faq_answer'] ) ? sanitize_text_field( $_POST['faq_answer'] ) : '', 'post_status' => 'publish', 'post_type' => EWD_UFAQ_FAQ_POST_TYPE ); $faq_post_id = wp_insert_post( $args ); if ( isset( $_POST['faq_category'] ) and $_POST['faq_category'] ) { wp_set_post_terms( $faq_post_id, sanitize_text_field( $_POST['faq_category'] ), EWD_UFAQ_FAQ_CATEGORY_TAXONOMY ); } exit(); } /** * Add in a page with the ultimate-faqs shortcode * @since 2.0.0 */ public function add_faqs_page() { global $ewd_ufaq_controller; if ( ! check_ajax_referer( 'ewd-ufaq-getting-started', 'nonce' ) || ! current_user_can( $ewd_ufaq_controller->settings->get_setting( 'access-role' ) ) ) { ewdufaqHelper::admin_nopriv_ajax(); } $args = array( 'post_title' => isset($_POST['faq_page_title'] ) ? sanitize_text_field( $_POST['faq_page_title'] ) : '', 'post_content' => '<!-- wp:paragraph --><p></p><!-- /wp:paragraph -->', 'post_status' => 'publish', 'post_type' => 'page' ); $post_id = wp_insert_post( $args ); if ( $post_id ) { $ewd_ufaq_controller->settings->set_setting( 'faq-page', $post_id ); $ewd_ufaq_controller->settings->save_settings(); } exit(); } /** * Set a number of key options selected during the walk-through process * @since 2.0.0 */ public function set_options() { global $ewd_ufaq_controller; if ( ! check_ajax_referer( 'ewd-ufaq-getting-started', 'nonce' ) || ! current_user_can( $ewd_ufaq_controller->settings->get_setting( 'access-role' ) ) ) { ewdufaqHelper::admin_nopriv_ajax(); } $ewd_ufaq_options = get_option( 'ewd-ufaq-settings' ); if ( isset( $_POST['faq_accordion'] ) ) { $ewd_ufaq_options['faq-accordion'] = intval( $_POST['faq_accordion'] ); } if ( isset( $_POST['disable_faq_toggle'] ) ) { $ewd_ufaq_options['disable-faq-toggle'] = intval( $_POST['disable_faq_toggle'] ); } if ( isset( $_POST['group_by_category'] ) ) { $ewd_ufaq_options['group-by-category'] = intval( $_POST['group_by_category'] ); } if ( isset( $_POST['order_by_setting'] ) ) { $ewd_ufaq_options['faq-order-by'] = sanitize_text_field( $_POST['order_by_setting'] ); } update_option( 'ewd-ufaq-settings', $ewd_ufaq_options ); exit(); } /** * Enqueue the admin assets necessary to run the walk-through and display it nicely * @since 2.0.0 */ public function admin_enqueue() { if ( ! isset( $_GET['page'] ) or $_GET['page'] != 'ewd-ufaq-getting-started' ) { return; } wp_enqueue_style( 'ewd-ufaq-admin-css', EWD_UFAQ_PLUGIN_URL . '/assets/css/admin.css', array(), EWD_UFAQ_VERSION ); wp_enqueue_style( 'ewd-ufaq-sap-admin-css', EWD_UFAQ_PLUGIN_URL . '/lib/simple-admin-pages/css/admin.css', array(), EWD_UFAQ_VERSION ); wp_enqueue_style( 'ewd-ufaq-welcome-screen', EWD_UFAQ_PLUGIN_URL . '/assets/css/ewd-ufaq-welcome-screen.css', array(), EWD_UFAQ_VERSION ); wp_enqueue_style( 'ewd-ufaq-admin-settings-css', EWD_UFAQ_PLUGIN_URL . '/lib/simple-admin-pages/css/admin-settings.css', array(), EWD_UFAQ_VERSION ); wp_enqueue_script( 'ewd-ufaq-getting-started', EWD_UFAQ_PLUGIN_URL . '/assets/js/ewd-ufaq-welcome-screen.js', array( 'jquery' ), EWD_UFAQ_VERSION ); wp_enqueue_script( 'ewd-ufaq-admin-settings-js', EWD_UFAQ_PLUGIN_URL . '/lib/simple-admin-pages/js/admin-settings.js', array( 'jquery' ), EWD_UFAQ_VERSION ); wp_enqueue_script( 'ewd-ufaq-admin-spectrum-js', EWD_UFAQ_PLUGIN_URL . '/lib/simple-admin-pages/js/spectrum.js', array( 'jquery' ), EWD_UFAQ_VERSION ); wp_localize_script( 'ewd-ufaq-getting-started', 'ewd_ufaq_getting_started', array( 'nonce' => wp_create_nonce( 'ewd-ufaq-getting-started' ) ) ); } /** * Output the HTML of the walk-through screen * @since 2.0.0 */ public function display_install_screen() { global $ewd_ufaq_controller; $faq_accordion = $ewd_ufaq_controller->settings->get_setting( 'faq-accordion' ); $disable_faq_toggle = $ewd_ufaq_controller->settings->get_setting( 'disable-faq-toggle' ); $group_by_category = $ewd_ufaq_controller->settings->get_setting( 'group-by-category' ); $faq_order_by = $ewd_ufaq_controller->settings->get_setting( 'faq-order-by' ); ?> <div class='ewd-ufaq-welcome-screen'> <div class='ewd-ufaq-welcome-screen-header'> <h1><?php _e('Welcome to Ultimate FAQs', 'ultimate-faqs'); ?></h1> <p><?php _e('Thanks for choosing Ultimate FAQs! The following will help you get started with the setup by creating your first FAQ and category, as well as adding your FAQs to a page and configuring a few key options.', 'ultimate-faqs'); ?></p> </div> <div class='ewd-ufaq-welcome-screen-box ewd-ufaq-welcome-screen-categories ewd-ufaq-welcome-screen-open' data-screen='categories'> <h2><?php _e('1. Create Categories', 'ultimate-faqs'); ?></h2> <div class='ewd-ufaq-welcome-screen-box-content'> <p><?php _e('Categories let you organize your FAQs in a way that\'s easy for you - and your customers - to find.', 'ultimate-faqs'); ?></p> <table class='form-table ewd-ufaq-welcome-screen-created-categories'> <tr class='ewd-ufaq-welcome-screen-add-category-name ewd-ufaq-welcome-screen-box-content-divs'> <th scope='row'><?php _e( 'Category Name', 'ultimate-faqs' ); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <input type='text'> </td> </tr> <tr class='ewd-ufaq-welcome-screen-add-category-description ewd-ufaq-welcome-screen-box-content-divs'> <th scope='row'><?php _e( 'Category Description', 'ultimate-faqs' ); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <textarea></textarea> </td> </tr> <tr> <th scope='row'></th> <td> <div class='ewd-ufaq-welcome-screen-add-category-button'><?php _e('Add Category', 'ultimate-faqs'); ?></div> </td> </tr> <tr></tr> <tr> <td colspan="2"> <h3><?php _e('Created Categories', 'ultimate-faqs'); ?></h3> <table class='ewd-ufaq-welcome-screen-show-created-categories'> <tr> <th class='ewd-ufaq-welcome-screen-show-created-categories-name'><?php _e('Name', 'ultimate-faqs'); ?></th> <th class='ewd-ufaq-welcome-screen-show-created-categories-description'><?php _e('Description', 'ultimate-faqs'); ?></th> </tr> </table> </td> </tr> </table> <div class='ewd-ufaq-welcome-screen-next-button' data-nextaction='questions'><?php _e('Next', 'ultimate-faqs'); ?></div> <div class='clear'></div> </div> </div> <div class='ewd-ufaq-welcome-screen-box ewd-ufaq-welcome-screen-questions' data-screen='questions'> <h2><?php _e('2. Questions & Answers', 'ultimate-faqs'); ?></h2> <div class='ewd-ufaq-welcome-screen-box-content'> <p><?php _e('Create your first set of questions and answers. Don\'t worry, you can always add more later.', 'ultimate-faqs'); ?></p> <table class='form-table ewd-ufaq-welcome-screen-created-categories'> <tr class='ewd-ufaq-welcome-screen-add-faq-question ewd-ufaq-welcome-screen-box-content-divs'> <th scope='row'><?php _e( 'Questions', 'ultimate-faqs' ); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <input type='text'> </td> </tr> <tr class='ewd-ufaq-welcome-screen-add-faq-answer ewd-ufaq-welcome-screen-box-content-divs'> <th scope='row'><?php _e( 'Answer', 'ultimate-faqs' ); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <textarea></textarea> </td> </tr> <tr class='ewd-ufaq-welcome-screen-add-faq-category ewd-ufaq-welcome-screen-box-content-divs'> <th scope='row'><?php _e( 'FAQ Category', 'ultimate-faqs' ); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <select> <option></option> </select> </td> </tr> <tr> <th scope='row'></th> <td> <div class='ewd-ufaq-welcome-screen-add-faq-button'><?php _e('Add FAQ', 'ultimate-faqs'); ?></div> </td> </tr> <tr></tr> <tr> <td colspan="2"> <h3><?php _e('Created FAQs', 'ultimate-faqs'); ?></h3> <table class='ewd-ufaq-welcome-screen-show-created-faqs'> <tr> <th class='ewd-ufaq-welcome-screen-show-created-faq-question'><?php _e('Question', 'ultimate-faqs'); ?></th> <th class='ewd-ufaq-welcome-screen-show-created-faq-answer'><?php _e('Answer', 'ultimate-faqs'); ?></th> <th class='ewd-ufaq-welcome-screen-show-created-faq-category'><?php _e('Category', 'ultimate-faqs'); ?></th> </tr> </table> </td> </tr> </table> <div class='ewd-ufaq-welcome-clear'></div> <div class='ewd-ufaq-welcome-screen-next-button' data-nextaction='faq-page'><?php _e('Next', 'ultimate-faqs'); ?></div> <div class='ewd-ufaq-welcome-screen-previous-button' data-previousaction='questions'><?php _e('Previous', 'ultimate-faqs'); ?></div> <div class='ewd-ufaq-clear'></div> </div> </div> <div class='ewd-ufaq-welcome-screen-box ewd-ufaq-welcome-screen-faq-page' data-screen='faq-page'> <h2><?php _e('3. Add an FAQ Page', 'ultimate-faqs'); ?></h2> <div class='ewd-ufaq-welcome-screen-box-content'> <p><?php _e('You can create a dedicated FAQ page below, or skip this step and add your FAQs to a page you\'ve already created manually.', 'ultimate-faqs'); ?></p> <table class='form-table ewd-ufaq-welcome-screen-faq-page'> <tr class='ewd-ufaq-welcome-screen-add-faq-page-name ewd-ufaq-welcome-screen-box-content-divs'> <th scope='row'><?php _e( 'Page Title', 'ultimate-faqs' ); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <input type='text' value='FAQs'> </td> </tr> <tr> <th scope='row'></th> <td> <div class='ewd-ufaq-welcome-screen-add-faq-page-button' data-nextaction='options'><?php _e( 'Create Page', 'ultimate-faqs' ); ?></div> </td> </tr> </table> <div class='ewd-ufaq-welcome-clear'></div> <div class='ewd-ufaq-welcome-screen-next-button' data-nextaction='options'><?php _e('Next', 'ultimate-faqs'); ?></div> <div class='ewd-ufaq-welcome-screen-previous-button' data-previousaction='questions'><?php _e('Previous', 'ultimate-faqs'); ?></div> <div class='ewd-ufaq-clear'></div> </div> </div> <div class='ewd-ufaq-welcome-screen-box ewd-ufaq-welcome-screen-options' data-screen='options'> <h2><?php _e('4. Set Key Options', 'ultimate-faqs'); ?></h2> <div class='ewd-ufaq-welcome-screen-box-content'> <p><?php _e('Options can always be changed later, but here are a few tha a lot of users want to set for themselves.', 'ultimate-faqs'); ?></p> <table class='form-table'> <tr> <th scope='row'><?php _e('FAQ Accordion', 'ultimate-faqs'); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <fieldset> <div class='sap-admin-hide-radios'> <input type='checkbox' name='faq_accordion' value='1'> </div> <label class='sap-admin-switch'> <input type='checkbox' class='sap-admin-option-toggle' data-inputname='faq_accordion' <?php if ( $faq_accordion == '1' ) { echo 'checked'; } ?>> <span class='sap-admin-switch-slider round'></span> </label> <p class='description'><?php _e('Should the FAQs accordion? (Only one FAQ is open at a time, requires FAQ Toggle)', 'ultimate-faqs'); ?></p> </fieldset> </td> </tr> <tr> <th scope='row'><?php _e('FAQ Toggle', 'ultimate-faqs'); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <fieldset> <div class='sap-admin-hide-radios'> <input type='checkbox' name='disable_faq_toggle' value='1'> </div> <label class='sap-admin-switch'> <input type='checkbox' class='sap-admin-option-toggle' data-inputname='disable_faq_toggle' <?php if ( $disable_faq_toggle == '1' ) { echo 'checked'; } ?>> <span class='sap-admin-switch-slider round'></span> </label> <p class='description'><?php _e('Should the FAQs open on a separate page when clicked, instead of opening and closing?', 'ultimate-faqs'); ?></p> </fieldset> </td> </tr> <tr> <th scope='row'><?php _e('Group FAQs by Category', 'ultimate-faqs'); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <fieldset> <div class='sap-admin-hide-radios'> <input type='checkbox' name='group_by_category' value='1'> </div> <label class='sap-admin-switch'> <input type='checkbox' class='sap-admin-option-toggle' data-inputname='group_by_category' <?php if ( $group_by_category == '1' ) { echo 'checked'; } ?>> <span class='sap-admin-switch-slider round'></span> </label> <p class='description'><?php _e('Should FAQs be grouped by category, or should all categories be mixed together?', 'ultimate-faqs'); ?></p> </fieldset> </td> </tr> <tr> <th scope='row'><?php _e('FAQ Ordering', 'ultimate-faqs'); ?></th> <td class='ewd-ufaq-welcome-screen-option'> <fieldset> <select name='order_by_setting'> <option value='date' <?php if ( $faq_order_by == 'date' ) { echo 'selected';} ?> ><?php _e( 'Created Date', 'ultimate-faqs' ); ?></option> <option value='title' <?php if ( $faq_order_by == 'title' ) { echo 'selected';} ?> ><?php _e( 'Title', 'ultimate-faqs' ); ?></option> <option value='modified' <?php if ( $faq_order_by == 'modified' ) { echo 'selected';} ?> ><?php _e( 'Modified Date', 'ultimate-faqs' ); ?></option> </select> <p class='description'><?php _e('How should individual FAQs be ordered?', 'ultimate-faqs'); ?></p> </fieldset> </td> </tr> </table> <div class='ewd-ufaq-welcome-screen-save-options-button'><?php _e('Save Options', 'ultimate-faqs'); ?></div> <div class='ewd-ufaq-welcome-clear'></div> <div class='ewd-ufaq-welcome-screen-previous-button' data-previousaction='faq-page'><?php _e('Previous', 'ultimate-faqs'); ?></div> <div class='ewd-ufaq-welcome-screen-finish-button'><a href='admin.php?page=ewd-ufaq-settings'><?php _e('Finish', 'ultimate-faqs'); ?></a></div> <div class='ewd-ufaq-clear'></div> </div> </div> <div class='ewd-ufaq-welcome-screen-skip-container'> <a href='admin.php?page=ewd-ufaq-settings'><div class='ewd-ufaq-welcome-screen-skip-button'><?php _e('Skip Setup', 'ultimate-faqs'); ?></div></a> </div> </div> <?php } } ?>
Save
Back