File: /home/eslinced-103/brise-edu.or.kr/app/Amuz/NovaTools/AmuzTool.php
<?php
namespace App\Amuz\NovaTools;
use App\Nova\Central\Activity;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Laravel\Nova\Menu\Menu;
use Laravel\Nova\Menu\MenuItem;
use Laravel\Nova\Menu\MenuSection;
use Laravel\Nova\Nova;
use Laravel\Nova\Tool as NovaTool;
use Vyuldashev\NovaPermission\NovaPermissionTool;
class AmuzTool extends NovaTool
{
public function boot(){
// Nova::script('novassport', __DIR__ . '/../dist/js/tool.js');
// Nova::style('novassport', __DIR__ . '/../dist/css/tool.css');
if (!tenancy()->initialized) {
Nova::resources([
// OauthMyApps::class,
]);
}
}
/**
* Build the menu that renders the navigation links for the tool.
*
* @param Request $request
* @return mixed
*/
public function menu(Request $request) :void
{
Nova::mainMenu(function(Request $request, Menu $menu){
$permissionTool = new NovaPermissionTool();
$menu = new Menu();
$packages = $this->getAmuzPackages();
$advancedSection = new MenuSection(__('Advance Settings'), [],'cog');
$advancedSection->items->add(MenuItem::make(__('Scheduled Jobs'))->path('/nova-scheduled-jobs'));
$advancedSection->items->add(MenuItem::resource(Activity::class));
$advancedSection->items->add(MenuItem::externalLink(__('Documentation'), 'https://cms.amuz.co.kr/documentation')
->openInNewTab());
$advancedSection->collapsable();
foreach($packages as $package){
$classPath = base_path(sprintf('AmuzPackages/%s/NovaMainMenu.php',$package));
if(!file_exists($classPath)) continue;
$className = sprintf("AmuzPackages\%s\NovaMainMenu",$package);
$novaMainMenu = new $className();
if (tenancy()->initialized) {
if (method_exists($novaMainMenu, "makeTenancyNovaMainMenu")) {
$novaMainMenu->makeTenancyNovaMainMenu($request, $menu, $permissionTool);
}
}else{
if(method_exists($novaMainMenu,"makeCentralNovaMainMenu")){
$novaMainMenu->makeCentralNovaMainMenu($request, $menu, $permissionTool);
}
}
if(method_exists($novaMainMenu,"makeAdvancedMenu")){
$novaMainMenu->makeAdvancedMenu($request, $advancedSection);
}
}
$settingsMenu = (new \Outl1ne\NovaSettings\NovaSettings)->menu($request);
if($settingsMenu !== null){
$menu->append($settingsMenu);
}
$menu->append($advancedSection);
return $menu;
});
}
private function getAmuzPackages(): array
{
return Storage::disk('package')->directories();
}
}