first commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
namespace HelloTheme\Modules\AdminHome\Components;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
use HelloTheme\Includes\Script;
|
||||
use HelloTheme\Includes\Utils;
|
||||
|
||||
class Admin_Menu_Controller {
|
||||
|
||||
const MENU_PAGE_ICON = 'dashicons-plus-alt';
|
||||
const MENU_PAGE_POSITION = 59.9;
|
||||
const AI_SITE_PLANNER_SLUG = '-ai-site-planner';
|
||||
const THEME_BUILDER_SLUG = '-theme-builder';
|
||||
|
||||
public function admin_menu(): void {
|
||||
add_menu_page(
|
||||
__( 'Hello', 'hello-elementor' ),
|
||||
__( 'Hello', 'hello-elementor' ),
|
||||
'manage_options',
|
||||
EHP_THEME_SLUG,
|
||||
[ $this, 'render_home' ],
|
||||
self::MENU_PAGE_ICON,
|
||||
self::MENU_PAGE_POSITION
|
||||
);
|
||||
|
||||
add_submenu_page(
|
||||
EHP_THEME_SLUG,
|
||||
__( 'Home', 'hello-elementor' ),
|
||||
__( 'Home', 'hello-elementor' ),
|
||||
'manage_options',
|
||||
EHP_THEME_SLUG,
|
||||
[ $this, 'render_home' ]
|
||||
);
|
||||
|
||||
do_action( 'hello-plus-theme/admin-menu', EHP_THEME_SLUG );
|
||||
|
||||
$theme_builder_slug = Utils::get_theme_builder_slug();
|
||||
add_submenu_page(
|
||||
EHP_THEME_SLUG,
|
||||
__( 'Theme Builder', 'hello-elementor' ),
|
||||
__( 'Theme Builder', 'hello-elementor' ),
|
||||
'manage_options',
|
||||
empty( $theme_builder_slug ) ? EHP_THEME_SLUG . self::THEME_BUILDER_SLUG : $theme_builder_slug,
|
||||
[ $this, 'render_home' ]
|
||||
);
|
||||
|
||||
add_submenu_page(
|
||||
EHP_THEME_SLUG,
|
||||
__( 'AI Site Planner', 'hello-elementor' ),
|
||||
__( 'AI Site Planner', 'hello-elementor' ),
|
||||
'manage_options',
|
||||
EHP_THEME_SLUG . self::AI_SITE_PLANNER_SLUG,
|
||||
[ $this, 'render_home' ]
|
||||
);
|
||||
}
|
||||
|
||||
public function render_home(): void {
|
||||
echo '<div id="ehe-admin-home"></div>';
|
||||
}
|
||||
|
||||
public function redirect_menus(): void {
|
||||
$page = sanitize_key( filter_input( INPUT_GET, 'page', FILTER_UNSAFE_RAW ) );
|
||||
|
||||
switch ( $page ) {
|
||||
case EHP_THEME_SLUG . self::AI_SITE_PLANNER_SLUG:
|
||||
wp_redirect( Utils::get_ai_site_planner_url() );
|
||||
exit;
|
||||
|
||||
case EHP_THEME_SLUG . self::THEME_BUILDER_SLUG:
|
||||
wp_redirect( Utils::get_theme_builder_url() );
|
||||
exit;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function admin_enqueue_scripts() {
|
||||
$script = new Script(
|
||||
'hello-elementor-menu',
|
||||
);
|
||||
|
||||
$script->enqueue();
|
||||
}
|
||||
|
||||
public function __construct() {
|
||||
add_action( 'admin_menu', [ $this, 'admin_menu' ] );
|
||||
add_action( 'admin_init', [ $this, 'redirect_menus' ] );
|
||||
add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user