| 1 |
<?php |
| 2 |
|
| 3 |
namespace Hostinger\Admin; |
| 4 |
|
| 5 |
use Hostinger\Admin\Onboarding\Onboarding; |
| 6 |
|
| 7 |
defined( 'ABSPATH' ) || exit; |
| 8 |
|
| 9 |
class Menu { |
| 10 |
|
| 11 |
public const WEBSITE_LIST_URL = 'https://hpanel.hostinger.com/websites'; |
| 12 |
public const WEBSITE_BILLINGS_URL = 'https://hpanel.hostinger.com/billing/subscriptions'; |
| 13 |
public const AI_ASSISTANT_URL = '/wp-admin/admin.php?page=hostinger#ai-assistant'; |
| 14 |
|
| 15 |
public function __construct() { |
| 16 |
add_action( 'admin_menu', array( $this, 'admin_menu' ) ); |
| 17 |
add_action( 'admin_bar_menu', array( $this, 'admin_bar' ), 999 ); |
| 18 |
} |
| 19 |
|
| 20 |
public function admin_menu(): void { |
| 21 |
$icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyMSAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wLjAwMDE5OTY1MyAxMS4yMzY4VjAuMDAwMzk4MjM1TDUuNjcxMzMgMy4wMjQzNlY4LjA4NjkxTDEzLjE3ODggOC4wOTA1M0wxOC45NDE5IDExLjIzNjhIMC4wMDAxOTk2NTNaTTE0LjcxNCA3LjE2MDQ3VjBMMjAuNTM4IDIuOTQ4NzJWMTAuNTQzN0wxNC43MTQgNy4xNjA0N1pNMTQuNzE0IDIwLjg5NDJWMTUuODc1M0w3LjE0ODYyIDE1Ljg3QzcuMTU1NjggMTUuOTAzNCAxLjI4OTg0IDEyLjY3MzUgMS4yODk4NCAxMi42NzM1TDIwLjUzOCAxMi43NjM4VjI0TDE0LjcxNCAyMC44OTQyWk0wIDIwLjg5NDFMMC4wMDAyMDE3NjkgMTMuNTUxNEw1LjY3MTMzIDE2Ljg1NDZWMjMuODQyN0wwIDIwLjg5NDFaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K'; |
| 22 |
add_menu_page( |
| 23 |
__( 'Hostinger', 'hostinger' ), |
| 24 |
__( 'Hostinger', 'hostinger' ), |
| 25 |
'manage_options', |
| 26 |
'hostinger', |
| 27 |
array( $this, 'render' ), |
| 28 |
$icon, |
| 29 |
1 |
| 30 |
); |
| 31 |
|
| 32 |
add_submenu_page( |
| 33 |
'hostinger', |
| 34 |
__( 'Get started', 'hostinger' ), |
| 35 |
__( 'Get started', 'hostinger' ), |
| 36 |
'manage_options', |
| 37 |
'hostinger&#home', |
| 38 |
'__return_empty_string', |
| 39 |
2 |
| 40 |
); |
| 41 |
|
| 42 |
add_submenu_page( |
| 43 |
'hostinger', |
| 44 |
__( 'Learn', 'hostinger' ), |
| 45 |
__( 'Learn', 'hostinger' ), |
| 46 |
'manage_options', |
| 47 |
'hostinger&#learn', |
| 48 |
'__return_empty_string', |
| 49 |
3 |
| 50 |
); |
| 51 |
|
| 52 |
if ( has_action( 'hostinger_ai_assistant_tab_view' ) && current_user_can( 'edit_posts' ) ) { |
| 53 |
add_submenu_page( |
| 54 |
'hostinger', |
| 55 |
__( 'AI Content Creator', 'hostinger' ), |
| 56 |
__( 'AI Content Creator', 'hostinger' ), |
| 57 |
'manage_options', |
| 58 |
'hostinger&#ai-assistant', |
| 59 |
'__return_empty_string', |
| 60 |
4 |
| 61 |
); |
| 62 |
} |
| 63 |
|
| 64 |
remove_submenu_page( 'hostinger', 'hostinger' ); |
| 65 |
} |
| 66 |
|
| 67 |
public function admin_bar( \WP_Admin_Bar $bar ): void { |
| 68 |
$hostinger_icon = '<svg width="28" height="29" viewBox="0 0 28 29" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 69 |
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.8669 13.6096V0.500465L8.48322 4.02842V9.93472L17.2419 9.93895L23.9655 13.6096H1.8669ZM19.033 8.85388V0.5L25.8277 3.94018V12.801L19.033 8.85388ZM19.033 24.8765V19.0211L10.2067 19.015C10.215 19.054 3.37149 15.2857 3.37149 15.2857L25.8277 15.3911V28.5L19.033 24.8765ZM1.86667 24.8765L1.8669 16.31L8.48322 20.1637V28.3164L1.86667 24.8765Z" fill=""/> |
| 70 |
</svg>'; |
| 71 |
|
| 72 |
$external_icon = '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 73 |
<path d="M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H11C11.2833 3 11.5208 3.09583 11.7125 3.2875C11.9042 3.47917 12 3.71667 12 4C12 4.28333 11.9042 4.52083 11.7125 4.7125C11.5208 4.90417 11.2833 5 11 5H5V19H19V13C19 12.7167 19.0958 12.4792 19.2875 12.2875C19.4792 12.0958 19.7167 12 20 12C20.2833 12 20.5208 12.0958 20.7125 12.2875C20.9042 12.4792 21 12.7167 21 13V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM19 6.4L10.4 15C10.2167 15.1833 9.98333 15.275 9.7 15.275C9.41667 15.275 9.18333 15.1833 9 15C8.81667 14.8167 8.725 14.5833 8.725 14.3C8.725 14.0167 8.81667 13.7833 9 13.6L17.6 5H15C14.7167 5 14.4792 4.90417 14.2875 4.7125C14.0958 4.52083 14 4.28333 14 4C14 3.71667 14.0958 3.47917 14.2875 3.2875C14.4792 3.09583 14.7167 3 15 3H21V9C21 9.28333 20.9042 9.52083 20.7125 9.7125C20.5208 9.90417 20.2833 10 20 10C19.7167 10 19.4792 9.90417 19.2875 9.7125C19.0958 9.52083 19 9.28333 19 9V6.4Z" fill=""/> |
| 74 |
</svg>'; |
| 75 |
|
| 76 |
$bar->add_menu( array( |
| 77 |
'id' => 'hostinger_admin_bar', |
| 78 |
'parent' => null, |
| 79 |
'group' => null, |
| 80 |
'title' => $hostinger_icon . esc_html__( 'Hostinger', 'hostinger' ), |
| 81 |
) ); |
| 82 |
|
| 83 |
$bar->add_menu( array( |
| 84 |
'id' => 'website_list', |
| 85 |
'parent' => 'hostinger_admin_bar', |
| 86 |
'title' => esc_html__( 'Website list', 'hostinger' ) . $external_icon, |
| 87 |
'href' => self::WEBSITE_LIST_URL, |
| 88 |
'meta' => array( |
| 89 |
'target' => '_blank', |
| 90 |
), |
| 91 |
) ); |
| 92 |
|
| 93 |
$bar->add_menu( array( |
| 94 |
'id' => 'billings', |
| 95 |
'parent' => 'hostinger_admin_bar', |
| 96 |
'title' => esc_html__( 'Billings', 'hostinger' ) . $external_icon, |
| 97 |
'href' => self::WEBSITE_BILLINGS_URL, |
| 98 |
'meta' => array( |
| 99 |
'target' => '_blank', |
| 100 |
), |
| 101 |
) ); |
| 102 |
if ( has_action( 'hostinger_ai_assistant_tab_view' ) && current_user_can( 'edit_posts' ) ) { |
| 103 |
$bar->add_menu( array( |
| 104 |
'id' => 'create_content_with_ai', |
| 105 |
'parent' => 'hostinger_admin_bar', |
| 106 |
'title' => esc_html__( 'Create content with AI', 'hostinger' ), |
| 107 |
'href' => self::AI_ASSISTANT_URL, |
| 108 |
) ); |
| 109 |
} |
| 110 |
} |
| 111 |
|
| 112 |
public function render(): void { |
| 113 |
$onboarding = new Onboarding(); |
| 114 |
include_once __DIR__ . '/Views/Onboarding.php'; |
| 115 |
} |
| 116 |
} |
| 117 |
|