config = $config; self::$instance->setup_config(); self::$instance->setup_actions(); } } } /** * Setup the class props based on the config array. */ public function setup_config() { $theme = wp_get_theme(); if ( is_child_theme() ) { $this->theme_name = $theme->parent()->get( 'Name' ); $this->theme = $theme->parent(); } else { $this->theme_name = $theme->get( 'Name' ); $this->theme = $theme->parent(); } $this->theme_version = $theme->get( 'Version' ); $this->theme_slug = $theme->get_template(); $this->menu_name = isset( $this->config['menu_name'] ) ? $this->config['menu_name'] : 'About ' . $this->theme_name; $this->page_name = isset( $this->config['page_name'] ) ? $this->config['page_name'] : 'About ' . $this->theme_name; $this->notification = isset( $this->config['notification'] ) ? $this->config['notification'] : ( '

' . sprintf( 'Welcome! Thank you for choosing %1$s! To get started please make sure you visit our %2$swelcome page%3$s.', $this->theme_name, '', '' ) . '

' . sprintf( 'Get started with %s', $this->theme_name ) . '

' ); $this->tabs = isset( $this->config['tabs'] ) ? $this->config['tabs'] : array(); } /** * Setup the actions used for this page. */ public function setup_actions() { add_action( 'admin_menu', array( $this, 'register' ) ); add_action( 'wp_loaded', array( $this, 'hide_notice' ) ); /* activation notice */ add_action( 'admin_notices', array( $this, 'activation_admin_notice' ) ); /* enqueue script and style for about page */ add_action( 'admin_enqueue_scripts', array( $this, 'style_and_scripts' ) ); } /** * Register the menu page under Appearance menu. */ function register() { if ( ! empty( $this->menu_name ) && ! empty( $this->page_name ) ) { add_theme_page( $this->menu_name, $this->page_name, 'activate_plugins', 'thinkup-welcome', array( $this, 'page_render', ) ); } } /** * Adds an admin notice upon successful activation. */ public function activation_admin_notice() { global $pagenow; add_action( 'admin_notices', array( $this, 'welcome_admin_notice' ), 99 ); } /** * Display an admin notice linking to the about page */ public function welcome_admin_notice() { if ( ! empty( $this->notification ) ) { // display notice if not previously dismissed if ( current_user_can( 'edit_theme_options' ) && !get_option( 'grow_thinkup_notice_welcome' ) ) { echo '
'; echo ''; echo '' . esc_html__('Dismiss this notice.', 'grow'). ''; echo ''; echo wp_kses_post( $this->notification ); echo '
'; } } } /** * Render the main content page. */ public function page_render() { if ( ! empty( $this->config['welcome_title'] ) ) { $welcome_title = $this->config['welcome_title']; } if ( ! empty( $this->config['welcome_content'] ) ) { $welcome_content = $this->config['welcome_content']; } if ( ! empty( $welcome_title ) || ! empty( $welcome_content ) || ! empty( $this->tabs ) ) { echo '
'; if ( ! empty( $welcome_title ) ) { echo '

'; echo esc_html( $welcome_title ); if ( ! empty( $this->theme_version ) ) { echo esc_html( $this->theme_version ) . ' '; } echo '

'; } if ( ! empty( $welcome_content ) ) { echo '
' . wp_kses_post( $welcome_content ) . '
'; } /* Add upgrade box */ $upgrade = $this->config['upgrade']; echo '
'; echo '
'; echo '
'; echo '

' . esc_html( $upgrade['price_discount'] ) . '

'; echo '' . esc_html( $upgrade['button'] ) . ''; echo '
'; echo ''; echo '
'; echo '
'; /* Display tabs */ if ( ! empty( $this->tabs ) ) { $active_tab = isset( $_GET['tab'] ) ? wp_unslash( $_GET['tab'] ) : 'getting_started'; echo ''; /* Display content for current tab */ if ( method_exists( $this, $active_tab ) ) { $this->$active_tab(); } } echo '
'; } } /** * Getting started tab */ public function getting_started() { if ( ! empty( $this->config['getting_started'] ) ) { $getting_started = $this->config['getting_started']; if ( ! empty( $getting_started ) ) { echo '
'; foreach ( $getting_started as $getting_started_item ) { echo '
'; if ( ! empty( $getting_started_item['title'] ) ) { echo '

' . $getting_started_item['title'] . '

'; } if ( ! empty( $getting_started_item['text'] ) ) { echo '

' . $getting_started_item['text'] . '

'; } if ( ! empty( $getting_started_item['button_link'] ) && ! empty( $getting_started_item['button_label'] ) ) { echo '

'; $button_class = ''; if ( $getting_started_item['is_button'] ) { $button_class = 'button button-primary'; } $button_new_tab = '_self'; if ( isset( $getting_started_item['is_new_tab'] ) ) { if ( $getting_started_item['is_new_tab'] ) { $button_new_tab = '_blank'; } } echo '' . $getting_started_item['button_label'] . ''; echo '

'; } echo '
'; } echo '
'; } } } /** * Documentation */ public function documentation() { echo '
'; if ( ! empty( $this->config['documentation'] ) ) { $documentation_steps = $this->config['documentation']; if ( ! empty( $documentation_steps ) ) { $section_name = NULL; echo '
'; echo '

' . $documentation_steps['intro']['title'] . '

'; echo wpautop( $documentation_steps['intro']['text_main'] ); echo '
'; foreach ( $documentation_steps as $documentation_step ) { /* Hide feature is needed */ if ( $documentation_step['hidden'] == 'true' ) { $documentation_step['hidden'] = ' hidden'; } /* Determine if side text should be added */ if( ! empty( $documentation_step['text_side'] ) ) { $class_main = ' menu-item-main-hasside'; } else { $class_main = NULL; } echo ''; $section_name = $documentation_step['section']; } } } echo '
'; } /** * Support tab */ public function support_content() { echo '
'; if ( ! empty( $this->config['support_content'] ) ) { $support_steps = $this->config['support_content']; if ( ! empty( $support_steps ) ) { foreach ( $support_steps as $support_step ) { echo '
'; if ( ! empty( $support_step['title'] ) ) { echo '

'; if ( ! empty( $support_step['icon'] ) ) { echo ''; } echo $support_step['title']; echo '

'; } if ( ! empty( $support_step['text'] ) ) { echo '

' . $support_step['text'] . '

'; } if ( ! empty( $support_step['button_link'] ) && ! empty( $support_step['button_label'] ) ) { echo '

'; $button_class = ''; if ( $support_step['is_button'] ) { $button_class = 'button button-primary'; } $button_new_tab = '_self'; if ( isset( $support_step['is_new_tab'] ) ) { if ( $support_step['is_new_tab'] ) { $button_new_tab = '_blank'; } } echo '' . $support_step['button_label'] . ''; echo '

'; } echo '
'; } } } echo '
'; } /** * Free vs PRO tab */ public function free_pro() { $free_pro = isset( $this->config['free_pro'] ) ? $this->config['free_pro'] : array(); if ( ! empty( $free_pro ) ) { if ( ! empty( $free_pro['free_theme_name'] ) && ! empty( $free_pro['pro_theme_name'] ) && ! empty( $free_pro['features'] ) && is_array( $free_pro['features'] ) ) { echo '
'; echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; foreach ( $free_pro['features'] as $feature ) { /* Hide feature is needed */ if ( $feature['hidden'] == 'true' ) { $feature['hidden'] = ' class="hidden"'; } echo ''; if ( ! empty( $feature['title'] ) || ! empty( $feature['description'] ) ) { echo ''; } /* Add in for lite version */ if ( ! empty( $feature['is_in_lite'] ) && ( $feature['is_in_lite'] == 'true' ) && empty( $feature['is_in_lite_text'] ) ) { echo ''; } else if ( ! empty( $feature['is_in_lite_text'] ) ) { echo ''; } else { echo ''; } /* Add in for pro version */ if ( ! empty( $feature['is_in_pro'] ) && ( $feature['is_in_pro'] == 'true' ) && empty( $feature['is_in_pro_text'] ) ) { echo ''; } else if ( ! empty( $feature['is_in_pro_text'] ) ) { echo ''; } else { echo ''; } echo ''; } if ( ! empty( $free_pro['pro_theme_link'] ) && ! empty( $free_pro['get_pro_theme_label'] ) ) { echo ''; echo ''; echo ''; echo ''; } echo ''; echo '
' . esc_html( $free_pro['free_theme_name'] ) . '' . esc_html( $free_pro['pro_theme_name'] ) . '
'; if ( ! empty( $feature['title'] ) ) { echo '

' . wp_kses_post( $feature['title'] ) . '

'; } if ( ! empty( $feature['description'] ) ) { echo '

' . wp_kses_post( $feature['description'] ) . '

'; } echo '
' . $feature['is_in_lite_text'] . '' . $feature['is_in_pro_text'] . '
' . wp_kses_post( $free_pro['get_pro_theme_label'] ) . '
'; echo '
'; echo '
'; } } } /** * Load css and scripts for the about page */ public function style_and_scripts( $hook_suffix ) { global $pagenow; // enqueue css files if ( 'themes.php' === $pagenow || 'appearance_page_thinkup-welcome' == $hook_suffix ) { wp_enqueue_style( 'grow-thinkup-about-page-css', get_template_directory_uri() . '/admin/main-toolbox/assets/css/toolbox-backend.css' ); } // enqueue js files if ( 'appearance_page_thinkup-welcome' == $hook_suffix ) { wp_enqueue_script( 'grow-thinkup-about-page-js', ( get_template_directory_uri() . '/admin/main-toolbox/assets/js/toolbox-backend.js' ), array( 'jquery' ), '', 'true' ); } } /** * Hide welcome notice when dismissed. */ public function hide_notice() { if (isset($_GET['grow-thinkup-hide-notice']) && isset($_GET['_grow_thinkup_notice_nonce'])) { if (!wp_verify_nonce($_GET['_grow_thinkup_notice_nonce'], 'grow_thinkup_hide_notices_nonce')) { wp_die(esc_html__('Action failed. Please refresh the page and retry.', 'grow')); } if (!current_user_can('edit_theme_options')) { wp_die(esc_html__('You do not have the necessary permission to perform this action.', 'grow')); } $hide_notice = sanitize_text_field($_GET['grow-thinkup-hide-notice']); update_option('grow_thinkup_notice_' . $hide_notice, 1); } } } }