module_id = self::MODULE_ID; // WooCommerce only. $this->wc_only = true; // Parent construct. parent::__construct(); $this->main_func = $main_func; // Module section. $this->module_section = 'boost-revenue'; // Module default settings. $this->module_default_settings = array( 'button_text' => __( 'Pre Order Now!', 'merchant' ), 'additional_text' => __( 'Ships on {date}.', 'merchant' ) ); // Mount preview url. $preview_url = site_url( '/' ); if ( function_exists( 'wc_get_page_id' ) ) { $preview_url = get_permalink( wc_get_page_id( 'shop' ) ); } // Module data. $this->module_data = Merchant_Admin_Modules::$modules_data[ self::MODULE_ID ]; $this->module_data[ 'preview_url' ] = $preview_url; // Module options path. $this->module_options_path = MERCHANT_DIR . 'inc/modules/' . self::MODULE_ID . '/admin/options.php'; // Is module preview page. if ( is_admin() && parent::is_module_settings_page() ) { self::$is_module_preview = true; // Enqueue admin styles. add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_css' ) ); // Render module essencial instructions before the module page body content. add_action( 'merchant_admin_after_module_page_page_header', array( $this, 'admin_module_essencial_instructions' ) ); // Admin preview box. add_filter( 'merchant_module_preview', array( $this, 'render_admin_preview' ), 10, 2 ); // Custom CSS. // The custom CSS should be added here as well due to ensure preview box works properly. add_filter( 'merchant_custom_css', array( $this, 'admin_custom_css' ) ); } if ( ! Merchant_Modules::is_module_active( self::MODULE_ID ) ) { return; } // TODO: Refactor the 'Merchant_Pre_Orders_Main_Functionality' class to load admin things separated from frontend things. $main_func->init(); // Return early if it's on admin but not in the respective module settings page. if ( is_admin() && ! parent::is_module_settings_page() ) { return; } // Enqueue styles. add_action( 'merchant_enqueue_before_main_css_js', array( $this, 'enqueue_css' ) ); // Enqueue scripts. add_action( 'merchant_enqueue_after_main_css_js', array( $this, 'enqueue_scripts' ) ); // Localize script. add_filter( 'merchant_localize_script', array( $this, 'localize_script' ) ); // Custom CSS. add_filter( 'merchant_custom_css', array( $this, 'frontend_custom_css' ) ); } /** * Admin enqueue CSS. * * @return void */ public function admin_enqueue_css() { $page = ( ! empty( $_GET['page'] ) ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $module = ( ! empty( $_GET['module'] ) ) ? sanitize_text_field( wp_unslash( $_GET['module'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( 'merchant' === $page && self::MODULE_ID === $module ) { wp_enqueue_style( 'merchant-' . self::MODULE_ID, MERCHANT_URI . 'assets/css/modules/' . self::MODULE_ID . '/pre-orders.min.css', [], MERCHANT_VERSION ); wp_enqueue_style( 'merchant-admin-' . self::MODULE_ID, MERCHANT_URI . 'assets/css/modules/' . self::MODULE_ID . '/admin/preview.min.css', array(), MERCHANT_VERSION ); } } /** * Enqueue CSS. * * @return void */ public function enqueue_css() { // Specific module styles. wp_enqueue_style( 'merchant-' . self::MODULE_ID, MERCHANT_URI . 'assets/css/modules/' . self::MODULE_ID . '/pre-orders.min.css', array(), MERCHANT_VERSION ); } /** * Enqueue scripts. * * @return void */ public function enqueue_scripts() { // Register and enqueue the main module script. wp_enqueue_script( 'merchant-' . self::MODULE_ID, MERCHANT_URI . 'assets/js/modules/' . self::MODULE_ID . '/pre-orders.min.js', array(), MERCHANT_VERSION, true ); } /** * Localize script with module settings. * * @param array $setting The merchant global object setting parameter. * @return array $setting The merchant global object setting parameter. */ public function localize_script( $setting ) { $module_settings = $this->get_module_settings(); $setting[ 'pre_orders' ] = true; $setting[ 'pre_orders_add_button_title' ] = $module_settings[ 'button_text' ]; return $setting; } /** * Render module essencial instructions. * * @return void */ public function admin_module_essencial_instructions() { ?>
%s', esc_url( admin_url( 'edit.php?post_type=shop_order' ) ), esc_html__( 'View Pre-Orders', 'merchant' ) ); ?>