diff --git a/app/Filament/Admin/Pages/Dashboard.php b/app/Filament/Admin/Pages/Dashboard.php index 018468732..c5f3b19c9 100644 --- a/app/Filament/Admin/Pages/Dashboard.php +++ b/app/Filament/Admin/Pages/Dashboard.php @@ -2,36 +2,13 @@ namespace App\Filament\Admin\Pages; -use App\Filament\Admin\Resources\NodeResource\Pages\CreateNode; -use App\Filament\Admin\Resources\NodeResource\Pages\ListNodes; -use App\Models\Egg; -use App\Models\Node; -use App\Models\Server; -use App\Models\User; use App\Services\Helpers\SoftwareVersionService; -use Filament\Actions\CreateAction; -use Filament\Pages\Page; +use Filament\Pages\Dashboard as BaseDashboard; -class Dashboard extends Page +class Dashboard extends BaseDashboard { protected static ?string $navigationIcon = 'tabler-layout-dashboard'; - protected static string $view = 'filament.pages.dashboard'; - - protected ?string $heading = ''; - - public function getTitle(): string - { - return trans('admin/dashboard.title'); - } - - public static function getNavigationLabel(): string - { - return trans('admin/dashboard.title'); - } - - protected static ?string $slug = '/'; - private SoftwareVersionService $softwareVersionService; public function mount(SoftwareVersionService $softwareVersionService): void @@ -39,51 +16,18 @@ class Dashboard extends Page $this->softwareVersionService = $softwareVersionService; } - public function getViewData(): array + public function getColumns(): int { - return [ - 'inDevelopment' => config('app.version') === 'canary', - 'version' => $this->softwareVersionService->currentPanelVersion(), - 'latestVersion' => $this->softwareVersionService->latestPanelVersion(), - 'isLatest' => $this->softwareVersionService->isLatestPanel(), - 'eggsCount' => Egg::query()->count(), - 'nodesList' => ListNodes::getUrl(), - 'nodesCount' => Node::query()->count(), - 'serversCount' => Server::query()->count(), - 'usersCount' => User::query()->count(), + return 1; + } - 'devActions' => [ - CreateAction::make() - ->label(trans('admin/dashboard.sections.intro-developers.button_issues')) - ->icon('tabler-brand-github') - ->url('https://github.com/pelican-dev/panel/issues', true), - ], - 'updateActions' => [ - CreateAction::make() - ->label(trans('admin/dashboard.sections.intro-update-available.heading')) - ->icon('tabler-clipboard-text') - ->url('https://pelican.dev/docs/panel/update', true) - ->color('warning'), - ], - 'nodeActions' => [ - CreateAction::make() - ->label(trans('admin/dashboard.sections.intro-first-node.button_label')) - ->icon('tabler-server-2') - ->url(CreateNode::getUrl()), - ], - 'supportActions' => [ - CreateAction::make() - ->label(trans('admin/dashboard.sections.intro-support.button_donate')) - ->icon('tabler-cash') - ->url('https://pelican.dev/donate', true) - ->color('success'), - ], - 'helpActions' => [ - CreateAction::make() - ->label(trans('admin/dashboard.sections.intro-help.button_docs')) - ->icon('tabler-speedboat') - ->url('https://pelican.dev/docs', true), - ], - ]; + public function getHeading(): string + { + return trans('admin/dashboard.heading'); + } + + public function getSubheading(): string + { + return trans('admin/dashboard.version', ['version' => $this->softwareVersionService->currentPanelVersion()]); } } diff --git a/app/Filament/Admin/Widgets/CanaryWidget.php b/app/Filament/Admin/Widgets/CanaryWidget.php new file mode 100644 index 000000000..80e4c07f8 --- /dev/null +++ b/app/Filament/Admin/Widgets/CanaryWidget.php @@ -0,0 +1,32 @@ + [ + CreateAction::make() + ->label(trans('admin/dashboard.sections.intro-developers.button_issues')) + ->icon('tabler-brand-github') + ->url('https://github.com/pelican-dev/panel/issues', true), + ], + ]; + } +} diff --git a/app/Filament/Admin/Widgets/HelpWidget.php b/app/Filament/Admin/Widgets/HelpWidget.php new file mode 100644 index 000000000..97be7b1e6 --- /dev/null +++ b/app/Filament/Admin/Widgets/HelpWidget.php @@ -0,0 +1,27 @@ + [ + CreateAction::make() + ->label(trans('admin/dashboard.sections.intro-help.button_docs')) + ->icon('tabler-speedboat') + ->url('https://pelican.dev/docs', true), + ], + ]; + } +} diff --git a/app/Filament/Admin/Widgets/NoNodesWidget.php b/app/Filament/Admin/Widgets/NoNodesWidget.php new file mode 100644 index 000000000..bf4e75dbc --- /dev/null +++ b/app/Filament/Admin/Widgets/NoNodesWidget.php @@ -0,0 +1,34 @@ + [ + CreateAction::make() + ->label(trans('admin/dashboard.sections.intro-first-node.button_label')) + ->icon('tabler-server-2') + ->url(CreateNode::getUrl()), + ], + ]; + } +} diff --git a/app/Filament/Admin/Widgets/SupportWidget.php b/app/Filament/Admin/Widgets/SupportWidget.php new file mode 100644 index 000000000..c9eff0b7c --- /dev/null +++ b/app/Filament/Admin/Widgets/SupportWidget.php @@ -0,0 +1,28 @@ + [ + CreateAction::make() + ->label(trans('admin/dashboard.sections.intro-support.button_donate')) + ->icon('tabler-cash') + ->url('https://pelican.dev/donate', true) + ->color('success'), + ], + ]; + } +} diff --git a/app/Filament/Admin/Widgets/UpdateWidget.php b/app/Filament/Admin/Widgets/UpdateWidget.php new file mode 100644 index 000000000..95ad87e61 --- /dev/null +++ b/app/Filament/Admin/Widgets/UpdateWidget.php @@ -0,0 +1,39 @@ +softwareVersionService = $softwareVersionService; + } + + public function getViewData(): array + { + return [ + 'version' => $this->softwareVersionService->currentPanelVersion(), + 'latestVersion' => $this->softwareVersionService->latestPanelVersion(), + 'isLatest' => $this->softwareVersionService->isLatestPanel(), + 'actions' => [ + CreateAction::make() + ->label(trans('admin/dashboard.sections.intro-update-available.heading')) + ->icon('tabler-clipboard-text') + ->url('https://pelican.dev/docs/panel/update', true) + ->color('warning'), + ], + ]; + } +} diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 03cc5c44c..3cc811b9f 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -60,6 +60,7 @@ class AdminPanelProvider extends PanelProvider ->sidebarCollapsibleOnDesktop() ->discoverResources(in: app_path('Filament/Admin/Resources'), for: 'App\\Filament\\Admin\\Resources') ->discoverPages(in: app_path('Filament/Admin/Pages'), for: 'App\\Filament\\Admin\\Pages') + ->discoverWidgets(in: app_path('Filament/Admin/Widgets'), for: 'App\\Filament\\Admin\\Widgets') ->middleware([ EncryptCookies::class, AddQueuedCookiesToResponse::class, diff --git a/lang/en/admin/dashboard.php b/lang/en/admin/dashboard.php index 0cfa8b9ef..49ff57726 100644 --- a/lang/en/admin/dashboard.php +++ b/lang/en/admin/dashboard.php @@ -1,10 +1,7 @@ 'Dashboard', - 'overview' => 'Overview', 'heading' => 'Welcome to Pelican!', - 'expand_sections' => 'You can expand the following sections:', 'version' => 'Version: :version', 'advanced' => 'Advanced', 'server' => 'Server', diff --git a/resources/views/filament/admin/widgets/canary-widget.blade.php b/resources/views/filament/admin/widgets/canary-widget.blade.php new file mode 100644 index 000000000..d05fc589c --- /dev/null +++ b/resources/views/filament/admin/widgets/canary-widget.blade.php @@ -0,0 +1,19 @@ + + + {{ trans('admin/dashboard.sections.intro-developers.heading') }} + +

{{ trans('admin/dashboard.sections.intro-developers.content') }}

+ +


+ +

{{ trans('admin/dashboard.sections.intro-developers.extra_note') }}

+
+
diff --git a/resources/views/filament/admin/widgets/help-widget.blade.php b/resources/views/filament/admin/widgets/help-widget.blade.php new file mode 100644 index 000000000..3b33b0b7d --- /dev/null +++ b/resources/views/filament/admin/widgets/help-widget.blade.php @@ -0,0 +1,14 @@ + + + {{ trans('admin/dashboard.sections.intro-help.heading') }} + +

{{ trans('admin/dashboard.sections.intro-help.content') }}

+
+
diff --git a/resources/views/filament/admin/widgets/no-nodes-widget.blade.php b/resources/views/filament/admin/widgets/no-nodes-widget.blade.php new file mode 100644 index 000000000..47904b891 --- /dev/null +++ b/resources/views/filament/admin/widgets/no-nodes-widget.blade.php @@ -0,0 +1,14 @@ + + + {{ trans('admin/dashboard.sections.intro-first-node.heading') }} + +

{{ trans('admin/dashboard.sections.intro-first-node.content') }}

+
+
diff --git a/resources/views/filament/admin/widgets/support-widget.blade.php b/resources/views/filament/admin/widgets/support-widget.blade.php new file mode 100644 index 000000000..a45f0849c --- /dev/null +++ b/resources/views/filament/admin/widgets/support-widget.blade.php @@ -0,0 +1,18 @@ + + + {{ trans('admin/dashboard.sections.intro-support.heading') }} + +

{{ trans('admin/dashboard.sections.intro-support.content') }}

+ +


+ +

{{ trans('admin/dashboard.sections.intro-support.extra_note') }}

+
+
diff --git a/resources/views/filament/admin/widgets/update-widget.blade.php b/resources/views/filament/admin/widgets/update-widget.blade.php new file mode 100644 index 000000000..9dd757514 --- /dev/null +++ b/resources/views/filament/admin/widgets/update-widget.blade.php @@ -0,0 +1,25 @@ + + @if (!$isLatest) + + {{ trans('admin/dashboard.sections.intro-update-available.heading') }} + +

{{ trans('admin/dashboard.sections.intro-update-available.content', ['latestVersion' => $latestVersion]) }}

+ +
+ @else + + {{ trans('admin/dashboard.sections.intro-no-update.heading') }} + +

{{ trans('admin/dashboard.sections.intro-no-update.content', ['version' => $version]) }}

+
+ @endif +
diff --git a/resources/views/filament/pages/dashboard.blade.php b/resources/views/filament/pages/dashboard.blade.php deleted file mode 100644 index 3fd691793..000000000 --- a/resources/views/filament/pages/dashboard.blade.php +++ /dev/null @@ -1,105 +0,0 @@ - - - -

{{ trans('admin/dashboard.expand_sections') }}

- - @if (!$isLatest) - - {{ trans('admin/dashboard.sections.intro-update-available.heading') }} - -

{{ trans('admin/dashboard.sections.intro-update-available.content', ['latestVersion' => $latestVersion]) }}

- -
- @else - - {{ trans('admin/dashboard.sections.intro-no-update.heading') }} - -

{{ trans('admin/dashboard.sections.intro-no-update.content', ['version' => $version]) }}

-
- @endif - - - @if ($inDevelopment) - - {{ trans('admin/dashboard.sections.intro-developers.heading') }} - -

{{ trans('admin/dashboard.sections.intro-developers.content') }}

- -


- -

{{ trans('admin/dashboard.sections.intro-developers.extra_note') }}

- -
- @endif - - {{-- No Nodes Created --}} - @if ($nodesCount <= 0) - - {{ trans('admin/dashboard.sections.intro-first-node.heading') }} - -

{{ trans('admin/dashboard.sections.intro-first-node.content') }}

- -
- @endif - - {{-- No Nodes Active --}} - - - {{ trans('admin/dashboard.sections.intro-support.heading') }} - -

{{ trans('admin/dashboard.sections.intro-support.content') }}

- -


- -

{{ trans('admin/dashboard.sections.intro-support.extra_note') }}

- -
- - - {{ trans('admin/dashboard.sections.intro-help.heading') }} -

{{ trans('admin/dashboard.sections.intro-help.content') }}

-
-