container = $container; $this->addActions(); } /** * Add plugin actions */ public function addActions(){ add_action('admin_menu', [$this, 'addMenuPage'], 1); add_action('admin_enqueue_scripts', [$this, 'enqueueScripts']); add_action('wp_enqueue_scripts', [$this, 'enqueueScripts']); add_action('admin_post_premmerce_actions', function(){ call_user_func([$this->container->getPluginsHandler(), 'runAction']); }); add_action('wp_ajax_premmerce_actions', function(){ call_user_func([$this->container->getPluginsHandler(), 'runAction']); }); add_action('wp_ajax_premmerce_wizard_actions', function(){ call_user_func([$this->container->getWizardHandler(), 'runAction']); }); add_action('wp_before_admin_bar_render', function(){ call_user_func([$this->container->getToolbarHandler(), 'renderAdminBarItem']); }); add_action('admin_post_toggle_navigation', function(){ call_user_func([$this->container->getToolbarHandler(), 'toggleNavigation']); }); if(PremmercePlugin::IS_PREMIUM){ add_action('wp_before_admin_bar_render', function(){ call_user_func([$this->container->getPremiumHandler(), 'replaceToolbarWpItem']); }); add_action('wp_ajax_enable_ecommerce_menu', [$this->container->getPremiumHandler(), 'enableMenu']); } } /** * Add premmerce to menu */ public function addMenuPage(){ $tips = $this->container->getWizardApi()->getUncompletedTipsCount(); add_menu_page( __('Premmerce', 'premmerce'), __('Premmerce', 'premmerce') . " {$tips}", 'manage_options', 'premmerce', [$this, 'optionsPage'], $this->getIcon()); } /** * Manage plugins page */ public function optionsPage(){ $current = $this->getCurrentTab(); $data = [ 'current' => $current, 'tabs' => $this->getTabs(), 'url' => menu_page_url(PremmercePlugin::SLUG, false), ]; switch($current){ case 'wizard': $data['wizard'] = $this->container->getWizardApi(); break; case 'plugins': $data['dep'] = $this->container->getPluginsApi(); break; } $this->container->getFileManager()->includeTemplate('admin/main.php', $data); } /** * @param string $hook */ public function enqueueScripts($hook){ $fm = $this->container->getFileManager(); if(PremmercePlugin::IS_PREMIUM){ wp_enqueue_style('premmerce-toolbar', $fm->locateAsset('admin/css/premmerce-toolbar.css')); } wp_enqueue_style('premmerce-wizard-bar', $fm->locateAsset('admin/css/wizard-admin-bar.css')); wp_enqueue_style('premmerce-tabs', $fm->locateAsset('admin/css/premmerce-tabs.css')); if($hook == 'toplevel_page_premmerce'){ wp_register_script('premmerce_actions', $fm->locateAsset('admin/js/premmerce_actions.js'), ['updates']); wp_register_style('premmerce-spinner', $fm->locateAsset('admin/css/spinner.css')); switch($this->getCurrentTab()){ case 'wizard': wp_enqueue_script('premmerce-wizard', $fm->locateAsset('admin/js/wizard.js'), [ 'premmerce_actions', 'jquery-ui-sortable', ]); wp_enqueue_style('premmerce-wizard', $fm->locateAsset('admin/css/wizard.css'), ['premmerce-spinner']); break; case 'plugins': wp_enqueue_script('premmerce_plugins', $fm->locateAsset('admin/js/plugins.js'), ['premmerce_actions']); wp_enqueue_style('premmerce-plugins', $fm->locateAsset('admin/css/plugins.css'), ['premmerce-spinner']); break; } } } /** * * @return array */ private function getTabs(){ $tabs['wizard'] = __('Wizard', 'premmerce'); $tabs['plugins'] = __('Plugins', 'premmerce'); if(function_exists('premmerce_pwk_fs')){ $tabs['contact'] = __('Support', 'premmerce'); if(premmerce_pwk_fs()->is_registered()){ $tabs['account'] = __('Account', 'premmerce'); } } return $tabs; } /** * Tab from get parameter of default * @return string */ private function getCurrentTab(){ return isset($_GET['tab'])? $_GET['tab'] : 'wizard'; } /** * Inline svg icon * * @return string */ private function getIcon(){ $svg = ' '; $svg = 'data:image/svg+xml;base64,' . base64_encode($svg); return $svg; } }