plugin = $plugin; add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) ); add_action( 'admin_menu', array( $this, 'add_menu_item' ) ); add_action( 'admin_footer', array( $this, 'render_message_handler' ) ); } /** * Renders the message handler script in the footer. * * @since 3.5.0 */ public function render_message_handler() { if ( ! $this->is_whatsapp_admin_page() ) { return; } wp_add_inline_script( 'plugin-api-client', $this->generate_inline_enhanced_onboarding_script(), 'after' ); } /** * Enqueues the assets. * * @since 3.5.0 * * @internal */ public function enqueue_assets() { if ( ! $this->is_whatsapp_admin_page() ) { return; } wp_enqueue_style( 'wc-facebook-admin-whatsapp-enhanced', facebook_for_woocommerce()->get_plugin_url() . '/assets/css/admin/facebook-for-woocommerce-whatsapp-enhanced.css', array(), \WC_Facebookcommerce::VERSION ); } /** * Adds the WhatsApp menu item. * * @since 3.5.0 */ public function add_menu_item() { $root_menu_item = $this->root_menu_item(); add_submenu_page( $root_menu_item, __( 'WhatsApp for WooCommerce', 'facebook-for-woocommerce' ), __( 'WhatsApp', 'facebook-for-woocommerce' ), 'manage_woocommerce', self::PAGE_ID, [ $this, 'render' ], 5 ); $this->connect_to_enhanced_admin( $this->is_marketing_enabled() ? 'marketing_page_wc-whatsapp' : 'woocommerce_page_wc-whatsapp' ); } /** * Enables admin support for the main WhatsApp settings page. * * @since 3.5.0 * * @param string $screen_id */ private function connect_to_enhanced_admin( $screen_id ) { if ( is_callable( 'wc_admin_connect_page' ) ) { wc_admin_connect_page( array( 'id' => self::PAGE_ID, 'screen_id' => $screen_id, 'path' => add_query_arg( 'page', self::PAGE_ID, 'admin.php' ), 'title' => [ __( 'WhatsApp for WooCommerce', 'facebook-for-woocommerce' ) ], ) ); } } /** * Checks if marketing feature is enabled in woocommerce. * * @since 3.5.0 * * @return bool */ public function is_marketing_enabled() { if ( class_exists( WooAdminFeatures::class ) ) { return WooAdminFeatures::is_enabled( 'marketing' ); } return is_callable( '\Automattic\WooCommerce\Admin\Features\Features::is_enabled' ) && \Automattic\WooCommerce\Admin\Features\Features::is_enabled( 'marketing' ); } /** * Gets the root menu item. * * @since 3.5.0 * * @return string */ public function root_menu_item() { if ( $this->is_marketing_enabled() ) { return 'woocommerce-marketing'; } return 'woocommerce'; } /** * Checks if the page is WhatsApp admin page. * * @since 3.5.0 * * @return string */ private function is_whatsapp_admin_page() { return is_admin() && self::PAGE_ID === Helper::get_requested_value( 'page' ); } /** * Renders the whatsapp utility settings page. * * @since 3.5.0 */ public function render() { $whatsapp_connection = $this->plugin->get_whatsapp_connection_handler(); $is_connected = $whatsapp_connection->is_connected(); if ( $is_connected ) { $iframe_url = \WooCommerce\Facebook\Handlers\WhatsAppExtension::generate_wa_iframe_management_url( $this->plugin, ); } else { $iframe_url = \WooCommerce\Facebook\Handlers\WhatsAppExtension::generate_wa_iframe_splash_url( $this->plugin, $whatsapp_connection->get_whatsapp_external_id() ); } if ( empty( $iframe_url ) ) { return $this->error_banner(); } ?>