Skip to content

Commit 9aa4ad0

Browse files
committed
Squash merge menus branch: integrate menu builder
1 parent b90a3a1 commit 9aa4ad0

31 files changed

+665
-144
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources;
4+
5+
use Biostate\FilamentMenuBuilder\Filament\Resources\MenuItemResource as BaseMenuItemResource;
6+
7+
class MenuItemResource extends BaseMenuItemResource
8+
{
9+
protected static bool $shouldRegisterNavigation = false;
10+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources;
4+
5+
use Biostate\FilamentMenuBuilder\Filament\Resources\MenuResource as BaseMenuResource;
6+
7+
class MenuResource extends BaseMenuResource
8+
{
9+
public static function getNavigationGroup(): ?string
10+
{
11+
return null;
12+
}
13+
}

app/Filament/Admin/Resources/MenuResource/Pages/CreateMenu.php

Lines changed: 0 additions & 11 deletions
This file was deleted.

app/Filament/Admin/Resources/MenuResource/Pages/EditMenu.php

Lines changed: 0 additions & 11 deletions
This file was deleted.

app/Filament/Admin/Resources/MenuResource/Pages/ListMenus.php

Lines changed: 0 additions & 11 deletions
This file was deleted.

app/Models/Menu.php

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,14 @@
11
<?php
22
namespace App\Models;
33

4+
use App\Traits\IsTenantModel;
45
use Illuminate\Database\Eloquent\Factories\HasFactory;
56
use Illuminate\Database\Eloquent\Model;
67
use Illuminate\Database\Eloquent\SoftDeletes;
78

8-
class Menu extends Model
9-
{
10-
use HasFactory, SoftDeletes;
11-
12-
protected $fillable = [
13-
'name',
14-
'url',
15-
'parent_id',
16-
'order',
17-
];
9+
use Biostate\FilamentMenuBuilder\Models\Menu as BaseMenu;
1810

19-
public function parent()
20-
{
21-
return $this->belongsTo(Menu::class, 'parent_id');
22-
}
23-
24-
public function children()
25-
{
26-
return $this->hasMany(Menu::class, 'parent_id');
27-
}
11+
class Menu extends BaseMenu
12+
{
13+
use IsTenantModel;
2814
}

app/Models/MenuItem.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace App\Models;
4+
5+
use App\Traits\IsTenantModel;
6+
use Illuminate\Database\Eloquent\Model;
7+
use Biostate\FilamentMenuBuilder\Models\MenuItem as BaseMenuItem;
8+
9+
class MenuItem extends BaseMenuItem
10+
{
11+
use IsTenantModel;
12+
}

app/Providers/Filament/AdminPanelProvider.php

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@
22

33
namespace App\Providers\Filament;
44

5+
use App\Filament\Admin\Resources\MenuItemResource;
6+
use App\Filament\Admin\Resources\MenuResource;
57
use App\Filament\App\Pages;
68
use BezhanSalleh\FilamentShield\Middleware\SyncShieldTenant;
79
use BezhanSalleh\FilamentShield\FilamentShieldPlugin;
810
use App\Http\Middleware\TeamsPermission;
911
use App\Models\Team;
12+
use App\Models\Menu;
13+
use App\Models\MenuItem;
14+
use Biostate\FilamentMenuBuilder\FilamentMenuBuilderPlugin;
15+
use Filament\Actions\Action;
1016
use Filament\Facades\Filament;
1117
use Filament\Http\Middleware\Authenticate;
1218
use Filament\Http\Middleware\DisableBladeIconComponents;
1319
use Filament\Http\Middleware\DispatchServingFilamentEvent;
14-
use Filament\Navigation\MenuItem;
1520
use Filament\Pages as FilamentPage;
1621
use Filament\Panel;
1722
use Filament\PanelProvider;
@@ -88,7 +93,7 @@ public function panel(Panel $panel): Panel
8893
->tenantRegistration(Pages\CreateTeam::class)
8994
->tenantProfile(Pages\EditTeam::class)
9095
->userMenuItems([
91-
MenuItem::make()
96+
Action::make()
9297
->label('Team Settings')
9398
->icon('heroicon-o-cog-6-tooth')
9499
->url(fn() => $this->shouldRegisterMenuItem()
@@ -100,7 +105,12 @@ public function panel(Panel $panel): Panel
100105

101106
$panel->plugins([
102107
FilamentShieldPlugin::make()
103-
->navigationGroup("Administration")
108+
->navigationGroup("Administration"),
109+
FilamentMenuBuilderPlugin::make()
110+
->usingMenuModel(Menu::class)
111+
->usingMenuItemModel(MenuItem::class)
112+
->usingMenuResource(MenuResource::class)
113+
->usingMenuItemResource(MenuItemResource::class),
104114

105115
])->tenantMiddleware([
106116
SyncShieldTenant::class,

app/Traits/IsTenantModel.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace App\Traits;
4+
5+
use App\Models\Team;
6+
use Illuminate\Database\Eloquent\Relations\BelongsTo;
7+
8+
trait IsTenantModel
9+
{
10+
11+
public function team(): BelongsTo
12+
{
13+
return $this->belongsTo(Team::class);
14+
}
15+
}

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"require": {
1111
"php": "^8.5",
1212
"bezhansalleh/filament-shield": "~4.0",
13+
"biostate/filament-menu-builder": "^5.0",
1314
"filament/filament": "~5.1",
1415
"filament/spatie-laravel-settings-plugin": "^5.0",
1516
"guzzlehttp/guzzle": "^7.8",

0 commit comments

Comments
 (0)