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;
}
}