<?php namespace PrestoPlayer\Services; use PrestoPlayer\Plugin; use PrestoPlayer\WPackio\Enqueue; class Menu { protected $enqueue; public function register() { add_action('admin_menu', [$this, 'addMenu']); } public function addMenu() { add_menu_page( __('Presto Player', 'presto-player'), __('Presto Player', 'presto-player'), 'publish_posts', 'edit.php?post_type=pp_video_block', '', PRESTO_PLAYER_PLUGIN_URL . 'img/menu-icon.svg' ); add_submenu_page( 'edit.php?post_type=pp_video_block', __('Media Hub', 'presto-player'), __('Media Hub', 'presto-player'), 'publish_posts', 'edit.php?post_type=pp_video_block' ); $analyics_page = add_submenu_page( 'edit.php?post_type=pp_video_block', __('Analytics', 'presto-player'), !Plugin::isPro() ? __('Analytics', 'presto-player') . ' <span class="update-plugins" style="background-color: #ffffff1c"><span class="plugin-count">Pro</span></span>' : __('Analytics', 'presto-player'), 'publish_posts', 'presto-analytics', function () { ob_start(); ?> <div class="presto-player-dashboard__header"> <img class="presto-player-dashboard__logo" src="<?php echo esc_url(PRESTO_PLAYER_PLUGIN_URL . '/img/logo.svg'); ?>" /> <div class="presto-player-dashboard__version">v<?php echo esc_html(Plugin::version()); ?></div> </div> <div id="presto-analytics-page"></div> <?php wp_auth_check_html(); ?> <?php $page = ob_get_clean(); echo $page; } ); add_action("admin_print_scripts-{$analyics_page}", [$this, 'analyticsAssets']); $settings_page = add_submenu_page( 'edit.php?post_type=pp_video_block', __('Presto Player Settings', 'presto-player'), __('Settings', 'presto-player'), 'manage_options', 'presto-player-settings', "PrestoPlayer\Services\Settings::template", 5 ); add_action("admin_print_scripts-{$settings_page}", [$this, 'settingsAssets']); } /** * Scripts needed on settings page */ public function settingsAssets() { wp_enqueue_media(); wp_enqueue_code_editor(['type' => "text/css"]); $assets = include trailingslashit(PRESTO_PLAYER_PLUGIN_DIR) . 'dist/settings.asset.php'; wp_enqueue_script( 'surecart/settings/admin', trailingslashit(PRESTO_PLAYER_PLUGIN_URL) . 'dist/settings.js', array_merge(['wp-codemirror'], $assets['dependencies']), $assets['version'], true ); // setting style. wp_enqueue_style('surecart/settings/admin', trailingslashit(PRESTO_PLAYER_PLUGIN_URL) . 'dist/settings.css', [], $assets['version']); wp_enqueue_style('wp-components'); if (function_exists('wp_set_script_translations')) { wp_set_script_translations('surecart/settings/admin', 'presto-player'); } wp_localize_script( 'surecart/settings/admin', 'prestoPlayer', apply_filters('presto-settings-js-options', [ 'root' => esc_url_raw(get_rest_url()), 'nonce' => wp_create_nonce('wp_rest'), 'proVersion' => Plugin::proVersion(), 'isSetup' => [ 'bunny' => false ], 'isPremium' => Plugin::isPro(), 'ajaxurl' => admin_url('admin-ajax.php'), 'wpVersionString' => 'wp/v2/', 'prestoVersionString' => 'presto-player/v1/', 'debug' => defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ]) ); } /** * Scripts needed on analytics page */ public function analyticsAssets() { $assets = include trailingslashit(PRESTO_PLAYER_PLUGIN_DIR) . 'dist/analytics.asset.php'; wp_enqueue_script( 'surecart/analytics/admin', trailingslashit(PRESTO_PLAYER_PLUGIN_URL) . 'dist/analytics.js', array_merge(['hls.js', 'presto-components', 'media'], $assets['dependencies']), $assets['version'], true ); wp_enqueue_style('surecart/analytics/admin', trailingslashit(PRESTO_PLAYER_PLUGIN_URL) . 'dist/analytics.css', [], $assets['version']); wp_enqueue_style('wp-components'); wp_enqueue_media(); if (function_exists('wp_set_script_translations')) { wp_set_script_translations('surecart/analytics/admin', 'presto-player'); } wp_localize_script('surecart/analytics/admin', 'prestoPlayer', [ 'root' => esc_url_raw(get_rest_url()), 'isPremium' => Plugin::isPro(), 'plugin_url' => esc_url_raw(trailingslashit(PRESTO_PLAYER_PLUGIN_URL)), 'nonce' => wp_create_nonce('wp_rest'), 'ajaxurl' => admin_url('admin-ajax.php'), 'wpVersionString' => 'wp/v2/', 'prestoVersionString' => 'presto-player/v1/', 'i18n' => Translation::geti18n() ]); } public function template() { echo '<div id="presto-player-dashboard"></div>'; } }