init(); new AmazonController(); new Notice\AdminNoticeManager(); new ControlsManager(); new ElementorManager(); } /** * Init * * @return void */ public function init() { add_action( 'enqueue_block_editor_assets', array($this, 'editor_assets') ); add_action( 'elementor/editor/after_enqueue_scripts', array($this, 'editor_assets'), 9 ); add_filter( 'block_categories_all', array($this, 'add_block_category') ); add_action( 'admin_enqueue_scripts', array($this, 'enqueue_admin_scripts') ); // Admin Script Translations add_action( 'admin_enqueue_scripts', array($this, 'set_script_translations'), 99999999999 ); // Register pages add_action( 'admin_menu', array($this, 'add_affiliate_menu') ); add_filter( 'plugin_action_links_' . plugin_basename( AFFILIATEX_PLUGIN_FILE ), array($this, 'affiliatex_add_action_links') ); add_filter( 'network_admin_plugin_action_links_' . plugin_basename( AFFILIATEX_PLUGIN_FILE ), array($this, 'affiliatex_add_action_links') ); } /** * Add Block Category * * @param [type] $categories * @return void */ public function add_block_category( $categories ) { // setup category array $affx_category = array( 'slug' => 'affiliatex', 'title' => __( 'AffiliateX', 'affiliatex' ), ); // make a new category array and insert ours at position 1 $new_categories = array(); $new_categories[0] = $affx_category; // rebuild cats array foreach ( $categories as $category ) { $new_categories[] = $category; } return $new_categories; } /** * Admin Enqueue Scripts * * @return void */ public function enqueue_admin_scripts( $hook ) { if ( 'toplevel_page_affiliatex_blocks' === $hook ) { $admin_deps = (include_once plugin_dir_path( AFFILIATEX_PLUGIN_FILE ) . '/build/adminJS.asset.php'); wp_register_script( 'affiliatex-admin', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/adminJS.js', $admin_deps['dependencies'], $admin_deps['version'], true ); wp_enqueue_style( 'affx-googlefonts', 'https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap', array(), null ); $ajax_nonce = wp_create_nonce( 'affiliatex_ajax_nonce' ); // Add localization vars. wp_localize_script( 'affiliatex-admin', 'AffiliateXAdmin', array( 'customizationData' => affx_get_customization_settings(), 'pluginUrl' => esc_url( plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) ), 'ajax_nonce' => $ajax_nonce, 'licenseActive' => ( affiliatex_fs()->is_premium() ? 'true' : 'false' ), 'ajax_url' => admin_url( 'admin-ajax.php' ), ) ); wp_enqueue_script( 'affiliatex-admin' ); // Styles. wp_enqueue_style( 'affiliatex-dashboard', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/dashboard.css' ); // Styles. wp_enqueue_style( 'affiliatex-options-style-css', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/admin.css' ); wp_enqueue_style( 'toastr', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'assets/css/toastr.min.css', array(), '2.1.3', 'all' ); } wp_enqueue_style( 'affiliatex-admin-css', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/adminCSS.css' ); } /** * Enqueue Blocks. * * @return void */ public function editor_assets() { global $wp_customize; $blocks_deps = (include_once plugin_dir_path( AFFILIATEX_PLUGIN_FILE ) . '/build/blocks.asset.php'); $blocks_export_deps = (include_once plugin_dir_path( AFFILIATEX_PLUGIN_FILE ) . '/build/blockComponents.asset.php'); $amazon_config = new AmazonConfig(); wp_register_script( 'affiliatex', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/blocks.js', $blocks_deps['dependencies'], $blocks_deps['version'], true ); wp_register_script( 'affiliatex-block-export', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/blockComponents.js', $blocks_export_deps['dependencies'], $blocks_export_deps['version'], true ); // Add localization vars. wp_localize_script( 'affiliatex', 'AffiliateX', array( 'customizationData' => affx_get_customization_settings(), 'siteURL' => esc_url( home_url( '/' ) ), 'pluginUrl' => esc_url( plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) ), 'proActive' => ( affiliatex_fs()->is_premium() ? 'true' : 'false' ), 'WPVersion' => version_compare( get_bloginfo( 'version' ), '5.9', '>=' ), 'isAmazonActive' => ( $amazon_config->is_active() ? 'true' : 'false' ), 'connectAllButton' => WidgetHelper::get_connect_all_button_html(), ) ); wp_enqueue_script( 'affiliatex' ); wp_enqueue_script( 'affiliatex-block-export' ); if ( !affiliatex_fs()->is_premium() && !affx_is_elementor_editor() ) { $pro_blocks_preview_deps = (include_once plugin_dir_path( AFFILIATEX_PLUGIN_FILE ) . '/build/proBlocksPreview.asset.php'); wp_enqueue_script( 'affiliatex-pro-blocks-preview', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/proBlocksPreview.js', $pro_blocks_preview_deps['dependencies'], $pro_blocks_preview_deps['version'], true ); } if ( !isset( $wp_customize ) ) { wp_enqueue_style( 'affiliatex-gb-style-css', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/admin.css' ); } if ( function_exists( 'gutenberg_get_block_categories' ) ) { $scripts = 'js/scripts-old.js'; } elseif ( function_exists( 'get_block_categories' ) ) { $scripts = 'js/scripts.js'; } if ( !isset( $wp_customize ) ) { wp_enqueue_script( 'affiliatex-disable-blocks', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'assets/' . $scripts, array('wp-edit-post'), AFFILIATEX_VERSION, false ); wp_localize_script( 'affiliatex-disable-blocks', 'AffiliateXBlocks', affx_get_disabled_blocks() ); } // Styles. wp_enqueue_style( 'fontawesome', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/fontawesome.css', array(), AFFILIATEX_VERSION ); wp_enqueue_style( 'affiliatex-editor-css', plugin_dir_url( AFFILIATEX_PLUGIN_FILE ) . 'build/editorCSS.css', [], filemtime( AFFILIATEX_PLUGIN_DIR . '/build/editorCSS.css' ) ); } /** * Add AffiliateX Menu * * @return void */ public function add_affiliate_menu() { $ADMIN_ICON = base64_encode( '' ); add_menu_page( esc_html__( 'AffiliateX', 'affiliatex' ), esc_html__( 'AffiliateX', 'affiliatex' ), 'manage_options', 'affiliatex_blocks', array($this, 'render_options_page'), 'data:image/svg+xml;base64,' . $ADMIN_ICON, 40 ); } /** * Set Script Translations * * @return void */ public function set_script_translations() { wp_set_script_translations( 'affiliatex', 'affiliatex' ); // Blocks. wp_set_script_translations( 'affiliatex-admin', 'affiliatex' ); // AffiliateX Page. } /** * render options page * * @return void */ public function render_options_page() { echo '
'; } /** * Add a link to the settings page to the plugins list * * @param array $links array of links for the plugins, adapted when the current plugin is found. * * @return array $links */ public function affiliatex_add_action_links( $links ) { $settings_link = '' . esc_html__( 'Settings', 'affiliatex' ) . ''; array_unshift( $links, $settings_link ); $get_pro = '' . esc_html__( 'Get AffiliateX Pro', 'affiliatex' ) . ''; array_unshift( $links, $get_pro ); return $links; } }