init(); $generator->init(); $editor->init(); $history->init(); $rest_api->init(); add_action( 'init', array( $this, 'register_block' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_assets' ) ); add_filter( 'plugin_action_links_' . NANO_BANANA_PLUGIN_BASENAME, array( $this, 'add_settings_link' ) ); } /** * Register the Gutenberg block. */ public function register_block() { $block_path = NANO_BANANA_PLUGIN_DIR . 'build/blocks/image-generator'; if ( file_exists( $block_path . '/block.json' ) ) { register_block_type( $block_path ); } } /** * Enqueue admin CSS and JS on plugin pages only. * * @param string $hook_suffix The current admin page hook suffix. */ public function enqueue_admin_assets( $hook_suffix ) { $plugin_pages = array( 'settings_page_nano-banana', 'media_page_nano-banana-generate', 'media_page_nano-banana-history', ); if ( ! in_array( $hook_suffix, $plugin_pages, true ) ) { // Always enqueue the media library integration on attachment pages. if ( 'post.php' !== $hook_suffix || 'attachment' !== get_post_type() ) { return; } } wp_enqueue_style( 'nano-banana-admin', NANO_BANANA_PLUGIN_URL . 'admin/css/nano-banana-admin.css', array(), NANO_BANANA_VERSION ); wp_enqueue_script( 'nano-banana-admin', NANO_BANANA_PLUGIN_URL . 'admin/js/nano-banana-admin.js', array( 'jquery', 'wp-util' ), NANO_BANANA_VERSION, true ); wp_localize_script( 'nano-banana-admin', 'nanoBanana', array( 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'restUrl' => rest_url( 'nano-banana/v1/' ), 'nonce' => wp_create_nonce( 'nano_banana_nonce' ), 'i18n' => array( 'generating' => __( 'Generating...', '45squared-ai-powered-image-generator' ), 'generate' => __( 'Generate Images', '45squared-ai-powered-image-generator' ), 'saveToMedia' => __( 'Save to Media Library', '45squared-ai-powered-image-generator' ), 'saved' => __( 'Saved!', '45squared-ai-powered-image-generator' ), 'error' => __( 'An error occurred. Please try again.', '45squared-ai-powered-image-generator' ), 'testSuccess' => __( 'Connection successful!', '45squared-ai-powered-image-generator' ), 'testFail' => __( 'Connection failed.', '45squared-ai-powered-image-generator' ), 'editing' => __( 'Editing...', '45squared-ai-powered-image-generator' ), 'editImage' => __( 'Edit with Nano Banana', '45squared-ai-powered-image-generator' ), 'confirmDelete' => __( 'Delete this history entry?', '45squared-ai-powered-image-generator' ), ), ) ); } /** * Add Settings link to the plugins list page. * * @param array $links Existing action links. * @return array */ public function add_settings_link( $links ) { $settings_link = sprintf( '%s', admin_url( 'options-general.php?page=nano-banana' ), __( 'Settings', '45squared-ai-powered-image-generator' ) ); array_unshift( $links, $settings_link ); return $links; } }