__( 'About Flymag', 'flymag' ), * // Page title. * 'page_name' => __( 'About Flymag', 'flymag' ), * // Main welcome title * 'welcome_title' => sprintf( __( 'Welcome to %s! - Version ', 'flymag' ), 'FlyMag' ), * // Main welcome content * 'welcome_content' => sprintf( __( '%1$s is now installed and ready to use! Get ready to build something beautiful. We hope you enjoy it! We want to make sure you have the best experience using %2$s and that is why we gathered here all the necessary information for you. We hope you will enjoy using %3$s, as much as we enjoy creating great products.','flymag' ), 'FlyMag', 'FlyMag', 'FlyMag' ), * //Tabs array. * // * // The key needs to be ONLY consisted from letters and underscores. If we want to define outside the class a function to render the tab, * // the will be the name of the function which will be used to render the tab content. * 'tabs' => array( * 'getting_started' => __( 'Getting Started', 'flymag' ), * 'recommended_actions' => __( 'Recommended Actions', 'flymag' ), * 'recommended_plugins' => __( 'Recommended Plugins', 'flymag' ), * 'child_themes' => __( 'Child themes', 'flymag' ), * 'support' => __( 'Support', 'flymag' ), * 'changelog' => __( 'Changelog', 'flymag' ), * 'free_pro' => __( 'Free VS PRO', 'flymag' ), * ), * // Support content tab. * 'support_content' => array( * 'first' => array ( * 'title' => esc_html__( 'Contact Support','flymag' ), * 'icon' => 'dashicons dashicons-sos', * 'text' => esc_html__( 'We offer excellent support through our advanced ticketing system. Make sure to register your purchase before contacting support!','flymag' ), * 'button_label' => esc_html__( 'Contact Support','flymag' ), * 'button_link' => esc_url( 'https://themeisle.com/contact/' ), * 'is_button' => true, * 'is_new_tab' => false * ), * ), * // Getting started tab content. * 'getting_started' => array( * 'first_step' => array ( * 'title' => esc_html__( 'Step 1 - Implement recommended actions','flymag' ), * 'text' => esc_html__( 'We have compiled a list of steps for you, to take make sure the experience you will have using one of our products is very easy to follow.','flymag' ), * 'button_label' => esc_html__( 'Check recommended actions','flymag' ), * 'button_link' => esc_url( admin_url( 'themes.php?page=flymag-welcome&tab=recommended_actions' ) ), * 'is_button' => false, * 'recommended_actions' => true * ), * ), * // Child themes array. * 'child_themes' => array( * 'download_button_label' => 'Download', * 'preview_button_label' => 'Live preview', * 'content' => array( * array( * 'title' => 'Flymag child theme 1', * 'image' => 'https://github.com/Codeinwp/zerif-lite/blob/production/inc/admin/welcome-screen/img/zblackbeard.jpg?raw=true', * 'image_alt' => 'Image of the child theme', * 'description' => 'Description', * 'download_link' => 'Download link', * 'preview_link' => 'Preview link', * ), * array( * 'title' => 'Flymag child theme 2', * 'image' => 'https://github.com/Codeinwp/zerif-lite/blob/production/inc/admin/welcome-screen/img/zblackbeard.jpg?raw=true', * 'image_alt' => 'Image of the child theme', * 'description' => 'Description', * 'download_link' => 'Download link', * 'preview_link' => 'Preview link', * ), * ), * ), * // Free vs pro array. * 'free_pro' => array( * 'free_theme_name' => 'FlyMag', * 'pro_theme_name' => 'FlyMag PRO', * 'pro_theme_link' => 'https://themeisle.com/themes/flymag-pro/', * 'get_pro_theme_label' => sprintf( __( 'Get %s now!', 'flymag' ), 'FlyMag Pro' ), * 'features' => array( * array( * 'title' => __( 'Mobile friendly', 'flymag' ), * 'description' => __( 'Responsive layout. Works on every device.', 'flymag' ), * 'is_in_lite' => 'true', * 'is_in_pro' => 'true', * ), * array( * 'title' => __( 'Unlimited color option', 'flymag' ), * 'description' => __( 'You can change the colors of each section. You have unlimited options.', 'flymag' ), * 'is_in_lite' => 'true', * 'is_in_pro' => 'true', * ), * array( * 'title' => __( 'Background image', 'flymag' ), * 'description' => __( 'You can use any background image you want.', 'flymag' ), * 'is_in_lite' => 'true', * 'is_in_pro' => 'true', * ), * array( * 'title' => __( 'Featured Area', 'flymag' ), * 'description' => __( 'Have access to a new featured area.', 'flymag' ), * 'is_in_lite' => 'false', * 'is_in_pro' => 'true', * ), * array( * 'title' => __( 'Footer credits', 'flymag' ), * 'description' => '', * 'is_in_lite' => 'false', * 'is_in_pro' => 'true', * ), * array( * 'title' => __( 'Extra widgets areas', 'flymag' ), * 'description' => __( 'More widgets areas for your theme.', 'flymag' ), * 'is_in_lite' => 'false', * 'is_in_pro' => 'true', * ), * array( * 'title' => __( 'Support', 'flymag' ), * 'description' => __( 'You will benefit of our full support for any issues you have with the theme.', 'flymag' ), * 'is_in_lite' => 'false', * 'is_in_pro' => 'true', * ), * ), * ), * // Recommended plugins tab. * 'recommended_plugins' => array( * 'already_activated_message' => esc_html__( 'Already activated', 'flymag' ), * 'version_label' => esc_html__( 'Version: ', 'flymag' ), * 'install_label' => esc_html__( 'Install', 'flymag' ), * 'activate_label' => esc_html__( 'Activate', 'flymag' ), * 'deactivate_label' => esc_html__( 'Deactivate', 'flymag' ), * 'content' => array( * array( * 'slug' => 'pirate-forms', * ), * array( * 'link' => 'http://themeisle.com/plugins/easy-content-types/', * ), * array( * 'slug' => 'siteorigin-panels', * ), * array( * 'slug' => 'intergeo-maps', * ), * ), * ), * // Required actions array. * 'recommended_actions' => array( * 'install_label' => esc_html__( 'Install', 'flymag' ), * 'activate_label' => esc_html__( 'Activate', 'flymag' ), * 'deactivate_label' => esc_html__( 'Deactivate', 'flymag' ), * 'content' => array( * 'pirate-forms' => array( * 'title' => __( 'Pirate Forms', 'flymag' ), * 'description' => __( 'Makes your contact page more engaging by creating a good-looking contact form on your website. The interaction with your visitors was never easier.', 'flymag' ), * 'link_label' => __( 'Install Pirate Forms', 'flymag' ), * 'check' => defined( 'PIRATE_FORMS_VERSION' ), * 'id' => 'pirate-forms', * 'plugin_slug' => 'pirate-forms' * ), * ), * ), * ); * TI_About_Page::init( $config ); * * @package Themeisle * @subpackage Admin * @since 1.0.0 */ if ( ! class_exists( 'TI_About_Page' ) ) { /** * Singleton class used for generating the about page of the theme. */ class TI_About_Page { /** * Define the version of the class. * * @var string $version The TI_About_Page class version. */ private $version = '1.0.0'; /** * Used for loading the texts and setup the actions inside the page. * * @var array $config The configuration array for the theme used. */ private $config; /** * Get the theme name using wp_get_theme. * * @var string $theme_name The theme name. */ private $theme_name; /** * Get the theme slug ( theme folder name ). * * @var string $theme_slug The theme slug. */ private $theme_slug; /** * The current theme object. * * @var WP_Theme $theme The current theme. */ private $theme; /** * Holds the theme version. * * @var string $theme_version The theme version. */ private $theme_version; /** * Define the menu item name for the page. * * @var string $menu_name The name of the menu name under Appearance settings. */ private $menu_name; /** * Define the page title name. * * @var string $page_name The title of the About page. */ private $page_name; /** * Define the page tabs. * * @var array $tabs The page tabs. */ private $tabs; /** * Define the html notification content displayed upon activation. * * @var string $notification The html notification content. */ private $notification; /** * The single instance of TI_About_Page * * @var TI_About_Page $instance The TI_About_Page instance. */ private static $instance; /** * The Main TI_About_Page instance. * * We make sure that only one instance of TI_About_Page exists in the memory at one time. * * @param array $config The configuration array. */ public static function init( $config ) { if ( ! isset( self::$instance ) && ! ( self::$instance instanceof TI_About_Page ) ) { self::$instance = new TI_About_Page; if ( ! empty( $config ) && is_array( $config ) ) { self::$instance->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 fully take advantage of the best our theme can offer 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' ) ); /* activation notice */ add_action( 'load-themes.php', array( $this, 'activation_admin_notice' ) ); /* enqueue script and style for about page */ add_action( 'admin_enqueue_scripts', array( $this, 'style_and_scripts' ) ); /* ajax callback for dismissable required actions */ add_action( 'wp_ajax_ti_about_page_dismiss_required_action', array( $this, 'dismiss_required_action_callback' ) ); add_action( 'wp_ajax_nopriv_ti_about_page_dismiss_required_action', array( $this, 'dismiss_required_action_callback') ); } /** * Hide required tab if no actions present. * * @return bool Either hide the tab or not. */ public function hide_required( $value, $tab ) { if ( $tab != 'recommended_actions' ) { return $value; } $required = $this->get_required_actions(); if ( count( $required ) == 0 ) { return false; } else { return true; } } /** * Register the menu page under Appearance menu. */ function register() { if ( ! empty( $this->menu_name ) && ! empty( $this->page_name ) ) { $count = 0; $actions_count = $this->get_required_actions(); if ( ! empty( $actions_count ) ) { $count = count( $actions_count ); } $title = $count > 0 ? $this->page_name . '' . esc_html( $count ) . '' : $this->page_name; add_theme_page( $this->menu_name, $title, 'activate_plugins', $this->theme_slug . '-welcome', array( $this, 'ti_about_page_render', ) ); } } /** * Adds an admin notice upon successful activation. */ public function activation_admin_notice() { global $pagenow; if ( is_admin() && ( 'themes.php' == $pagenow ) && isset( $_GET['activated'] ) ) { add_action( 'admin_notices', array( $this, 'ti_about_page_welcome_admin_notice' ), 99 ); } } /** * Display an admin notice linking to the about page */ public function ti_about_page_welcome_admin_notice() { if ( ! empty( $this->notification ) ) { 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'; } $count = 0; $actions_count = $this->get_required_actions(); if ( ! empty( $actions_count ) ) { $count = count( $actions_count ); } if ( $getting_started_item['recommended_actions'] && isset( $count ) ) { if ( $count == 0 ) { echo ''; } else { echo ''; } } $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 '' . wp_kses_post( $action_value['description'] ) . '
'; } if ( ! empty( $action_value['plugin_slug'] ) ) { $active = $this->check_if_plugin_active( $action_value['plugin_slug'] ); $url = $this->create_action_link( $active['needs'], $action_value['plugin_slug'] ); $label = ''; switch ( $active['needs'] ) { case 'install': $class = 'install-now button'; if ( ! empty( $this->config['recommended_actions']['install_label'] ) ) { $label = $this->config['recommended_actions']['install_label']; } break; case 'activate': $class = 'activate-now button button-primary'; if ( ! empty( $this->config['recommended_actions']['activate_label'] ) ) { $label = $this->config['recommended_actions']['activate_label']; } break; case 'deactivate': $class = 'deactivate-now button'; if ( ! empty( $this->config['recommended_actions']['deactivate_label'] ) ) { $label = $this->config['recommended_actions']['deactivate_label']; } break; } ?> '; } } 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 ' | ' . esc_html( $free_pro['free_theme_name'] ) . ' | '; echo '' . esc_html( $free_pro['pro_theme_name'] ) . ' | '; echo '||
|---|---|---|---|---|
';
if ( ! empty( $feature['title'] ) ) {
echo '' . wp_kses_post( $feature['title'] ) . ''; } if ( ! empty( $feature['description'] ) ) { echo '' . wp_kses_post( $feature['description'] ) . ' '; } echo ' | ';
}
if ( ! empty( $feature['is_in_lite'] ) && ( $feature['is_in_lite'] == 'true' ) ) {
echo ''; } else { echo ' | '; } if ( ! empty( $feature['is_in_pro'] ) && ( $feature['is_in_pro'] == 'true' ) ) { echo ' | '; } else { echo ' | '; } echo ' |
| '; echo ' | ' . wp_kses_post( $free_pro['get_pro_theme_label'] ) . ' | '; echo '|||