set_vars( $config ); $this->init(); } /** * Set some settings * @since 1.0.0 * @param $config Our config parameters */ public function set_vars( $config ) { require_once trailingslashit( WHIZZIE_DIR ) . 'tgm/class-tgm-plugin-activation.php'; require_once trailingslashit( WHIZZIE_DIR ) . 'tgm/tgm.php'; if( isset( $config['architecture_building_page_slug'] ) ) { $this->architecture_building_page_slug = esc_attr( $config['architecture_building_page_slug'] ); } if( isset( $config['architecture_building_page_title'] ) ) { $this->architecture_building_page_title = esc_attr( $config['architecture_building_page_title'] ); } if( isset( $config['steps'] ) ) { $this->config_steps = $config['steps']; } $this->architecture_building_plugin_path = trailingslashit( dirname( __FILE__ ) ); $relative_url = str_replace( get_template_directory(), '', $this->architecture_building_plugin_path ); $this->architecture_building_plugin_url = trailingslashit( get_template_directory_uri() . $relative_url ); $architecture_building_current_theme = wp_get_theme(); $this->architecture_building_theme_title = $architecture_building_current_theme->get( 'Name' ); $this->architecture_building_theme_name = strtolower( preg_replace( '#[^a-zA-Z]#', '', $architecture_building_current_theme->get( 'Name' ) ) ); $this->architecture_building_page_slug = apply_filters( $this->architecture_building_theme_name . '_theme_setup_wizard_architecture_building_page_slug', $this->architecture_building_theme_name . '-wizard' ); $this->parent_slug = apply_filters( $this->architecture_building_theme_name . '_theme_setup_wizard_parent_slug', '' ); } /** * Hooks and filters * @since 1.0.0 */ public function init() { if ( class_exists( 'TGM_Plugin_Activation' ) && isset( $GLOBALS['tgmpa'] ) ) { add_action( 'init', array( $this, 'get_tgmpa_instance' ), 30 ); add_action( 'init', array( $this, 'set_tgmpa_url' ), 40 ); } add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); add_action( 'admin_menu', array( $this, 'menu_page' ) ); add_action( 'admin_init', array( $this, 'get_plugins' ), 30 ); add_filter( 'tgmpa_load', array( $this, 'tgmpa_load' ), 10, 1 ); add_action( 'wp_ajax_setup_plugins', array( $this, 'setup_plugins' ) ); add_action( 'wp_ajax_architecture_building_setup_widgets', array( $this, 'architecture_building_setup_widgets' ) ); } public function enqueue_scripts() { wp_enqueue_style( 'architecture-building-dashboard-style', get_template_directory_uri() . '/inc/dashboard/assets/css/dashboard.css'); wp_register_script( 'architecture-building-dashboard-script', get_template_directory_uri() . '/inc/dashboard/assets/js/dashboard.js', array( 'jquery' ), time() ); wp_localize_script( 'architecture-building-dashboard-script', 'whizzie_params', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'wpnonce' => wp_create_nonce( 'whizzie_nonce' ), 'verify_text' => esc_html( 'verifying', 'architecture-building' ) ) ); wp_enqueue_script( 'architecture-building-dashboard-script' ); } public static function get_instance() { if ( ! self::$instance ) { self::$instance = new self; } return self::$instance; } public function tgmpa_load( $status ) { return is_admin() || current_user_can( 'install_themes' ); } /** * Get configured TGMPA instance * * @access public * @since 1.1.2 */ public function get_tgmpa_instance() { $this->tgmpa_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); } /** * Update $tgmpa_menu_slug and $tgmpa_parent_slug from TGMPA instance * * @access public * @since 1.1.2 */ public function set_tgmpa_url() { $this->tgmpa_menu_slug = ( property_exists( $this->tgmpa_instance, 'menu' ) ) ? $this->tgmpa_instance->menu : $this->tgmpa_menu_slug; $this->tgmpa_menu_slug = apply_filters( $this->architecture_building_theme_name . '_theme_setup_wizard_tgmpa_menu_slug', $this->tgmpa_menu_slug ); $tgmpa_parent_slug = ( property_exists( $this->tgmpa_instance, 'parent_slug' ) && $this->tgmpa_instance->parent_slug !== 'themes.php' ) ? 'admin.php' : 'themes.php'; $this->tgmpa_url = apply_filters( $this->architecture_building_theme_name . '_theme_setup_wizard_tgmpa_url', $tgmpa_parent_slug . '?page=' . $this->tgmpa_menu_slug ); } /** * Make a modal screen for the wizard */ public function menu_page() { add_theme_page( esc_html( $this->architecture_building_page_title ), esc_html( $this->architecture_building_page_title ), 'manage_options', $this->architecture_building_page_slug, array( $this, 'wizard_page' ) ); } /** * Make an interface for the wizard */ public function wizard_page() { tgmpa_load_bulk_installer(); if ( ! class_exists( 'TGM_Plugin_Activation' ) || ! isset( $GLOBALS['tgmpa'] ) ) { die( esc_html__( 'Failed to find TGM', 'architecture-building' ) ); } $url = wp_nonce_url( add_query_arg( array( 'plugins' => 'go' ) ), 'whizzie-setup' ); $method = ''; $fields = array_keys( $_POST ); if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, $fields ) ) ) { return true; } if ( ! WP_Filesystem( $creds ) ) { request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, $fields ); return true; } $architecture_building_theme = wp_get_theme(); $architecture_building_theme_title = $architecture_building_theme->get( 'Name' ); ?>

get_steps(); echo '
    '; foreach ( $architecture_building_steps as $architecture_building_step ) { $class = 'step step-' . esc_attr( $architecture_building_step['id'] ); echo '
  • '; printf( '

    %s

    ', esc_html( $architecture_building_step['title'] ) ); $content = call_user_func( array( $this, $architecture_building_step['view'] ) ); if ( isset( $content['summary'] ) ) { printf( '
    %s
    ', wp_kses_post( $content['summary'] ) ); } if ( isset( $content['detail'] ) ) { printf( '
    %s
    ', wp_kses_post( $content['detail'] ) ); } if ( isset( $architecture_building_step['button_text'] ) && $architecture_building_step['button_text'] ) { printf( '', esc_attr( $architecture_building_step['callback'] ), esc_attr( $architecture_building_step['id'] ), esc_html( $architecture_building_step['button_text'] ) ); } echo '
  • '; } echo '
'; ?>
    '; echo '' . esc_html( $step_number ) . ''; echo ''; $step_number++; } ?>

> Appearance >> Customize >> Site Identity >> Upload your logo or Add site title and site description.','architecture-building'); ?>

> Appearance >> Customize >> Custom Page Settings >> Contact Details.','architecture-building'); ?>

> Appearance >> Menus >> Create Menus >> Add pages, post or custom link then save it.','architecture-building'); ?>

> Appearance >> Customize >> Custom Page Settings >> Social Media >> Add social links.','architecture-building'); ?>

> Appearance >> Widgets >> Add widgets in footer 1, footer 2, footer 3, footer 4.','architecture-building'); ?>

> Appearance >> Customize >> Custom Page Settings >> Footer Text >> Add copyright text.','architecture-building'); ?>

> Pages >> Add New Page >> Select "Custom Home Page" from templates. >> Publish it.','architecture-building'); ?>

> Post >> Add New Post >> Add title, content and featured image >> Publish it.','architecture-building'); ?>

> Appearance >> Customize >> Custom Page Settings >> Slider Settings >> Select post.','architecture-building'); ?>

> Post >> Add New Post >> Add title, content and featured image >> Publish it.','architecture-building'); ?>

> Appearance >> Customize >> Custom Page Settings >> Services Settings >> Select category','architecture-building'); ?>

config_steps; $architecture_building_steps = array( 'plugins' => array( 'id' => 'plugins', 'title' => __( 'Install and Activate Recommended Plugins', 'architecture-building' ), 'icon' => 'admin-plugins', 'view' => 'get_step_plugins', 'callback' => 'install_plugins', 'button_text' => __( 'Install Recommended Plugins', 'architecture-building' ), 'can_skip' => true ), 'widgets' => array( 'id' => 'widgets', 'title' => __( 'Begin With Demo Import', 'architecture-building' ), 'icon' => 'welcome-widgets-menus', 'view' => 'get_step_widgets', 'callback' => 'architecture_building_install_widgets', 'button_text' => __( 'Begin With Demo Import', 'architecture-building' ), 'can_skip' => false ), 'done' => array( 'id' => 'done', 'title' => __( 'Customize Your Site', 'architecture-building' ), 'icon' => 'yes', 'view' => 'get_step_done', 'callback' => '' ) ); // Iterate through each step and replace with dev config values if( $architecture_building_dev_steps ) { // Configurable elements - these are the only ones the dev can update from dashboard-settings.php $can_config = array( 'title', 'icon', 'button_text', 'can_skip' ); foreach( $architecture_building_dev_steps as $architecture_building_dev_step ) { // We can only proceed if an ID exists and matches one of our IDs if( isset( $architecture_building_dev_step['id'] ) ) { $id = $architecture_building_dev_step['id']; if( isset( $architecture_building_steps[$id] ) ) { foreach( $can_config as $element ) { if( isset( $architecture_building_dev_step[$element] ) ) { $architecture_building_steps[$id][$element] = $architecture_building_dev_step[$element]; } } } } } } return $architecture_building_steps; } /** * Get the content for the plugins step * @return $content Array */ public function get_step_plugins() { $plugins = $this->get_plugins(); $content = array(); // Add plugin name and type at the top $content['detail'] = '
'; $content['detail'] .= '

Plugin

'; $content['detail'] .= '

Type

'; $content['detail'] .= '
'; // The detail element is initially hidden from the user $content['detail'] .= ''; return $content; } /** * Print the content for the widgets step * @since 1.1.0 */ public function get_step_widgets() { ?>

architecture_building_theme_title ) ); ?>

array(), 'install' => array(), 'update' => array(), 'activate' => array() ); foreach( $instance->plugins as $slug=>$plugin ) { if( $instance->is_plugin_active( $slug ) && false === $instance->does_plugin_have_update( $slug ) ) { // Plugin is installed and up to date continue; } else { $plugins['all'][$slug] = $plugin; if( ! $instance->is_plugin_installed( $slug ) ) { $plugins['install'][$slug] = $plugin; } else { if( false !== $instance->does_plugin_have_update( $slug ) ) { $plugins['update'][$slug] = $plugin; } if( $instance->can_plugin_activate( $slug ) ) { $plugins['activate'][$slug] = $plugin; } } } } return $plugins; } /** * Get the widgets.wie file from the /content folder * @return Mixed Either the file or false * @since 1.1.0 */ public function has_widget_file() { if( file_exists( $this->widget_file_url ) ) { return true; } return false; } public function setup_plugins() { if ( ! check_ajax_referer( 'whizzie_nonce', 'wpnonce' ) || empty( $_POST['slug'] ) ) { wp_send_json_error( array( 'error' => 1, 'message' => esc_html__( 'No Slug Found','architecture-building' ) ) ); } $json = array(); // send back some json we use to hit up TGM $plugins = $this->get_plugins(); // what are we doing with this plugin? foreach ( $plugins['activate'] as $slug => $plugin ) { if ( $_POST['slug'] == $slug ) { $json = array( 'url' => admin_url( $this->tgmpa_url ), 'plugin' => array( $slug ), 'tgmpa-page' => $this->tgmpa_menu_slug, 'plugin_status' => 'all', '_wpnonce' => wp_create_nonce( 'bulk-plugins' ), 'action' => 'tgmpa-bulk-activate', 'action2' => - 1, 'message' => esc_html__( 'Activating Plugin','architecture-building' ), ); break; } } foreach ( $plugins['update'] as $slug => $plugin ) { if ( $_POST['slug'] == $slug ) { $json = array( 'url' => admin_url( $this->tgmpa_url ), 'plugin' => array( $slug ), 'tgmpa-page' => $this->tgmpa_menu_slug, 'plugin_status' => 'all', '_wpnonce' => wp_create_nonce( 'bulk-plugins' ), 'action' => 'tgmpa-bulk-update', 'action2' => - 1, 'message' => esc_html__( 'Updating Plugin','architecture-building' ), ); break; } } foreach ( $plugins['install'] as $slug => $plugin ) { if ( $_POST['slug'] == $slug ) { $json = array( 'url' => admin_url( $this->tgmpa_url ), 'plugin' => array( $slug ), 'tgmpa-page' => $this->tgmpa_menu_slug, 'plugin_status' => 'all', '_wpnonce' => wp_create_nonce( 'bulk-plugins' ), 'action' => 'tgmpa-bulk-install', 'action2' => - 1, 'message' => esc_html__( 'Installing Plugin','architecture-building' ), ); break; } } if ( $json ) { $json['hash'] = md5( serialize( $json ) ); // used for checking if duplicates happen, move to next plugin wp_send_json( $json ); } else { wp_send_json( array( 'done' => 1, 'message' => esc_html__( 'Success','architecture-building' ) ) ); } exit; } /** * Imports the Demo Content * @since 1.1.0 */ public function architecture_building_setup_widgets(){ require get_theme_file_path( '/inc/dashboard/setup.php' ); exit; } }