register_settings(); } /** * Enqueue admin scripts and styles * @param string $screen Current admin screen */ public function admin_assets($screen) { if ($screen !== 'toplevel_page_gutslider-blocks' && $screen !== 'gutslider_page_gutslider-blocks-settings' && $screen !== 'gutslider_page_gutslider-license') { return; } $this->enqueue_admin_assets(); } /** * Add admin menu */ public function admin_menu() { add_menu_page( __('GutSlider', 'slider-blocks'), __('GutSlider', 'slider-blocks'), 'manage_options', 'gutslider-blocks', [$this, 'render_admin_page'], 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiByeD0iMTIiIGZpbGw9IiNEOUQ5RDkiLz4KPHBhdGggZD0iTTE1IDdIMTEuODIzNUg5VjE3SDE1VjEyLjQxNjdIMTIuODgyNEgxMS44MjM1IiBzdHJva2U9IiMxRDIzMjciIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=', 100 ); add_submenu_page( 'gutslider-blocks', __( 'Welcome', 'slider-blocks' ), __( 'Welcome', 'slider-blocks' ), 'manage_options', 'gutslider-blocks', array( $this, 'render_admin_page' ) ); add_submenu_page( 'gutslider-blocks', __( 'Blocks', 'slider-blocks' ), __( 'Blocks', 'slider-blocks' ), 'manage_options', 'gutslider-blocks-settings', array( $this, 'render_blocks_page' ) ); } /** * Render main admin page */ public function render_admin_page() { $has_pro = defined('GUTSLIDER_PRO_VERSION'); ?>
get_blocks(); $has_pro = defined('GUTSLIDER_PRO_VERSION'); ?> __('Permission denied', 'slider-blocks')]); } $block_key = isset($_POST['block_key']) ? sanitize_text_field( wp_unslash($_POST['block_key']) ) : ''; $status = isset($_POST['status']) ? rest_sanitize_boolean($_POST['status']) : false; if (empty($block_key)) { wp_send_json_error(['message' => __('Invalid block key', 'slider-blocks')]); } update_option($block_key, $status); wp_send_json_success(['message' => __('Block status updated', 'slider-blocks')]); } /** * Register block settings */ public function register_settings() { foreach (self::BLOCK_SETTINGS as $setting) { register_setting('rest-api-settings', $setting, [ 'type' => 'boolean', 'default' => true, 'show_in_rest' => true, 'sanitize_callback' => 'rest_sanitize_boolean', ]); } } /** * Enqueue admin assets */ private function enqueue_admin_assets() { wp_enqueue_script('gutslider-admin-script', GUTSLIDER_URL . 'admin/js/admin.js', array('jquery'), GUTSLIDER_VERSION, true); wp_enqueue_style('gutslider-admin-style', GUTSLIDER_URL . 'admin/css/admin.css', [], GUTSLIDER_VERSION); wp_localize_script('gutslider-admin-script', 'gutslider', [ 'version' => GUTSLIDER_VERSION, 'nonce' => wp_create_nonce('gutslider_nonce'), 'isPro' => defined('GUTSLIDER_PRO_VERSION'), 'proVersion' => defined('GUTSLIDER_PRO_VERSION') ? GUTSLIDER_PRO_VERSION : '', 'ajaxUrl' => admin_url('admin-ajax.php'), ]); } } } new GutSlider_Admin();