* @link http://domain.tld * @license GPL 2.0+ * @copyright 2022 WebAppick */ namespace Disco\Backend; use Disco\Engine\Base; use Inpsyde\Assets\Asset; use Inpsyde\Assets\AssetManager; use Inpsyde\Assets\Script; use Inpsyde\Assets\Style; /** * This class contain the Enqueue stuff for the backend */ class Enqueue extends Base { /** * Initialize the class. * * @return void|bool */ public function initialize() { if ( ! parent::initialize() ) { return; } \add_action( AssetManager::ACTION_SETUP, array( $this, 'enqueue_assets' ) ); } /** * Enqueue assets with Inpyside library https://inpsyde.github.io/assets * * @param \Inpsyde\Assets\AssetManager $asset_manager The class. * @return void */ public function enqueue_assets( AssetManager $asset_manager ) { // Load admin style sheet and JavaScript. $assets = $this->enqueue_admin_styles(); if ( ! empty( $assets ) ) { foreach ( $assets as $asset ) { $asset_manager->register( $asset ); } } $assets = $this->enqueue_admin_scripts(); if ( empty( $assets ) ) { return; } foreach ( $assets as $asset ) { $asset_manager->register( $asset ); } } /** * Register and enqueue admin-specific style sheet. * * @return array * @since 1.0.0 */ public function enqueue_admin_styles() { $admin_page = \get_current_screen(); $styles = array(); $styles[0] = new Style( DISCO_TEXTDOMAIN . '-admin-style', \plugins_url( 'assets/build/plugin-admin.css', DISCO_PLUGIN_ABSOLUTE ) ); $styles[0]->forLocation( Asset::BACKEND )->withVersion( DISCO_VERSION ); $styles[0]->withDependencies( 'dashicons' ); if ( ! \is_null( $admin_page ) && 'toplevel_page_disco-create-discount' === $admin_page->id ) { $styles[1] = new Style( DISCO_TEXTDOMAIN . '-admin-tailwind-style', \plugins_url( 'backend/views/asset/tailwind.css', DISCO_PLUGIN_ABSOLUTE ) ); $styles[1]->forLocation( Asset::BACKEND )->withVersion( DISCO_VERSION ); $styles[1]->withDependencies( 'dashicons' ); } return $styles; } /** * Register and enqueue admin-specific JavaScript. * * @return array * @since 1.0.0 */ public function enqueue_admin_scripts() { $admin_page = \get_current_screen(); $scripts = array(); if ( ! \is_null( $admin_page ) && 'toplevel_page_disco-create-discount' === $admin_page->id ) { $scripts[0] = new Script( DISCO_TEXTDOMAIN . '-settings-admin', \plugins_url( 'assets/build/plugin-admin.js', DISCO_PLUGIN_ABSOLUTE ) ); $scripts[0]->forLocation( Asset::BACKEND )->withVersion( DISCO_VERSION ); $scripts[0]->dependencies(); $scripts[0]->withLocalize( 'DISCO', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'json_url' => esc_url_raw( rest_url( 'disco/v1' ) ), 'is_pretty_url' => (bool) get_option('permalink_structure'), 'rest_nonce' => wp_create_nonce( 'wp_rest' ), 'admin_url' => admin_url( 'admin.php' ), 'site_url' => site_url(), 'TEXTDOMAIN' => DISCO_TEXTDOMAIN, 'is_pro_active' => is_plugin_active( 'disco-pro/disco-pro.php' ), ) ); } $scripts[1] = new Script( DISCO_TEXTDOMAIN . '-admin-tailwind-script', \plugins_url( 'assets/build/plugin-notice.js', DISCO_PLUGIN_ABSOLUTE ) ); $scripts[1]->forLocation( Asset::BACKEND )->withVersion( DISCO_VERSION ); $scripts[1]->dependencies(); $scripts[1]->withLocalize( 'DISCO_NOTICE', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'disco_dismiss_notice' ), ) ); return $scripts; } }