first commit
This commit is contained in:
@@ -0,0 +1,294 @@
|
||||
<?php
|
||||
/**
|
||||
* Storefront Admin Class
|
||||
*
|
||||
* @package storefront
|
||||
* @since 2.0.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'Storefront_Admin' ) ) :
|
||||
/**
|
||||
* The Storefront admin class
|
||||
*/
|
||||
class Storefront_Admin {
|
||||
|
||||
/**
|
||||
* Setup class.
|
||||
*
|
||||
* @since 1.0
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'admin_menu', array( $this, 'welcome_register_menu' ) );
|
||||
add_action( 'admin_enqueue_scripts', array( $this, 'welcome_style' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Load welcome screen css
|
||||
*
|
||||
* @param string $hook_suffix the current page hook suffix.
|
||||
* @return void
|
||||
* @since 1.4.4
|
||||
*/
|
||||
public function welcome_style( $hook_suffix ) {
|
||||
global $storefront_version;
|
||||
|
||||
if ( 'appearance_page_storefront-welcome' === $hook_suffix ) {
|
||||
wp_enqueue_style( 'storefront-welcome-screen', get_template_directory_uri() . '/assets/css/admin/welcome-screen/welcome.css', array(), $storefront_version );
|
||||
wp_style_add_data( 'storefront-welcome-screen', 'rtl', 'replace' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the dashboard page
|
||||
*
|
||||
* @see add_theme_page()
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function welcome_register_menu() {
|
||||
add_theme_page( 'Storefront', 'Storefront', 'activate_plugins', 'storefront-welcome', array( $this, 'storefront_welcome_screen' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* The welcome screen
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function storefront_welcome_screen() {
|
||||
require_once ABSPATH . 'wp-load.php';
|
||||
require_once ABSPATH . 'wp-admin/admin.php';
|
||||
require_once ABSPATH . 'wp-admin/admin-header.php';
|
||||
|
||||
global $storefront_version;
|
||||
|
||||
$show_setup_screen = ( false === (bool) get_option( 'storefront_nux_dismissed' ) ) && ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '4.8.0', '>=' ) );
|
||||
?>
|
||||
|
||||
<div class="storefront-wrap">
|
||||
<section class="storefront-welcome-nav">
|
||||
<span class="storefront-welcome-nav__version">Storefront <?php echo esc_attr( $storefront_version ); ?></span>
|
||||
<ul>
|
||||
<li><a href="https://wordpress.org/support/theme/storefront" target="_blank"><?php esc_html_e( 'Support', 'storefront' ); ?></a></li>
|
||||
<li><a href="https://docs.woocommerce.com/documentation/themes/storefront/" target="_blank"><?php esc_html_e( 'Documentation', 'storefront' ); ?></a></li>
|
||||
<li><a href="https://woocommerce.wordpress.com/category/storefront/" target="_blank"><?php esc_html_e( 'Development blog', 'storefront' ); ?></a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<div class="storefront-logo">
|
||||
<img src="<?php echo esc_url( get_template_directory_uri() ); ?>/assets/images/admin/storefront-icon.svg" alt="Storefront" />
|
||||
</div>
|
||||
|
||||
<div class="storefront-intro">
|
||||
<?php
|
||||
if ( $show_setup_screen ) {
|
||||
?>
|
||||
<div class="storefront-intro-setup">
|
||||
<?php
|
||||
Storefront_NUX_Admin::admin_notices_content();
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
echo '<div class="storefront-intro-message" style="display:none">';
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a different message when the user visits this page when returning from the guided tour
|
||||
*/
|
||||
$referrer = wp_get_referer();
|
||||
|
||||
if ( strpos( $referrer, 'sf_starter_content' ) !== false ) {
|
||||
/* translators: 1: HTML, 2: HTML */
|
||||
echo '<h1>' . sprintf( esc_attr__( 'Setup complete %1$sYour Storefront adventure begins now 🚀%2$s ', 'storefront' ), '<span>', '</span>' ) . '</h1>';
|
||||
echo '<p>' . esc_attr__( 'One more thing... You might be interested in the following Storefront extensions and designs.', 'storefront' ) . '</p>';
|
||||
} else {
|
||||
echo '<p>' . esc_attr__( 'Hello! You might be interested in the following Storefront extensions and designs.', 'storefront' ) . '</p>';
|
||||
}
|
||||
|
||||
if ( $show_setup_screen ) {
|
||||
echo '</div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div class="storefront-enhance">
|
||||
<div class="storefront-enhance__column storefront-bundle">
|
||||
<h3><?php esc_html_e( 'Storefront Extensions Bundle', 'storefront' ); ?></h3>
|
||||
<span class="bundle-image">
|
||||
<img src="<?php echo esc_url( get_template_directory_uri() ); ?>/assets/images/admin/welcome-screen/storefront-bundle-hero.png" alt="Storefront Extensions Hero" />
|
||||
</span>
|
||||
|
||||
<p>
|
||||
<?php esc_html_e( 'All the tools you\'ll need to define your style and customize Storefront.', 'storefront' ); ?>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<?php esc_html_e( 'Make it yours without touching code with the Storefront Extensions bundle. Express yourself, optimize conversions, delight customers.', 'storefront' ); ?>
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<a href="https://woocommerce.com/products/storefront-extensions-bundle/?utm_source=storefront&utm_medium=product&utm_campaign=storefrontaddons" class="storefront-button" target="_blank"><?php esc_html_e( 'Read more and purchase', 'storefront' ); ?></a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="storefront-enhance__column storefront-child-themes">
|
||||
<h3><?php esc_html_e( 'Alternate designs', 'storefront' ); ?></h3>
|
||||
<img src="<?php echo esc_url( get_template_directory_uri() ); ?>/assets/images/admin/welcome-screen/child-themes.jpg" alt="Storefront Powerpack" />
|
||||
|
||||
<p>
|
||||
<?php esc_html_e( 'Quickly and easily transform your shops appearance with Storefront child themes.', 'storefront' ); ?>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<?php esc_html_e( 'Each has been designed to serve a different industry - from fashion to food.', 'storefront' ); ?>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<?php esc_html_e( 'Of course they are all fully compatible with each Storefront extension.', 'storefront' ); ?>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="https://woocommerce.com/product-category/themes/storefront-child-theme-themes/?utm_source=storefront&utm_medium=product&utm_campaign=storefrontaddons" class="storefront-button" target="_blank"><?php esc_html_e( 'Check \'em out', 'storefront' ); ?></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="automattic">
|
||||
<p>
|
||||
<?php
|
||||
/* translators: %s: Automattic branding */
|
||||
printf( esc_html__( 'An %s project', 'storefront' ), '<a href="https://automattic.com/"><img src="' . esc_url( get_template_directory_uri() ) . '/assets/images/admin/welcome-screen/automattic.png" alt="Automattic" /></a>' );
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Welcome screen intro
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function welcome_intro() {
|
||||
require_once get_template_directory() . '/inc/admin/welcome-screen/component-intro.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Output a button that will install or activate a plugin if it doesn't exist, or display a disabled button if the
|
||||
* plugin is already activated.
|
||||
*
|
||||
* @param string $plugin_slug The plugin slug.
|
||||
* @param string $plugin_file The plugin file.
|
||||
*/
|
||||
public function install_plugin_button( $plugin_slug, $plugin_file ) {
|
||||
if ( current_user_can( 'install_plugins' ) && current_user_can( 'activate_plugins' ) ) {
|
||||
if ( is_plugin_active( $plugin_slug . '/' . $plugin_file ) ) {
|
||||
// The plugin is already active.
|
||||
$button = array(
|
||||
'message' => esc_attr__( 'Activated', 'storefront' ),
|
||||
'url' => '#',
|
||||
'classes' => 'disabled',
|
||||
);
|
||||
} elseif ( $this->is_plugin_installed( $plugin_slug ) ) {
|
||||
$url = $this->is_plugin_installed( $plugin_slug );
|
||||
|
||||
// The plugin exists but isn't activated yet.
|
||||
$button = array(
|
||||
'message' => esc_attr__( 'Activate', 'storefront' ),
|
||||
'url' => $url,
|
||||
'classes' => 'activate-now',
|
||||
);
|
||||
} else {
|
||||
// The plugin doesn't exist.
|
||||
$url = wp_nonce_url(
|
||||
add_query_arg(
|
||||
array(
|
||||
'action' => 'install-plugin',
|
||||
'plugin' => $plugin_slug,
|
||||
),
|
||||
self_admin_url( 'update.php' )
|
||||
),
|
||||
'install-plugin_' . $plugin_slug
|
||||
);
|
||||
$button = array(
|
||||
'message' => esc_attr__( 'Install now', 'storefront' ),
|
||||
'url' => $url,
|
||||
'classes' => ' install-now install-' . $plugin_slug,
|
||||
);
|
||||
}
|
||||
?>
|
||||
<a href="<?php echo esc_url( $button['url'] ); ?>" class="storefront-button <?php echo esc_attr( $button['classes'] ); ?>" data-originaltext="<?php echo esc_attr( $button['message'] ); ?>" data-slug="<?php echo esc_attr( $plugin_slug ); ?>" aria-label="<?php echo esc_attr( $button['message'] ); ?>"><?php echo esc_html( $button['message'] ); ?></a>
|
||||
<a href="https://wordpress.org/plugins/<?php echo esc_attr( $plugin_slug ); ?>" target="_blank"><?php esc_html_e( 'Learn more', 'storefront' ); ?></a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a plugin is installed and return the url to activate it if so.
|
||||
*
|
||||
* @param string $plugin_slug The plugin slug.
|
||||
*/
|
||||
private function is_plugin_installed( $plugin_slug ) {
|
||||
if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) {
|
||||
$plugins = get_plugins( '/' . $plugin_slug );
|
||||
if ( ! empty( $plugins ) ) {
|
||||
$keys = array_keys( $plugins );
|
||||
$plugin_file = $plugin_slug . '/' . $keys[0];
|
||||
$url = wp_nonce_url(
|
||||
add_query_arg(
|
||||
array(
|
||||
'action' => 'activate',
|
||||
'plugin' => $plugin_file,
|
||||
),
|
||||
admin_url( 'plugins.php' )
|
||||
),
|
||||
'activate-plugin_' . $plugin_file
|
||||
);
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Welcome screen enhance section
|
||||
*
|
||||
* @since 1.5.2
|
||||
*/
|
||||
public function welcome_enhance() {
|
||||
require_once get_template_directory() . '/inc/admin/welcome-screen/component-enhance.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Welcome screen contribute section
|
||||
*
|
||||
* @since 1.5.2
|
||||
*/
|
||||
public function welcome_contribute() {
|
||||
require_once get_template_directory() . '/inc/admin/welcome-screen/component-contribute.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get product data from json
|
||||
*
|
||||
* @param string $url URL to the json file.
|
||||
* @param string $transient Name the transient.
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function get_storefront_product_data( $url, $transient ) {
|
||||
$raw_products = wp_safe_remote_get( $url );
|
||||
$products = json_decode( wp_remote_retrieve_body( $raw_products ) );
|
||||
|
||||
if ( ! empty( $products ) ) {
|
||||
set_transient( $transient, $products, DAY_IN_SECONDS );
|
||||
}
|
||||
|
||||
return $products;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
return new Storefront_Admin();
|
||||
@@ -0,0 +1,151 @@
|
||||
<?php
|
||||
/**
|
||||
* Storefront Plugin Install Class
|
||||
*
|
||||
* @package storefront
|
||||
* @since 2.2.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'Storefront_Plugin_Install' ) ) :
|
||||
/**
|
||||
* The Storefront plugin install class
|
||||
*/
|
||||
class Storefront_Plugin_Install {
|
||||
|
||||
/**
|
||||
* Setup class.
|
||||
*
|
||||
* @since 1.0
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'admin_enqueue_scripts', array( $this, 'plugin_install_scripts' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Load plugin install scripts
|
||||
*
|
||||
* @param string $hook_suffix the current page hook suffix.
|
||||
* @return void
|
||||
* @since 1.4.4
|
||||
*/
|
||||
public function plugin_install_scripts( $hook_suffix ) {
|
||||
global $storefront_version;
|
||||
|
||||
$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
|
||||
|
||||
wp_enqueue_script( 'storefront-plugin-install', get_template_directory_uri() . '/assets/js/admin/plugin-install' . $suffix . '.js', array( 'jquery', 'updates' ), $storefront_version, 'all' );
|
||||
|
||||
wp_enqueue_style( 'storefront-plugin-install', get_template_directory_uri() . '/assets/css/admin/plugin-install.css', array(), $storefront_version, 'all' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Output a button that will install or activate a plugin if it doesn't exist, or display a disabled button if the
|
||||
* plugin is already activated.
|
||||
*
|
||||
* @param string $plugin_slug The plugin slug.
|
||||
* @param string $plugin_file The plugin file.
|
||||
* @param string $plugin_name The plugin name.
|
||||
* @param string $classes CSS classes.
|
||||
* @param string $activated Button activated text.
|
||||
* @param string $activate Button activate text.
|
||||
* @param string $install Button install text.
|
||||
*/
|
||||
public static function install_plugin_button( $plugin_slug, $plugin_file, $plugin_name, $classes = array(), $activated = '', $activate = '', $install = '' ) {
|
||||
if ( current_user_can( 'install_plugins' ) && current_user_can( 'activate_plugins' ) ) {
|
||||
if ( is_plugin_active( $plugin_slug . '/' . $plugin_file ) ) {
|
||||
// The plugin is already active.
|
||||
$button = array(
|
||||
'message' => esc_attr__( 'Activated', 'storefront' ),
|
||||
'url' => '#',
|
||||
'classes' => array( 'storefront-button', 'disabled' ),
|
||||
);
|
||||
|
||||
if ( '' !== $activated ) {
|
||||
$button['message'] = esc_attr( $activated );
|
||||
}
|
||||
} elseif ( self::is_plugin_installed( $plugin_slug ) ) {
|
||||
$url = self::is_plugin_installed( $plugin_slug );
|
||||
|
||||
// The plugin exists but isn't activated yet.
|
||||
$button = array(
|
||||
'message' => esc_attr__( 'Activate', 'storefront' ),
|
||||
'url' => $url,
|
||||
'classes' => array( 'activate-now' ),
|
||||
);
|
||||
|
||||
if ( '' !== $activate ) {
|
||||
$button['message'] = esc_attr( $activate );
|
||||
}
|
||||
} else {
|
||||
// The plugin doesn't exist.
|
||||
$url = wp_nonce_url(
|
||||
add_query_arg(
|
||||
array(
|
||||
'action' => 'install-plugin',
|
||||
'plugin' => $plugin_slug,
|
||||
),
|
||||
self_admin_url( 'update.php' )
|
||||
),
|
||||
'install-plugin_' . $plugin_slug
|
||||
);
|
||||
$button = array(
|
||||
'message' => esc_attr__( 'Install now', 'storefront' ),
|
||||
'url' => $url,
|
||||
'classes' => array( 'sf-install-now', 'install-now', 'install-' . $plugin_slug ),
|
||||
);
|
||||
|
||||
if ( '' !== $install ) {
|
||||
$button['message'] = esc_attr( $install );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! empty( $classes ) ) {
|
||||
$button['classes'] = array_merge( $button['classes'], $classes );
|
||||
}
|
||||
|
||||
$button['classes'] = implode( ' ', $button['classes'] );
|
||||
|
||||
?>
|
||||
<span class="plugin-card-<?php echo esc_attr( $plugin_slug ); ?>">
|
||||
<a href="<?php echo esc_url( $button['url'] ); ?>" class="<?php echo esc_attr( $button['classes'] ); ?>" data-originaltext="<?php echo esc_attr( $button['message'] ); ?>" data-name="<?php echo esc_attr( $plugin_name ); ?>" data-slug="<?php echo esc_attr( $plugin_slug ); ?>" aria-label="<?php echo esc_attr( $button['message'] ); ?>"><?php echo esc_html( $button['message'] ); ?></a>
|
||||
</span> <?php echo /* translators: conjunction of two alternative options user can choose (in missing plugin admin notice). Example: "Activate WooCommerce or learn more" */ esc_html__( 'or', 'storefront' ); ?>
|
||||
<a href="https://wordpress.org/plugins/<?php echo esc_attr( $plugin_slug ); ?>" target="_blank"><?php esc_html_e( 'learn more', 'storefront' ); ?></a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a plugin is installed and return the url to activate it if so.
|
||||
*
|
||||
* @param string $plugin_slug The plugin slug.
|
||||
*/
|
||||
private static function is_plugin_installed( $plugin_slug ) {
|
||||
if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) {
|
||||
$plugins = get_plugins( '/' . $plugin_slug );
|
||||
if ( ! empty( $plugins ) ) {
|
||||
$keys = array_keys( $plugins );
|
||||
$plugin_file = $plugin_slug . '/' . $keys[0];
|
||||
$url = wp_nonce_url(
|
||||
add_query_arg(
|
||||
array(
|
||||
'action' => 'activate',
|
||||
'plugin' => $plugin_file,
|
||||
),
|
||||
admin_url( 'plugins.php' )
|
||||
),
|
||||
'activate-plugin_' . $plugin_file
|
||||
);
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
return new Storefront_Plugin_Install();
|
||||
Reference in New Issue
Block a user