Add Menu Tree functionality and integrate Filament Tree plugin: Introduced a new MenuTree page for managing page structures, added PagesMenuWidget for displaying a tree layout of pages, and updated localization files for menu-related actions. Enhanced Page model with tree management capabilities and included necessary CSS and JS files for the Filament Tree plugin.

This commit is contained in:
Ümit Tunç
2025-11-01 16:13:59 -03:00
parent 1d46c9243d
commit ad20ba575a
13 changed files with 342 additions and 2 deletions
@@ -5,6 +5,7 @@ namespace App\Filament\Admin\Resources\Pages;
use App\Filament\Admin\Resources\Pages\Pages\CreatePage;
use App\Filament\Admin\Resources\Pages\Pages\EditPage;
use App\Filament\Admin\Resources\Pages\Pages\ListPages;
use App\Filament\Admin\Resources\Pages\Pages\MenuTree;
use App\Filament\Admin\Resources\Pages\Schemas\PageForm;
use App\Filament\Admin\Resources\Pages\Tables\PagesTable;
use App\Models\Page;
@@ -60,6 +61,7 @@ class PageResource extends Resource
'index' => ListPages::route('/'),
'create' => CreatePage::route('/create'),
'edit' => EditPage::route('/{record}/edit'),
'menu' => MenuTree::route('/menu'),
];
}
@@ -3,6 +3,7 @@
namespace App\Filament\Admin\Resources\Pages\Pages;
use App\Filament\Admin\Resources\Pages\PageResource;
use Filament\Actions\Action;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
@@ -18,6 +19,11 @@ class ListPages extends ListRecords
protected function getHeaderActions(): array
{
return [
Action::make('menu')
->label(__('pages.menu_tree_title'))
->icon('heroicon-o-bars-3')
->url(PageResource::getUrl('menu'))
->color('gray'),
CreateAction::make()
->label(__('pages.create')),
];
@@ -0,0 +1,46 @@
<?php
namespace App\Filament\Admin\Resources\Pages\Pages;
use App\Filament\Admin\Resources\Pages\PageResource;
use App\Filament\Admin\Widgets\PagesMenuWidget;
use Filament\Actions\Action;
use Filament\Resources\Pages\Page;
class MenuTree extends Page
{
protected static string $resource = PageResource::class;
protected string $view = 'filament.admin.pages.menu-tree';
public function getTitle(): string
{
return __('pages.menu_tree_title');
}
protected function getHeaderActions(): array
{
return [
Action::make('refresh')
->label(__('pages.menu_refresh'))
->icon('heroicon-o-arrow-path')
->color('gray')
->action(function () {
$this->dispatch('$refresh');
}),
Action::make('back_to_pages')
->label(__('pages.menu_back_to_pages'))
->icon('heroicon-o-arrow-left')
->url(PageResource::getUrl('index'))
->color('gray'),
];
}
protected function getHeaderWidgets(): array
{
return [
PagesMenuWidget::class,
];
}
}