From 532f3bdb3f2e7b9091410c00dc9f0781dc8b8d43 Mon Sep 17 00:00:00 2001
From: NekoCH <96158157+ex-hentai@users.noreply.github.com>
Date: Sun, 21 Sep 2025 18:07:38 +0800
Subject: [PATCH] migration script
# Conflicts:
# app/Filament/Resources/Torrent/AnnounceLogResource.php
---
app/Filament/Clusters/Plugin.php | 2 +-
app/Filament/Custom/Widgets/StatTable.php | 2 +-
app/Filament/PageList.php | 9 +-
app/Filament/PageListSingle.php | 6 +-
app/Filament/Pages/AnnounceMonitor.php | 10 +-
app/Filament/Pages/Dashboard.php | 3 +-
app/Filament/Pages/RunCommand.php | 4 +-
.../Resources/Oauth/AccessTokenResource.php | 34 +--
.../Resources/Oauth/AuthCodeResource.php | 34 +--
.../Resources/Oauth/ClientResource.php | 48 +++--
.../ClientResource/Pages/ManageClients.php | 3 +-
.../Resources/Oauth/ProviderResource.php | 83 +++----
.../Pages/ManageProviders.php | 3 +-
.../Resources/Oauth/RefreshTokenResource.php | 32 +--
.../Resources/Section/AudioCodecResource.php | 15 +-
.../Pages/EditAudioCodec.php | 3 +-
.../Pages/ListAudioCodecs.php | 3 +-
.../Resources/Section/CategoryResource.php | 71 +++---
.../CategoryResource/Pages/EditCategory.php | 3 +-
.../CategoryResource/Pages/ListCategories.php | 3 +-
.../Resources/Section/CodecResource.php | 54 +++--
.../Section/CodecResource/Pages/EditCodec.php | 3 +-
.../CodecResource/Pages/ListCodecs.php | 3 +-
.../Resources/Section/IconResource.php | 68 +++---
.../Section/IconResource/Pages/EditIcon.php | 3 +-
.../Section/IconResource/Pages/ListIcons.php | 3 +-
.../Resources/Section/MediaResource.php | 15 +-
.../Section/MediaResource/Pages/EditMedia.php | 3 +-
.../Section/MediaResource/Pages/ListMedia.php | 3 +-
.../Resources/Section/ProcessingResource.php | 15 +-
.../Pages/EditProcessing.php | 3 +-
.../Pages/ListProcessings.php | 3 +-
.../Resources/Section/SecondIconResource.php | 67 +++---
.../Pages/EditSecondIcon.php | 3 +-
.../Pages/ListSecondIcons.php | 3 +-
.../Resources/Section/SectionResource.php | 94 ++++----
.../SectionResource/Pages/EditSection.php | 3 +-
.../SectionResource/Pages/ListSections.php | 3 +-
.../Resources/Section/SourceResource.php | 15 +-
.../SourceResource/Pages/EditSource.php | 3 +-
.../SourceResource/Pages/ListSources.php | 3 +-
.../Resources/Section/StandardResource.php | 15 +-
.../StandardResource/Pages/EditStandard.php | 3 +-
.../StandardResource/Pages/ListStandards.php | 3 +-
.../Resources/Section/TeamResource.php | 15 +-
.../Section/TeamResource/Pages/EditTeam.php | 3 +-
.../Section/TeamResource/Pages/ListTeams.php | 3 +-
.../Resources/System/AgentAllowResource.php | 77 ++++---
.../Pages/EditAgentAllow.php | 3 +-
.../Pages/ListAgentAllows.php | 16 +-
.../DeniesRelationManager.php | 41 ++--
.../Resources/System/AgentDenyResource.php | 58 ++---
.../AgentDenyResource/Pages/EditAgentDeny.php | 3 +-
.../Pages/ListAgentDenies.php | 3 +-
.../System/DownloadSpeedResource.php | 36 ++--
.../Pages/ManageDownloadSpeeds.php | 3 +-
.../Resources/System/ExamResource.php | 134 +++++++-----
.../System/ExamResource/Pages/CreateExam.php | 3 +-
.../System/ExamResource/Pages/EditExam.php | 6 +-
.../System/ExamResource/Pages/ListExams.php | 3 +-
app/Filament/Resources/System/IspResource.php | 36 ++--
.../System/IspResource/Pages/ManageIsps.php | 3 +-
.../Resources/System/MedalResource.php | 97 +++++----
.../System/MedalResource/Pages/EditMedal.php | 3 +-
.../System/MedalResource/Pages/ListMedals.php | 3 +-
.../System/MessageTemplateResource.php | 53 +++--
.../Pages/ManageMessageTemplates.php | 3 +-
.../Resources/System/PluginResource.php | 51 +++--
.../PluginResource/Pages/ManagePlugins.php | 3 +-
.../Resources/System/PluginStoreResource.php | 44 ++--
.../Pages/EditPluginStore.php | 3 +-
.../System/SeedBoxRecordResource.php | 108 ++++++----
.../Pages/CreateSeedBoxRecord.php | 3 +-
.../Pages/EditSeedBoxRecord.php | 6 +-
.../Pages/ListSeedBoxRecords.php | 15 +-
.../Resources/System/SettingResource.php | 45 ++--
.../SettingResource/Pages/EditSetting.php | 165 +++++++-------
.../Resources/System/TorrentStateResource.php | 37 ++--
.../Resources/System/TrackerUrlResource.php | 55 +++--
.../Pages/ManageTrackerUrls.php | 3 +-
.../Resources/System/UploadSpeedResource.php | 36 ++--
.../Pages/ManageUploadSpeeds.php | 3 +-
.../System/UsernameChangeLogResource.php | 47 ++--
.../Resources/Torrent/AnnounceLogResource.php | 174 ++++++++-------
.../Pages/EditAnnounceLog.php | 3 +-
.../Resources/Torrent/TagResource.php | 85 ++++----
.../Torrent/TagResource/Pages/EditTag.php | 3 +-
.../Torrent/TagResource/Pages/ListTags.php | 3 +-
.../Torrent/TorrentDenyReasonResource.php | 42 ++--
.../Pages/ManageTorrentDenyReasons.php | 6 +-
.../Torrent/TorrentOperationLogResource.php | 49 +++--
.../Resources/Torrent/TorrentResource.php | 185 +++++++++-------
.../TorrentResource/Pages/EditTorrent.php | 3 +-
.../Resources/User/AttendanceLogResource.php | 57 ++---
.../Pages/ManageAttendanceLogs.php | 3 +-
.../Resources/User/BonusLogResource.php | 47 ++--
app/Filament/Resources/User/ClaimResource.php | 63 +++---
.../User/ClaimResource/Pages/EditClaim.php | 3 +-
.../Resources/User/ExamUserResource.php | 107 +++++----
.../ExamUserResource/Pages/EditExamUser.php | 3 +-
.../ExamUserResource/Pages/ViewExamUser.php | 24 ++-
.../Resources/User/HitAndRunResource.php | 101 +++++----
.../HitAndRunResource/Pages/EditHitAndRun.php | 3 +-
.../HitAndRunResource/Pages/ViewHitAndRun.php | 9 +-
.../Resources/User/InviteResource.php | 73 ++++---
.../User/InviteResource/Pages/EditInvite.php | 3 +-
.../Resources/User/LoginLogResource.php | 42 ++--
app/Filament/Resources/User/TokenResource.php | 45 ++--
.../Resources/User/TorrentBuyLogResource.php | 50 +++--
.../Pages/EditTorrentBuyLog.php | 3 +-
.../Resources/User/UserMedalResource.php | 98 +++++----
.../UserMedalResource/Pages/EditUserMedal.php | 3 +-
.../Resources/User/UserMetaResource.php | 50 +++--
.../UserMetaResource/Pages/CreateUserMeta.php | 3 +-
.../UserMetaResource/Pages/EditUserMeta.php | 6 +-
.../UserMetaResource/Pages/ListUserMetas.php | 3 +-
.../Resources/User/UserModifyLogResource.php | 50 +++--
.../Pages/ManageUserModifyLogs.php | 3 +-
app/Filament/Resources/User/UserResource.php | 204 ++++++++++--------
.../User/UserResource/Pages/CreateUser.php | 6 +-
.../User/UserResource/Pages/EditUser.php | 6 +-
.../User/UserResource/Pages/ListUsers.php | 9 +-
.../User/UserResource/Pages/UserProfile.php | 126 ++++++-----
.../User/UserResource/Pages/ViewUser.php | 3 +-
.../MedalsRelationManager.php | 32 +--
app/Filament/Widgets/AccountInfo.php | 2 +-
.../AnnounceMonitor/MaxUploadedUser.php | 8 +-
app/Filament/Widgets/LatestTorrents.php | 12 +-
app/Filament/Widgets/LatestUsers.php | 13 +-
app/Filament/Widgets/TorrentTrend.php | 2 +-
app/Filament/Widgets/UserTrend.php | 2 +-
131 files changed, 2177 insertions(+), 1644 deletions(-)
diff --git a/app/Filament/Clusters/Plugin.php b/app/Filament/Clusters/Plugin.php
index a2d886bd..10423ab2 100644
--- a/app/Filament/Clusters/Plugin.php
+++ b/app/Filament/Clusters/Plugin.php
@@ -6,5 +6,5 @@ use Filament\Clusters\Cluster;
class Plugin extends Cluster
{
- protected static ?string $navigationIcon = 'heroicon-o-squares-2x2';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-squares-2x2';
}
diff --git a/app/Filament/Custom/Widgets/StatTable.php b/app/Filament/Custom/Widgets/StatTable.php
index f05c7b84..2441d641 100644
--- a/app/Filament/Custom/Widgets/StatTable.php
+++ b/app/Filament/Custom/Widgets/StatTable.php
@@ -7,7 +7,7 @@ use Filament\Widgets\Widget;
class StatTable extends Widget
{
- protected static string $view = 'filament.widgets.stat-table';
+ protected string $view = 'filament.widgets.stat-table';
protected function getHeader(): string
{
diff --git a/app/Filament/PageList.php b/app/Filament/PageList.php
index 952a8179..70b7ab8e 100644
--- a/app/Filament/PageList.php
+++ b/app/Filament/PageList.php
@@ -2,15 +2,18 @@
namespace App\Filament;
+use Filament\Support\Enums\Width;
+use Closure;
+use Filament\Tables\Enums\FiltersLayout;
use Filament\Resources\Pages\ListRecords;
use Filament\Tables\Filters\Layout;
use Illuminate\Database\Eloquent\Model;
class PageList extends ListRecords
{
- protected ?string $maxContentWidth = 'full';
+ protected Width|string|null $maxContentWidth = 'full';
- protected function getTableRecordUrlUsing(): ?\Closure
+ protected function getTableRecordUrlUsing(): ?Closure
{
return function (Model $record): ?string {
return null;
@@ -19,6 +22,6 @@ class PageList extends ListRecords
protected function getTableFiltersLayout(): ?string
{
- return \Filament\Tables\Enums\FiltersLayout::AboveContent;
+ return FiltersLayout::AboveContent;
}
}
diff --git a/app/Filament/PageListSingle.php b/app/Filament/PageListSingle.php
index 55dfe17f..4f3c7ee4 100644
--- a/app/Filament/PageListSingle.php
+++ b/app/Filament/PageListSingle.php
@@ -2,6 +2,8 @@
namespace App\Filament;
+use Filament\Support\Enums\Width;
+use Filament\Tables\Enums\FiltersLayout;
use Closure;
use Filament\Resources\Pages\ManageRecords;
use Filament\Tables\Filters\Layout;
@@ -9,11 +11,11 @@ use Illuminate\Database\Eloquent\Model;
class PageListSingle extends ManageRecords
{
- protected ?string $maxContentWidth = 'full';
+ protected Width|string|null $maxContentWidth = 'full';
protected function getTableFiltersLayout(): ?string
{
- return \Filament\Tables\Enums\FiltersLayout::AboveContent;
+ return FiltersLayout::AboveContent;
}
protected function getTableRecordActionUsing(): ?Closure
diff --git a/app/Filament/Pages/AnnounceMonitor.php b/app/Filament/Pages/AnnounceMonitor.php
index da767eda..77f712a2 100644
--- a/app/Filament/Pages/AnnounceMonitor.php
+++ b/app/Filament/Pages/AnnounceMonitor.php
@@ -1,19 +1,21 @@
schema([
+ return $schema
+ ->components([
//
]);
}
@@ -45,32 +49,32 @@ class AccessTokenResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->searchable(),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('id')->searchable(),
+ TextColumn::make('user.username')
->label(__('label.username'))
->formatStateUsing(fn ($record) => username_for_admin($record->user_id)),
- Tables\Columns\TextColumn::make('client.name')
+ TextColumn::make('client.name')
->label(__('oauth.client')),
- Tables\Columns\TextColumn::make('expires_at')
+ TextColumn::make('expires_at')
->label(__('label.expire_at'))
])
->filters([
//
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageAccessTokens::route('/'),
+ 'index' => ManageAccessTokens::route('/'),
];
}
}
diff --git a/app/Filament/Resources/Oauth/AuthCodeResource.php b/app/Filament/Resources/Oauth/AuthCodeResource.php
index 0333c55f..5a5d99cd 100644
--- a/app/Filament/Resources/Oauth/AuthCodeResource.php
+++ b/app/Filament/Resources/Oauth/AuthCodeResource.php
@@ -2,11 +2,15 @@
namespace App\Filament\Resources\Oauth;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Oauth\AuthCodeResource\Pages\ManageAuthCodes;
use App\Filament\Resources\Oauth\AuthCodeResource\Pages;
use App\Filament\Resources\Oauth\AuthCodeResource\RelationManagers;
use Laravel\Passport\AuthCode;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +21,9 @@ class AuthCodeResource extends Resource
{
protected static ?string $model = AuthCode::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'Oauth';
+ protected static string | \UnitEnum | null $navigationGroup = 'Oauth';
protected static ?int $navigationSort = 2;
@@ -33,10 +37,10 @@ class AuthCodeResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -45,31 +49,31 @@ class AuthCodeResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('user_id')
+ TextColumn::make('id'),
+ TextColumn::make('user_id')
->label(__('label.username'))
->formatStateUsing(fn ($record) => username_for_admin($record->user_id)),
- Tables\Columns\TextColumn::make('client.name')
+ TextColumn::make('client.name')
->label(__('oauth.client')),
- Tables\Columns\TextColumn::make('expires_at')
+ TextColumn::make('expires_at')
->label(__('label.expire_at'))
])
->filters([
//
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageAuthCodes::route('/'),
+ 'index' => ManageAuthCodes::route('/'),
];
}
}
diff --git a/app/Filament/Resources/Oauth/ClientResource.php b/app/Filament/Resources/Oauth/ClientResource.php
index 7ea20ad7..c404cc57 100644
--- a/app/Filament/Resources/Oauth/ClientResource.php
+++ b/app/Filament/Resources/Oauth/ClientResource.php
@@ -2,13 +2,21 @@
namespace App\Filament\Resources\Oauth;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Radio;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\IconColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Oauth\ClientResource\Pages\ManageClients;
use App\Filament\OptionsTrait;
use App\Filament\PageListSingle;
use App\Filament\Resources\Oauth\ClientResource\Pages;
use App\Filament\Resources\Oauth\ClientResource\RelationManagers;
use App\Models\OauthClient;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -21,9 +29,9 @@ class ClientResource extends Resource
protected static ?string $model = OauthClient::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'Oauth';
+ protected static string | \UnitEnum | null $navigationGroup = 'Oauth';
protected static ?int $navigationSort = 1;
@@ -37,13 +45,13 @@ class ClientResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->label(__('label.name'))->required(),
- Forms\Components\TextInput::make('redirect')->label(__('oauth.redirect'))->required(),
- Forms\Components\Radio::make('skips_authorization')
+ return $schema
+ ->components([
+ TextInput::make('name')->label(__('label.name'))->required(),
+ TextInput::make('redirect')->label(__('oauth.redirect'))->required(),
+ Radio::make('skips_authorization')
->options(self::getYesNoOptions())
->inline()
->default(0)
@@ -56,11 +64,11 @@ class ClientResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
- Tables\Columns\TextColumn::make('secret')->label(__('oauth.secret')),
- Tables\Columns\TextColumn::make('redirect')->label(__('oauth.redirect')),
- Tables\Columns\IconColumn::make('skips_authorization')
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('secret')->label(__('oauth.secret')),
+ TextColumn::make('redirect')->label(__('oauth.redirect')),
+ IconColumn::make('skips_authorization')
->boolean()
->label(__('oauth.skips_authorization'))
,
@@ -69,19 +77,19 @@ class ClientResource extends Resource
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageClients::route('/'),
+ 'index' => ManageClients::route('/'),
];
}
}
diff --git a/app/Filament/Resources/Oauth/ClientResource/Pages/ManageClients.php b/app/Filament/Resources/Oauth/ClientResource/Pages/ManageClients.php
index 0ba567f3..1f39805b 100644
--- a/app/Filament/Resources/Oauth/ClientResource/Pages/ManageClients.php
+++ b/app/Filament/Resources/Oauth/ClientResource/Pages/ManageClients.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Oauth\ClientResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageListSingle;
use App\Filament\Resources\Oauth\ClientResource;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class ManageClients extends PageListSingle
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Oauth/ProviderResource.php b/app/Filament/Resources/Oauth/ProviderResource.php
index 957a3387..11e1e72b 100644
--- a/app/Filament/Resources/Oauth/ProviderResource.php
+++ b/app/Filament/Resources/Oauth/ProviderResource.php
@@ -2,12 +2,21 @@
namespace App\Filament\Resources\Oauth;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Toggle;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\IconColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\BulkActionGroup;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Oauth\ProviderResource\Pages\ManageProviders;
use App\Filament\Resources\Oauth\ProviderResource\Pages;
use App\Filament\Resources\Oauth\ProviderResource\RelationManagers;
use App\Models\OauthProvider;
use App\Models\User;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
@@ -20,9 +29,9 @@ class ProviderResource extends Resource
{
protected static ?string $model = OauthProvider::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'Oauth';
+ protected static string | \UnitEnum | null $navigationGroup = 'Oauth';
protected static ?int $navigationSort = 5;
@@ -36,64 +45,64 @@ class ProviderResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')
+ return $schema
+ ->components([
+ TextInput::make('name')
->label(__('label.name'))
->required()
,
- Forms\Components\TextInput::make('client_id')
+ TextInput::make('client_id')
->label(__('oauth.client_id'))
->required()
,
- Forms\Components\TextInput::make('client_secret')
+ TextInput::make('client_secret')
->label(__('oauth.secret'))
->required()
,
- Forms\Components\TextInput::make('authorization_endpoint_url')
+ TextInput::make('authorization_endpoint_url')
->label(__('oauth.authorization_endpoint_url'))
->required()
,
- Forms\Components\TextInput::make('token_endpoint_url')
+ TextInput::make('token_endpoint_url')
->label(__('oauth.token_endpoint_url'))
->required()
,
- Forms\Components\TextInput::make('user_info_endpoint_url')
+ TextInput::make('user_info_endpoint_url')
->label(__('oauth.user_info_endpoint_url'))
->required()
,
- Forms\Components\TextInput::make('id_claim')
+ TextInput::make('id_claim')
->label(__('oauth.id_claim'))
->required()
,
- Forms\Components\TextInput::make('email_claim')
+ TextInput::make('email_claim')
->label(__('oauth.email_claim'))
->required()
,
- Forms\Components\TextInput::make('username_claim')
+ TextInput::make('username_claim')
->label(__('oauth.username_claim'))
,
- Forms\Components\TextInput::make('level_claim')
+ TextInput::make('level_claim')
->label(__('oauth.level_claim'))
,
- Forms\Components\TextInput::make('level_limit')
+ TextInput::make('level_limit')
->numeric()
->label(__('oauth.level_limit'))
->helperText(__('oauth.level_limit_help'))
,
- Forms\Components\TextInput::make('priority')
+ TextInput::make('priority')
->label(__('label.priority'))
->default(0)
->numeric()
->helperText(__('label.priority_help'))
,
- Forms\Components\Toggle::make('enabled')
+ Toggle::make('enabled')
->label(__('label.enabled'))
,
- Forms\Components\TextInput::make('redirect')
+ TextInput::make('redirect')
->default(fn ($record) => OauthProvider::getCallbackUrl($record->uuid ?? self::getNewUuid()))
->disabled()
->label(__('oauth.redirect'))
@@ -113,31 +122,31 @@ class ProviderResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
- Tables\Columns\TextColumn::make('client_id')->label(__('oauth.client_id')),
- Tables\Columns\TextColumn::make('client_secret')->label(__('oauth.secret')),
- Tables\Columns\TextColumn::make('authorization_endpoint_url')->label(__('oauth.authorization_endpoint_url')),
- Tables\Columns\TextColumn::make('uuid')
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('client_id')->label(__('oauth.client_id')),
+ TextColumn::make('client_secret')->label(__('oauth.secret')),
+ TextColumn::make('authorization_endpoint_url')->label(__('oauth.authorization_endpoint_url')),
+ TextColumn::make('uuid')
->label(__('oauth.redirect'))
->formatStateUsing(fn ($state) => url("/oauth/callback/$state"))
,
- Tables\Columns\TextColumn::make('priority')->label(__('label.priority')),
- Tables\Columns\TextColumn::make('updated_at')->label(__('label.updated_at')),
- Tables\Columns\TextColumn::make('level_limit')->label(__('oauth.level_limit')),
- Tables\Columns\IconColumn::make('enabled')->boolean()->label(__('label.enabled')),
+ TextColumn::make('priority')->label(__('label.priority')),
+ TextColumn::make('updated_at')->label(__('label.updated_at')),
+ TextColumn::make('level_limit')->label(__('oauth.level_limit')),
+ IconColumn::make('enabled')->boolean()->label(__('label.enabled')),
])
->defaultSort('priority', 'desc')
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\BulkActionGroup::make([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ BulkActionGroup::make([
+ DeleteBulkAction::make(),
]),
]);
}
@@ -145,7 +154,7 @@ class ProviderResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageProviders::route('/'),
+ 'index' => ManageProviders::route('/'),
];
}
}
diff --git a/app/Filament/Resources/Oauth/ProviderResource/Pages/ManageProviders.php b/app/Filament/Resources/Oauth/ProviderResource/Pages/ManageProviders.php
index aafe307e..a3305ae8 100644
--- a/app/Filament/Resources/Oauth/ProviderResource/Pages/ManageProviders.php
+++ b/app/Filament/Resources/Oauth/ProviderResource/Pages/ManageProviders.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Oauth\ProviderResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageListSingle;
use App\Filament\Resources\Oauth\ProviderResource;
use Filament\Actions;
@@ -14,7 +15,7 @@ class ManageProviders extends PageListSingle
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Oauth/RefreshTokenResource.php b/app/Filament/Resources/Oauth/RefreshTokenResource.php
index 63328a5b..ad181a7b 100644
--- a/app/Filament/Resources/Oauth/RefreshTokenResource.php
+++ b/app/Filament/Resources/Oauth/RefreshTokenResource.php
@@ -2,11 +2,15 @@
namespace App\Filament\Resources\Oauth;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Oauth\RefreshTokenResource\Pages\ManageRefreshTokens;
use App\Filament\Resources\Oauth\RefreshTokenResource\Pages;
use App\Filament\Resources\Oauth\RefreshTokenResource\RelationManagers;
use Laravel\Passport\RefreshToken;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +21,9 @@ class RefreshTokenResource extends Resource
{
protected static ?string $model = RefreshToken::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'Oauth';
+ protected static string | \UnitEnum | null $navigationGroup = 'Oauth';
protected static ?int $navigationSort = 4;
@@ -33,10 +37,10 @@ class RefreshTokenResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -45,33 +49,33 @@ class RefreshTokenResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')
+ TextColumn::make('id')
->label(__('oauth.refresh_token'))
->searchable()
,
- Tables\Columns\TextColumn::make('access_token_id')
+ TextColumn::make('access_token_id')
->label(__('oauth.access_token'))
->searchable()
,
- Tables\Columns\TextColumn::make('expires_at')
+ TextColumn::make('expires_at')
->label(__('label.expire_at'))
])
->filters([
//
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageRefreshTokens::route('/'),
+ 'index' => ManageRefreshTokens::route('/'),
];
}
}
diff --git a/app/Filament/Resources/Section/AudioCodecResource.php b/app/Filament/Resources/Section/AudioCodecResource.php
index 4f481994..eff9f3bd 100644
--- a/app/Filament/Resources/Section/AudioCodecResource.php
+++ b/app/Filament/Resources/Section/AudioCodecResource.php
@@ -2,11 +2,14 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use App\Filament\Resources\Section\AudioCodecResource\Pages\ListAudioCodecs;
+use App\Filament\Resources\Section\AudioCodecResource\Pages\CreateAudioCodec;
+use App\Filament\Resources\Section\AudioCodecResource\Pages\EditAudioCodec;
use App\Filament\Resources\Section\AudioCodecResource\Pages;
use App\Filament\Resources\Section\AudioCodecResource\RelationManagers;
use App\Models\AudioCodec;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +22,9 @@ class AudioCodecResource extends CodecResource
protected static ?int $navigationSort = 4;
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return parent::form($form);
+ return parent::form($schema);
}
public static function table(Table $table): Table
@@ -39,9 +42,9 @@ class AudioCodecResource extends CodecResource
public static function getPages(): array
{
return [
- 'index' => Pages\ListAudioCodecs::route('/'),
- 'create' => Pages\CreateAudioCodec::route('/create'),
- 'edit' => Pages\EditAudioCodec::route('/{record}/edit'),
+ 'index' => ListAudioCodecs::route('/'),
+ 'create' => CreateAudioCodec::route('/create'),
+ 'edit' => EditAudioCodec::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/AudioCodecResource/Pages/EditAudioCodec.php b/app/Filament/Resources/Section/AudioCodecResource/Pages/EditAudioCodec.php
index a7b5f6ea..5d907631 100644
--- a/app/Filament/Resources/Section/AudioCodecResource/Pages/EditAudioCodec.php
+++ b/app/Filament/Resources/Section/AudioCodecResource/Pages/EditAudioCodec.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\AudioCodecResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Section\AudioCodecResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -14,7 +15,7 @@ class EditAudioCodec extends EditCodec
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Section/AudioCodecResource/Pages/ListAudioCodecs.php b/app/Filament/Resources/Section/AudioCodecResource/Pages/ListAudioCodecs.php
index 71784938..1fcd90d0 100644
--- a/app/Filament/Resources/Section/AudioCodecResource/Pages/ListAudioCodecs.php
+++ b/app/Filament/Resources/Section/AudioCodecResource/Pages/ListAudioCodecs.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\AudioCodecResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\AudioCodecResource;
use App\Models\AudioCodec;
@@ -16,7 +17,7 @@ class ListAudioCodecs extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/CategoryResource.php b/app/Filament/Resources/Section/CategoryResource.php
index 096fb9d6..c3d0b1a3 100644
--- a/app/Filament/Resources/Section/CategoryResource.php
+++ b/app/Filament/Resources/Section/CategoryResource.php
@@ -2,6 +2,18 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Exception;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Section\CategoryResource\Pages\ListCategories;
+use App\Filament\Resources\Section\CategoryResource\Pages\CreateCategory;
+use App\Filament\Resources\Section\CategoryResource\Pages\EditCategory;
use App\Filament\Resources\Section\CategoryResource\Pages;
use App\Filament\Resources\Section\CategoryResource\RelationManagers;
use App\Models\Category;
@@ -12,7 +24,6 @@ use App\Models\Torrent;
use App\Repositories\SearchBoxRepository;
use Filament\Facades\Filament;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -24,9 +35,9 @@ class CategoryResource extends Resource
{
protected static ?string $model = Category::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'Section';
+ protected static string | \UnitEnum | null $navigationGroup = 'Section';
protected static ?int $navigationSort = 2;
@@ -40,11 +51,11 @@ class CategoryResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\Select::make('mode')
+ return $schema
+ ->components([
+ Select::make('mode')
->options(SearchBox::listModeOptions())
->label(__('label.search_box.label'))
->rules([
@@ -61,22 +72,22 @@ class CategoryResource extends Resource
}
])
,
- Forms\Components\TextInput::make('name')->required()->label(__('label.search_box.taxonomy.name'))->required(),
- Forms\Components\TextInput::make('image')
+ TextInput::make('name')->required()->label(__('label.search_box.taxonomy.name'))->required(),
+ TextInput::make('image')
->label(__('label.search_box.taxonomy.image'))
->helperText(__('label.search_box.taxonomy.image_help'))
->required()
,
- Forms\Components\Select::make('icon_id')
+ Select::make('icon_id')
->options(Icon::query()->pluck('name', 'id')->toArray())
->label(__('label.search_box.taxonomy.icon_id'))
->required()
,
- Forms\Components\TextInput::make('class_name')
+ TextInput::make('class_name')
->label(__('label.search_box.taxonomy.class_name'))
->helperText(__('label.search_box.taxonomy.class_name_help'))
,
- Forms\Components\TextInput::make('sort_index')
+ TextInput::make('sort_index')
->default(0)
->label(__('label.priority'))
->helperText(__('label.priority_help'))
@@ -89,38 +100,38 @@ class CategoryResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('search_box.name')->label(__('label.search_box.label')),
- Tables\Columns\TextColumn::make('name')->label(__('label.search_box.taxonomy.name'))->searchable(),
- Tables\Columns\TextColumn::make('icon.name')->label(__('label.search_box.taxonomy.icon_id')),
- Tables\Columns\TextColumn::make('image')->label(__('label.search_box.taxonomy.image')),
- Tables\Columns\TextColumn::make('class_name')->label(__('label.search_box.taxonomy.class_name')),
- Tables\Columns\TextColumn::make('sort_index')->label(__('label.priority'))->sortable(),
+ TextColumn::make('id'),
+ TextColumn::make('search_box.name')->label(__('label.search_box.label')),
+ TextColumn::make('name')->label(__('label.search_box.taxonomy.name'))->searchable(),
+ TextColumn::make('icon.name')->label(__('label.search_box.taxonomy.icon_id')),
+ TextColumn::make('image')->label(__('label.search_box.taxonomy.image')),
+ TextColumn::make('class_name')->label(__('label.search_box.taxonomy.class_name')),
+ TextColumn::make('sort_index')->label(__('label.priority'))->sortable(),
])
->defaultSort('sort_index', 'desc')
->filters([
- Tables\Filters\SelectFilter::make('mode')
+ SelectFilter::make('mode')
->options(SearchBox::query()->pluck('name', 'id')->toArray())
->label(__('label.search_box.label'))
,
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make()->using(function (NexusModel $record) {
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make()->using(function (NexusModel $record) {
try {
$rep = new SearchBoxRepository();
$rep->deleteCategory($record->id);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
Filament::notify('danger', $exception->getMessage() ?: class_basename($exception));
}
}),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make()->using(function (Collection $records) {
+ ->toolbarActions([
+ DeleteBulkAction::make()->using(function (Collection $records) {
try {
$rep = new SearchBoxRepository();
$rep->deleteCategory($records->pluck('id')->toArray());
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
Filament::notify('danger', $exception->getMessage() ?: class_basename($exception));
}
}),
@@ -137,9 +148,9 @@ class CategoryResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListCategories::route('/'),
- 'create' => Pages\CreateCategory::route('/create'),
- 'edit' => Pages\EditCategory::route('/{record}/edit'),
+ 'index' => ListCategories::route('/'),
+ 'create' => CreateCategory::route('/create'),
+ 'edit' => EditCategory::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/CategoryResource/Pages/EditCategory.php b/app/Filament/Resources/Section/CategoryResource/Pages/EditCategory.php
index 55d8fd74..508abdf0 100644
--- a/app/Filament/Resources/Section/CategoryResource/Pages/EditCategory.php
+++ b/app/Filament/Resources/Section/CategoryResource/Pages/EditCategory.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\CategoryResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\EditRedirectIndexTrait;
use App\Filament\Resources\Section\CategoryResource;
use Filament\Pages\Actions;
@@ -17,7 +18,7 @@ class EditCategory extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/CategoryResource/Pages/ListCategories.php b/app/Filament/Resources/Section/CategoryResource/Pages/ListCategories.php
index 7de14fe3..a69e727d 100644
--- a/app/Filament/Resources/Section/CategoryResource/Pages/ListCategories.php
+++ b/app/Filament/Resources/Section/CategoryResource/Pages/ListCategories.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\CategoryResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\CategoryResource;
use App\Models\Category;
@@ -16,7 +17,7 @@ class ListCategories extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/CodecResource.php b/app/Filament/Resources/Section/CodecResource.php
index 2631535b..5da14fb3 100644
--- a/app/Filament/Resources/Section/CodecResource.php
+++ b/app/Filament/Resources/Section/CodecResource.php
@@ -2,13 +2,23 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Select;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Section\CodecResource\Pages\ListCodecs;
+use App\Filament\Resources\Section\CodecResource\Pages\CreateCodec;
+use App\Filament\Resources\Section\CodecResource\Pages\EditCodec;
use App\Filament\Resources\Section\CodecResource\Pages;
use App\Filament\Resources\Section\CodecResource\RelationManagers;
use App\Models\Codec;
use App\Models\Icon;
use App\Models\SearchBox;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,23 +29,23 @@ class CodecResource extends Resource
{
protected static ?string $model = Codec::class;
- protected static ?string $navigationIcon = 'heroicon-o-bookmark';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-bookmark';
- protected static ?string $navigationGroup = 'Section';
+ protected static string | \UnitEnum | null $navigationGroup = 'Section';
protected static ?int $navigationSort = 3;
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->required()->label(__('label.search_box.taxonomy.name'))->required(),
- Forms\Components\TextInput::make('sort_index')
+ return $schema
+ ->components([
+ TextInput::make('name')->required()->label(__('label.search_box.taxonomy.name'))->required(),
+ TextInput::make('sort_index')
->default(0)
->label(__('label.priority'))
->helperText(__('label.priority_help'))
,
- Forms\Components\Select::make('mode')
+ Select::make('mode')
->options(SearchBox::query()->pluck('name', 'id')->toArray())
->label(__('label.search_box.taxonomy.mode'))
->helperText(__('label.search_box.taxonomy.mode_help'))
@@ -47,17 +57,17 @@ class CodecResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('search_box.name')
+ TextColumn::make('id'),
+ TextColumn::make('search_box.name')
->label(__('label.search_box.label'))
->formatStateUsing(fn ($record) => $record->search_box->name ?? 'All')
,
- Tables\Columns\TextColumn::make('name')->label(__('label.search_box.taxonomy.name'))->searchable(),
- Tables\Columns\TextColumn::make('sort_index')->label(__('label.search_box.taxonomy.sort_index'))->sortable(),
+ TextColumn::make('name')->label(__('label.search_box.taxonomy.name'))->searchable(),
+ TextColumn::make('sort_index')->label(__('label.search_box.taxonomy.sort_index'))->sortable(),
])
->defaultSort('sort_index', 'desc')
->filters([
- Tables\Filters\SelectFilter::make('mode')
+ SelectFilter::make('mode')
->options(SearchBox::query()->pluck('name', 'id')->toArray())
->label(__('label.search_box.taxonomy.mode'))
->query(function (Builder $query, array $data) {
@@ -69,12 +79,12 @@ class CodecResource extends Resource
})
,
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
@@ -88,9 +98,9 @@ class CodecResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListCodecs::route('/'),
- 'create' => Pages\CreateCodec::route('/create'),
- 'edit' => Pages\EditCodec::route('/{record}/edit'),
+ 'index' => ListCodecs::route('/'),
+ 'create' => CreateCodec::route('/create'),
+ 'edit' => EditCodec::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/CodecResource/Pages/EditCodec.php b/app/Filament/Resources/Section/CodecResource/Pages/EditCodec.php
index 7724af66..29d329c5 100644
--- a/app/Filament/Resources/Section/CodecResource/Pages/EditCodec.php
+++ b/app/Filament/Resources/Section/CodecResource/Pages/EditCodec.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\CodecResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\EditRedirectIndexTrait;
use App\Filament\Resources\Section\CodecResource;
use Filament\Pages\Actions;
@@ -16,7 +17,7 @@ class EditCodec extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/CodecResource/Pages/ListCodecs.php b/app/Filament/Resources/Section/CodecResource/Pages/ListCodecs.php
index 5e5c01ca..aca909ea 100644
--- a/app/Filament/Resources/Section/CodecResource/Pages/ListCodecs.php
+++ b/app/Filament/Resources/Section/CodecResource/Pages/ListCodecs.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\CodecResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\CodecResource;
use App\Models\Codec;
@@ -16,7 +17,7 @@ class ListCodecs extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/IconResource.php b/app/Filament/Resources/Section/IconResource.php
index fad77bb3..baad40b1 100644
--- a/app/Filament/Resources/Section/IconResource.php
+++ b/app/Filament/Resources/Section/IconResource.php
@@ -2,13 +2,23 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\Textarea;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Radio;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Section\IconResource\Pages\ListIcons;
+use App\Filament\Resources\Section\IconResource\Pages\CreateIcon;
+use App\Filament\Resources\Section\IconResource\Pages\EditIcon;
use App\Filament\OptionsTrait;
use App\Filament\EditRedirectIndexTrait;
use App\Filament\Resources\Section\IconResource\Pages;
use App\Filament\Resources\Section\IconResource\RelationManagers;
use App\Models\Icon;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -21,9 +31,9 @@ class IconResource extends Resource
protected static ?string $model = Icon::class;
- protected static ?string $navigationIcon = 'heroicon-o-ticket';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-ticket';
- protected static ?string $navigationGroup = 'Section';
+ protected static string | \UnitEnum | null $navigationGroup = 'Section';
protected static ?int $navigationSort = 10;
@@ -37,40 +47,40 @@ class IconResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\Textarea::make('tip')
+ return $schema
+ ->components([
+ Textarea::make('tip')
->default(nexus_trans('label.icon.desc'))
->disabled()
->columnSpanFull()
->rows(18)
,
- Forms\Components\TextInput::make('name')
+ TextInput::make('name')
->label(__('label.name'))
->required()
,
- Forms\Components\TextInput::make('folder')
+ TextInput::make('folder')
->label(__('label.icon.folder'))
->required()
->helperText(__('label.icon.folder_help'))
,
- Forms\Components\Radio::make('multilang')
+ Radio::make('multilang')
->label(__('label.icon.multilang'))
->options(self::$yesOrNo)
->required()
->helperText(__('label.icon.multilang_help'))
,
- Forms\Components\Radio::make('secondicon')
+ Radio::make('secondicon')
->label(__('label.icon.secondicon'))
->options(self::$yesOrNo)
->required()
->helperText(__('label.icon.secondicon_help'))
,
- Forms\Components\TextInput::make('cssfile')->label(__('label.icon.cssfile'))->helperText(__('label.icon.cssfile_help')),
- Forms\Components\TextInput::make('designer')->label(__('label.icon.designer'))->helperText(__('label.icon.designer_help')),
- Forms\Components\Textarea::make('comment')->label(__('label.icon.comment'))->helperText(__('label.icon.comment_help')),
+ TextInput::make('cssfile')->label(__('label.icon.cssfile'))->helperText(__('label.icon.cssfile_help')),
+ TextInput::make('designer')->label(__('label.icon.designer'))->helperText(__('label.icon.designer_help')),
+ Textarea::make('comment')->label(__('label.icon.comment'))->helperText(__('label.icon.comment_help')),
]);
}
@@ -78,23 +88,23 @@ class IconResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
- Tables\Columns\TextColumn::make('folder')->label(__('label.icon.folder')),
- Tables\Columns\TextColumn::make('multilang')->label(__('label.icon.multilang')),
- Tables\Columns\TextColumn::make('secondicon')->label(__('label.icon.secondicon')),
- Tables\Columns\TextColumn::make('cssfile')->label(__('label.icon.cssfile')),
- Tables\Columns\TextColumn::make('designer')->label(__('label.icon.designer')),
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('folder')->label(__('label.icon.folder')),
+ TextColumn::make('multilang')->label(__('label.icon.multilang')),
+ TextColumn::make('secondicon')->label(__('label.icon.secondicon')),
+ TextColumn::make('cssfile')->label(__('label.icon.cssfile')),
+ TextColumn::make('designer')->label(__('label.icon.designer')),
])
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
@@ -108,9 +118,9 @@ class IconResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListIcons::route('/'),
- 'create' => Pages\CreateIcon::route('/create'),
- 'edit' => Pages\EditIcon::route('/{record}/edit'),
+ 'index' => ListIcons::route('/'),
+ 'create' => CreateIcon::route('/create'),
+ 'edit' => EditIcon::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/IconResource/Pages/EditIcon.php b/app/Filament/Resources/Section/IconResource/Pages/EditIcon.php
index d3dfc2fc..17d8d057 100644
--- a/app/Filament/Resources/Section/IconResource/Pages/EditIcon.php
+++ b/app/Filament/Resources/Section/IconResource/Pages/EditIcon.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\IconResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\EditRedirectIndexTrait;
use App\Filament\Resources\Section\IconResource;
use Filament\Pages\Actions;
@@ -18,7 +19,7 @@ class EditIcon extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/IconResource/Pages/ListIcons.php b/app/Filament/Resources/Section/IconResource/Pages/ListIcons.php
index 39db72c7..08e2d963 100644
--- a/app/Filament/Resources/Section/IconResource/Pages/ListIcons.php
+++ b/app/Filament/Resources/Section/IconResource/Pages/ListIcons.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\IconResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\IconResource;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class ListIcons extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Section/MediaResource.php b/app/Filament/Resources/Section/MediaResource.php
index 54937be5..074215b0 100644
--- a/app/Filament/Resources/Section/MediaResource.php
+++ b/app/Filament/Resources/Section/MediaResource.php
@@ -2,11 +2,14 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use App\Filament\Resources\Section\MediaResource\Pages\ListMedia;
+use App\Filament\Resources\Section\MediaResource\Pages\CreateMedia;
+use App\Filament\Resources\Section\MediaResource\Pages\EditMedia;
use App\Filament\Resources\Section\MediaResource\Pages;
use App\Filament\Resources\Section\MediaResource\RelationManagers;
use App\Models\Media;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +22,9 @@ class MediaResource extends CodecResource
protected static ?int $navigationSort = 8;
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return parent::form($form);
+ return parent::form($schema);
}
public static function table(Table $table): Table
@@ -39,9 +42,9 @@ class MediaResource extends CodecResource
public static function getPages(): array
{
return [
- 'index' => Pages\ListMedia::route('/'),
- 'create' => Pages\CreateMedia::route('/create'),
- 'edit' => Pages\EditMedia::route('/{record}/edit'),
+ 'index' => ListMedia::route('/'),
+ 'create' => CreateMedia::route('/create'),
+ 'edit' => EditMedia::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/MediaResource/Pages/EditMedia.php b/app/Filament/Resources/Section/MediaResource/Pages/EditMedia.php
index d18af24b..74f2654f 100644
--- a/app/Filament/Resources/Section/MediaResource/Pages/EditMedia.php
+++ b/app/Filament/Resources/Section/MediaResource/Pages/EditMedia.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\MediaResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Section\MediaResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -14,7 +15,7 @@ class EditMedia extends EditCodec
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Section/MediaResource/Pages/ListMedia.php b/app/Filament/Resources/Section/MediaResource/Pages/ListMedia.php
index e93c2182..b5fbcb34 100644
--- a/app/Filament/Resources/Section/MediaResource/Pages/ListMedia.php
+++ b/app/Filament/Resources/Section/MediaResource/Pages/ListMedia.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\MediaResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\MediaResource;
use App\Models\Media;
@@ -17,7 +18,7 @@ class ListMedia extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/ProcessingResource.php b/app/Filament/Resources/Section/ProcessingResource.php
index 00f2d54b..cb1de72d 100644
--- a/app/Filament/Resources/Section/ProcessingResource.php
+++ b/app/Filament/Resources/Section/ProcessingResource.php
@@ -2,11 +2,14 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use App\Filament\Resources\Section\ProcessingResource\Pages\ListProcessings;
+use App\Filament\Resources\Section\ProcessingResource\Pages\CreateProcessing;
+use App\Filament\Resources\Section\ProcessingResource\Pages\EditProcessing;
use App\Filament\Resources\Section\ProcessingResource\Pages;
use App\Filament\Resources\Section\ProcessingResource\RelationManagers;
use App\Models\Processing;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +22,9 @@ class ProcessingResource extends CodecResource
protected static ?int $navigationSort = 9;
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return parent::form($form);
+ return parent::form($schema);
}
public static function table(Table $table): Table
@@ -39,9 +42,9 @@ class ProcessingResource extends CodecResource
public static function getPages(): array
{
return [
- 'index' => Pages\ListProcessings::route('/'),
- 'create' => Pages\CreateProcessing::route('/create'),
- 'edit' => Pages\EditProcessing::route('/{record}/edit'),
+ 'index' => ListProcessings::route('/'),
+ 'create' => CreateProcessing::route('/create'),
+ 'edit' => EditProcessing::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/ProcessingResource/Pages/EditProcessing.php b/app/Filament/Resources/Section/ProcessingResource/Pages/EditProcessing.php
index 224f6e7f..7cccaea7 100644
--- a/app/Filament/Resources/Section/ProcessingResource/Pages/EditProcessing.php
+++ b/app/Filament/Resources/Section/ProcessingResource/Pages/EditProcessing.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\ProcessingResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Section\ProcessingResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -14,7 +15,7 @@ class EditProcessing extends EditCodec
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Section/ProcessingResource/Pages/ListProcessings.php b/app/Filament/Resources/Section/ProcessingResource/Pages/ListProcessings.php
index cc1058e7..20c8c87a 100644
--- a/app/Filament/Resources/Section/ProcessingResource/Pages/ListProcessings.php
+++ b/app/Filament/Resources/Section/ProcessingResource/Pages/ListProcessings.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\ProcessingResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\ProcessingResource;
use App\Models\Processing;
@@ -17,7 +18,7 @@ class ListProcessings extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/SecondIconResource.php b/app/Filament/Resources/Section/SecondIconResource.php
index c4311670..82067485 100644
--- a/app/Filament/Resources/Section/SecondIconResource.php
+++ b/app/Filament/Resources/Section/SecondIconResource.php
@@ -2,6 +2,18 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Select;
+use Filament\Schemas\Components\Section;
+use Filament\Schemas\Components\Utilities\Get;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Section\SecondIconResource\Pages\ListSecondIcons;
+use App\Filament\Resources\Section\SecondIconResource\Pages\CreateSecondIcon;
+use App\Filament\Resources\Section\SecondIconResource\Pages\EditSecondIcon;
use App\Filament\Resources\Section\SecondIconResource\Pages;
use App\Filament\Resources\Section\SecondIconResource\RelationManagers;
use App\Models\SearchBox;
@@ -9,7 +21,6 @@ use App\Models\SecondIcon;
use App\Models\Setting;
use App\Repositories\SearchBoxRepository;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -21,9 +32,9 @@ class SecondIconResource extends Resource
{
protected static ?string $model = SecondIcon::class;
- protected static ?string $navigationIcon = 'heroicon-o-ticket';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-ticket';
- protected static ?string $navigationGroup = 'Section';
+ protected static string | \UnitEnum | null $navigationGroup = 'Section';
protected static ?int $navigationSort = 11;
@@ -37,7 +48,7 @@ class SecondIconResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
$searchBoxRep = new SearchBoxRepository();
$torrentMode = Setting::get('main.browsecat');
@@ -45,39 +56,39 @@ class SecondIconResource extends Resource
$torrentTaxonomySchema = $searchBoxRep->listTaxonomyFormSchema($torrentMode);
$specialTaxonomySchema = $searchBoxRep->listTaxonomyFormSchema($specialMode);
$modeOptions = SearchBox::listModeOptions();
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')
+ return $schema
+ ->components([
+ TextInput::make('name')
->label(__('label.name'))
->required()
->helperText(__('label.second_icon.name_help'))
,
- Forms\Components\TextInput::make('image')
+ TextInput::make('image')
->label(__('label.second_icon.image'))
->required()
->helperText(__('label.second_icon.image_help'))
,
- Forms\Components\TextInput::make('class_name')
+ TextInput::make('class_name')
->label(__('label.second_icon.class_name'))
->helperText(__('label.second_icon.class_name_help'))
,
- Forms\Components\Select::make('mode')
+ Select::make('mode')
->options($modeOptions)
->label(__('label.search_box.taxonomy.mode'))
->helperText(__('label.search_box.taxonomy.mode_help'))
->reactive()
,
- Forms\Components\Section::make(__('label.second_icon.select_section'))
+ Section::make(__('label.second_icon.select_section'))
->id("taxonomy_$torrentMode")
->schema($torrentTaxonomySchema)
->columns(4)
- ->hidden(fn (\Filament\Forms\Get $get) => $get('mode') != $torrentMode)
+ ->hidden(fn (Get $get) => $get('mode') != $torrentMode)
,
- Forms\Components\Section::make(__('label.second_icon.select_section'))
+ Section::make(__('label.second_icon.select_section'))
->id("taxonomy_$specialMode")
->schema($specialTaxonomySchema)
->columns(4)
- ->hidden(fn (\Filament\Forms\Get $get) => $get('mode') != $specialMode)
+ ->hidden(fn (Get $get) => $get('mode') != $specialMode)
,
]);
@@ -88,18 +99,18 @@ class SecondIconResource extends Resource
public static function table(Table $table): Table
{
$columns = [
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('search_box.name')
+ TextColumn::make('id'),
+ TextColumn::make('search_box.name')
->label(__('label.search_box.label'))
->formatStateUsing(fn ($record) => $record->search_box->name ?? 'All')
,
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
- Tables\Columns\TextColumn::make('image')->label(__('label.second_icon.image')),
- Tables\Columns\TextColumn::make('class_name')->label(__('label.second_icon.class_name')),
+ TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('image')->label(__('label.second_icon.image')),
+ TextColumn::make('class_name')->label(__('label.second_icon.class_name')),
];
$taxonomyList = self::listTaxonomy();
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
- $columns[] = Tables\Columns\TextColumn::make($torrentField)->formatStateUsing(function ($state) use ($taxonomyList, $torrentField) {
+ $columns[] = TextColumn::make($torrentField)->formatStateUsing(function ($state) use ($taxonomyList, $torrentField) {
return $taxonomyList[$torrentField]->get($state);
});
}
@@ -108,12 +119,12 @@ class SecondIconResource extends Resource
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
@@ -138,9 +149,9 @@ class SecondIconResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListSecondIcons::route('/'),
- 'create' => Pages\CreateSecondIcon::route('/create'),
- 'edit' => Pages\EditSecondIcon::route('/{record}/edit'),
+ 'index' => ListSecondIcons::route('/'),
+ 'create' => CreateSecondIcon::route('/create'),
+ 'edit' => EditSecondIcon::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/SecondIconResource/Pages/EditSecondIcon.php b/app/Filament/Resources/Section/SecondIconResource/Pages/EditSecondIcon.php
index 2fbaf710..6f1f2d69 100644
--- a/app/Filament/Resources/Section/SecondIconResource/Pages/EditSecondIcon.php
+++ b/app/Filament/Resources/Section/SecondIconResource/Pages/EditSecondIcon.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\SecondIconResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\EditRedirectIndexTrait;
use App\Filament\Resources\Section\SecondIconResource;
use App\Models\SearchBox;
@@ -18,7 +19,7 @@ class EditSecondIcon extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/SecondIconResource/Pages/ListSecondIcons.php b/app/Filament/Resources/Section/SecondIconResource/Pages/ListSecondIcons.php
index 6cdda38b..f54e2666 100644
--- a/app/Filament/Resources/Section/SecondIconResource/Pages/ListSecondIcons.php
+++ b/app/Filament/Resources/Section/SecondIconResource/Pages/ListSecondIcons.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\SecondIconResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\SecondIconResource;
use App\Models\SecondIcon;
@@ -16,7 +17,7 @@ class ListSecondIcons extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/SectionResource.php b/app/Filament/Resources/Section/SectionResource.php
index a8001f47..d9340891 100644
--- a/app/Filament/Resources/Section/SectionResource.php
+++ b/app/Filament/Resources/Section/SectionResource.php
@@ -2,6 +2,23 @@
namespace App\Filament\Resources\Section;
+use Filament\Forms\Components\TextInput;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\CheckboxList;
+use Filament\Forms\Components\Textarea;
+use Filament\Schemas\Components\Section;
+use Filament\Forms\Components\Toggle;
+use Filament\Forms\Components\Repeater;
+use Filament\Forms\Components\Select;
+use Closure;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\BooleanColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Section\SectionResource\Pages\ListSections;
+use App\Filament\Resources\Section\SectionResource\Pages\CreateSection;
+use App\Filament\Resources\Section\SectionResource\Pages\EditSection;
use App\Filament\Resources\Section\SectionResource\Pages;
use App\Filament\Resources\Section\SectionResource\RelationManagers;
use App\Http\Middleware\Locale;
@@ -9,7 +26,6 @@ use App\Models\Forum;
use App\Models\SearchBox;
use App\Models\TorrentCustomField;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -27,9 +43,9 @@ class SectionResource extends Resource
protected static ?string $label = 'Section';
- protected static ?string $navigationIcon = 'heroicon-o-view-columns';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-view-columns';
- protected static ?string $navigationGroup = 'Section';
+ protected static string | \UnitEnum | null $navigationGroup = 'Section';
protected static ?int $navigationSort = 1;
@@ -47,18 +63,18 @@ class SectionResource extends Resource
{
$localeSchema = [];
foreach (Locale::$languageMaps as $lang => $locale) {
- $localeSchema[] = Forms\Components\TextInput::make("$name.$lang")->required()->label($lang);
+ $localeSchema[] = TextInput::make("$name.$lang")->required()->label($lang);
}
return $localeSchema;
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
$displayTextLocalSchema = self::buildLocalSchema('display_text');
$sectionNameLocalSchema = self::buildLocalSchema('section_name');
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')
+ return $schema
+ ->components([
+ TextInput::make('name')
->label(__('label.search_box.name'))
->rules(function ($record) {
return [
@@ -68,53 +84,53 @@ class SectionResource extends Resource
];
})
,
- Forms\Components\TextInput::make('catsperrow')
+ TextInput::make('catsperrow')
->label(__('label.search_box.catsperrow'))
->helperText(__('label.search_box.catsperrow_help'))
->integer()
->required()
->default(8)
,
- Forms\Components\TextInput::make('catpadding')
+ TextInput::make('catpadding')
->label(__('label.search_box.catpadding'))
->helperText(__('label.search_box.catpadding_help'))
->integer()
->required()
->default(3)
,
- Forms\Components\CheckboxList::make('custom_fields')
+ CheckboxList::make('custom_fields')
->options(TorrentCustomField::getCheckboxOptions())
->label(__('label.search_box.custom_fields'))
->columns(4)
,
- Forms\Components\TextInput::make('custom_fields_display_name')
+ TextInput::make('custom_fields_display_name')
->label(__('label.search_box.custom_fields_display_name'))
,
- Forms\Components\Textarea::make('custom_fields_display')
+ Textarea::make('custom_fields_display')
->label(__('label.search_box.custom_fields_display'))
->helperText(__('label.search_box.custom_fields_display_help'))
,
- Forms\Components\CheckboxList::make('other')
+ CheckboxList::make('other')
->options(SearchBox::listExtraText())
->columns(2)
->label(__('label.search_box.other'))
,
- Forms\Components\Section::make(__('label.search_box.section_name'))
+ Section::make(__('label.search_box.section_name'))
->schema($sectionNameLocalSchema)
->columns(count($sectionNameLocalSchema))
,
- Forms\Components\Toggle::make('showsubcat')->label(__('label.search_box.showsubcat'))->columnSpan(['sm' => 'full']),
- Forms\Components\Section::make(__('label.search_box.showsubcat'))->schema([
- Forms\Components\Repeater::make('extra.' . SearchBox::EXTRA_TAXONOMY_LABELS)
+ Toggle::make('showsubcat')->label(__('label.search_box.showsubcat'))->columnSpan(['sm' => 'full']),
+ Section::make(__('label.search_box.showsubcat'))->schema([
+ Repeater::make('extra.' . SearchBox::EXTRA_TAXONOMY_LABELS)
->schema([
- Forms\Components\Select::make('torrent_field')->options(SearchBox::getSubCatOptions())->label(__('label.search_box.torrent_field')),
- Forms\Components\Section::make(__('label.search_box.taxonomy_display_text'))->schema($displayTextLocalSchema)->columns(count($displayTextLocalSchema)),
+ Select::make('torrent_field')->options(SearchBox::getSubCatOptions())->label(__('label.search_box.torrent_field')),
+ Section::make(__('label.search_box.taxonomy_display_text'))->schema($displayTextLocalSchema)->columns(count($displayTextLocalSchema)),
])
->label(__('label.search_box.taxonomies'))
->rules([
function () {
- return function (string $attribute, $value, \Closure $fail) {
+ return function (string $attribute, $value, Closure $fail) {
$fields = [];
foreach ($value as $item) {
if (!in_array($item['torrent_field'], $fields)) {
@@ -135,26 +151,26 @@ class SectionResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.search_box.name')),
- Tables\Columns\BooleanColumn::make('showsubcat')->label(__('label.search_box.showsubcat')),
- Tables\Columns\BooleanColumn::make('showsource'),
- Tables\Columns\BooleanColumn::make('showmedium'),
- Tables\Columns\BooleanColumn::make('showcodec'),
- Tables\Columns\BooleanColumn::make('showstandard'),
- Tables\Columns\BooleanColumn::make('showprocessing'),
- Tables\Columns\BooleanColumn::make('showteam'),
- Tables\Columns\BooleanColumn::make('showaudiocodec'),
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.search_box.name')),
+ BooleanColumn::make('showsubcat')->label(__('label.search_box.showsubcat')),
+ BooleanColumn::make('showsource'),
+ BooleanColumn::make('showmedium'),
+ BooleanColumn::make('showcodec'),
+ BooleanColumn::make('showstandard'),
+ BooleanColumn::make('showprocessing'),
+ BooleanColumn::make('showteam'),
+ BooleanColumn::make('showaudiocodec'),
])
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
@@ -168,9 +184,9 @@ class SectionResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListSections::route('/'),
- 'create' => Pages\CreateSection::route('/create'),
- 'edit' => Pages\EditSection::route('/{record}/edit'),
+ 'index' => ListSections::route('/'),
+ 'create' => CreateSection::route('/create'),
+ 'edit' => EditSection::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/SectionResource/Pages/EditSection.php b/app/Filament/Resources/Section/SectionResource/Pages/EditSection.php
index 7d740114..f8a6f359 100644
--- a/app/Filament/Resources/Section/SectionResource/Pages/EditSection.php
+++ b/app/Filament/Resources/Section/SectionResource/Pages/EditSection.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\SectionResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Section\SectionResource;
use App\Models\SearchBox;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class EditSection extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/SectionResource/Pages/ListSections.php b/app/Filament/Resources/Section/SectionResource/Pages/ListSections.php
index d7241151..7f7b0973 100644
--- a/app/Filament/Resources/Section/SectionResource/Pages/ListSections.php
+++ b/app/Filament/Resources/Section/SectionResource/Pages/ListSections.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\SectionResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\SectionResource;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class ListSections extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/SourceResource.php b/app/Filament/Resources/Section/SourceResource.php
index 4466d7ab..872c9299 100644
--- a/app/Filament/Resources/Section/SourceResource.php
+++ b/app/Filament/Resources/Section/SourceResource.php
@@ -2,11 +2,14 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use App\Filament\Resources\Section\SourceResource\Pages\ListSources;
+use App\Filament\Resources\Section\SourceResource\Pages\CreateSource;
+use App\Filament\Resources\Section\SourceResource\Pages\EditSource;
use App\Filament\Resources\Section\SourceResource\Pages;
use App\Filament\Resources\Section\SourceResource\RelationManagers;
use App\Models\Source;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +22,9 @@ class SourceResource extends CodecResource
protected static ?int $navigationSort = 7;
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return parent::form($form);
+ return parent::form($schema);
}
public static function table(Table $table): Table
@@ -40,9 +43,9 @@ class SourceResource extends CodecResource
public static function getPages(): array
{
return [
- 'index' => Pages\ListSources::route('/'),
- 'create' => Pages\CreateSource::route('/create'),
- 'edit' => Pages\EditSource::route('/{record}/edit'),
+ 'index' => ListSources::route('/'),
+ 'create' => CreateSource::route('/create'),
+ 'edit' => EditSource::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/SourceResource/Pages/EditSource.php b/app/Filament/Resources/Section/SourceResource/Pages/EditSource.php
index f4415df7..d2e19079 100644
--- a/app/Filament/Resources/Section/SourceResource/Pages/EditSource.php
+++ b/app/Filament/Resources/Section/SourceResource/Pages/EditSource.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\SourceResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Section\SourceResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -14,7 +15,7 @@ class EditSource extends EditCodec
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Section/SourceResource/Pages/ListSources.php b/app/Filament/Resources/Section/SourceResource/Pages/ListSources.php
index 6d46c51c..b1d877aa 100644
--- a/app/Filament/Resources/Section/SourceResource/Pages/ListSources.php
+++ b/app/Filament/Resources/Section/SourceResource/Pages/ListSources.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\SourceResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\SourceResource;
use App\Models\Source;
@@ -17,7 +18,7 @@ class ListSources extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/StandardResource.php b/app/Filament/Resources/Section/StandardResource.php
index 35209766..20cb4431 100644
--- a/app/Filament/Resources/Section/StandardResource.php
+++ b/app/Filament/Resources/Section/StandardResource.php
@@ -2,11 +2,14 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use App\Filament\Resources\Section\StandardResource\Pages\ListStandards;
+use App\Filament\Resources\Section\StandardResource\Pages\CreateStandard;
+use App\Filament\Resources\Section\StandardResource\Pages\EditStandard;
use App\Filament\Resources\Section\StandardResource\Pages;
use App\Filament\Resources\Section\StandardResource\RelationManagers;
use App\Models\Standard;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +22,9 @@ class StandardResource extends CodecResource
protected static ?int $navigationSort = 5;
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return parent::form($form);
+ return parent::form($schema);
}
public static function table(Table $table): Table
@@ -39,9 +42,9 @@ class StandardResource extends CodecResource
public static function getPages(): array
{
return [
- 'index' => Pages\ListStandards::route('/'),
- 'create' => Pages\CreateStandard::route('/create'),
- 'edit' => Pages\EditStandard::route('/{record}/edit'),
+ 'index' => ListStandards::route('/'),
+ 'create' => CreateStandard::route('/create'),
+ 'edit' => EditStandard::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/StandardResource/Pages/EditStandard.php b/app/Filament/Resources/Section/StandardResource/Pages/EditStandard.php
index 28e484c8..84fe2f8f 100644
--- a/app/Filament/Resources/Section/StandardResource/Pages/EditStandard.php
+++ b/app/Filament/Resources/Section/StandardResource/Pages/EditStandard.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\StandardResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Section\StandardResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -14,7 +15,7 @@ class EditStandard extends EditCodec
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Section/StandardResource/Pages/ListStandards.php b/app/Filament/Resources/Section/StandardResource/Pages/ListStandards.php
index 05f2575d..b5801aae 100644
--- a/app/Filament/Resources/Section/StandardResource/Pages/ListStandards.php
+++ b/app/Filament/Resources/Section/StandardResource/Pages/ListStandards.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\StandardResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\StandardResource;
use App\Models\Codec;
@@ -17,7 +18,7 @@ class ListStandards extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Section/TeamResource.php b/app/Filament/Resources/Section/TeamResource.php
index 3531b6ef..858e4f12 100644
--- a/app/Filament/Resources/Section/TeamResource.php
+++ b/app/Filament/Resources/Section/TeamResource.php
@@ -2,11 +2,14 @@
namespace App\Filament\Resources\Section;
+use Filament\Schemas\Schema;
+use App\Filament\Resources\Section\TeamResource\Pages\ListTeams;
+use App\Filament\Resources\Section\TeamResource\Pages\CreateTeam;
+use App\Filament\Resources\Section\TeamResource\Pages\EditTeam;
use App\Filament\Resources\Section\TeamResource\Pages;
use App\Filament\Resources\Section\TeamResource\RelationManagers;
use App\Models\Team;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +22,9 @@ class TeamResource extends CodecResource
protected static ?int $navigationSort = 6;
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return parent::form($form);
+ return parent::form($schema);
}
public static function table(Table $table): Table
@@ -39,9 +42,9 @@ class TeamResource extends CodecResource
public static function getPages(): array
{
return [
- 'index' => Pages\ListTeams::route('/'),
- 'create' => Pages\CreateTeam::route('/create'),
- 'edit' => Pages\EditTeam::route('/{record}/edit'),
+ 'index' => ListTeams::route('/'),
+ 'create' => CreateTeam::route('/create'),
+ 'edit' => EditTeam::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/Section/TeamResource/Pages/EditTeam.php b/app/Filament/Resources/Section/TeamResource/Pages/EditTeam.php
index e5ae6516..2ff649fc 100644
--- a/app/Filament/Resources/Section/TeamResource/Pages/EditTeam.php
+++ b/app/Filament/Resources/Section/TeamResource/Pages/EditTeam.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\TeamResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Section\TeamResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -14,7 +15,7 @@ class EditTeam extends EditCodec
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Section/TeamResource/Pages/ListTeams.php b/app/Filament/Resources/Section/TeamResource/Pages/ListTeams.php
index 6b6168f8..5623742f 100644
--- a/app/Filament/Resources/Section/TeamResource/Pages/ListTeams.php
+++ b/app/Filament/Resources/Section/TeamResource/Pages/ListTeams.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\TeamResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Section\TeamResource;
use App\Models\Standard;
@@ -17,7 +18,7 @@ class ListTeams extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/System/AgentAllowResource.php b/app/Filament/Resources/System/AgentAllowResource.php
index 3f32d8a6..c71f1cc9 100644
--- a/app/Filament/Resources/System/AgentAllowResource.php
+++ b/app/Filament/Resources/System/AgentAllowResource.php
@@ -2,12 +2,23 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Radio;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\AgentAllowResource\RelationManagers\DeniesRelationManager;
+use App\Filament\Resources\System\AgentAllowResource\Pages\ListAgentAllows;
+use App\Filament\Resources\System\AgentAllowResource\Pages\CreateAgentAllow;
+use App\Filament\Resources\System\AgentAllowResource\Pages\EditAgentAllow;
use App\Filament\OptionsTrait;
use App\Filament\Resources\System\AgentAllowResource\Pages;
use App\Filament\Resources\System\AgentAllowResource\RelationManagers;
use App\Models\AgentAllow;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -20,9 +31,9 @@ class AgentAllowResource extends Resource
protected static ?string $model = AgentAllow::class;
- protected static ?string $navigationIcon = 'heroicon-o-check';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-check';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 4;
@@ -37,24 +48,24 @@ class AgentAllowResource extends Resource
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('family')->required()->label(__('label.agent_allow.family')),
- Forms\Components\TextInput::make('start_name')->required()->label(__('label.agent_allow.start_name')),
- Forms\Components\TextInput::make('peer_id_start')->required()->label(__('label.agent_allow.peer_id_start')),
- Forms\Components\TextInput::make('peer_id_pattern')->required()->label(__('label.agent_allow.peer_id_pattern')),
- Forms\Components\Radio::make('peer_id_matchtype')->options(self::$matchTypes)->required()->label(__('label.agent_allow.peer_id_matchtype')),
- Forms\Components\TextInput::make('peer_id_match_num')->integer()->required()->label(__('label.agent_allow.peer_id_match_num')),
- Forms\Components\TextInput::make('agent_start')->required()->label(__('label.agent_allow.agent_start')),
- Forms\Components\TextInput::make('agent_pattern')->required()->label(__('label.agent_allow.agent_pattern')),
- Forms\Components\Radio::make('agent_matchtype')->options(self::$matchTypes)->required()->label(__('label.agent_allow.agent_matchtype')),
- Forms\Components\TextInput::make('agent_match_num')->required()->label(__('label.agent_allow.agent_match_num')),
- Forms\Components\Radio::make('exception')->options(self::$yesOrNo)->required()->label(__('label.agent_allow.exception')),
- Forms\Components\Radio::make('allowhttps')->options(self::$yesOrNo)->required()->label(__('label.agent_allow.allowhttps')),
+ return $schema
+ ->components([
+ TextInput::make('family')->required()->label(__('label.agent_allow.family')),
+ TextInput::make('start_name')->required()->label(__('label.agent_allow.start_name')),
+ TextInput::make('peer_id_start')->required()->label(__('label.agent_allow.peer_id_start')),
+ TextInput::make('peer_id_pattern')->required()->label(__('label.agent_allow.peer_id_pattern')),
+ Radio::make('peer_id_matchtype')->options(self::$matchTypes)->required()->label(__('label.agent_allow.peer_id_matchtype')),
+ TextInput::make('peer_id_match_num')->integer()->required()->label(__('label.agent_allow.peer_id_match_num')),
+ TextInput::make('agent_start')->required()->label(__('label.agent_allow.agent_start')),
+ TextInput::make('agent_pattern')->required()->label(__('label.agent_allow.agent_pattern')),
+ Radio::make('agent_matchtype')->options(self::$matchTypes)->required()->label(__('label.agent_allow.agent_matchtype')),
+ TextInput::make('agent_match_num')->required()->label(__('label.agent_allow.agent_match_num')),
+ Radio::make('exception')->options(self::$yesOrNo)->required()->label(__('label.agent_allow.exception')),
+ Radio::make('allowhttps')->options(self::$yesOrNo)->required()->label(__('label.agent_allow.allowhttps')),
- Forms\Components\Textarea::make('comment')->label(__('label.comment')),
+ Textarea::make('comment')->label(__('label.comment')),
]);
}
@@ -62,42 +73,42 @@ class AgentAllowResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('family')->searchable()->label(__('label.agent_allow.family')),
- Tables\Columns\TextColumn::make('start_name')->searchable()->label(__('label.agent_allow.start_name')),
- Tables\Columns\TextColumn::make('peer_id_start')->label(__('label.agent_allow.peer_id_start')),
- Tables\Columns\TextColumn::make('agent_start')->label(__('label.agent_allow.agent_start')),
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('family')->searchable()->label(__('label.agent_allow.family')),
+ TextColumn::make('start_name')->searchable()->label(__('label.agent_allow.start_name')),
+ TextColumn::make('peer_id_start')->label(__('label.agent_allow.peer_id_start')),
+ TextColumn::make('agent_start')->label(__('label.agent_allow.agent_start')),
])
->defaultSort('id', 'desc')
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make()->using(function ($record) {
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make()->using(function ($record) {
$record->delete();
clear_agent_allow_deny_cache();
return redirect(self::getUrl());
})
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getRelations(): array
{
return [
- RelationManagers\DeniesRelationManager::class,
+ DeniesRelationManager::class,
];
}
public static function getPages(): array
{
return [
- 'index' => Pages\ListAgentAllows::route('/'),
- 'create' => Pages\CreateAgentAllow::route('/create'),
- 'edit' => Pages\EditAgentAllow::route('/{record}/edit'),
+ 'index' => ListAgentAllows::route('/'),
+ 'create' => CreateAgentAllow::route('/create'),
+ 'edit' => EditAgentAllow::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/System/AgentAllowResource/Pages/EditAgentAllow.php b/app/Filament/Resources/System/AgentAllowResource/Pages/EditAgentAllow.php
index 9c446219..cf5848a2 100644
--- a/app/Filament/Resources/System/AgentAllowResource/Pages/EditAgentAllow.php
+++ b/app/Filament/Resources/System/AgentAllowResource/Pages/EditAgentAllow.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\AgentAllowResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\System\AgentAllowResource;
use App\Models\NexusModel;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class EditAgentAllow extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make()->using(function ($record) {
+ DeleteAction::make()->using(function ($record) {
$record->delete();
clear_agent_allow_deny_cache();
return redirect(AgentAllowResource::getUrl());
diff --git a/app/Filament/Resources/System/AgentAllowResource/Pages/ListAgentAllows.php b/app/Filament/Resources/System/AgentAllowResource/Pages/ListAgentAllows.php
index e8aa2827..e2cd7511 100644
--- a/app/Filament/Resources/System/AgentAllowResource/Pages/ListAgentAllows.php
+++ b/app/Filament/Resources/System/AgentAllowResource/Pages/ListAgentAllows.php
@@ -2,6 +2,10 @@
namespace App\Filament\Resources\System\AgentAllowResource\Pages;
+use Filament\Actions\CreateAction;
+use Filament\Actions\Action;
+use Filament\Forms\Components\TextInput;
+use Exception;
use App\Filament\PageList;
use App\Filament\Resources\System\AgentAllowResource;
use App\Repositories\AgentAllowRepository;
@@ -16,12 +20,12 @@ class ListAgentAllows extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
- Actions\Action::make('check')
+ CreateAction::make(),
+ Action::make('check')
->label(__('admin.resources.agent_allow.check_modal_btn'))
- ->form([
- Forms\Components\TextInput::make('peer_id')->required(),
- Forms\Components\TextInput::make('agent')->required(),
+ ->schema([
+ TextInput::make('peer_id')->required(),
+ TextInput::make('agent')->required(),
])
->modalHeading(__('admin.resources.agent_allow.check_modal_header'))
->action(function ($data) {
@@ -29,7 +33,7 @@ class ListAgentAllows extends PageList
try {
$result = $agentAllowRep->checkClient($data['peer_id'], $data['agent']);
send_admin_success_notification(__('admin.resources.agent_allow.check_pass_msg', ['id' => $result->id]));
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
})
diff --git a/app/Filament/Resources/System/AgentAllowResource/RelationManagers/DeniesRelationManager.php b/app/Filament/Resources/System/AgentAllowResource/RelationManagers/DeniesRelationManager.php
index f32c2806..b1c8e991 100644
--- a/app/Filament/Resources/System/AgentAllowResource/RelationManagers/DeniesRelationManager.php
+++ b/app/Filament/Resources/System/AgentAllowResource/RelationManagers/DeniesRelationManager.php
@@ -2,8 +2,15 @@
namespace App\Filament\Resources\System\AgentAllowResource\RelationManagers;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\CreateAction;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables\Table;
use Filament\Tables;
@@ -16,14 +23,14 @@ class DeniesRelationManager extends RelationManager
protected static ?string $recordTitleAttribute = 'name';
- public function form(Form $form): Form
+ public function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->required()->maxLength(255)->label(__('label.name')),
- Forms\Components\TextInput::make('peer_id')->required()->maxLength(255)->label(__('label.agent_deny.peer_id')),
- Forms\Components\TextInput::make('agent')->required()->maxLength(255)->label(__('label.agent_deny.agent')),
- Forms\Components\Textarea::make('comment')->label(__('label.comment')),
+ return $schema
+ ->components([
+ TextInput::make('name')->required()->maxLength(255)->label(__('label.name')),
+ TextInput::make('peer_id')->required()->maxLength(255)->label(__('label.agent_deny.peer_id')),
+ TextInput::make('agent')->required()->maxLength(255)->label(__('label.agent_deny.agent')),
+ Textarea::make('comment')->label(__('label.comment')),
]);
}
@@ -31,22 +38,22 @@ class DeniesRelationManager extends RelationManager
{
return $table
->columns([
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
- Tables\Columns\TextColumn::make('peer_id')->label(__('label.agent_deny.peer_id')),
- Tables\Columns\TextColumn::make('agent')->label(__('label.agent_deny.agent')),
+ TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('peer_id')->label(__('label.agent_deny.peer_id')),
+ TextColumn::make('agent')->label(__('label.agent_deny.agent')),
])
->filters([
//
])
->headerActions([
- Tables\Actions\CreateAction::make(),
+ CreateAction::make(),
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
}
diff --git a/app/Filament/Resources/System/AgentDenyResource.php b/app/Filament/Resources/System/AgentDenyResource.php
index f0abad1f..0a1ddee3 100644
--- a/app/Filament/Resources/System/AgentDenyResource.php
+++ b/app/Filament/Resources/System/AgentDenyResource.php
@@ -2,11 +2,21 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\AgentDenyResource\Pages\ListAgentDenies;
+use App\Filament\Resources\System\AgentDenyResource\Pages\CreateAgentDeny;
+use App\Filament\Resources\System\AgentDenyResource\Pages\EditAgentDeny;
use App\Filament\Resources\System\AgentDenyResource\Pages;
use App\Filament\Resources\System\AgentDenyResource\RelationManagers;
use App\Models\AgentDeny;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +27,9 @@ class AgentDenyResource extends Resource
{
protected static ?string $model = AgentDeny::class;
- protected static ?string $navigationIcon = 'heroicon-o-no-symbol';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-no-symbol';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 5;
@@ -33,16 +43,16 @@ class AgentDenyResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\Select::make('family_id')->label('Allow family')
+ return $schema
+ ->components([
+ Select::make('family_id')->label('Allow family')
->relationship('family', 'family')->required()->label(__('label.agent_allow.family')),
- Forms\Components\TextInput::make('name')->required()->label(__('label.name')),
- Forms\Components\TextInput::make('peer_id')->required()->label(__('label.agent_deny.peer_id')),
- Forms\Components\TextInput::make('agent')->required()->label(__('label.agent_deny.agent')),
- Forms\Components\Textarea::make('comment')->label(__('label.comment')),
+ TextInput::make('name')->required()->label(__('label.name')),
+ TextInput::make('peer_id')->required()->label(__('label.agent_deny.peer_id')),
+ TextInput::make('agent')->required()->label(__('label.agent_deny.agent')),
+ Textarea::make('comment')->label(__('label.comment')),
]);
}
@@ -50,26 +60,26 @@ class AgentDenyResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('family.family')->label(__('label.agent_allow.family')),
- Tables\Columns\TextColumn::make('name')->searchable()->label(__('label.name')),
- Tables\Columns\TextColumn::make('peer_id')->searchable()->label(__('label.agent_deny.peer_id')),
- Tables\Columns\TextColumn::make('agent')->searchable()->label(__('label.agent_deny.agent')),
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('family.family')->label(__('label.agent_allow.family')),
+ TextColumn::make('name')->searchable()->label(__('label.name')),
+ TextColumn::make('peer_id')->searchable()->label(__('label.agent_deny.peer_id')),
+ TextColumn::make('agent')->searchable()->label(__('label.agent_deny.agent')),
])
->defaultSort('id', 'desc')
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make()->using(function ($record) {
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make()->using(function ($record) {
$record->delete();
clear_agent_allow_deny_cache();
return redirect(self::getUrl());
})
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
@@ -83,9 +93,9 @@ class AgentDenyResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListAgentDenies::route('/'),
- 'create' => Pages\CreateAgentDeny::route('/create'),
- 'edit' => Pages\EditAgentDeny::route('/{record}/edit'),
+ 'index' => ListAgentDenies::route('/'),
+ 'create' => CreateAgentDeny::route('/create'),
+ 'edit' => EditAgentDeny::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/System/AgentDenyResource/Pages/EditAgentDeny.php b/app/Filament/Resources/System/AgentDenyResource/Pages/EditAgentDeny.php
index e3bf1575..23b6374e 100644
--- a/app/Filament/Resources/System/AgentDenyResource/Pages/EditAgentDeny.php
+++ b/app/Filament/Resources/System/AgentDenyResource/Pages/EditAgentDeny.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\AgentDenyResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\System\AgentDenyResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditAgentDeny extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make()->using(function ($record) {
+ DeleteAction::make()->using(function ($record) {
$record->delete();
clear_agent_allow_deny_cache();
return redirect(AgentDenyResource::getUrl());
diff --git a/app/Filament/Resources/System/AgentDenyResource/Pages/ListAgentDenies.php b/app/Filament/Resources/System/AgentDenyResource/Pages/ListAgentDenies.php
index 512f4348..66d49b58 100644
--- a/app/Filament/Resources/System/AgentDenyResource/Pages/ListAgentDenies.php
+++ b/app/Filament/Resources/System/AgentDenyResource/Pages/ListAgentDenies.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\AgentDenyResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\System\AgentDenyResource;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class ListAgentDenies extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/DownloadSpeedResource.php b/app/Filament/Resources/System/DownloadSpeedResource.php
index 139a525a..a4f98a83 100644
--- a/app/Filament/Resources/System/DownloadSpeedResource.php
+++ b/app/Filament/Resources/System/DownloadSpeedResource.php
@@ -2,11 +2,17 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\DownloadSpeedResource\Pages\ManageDownloadSpeeds;
use App\Filament\Resources\System\DownloadSpeedResource\Pages;
use App\Filament\Resources\System\DownloadSpeedResource\RelationManagers;
use App\Models\DownloadSpeed;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +23,9 @@ class DownloadSpeedResource extends Resource
{
protected static ?string $model = DownloadSpeed::class;
- protected static ?string $navigationIcon = 'heroicon-o-arrow-down-tray';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-arrow-down-tray';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 6;
@@ -33,11 +39,11 @@ class DownloadSpeedResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->label(__('label.name'))
+ return $schema
+ ->components([
+ TextInput::make('name')->label(__('label.name'))
]);
}
@@ -45,25 +51,25 @@ class DownloadSpeedResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.name')),
])
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageDownloadSpeeds::route('/'),
+ 'index' => ManageDownloadSpeeds::route('/'),
];
}
}
diff --git a/app/Filament/Resources/System/DownloadSpeedResource/Pages/ManageDownloadSpeeds.php b/app/Filament/Resources/System/DownloadSpeedResource/Pages/ManageDownloadSpeeds.php
index e1ea1ee3..673a388a 100644
--- a/app/Filament/Resources/System/DownloadSpeedResource/Pages/ManageDownloadSpeeds.php
+++ b/app/Filament/Resources/System/DownloadSpeedResource/Pages/ManageDownloadSpeeds.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\DownloadSpeedResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\Resources\System\DownloadSpeedResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\ManageRecords;
@@ -13,7 +14,7 @@ class ManageDownloadSpeeds extends ManageRecords
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/ExamResource.php b/app/Filament/Resources/System/ExamResource.php
index 827eba31..950523a6 100644
--- a/app/Filament/Resources/System/ExamResource.php
+++ b/app/Filament/Resources/System/ExamResource.php
@@ -2,6 +2,25 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Schemas\Components\Section;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Select;
+use Filament\Schemas\Components\Utilities\Get;
+use Filament\Forms\Components\Repeater;
+use Filament\Forms\Components\Hidden;
+use Filament\Forms\Components\Radio;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Forms\Components\CheckboxList;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\BooleanColumn;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use App\Filament\Resources\System\ExamResource\Pages\ListExams;
+use App\Filament\Resources\System\ExamResource\Pages\CreateExam;
+use App\Filament\Resources\System\ExamResource\Pages\EditExam;
use App\Filament\OptionsTrait;
use App\Filament\Resources\System\ExamResource\Pages;
use App\Filament\Resources\System\ExamResource\RelationManagers;
@@ -9,7 +28,6 @@ use App\Models\Exam;
use App\Repositories\ExamRepository;
use App\Repositories\UserRepository;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -23,9 +41,9 @@ class ExamResource extends Resource
protected static ?string $model = Exam::class;
- protected static ?string $navigationIcon = 'heroicon-o-exclamation-triangle';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-exclamation-triangle';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 1;
@@ -41,14 +59,14 @@ class ExamResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
$userRep = new UserRepository();
- return $form
- ->schema([
- Forms\Components\Section::make(__('label.exam.section_base_info'))->schema([
- Forms\Components\TextInput::make('name')->required()->columnSpan(['sm' => 2])->label(__('label.name')),
- Forms\Components\Select::make('type')
+ return $schema
+ ->components([
+ Section::make(__('label.exam.section_base_info'))->schema([
+ TextInput::make('name')->required()->columnSpan(['sm' => 2])->label(__('label.name')),
+ Select::make('type')
->required()
->columnSpanFull()
->label(__('exam.type'))
@@ -56,74 +74,74 @@ class ExamResource extends Resource
->helperText(__('exam.type_help'))
->reactive()
,
- Forms\Components\TextInput::make('success_reward_bonus')
+ TextInput::make('success_reward_bonus')
->columnSpanFull()
->required()
->label(__('exam.success_reward_bonus'))
- ->hidden(fn (\Filament\Forms\Get $get) => $get('type') != Exam::TYPE_TASK)
+ ->hidden(fn (Get $get) => $get('type') != Exam::TYPE_TASK)
,
- Forms\Components\TextInput::make('fail_deduct_bonus')
+ TextInput::make('fail_deduct_bonus')
->columnSpanFull()
->required()
->label(__('exam.fail_deduct_bonus'))
- ->hidden(fn (\Filament\Forms\Get $get) => $get('type') != Exam::TYPE_TASK)
+ ->hidden(fn (Get $get) => $get('type') != Exam::TYPE_TASK)
,
- Forms\Components\TextInput::make('max_user_count')
+ TextInput::make('max_user_count')
->columnSpanFull()
->required()
->numeric()
->label(__('exam.max_user_count'))
- ->hidden(fn (\Filament\Forms\Get $get) => $get('type') != Exam::TYPE_TASK)
+ ->hidden(fn (Get $get) => $get('type') != Exam::TYPE_TASK)
,
- Forms\Components\Repeater::make('indexes')->schema([
- Forms\Components\Select::make('index')
+ Repeater::make('indexes')->schema([
+ Select::make('index')
->options(Exam::listIndex(true))
->label(__('label.exam.index_required_label'))
->rules([Rule::in(array_keys(Exam::$indexes))])
->required(),
- Forms\Components\TextInput::make('require_value')
+ TextInput::make('require_value')
->label(__('label.exam.index_required_value'))
->placeholder(__('label.exam.index_placeholder'))
->integer()
->required(),
- Forms\Components\Hidden::make('checked')->default(true),
+ Hidden::make('checked')->default(true),
])
->label(__('label.exam.index_formatted'))
->required(),
- Forms\Components\Radio::make('status')
+ Radio::make('status')
->options(self::getEnableDisableOptions())
->inline()
->required()
->label(__('label.status'))
->columnSpan(['sm' => 2]),
- Forms\Components\Radio::make('is_discovered')
+ Radio::make('is_discovered')
->options(self::IS_DISCOVERED_OPTIONS)
->label(__('label.exam.is_discovered'))
->inline()
->required()
->columnSpan(['sm' => 2]),
- Forms\Components\TextInput::make('background_color')
+ TextInput::make('background_color')
->required()
->label(__('exam.background_color'))
->columnSpan(['sm' => 2]),
- Forms\Components\TextInput::make('priority')
+ TextInput::make('priority')
->columnSpan(['sm' => 2])
->integer()
->label(__("label.priority"))
->helperText(__('label.exam.priority_help')),
])->columns(2),
- Forms\Components\Section::make(__('label.exam.section_time'))->schema([
- Forms\Components\DateTimePicker::make('begin')->label(__('label.begin')),
- Forms\Components\DateTimePicker::make('end')->label(__('label.end')),
- Forms\Components\TextInput::make('duration')
+ Section::make(__('label.exam.section_time'))->schema([
+ DateTimePicker::make('begin')->label(__('label.begin')),
+ DateTimePicker::make('end')->label(__('label.end')),
+ TextInput::make('duration')
->integer()
->columnSpan(['sm' => 2])
->label(__('label.duration'))
->helperText(__('label.exam.duration_help')),
- Forms\Components\Select::make('recurring')
+ Select::make('recurring')
->options(Exam::listRecurringOptions())
->label(__('exam.recurring'))
->helperText(__('exam.recurring_help'))
@@ -131,22 +149,22 @@ class ExamResource extends Resource
,
])->columns(2),
- Forms\Components\Section::make(__('label.exam.section_target_user'))->schema([
- Forms\Components\CheckboxList::make('filters.classes')
+ Section::make(__('label.exam.section_target_user'))->schema([
+ CheckboxList::make('filters.classes')
->options($userRep->listClass())->columnSpan(['sm' => 2])
->columns(4)
->label(__('label.user.class')),
- Forms\Components\DateTimePicker::make('filters.register_time_range.0')->label(__("label.exam.register_time_range.begin")),
- Forms\Components\DateTimePicker::make('filters.register_time_range.1')->label(__("label.exam.register_time_range.end")),
- Forms\Components\TextInput::make('filters.register_days_range.0')->numeric()->label(__("label.exam.register_days_range.begin")),
- Forms\Components\TextInput::make('filters.register_days_range.1')->numeric()->label(__("label.exam.register_days_range.end")),
- Forms\Components\CheckboxList::make('filters.donate_status')
+ DateTimePicker::make('filters.register_time_range.0')->label(__("label.exam.register_time_range.begin")),
+ DateTimePicker::make('filters.register_time_range.1')->label(__("label.exam.register_time_range.end")),
+ TextInput::make('filters.register_days_range.0')->numeric()->label(__("label.exam.register_days_range.begin")),
+ TextInput::make('filters.register_days_range.1')->numeric()->label(__("label.exam.register_days_range.end")),
+ CheckboxList::make('filters.donate_status')
->options(self::$yesOrNo)
->label(__('label.exam.donated')),
])->columns(2),
- Forms\Components\Textarea::make('description')->columnSpan(['sm' => 2])->label(__('label.description')),
+ Textarea::make('description')->columnSpan(['sm' => 2])->label(__('label.description')),
]);
}
@@ -154,33 +172,33 @@ class ExamResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('name')->searchable()->label(__('label.name')),
- Tables\Columns\TextColumn::make('typeText')->label(__('exam.type')),
- Tables\Columns\TextColumn::make('indexFormatted')->label(__('label.exam.index_formatted'))->html(),
- Tables\Columns\TextColumn::make('begin')->label(__('label.begin')),
- Tables\Columns\TextColumn::make('end')->label(__('label.end')),
- Tables\Columns\TextColumn::make('durationText')->label(__('label.duration')),
- Tables\Columns\TextColumn::make('recurringText')->label(__('exam.recurring')),
- Tables\Columns\TextColumn::make('filterFormatted')->label(__('label.exam.filter_formatted'))->html()->extraAttributes([]),
- Tables\Columns\BooleanColumn::make('is_discovered')->label(__('label.exam.is_discovered')),
- Tables\Columns\TextColumn::make('priority')->label(__('label.priority')),
- Tables\Columns\TextColumn::make('statusText')->label(__('label.status')),
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('name')->searchable()->label(__('label.name')),
+ TextColumn::make('typeText')->label(__('exam.type')),
+ TextColumn::make('indexFormatted')->label(__('label.exam.index_formatted'))->html(),
+ TextColumn::make('begin')->label(__('label.begin')),
+ TextColumn::make('end')->label(__('label.end')),
+ TextColumn::make('durationText')->label(__('label.duration')),
+ TextColumn::make('recurringText')->label(__('exam.recurring')),
+ TextColumn::make('filterFormatted')->label(__('label.exam.filter_formatted'))->html()->extraAttributes([]),
+ BooleanColumn::make('is_discovered')->label(__('label.exam.is_discovered')),
+ TextColumn::make('priority')->label(__('label.priority')),
+ TextColumn::make('statusText')->label(__('label.status')),
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\SelectFilter::make('type')->options(Exam::listTypeOptions())->label(__("exam.type")),
- Tables\Filters\SelectFilter::make('is_discovered')->options(self::IS_DISCOVERED_OPTIONS)->label(__("label.exam.is_discovered")),
- Tables\Filters\SelectFilter::make('status')->options(self::getEnableDisableOptions())->label(__("label.status")),
+ SelectFilter::make('type')->options(Exam::listTypeOptions())->label(__("exam.type")),
+ SelectFilter::make('is_discovered')->options(self::IS_DISCOVERED_OPTIONS)->label(__("label.exam.is_discovered")),
+ SelectFilter::make('status')->options(self::getEnableDisableOptions())->label(__("label.status")),
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make()->using(function ($record) {
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make()->using(function ($record) {
$rep = new ExamRepository();
$rep->delete($record->id);
}),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -195,9 +213,9 @@ class ExamResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListExams::route('/'),
- 'create' => Pages\CreateExam::route('/create'),
- 'edit' => Pages\EditExam::route('/{record}/edit'),
+ 'index' => ListExams::route('/'),
+ 'create' => CreateExam::route('/create'),
+ 'edit' => EditExam::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/System/ExamResource/Pages/CreateExam.php b/app/Filament/Resources/System/ExamResource/Pages/CreateExam.php
index 4dcd6e02..ce0a0d94 100644
--- a/app/Filament/Resources/System/ExamResource/Pages/CreateExam.php
+++ b/app/Filament/Resources/System/ExamResource/Pages/CreateExam.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\ExamResource\Pages;
+use Exception;
use App\Filament\Resources\System\ExamResource;
use App\Repositories\ExamRepository;
use Filament\Pages\Actions;
@@ -28,7 +29,7 @@ class CreateExam extends CreateRecord
return;
}
$this->redirect($this->getResource()::getUrl('index'));
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage() . "\n" . $exception->getTraceAsString(), "error");
send_admin_fail_notification($exception->getMessage());
}
diff --git a/app/Filament/Resources/System/ExamResource/Pages/EditExam.php b/app/Filament/Resources/System/ExamResource/Pages/EditExam.php
index 55fe2008..959ad3eb 100644
--- a/app/Filament/Resources/System/ExamResource/Pages/EditExam.php
+++ b/app/Filament/Resources/System/ExamResource/Pages/EditExam.php
@@ -2,6 +2,8 @@
namespace App\Filament\Resources\System\ExamResource\Pages;
+use Filament\Actions\DeleteAction;
+use Exception;
use App\Filament\Resources\System\ExamResource;
use App\Repositories\ExamRepository;
use Filament\Pages\Actions;
@@ -14,7 +16,7 @@ class EditExam extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
@@ -26,7 +28,7 @@ class EditExam extends EditRecord
$this->record = $examRep->update($data, $this->record->id);
send_admin_success_notification();
$this->redirect($this->getResource()::getUrl('index'));
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
}
diff --git a/app/Filament/Resources/System/ExamResource/Pages/ListExams.php b/app/Filament/Resources/System/ExamResource/Pages/ListExams.php
index 1fad6b0d..9e62779e 100644
--- a/app/Filament/Resources/System/ExamResource/Pages/ListExams.php
+++ b/app/Filament/Resources/System/ExamResource/Pages/ListExams.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\ExamResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\System\ExamResource;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class ListExams extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/IspResource.php b/app/Filament/Resources/System/IspResource.php
index 140d7f60..d29ff47e 100644
--- a/app/Filament/Resources/System/IspResource.php
+++ b/app/Filament/Resources/System/IspResource.php
@@ -2,11 +2,17 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\IspResource\Pages\ManageIsps;
use App\Filament\Resources\System\IspResource\Pages;
use App\Filament\Resources\System\IspResource\RelationManagers;
use App\Models\Isp;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +23,9 @@ class IspResource extends Resource
{
protected static ?string $model = Isp::class;
- protected static ?string $navigationIcon = 'heroicon-o-globe-alt';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-globe-alt';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 7;
@@ -33,11 +39,11 @@ class IspResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->label(__('label.name'))
+ return $schema
+ ->components([
+ TextInput::make('name')->label(__('label.name'))
]);
}
@@ -45,25 +51,25 @@ class IspResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.name')),
])
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageIsps::route('/'),
+ 'index' => ManageIsps::route('/'),
];
}
}
diff --git a/app/Filament/Resources/System/IspResource/Pages/ManageIsps.php b/app/Filament/Resources/System/IspResource/Pages/ManageIsps.php
index 0f4eca50..e60b901f 100644
--- a/app/Filament/Resources/System/IspResource/Pages/ManageIsps.php
+++ b/app/Filament/Resources/System/IspResource/Pages/ManageIsps.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\IspResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\Resources\System\IspResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\ManageRecords;
@@ -13,7 +14,7 @@ class ManageIsps extends ManageRecords
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/MedalResource.php b/app/Filament/Resources/System/MedalResource.php
index f282a316..94f89b81 100644
--- a/app/Filament/Resources/System/MedalResource.php
+++ b/app/Filament/Resources/System/MedalResource.php
@@ -2,11 +2,24 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Radio;
+use Filament\Forms\Components\Toggle;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\ImageColumn;
+use Filament\Tables\Columns\IconColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\MedalResource\Pages\ListMedals;
+use App\Filament\Resources\System\MedalResource\Pages\CreateMedal;
+use App\Filament\Resources\System\MedalResource\Pages\EditMedal;
use App\Filament\Resources\System\MedalResource\Pages;
use App\Filament\Resources\System\MedalResource\RelationManagers;
use App\Models\Medal;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -18,9 +31,9 @@ class MedalResource extends Resource
{
protected static ?string $model = Medal::class;
- protected static ?string $navigationIcon = 'heroicon-o-check-badge';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-check-badge';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 2;
@@ -35,69 +48,69 @@ class MedalResource extends Resource
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->required()->label(__('label.name')),
- Forms\Components\TextInput::make('price')->required()->integer()->label(__('label.price')),
- Forms\Components\TextInput::make('image_large')->required()->label(__('label.medal.image_large')),
- Forms\Components\TextInput::make('image_small')->required()->label(__('label.medal.image_small')),
- Forms\Components\Radio::make('get_type')
+ return $schema
+ ->components([
+ TextInput::make('name')->required()->label(__('label.name')),
+ TextInput::make('price')->required()->integer()->label(__('label.price')),
+ TextInput::make('image_large')->required()->label(__('label.medal.image_large')),
+ TextInput::make('image_small')->required()->label(__('label.medal.image_small')),
+ Radio::make('get_type')
->options(Medal::listGetTypes(true))
->inline()
->label(__('label.medal.get_type'))
->required()
,
- Forms\Components\Toggle::make('display_on_medal_page')
+ Toggle::make('display_on_medal_page')
->label(__('label.medal.display_on_medal_page'))
->required()
,
- Forms\Components\TextInput::make('duration')
+ TextInput::make('duration')
->integer()
->label(__('label.medal.duration'))
->helperText(__('label.medal.duration_help'))
,
- Forms\Components\TextInput::make('inventory')
+ TextInput::make('inventory')
->integer()
->label(__('medal.fields.inventory'))
->helperText(__('medal.fields.inventory_help'))
,
- Forms\Components\DateTimePicker::make('sale_begin_time')
+ DateTimePicker::make('sale_begin_time')
->label(__('medal.fields.sale_begin_time'))
->helperText(__('medal.fields.sale_begin_time_help'))
,
- Forms\Components\DateTimePicker::make('sale_end_time')
+ DateTimePicker::make('sale_end_time')
->label(__('medal.fields.sale_end_time'))
->helperText(__('medal.fields.sale_end_time_help'))
,
- Forms\Components\TextInput::make('bonus_addition_factor')
+ TextInput::make('bonus_addition_factor')
->label(__('medal.fields.bonus_addition_factor'))
->helperText(__('medal.fields.bonus_addition_factor_help'))
->numeric()
->minValue(0)
->default(0)
,
- Forms\Components\TextInput::make('bonus_addition_duration')
+ TextInput::make('bonus_addition_duration')
->label(__('medal.fields.bonus_addition_duration'))
->helperText(__('medal.fields.bonus_addition_duration_help'))
->numeric()
->minValue(0)
->default(0)
,
- Forms\Components\TextInput::make('gift_fee_factor')
+ TextInput::make('gift_fee_factor')
->label(__('medal.fields.gift_fee_factor'))
->helperText(__('medal.fields.gift_fee_factor_help'))
->numeric()
->default(0)
,
- Forms\Components\TextInput::make('priority')
+ TextInput::make('priority')
->label(__('label.priority'))
->helperText(__('label.priority_help'))
->numeric()
->default(0)
,
- Forms\Components\Textarea::make('description')
+ Textarea::make('description')
->label(__('label.description'))
,
]);
@@ -107,36 +120,36 @@ class MedalResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('name')->label(__('label.name'))->searchable(),
- Tables\Columns\ImageColumn::make('image_large')->height(60)->label(__('label.medal.image_large')),
- Tables\Columns\TextColumn::make('getTypeText')->label('Get type')->label(__('label.medal.get_type')),
- Tables\Columns\IconColumn::make('display_on_medal_page')->label(__('label.medal.display_on_medal_page'))->boolean(),
- Tables\Columns\TextColumn::make('sale_begin_end_time')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('name')->label(__('label.name'))->searchable(),
+ ImageColumn::make('image_large')->height(60)->label(__('label.medal.image_large')),
+ TextColumn::make('getTypeText')->label('Get type')->label(__('label.medal.get_type')),
+ IconColumn::make('display_on_medal_page')->label(__('label.medal.display_on_medal_page'))->boolean(),
+ TextColumn::make('sale_begin_end_time')
->label(__('medal.fields.sale_begin_end_time'))
->formatStateUsing(fn ($record) => new HtmlString(sprintf('%s ~
%s', $record->sale_begin_time ?? nexus_trans('nexus.no_limit'), $record->sale_end_time ?? nexus_trans('nexus.no_limit'))))
,
- Tables\Columns\TextColumn::make('bonus_addition_factor')->label(__('medal.fields.bonus_addition_factor')),
- Tables\Columns\TextColumn::make('bonus_addition_duration')->label(__('medal.fields.bonus_addition_duration')),
- Tables\Columns\TextColumn::make('gift_fee_factor')->label(__('medal.fields.gift_fee_factor')),
- Tables\Columns\TextColumn::make('price')->label(__('label.price'))->formatStateUsing(fn ($state) => number_format($state)),
+ TextColumn::make('bonus_addition_factor')->label(__('medal.fields.bonus_addition_factor')),
+ TextColumn::make('bonus_addition_duration')->label(__('medal.fields.bonus_addition_duration')),
+ TextColumn::make('gift_fee_factor')->label(__('medal.fields.gift_fee_factor')),
+ TextColumn::make('price')->label(__('label.price'))->formatStateUsing(fn ($state) => number_format($state)),
- Tables\Columns\TextColumn::make('duration')->label(__('label.medal.duration')),
+ TextColumn::make('duration')->label(__('label.medal.duration')),
- Tables\Columns\TextColumn::make('inventoryText')
+ TextColumn::make('inventoryText')
->label(__('medal.fields.inventory'))
,
- Tables\Columns\TextColumn::make('users_count')->label(__('medal.fields.users_count')),
- Tables\Columns\TextColumn::make('priority')->label(__('label.priority')),
+ TextColumn::make('users_count')->label(__('medal.fields.users_count')),
+ TextColumn::make('priority')->label(__('label.priority')),
])
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
+ ->recordActions([
+ EditAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
])
->modifyQueryUsing(fn (Builder $query) => $query->orderBy("priority", 'desc')->orderBy('id', 'desc'))
;
@@ -152,9 +165,9 @@ class MedalResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListMedals::route('/'),
- 'create' => Pages\CreateMedal::route('/create'),
- 'edit' => Pages\EditMedal::route('/{record}/edit'),
+ 'index' => ListMedals::route('/'),
+ 'create' => CreateMedal::route('/create'),
+ 'edit' => EditMedal::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/System/MedalResource/Pages/EditMedal.php b/app/Filament/Resources/System/MedalResource/Pages/EditMedal.php
index 9f4a8a24..3fc77e48 100644
--- a/app/Filament/Resources/System/MedalResource/Pages/EditMedal.php
+++ b/app/Filament/Resources/System/MedalResource/Pages/EditMedal.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\MedalResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\System\MedalResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditMedal extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
diff --git a/app/Filament/Resources/System/MedalResource/Pages/ListMedals.php b/app/Filament/Resources/System/MedalResource/Pages/ListMedals.php
index 22079fd6..5cfc4380 100644
--- a/app/Filament/Resources/System/MedalResource/Pages/ListMedals.php
+++ b/app/Filament/Resources/System/MedalResource/Pages/ListMedals.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\MedalResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\System\MedalResource;
use App\Models\Medal;
@@ -16,7 +17,7 @@ class ListMedals extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/System/MessageTemplateResource.php b/app/Filament/Resources/System/MessageTemplateResource.php
index 09f0be47..4040ff8a 100644
--- a/app/Filament/Resources/System/MessageTemplateResource.php
+++ b/app/Filament/Resources/System/MessageTemplateResource.php
@@ -2,6 +2,16 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\BulkActionGroup;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\MessageTemplateResource\Pages\ManageMessageTemplates;
use App\Enums\MessageTemplateNameEnum;
use App\Filament\Resources\System\MessageTemplateResource\Pages;
use App\Filament\Resources\System\MessageTemplateResource\RelationManagers;
@@ -9,7 +19,6 @@ use App\Models\Language;
use App\Models\MessageTemplate;
use App\Models\Setting;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
@@ -21,9 +30,9 @@ class MessageTemplateResource extends Resource
{
protected static ?string $model = MessageTemplate::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 2;
@@ -37,24 +46,24 @@ class MessageTemplateResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
$languages = Language::all();
$default = $languages->first(fn ($item) => $item->site_lang_folder == Setting::getDefaultLang());
- return $form
- ->schema([
- Forms\Components\Select::make('name')
+ return $schema
+ ->components([
+ Select::make('name')
->label(__('label.name'))
->options(MessageTemplate::listAllNames())
->columnSpanFull()
->required(),
- Forms\Components\Select::make('language_id')
+ Select::make('language_id')
->label(__('label.language'))
->options($languages->pluck('lang_name', 'id'))
->default($default ? $default->id : null)
->columnSpanFull()
->required(),
- Forms\Components\Textarea::make('content')
+ Textarea::make('content')
->label(__('label.content'))
->helperText(new HtmlString(__('message-template.content_help')."
".__('message-template.register_welcome_content_help')))
->columnSpanFull()
@@ -68,35 +77,35 @@ class MessageTemplateResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')
+ TextColumn::make('id'),
+ TextColumn::make('name')
->label(__('label.name'))
->formatStateUsing(fn ($state) => $state->label())
,
- Tables\Columns\TextColumn::make('language.lang_name')
+ TextColumn::make('language.lang_name')
->label(__('label.language'))
,
- Tables\Columns\TextColumn::make('updated_at')
+ TextColumn::make('updated_at')
->label(__('label.updated_at'))
,
])
->filters([
- Tables\Filters\SelectFilter::make('name')
+ SelectFilter::make('name')
->label(__('label.name'))
->options(MessageTemplate::listAllNames())
,
- Tables\Filters\SelectFilter::make('language_id')
+ SelectFilter::make('language_id')
->label(__('label.language'))
->options(Language::all()->pluck('lang_name', 'id'))
,
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\BulkActionGroup::make([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ BulkActionGroup::make([
+ DeleteBulkAction::make(),
]),
]);
}
@@ -104,7 +113,7 @@ class MessageTemplateResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageMessageTemplates::route('/'),
+ 'index' => ManageMessageTemplates::route('/'),
];
}
}
diff --git a/app/Filament/Resources/System/MessageTemplateResource/Pages/ManageMessageTemplates.php b/app/Filament/Resources/System/MessageTemplateResource/Pages/ManageMessageTemplates.php
index bf0d82e1..e3ad874c 100644
--- a/app/Filament/Resources/System/MessageTemplateResource/Pages/ManageMessageTemplates.php
+++ b/app/Filament/Resources/System/MessageTemplateResource/Pages/ManageMessageTemplates.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\MessageTemplateResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageListSingle;
use App\Filament\Resources\System\MessageTemplateResource;
use Filament\Actions;
@@ -14,7 +15,7 @@ class ManageMessageTemplates extends PageListSingle
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/PluginResource.php b/app/Filament/Resources/System/PluginResource.php
index eec15ff5..657af06f 100644
--- a/app/Filament/Resources/System/PluginResource.php
+++ b/app/Filament/Resources/System/PluginResource.php
@@ -2,12 +2,19 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\PluginResource\Pages\ManagePlugins;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\Action;
use App\Filament\Resources\System\PluginResource\Pages;
use App\Filament\Resources\System\PluginResource\RelationManagers;
use App\Jobs\ManagePlugin;
use App\Models\Plugin;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +26,9 @@ class PluginResource extends Resource
{
protected static ?string $model = Plugin::class;
- protected static ?string $navigationIcon = 'heroicon-o-plus-circle';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-plus-circle';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 99;
@@ -37,12 +44,12 @@ class PluginResource extends Resource
protected static bool $shouldRegisterNavigation = false;
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('package_name')->label(__('plugin.labels.package_name')),
- Forms\Components\TextInput::make('remote_url')->label(__('plugin.labels.remote_url')),
+ return $schema
+ ->components([
+ TextInput::make('package_name')->label(__('plugin.labels.package_name')),
+ TextInput::make('remote_url')->label(__('plugin.labels.remote_url')),
]);
}
@@ -50,36 +57,36 @@ class PluginResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('package_name')->label(__('plugin.labels.package_name')),
- Tables\Columns\TextColumn::make('remote_url')->label(__('plugin.labels.remote_url')),
- Tables\Columns\TextColumn::make('installed_version')->label(__('plugin.labels.installed_version')),
- Tables\Columns\TextColumn::make('statusText')->label(__('label.status')),
- Tables\Columns\TextColumn::make('updated_at')->label(__('plugin.labels.updated_at')),
+ TextColumn::make('id'),
+ TextColumn::make('package_name')->label(__('plugin.labels.package_name')),
+ TextColumn::make('remote_url')->label(__('plugin.labels.remote_url')),
+ TextColumn::make('installed_version')->label(__('plugin.labels.installed_version')),
+ TextColumn::make('statusText')->label(__('label.status')),
+ TextColumn::make('updated_at')->label(__('plugin.labels.updated_at')),
])
->filters([
//
])
- ->actions(self::getActions())
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->recordActions(self::getActions())
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManagePlugins::route('/'),
+ 'index' => ManagePlugins::route('/'),
];
}
private static function getActions()
{
$actions = [];
- $actions[] = Tables\Actions\EditAction::make();
+ $actions[] = EditAction::make();
$actions[] = self::buildInstallAction();
$actions[] = self::buildUpdateAction();
- $actions[] = Tables\Actions\DeleteAction::make('delete')
+ $actions[] = DeleteAction::make('delete')
->hidden(fn ($record) => !in_array($record->status, Plugin::$showDeleteBtnStatus))
->using(function ($record) {
$record->update(['status' => Plugin::STATUS_PRE_DELETE]);
@@ -90,7 +97,7 @@ class PluginResource extends Resource
private static function buildInstallAction()
{
- return Tables\Actions\Action::make('install')
+ return Action::make('install')
->label(__('plugin.actions.install'))
->icon('heroicon-o-arrow-down')
->requiresConfirmation()
@@ -104,7 +111,7 @@ class PluginResource extends Resource
private static function buildUpdateAction()
{
- return Tables\Actions\Action::make('update')
+ return Action::make('update')
->label(__('plugin.actions.update'))
->icon('heroicon-o-arrow-up')
->requiresConfirmation()
diff --git a/app/Filament/Resources/System/PluginResource/Pages/ManagePlugins.php b/app/Filament/Resources/System/PluginResource/Pages/ManagePlugins.php
index b2da0e1d..e0e33ec6 100644
--- a/app/Filament/Resources/System/PluginResource/Pages/ManagePlugins.php
+++ b/app/Filament/Resources/System/PluginResource/Pages/ManagePlugins.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\PluginResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageListSingle;
use App\Filament\Resources\System\PluginResource;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class ManagePlugins extends PageListSingle
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/PluginStoreResource.php b/app/Filament/Resources/System/PluginStoreResource.php
index 18ccaa59..4ced5528 100644
--- a/app/Filament/Resources/System/PluginStoreResource.php
+++ b/app/Filament/Resources/System/PluginStoreResource.php
@@ -2,14 +2,18 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\Layout\Stack;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\ViewAction;
+use Filament\Infolists\Components\TextEntry;
+use App\Filament\Resources\System\PluginStoreResource\Pages\ListPluginStores;
use App\Filament\Resources\System\PluginStoreResource\Pages;
use App\Filament\Resources\System\PluginStoreResource\RelationManagers;
use App\Livewire\InstallPluginModal;
use App\Models\Plugin;
use App\Models\PluginStore;
use Filament\Forms;
-use Filament\Forms\Form;
-use Filament\Infolists\Infolist;
use Filament\Resources\Resource;
use Filament\Support\Enums\FontWeight;
use Filament\Tables;
@@ -26,9 +30,9 @@ use Livewire\Livewire;
class PluginStoreResource extends Resource
{
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 99;
@@ -37,10 +41,10 @@ class PluginStoreResource extends Resource
return PluginStore::getHasNewVersionCount() ?: '';
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -49,15 +53,15 @@ class PluginStoreResource extends Resource
{
return $table
->columns([
- Tables\Columns\Layout\Stack::make([
- Tables\Columns\Layout\Stack::make([
- Tables\Columns\TextColumn::make(self::getColumnLabelKey("title"))
+ Stack::make([
+ Stack::make([
+ TextColumn::make(self::getColumnLabelKey("title"))
->weight(FontWeight::Bold)
,
- Tables\Columns\TextColumn::make(self::getColumnLabelKey("description")),
+ TextColumn::make(self::getColumnLabelKey("description")),
]),
- Tables\Columns\Layout\Stack::make([
- Tables\Columns\TextColumn::make('version')
+ Stack::make([
+ TextColumn::make('version')
->formatStateUsing(function (PluginStore $record) {
$installedVersion = $record->installed_version;
$latestVersion = $record->version;
@@ -82,8 +86,8 @@ class PluginStoreResource extends Resource
->filters([
//
])
- ->actions([
- Tables\Actions\ViewAction::make()
+ ->recordActions([
+ ViewAction::make()
->modalHeading(nexus_trans("plugin.labels.introduce"))
->modalContent(fn (PluginStore $record) => $record->getFullDescription())
->extraModalFooterActions([
@@ -93,7 +97,7 @@ class PluginStoreResource extends Resource
,
])
,
- Tables\Actions\Action::make("install")
+ Action::make("install")
->label(function(PluginStore $record) {
if ($record->hasNewVersion()) {
return sprintf('%s(new: %s)', nexus_trans("plugin.actions.update"), $record->version);
@@ -102,10 +106,10 @@ class PluginStoreResource extends Resource
})
->modalHeading(fn (PluginStore $record) => sprintf("%s: %s", nexus_trans("plugin.actions.install_or_update"), data_get($record, self::getColumnLabelKey("title"))))
->modalContent(function (PluginStore $record) {
- $infolist = new Infolist();
+ $infolist = new Schema();
$infolist->record = $record;
- $infolist->schema([
- Infolists\Components\TextEntry::make('plugin_id')
+ $infolist->components([
+ TextEntry::make('plugin_id')
->label(fn () => nexus_trans("plugin.labels.install_title", ['web_root' => base_path()]))
->html(true)
->formatStateUsing(function (PluginStore $record) {
@@ -155,7 +159,7 @@ class PluginStoreResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListPluginStores::route('/'),
+ 'index' => ListPluginStores::route('/'),
// 'create' => Pages\CreatePluginStore::route('/create'),
// 'edit' => Pages\EditPluginStore::route('/{record}/edit'),
];
diff --git a/app/Filament/Resources/System/PluginStoreResource/Pages/EditPluginStore.php b/app/Filament/Resources/System/PluginStoreResource/Pages/EditPluginStore.php
index ca9140e8..d31307b3 100644
--- a/app/Filament/Resources/System/PluginStoreResource/Pages/EditPluginStore.php
+++ b/app/Filament/Resources/System/PluginStoreResource/Pages/EditPluginStore.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\PluginStoreResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\System\PluginStoreResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditPluginStore extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/SeedBoxRecordResource.php b/app/Filament/Resources/System/SeedBoxRecordResource.php
index 8b82e319..34689d04 100644
--- a/app/Filament/Resources/System/SeedBoxRecordResource.php
+++ b/app/Filament/Resources/System/SeedBoxRecordResource.php
@@ -2,6 +2,23 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Toggle;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Exception;
+use Filament\Tables\Columns\IconColumn;
+use Filament\Tables\Columns\BadgeColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\EditAction;
+use Filament\Actions\Action;
+use Filament\Forms\Components\Radio;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\SeedBoxRecordResource\Pages\ListSeedBoxRecords;
+use App\Filament\Resources\System\SeedBoxRecordResource\Pages\CreateSeedBoxRecord;
+use App\Filament\Resources\System\SeedBoxRecordResource\Pages\EditSeedBoxRecord;
use App\Filament\OptionsTrait;
use App\Filament\Resources\System\SeedBoxRecordResource\Pages;
use App\Filament\Resources\System\SeedBoxRecordResource\RelationManagers;
@@ -10,7 +27,6 @@ use App\Models\SeedBoxRecord;
use App\Repositories\SeedBoxRepository;
use Filament\Facades\Filament;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -25,9 +41,9 @@ class SeedBoxRecordResource extends Resource
protected static ?string $model = SeedBoxRecord::class;
- protected static ?string $navigationIcon = 'heroicon-o-archive-box';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-archive-box';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 8;
@@ -41,21 +57,21 @@ class SeedBoxRecordResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('operator')->label(__('label.seed_box_record.operator')),
- Forms\Components\TextInput::make('bandwidth')->label(__('label.seed_box_record.bandwidth'))->integer(),
- Forms\Components\TextInput::make('asn')->label(__('label.seed_box_record.asn'))->integer(),
+ return $schema
+ ->components([
+ TextInput::make('operator')->label(__('label.seed_box_record.operator')),
+ TextInput::make('bandwidth')->label(__('label.seed_box_record.bandwidth'))->integer(),
+ TextInput::make('asn')->label(__('label.seed_box_record.asn'))->integer(),
// Forms\Components\TextInput::make('ip_begin')->label(__('label.seed_box_record.ip_begin')),
// Forms\Components\TextInput::make('ip_end')->label(__('label.seed_box_record.ip_end')),
- Forms\Components\TextInput::make('ip')->label(__('label.seed_box_record.ip'))->helperText(__('label.seed_box_record.ip_help')),
- Forms\Components\Toggle::make('is_allowed')
+ TextInput::make('ip')->label(__('label.seed_box_record.ip'))->helperText(__('label.seed_box_record.ip_help')),
+ Toggle::make('is_allowed')
->label(__('label.seed_box_record.is_allowed'))
->helperText(__('label.seed_box_record.is_allowed_help'))
,
- Forms\Components\Textarea::make('comment')->label(__('label.comment')),
+ Textarea::make('comment')->label(__('label.comment')),
])->columns(1);
}
@@ -63,18 +79,18 @@ class SeedBoxRecordResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('typeText')->label(__('label.seed_box_record.type')),
- Tables\Columns\TextColumn::make('uid')->searchable(),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('id'),
+ TextColumn::make('typeText')->label(__('label.seed_box_record.type')),
+ TextColumn::make('uid')->searchable(),
+ TextColumn::make('user.username')
->label(__('label.username'))
->searchable()
->formatStateUsing(fn ($record) => username_for_admin($record->uid))
,
- Tables\Columns\TextColumn::make('operator')->label(__('label.seed_box_record.operator'))->searchable(),
- Tables\Columns\TextColumn::make('bandwidth')->label(__('label.seed_box_record.bandwidth')),
- Tables\Columns\TextColumn::make('asn')->label(__('label.seed_box_record.asn')),
- Tables\Columns\TextColumn::make('ipRange')
+ TextColumn::make('operator')->label(__('label.seed_box_record.operator'))->searchable(),
+ TextColumn::make('bandwidth')->label(__('label.seed_box_record.bandwidth')),
+ TextColumn::make('asn')->label(__('label.seed_box_record.asn')),
+ TextColumn::make('ipRange')
->label(__('label.seed_box_record.ip'))
->searchable(true, function (Builder $query, $search) {
try {
@@ -83,14 +99,14 @@ class SeedBoxRecordResource extends Resource
return $query->orWhere(function (Builder $query) use ($ipNumeric) {
return $query->where('ip_begin_numeric', '<=', $ipNumeric)->where('ip_end_numeric', '>=', $ipNumeric);
});
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log("Invalid IP: $search, error: " . $exception->getMessage());
}
})
,
- Tables\Columns\TextColumn::make('comment')->label(__('label.comment'))->searchable(),
- Tables\Columns\IconColumn::make('is_allowed')->boolean()->label(__('label.seed_box_record.is_allowed')),
- Tables\Columns\BadgeColumn::make('status')
+ TextColumn::make('comment')->label(__('label.comment'))->searchable(),
+ IconColumn::make('is_allowed')->boolean()->label(__('label.seed_box_record.is_allowed')),
+ BadgeColumn::make('status')
->colors([
'success' => SeedBoxRecord::STATUS_ALLOWED,
'warning' => SeedBoxRecord::STATUS_UNAUDITED,
@@ -101,9 +117,9 @@ class SeedBoxRecordResource extends Resource
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('id')
- ->form([
- Forms\Components\TextInput::make('id')
+ Filter::make('id')
+ ->schema([
+ TextInput::make('id')
->label('ID')
->placeholder('ID')
,
@@ -111,9 +127,9 @@ class SeedBoxRecordResource extends Resource
return $query->when($data['id'], fn (Builder $query, $id) => $query->where("id", $id));
})
,
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label('UID')
->placeholder('UID')
,
@@ -121,26 +137,26 @@ class SeedBoxRecordResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $uid) => $query->where("uid", $uid));
})
,
- Tables\Filters\SelectFilter::make('type')->options(SeedBoxRecord::listTypes('text'))->label(__('label.seed_box_record.type')),
- Tables\Filters\SelectFilter::make('is_allowed')->options(self::getYesNoOptions())->label(__('label.seed_box_record.is_allowed')),
- Tables\Filters\SelectFilter::make('status')->options(SeedBoxRecord::listStatus('text'))->label(__('label.seed_box_record.status')),
+ SelectFilter::make('type')->options(SeedBoxRecord::listTypes('text'))->label(__('label.seed_box_record.type')),
+ SelectFilter::make('is_allowed')->options(self::getYesNoOptions())->label(__('label.seed_box_record.is_allowed')),
+ SelectFilter::make('status')->options(SeedBoxRecord::listStatus('text'))->label(__('label.seed_box_record.status')),
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\Action::make('audit')
+ ->recordActions([
+ EditAction::make(),
+ Action::make('audit')
->label(__('admin.resources.seed_box_record.toggle_status'))
- ->mountUsing(fn (Forms\ComponentContainer $form, NexusModel $record) => $form->fill([
+ ->mountUsing(fn (Schema $schema, NexusModel $record) => $schema->fill([
'status' => $record->status,
]))
- ->form([
- Forms\Components\Radio::make('status')
+ ->schema([
+ Radio::make('status')
->options(SeedBoxRecord::listStatus('text'))
->inline()
->label(__('label.seed_box_record.status'))
->required()
,
- Forms\Components\TextInput::make('reason')
+ TextInput::make('reason')
->label(__('label.reason'))
,
])
@@ -148,14 +164,14 @@ class SeedBoxRecordResource extends Resource
$rep = new SeedBoxRepository();
try {
$rep->updateStatus($record, $data['status'], $data['reason']);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification(class_basename($exception));
}
})
,
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
@@ -169,9 +185,9 @@ class SeedBoxRecordResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListSeedBoxRecords::route('/'),
- 'create' => Pages\CreateSeedBoxRecord::route('/create'),
- 'edit' => Pages\EditSeedBoxRecord::route('/{record}/edit'),
+ 'index' => ListSeedBoxRecords::route('/'),
+ 'create' => CreateSeedBoxRecord::route('/create'),
+ 'edit' => EditSeedBoxRecord::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/System/SeedBoxRecordResource/Pages/CreateSeedBoxRecord.php b/app/Filament/Resources/System/SeedBoxRecordResource/Pages/CreateSeedBoxRecord.php
index 33be0343..c48d559a 100644
--- a/app/Filament/Resources/System/SeedBoxRecordResource/Pages/CreateSeedBoxRecord.php
+++ b/app/Filament/Resources/System/SeedBoxRecordResource/Pages/CreateSeedBoxRecord.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\SeedBoxRecordResource\Pages;
+use Exception;
use App\Filament\Resources\System\SeedBoxRecordResource;
use App\Models\SeedBoxRecord;
use App\Repositories\SeedBoxRepository;
@@ -33,7 +34,7 @@ class CreateSeedBoxRecord extends CreateRecord
return;
}
$this->redirect($this->getResource()::getUrl('index'));
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
}
diff --git a/app/Filament/Resources/System/SeedBoxRecordResource/Pages/EditSeedBoxRecord.php b/app/Filament/Resources/System/SeedBoxRecordResource/Pages/EditSeedBoxRecord.php
index de4a958a..74fed110 100644
--- a/app/Filament/Resources/System/SeedBoxRecordResource/Pages/EditSeedBoxRecord.php
+++ b/app/Filament/Resources/System/SeedBoxRecordResource/Pages/EditSeedBoxRecord.php
@@ -2,6 +2,8 @@
namespace App\Filament\Resources\System\SeedBoxRecordResource\Pages;
+use Filament\Actions\DeleteAction;
+use Exception;
use App\Filament\Resources\System\SeedBoxRecordResource;
use App\Repositories\SeedBoxRepository;
use Filament\Pages\Actions;
@@ -14,7 +16,7 @@ class EditSeedBoxRecord extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
@@ -26,7 +28,7 @@ class EditSeedBoxRecord extends EditRecord
$this->record = $rep->update($data, $this->record->id);
send_admin_success_notification();
$this->redirect($this->getResource()::getUrl('index'));
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
}
diff --git a/app/Filament/Resources/System/SeedBoxRecordResource/Pages/ListSeedBoxRecords.php b/app/Filament/Resources/System/SeedBoxRecordResource/Pages/ListSeedBoxRecords.php
index e709a9b8..2c7c9850 100644
--- a/app/Filament/Resources/System/SeedBoxRecordResource/Pages/ListSeedBoxRecords.php
+++ b/app/Filament/Resources/System/SeedBoxRecordResource/Pages/ListSeedBoxRecords.php
@@ -2,6 +2,9 @@
namespace App\Filament\Resources\System\SeedBoxRecordResource\Pages;
+use Filament\Actions\CreateAction;
+use Filament\Actions\Action;
+use Filament\Forms\Components\TextInput;
use App\Filament\PageList;
use App\Filament\Resources\System\SeedBoxRecordResource;
use App\Repositories\SeedBoxRepository;
@@ -18,12 +21,12 @@ class ListSeedBoxRecords extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
- Actions\Action::make('check')
+ CreateAction::make(),
+ Action::make('check')
->label(__('admin.resources.seed_box_record.check_modal_btn'))
- ->form([
- Forms\Components\TextInput::make('ip')->required()->label('IP'),
- Forms\Components\TextInput::make('uid')->required()->label('UID'),
+ ->schema([
+ TextInput::make('ip')->required()->label('IP'),
+ TextInput::make('uid')->required()->label('UID'),
])
->modalHeading(__('admin.resources.seed_box_record.check_modal_header'))
->action(function (array $data) {
@@ -38,7 +41,7 @@ class ListSeedBoxRecords extends PageList
// }
})
->registerModalActions([
- Actions\Action::make('checkResult')
+ Action::make('checkResult')
->modalHeading(function () {
if (self::$checkResult !== null) {
if (self::$checkResult['result']) {
diff --git a/app/Filament/Resources/System/SettingResource.php b/app/Filament/Resources/System/SettingResource.php
index 8022a8a4..c2ca76d1 100644
--- a/app/Filament/Resources/System/SettingResource.php
+++ b/app/Filament/Resources/System/SettingResource.php
@@ -2,12 +2,19 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\BadgeColumn;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\EditAction;
+use App\Filament\Resources\System\SettingResource\Pages\EditSetting;
use App\Filament\OptionsTrait;
use App\Filament\Resources\System\SettingResource\Pages;
use App\Filament\Resources\System\SettingResource\RelationManagers;
use App\Models\Setting;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -20,9 +27,9 @@ class SettingResource extends Resource
protected static ?string $model = Setting::class;
- protected static ?string $navigationIcon = 'heroicon-o-cog';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-cog';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 1000;
@@ -37,13 +44,13 @@ class SettingResource extends Resource
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->required()->disabled()->columnSpan(['sm' => 2]),
- Forms\Components\Textarea::make('value')->required()->columnSpan(['sm' => 2])
- ->afterStateHydrated(function (Forms\Components\Textarea $component, $state) {
+ return $schema
+ ->components([
+ TextInput::make('name')->required()->disabled()->columnSpan(['sm' => 2]),
+ Textarea::make('value')->required()->columnSpan(['sm' => 2])
+ ->afterStateHydrated(function (Textarea $component, $state) {
$arr = json_decode($state, true);
if (is_array($arr)) {
$component->disabled();
@@ -56,19 +63,19 @@ class SettingResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->searchable(),
- Tables\Columns\TextColumn::make('value')->limit(),
- Tables\Columns\BadgeColumn::make('autoload')->colors(['success' => 'yes', 'warning' => 'no']),
- Tables\Columns\TextColumn::make('updated_at'),
+ TextColumn::make('id'),
+ TextColumn::make('name')->searchable(),
+ TextColumn::make('value')->limit(),
+ BadgeColumn::make('autoload')->colors(['success' => 'yes', 'warning' => 'no']),
+ TextColumn::make('updated_at'),
])
->filters([
- Tables\Filters\SelectFilter::make('autoload')->options(self::$yesOrNo),
+ SelectFilter::make('autoload')->options(self::$yesOrNo),
])
- ->actions([
- Tables\Actions\EditAction::make(),
+ ->recordActions([
+ EditAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -85,7 +92,7 @@ class SettingResource extends Resource
return [
// 'index' => Pages\ListSettings::route('/'),
// 'create' => Pages\CreateSetting::route('/create'),
- 'index' => Pages\EditSetting::route('/'),
+ 'index' => EditSetting::route('/'),
];
}
}
diff --git a/app/Filament/Resources/System/SettingResource/Pages/EditSetting.php b/app/Filament/Resources/System/SettingResource/Pages/EditSetting.php
index d2bebdf8..c2068ebc 100644
--- a/app/Filament/Resources/System/SettingResource/Pages/EditSetting.php
+++ b/app/Filament/Resources/System/SettingResource/Pages/EditSetting.php
@@ -2,6 +2,17 @@
namespace App\Filament\Resources\System\SettingResource\Pages;
+use Filament\Forms\Contracts\HasForms;
+use Filament\Forms\Concerns\InteractsWithForms;
+use Filament\Schemas\Schema;
+use Filament\Schemas\Components\Tabs;
+use Filament\Schemas\Components\Tabs\Tab;
+use Filament\Forms\Components\Radio;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\CheckboxList;
+use Filament\Forms\Components\Repeater;
+use Filament\Schemas\Components\Section;
use App\Auth\Permission;
use App\Filament\OptionsTrait;
use App\Filament\Resources\System\SettingResource;
@@ -20,13 +31,13 @@ use Illuminate\Support\HtmlString;
use Meilisearch\Contracts\Index\Settings;
use Nexus\Database\NexusDB;
-class EditSetting extends Page implements Forms\Contracts\HasForms
+class EditSetting extends Page implements HasForms
{
- use Forms\Concerns\InteractsWithForms, OptionsTrait;
+ use InteractsWithForms, OptionsTrait;
protected static string $resource = SettingResource::class;
- protected static string $view = 'filament.resources.system.setting-resource.pages.edit-hit-and-run';
+ protected string $view = 'filament.resources.system.setting-resource.pages.edit-hit-and-run';
public ?array $data = [];
@@ -41,10 +52,10 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
$this->fillForm();
}
- public function form(Forms\Form $form): Forms\Form
+ public function form(Schema $schema): Schema
{
- return $form
- ->schema($this->getFormSchema())
+ return $schema
+ ->components($this->getFormSchema())
->statePath('data');
}
@@ -59,7 +70,7 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
protected function getFormSchema(): array
{
return [
- Forms\Components\Tabs::make('Heading')
+ Tabs::make('Heading')
->tabs($this->getTabs())
];
}
@@ -109,7 +120,7 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
private function getTabs(): array
{
$tabs = [];
- $tabs[] = Forms\Components\Tabs\Tab::make(__('label.setting.hr.tab_header'))
+ $tabs[] = Tab::make(__('label.setting.hr.tab_header'))
->id('hr')
->schema($this->getHitAndRunSchema())
->columns(2)
@@ -120,102 +131,102 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
// ->columns(2)
// ;
- $tabs[] = Forms\Components\Tabs\Tab::make(__('label.setting.backup.tab_header'))
+ $tabs[] = Tab::make(__('label.setting.backup.tab_header'))
->id('backup')
->schema([
- Forms\Components\Radio::make('backup.enabled')->options(self::$yesOrNo)->inline(true)->label(__('label.enabled'))->helperText(__('label.setting.backup.enabled_help')),
- Forms\Components\Radio::make('backup.frequency')->options(['daily' => 'daily', 'hourly' => 'hourly'])->inline(true)->label(__('label.setting.backup.frequency'))->helperText(__('label.setting.backup.frequency_help')),
- Forms\Components\Select::make('backup.hour')->options(range(0, 23))->label(__('label.setting.backup.hour'))->helperText(__('label.setting.backup.hour_help')),
- Forms\Components\Select::make('backup.minute')->options(range(0, 59))->label(__('label.setting.backup.minute'))->helperText(__('label.setting.backup.minute_help')),
+ Radio::make('backup.enabled')->options(self::$yesOrNo)->inline(true)->label(__('label.enabled'))->helperText(__('label.setting.backup.enabled_help')),
+ Radio::make('backup.frequency')->options(['daily' => 'daily', 'hourly' => 'hourly'])->inline(true)->label(__('label.setting.backup.frequency'))->helperText(__('label.setting.backup.frequency_help')),
+ Select::make('backup.hour')->options(range(0, 23))->label(__('label.setting.backup.hour'))->helperText(__('label.setting.backup.hour_help')),
+ Select::make('backup.minute')->options(range(0, 59))->label(__('label.setting.backup.minute'))->helperText(__('label.setting.backup.minute_help')),
// Forms\Components\TextInput::make('backup.google_drive_client_id')->label(__('label.setting.backup.google_drive_client_id')),
// Forms\Components\TextInput::make('backup.google_drive_client_secret')->label(__('label.setting.backup.google_drive_client_secret')),
// Forms\Components\TextInput::make('backup.google_drive_refresh_token')->label(__('label.setting.backup.google_drive_refresh_token')),
// Forms\Components\TextInput::make('backup.google_drive_folder_id')->label(__('label.setting.backup.google_drive_folder_id')),
- Forms\Components\TextInput::make('backup.export_path')->label(__('label.setting.backup.export_path'))->helperText(new HtmlString(__('label.setting.backup.export_path_help', ['default_path' => ToolRepository::getBackupExportPathDefault()]))),
- Forms\Components\TextInput::make('backup.retention_count')->numeric()->label(__('label.setting.backup.retention_count'))->helperText(new HtmlString(__('label.setting.backup.retention_count_help', ['default_count' => ToolRepository::BACKUP_RETENTION_COUNT_DEFAULT]))),
- Forms\Components\Radio::make('backup.via_ftp')->options(self::$yesOrNo)->inline(true)->label(__('label.setting.backup.via_ftp'))->helperText(new HtmlString(__('label.setting.backup.via_ftp_help'))),
- Forms\Components\Radio::make('backup.via_sftp')->options(self::$yesOrNo)->inline(true)->label(__('label.setting.backup.via_sftp'))->helperText(new HtmlString(__('label.setting.backup.via_sftp_help'))),
+ TextInput::make('backup.export_path')->label(__('label.setting.backup.export_path'))->helperText(new HtmlString(__('label.setting.backup.export_path_help', ['default_path' => ToolRepository::getBackupExportPathDefault()]))),
+ TextInput::make('backup.retention_count')->numeric()->label(__('label.setting.backup.retention_count'))->helperText(new HtmlString(__('label.setting.backup.retention_count_help', ['default_count' => ToolRepository::BACKUP_RETENTION_COUNT_DEFAULT]))),
+ Radio::make('backup.via_ftp')->options(self::$yesOrNo)->inline(true)->label(__('label.setting.backup.via_ftp'))->helperText(new HtmlString(__('label.setting.backup.via_ftp_help'))),
+ Radio::make('backup.via_sftp')->options(self::$yesOrNo)->inline(true)->label(__('label.setting.backup.via_sftp'))->helperText(new HtmlString(__('label.setting.backup.via_sftp_help'))),
])->columns(2);
- $tabs[] = Forms\Components\Tabs\Tab::make(__('label.setting.seed_box.tab_header'))
+ $tabs[] = Tab::make(__('label.setting.seed_box.tab_header'))
->id('seed_box')
->schema([
- Forms\Components\Radio::make('seed_box.enabled')->options(self::$yesOrNo)->inline(true)->label(__('label.enabled'))->helperText(__('label.setting.seed_box.enabled_help')),
- Forms\Components\TextInput::make('seed_box.not_seed_box_max_speed')->label(__('label.setting.seed_box.not_seed_box_max_speed'))->helperText(__('label.setting.seed_box.not_seed_box_max_speed_help'))->integer(),
- Forms\Components\Radio::make('seed_box.no_promotion')->options(self::$yesOrNo)->inline(true)->label(__('label.setting.seed_box.no_promotion'))->helperText(__('label.setting.seed_box.no_promotion_help')),
- Forms\Components\TextInput::make('seed_box.max_uploaded')->label(__('label.setting.seed_box.max_uploaded'))->helperText(__('label.setting.seed_box.max_uploaded_help'))->integer(),
- Forms\Components\TextInput::make('seed_box.max_uploaded_duration')->label(__('label.setting.seed_box.max_uploaded_duration'))->helperText(__('label.setting.seed_box.max_uploaded_duration_help'))->integer(),
+ Radio::make('seed_box.enabled')->options(self::$yesOrNo)->inline(true)->label(__('label.enabled'))->helperText(__('label.setting.seed_box.enabled_help')),
+ TextInput::make('seed_box.not_seed_box_max_speed')->label(__('label.setting.seed_box.not_seed_box_max_speed'))->helperText(__('label.setting.seed_box.not_seed_box_max_speed_help'))->integer(),
+ Radio::make('seed_box.no_promotion')->options(self::$yesOrNo)->inline(true)->label(__('label.setting.seed_box.no_promotion'))->helperText(__('label.setting.seed_box.no_promotion_help')),
+ TextInput::make('seed_box.max_uploaded')->label(__('label.setting.seed_box.max_uploaded'))->helperText(__('label.setting.seed_box.max_uploaded_help'))->integer(),
+ TextInput::make('seed_box.max_uploaded_duration')->label(__('label.setting.seed_box.max_uploaded_duration'))->helperText(__('label.setting.seed_box.max_uploaded_duration_help'))->integer(),
])->columns(2);
$id = "meilisearch";
- $tabs[] = Forms\Components\Tabs\Tab::make(__("label.setting.$id.tab_header"))
+ $tabs[] = Tab::make(__("label.setting.$id.tab_header"))
->id($id)
->schema($this->getTabMeilisearchSchema($id))
->columns(2)
;
$id = "image_hosting";
- $tabs[] = Forms\Components\Tabs\Tab::make(__("label.setting.$id.tab_header"))
+ $tabs[] = Tab::make(__("label.setting.$id.tab_header"))
->id($id)
->schema($this->getTabImageHostingSchema($id))
->columns(2)
;
$id = "permission";
- $tabs[] = Forms\Components\Tabs\Tab::make(__("label.setting.$id.tab_header"))
+ $tabs[] = Tab::make(__("label.setting.$id.tab_header"))
->id($id)
->schema($this->getTabPermissionSchema($id))
->columns(2)
;
- $tabs[] = Forms\Components\Tabs\Tab::make(__('label.setting.system.tab_header'))
+ $tabs[] = Tab::make(__('label.setting.system.tab_header'))
->id('system')
->schema([
- Forms\Components\Radio::make('system.change_username_card_allow_characters_outside_the_alphabets')
+ Radio::make('system.change_username_card_allow_characters_outside_the_alphabets')
->options(self::$yesOrNo)
->inline(true)
->label(__('label.setting.system.change_username_card_allow_characters_outside_the_alphabets'))
,
- Forms\Components\TextInput::make('system.change_username_min_interval_in_days')
+ TextInput::make('system.change_username_min_interval_in_days')
->integer()
->label(__('label.setting.system.change_username_min_interval_in_days'))
,
- Forms\Components\TextInput::make('system.maximum_number_of_medals_can_be_worn')
+ TextInput::make('system.maximum_number_of_medals_can_be_worn')
->integer()
->label(__('label.setting.system.maximum_number_of_medals_can_be_worn'))
,
- Forms\Components\TextInput::make('system.cookie_valid_days')
+ TextInput::make('system.cookie_valid_days')
->integer()
->label(__('label.setting.system.cookie_valid_days'))
,
- Forms\Components\TextInput::make('system.maximum_upload_speed')
+ TextInput::make('system.maximum_upload_speed')
->integer()
->label(__('label.setting.system.maximum_upload_speed'))
->helperText(__('label.setting.system.maximum_upload_speed_help'))
,
- Forms\Components\Radio::make('system.is_invite_pre_email_and_username')
+ Radio::make('system.is_invite_pre_email_and_username')
->options(self::$yesOrNo)
->inline(true)
->label(__('label.setting.system.is_invite_pre_email_and_username'))
->helperText(__('label.setting.system.is_invite_pre_email_and_username_help'))
,
- Forms\Components\Radio::make('system.is_record_announce_log')
+ Radio::make('system.is_record_announce_log')
->options(self::$yesOrNo)
->inline(true)
->label(__('label.setting.system.is_record_announce_log'))
->helperText(__('label.setting.system.is_record_announce_log_help'))
,
- Forms\Components\Radio::make('system.is_record_seeding_bonus_log')
+ Radio::make('system.is_record_seeding_bonus_log')
->options(self::$yesOrNo)
->inline(true)
->label(__('label.setting.system.is_record_seeding_bonus_log'))
->helperText(__('label.setting.system.is_record_seeding_bonus_log_help'))
,
- Forms\Components\Select::make('system.access_admin_class_min')
+ Select::make('system.access_admin_class_min')
->options(User::listClass(User::CLASS_VIP))
->label(__('label.setting.system.access_admin_class_min'))
->helperText(__('label.setting.system.access_admin_class_min_help'))
,
- Forms\Components\TextInput::make('system.alarm_email_receiver')
+ TextInput::make('system.alarm_email_receiver')
->label(__('label.setting.system.alarm_email_receiver'))
->helperText(__('label.setting.system.alarm_email_receiver_help'))
,
@@ -228,13 +239,13 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
private function getHitAndRunSchema()
{
$default = [
- Forms\Components\Radio::make('hr.mode')->options(HitAndRun::listModes(true))->inline(true)->label(__('label.setting.hr.mode')),
- Forms\Components\TextInput::make('hr.inspect_time')->helperText(__('label.setting.hr.inspect_time_help'))->label(__('label.setting.hr.inspect_time'))->integer(),
- Forms\Components\TextInput::make('hr.seed_time_minimum')->helperText(__('label.setting.hr.seed_time_minimum_help'))->label(__('label.setting.hr.seed_time_minimum'))->integer(),
- Forms\Components\TextInput::make('hr.leech_time_minimum')->helperText(__('label.setting.hr.leech_time_minimum_help'))->label(__('label.setting.hr.leech_time_minimum'))->integer(),
- Forms\Components\TextInput::make('hr.ignore_when_ratio_reach')->helperText(__('label.setting.hr.ignore_when_ratio_reach_help'))->label(__('label.setting.hr.ignore_when_ratio_reach'))->integer(),
- Forms\Components\TextInput::make('hr.ban_user_when_counts_reach')->helperText(__('label.setting.hr.ban_user_when_counts_reach_help'))->label(__('label.setting.hr.ban_user_when_counts_reach'))->integer(),
- Forms\Components\TextInput::make('hr.include_rate')->helperText(__('label.setting.hr.include_rate_help'))->label(__('label.setting.hr.include_rate'))->numeric(),
+ Radio::make('hr.mode')->options(HitAndRun::listModes(true))->inline(true)->label(__('label.setting.hr.mode')),
+ TextInput::make('hr.inspect_time')->helperText(__('label.setting.hr.inspect_time_help'))->label(__('label.setting.hr.inspect_time'))->integer(),
+ TextInput::make('hr.seed_time_minimum')->helperText(__('label.setting.hr.seed_time_minimum_help'))->label(__('label.setting.hr.seed_time_minimum'))->integer(),
+ TextInput::make('hr.leech_time_minimum')->helperText(__('label.setting.hr.leech_time_minimum_help'))->label(__('label.setting.hr.leech_time_minimum'))->integer(),
+ TextInput::make('hr.ignore_when_ratio_reach')->helperText(__('label.setting.hr.ignore_when_ratio_reach_help'))->label(__('label.setting.hr.ignore_when_ratio_reach'))->integer(),
+ TextInput::make('hr.ban_user_when_counts_reach')->helperText(__('label.setting.hr.ban_user_when_counts_reach_help'))->label(__('label.setting.hr.ban_user_when_counts_reach'))->integer(),
+ TextInput::make('hr.include_rate')->helperText(__('label.setting.hr.include_rate_help'))->label(__('label.setting.hr.include_rate'))->numeric(),
];
return apply_filter("hit_and_run_setting_schema", $default);
}
@@ -242,42 +253,42 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
private function getRequireSeedSectionSchema(): array
{
return [
- Forms\Components\Radio::make('require_seed_section.enabled')->options(self::$yesOrNo)->label(__('label.enabled'))->helperText(__('label.setting.require_seed_section.enabled_help')),
- Forms\Components\TextInput::make('require_seed_section.menu_title')->label(__('label.setting.require_seed_section.menu_title'))->helperText(__('label.setting.require_seed_section.menu_title_help')),
- Forms\Components\TextInput::make('require_seed_section.seeder_lte')->label(__('label.setting.require_seed_section.seeder_lte'))->helperText(__('label.setting.require_seed_section.seeder_lte_help'))->integer(),
- Forms\Components\TextInput::make('require_seed_section.seeder_gte')->label(__('label.setting.require_seed_section.seeder_gte'))->helperText(__('label.setting.require_seed_section.seeder_gte_help'))->integer(),
- Forms\Components\CheckboxList::make('require_seed_section.require_tags')->label(__('label.setting.require_seed_section.require_tags'))->helperText(__('label.setting.require_seed_section.require_tags_help'))->options(Tag::query()->pluck('name', 'id'))->columns(4),
- Forms\Components\Select::make('require_seed_section.promotion_state')->label(__('label.setting.require_seed_section.promotion_state'))->helperText(__('label.setting.require_seed_section.promotion_state_help'))->options(Torrent::listPromotionTypes(true)),
- Forms\Components\TextInput::make('require_seed_section.daily_seed_time_min')->label(__('label.setting.require_seed_section.daily_seed_time_min'))->helperText(__('label.setting.require_seed_section.daily_seed_time_min_help'))->integer(),
- Forms\Components\TextInput::make('require_seed_section.torrent_count_max')->label(__('label.setting.require_seed_section.torrent_count_max'))->helperText(__('label.setting.require_seed_section.torrent_count_max_help'))->integer(),
- Forms\Components\Repeater::make('require_seed_section.bonus_reward')
+ Radio::make('require_seed_section.enabled')->options(self::$yesOrNo)->label(__('label.enabled'))->helperText(__('label.setting.require_seed_section.enabled_help')),
+ TextInput::make('require_seed_section.menu_title')->label(__('label.setting.require_seed_section.menu_title'))->helperText(__('label.setting.require_seed_section.menu_title_help')),
+ TextInput::make('require_seed_section.seeder_lte')->label(__('label.setting.require_seed_section.seeder_lte'))->helperText(__('label.setting.require_seed_section.seeder_lte_help'))->integer(),
+ TextInput::make('require_seed_section.seeder_gte')->label(__('label.setting.require_seed_section.seeder_gte'))->helperText(__('label.setting.require_seed_section.seeder_gte_help'))->integer(),
+ CheckboxList::make('require_seed_section.require_tags')->label(__('label.setting.require_seed_section.require_tags'))->helperText(__('label.setting.require_seed_section.require_tags_help'))->options(Tag::query()->pluck('name', 'id'))->columns(4),
+ Select::make('require_seed_section.promotion_state')->label(__('label.setting.require_seed_section.promotion_state'))->helperText(__('label.setting.require_seed_section.promotion_state_help'))->options(Torrent::listPromotionTypes(true)),
+ TextInput::make('require_seed_section.daily_seed_time_min')->label(__('label.setting.require_seed_section.daily_seed_time_min'))->helperText(__('label.setting.require_seed_section.daily_seed_time_min_help'))->integer(),
+ TextInput::make('require_seed_section.torrent_count_max')->label(__('label.setting.require_seed_section.torrent_count_max'))->helperText(__('label.setting.require_seed_section.torrent_count_max_help'))->integer(),
+ Repeater::make('require_seed_section.bonus_reward')
->label(__('label.setting.require_seed_section.bonus_reward'))
->helperText(__('label.setting.require_seed_section.bonus_reward_help'))
->schema([
- Forms\Components\TextInput::make('seeders')
+ TextInput::make('seeders')
->label(__('label.setting.require_seed_section.seeders'))
->required()
->integer()
->columnSpan(2)
,
- Forms\Components\Repeater::make('seed_time_reward')
+ Repeater::make('seed_time_reward')
->label(__('label.setting.require_seed_section.seed_time_reward'))
->schema([
- Forms\Components\TextInput::make('begin')->label(__('label.setting.require_seed_section.seed_time_reward_begin'))->helperText(__('label.setting.require_seed_section.seed_time_reward_begin_help')),
- Forms\Components\TextInput::make('end')->label(__('label.setting.require_seed_section.seed_time_reward_end'))->helperText(__('label.setting.require_seed_section.seed_time_reward_end_help')),
- Forms\Components\TextInput::make('window')->label(__('label.setting.require_seed_section.seed_time_reward_window'))->helperText(__('label.setting.require_seed_section.seed_time_reward_window_help')),
- Forms\Components\TextInput::make('reward')->label(__('label.setting.require_seed_section.seed_time_reward_reward'))->helperText(__('label.setting.require_seed_section.seed_time_reward_reward_help')),
+ TextInput::make('begin')->label(__('label.setting.require_seed_section.seed_time_reward_begin'))->helperText(__('label.setting.require_seed_section.seed_time_reward_begin_help')),
+ TextInput::make('end')->label(__('label.setting.require_seed_section.seed_time_reward_end'))->helperText(__('label.setting.require_seed_section.seed_time_reward_end_help')),
+ TextInput::make('window')->label(__('label.setting.require_seed_section.seed_time_reward_window'))->helperText(__('label.setting.require_seed_section.seed_time_reward_window_help')),
+ TextInput::make('reward')->label(__('label.setting.require_seed_section.seed_time_reward_reward'))->helperText(__('label.setting.require_seed_section.seed_time_reward_reward_help')),
])
->columns(4)
->columnSpan(5)
,
- Forms\Components\Repeater::make('data_traffic_reward')
+ Repeater::make('data_traffic_reward')
->label(__('label.setting.require_seed_section.data_traffic_reward'))
->schema([
- Forms\Components\TextInput::make('begin')->label(__('label.setting.require_seed_section.data_traffic_reward_begin'))->helperText(__('label.setting.require_seed_section.data_traffic_reward_begin_help')),
- Forms\Components\TextInput::make('end')->label(__('label.setting.require_seed_section.data_traffic_reward_end'))->helperText(__('label.setting.require_seed_section.data_traffic_reward_end_help')),
- Forms\Components\TextInput::make('window')->label(__('label.setting.require_seed_section.data_traffic_reward_window'))->helperText(__('label.setting.require_seed_section.data_traffic_reward_window_help')),
- Forms\Components\TextInput::make('reward')->label(__('label.setting.require_seed_section.data_traffic_reward_reward'))->helperText(__('label.setting.require_seed_section.data_traffic_reward_reward_help')),
+ TextInput::make('begin')->label(__('label.setting.require_seed_section.data_traffic_reward_begin'))->helperText(__('label.setting.require_seed_section.data_traffic_reward_begin_help')),
+ TextInput::make('end')->label(__('label.setting.require_seed_section.data_traffic_reward_end'))->helperText(__('label.setting.require_seed_section.data_traffic_reward_end_help')),
+ TextInput::make('window')->label(__('label.setting.require_seed_section.data_traffic_reward_window'))->helperText(__('label.setting.require_seed_section.data_traffic_reward_window_help')),
+ TextInput::make('reward')->label(__('label.setting.require_seed_section.data_traffic_reward_reward'))->helperText(__('label.setting.require_seed_section.data_traffic_reward_reward_help')),
])
->columns(4)
->columnSpan(5)
@@ -294,7 +305,7 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
$schema = [];
$name = "$id.enabled";
- $schema[] = Forms\Components\Radio::make($name)
+ $schema[] = Radio::make($name)
->options(self::$yesOrNo)
->inline(true)
->label(__('label.enabled'))
@@ -302,7 +313,7 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
;
$name = "$id.search_description";
- $schema[] = Forms\Components\Radio::make($name)
+ $schema[] = Radio::make($name)
->options(self::$yesOrNo)
->inline(true)
->label(__("label.setting.$name"))
@@ -310,7 +321,7 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
;
$name = "$id.default_search_mode";
- $schema[] = Forms\Components\Radio::make($name)
+ $schema[] = Radio::make($name)
->options(SearchBox::listSearchModes())
->inline(true)
->label(__("label.setting.$name"))
@@ -324,7 +335,7 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
{
$schema = [];
$name = "$id.driver";
- $schema[] = Forms\Components\Radio::make($name)
+ $schema[] = Radio::make($name)
->options(['local' => 'local', 'chevereto' => 'chevereto', 'lsky' => 'lsky'])
->inline(true)
->label(__("label.setting.$name"))
@@ -337,19 +348,19 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
$driverId = sprintf("%s_%s", $id, $driverName);
$driverSchemas = [];
$field = "upload_api_endpoint";
- $driverSchemas[] = Forms\Components\TextInput::make("$driverId.$field")
+ $driverSchemas[] = TextInput::make("$driverId.$field")
->label(__("label.setting.$id.$field"))
;
$field = "upload_token";
- $driverSchemas[] = Forms\Components\TextInput::make("$driverId.$field")
+ $driverSchemas[] = TextInput::make("$driverId.$field")
->label(__("label.setting.$id.$field"))
;
$field = "base_url";
- $driverSchemas[] = Forms\Components\TextInput::make("$driverId.$field")
+ $driverSchemas[] = TextInput::make("$driverId.$field")
->label(__("label.setting.$id.$field"))
;
- $driverSection = Forms\Components\Section::make($driverName)->schema($driverSchemas);
+ $driverSection = Section::make($driverName)->schema($driverSchemas);
$schema[] = $driverSection;
//lsky
@@ -357,18 +368,18 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
$driverId = sprintf("%s_%s", $id, $driverName);
$driverSchemas = [];
$field = "upload_api_endpoint";
- $driverSchemas[] = Forms\Components\TextInput::make("$driverId.$field")
+ $driverSchemas[] = TextInput::make("$driverId.$field")
->label(__("label.setting.$id.$field"))
;
$field = "upload_token";
- $driverSchemas[] = Forms\Components\TextInput::make("$driverId.$field")
+ $driverSchemas[] = TextInput::make("$driverId.$field")
->label(__("label.setting.$id.$field"))
;
$field = "base_url";
- $driverSchemas[] = Forms\Components\TextInput::make("$driverId.$field")
+ $driverSchemas[] = TextInput::make("$driverId.$field")
->label(__("label.setting.$id.$field"))
;
- $driverSection = Forms\Components\Section::make($driverName)->schema($driverSchemas);
+ $driverSection = Section::make($driverName)->schema($driverSchemas);
$schema[] = $driverSection;
@@ -380,7 +391,7 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
$schema = [];
$name = "$id.user_token_allowed";
- $schema[] = Forms\Components\CheckboxList::make($name)
+ $schema[] = CheckboxList::make($name)
->options(TokenRepository::listUserTokenPermissions())
->label(__("label.setting.{$name}"))
->helperText(__("label.setting.{$name}_help"))
diff --git a/app/Filament/Resources/System/TorrentStateResource.php b/app/Filament/Resources/System/TorrentStateResource.php
index fb8c3c91..c9acdbf3 100644
--- a/app/Filament/Resources/System/TorrentStateResource.php
+++ b/app/Filament/Resources/System/TorrentStateResource.php
@@ -2,13 +2,18 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use App\Filament\Resources\System\TorrentStateResource\Pages\ManageTorrentStates;
use App\Filament\Resources\System\TorrentStateResource\Pages;
use App\Filament\Resources\System\TorrentStateResource\RelationManagers;
use App\Models\Setting;
use App\Models\Torrent;
use App\Models\TorrentState;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -20,9 +25,9 @@ class TorrentStateResource extends Resource
{
protected static ?string $model = TorrentState::class;
- protected static ?string $navigationIcon = 'heroicon-o-megaphone';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-megaphone';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 9;
@@ -36,17 +41,17 @@ class TorrentStateResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\Select::make('global_sp_state')
+ return $schema
+ ->components([
+ Select::make('global_sp_state')
->options(Torrent::listPromotionTypes(true))
->label(__('label.torrent_state.global_sp_state'))
->required(),
- Forms\Components\DateTimePicker::make('begin')
+ DateTimePicker::make('begin')
->label(__('label.begin')),
- Forms\Components\DateTimePicker::make('deadline')
+ DateTimePicker::make('deadline')
->label(__('label.deadline')),
])->columns(1);
}
@@ -55,15 +60,15 @@ class TorrentStateResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('global_sp_state_text')->label(__('label.torrent_state.global_sp_state')),
- Tables\Columns\TextColumn::make('begin')->label(__('label.begin')),
- Tables\Columns\TextColumn::make('deadline')->label(__('label.deadline')),
+ TextColumn::make('global_sp_state_text')->label(__('label.torrent_state.global_sp_state')),
+ TextColumn::make('begin')->label(__('label.begin')),
+ TextColumn::make('deadline')->label(__('label.deadline')),
])
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make()->after(function () {
+ ->recordActions([
+ EditAction::make()->after(function () {
do_log("cache_del: global_promotion_state");
NexusDB::cache_del(Setting::TORRENT_GLOBAL_STATE_CACHE_KEY);
do_log("publish_model_event: global_promotion_state_updated");
@@ -71,7 +76,7 @@ class TorrentStateResource extends Resource
}),
// Tables\Actions\DeleteAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -79,7 +84,7 @@ class TorrentStateResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageTorrentStates::route('/'),
+ 'index' => ManageTorrentStates::route('/'),
];
}
}
diff --git a/app/Filament/Resources/System/TrackerUrlResource.php b/app/Filament/Resources/System/TrackerUrlResource.php
index 7b4ef1d6..77e75655 100644
--- a/app/Filament/Resources/System/TrackerUrlResource.php
+++ b/app/Filament/Resources/System/TrackerUrlResource.php
@@ -2,12 +2,21 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Radio;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\IconColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\BulkActionGroup;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\TrackerUrlResource\Pages\ManageTrackerUrls;
use App\Filament\OptionsTrait;
use App\Filament\Resources\System\TrackerUrlResource\Pages;
use App\Filament\Resources\System\TrackerUrlResource\RelationManagers;
use App\Models\TrackerUrl;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
@@ -20,9 +29,9 @@ class TrackerUrlResource extends Resource
protected static ?string $model = TrackerUrl::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 10;
@@ -36,24 +45,24 @@ class TrackerUrlResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('url')->required(),
- Forms\Components\Radio::make('is_default')
+ return $schema
+ ->components([
+ TextInput::make('url')->required(),
+ Radio::make('is_default')
->label(__('label.is_default'))
->options(self::getYesNoOptions())
->required(true)
->inline()
,
- Forms\Components\Radio::make('enabled')
+ Radio::make('enabled')
->label(__('label.enabled'))
->options(self::getEnableDisableOptions(1, 0))
->required(true)
->inline()
,
- Forms\Components\TextInput::make('priority')
+ TextInput::make('priority')
->label(__('label.priority'))->numeric()
->default(0)
->helperText(__('label.priority_help'))
@@ -74,35 +83,35 @@ class TrackerUrlResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')
+ TextColumn::make('id')
,
- Tables\Columns\TextColumn::make('url')
+ TextColumn::make('url')
,
- Tables\Columns\IconColumn::make('is_default')
+ IconColumn::make('is_default')
->label(__('label.is_default'))
->boolean()
,
- Tables\Columns\IconColumn::make('enabled')
+ IconColumn::make('enabled')
->label(__('label.enabled'))
->boolean()
,
- Tables\Columns\TextColumn::make('priority')
+ TextColumn::make('priority')
->label(__('label.priority'))
,
- Tables\Columns\TextColumn::make('updated_at')
+ TextColumn::make('updated_at')
->label(__('label.updated_at'))
,
])
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\BulkActionGroup::make([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ BulkActionGroup::make([
+ DeleteBulkAction::make(),
]),
]);
}
@@ -110,7 +119,7 @@ class TrackerUrlResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageTrackerUrls::route('/'),
+ 'index' => ManageTrackerUrls::route('/'),
];
}
}
diff --git a/app/Filament/Resources/System/TrackerUrlResource/Pages/ManageTrackerUrls.php b/app/Filament/Resources/System/TrackerUrlResource/Pages/ManageTrackerUrls.php
index 722e07ff..69cab50d 100644
--- a/app/Filament/Resources/System/TrackerUrlResource/Pages/ManageTrackerUrls.php
+++ b/app/Filament/Resources/System/TrackerUrlResource/Pages/ManageTrackerUrls.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\TrackerUrlResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageListSingle;
use App\Filament\Resources\System\TrackerUrlResource;
use Filament\Actions;
@@ -14,7 +15,7 @@ class ManageTrackerUrls extends PageListSingle
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/UploadSpeedResource.php b/app/Filament/Resources/System/UploadSpeedResource.php
index fdf486f2..4821b9a8 100644
--- a/app/Filament/Resources/System/UploadSpeedResource.php
+++ b/app/Filament/Resources/System/UploadSpeedResource.php
@@ -2,11 +2,17 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\System\UploadSpeedResource\Pages\ManageUploadSpeeds;
use App\Filament\Resources\System\UploadSpeedResource\Pages;
use App\Filament\Resources\System\UploadSpeedResource\RelationManagers;
use App\Models\UploadSpeed;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +23,9 @@ class UploadSpeedResource extends Resource
{
protected static ?string $model = UploadSpeed::class;
- protected static ?string $navigationIcon = 'heroicon-o-arrow-up-tray';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-arrow-up-tray';
- protected static ?string $navigationGroup = 'System';
+ protected static string | \UnitEnum | null $navigationGroup = 'System';
protected static ?int $navigationSort = 5;
@@ -33,11 +39,11 @@ class UploadSpeedResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->label(__('label.name'))
+ return $schema
+ ->components([
+ TextInput::make('name')->label(__('label.name'))
]);
}
@@ -45,25 +51,25 @@ class UploadSpeedResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.name')),
])
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageUploadSpeeds::route('/'),
+ 'index' => ManageUploadSpeeds::route('/'),
];
}
}
diff --git a/app/Filament/Resources/System/UploadSpeedResource/Pages/ManageUploadSpeeds.php b/app/Filament/Resources/System/UploadSpeedResource/Pages/ManageUploadSpeeds.php
index c444823b..409dcc6f 100644
--- a/app/Filament/Resources/System/UploadSpeedResource/Pages/ManageUploadSpeeds.php
+++ b/app/Filament/Resources/System/UploadSpeedResource/Pages/ManageUploadSpeeds.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\System\UploadSpeedResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\Resources\System\UploadSpeedResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\ManageRecords;
@@ -13,7 +14,7 @@ class ManageUploadSpeeds extends ManageRecords
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/System/UsernameChangeLogResource.php b/app/Filament/Resources/System/UsernameChangeLogResource.php
index 26c715b8..6c1a4aab 100644
--- a/app/Filament/Resources/System/UsernameChangeLogResource.php
+++ b/app/Filament/Resources/System/UsernameChangeLogResource.php
@@ -2,11 +2,16 @@
namespace App\Filament\Resources\System;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use App\Filament\Resources\System\UsernameChangeLogResource\Pages\ManageUsernameChangeLogs;
use App\Filament\Resources\System\UsernameChangeLogResource\Pages;
use App\Filament\Resources\System\UsernameChangeLogResource\RelationManagers;
use App\Models\UsernameChangeLog;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -18,9 +23,9 @@ class UsernameChangeLogResource extends Resource
{
protected static ?string $model = UsernameChangeLog::class;
- protected static ?string $navigationIcon = 'heroicon-o-pencil-square';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-pencil-square';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 100;
@@ -34,10 +39,10 @@ class UsernameChangeLogResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -46,28 +51,28 @@ class UsernameChangeLogResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('changeTypeText')->label(__('username-change-log.labels.change_type')),
- Tables\Columns\TextColumn::make('uid')->searchable(),
- Tables\Columns\TextColumn::make('user.username')->searchable()->label(__('label.username')),
- Tables\Columns\TextColumn::make('username_old')->searchable()->label(__('username-change-log.labels.username_old')),
- Tables\Columns\TextColumn::make('username_new')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('changeTypeText')->label(__('username-change-log.labels.change_type')),
+ TextColumn::make('uid')->searchable(),
+ TextColumn::make('user.username')->searchable()->label(__('label.username')),
+ TextColumn::make('username_old')->searchable()->label(__('username-change-log.labels.username_old')),
+ TextColumn::make('username_new')
->searchable()
->label(__('username-change-log.labels.username_new'))
->formatStateUsing(fn ($record) => new HtmlString(get_username($record->uid, false, true, true, true)))
,
- Tables\Columns\TextColumn::make('operator')
+ TextColumn::make('operator')
->searchable()
->label(__('label.operator'))
,
- Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at'))->formatStateUsing(fn ($state) => format_datetime($state)),
+ TextColumn::make('created_at')->label(__('label.created_at'))->formatStateUsing(fn ($state) => format_datetime($state)),
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label('UID')
->placeholder('UID')
,
@@ -75,13 +80,13 @@ class UsernameChangeLogResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $uid) => $query->where("uid", $uid));
})
,
- Tables\Filters\SelectFilter::make('change_type')->options(UsernameChangeLog::listChangeType())->label(__('username-change-log.labels.change_type')),
+ SelectFilter::make('change_type')->options(UsernameChangeLog::listChangeType())->label(__('username-change-log.labels.change_type')),
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
// Tables\Actions\DeleteAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -89,7 +94,7 @@ class UsernameChangeLogResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageUsernameChangeLogs::route('/'),
+ 'index' => ManageUsernameChangeLogs::route('/'),
];
}
}
diff --git a/app/Filament/Resources/Torrent/AnnounceLogResource.php b/app/Filament/Resources/Torrent/AnnounceLogResource.php
index 1befaa3f..059cbe66 100644
--- a/app/Filament/Resources/Torrent/AnnounceLogResource.php
+++ b/app/Filament/Resources/Torrent/AnnounceLogResource.php
@@ -2,6 +2,17 @@
namespace App\Filament\Resources\Torrent;
+use Filament\Schemas\Schema;
+use Filament\Schemas\Components\Tabs;
+use Filament\Schemas\Components\Tabs\Tab;
+use Filament\Schemas\Components\Fieldset;
+use Filament\Infolists\Components\TextEntry;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Select;
+use Filament\Actions\ViewAction;
+use App\Filament\Resources\Torrent\AnnounceLogResource\Pages\ListAnnounceLogs;
use App\Filament\Resources\Torrent\AnnounceLogResource\Pages;
use App\Filament\Resources\Torrent\AnnounceLogResource\RelationManagers;
use App\Models\AnnounceLog;
@@ -15,18 +26,15 @@ use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Filament\Infolists;
-use Filament\Infolists\Infolist;
-use Filament\Infolists\Components\Tabs;
-use Filament\Infolists\Components\Fieldset;
class AnnounceLogResource extends Resource
{
protected static ?string $model = AnnounceLog::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'Torrent';
+ protected static string | \UnitEnum | null $navigationGroup = 'Torrent';
protected static ?int $navigationSort = 5;
@@ -48,78 +56,78 @@ class AnnounceLogResource extends Resource
return Setting::getIsRecordAnnounceLog() && config('clickhouse.connection.host') != '';
}
- public static function infolist(Infolist $infolist): Infolist
+ public static function infolist(Schema $schema): Schema
{
- return $infolist
- ->schema([
+ return $schema
+ ->components([
Tabs::make('Tabs')
->tabs([
- Tabs\Tab::make(__('announce-log.tab_primary'))
+ Tab::make(__('announce-log.tab_primary'))
->schema([
Fieldset::make(__('announce-log.fieldset_basic'))
->schema([
- Infolists\Components\TextEntry::make('timestamp')->label(__('announce-log.timestamp')),
- Infolists\Components\TextEntry::make('user_id')->label(__('announce-log.user_id'))->copyable(),
- Infolists\Components\TextEntry::make('torrent_id')->label(__('announce-log.torrent_id'))->copyable(),
- Infolists\Components\TextEntry::make('torrent_size')->label(__('announce-log.torrent_size'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('seeder_count')->label(__('announce-log.seeder_count')),
- Infolists\Components\TextEntry::make('leecher_count')->label(__('announce-log.leecher_count')),
- Infolists\Components\TextEntry::make('promotion_state')->label(__('announce-log.promotion_state'))->formatStateUsing(fn($state) => Torrent::$promotionTypes[$state]['text'] ?? ''),
- Infolists\Components\TextEntry::make('promotion_state_desc')->label(__('announce-log.promotion_state_desc')),
- Infolists\Components\TextEntry::make('event')->label(__('announce-log.event')),
- Infolists\Components\TextEntry::make('left')->label(__('announce-log.left'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('announce_time')->label(__('announce-log.announce_time')),
- Infolists\Components\TextEntry::make('speed')->label(__('announce-log.speed'))->formatStateUsing(fn($state) => mksize($state) . "/s"),
+ TextEntry::make('timestamp')->label(__('announce-log.timestamp')),
+ TextEntry::make('user_id')->label(__('announce-log.user_id'))->copyable(),
+ TextEntry::make('torrent_id')->label(__('announce-log.torrent_id'))->copyable(),
+ TextEntry::make('torrent_size')->label(__('announce-log.torrent_size'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('seeder_count')->label(__('announce-log.seeder_count')),
+ TextEntry::make('leecher_count')->label(__('announce-log.leecher_count')),
+ TextEntry::make('promotion_state')->label(__('announce-log.promotion_state'))->formatStateUsing(fn($state) => Torrent::$promotionTypes[$state]['text'] ?? ''),
+ TextEntry::make('promotion_state_desc')->label(__('announce-log.promotion_state_desc')),
+ TextEntry::make('event')->label(__('announce-log.event')),
+ TextEntry::make('left')->label(__('announce-log.left'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('announce_time')->label(__('announce-log.announce_time')),
+ TextEntry::make('speed')->label(__('announce-log.speed'))->formatStateUsing(fn($state) => mksize($state) . "/s"),
])->columns(4),
Fieldset::make(__('announce-log.fieldset_uploaded'))
->schema([
- Infolists\Components\TextEntry::make('uploaded_offset')->label(__('announce-log.uploaded_offset'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('uploaded_total_last')->label(__('announce-log.uploaded_total_last'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('uploaded_total')->label(__('announce-log.uploaded_total'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('uploaded_increment')->label(__('announce-log.uploaded_increment'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('up_factor')->label(__('announce-log.up_factor')),
- Infolists\Components\TextEntry::make('up_factor_desc')->label(__('announce-log.up_factor_desc')),
- Infolists\Components\TextEntry::make('uploaded_increment_for_user')->label(__('announce-log.uploaded_increment_for_user'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('uploaded_offset')->label(__('announce-log.uploaded_offset'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('uploaded_total_last')->label(__('announce-log.uploaded_total_last'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('uploaded_total')->label(__('announce-log.uploaded_total'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('uploaded_increment')->label(__('announce-log.uploaded_increment'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('up_factor')->label(__('announce-log.up_factor')),
+ TextEntry::make('up_factor_desc')->label(__('announce-log.up_factor_desc')),
+ TextEntry::make('uploaded_increment_for_user')->label(__('announce-log.uploaded_increment_for_user'))->formatStateUsing(fn($state) => mksize($state)),
])->columns(4),
Fieldset::make(__('announce-log.fieldset_downloaded'))
->schema([
- Infolists\Components\TextEntry::make('downloaded_offset')->label(__('announce-log.downloaded_offset'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('downloaded_total_last')->label(__('announce-log.downloaded_total_last'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('downloaded_total')->label(__('announce-log.downloaded_total'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('downloaded_increment')->label(__('announce-log.downloaded_increment'))->formatStateUsing(fn($state) => mksize($state)),
- Infolists\Components\TextEntry::make('down_factor')->label(__('announce-log.down_factor')),
- Infolists\Components\TextEntry::make('down_factor_desc')->label(__('announce-log.down_factor_desc')),
- Infolists\Components\TextEntry::make('downloaded_increment_for_user')->label(__('announce-log.downloaded_increment_for_user'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('downloaded_offset')->label(__('announce-log.downloaded_offset'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('downloaded_total_last')->label(__('announce-log.downloaded_total_last'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('downloaded_total')->label(__('announce-log.downloaded_total'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('downloaded_increment')->label(__('announce-log.downloaded_increment'))->formatStateUsing(fn($state) => mksize($state)),
+ TextEntry::make('down_factor')->label(__('announce-log.down_factor')),
+ TextEntry::make('down_factor_desc')->label(__('announce-log.down_factor_desc')),
+ TextEntry::make('downloaded_increment_for_user')->label(__('announce-log.downloaded_increment_for_user'))->formatStateUsing(fn($state) => mksize($state)),
])->columns(4),
]),
- Tabs\Tab::make(__('announce-log.tab_secondary'))
+ Tab::make(__('announce-log.tab_secondary'))
->schema([
Fieldset::make(__('announce-log.fieldset_client'))
->schema([
- Infolists\Components\TextEntry::make('port')->label(__('announce-log.port')),
- Infolists\Components\TextEntry::make('agent')->label(__('announce-log.agent')),
- Infolists\Components\TextEntry::make('peer_id')->label(__('announce-log.peer_id'))->copyable(),
- Infolists\Components\TextEntry::make('client_select')->label(__('announce-log.client_select')),
+ TextEntry::make('port')->label(__('announce-log.port')),
+ TextEntry::make('agent')->label(__('announce-log.agent')),
+ TextEntry::make('peer_id')->label(__('announce-log.peer_id'))->copyable(),
+ TextEntry::make('client_select')->label(__('announce-log.client_select')),
])->columns(4),
Fieldset::make(__('announce-log.fieldset_location'))
->schema([
- Infolists\Components\TextEntry::make('ip')->label(__('announce-log.ip'))->copyable()->limit(25),
- Infolists\Components\TextEntry::make('ipv4')->label(__('announce-log.ipv4'))->copyable(),
- Infolists\Components\TextEntry::make('ipv6')->label(__('announce-log.ipv6'))->copyable()->limit(25),
- Infolists\Components\TextEntry::make('continent')->label(__('announce-log.continent')),
- Infolists\Components\TextEntry::make('country')->label(__('announce-log.country')),
- Infolists\Components\TextEntry::make('city')->label(__('announce-log.city')),
+ TextEntry::make('ip')->label(__('announce-log.ip'))->copyable()->limit(25),
+ TextEntry::make('ipv4')->label(__('announce-log.ipv4'))->copyable(),
+ TextEntry::make('ipv6')->label(__('announce-log.ipv6'))->copyable()->limit(25),
+ TextEntry::make('continent')->label(__('announce-log.continent')),
+ TextEntry::make('country')->label(__('announce-log.country')),
+ TextEntry::make('city')->label(__('announce-log.city')),
])->columns(4),
Fieldset::make(__('announce-log.fieldset_request'))
->schema([
- Infolists\Components\TextEntry::make('scheme')->label(__('announce-log.scheme')),
- Infolists\Components\TextEntry::make('host')->label(__('announce-log.host')),
- Infolists\Components\TextEntry::make('path')->label(__('announce-log.path')),
- Infolists\Components\TextEntry::make('request_id')->label(__('announce-log.request_id'))->copyable()->limit(25),
- Infolists\Components\TextEntry::make('batch_no')->label(__('announce-log.batch_no'))->copyable(),
+ TextEntry::make('scheme')->label(__('announce-log.scheme')),
+ TextEntry::make('host')->label(__('announce-log.host')),
+ TextEntry::make('path')->label(__('announce-log.path')),
+ TextEntry::make('request_id')->label(__('announce-log.request_id'))->copyable()->limit(25),
+ TextEntry::make('batch_no')->label(__('announce-log.batch_no'))->copyable(),
])->columns(4),
]),
@@ -131,93 +139,93 @@ class AnnounceLogResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('timestamp')->label(__('announce-log.timestamp'))->sortable(),
- Tables\Columns\TextColumn::make('user_id')->label(__('announce-log.user_id')),
- Tables\Columns\TextColumn::make('torrent_id')->label(__('announce-log.torrent_id')),
- Tables\Columns\TextColumn::make('peer_id')->label(__('announce-log.peer_id')),
- Tables\Columns\TextColumn::make('torrent_size')
+ TextColumn::make('timestamp')->label(__('announce-log.timestamp'))->sortable(),
+ TextColumn::make('user_id')->label(__('announce-log.user_id')),
+ TextColumn::make('torrent_id')->label(__('announce-log.torrent_id')),
+ TextColumn::make('peer_id')->label(__('announce-log.peer_id')),
+ TextColumn::make('torrent_size')
->label(__('announce-log.torrent_size'))
->formatStateUsing(fn ($state): string => mksize($state))
,
- Tables\Columns\TextColumn::make('uploaded_total')
+ TextColumn::make('uploaded_total')
->label(__('announce-log.uploaded_total'))
->formatStateUsing(fn ($state): string => mksize($state))
->sortable()
,
- Tables\Columns\TextColumn::make('uploaded_increment')
+ TextColumn::make('uploaded_increment')
->label(__('announce-log.uploaded_increment'))
->formatStateUsing(fn ($state): string => mksize($state))
->sortable()
,
- Tables\Columns\TextColumn::make('downloaded_total')
+ TextColumn::make('downloaded_total')
->label(__('announce-log.downloaded_total'))
->formatStateUsing(fn ($state): string => mksize($state))
->sortable()
,
- Tables\Columns\TextColumn::make('downloaded_increment')
+ TextColumn::make('downloaded_increment')
->label(__('announce-log.downloaded_increment'))
->formatStateUsing(fn ($state): string => mksize($state))
->sortable()
,
- Tables\Columns\TextColumn::make('left')
+ TextColumn::make('left')
->label(__('announce-log.left'))
->formatStateUsing(fn ($state): string => mksize($state))
->sortable()
,
- Tables\Columns\TextColumn::make('announce_time')
+ TextColumn::make('announce_time')
->label(__('announce-log.announce_time'))
->sortable()
,
- Tables\Columns\TextColumn::make('event')->label(__('announce-log.event')),
- Tables\Columns\TextColumn::make('ip')->label('IP'),
+ TextColumn::make('event')->label(__('announce-log.event')),
+ TextColumn::make('ip')->label('IP'),
// Tables\Columns\TextColumn::make('agent')->label(__('announce-log.agent')),
])
->filters([
- Tables\Filters\Filter::make('user_id')
- ->form([
- Forms\Components\TextInput::make('user_id')
+ Filter::make('user_id')
+ ->schema([
+ TextInput::make('user_id')
->label(__('announce-log.user_id'))
->numeric()
->minValue(1)
,
])
,
- Tables\Filters\Filter::make('torrent_id')
- ->form([
- Forms\Components\TextInput::make('torrent_id')
+ Filter::make('torrent_id')
+ ->schema([
+ TextInput::make('torrent_id')
->label(__('announce-log.torrent_id'))
->numeric()
->minValue(1)
,
])
,
- Tables\Filters\Filter::make('peer_id')
- ->form([
- Forms\Components\TextInput::make('peer_id')
+ Filter::make('peer_id')
+ ->schema([
+ TextInput::make('peer_id')
->label(__('announce-log.peer_id'))
,
])
,
- Tables\Filters\Filter::make('ip')
- ->form([
- Forms\Components\TextInput::make('ip')
+ Filter::make('ip')
+ ->schema([
+ TextInput::make('ip')
->label('IP')
,
])
,
- Tables\Filters\Filter::make('event')
- ->form([
- Forms\Components\Select::make('event')
+ Filter::make('event')
+ ->schema([
+ Select::make('event')
->label(__('announce-log.event'))
->options(AnnounceLog::listEvents())
,
])
,
])
- ->actions([
- Tables\Actions\ViewAction::make()->modalWidth('5xl'),
+ ->recordActions([
+ ViewAction::make()->modalWidth('5xl'),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\BulkActionGroup::make([
// Tables\Actions\DeleteBulkAction::make(),
// ]),
@@ -234,7 +242,7 @@ class AnnounceLogResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListAnnounceLogs::route('/'),
+ 'index' => ListAnnounceLogs::route('/'),
// 'create' => Pages\CreateAnnounceLog::route('/create'),
// 'edit' => Pages\EditAnnounceLog::route('/{record}/edit'),
];
diff --git a/app/Filament/Resources/Torrent/AnnounceLogResource/Pages/EditAnnounceLog.php b/app/Filament/Resources/Torrent/AnnounceLogResource/Pages/EditAnnounceLog.php
index 021f2f08..f5761415 100644
--- a/app/Filament/Resources/Torrent/AnnounceLogResource/Pages/EditAnnounceLog.php
+++ b/app/Filament/Resources/Torrent/AnnounceLogResource/Pages/EditAnnounceLog.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Torrent\AnnounceLogResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Torrent\AnnounceLogResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditAnnounceLog extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Torrent/TagResource.php b/app/Filament/Resources/Torrent/TagResource.php
index 74697224..75052316 100644
--- a/app/Filament/Resources/Torrent/TagResource.php
+++ b/app/Filament/Resources/Torrent/TagResource.php
@@ -2,12 +2,23 @@
namespace App\Filament\Resources\Torrent;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\Textarea;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Torrent\TagResource\Pages\ListTags;
+use App\Filament\Resources\Torrent\TagResource\Pages\CreateTag;
+use App\Filament\Resources\Torrent\TagResource\Pages\EditTag;
+use Filament\Actions\Action;
+use Filament\Actions\EditAction;
use App\Filament\Resources\Torrent\TagResource\Pages;
use App\Filament\Resources\Torrent\TagResource\RelationManagers;
use App\Models\SearchBox;
use App\Models\Tag;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -18,9 +29,9 @@ class TagResource extends Resource
{
protected static ?string $model = Tag::class;
- protected static ?string $navigationIcon = 'heroicon-o-tag';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-tag';
- protected static ?string $navigationGroup = 'Torrent';
+ protected static string | \UnitEnum | null $navigationGroup = 'Torrent';
protected static ?int $navigationSort = 2;
@@ -34,24 +45,24 @@ class TagResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->required()->label(__('label.name')),
- Forms\Components\TextInput::make('color')->required()->label(__('label.tag.color')),
- Forms\Components\TextInput::make('font_color')->required()->label(__('label.tag.font_color')),
- Forms\Components\TextInput::make('font_size')->required()->label(__('label.tag.font_size')),
- Forms\Components\TextInput::make('margin')->required()->label(__('label.tag.margin')),
- Forms\Components\TextInput::make('padding')->required()->label(__('label.tag.padding')),
- Forms\Components\TextInput::make('border_radius')->required()->label(__('label.tag.border_radius')),
- Forms\Components\TextInput::make('priority')->integer()->required()->label(__('label.priority'))->default(0),
- Forms\Components\Select::make('mode')
+ return $schema
+ ->components([
+ TextInput::make('name')->required()->label(__('label.name')),
+ TextInput::make('color')->required()->label(__('label.tag.color')),
+ TextInput::make('font_color')->required()->label(__('label.tag.font_color')),
+ TextInput::make('font_size')->required()->label(__('label.tag.font_size')),
+ TextInput::make('margin')->required()->label(__('label.tag.margin')),
+ TextInput::make('padding')->required()->label(__('label.tag.padding')),
+ TextInput::make('border_radius')->required()->label(__('label.tag.border_radius')),
+ TextInput::make('priority')->integer()->required()->label(__('label.priority'))->default(0),
+ Select::make('mode')
->options(SearchBox::query()->pluck('name', 'id')->toArray())
->label(__('label.search_box.taxonomy.mode'))
->helperText(__('label.search_box.taxonomy.mode_help'))
,
- Forms\Components\Textarea::make('description')->label(__('label.description')),
+ Textarea::make('description')->label(__('label.description')),
]);
}
@@ -59,26 +70,26 @@ class TagResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('search_box.name')
+ TextColumn::make('id'),
+ TextColumn::make('search_box.name')
->label(__('label.search_box.label'))
->formatStateUsing(fn ($record) => $record->search_box->name ?? 'All')
,
- Tables\Columns\TextColumn::make('name')->label(__('label.name'))->searchable(),
- Tables\Columns\TextColumn::make('color')->label(__('label.tag.color')),
- Tables\Columns\TextColumn::make('font_color')->label(__('label.tag.font_color')),
- Tables\Columns\TextColumn::make('font_size')->label(__('label.tag.font_size')),
- Tables\Columns\TextColumn::make('margin')->label(__('label.tag.margin')),
- Tables\Columns\TextColumn::make('padding')->label(__('label.tag.padding')),
- Tables\Columns\TextColumn::make('border_radius')->label(__('label.tag.border_radius')),
- Tables\Columns\TextColumn::make('priority')->label(__('label.priority'))->sortable(),
- Tables\Columns\TextColumn::make('torrents_count')->label(__('label.tag.torrents_count')),
- Tables\Columns\TextColumn::make('torrents_sum_size')->label(__('label.tag.torrents_sum_size'))->formatStateUsing(fn ($state) => mksize($state)),
+ TextColumn::make('name')->label(__('label.name'))->searchable(),
+ TextColumn::make('color')->label(__('label.tag.color')),
+ TextColumn::make('font_color')->label(__('label.tag.font_color')),
+ TextColumn::make('font_size')->label(__('label.tag.font_size')),
+ TextColumn::make('margin')->label(__('label.tag.margin')),
+ TextColumn::make('padding')->label(__('label.tag.padding')),
+ TextColumn::make('border_radius')->label(__('label.tag.border_radius')),
+ TextColumn::make('priority')->label(__('label.priority'))->sortable(),
+ TextColumn::make('torrents_count')->label(__('label.tag.torrents_count')),
+ TextColumn::make('torrents_sum_size')->label(__('label.tag.torrents_sum_size'))->formatStateUsing(fn ($state) => mksize($state)),
// Tables\Columns\TextColumn::make('updated_at')->dateTime()->label(__('label.updated_at')),
])
->defaultSort('priority', 'desc')
->filters([
- Tables\Filters\SelectFilter::make('mode')
+ SelectFilter::make('mode')
->options(SearchBox::query()->pluck('name', 'id')->toArray())
->label(__('label.search_box.taxonomy.mode'))
->query(function (Builder $query, array $data) {
@@ -90,9 +101,9 @@ class TagResource extends Resource
})
,
])
- ->actions(self::getActions())
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->recordActions(self::getActions())
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
@@ -106,22 +117,22 @@ class TagResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListTags::route('/'),
- 'create' => Pages\CreateTag::route('/create'),
- 'edit' => Pages\EditTag::route('/{record}/edit'),
+ 'index' => ListTags::route('/'),
+ 'create' => CreateTag::route('/create'),
+ 'edit' => EditTag::route('/{record}/edit'),
];
}
private static function getActions(): array
{
$actions = [];
- $actions[] = Tables\Actions\Action::make('detach_torrents')
+ $actions[] = Action::make('detach_torrents')
->label(__('admin.resources.tag.detach_torrents'))
->requiresConfirmation()
->action(function ($record) {
$record->torrent_tags()->delete();
});
- $actions[] = Tables\Actions\EditAction::make();
+ $actions[] = EditAction::make();
return $actions;
}
}
diff --git a/app/Filament/Resources/Torrent/TagResource/Pages/EditTag.php b/app/Filament/Resources/Torrent/TagResource/Pages/EditTag.php
index 14cbd034..f4cb62da 100644
--- a/app/Filament/Resources/Torrent/TagResource/Pages/EditTag.php
+++ b/app/Filament/Resources/Torrent/TagResource/Pages/EditTag.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Torrent\TagResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Torrent\TagResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditTag extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
diff --git a/app/Filament/Resources/Torrent/TagResource/Pages/ListTags.php b/app/Filament/Resources/Torrent/TagResource/Pages/ListTags.php
index a633a44c..ffb0c42e 100644
--- a/app/Filament/Resources/Torrent/TagResource/Pages/ListTags.php
+++ b/app/Filament/Resources/Torrent/TagResource/Pages/ListTags.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Torrent\TagResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageList;
use App\Filament\Resources\Torrent\TagResource;
use App\Models\Tag;
@@ -16,7 +17,7 @@ class ListTags extends PageList
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
diff --git a/app/Filament/Resources/Torrent/TorrentDenyReasonResource.php b/app/Filament/Resources/Torrent/TorrentDenyReasonResource.php
index 2ce8de96..8cf061ff 100644
--- a/app/Filament/Resources/Torrent/TorrentDenyReasonResource.php
+++ b/app/Filament/Resources/Torrent/TorrentDenyReasonResource.php
@@ -2,11 +2,17 @@
namespace App\Filament\Resources\Torrent;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\EditAction;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\Torrent\TorrentDenyReasonResource\Pages\ManageTorrentDenyReasons;
use App\Filament\Resources\Torrent\TorrentDenyReasonResource\Pages;
use App\Filament\Resources\Torrent\TorrentDenyReasonResource\RelationManagers;
use App\Models\TorrentDenyReason;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +23,9 @@ class TorrentDenyReasonResource extends Resource
{
protected static ?string $model = TorrentDenyReason::class;
- protected static ?string $navigationIcon = 'heroicon-o-no-symbol';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-no-symbol';
- protected static ?string $navigationGroup = 'Torrent';
+ protected static string | \UnitEnum | null $navigationGroup = 'Torrent';
protected static ?int $navigationSort = 3;
@@ -33,12 +39,12 @@ class TorrentDenyReasonResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')->required()->label(__('label.name')),
- Forms\Components\TextInput::make('priority')->integer()->label(__('label.priority'))->default(0),
+ return $schema
+ ->components([
+ TextInput::make('name')->required()->label(__('label.name')),
+ TextInput::make('priority')->integer()->label(__('label.priority'))->default(0),
])->columns(1);
}
@@ -46,28 +52,28 @@ class TorrentDenyReasonResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
- Tables\Columns\TextColumn::make('priority')->label(__('label.priority'))->sortable(),
- Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at')),
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('priority')->label(__('label.priority'))->sortable(),
+ TextColumn::make('created_at')->label(__('label.created_at')),
])
->defaultSort('priority', 'desc')
->filters([
//
])
- ->actions([
- Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageTorrentDenyReasons::route('/'),
+ 'index' => ManageTorrentDenyReasons::route('/'),
];
}
}
diff --git a/app/Filament/Resources/Torrent/TorrentDenyReasonResource/Pages/ManageTorrentDenyReasons.php b/app/Filament/Resources/Torrent/TorrentDenyReasonResource/Pages/ManageTorrentDenyReasons.php
index 7edd98be..1c39cf4b 100644
--- a/app/Filament/Resources/Torrent/TorrentDenyReasonResource/Pages/ManageTorrentDenyReasons.php
+++ b/app/Filament/Resources/Torrent/TorrentDenyReasonResource/Pages/ManageTorrentDenyReasons.php
@@ -2,20 +2,22 @@
namespace App\Filament\Resources\Torrent\TorrentDenyReasonResource\Pages;
+use Filament\Support\Enums\Width;
+use Filament\Actions\CreateAction;
use App\Filament\Resources\Torrent\TorrentDenyReasonResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\ManageRecords;
class ManageTorrentDenyReasons extends ManageRecords
{
- protected ?string $maxContentWidth = 'full';
+ protected Width|string|null $maxContentWidth = 'full';
protected static string $resource = TorrentDenyReasonResource::class;
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/Torrent/TorrentOperationLogResource.php b/app/Filament/Resources/Torrent/TorrentOperationLogResource.php
index e08978a5..d02082f8 100644
--- a/app/Filament/Resources/Torrent/TorrentOperationLogResource.php
+++ b/app/Filament/Resources/Torrent/TorrentOperationLogResource.php
@@ -2,12 +2,17 @@
namespace App\Filament\Resources\Torrent;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use App\Filament\Resources\Torrent\TorrentOperationLogResource\Pages\ManageTorrentOperationLogs;
use App\Filament\Resources\Torrent\TorrentOperationLogResource\Pages;
use App\Filament\Resources\Torrent\TorrentOperationLogResource\RelationManagers;
use App\Models\Torrent;
use App\Models\TorrentOperationLog;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -18,9 +23,9 @@ class TorrentOperationLogResource extends Resource
{
protected static ?string $model = TorrentOperationLog::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'Torrent';
+ protected static string | \UnitEnum | null $navigationGroup = 'Torrent';
protected static ?int $navigationSort = 4;
@@ -34,10 +39,10 @@ class TorrentOperationLogResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -46,58 +51,58 @@ class TorrentOperationLogResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('user.username')
->formatStateUsing(fn ($record) => username_for_admin($record->uid))
->label(__('label.user.label'))
,
- Tables\Columns\TextColumn::make('torrent.name')
+ TextColumn::make('torrent.name')
->formatStateUsing(fn ($record) => torrent_name_for_admin($record->torrent))
->label(__('label.torrent.label'))
,
- Tables\Columns\TextColumn::make('action_type_text')
+ TextColumn::make('action_type_text')
->label(__('torrent-operation-log.fields.action_type'))
,
- Tables\Columns\TextColumn::make('comment')
+ TextColumn::make('comment')
->label(__('label.comment'))
,
- Tables\Columns\TextColumn::make('created_at')
+ TextColumn::make('created_at')
->formatStateUsing(fn ($state) => format_datetime($state))
->label(__('label.created_at'))
,
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->placeholder('UID')
,
])->query(function (Builder $query, array $data) {
return $query->when($data['uid'], fn (Builder $query, $value) => $query->where("uid", $value));
})
,
- Tables\Filters\Filter::make('torrent_id')
- ->form([
- Forms\Components\TextInput::make('torrent_id')
+ Filter::make('torrent_id')
+ ->schema([
+ TextInput::make('torrent_id')
->placeholder('Torrent ID')
,
])->query(function (Builder $query, array $data) {
return $query->when($data['torrent_id'], fn (Builder $query, $value) => $query->where("torrent_id", $value));
})
,
- Tables\Filters\SelectFilter::make('action_type')
+ SelectFilter::make('action_type')
->options(TorrentOperationLog::listStaticProps(TorrentOperationLog::$actionTypes, 'torrent.operation_log.%s.type_text', true))
->label(__('torrent-operation-log.fields.action_type'))
->multiple()
,
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
// Tables\Actions\DeleteAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -105,7 +110,7 @@ class TorrentOperationLogResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageTorrentOperationLogs::route('/'),
+ 'index' => ManageTorrentOperationLogs::route('/'),
];
}
}
diff --git a/app/Filament/Resources/Torrent/TorrentResource.php b/app/Filament/Resources/Torrent/TorrentResource.php
index b6ec2bc0..d83d935a 100644
--- a/app/Filament/Resources/Torrent/TorrentResource.php
+++ b/app/Filament/Resources/Torrent/TorrentResource.php
@@ -2,6 +2,28 @@
namespace App\Filament\Resources\Torrent;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\IconColumn;
+use Filament\Tables\Columns\BadgeColumn;
+use App\Filament\Resources\Torrent\TorrentResource\Pages\ListTorrents;
+use App\Filament\Resources\Torrent\TorrentResource\Pages\CreateTorrent;
+use App\Filament\Resources\Torrent\TorrentResource\Pages\EditTorrent;
+use Filament\Actions\BulkAction;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\DateTimePicker;
+use Exception;
+use Filament\Forms\Components\Radio;
+use Filament\Forms\Components\Checkbox;
+use Filament\Forms\Components\CheckboxList;
+use Filament\Actions\DeleteBulkAction;
+use Filament\Forms\Components\Textarea;
+use Filament\Actions\DeleteAction;
+use Filament\Schemas\Components\Utilities\Get;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Forms\Components\DatePicker;
use App\Filament\OptionsTrait;
use App\Filament\Resources\Torrent\TorrentResource\Pages;
use App\Filament\Resources\Torrent\TorrentResource\RelationManagers;
@@ -19,7 +41,6 @@ use Elasticsearch\Endpoints\Search;
use Filament\Facades\Filament;
use Filament\Forms;
use Filament\Pages\Actions\Action;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -39,9 +60,9 @@ class TorrentResource extends Resource
protected static ?string $model = Torrent::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'Torrent';
+ protected static string | \UnitEnum | null $navigationGroup = 'Torrent';
protected static ?int $navigationSort = 1;
@@ -57,10 +78,10 @@ class TorrentResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -78,45 +99,45 @@ class TorrentResource extends Resource
$showApproval = self::shouldShowApproval();
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('basic_category.name')->label(__('label.torrent.category')),
- Tables\Columns\TextColumn::make('name')->formatStateUsing(fn ($record) => torrent_name_for_admin($record, true))
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('basic_category.name')->label(__('label.torrent.category')),
+ TextColumn::make('name')->formatStateUsing(fn ($record) => torrent_name_for_admin($record, true))
->label(__('label.name'))
->searchable(query: function (Builder $query, string $search) {
return $query->where("name", "like", "%{$search}%")->orWhere("small_descr", "like", "%{$search}%");
}),
- Tables\Columns\TextColumn::make('posStateText')->label(__('label.torrent.pos_state')),
- Tables\Columns\TextColumn::make('spStateText')->label(__('label.torrent.sp_state')),
- Tables\Columns\TextColumn::make('pickInfoText')
+ TextColumn::make('posStateText')->label(__('label.torrent.pos_state')),
+ TextColumn::make('spStateText')->label(__('label.torrent.sp_state')),
+ TextColumn::make('pickInfoText')
->label(__('label.torrent.picktype'))
->formatStateUsing(fn ($record) => $record->pickInfo['text'])
,
- Tables\Columns\IconColumn::make('hr')
+ IconColumn::make('hr')
->label(__('label.torrent.hr'))
->boolean()
,
- Tables\Columns\TextColumn::make('size')
+ TextColumn::make('size')
->label(__('label.torrent.size'))
->formatStateUsing(fn ($state) => mksize($state))
->sortable()
,
- Tables\Columns\TextColumn::make('seeders')->label(__('label.torrent.seeders'))->sortable(),
- Tables\Columns\TextColumn::make('leechers')->label(__('label.torrent.leechers'))->sortable(),
- Tables\Columns\BadgeColumn::make('approval_status')
+ TextColumn::make('seeders')->label(__('label.torrent.seeders'))->sortable(),
+ TextColumn::make('leechers')->label(__('label.torrent.leechers'))->sortable(),
+ BadgeColumn::make('approval_status')
->visible($showApproval)
->label(__('label.torrent.approval_status'))
->colors(array_flip(Torrent::listApprovalStatus(true, 'badge_color')))
->formatStateUsing(fn ($record) => $record->approvalStatusText),
- Tables\Columns\TextColumn::make('added')->label(__('label.added'))->dateTime(),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('added')->label(__('label.added'))->dateTime(),
+ TextColumn::make('user.username')
->label(__('label.torrent.owner'))
->formatStateUsing(fn ($record) => username_for_admin($record->owner))
,
])
->defaultSort('id', 'desc')
->filters(self::getFilters())
- ->actions(self::getActions())
- ->bulkActions(self::getBulkActions())
+ ->recordActions(self::getActions())
+ ->toolbarActions(self::getBulkActions())
;
}
@@ -136,9 +157,9 @@ class TorrentResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListTorrents::route('/'),
- 'create' => Pages\CreateTorrent::route('/create'),
- 'edit' => Pages\EditTorrent::route('/{record}/edit'),
+ 'index' => ListTorrents::route('/'),
+ 'create' => CreateTorrent::route('/create'),
+ 'edit' => EditTorrent::route('/{record}/edit'),
];
}
@@ -147,15 +168,15 @@ class TorrentResource extends Resource
$user = Auth::user();
$actions = [];
if (user_can('torrentsticky')) {
- $actions[] = Tables\Actions\BulkAction::make('posState')
+ $actions[] = BulkAction::make('posState')
->label(__('admin.resources.torrent.bulk_action_pos_state'))
->form([
- Forms\Components\Select::make('pos_state')
+ Select::make('pos_state')
->label(__('label.torrent.pos_state'))
->options(Torrent::listPosStates(true))
->required()
,
- Forms\Components\DateTimePicker::make('pos_state_until')
+ DateTimePicker::make('pos_state_until')
->label(__('label.deadline'))
,
])
@@ -165,7 +186,7 @@ class TorrentResource extends Resource
try {
$torrentRep = new TorrentRepository();
$torrentRep->setPosState($idArr, $data['pos_state'], $data['pos_state_until']);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage() . $exception->getTraceAsString(), 'error');
Filament::notify('danger', class_basename($exception));
}
@@ -174,20 +195,20 @@ class TorrentResource extends Resource
}
if (user_can('torrentonpromotion')) {
- $actions[] = Tables\Actions\BulkAction::make('sp_state')
+ $actions[] = BulkAction::make('sp_state')
->label(__('admin.resources.torrent.bulk_action_sp_state'))
->form([
- Forms\Components\Select::make('sp_state')
+ Select::make('sp_state')
->label(__('label.torrent.sp_state'))
->options(Torrent::listPromotionTypes(true))
->required()
,
- Forms\Components\Select::make('promotion_time_type')
+ Select::make('promotion_time_type')
->label(__('label.torrent.promotion_time_type'))
->options(Torrent::listPromotionTimeTypes(true))
->required()
,
- Forms\Components\DateTimePicker::make('promotion_until')
+ DateTimePicker::make('promotion_until')
->label(__('label.deadline'))
,
])
@@ -197,7 +218,7 @@ class TorrentResource extends Resource
try {
$torrentRep = new TorrentRepository();
$torrentRep->setSpState($idArr, $data['sp_state'], $data['promotion_time_type'], $data['promotion_until']);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage() . $exception->getTraceAsString(), 'error');
Filament::notify('danger', $exception->getMessage());
}
@@ -206,10 +227,10 @@ class TorrentResource extends Resource
}
if (user_can('torrentmanage') && ($user->picker == 'yes' || $user->class >= User::CLASS_SYSOP)) {
- $actions[] = Tables\Actions\BulkAction::make('recommend')
+ $actions[] = BulkAction::make('recommend')
->label(__('admin.resources.torrent.bulk_action_recommend'))
->form([
- Forms\Components\Radio::make('picktype')
+ Radio::make('picktype')
->label(__('admin.resources.torrent.bulk_action_recommend'))
->inline()
->options(Torrent::listPickInfo(true))
@@ -225,7 +246,7 @@ class TorrentResource extends Resource
try {
$torrentRep = new TorrentRepository();
$torrentRep->setPickType($idArr, $data['picktype']);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage() . $exception->getTraceAsString(), 'error');
Filament::notify('danger', class_basename($exception));
}
@@ -234,7 +255,7 @@ class TorrentResource extends Resource
}
if (user_can('torrentmanage')) {
- $actions[] = Tables\Actions\BulkAction::make('remove_tag')
+ $actions[] = BulkAction::make('remove_tag')
->label(__('admin.resources.torrent.bulk_action_remove_tag'))
->requiresConfirmation()
->icon('heroicon-o-minus-circle')
@@ -243,18 +264,18 @@ class TorrentResource extends Resource
try {
$torrentRep = new TorrentRepository();
$torrentRep->syncTags($idArr);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage() . $exception->getTraceAsString(), 'error');
Filament::notify('danger', class_basename($exception));
}
})
->deselectRecordsAfterCompletion();
- $actions[] = Tables\Actions\BulkAction::make('attach_tag')
+ $actions[] = BulkAction::make('attach_tag')
->label(__('admin.resources.torrent.bulk_action_attach_tag'))
->form([
- Forms\Components\Checkbox::make('remove')->label(__('admin.resources.torrent.bulk_action_attach_tag_remove_old')),
- Forms\Components\CheckboxList::make('tags')
+ Checkbox::make('remove')->label(__('admin.resources.torrent.bulk_action_attach_tag_remove_old')),
+ CheckboxList::make('tags')
->label(__('label.tag.label'))
->columns(4)
->options(TagRepository::createBasicQuery()->pluck('name', 'id')->toArray())
@@ -270,17 +291,17 @@ class TorrentResource extends Resource
try {
$torrentRep = new TorrentRepository();
$torrentRep->syncTags($idArr, $data['tags'], $data['remove'] ?? false);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage() . $exception->getTraceAsString(), 'error');
Filament::notify('danger', class_basename($exception));
}
})
->deselectRecordsAfterCompletion();
- $actions[] = Tables\Actions\BulkAction::make('hr')
+ $actions[] = BulkAction::make('hr')
->label(__('admin.resources.torrent.bulk_action_hr'))
->form([
- Forms\Components\Radio::make('hr')
+ Radio::make('hr')
->label(__('admin.resources.torrent.bulk_action_hr'))
->inline()
->options(self::getYesNoOptions())
@@ -296,7 +317,7 @@ class TorrentResource extends Resource
try {
$torrentRep = new TorrentRepository();
$torrentRep->setHr($idArr, $data['hr']);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage() . $exception->getTraceAsString(), 'error');
Filament::notify('danger', class_basename($exception));
}
@@ -306,7 +327,7 @@ class TorrentResource extends Resource
// $actions[] = self::getBulkActionChangeCategory();
if (user_can('torrent-delete')) {
- $actions[] = Tables\Actions\DeleteBulkAction::make('bulk-delete')->using(function (Collection $records) {
+ $actions[] = DeleteBulkAction::make('bulk-delete')->using(function (Collection $records) {
deletetorrent($records->pluck('id')->toArray());
});
}
@@ -317,43 +338,43 @@ class TorrentResource extends Resource
{
$actions = [];
if (self::shouldShowApproval() && user_can('torrent-approval')) {
- $actions[] = Tables\Actions\Action::make('approval')
+ $actions[] = \Filament\Actions\Action::make('approval')
->label(__('admin.resources.torrent.action_approval'))
- ->form([
- Forms\Components\Radio::make('approval_status')
+ ->schema([
+ Radio::make('approval_status')
->label(__('label.torrent.approval_status'))
->inline()
->required()
->options(Torrent::listApprovalStatus(true))
,
- Forms\Components\Textarea::make('comment')->label(__('label.comment')),
+ Textarea::make('comment')->label(__('label.comment')),
])
->action(function (Torrent $record, array $data) {
$torrentRep = new TorrentRepository();
try {
$data['torrent_id'] = $record->id;
$torrentRep->approval(Auth::user(), $data);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage(), 'error');
}
});
}
if (user_can('torrent-delete')) {
- $actions[] = Tables\Actions\DeleteAction::make('delete')->using(function ($record) {
+ $actions[] = DeleteAction::make('delete')->using(function ($record) {
deletetorrent($record->id);
});
}
return $actions;
}
- private static function getBulkActionChangeCategory(): Tables\Actions\BulkAction
+ private static function getBulkActionChangeCategory(): BulkAction
{
$searchBoxRep = new SearchBoxRepository();
- return Tables\Actions\BulkAction::make('changeCategory')
+ return BulkAction::make('changeCategory')
->label(__('admin.resources.torrent.bulk_action_change_category'))
->form([
- Forms\Components\Select::make('section_id')
+ Select::make('section_id')
->label(__('searchbox.section'))
->helperText(new HtmlString(__('admin.resources.torrent.bulk_action_change_category_section_help')))
->options(function() {
@@ -369,12 +390,12 @@ class TorrentResource extends Resource
->required()
,
$searchBoxRep->buildSearchBoxFormSchema(SearchBox::getBrowseSearchBox(), 'section_info')
- ->hidden(function (Forms\Get $get) {
+ ->hidden(function (Get $get) {
return $get('section_id') != SearchBox::getBrowseMode();
})
,
$searchBoxRep->buildSearchBoxFormSchema(SearchBox::getSpecialSearchBox(), 'section_info')
- ->hidden(function (Forms\Get $get) {
+ ->hidden(function (Get $get) {
return $get('section_id') != SearchBox::getSpecialMode();
})
,
@@ -385,7 +406,7 @@ class TorrentResource extends Resource
$newSectionId = $data['section_id'];
try {
$torrentRep->changeCategory($records, $newSectionId, $data['section_info']['section'][$newSectionId]);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
do_log($exception->getMessage(), 'error');
}
});
@@ -400,9 +421,9 @@ class TorrentResource extends Resource
private static function getFilters()
{
$filters = [
- Tables\Filters\Filter::make('owner')
- ->form([
- Forms\Components\TextInput::make('owner')
+ Filter::make('owner')
+ ->schema([
+ TextInput::make('owner')
->label(__('label.torrent.owner'))
->placeholder('UID')
,
@@ -411,60 +432,60 @@ class TorrentResource extends Resource
})
,
- Tables\Filters\SelectFilter::make('visible')
+ SelectFilter::make('visible')
->options(self::$yesOrNo)
->label(__('label.torrent.visible'))
,
- Tables\Filters\SelectFilter::make('hr')
+ SelectFilter::make('hr')
->options(self::getYesNoOptions())
->label(__('label.torrent.hr'))
,
- Tables\Filters\SelectFilter::make('pos_state')
+ SelectFilter::make('pos_state')
->options(Torrent::listPosStates(true))
->label(__('label.torrent.pos_state'))
->multiple()
,
- Tables\Filters\SelectFilter::make('sp_state')
+ SelectFilter::make('sp_state')
->options(Torrent::listPromotionTypes(true))
->label(__('label.torrent.sp_state'))
->multiple()
,
- Tables\Filters\SelectFilter::make('picktype')
+ SelectFilter::make('picktype')
->options(Torrent::listPickInfo(true))
->label(__('label.torrent.picktype'))
->multiple()
,
- Tables\Filters\SelectFilter::make('approval_status')
+ SelectFilter::make('approval_status')
->options(Torrent::listApprovalStatus(true))
->label(__('label.torrent.approval_status'))
->multiple()
,
- Tables\Filters\SelectFilter::make('tags')
+ SelectFilter::make('tags')
->relationship('tags', 'name')
->label(__('label.tag.label'))
->multiple()
,
- Tables\Filters\SelectFilter::make('category')
+ SelectFilter::make('category')
->options(Category::query()->pluck('name', 'id')->toArray())
->label(__('label.torrent.category'))
->multiple()
,
];
foreach (SearchBox::$taxonomies as $torrentField => $tableModel) {
- $filters[] = Tables\Filters\SelectFilter::make($torrentField)
+ $filters[] = SelectFilter::make($torrentField)
->options(NexusDB::table($tableModel['table'])->orderBy('sort_index')->orderBy('id')->pluck('name', 'id'))
->multiple()
;
}
- $filters[] = Tables\Filters\Filter::make('added_begin')
- ->form([
- Forms\Components\DatePicker::make('added_begin')
+ $filters[] = Filter::make('added_begin')
+ ->schema([
+ DatePicker::make('added_begin')
->maxDate(now())
->label(__('label.torrent.added_begin'))
,
@@ -472,9 +493,9 @@ class TorrentResource extends Resource
return $query->when($data['added_begin'], fn (Builder $query, $value) => $query->where("added", '>=', $value));
})
;
- $filters[] = Tables\Filters\Filter::make('added_end')
- ->form([
- Forms\Components\DatePicker::make('added_end')
+ $filters[] = Filter::make('added_end')
+ ->schema([
+ DatePicker::make('added_end')
->maxDate(now())
->label(__('label.torrent.added_end'))
,
@@ -482,9 +503,9 @@ class TorrentResource extends Resource
return $query->when($data['added_end'], fn (Builder $query, $value) => $query->where("added", '<=', $value));
})
;
- $filters[] = Tables\Filters\Filter::make('size_begin')
- ->form([
- Forms\Components\TextInput::make('size_begin')
+ $filters[] = Filter::make('size_begin')
+ ->schema([
+ TextInput::make('size_begin')
->numeric()
->placeholder('GB')
->label(__('label.torrent.size_begin'))
@@ -493,9 +514,9 @@ class TorrentResource extends Resource
return $query->when($data['size_begin'], fn (Builder $query, $value) => $query->where("size", '>=', $value * 1024 * 1024 * 1024));
})
;
- $filters[] = Tables\Filters\Filter::make('size_end')
- ->form([
- Forms\Components\TextInput::make('size_end')
+ $filters[] = Filter::make('size_end')
+ ->schema([
+ TextInput::make('size_end')
->numeric()
->placeholder('GB')
->label(__('label.torrent.size_end'))
diff --git a/app/Filament/Resources/Torrent/TorrentResource/Pages/EditTorrent.php b/app/Filament/Resources/Torrent/TorrentResource/Pages/EditTorrent.php
index 69241f89..bed81702 100644
--- a/app/Filament/Resources/Torrent/TorrentResource/Pages/EditTorrent.php
+++ b/app/Filament/Resources/Torrent/TorrentResource/Pages/EditTorrent.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Torrent\TorrentResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\Torrent\TorrentResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditTorrent extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/AttendanceLogResource.php b/app/Filament/Resources/User/AttendanceLogResource.php
index b22b3bf2..ab055581 100644
--- a/app/Filament/Resources/User/AttendanceLogResource.php
+++ b/app/Filament/Resources/User/AttendanceLogResource.php
@@ -2,13 +2,20 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\IconColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Forms\Components\DatePicker;
+use App\Filament\Resources\User\AttendanceLogResource\Pages\ManageAttendanceLogs;
use App\Filament\OptionsTrait;
use App\Filament\Resources\User\AttendanceLogResource\Pages;
use App\Filament\Resources\User\AttendanceLogResource\RelationManagers;
use App\Models\AttendanceLog;
use Carbon\Carbon;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -21,9 +28,9 @@ class AttendanceLogResource extends Resource
protected static ?string $model = AttendanceLog::class;
- protected static ?string $navigationIcon = 'heroicon-o-pencil-square';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-pencil-square';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 11;
@@ -37,10 +44,10 @@ class AttendanceLogResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -49,34 +56,34 @@ class AttendanceLogResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')->formatStateUsing(fn ($state) => username_for_admin($state)),
- Tables\Columns\TextColumn::make('date')->label(__('attendance.fields.date'))->sortable(),
- Tables\Columns\TextColumn::make('points')->label(__('attendance.fields.points')),
- Tables\Columns\IconColumn::make('is_retroactive')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')->formatStateUsing(fn ($state) => username_for_admin($state)),
+ TextColumn::make('date')->label(__('attendance.fields.date'))->sortable(),
+ TextColumn::make('points')->label(__('attendance.fields.points')),
+ IconColumn::make('is_retroactive')
->label(__('attendance.fields.is_retroactive'))
->boolean(true)
,
- Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at')),
+ TextColumn::make('created_at')->label(__('label.created_at')),
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('id')
- ->form([
- Forms\Components\TextInput::make('id')
+ Filter::make('id')
+ ->schema([
+ TextInput::make('id')
->placeholder('UID')
,
])->query(function (Builder $query, array $data) {
return $query->when($data['id'], fn (Builder $query, $value) => $query->where("uid", $value));
})
,
- Tables\Filters\SelectFilter::make('is_retroactive')
+ SelectFilter::make('is_retroactive')
->options(self::getYesNoOptions())
->label(__('attendance.fields.is_retroactive'))
,
- Tables\Filters\Filter::make('date')
- ->form([
- Forms\Components\DatePicker::make('date')
+ Filter::make('date')
+ ->schema([
+ DatePicker::make('date')
->maxDate(now())
->label(__('attendance.fields.date'))
,
@@ -84,9 +91,9 @@ class AttendanceLogResource extends Resource
return $query->when($data['date'], fn (Builder $query, $value) => $query->where("date", $value));
})
,
- Tables\Filters\Filter::make('created_at')
- ->form([
- Forms\Components\DatePicker::make('created_at')
+ Filter::make('created_at')
+ ->schema([
+ DatePicker::make('created_at')
->label(__('label.created_at'))
,
])->query(function (Builder $query, array $data) {
@@ -98,16 +105,16 @@ class AttendanceLogResource extends Resource
})
,
])
- ->actions([
+ ->recordActions([
])
- ->bulkActions([
+ ->toolbarActions([
]);
}
public static function getPages(): array
{
return [
- 'index' => Pages\ManageAttendanceLogs::route('/'),
+ 'index' => ManageAttendanceLogs::route('/'),
];
}
}
diff --git a/app/Filament/Resources/User/AttendanceLogResource/Pages/ManageAttendanceLogs.php b/app/Filament/Resources/User/AttendanceLogResource/Pages/ManageAttendanceLogs.php
index dd589814..ae799f7a 100644
--- a/app/Filament/Resources/User/AttendanceLogResource/Pages/ManageAttendanceLogs.php
+++ b/app/Filament/Resources/User/AttendanceLogResource/Pages/ManageAttendanceLogs.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\User\AttendanceLogResource\Pages;
+use Filament\Actions\CreateAction;
use App\Filament\PageListSingle;
use App\Filament\Resources\User\AttendanceLogResource;
use Filament\Pages\Actions;
@@ -14,7 +15,7 @@ class ManageAttendanceLogs extends PageListSingle
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/BonusLogResource.php b/app/Filament/Resources/User/BonusLogResource.php
index fa949bfb..b1524696 100644
--- a/app/Filament/Resources/User/BonusLogResource.php
+++ b/app/Filament/Resources/User/BonusLogResource.php
@@ -2,11 +2,16 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use App\Filament\Resources\User\BonusLogResource\Pages\ManageBonusLogs;
use App\Filament\Resources\User\BonusLogResource\Pages;
use App\Filament\Resources\User\BonusLogResource\RelationManagers;
use App\Models\BonusLogs;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +24,9 @@ class BonusLogResource extends Resource
{
protected static ?string $model = BonusLogs::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 10;
@@ -35,10 +40,10 @@ class BonusLogResource extends Resource
return sprintf('%s(%s)', get_model_label(static::getModel()), __('bonus-log.exclude_seeding_bonus'));
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -47,38 +52,38 @@ class BonusLogResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')
->formatStateUsing(fn ($state) => username_for_admin($state))
->label(__('label.username'))
,
- Tables\Columns\TextColumn::make('business_type_text')
+ TextColumn::make('business_type_text')
->label(__('bonus-log.fields.business_type'))
,
- Tables\Columns\TextColumn::make('old_total_value')
+ TextColumn::make('old_total_value')
->label(__('bonus-log.fields.old_total_value'))
->formatStateUsing(fn ($state) => $state >= 0 ? number_format($state) : '-')
,
- Tables\Columns\TextColumn::make('value')
+ TextColumn::make('value')
->formatStateUsing(fn ($record) => $record->old_total_value > $record->new_total_value ? "-" . number_format($record->value) : "+" . number_format($record->value))
->label(__('bonus-log.fields.value'))
,
- Tables\Columns\TextColumn::make('new_total_value')
+ TextColumn::make('new_total_value')
->label(__('bonus-log.fields.new_total_value'))
->formatStateUsing(fn ($state) => $state >= 0 ? number_format($state) : '-')
,
- Tables\Columns\TextColumn::make('comment')
+ TextColumn::make('comment')
->label(__('label.comment'))
,
- Tables\Columns\TextColumn::make('created_at')
+ TextColumn::make('created_at')
->label(__('label.created_at'))
,
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label(__('label.username'))
->placeholder('UID')
,
@@ -86,7 +91,7 @@ class BonusLogResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $value) => $query->where("uid", $value));
})
,
- Tables\Filters\SelectFilter::make('business_type')
+ SelectFilter::make('business_type')
->options(BonusLogs::listStaticProps(Arr::except(BonusLogs::$businessTypes, BonusLogs::$businessTypeBonus), 'bonus-log.business_types', true))
->label(__('bonus-log.fields.business_type'))
,
@@ -101,11 +106,11 @@ class BonusLogResource extends Resource
// ->default()
// ,
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
// Tables\Actions\DeleteAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -113,7 +118,7 @@ class BonusLogResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageBonusLogs::route('/'),
+ 'index' => ManageBonusLogs::route('/'),
];
}
}
diff --git a/app/Filament/Resources/User/ClaimResource.php b/app/Filament/Resources/User/ClaimResource.php
index e1ddc843..8c36aa4e 100644
--- a/app/Filament/Resources/User/ClaimResource.php
+++ b/app/Filament/Resources/User/ClaimResource.php
@@ -2,11 +2,18 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\BooleanColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use App\Filament\Resources\User\ClaimResource\Pages\ListClaims;
+use App\Filament\Resources\User\ClaimResource\Pages\CreateClaim;
+use App\Filament\Resources\User\ClaimResource\Pages\EditClaim;
use App\Filament\Resources\User\ClaimResource\Pages;
use App\Filament\Resources\User\ClaimResource\RelationManagers;
use App\Models\Claim;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -19,9 +26,9 @@ class ClaimResource extends Resource
{
protected static ?string $model = Claim::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 4;
@@ -35,10 +42,10 @@ class ClaimResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -47,27 +54,27 @@ class ClaimResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')->searchable(),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')->searchable(),
+ TextColumn::make('user.username')
->label(__('label.user.label'))
->searchable()
->formatStateUsing(fn ($record) => new HtmlString(get_username($record->uid, false, true, true, true)))
,
- Tables\Columns\TextColumn::make('torrent.name')->limit(40)->label(__('label.torrent.label'))->searchable(),
- Tables\Columns\TextColumn::make('torrent.size')->label(__('label.torrent.size'))->formatStateUsing(fn (Model $record) => mksize($record->torrent->size)),
- Tables\Columns\TextColumn::make('torrent.added')->label(__('label.torrent.ttl'))->formatStateUsing(fn (Model $record) => mkprettytime(abs($record->torrent->added->diffInSeconds()))),
- Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at'))->dateTime(),
- Tables\Columns\TextColumn::make('last_settle_at')->label(__('label.claim.last_settle_at'))->dateTime(),
- Tables\Columns\TextColumn::make('seedTimeThisMonth')->label(__('label.claim.seed_time_this_month')),
- Tables\Columns\TextColumn::make('uploadedThisMonth')->label(__('label.claim.uploaded_this_month')),
- Tables\Columns\BooleanColumn::make('isReachedThisMonth')->label(__('label.claim.is_reached_this_month')),
+ TextColumn::make('torrent.name')->limit(40)->label(__('label.torrent.label'))->searchable(),
+ TextColumn::make('torrent.size')->label(__('label.torrent.size'))->formatStateUsing(fn (Model $record) => mksize($record->torrent->size)),
+ TextColumn::make('torrent.added')->label(__('label.torrent.ttl'))->formatStateUsing(fn (Model $record) => mkprettytime(abs($record->torrent->added->diffInSeconds()))),
+ TextColumn::make('created_at')->label(__('label.created_at'))->dateTime(),
+ TextColumn::make('last_settle_at')->label(__('label.claim.last_settle_at'))->dateTime(),
+ TextColumn::make('seedTimeThisMonth')->label(__('label.claim.seed_time_this_month')),
+ TextColumn::make('uploadedThisMonth')->label(__('label.claim.uploaded_this_month')),
+ BooleanColumn::make('isReachedThisMonth')->label(__('label.claim.is_reached_this_month')),
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label('UID')
->placeholder('UID')
,
@@ -75,9 +82,9 @@ class ClaimResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $uid) => $query->where("uid", $uid));
})
,
- Tables\Filters\Filter::make('torrent_id')
- ->form([
- Forms\Components\TextInput::make('torrent_id')
+ Filter::make('torrent_id')
+ ->schema([
+ TextInput::make('torrent_id')
->label(__('claim.fields.torrent_id'))
->placeholder(__('claim.fields.torrent_id'))
,
@@ -86,10 +93,10 @@ class ClaimResource extends Resource
})
,
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -109,9 +116,9 @@ class ClaimResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListClaims::route('/'),
- 'create' => Pages\CreateClaim::route('/create'),
- 'edit' => Pages\EditClaim::route('/{record}/edit'),
+ 'index' => ListClaims::route('/'),
+ 'create' => CreateClaim::route('/create'),
+ 'edit' => EditClaim::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/User/ClaimResource/Pages/EditClaim.php b/app/Filament/Resources/User/ClaimResource/Pages/EditClaim.php
index 3d42d0e6..2c241bd4 100644
--- a/app/Filament/Resources/User/ClaimResource/Pages/EditClaim.php
+++ b/app/Filament/Resources/User/ClaimResource/Pages/EditClaim.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\User\ClaimResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\ClaimResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditClaim extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/ExamUserResource.php b/app/Filament/Resources/User/ExamUserResource.php
index fd0d95df..58a7126f 100644
--- a/app/Filament/Resources/User/ExamUserResource.php
+++ b/app/Filament/Resources/User/ExamUserResource.php
@@ -2,6 +2,21 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\BooleanColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\ViewAction;
+use Filament\Actions\BulkAction;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Forms\Components\Textarea;
+use Filament\Schemas\Components\Grid;
+use Filament\Schemas\Components\Group;
+use Filament\Infolists\Components\TextEntry;
+use App\Filament\Resources\User\ExamUserResource\Pages\ListExamUsers;
+use App\Filament\Resources\User\ExamUserResource\Pages\ViewExamUser;
use App\Filament\Resources\User\ExamUserResource\Pages;
use App\Filament\Resources\User\ExamUserResource\RelationManagers;
use App\Models\Exam;
@@ -10,9 +25,7 @@ use App\Repositories\ExamRepository;
use App\Repositories\HitAndRunRepository;
use Carbon\Carbon;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Infolists\Components\ViewEntry;
-use Filament\Infolists\Infolist;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -28,9 +41,9 @@ class ExamUserResource extends Resource
{
protected static ?string $model = ExamUser::class;
- protected static ?string $navigationIcon = 'heroicon-o-shield-check';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-shield-check';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 2;
@@ -44,10 +57,10 @@ class ExamUserResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
]);
}
@@ -56,26 +69,26 @@ class ExamUserResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')->searchable(),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')->searchable(),
+ TextColumn::make('user.username')
->label(__('label.username'))
->searchable()
->formatStateUsing(fn ($record) => new HtmlString(get_username($record->uid, false, true, true, true)))
,
- Tables\Columns\TextColumn::make('exam.name')->label(__('label.exam.label')),
- Tables\Columns\TextColumn::make('exam.typeText')->label(__('exam.type')),
- Tables\Columns\TextColumn::make('begin')->label(__('label.begin'))->dateTime(),
- Tables\Columns\TextColumn::make('end')->label(__('label.end'))->dateTime(),
- Tables\Columns\BooleanColumn::make('is_done')->label(__('label.exam_user.is_done')),
- Tables\Columns\TextColumn::make('statusText')->label(__('label.status')),
- Tables\Columns\TextColumn::make('created_at')->dateTime()->label(__('label.created_at')),
+ TextColumn::make('exam.name')->label(__('label.exam.label')),
+ TextColumn::make('exam.typeText')->label(__('exam.type')),
+ TextColumn::make('begin')->label(__('label.begin'))->dateTime(),
+ TextColumn::make('end')->label(__('label.end'))->dateTime(),
+ BooleanColumn::make('is_done')->label(__('label.exam_user.is_done')),
+ TextColumn::make('statusText')->label(__('label.status')),
+ TextColumn::make('created_at')->dateTime()->label(__('label.created_at')),
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label('UID')
->placeholder('UID')
,
@@ -83,7 +96,7 @@ class ExamUserResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $uid) => $query->where("uid", $uid));
})
,
- Tables\Filters\SelectFilter::make('exam_type')
+ SelectFilter::make('exam_type')
->options(Exam::listTypeOptions())
->label(__('exam.type'))
->query(function (Builder $query, array $data) {
@@ -94,18 +107,18 @@ class ExamUserResource extends Resource
});
})
,
- Tables\Filters\SelectFilter::make('exam_id')
+ SelectFilter::make('exam_id')
->options(Exam::query()->pluck('name', 'id')->toArray())
->label(__('label.exam.label'))
,
- Tables\Filters\SelectFilter::make('status')->options(ExamUser::listStatus(true))->label(__("label.status")),
- Tables\Filters\SelectFilter::make('is_done')->options(['0' => 'No', '1' => 'yes'])->label(__('label.exam_user.is_done')),
+ SelectFilter::make('status')->options(ExamUser::listStatus(true))->label(__("label.status")),
+ SelectFilter::make('is_done')->options(['0' => 'No', '1' => 'yes'])->label(__('label.exam_user.is_done')),
])
- ->actions([
- Tables\Actions\ViewAction::make(),
+ ->recordActions([
+ ViewAction::make(),
])
->groupedBulkActions([
- Tables\Actions\BulkAction::make('Avoid')->action(function (Collection $records) {
+ BulkAction::make('Avoid')->action(function (Collection $records) {
$idArr = $records->pluck('id')->toArray();
$rep = new ExamRepository();
$rep->avoidExamUserBulk(['id' => $idArr], Auth::user());
@@ -115,13 +128,13 @@ class ExamUserResource extends Resource
->label(__('admin.resources.exam_user.bulk_action_avoid_label'))
->icon('heroicon-o-x-mark'),
- Tables\Actions\BulkAction::make('UpdateEnd')
+ BulkAction::make('UpdateEnd')
->form([
- Forms\Components\DateTimePicker::make('end')
+ DateTimePicker::make('end')
->required()
->label(__('label.end'))
,
- Forms\Components\Textarea::make('reason')
+ Textarea::make('reason')
->label(__('label.reason'))
,
])
@@ -142,44 +155,44 @@ class ExamUserResource extends Resource
]);
}
- public static function infolist(Infolist $infolist): Infolist
+ public static function infolist(Schema $schema): Schema
{
- return $infolist
- ->schema([
- Components\Grid::make(2)->schema([
- Components\Group::make([
- Infolists\Components\TextEntry::make('id'),
- Infolists\Components\TextEntry::make('statusText')
+ return $schema
+ ->components([
+ Grid::make(2)->schema([
+ Group::make([
+ TextEntry::make('id'),
+ TextEntry::make('statusText')
->label(__("label.status"))
,
- Infolists\Components\TextEntry::make('uid')
+ TextEntry::make('uid')
->formatStateUsing(fn ($record) => username_for_admin($record->uid))
->label(__("label.username"))
,
- Infolists\Components\TextEntry::make('exam.name')
+ TextEntry::make('exam.name')
// ->formatStateUsing(fn ($record) => $record->torrent->name)
->label(__("label.exam.label"))
,
- Infolists\Components\TextEntry::make('begin')
+ TextEntry::make('begin')
->label(__("label.begin"))
,
- Infolists\Components\TextEntry::make('end')
+ TextEntry::make('end')
->label(__("label.end"))
,
- Infolists\Components\TextEntry::make('isDoneText')
+ TextEntry::make('isDoneText')
->label(__("label.exam_user.is_done"))
,
- Infolists\Components\TextEntry::make('created_at')
+ TextEntry::make('created_at')
->label(__("label.created_at"))
,
- Infolists\Components\TextEntry::make('updated_at')
+ TextEntry::make('updated_at')
->label(__("label.updated_at"))
,
])
->columnSpan(1)
->columns(2)
,
- Components\Group::make([
+ Group::make([
ViewEntry::make('progressFormatted')
->label('进度')
->view('filament.resources.user.exam-user-resource.pages.detail-v3')
@@ -231,10 +244,10 @@ class ExamUserResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListExamUsers::route('/'),
+ 'index' => ListExamUsers::route('/'),
// 'create' => Pages\CreateExamUser::route('/create'),
// 'edit' => Pages\EditExamUser::route('/{record}/edit'),
- 'view' => Pages\ViewExamUser::route('/{record}'),
+ 'view' => ViewExamUser::route('/{record}'),
];
}
}
diff --git a/app/Filament/Resources/User/ExamUserResource/Pages/EditExamUser.php b/app/Filament/Resources/User/ExamUserResource/Pages/EditExamUser.php
index e8adae16..7d5da860 100644
--- a/app/Filament/Resources/User/ExamUserResource/Pages/EditExamUser.php
+++ b/app/Filament/Resources/User/ExamUserResource/Pages/EditExamUser.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\User\ExamUserResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\ExamUserResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditExamUser extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/ExamUserResource/Pages/ViewExamUser.php b/app/Filament/Resources/User/ExamUserResource/Pages/ViewExamUser.php
index 92970608..482af209 100644
--- a/app/Filament/Resources/User/ExamUserResource/Pages/ViewExamUser.php
+++ b/app/Filament/Resources/User/ExamUserResource/Pages/ViewExamUser.php
@@ -2,6 +2,12 @@
namespace App\Filament\Resources\User\ExamUserResource\Pages;
+use Filament\Actions\Action;
+use Exception;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Forms\Components\Textarea;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\ExamUserResource;
use App\Models\Exam;
use App\Repositories\ExamRepository;
@@ -75,7 +81,7 @@ class ViewExamUser extends ViewRecord
protected function getHeaderActions(): array
{
return [
- Actions\Action::make('Avoid')
+ Action::make('Avoid')
->requiresConfirmation()
->action(function () {
$examRep = new ExamRepository();
@@ -83,22 +89,22 @@ class ViewExamUser extends ViewRecord
$examRep->avoidExamUser($this->record->id);
send_admin_success_notification();
$this->record = $this->resolveRecord($this->record->id);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
})
->label(__('admin.resources.exam_user.action_avoid')),
- Actions\Action::make('UpdateEnd')
- ->mountUsing(fn (Forms\ComponentContainer $form) => $form->fill([
+ Action::make('UpdateEnd')
+ ->mountUsing(fn (Schema $schema) => $schema->fill([
'end' => $this->record->end,
]))
- ->form([
- Forms\Components\DateTimePicker::make('end')
+ ->schema([
+ DateTimePicker::make('end')
->required()
->label(__('label.end'))
,
- Forms\Components\Textarea::make('reason')
+ Textarea::make('reason')
->label(__('label.reason'))
,
])
@@ -108,13 +114,13 @@ class ViewExamUser extends ViewRecord
$examRep->updateExamUserEnd($this->record, Carbon::parse($data['end']), $data['reason'] ?? "");
send_admin_success_notification();
$this->record = $this->resolveRecord($this->record->id);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
})
->label(__('admin.resources.exam_user.action_update_end')),
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/HitAndRunResource.php b/app/Filament/Resources/User/HitAndRunResource.php
index ca9b09d0..1ccc8fcb 100644
--- a/app/Filament/Resources/User/HitAndRunResource.php
+++ b/app/Filament/Resources/User/HitAndRunResource.php
@@ -2,6 +2,18 @@
namespace App\Filament\Resources\User;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Forms\Components\DatePicker;
+use Filament\Actions\ViewAction;
+use Filament\Actions\BulkAction;
+use Filament\Actions\DeleteBulkAction;
+use Filament\Schemas\Schema;
+use Filament\Infolists\Components\TextEntry;
+use App\Filament\Resources\User\HitAndRunResource\Pages\ListHitAndRuns;
+use App\Filament\Resources\User\HitAndRunResource\Pages\ViewHitAndRun;
use App\Filament\Resources\User\HitAndRunResource\Pages;
use App\Filament\Resources\User\HitAndRunResource\RelationManagers;
use App\Models\HitAndRun;
@@ -9,7 +21,6 @@ use App\Models\User;
use App\Repositories\HitAndRunRepository;
use Filament\Forms;
use Filament\Forms\Form;
-use Filament\Infolists\Infolist;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -26,9 +37,9 @@ class HitAndRunResource extends Resource
{
protected static ?string $model = HitAndRun::class;
- protected static ?string $navigationIcon = 'heroicon-o-beaker';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-beaker';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 3;
@@ -46,28 +57,28 @@ class HitAndRunResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')->searchable(),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')->searchable(),
+ TextColumn::make('user.username')
->searchable()
->label(__('label.username'))
->formatStateUsing(fn ($record) => new HtmlString(get_username($record->uid, false, true, true, true)))
,
- Tables\Columns\TextColumn::make('torrent.name')->limit(30)->label(__('label.torrent.label')),
- Tables\Columns\TextColumn::make('snatch.uploadText')->label(__('label.uploaded')),
- Tables\Columns\TextColumn::make('snatch.downloadText')->label(__('label.downloaded')),
- Tables\Columns\TextColumn::make('snatch.shareRatio')->label(__('label.ratio')),
- Tables\Columns\TextColumn::make('seedTimeRequired')->label(__('label.seed_time_required')),
- Tables\Columns\TextColumn::make('inspectTimeLeft')->label(__('label.inspect_time_left')),
- Tables\Columns\TextColumn::make('statusText')->label(__('label.status')),
- Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at')),
+ TextColumn::make('torrent.name')->limit(30)->label(__('label.torrent.label')),
+ TextColumn::make('snatch.uploadText')->label(__('label.uploaded')),
+ TextColumn::make('snatch.downloadText')->label(__('label.downloaded')),
+ TextColumn::make('snatch.shareRatio')->label(__('label.ratio')),
+ TextColumn::make('seedTimeRequired')->label(__('label.seed_time_required')),
+ TextColumn::make('inspectTimeLeft')->label(__('label.inspect_time_left')),
+ TextColumn::make('statusText')->label(__('label.status')),
+ TextColumn::make('created_at')->label(__('label.created_at')),
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label('UID')
->placeholder('UID')
,
@@ -76,10 +87,10 @@ class HitAndRunResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $uid) => $query->where("uid", $uid));
})
,
- Tables\Filters\SelectFilter::make('status')->options(HitAndRun::listStatus(true))->label(__('label.status')),
- Tables\Filters\Filter::make('created_at_begin')
- ->form([
- Forms\Components\DatePicker::make('created_at_begin')
+ SelectFilter::make('status')->options(HitAndRun::listStatus(true))->label(__('label.status')),
+ Filter::make('created_at_begin')
+ ->schema([
+ DatePicker::make('created_at_begin')
->maxDate(now())
->label(__('label.created_at_begin'))
,
@@ -87,9 +98,9 @@ class HitAndRunResource extends Resource
return $query->when($data['created_at_begin'], fn (Builder $query, $value) => $query->where("created_at", '>=', $value));
})
,
- Tables\Filters\Filter::make('created_at_end')
- ->form([
- Forms\Components\DatePicker::make('created_at_end')
+ Filter::make('created_at_end')
+ ->schema([
+ DatePicker::make('created_at_end')
->maxDate(now())
->label(__('label.created_at_end'))
,
@@ -98,11 +109,11 @@ class HitAndRunResource extends Resource
})
,
])
- ->actions([
- Tables\Actions\ViewAction::make(),
+ ->recordActions([
+ ViewAction::make(),
])
->groupedBulkActions([
- Tables\Actions\BulkAction::make('Pardon')->action(function (Collection $records) {
+ BulkAction::make('Pardon')->action(function (Collection $records) {
$idArr = $records->pluck('id')->toArray();
$rep = new HitAndRunRepository();
$rep->bulkPardon(['id' => $idArr], Auth::user());
@@ -111,49 +122,49 @@ class HitAndRunResource extends Resource
->label(__('admin.resources.hit_and_run.bulk_action_pardon'))
->icon('heroicon-o-x-mark')
,
- Tables\Actions\DeleteBulkAction::make('bulkDelete')
+ DeleteBulkAction::make('bulkDelete')
]);
}
- public static function infolist(Infolist $infolist): Infolist
+ public static function infolist(Schema $schema): Schema
{
- return $infolist
- ->schema([
- Infolists\Components\TextEntry::make('id'),
- Infolists\Components\TextEntry::make('statusText')
+ return $schema
+ ->components([
+ TextEntry::make('id'),
+ TextEntry::make('statusText')
->label(__("label.status"))
,
- Infolists\Components\TextEntry::make('uid')
+ TextEntry::make('uid')
->formatStateUsing(fn ($record) => username_for_admin($record->uid))
->label(__("label.username"))
,
- Infolists\Components\TextEntry::make('torrent_id')
+ TextEntry::make('torrent_id')
->formatStateUsing(fn ($record) => $record->torrent->name)
->label(__("label.torrent.label"))
,
- Infolists\Components\TextEntry::make('snatch.uploadedText')
+ TextEntry::make('snatch.uploadedText')
->label(__("label.uploaded"))
,
- Infolists\Components\TextEntry::make('snatch.downloadedText')
+ TextEntry::make('snatch.downloadedText')
->label(__("label.downloaded"))
,
- Infolists\Components\TextEntry::make('snatch.shareRatio')
+ TextEntry::make('snatch.shareRatio')
->label(__("label.ratio"))
,
- Infolists\Components\TextEntry::make('seedTimeRequired')
+ TextEntry::make('seedTimeRequired')
->label(__("label.seed_time_required"))
,
- Infolists\Components\TextEntry::make('inspectTimeLeft')
+ TextEntry::make('inspectTimeLeft')
->label(__("label.inspect_time_left"))
,
- Infolists\Components\TextEntry::make('comment')
+ TextEntry::make('comment')
->formatStateUsing(fn ($record) => new HtmlString(nl2br($record->comment)))
->label(__("label.comment"))
,
- Infolists\Components\TextEntry::make('created_at')
+ TextEntry::make('created_at')
->label(__("label.created_at"))
,
- Infolists\Components\TextEntry::make('updated_at')
+ TextEntry::make('updated_at')
->label(__("label.updated_at"))
,
])->columns(4);
@@ -175,10 +186,10 @@ class HitAndRunResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListHitAndRuns::route('/'),
+ 'index' => ListHitAndRuns::route('/'),
// 'create' => Pages\CreateHitAndRun::route('/create'),
// 'edit' => Pages\EditHitAndRun::route('/{record}/edit'),
- 'view' => Pages\ViewHitAndRun::route('/{record}'),
+ 'view' => ViewHitAndRun::route('/{record}'),
];
}
}
diff --git a/app/Filament/Resources/User/HitAndRunResource/Pages/EditHitAndRun.php b/app/Filament/Resources/User/HitAndRunResource/Pages/EditHitAndRun.php
index 3a2fdb38..82e6bdb6 100644
--- a/app/Filament/Resources/User/HitAndRunResource/Pages/EditHitAndRun.php
+++ b/app/Filament/Resources/User/HitAndRunResource/Pages/EditHitAndRun.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\User\HitAndRunResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\HitAndRunResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditHitAndRun extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/HitAndRunResource/Pages/ViewHitAndRun.php b/app/Filament/Resources/User/HitAndRunResource/Pages/ViewHitAndRun.php
index a2d1ef7c..c80e5d60 100644
--- a/app/Filament/Resources/User/HitAndRunResource/Pages/ViewHitAndRun.php
+++ b/app/Filament/Resources/User/HitAndRunResource/Pages/ViewHitAndRun.php
@@ -2,6 +2,9 @@
namespace App\Filament\Resources\User\HitAndRunResource\Pages;
+use Filament\Actions\Action;
+use Exception;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\HitAndRunResource;
use App\Models\HitAndRun;
use App\Repositories\HitAndRunRepository;
@@ -82,7 +85,7 @@ class ViewHitAndRun extends ViewRecord
{
$actions = [];
if (in_array($this->record->status, HitAndRun::CAN_PARDON_STATUS)) {
- $actions[] = Actions\Action::make('Pardon')
+ $actions[] = Action::make('Pardon')
->requiresConfirmation()
->action(function () {
$hitAndRunRep = new HitAndRunRepository();
@@ -90,14 +93,14 @@ class ViewHitAndRun extends ViewRecord
$hitAndRunRep->pardon($this->record->id, Auth::user());
send_admin_success_notification();
$this->record = $this->resolveRecord($this->record->id);
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
})
->label(__('admin.resources.hit_and_run.action_pardon'))
;
}
- $actions[] = Actions\DeleteAction::make();
+ $actions[] = DeleteAction::make();
return $actions;
}
diff --git a/app/Filament/Resources/User/InviteResource.php b/app/Filament/Resources/User/InviteResource.php
index 3988f50e..b9842784 100644
--- a/app/Filament/Resources/User/InviteResource.php
+++ b/app/Filament/Resources/User/InviteResource.php
@@ -2,12 +2,21 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\IconColumn;
+use App\Filament\Resources\User\InviteResource\Pages\ListInvites;
+use App\Filament\Resources\User\InviteResource\Pages\CreateInvite;
+use App\Filament\Resources\User\InviteResource\Pages\EditInvite;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Forms\Components\DatePicker;
use App\Filament\OptionsTrait;
use App\Filament\Resources\User\InviteResource\Pages;
use App\Filament\Resources\User\InviteResource\RelationManagers;
use App\Models\Invite;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -20,9 +29,9 @@ class InviteResource extends Resource
protected static ?string $model = Invite::class;
- protected static ?string $navigationIcon = 'heroicon-o-user-plus';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-user-plus';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 7;
@@ -36,10 +45,10 @@ class InviteResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -48,51 +57,51 @@ class InviteResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('inviter')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('inviter')
->label(__('invite.fields.inviter'))
->formatStateUsing(fn ($state) => username_for_admin($state))
,
- Tables\Columns\TextColumn::make('invitee')
+ TextColumn::make('invitee')
->label(__('invite.fields.invitee'))
->searchable()
,
- Tables\Columns\TextColumn::make('hash')
+ TextColumn::make('hash')
,
- Tables\Columns\TextColumn::make('time_invited')
+ TextColumn::make('time_invited')
->label(__('invite.fields.time_invited'))
,
- Tables\Columns\IconColumn::make('valid')
+ IconColumn::make('valid')
->label(__('invite.fields.valid'))
->boolean()
,
- Tables\Columns\TextColumn::make('invitee_register_uid')
+ TextColumn::make('invitee_register_uid')
->label(__('invite.fields.invitee_register_uid'))
->searchable()
,
- Tables\Columns\TextColumn::make('invitee_register_email')
+ TextColumn::make('invitee_register_email')
->label(__('invite.fields.invitee_register_email'))
->searchable()
,
- Tables\Columns\TextColumn::make('invitee_register_username')
+ TextColumn::make('invitee_register_username')
->label(__('invite.fields.invitee_register_username'))
->searchable()
,
- Tables\Columns\TextColumn::make('expired_at')
+ TextColumn::make('expired_at')
->label(__('invite.fields.expired_at'))
->formatStateUsing(fn ($state) => format_datetime($state))
,
- Tables\Columns\TextColumn::make('created_at')
+ TextColumn::make('created_at')
->label(__('label.created_at'))
->formatStateUsing(fn ($state) => format_datetime($state))
,
])
->defaultSort('id', 'desc')
->filters(self::getFilters())
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -107,18 +116,18 @@ class InviteResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListInvites::route('/'),
- 'create' => Pages\CreateInvite::route('/create'),
- 'edit' => Pages\EditInvite::route('/{record}/edit'),
+ 'index' => ListInvites::route('/'),
+ 'create' => CreateInvite::route('/create'),
+ 'edit' => EditInvite::route('/{record}/edit'),
];
}
private static function getFilters()
{
$filters = [];
- $filters[] = Tables\Filters\Filter::make('inviter')
- ->form([
- Forms\Components\TextInput::make('inviter')
+ $filters[] = Filter::make('inviter')
+ ->schema([
+ TextInput::make('inviter')
->label(__('invite.fields.inviter'))
->placeholder('UID')
,
@@ -126,13 +135,13 @@ class InviteResource extends Resource
return $query->when($data['inviter'], fn (Builder $query, $value) => $query->where("inviter", $value));
})
;
- $filters[] = Tables\Filters\SelectFilter::make('valid')
+ $filters[] = SelectFilter::make('valid')
->options(self::getYesNoOptions())
->label(__('invite.fields.valid'))
;
- $filters[] = Tables\Filters\Filter::make('time_invited_begin')
- ->form([
- Forms\Components\DatePicker::make('time_invited_begin')
+ $filters[] = Filter::make('time_invited_begin')
+ ->schema([
+ DatePicker::make('time_invited_begin')
->maxDate(now())
->label(__('invite.fields.time_invited_begin'))
,
@@ -140,9 +149,9 @@ class InviteResource extends Resource
return $query->when($data['time_invited_begin'], fn (Builder $query, $value) => $query->where("time_invited", '>=', $value));
})
;
- $filters[] = Tables\Filters\Filter::make('time_invited_end')
- ->form([
- Forms\Components\DatePicker::make('time_invited_end')
+ $filters[] = Filter::make('time_invited_end')
+ ->schema([
+ DatePicker::make('time_invited_end')
->maxDate(now())
->label(__('invite.fields.time_invited_end'))
,
diff --git a/app/Filament/Resources/User/InviteResource/Pages/EditInvite.php b/app/Filament/Resources/User/InviteResource/Pages/EditInvite.php
index 77fa6859..b04a0973 100644
--- a/app/Filament/Resources/User/InviteResource/Pages/EditInvite.php
+++ b/app/Filament/Resources/User/InviteResource/Pages/EditInvite.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\User\InviteResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\InviteResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditInvite extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/LoginLogResource.php b/app/Filament/Resources/User/LoginLogResource.php
index e4aacab5..04262b16 100644
--- a/app/Filament/Resources/User/LoginLogResource.php
+++ b/app/Filament/Resources/User/LoginLogResource.php
@@ -2,11 +2,15 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use App\Filament\Resources\User\LoginLogResource\Pages\ManageLoginLogs;
use App\Filament\Resources\User\LoginLogResource\Pages;
use App\Filament\Resources\User\LoginLogResource\RelationManagers;
use App\Models\LoginLog;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +21,9 @@ class LoginLogResource extends Resource
{
protected static ?string $model = LoginLog::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 9;
@@ -33,10 +37,10 @@ class LoginLogResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -45,22 +49,22 @@ class LoginLogResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')
->formatStateUsing(fn ($state) => username_for_admin($state))
->label(__('label.username'))
,
- Tables\Columns\TextColumn::make('ip')->searchable(),
- Tables\Columns\TextColumn::make('country')->label(__('label.country'))->searchable(),
- Tables\Columns\TextColumn::make('city')->label(__('label.city'))->searchable(),
- Tables\Columns\TextColumn::make('client')->label(__('label.client')),
- Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at')),
+ TextColumn::make('ip')->searchable(),
+ TextColumn::make('country')->label(__('label.country'))->searchable(),
+ TextColumn::make('city')->label(__('label.city'))->searchable(),
+ TextColumn::make('client')->label(__('label.client')),
+ TextColumn::make('created_at')->label(__('label.created_at')),
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label(__('label.username'))
->placeholder('UID')
,
@@ -69,11 +73,11 @@ class LoginLogResource extends Resource
})
,
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
// Tables\Actions\DeleteAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -81,7 +85,7 @@ class LoginLogResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageLoginLogs::route('/'),
+ 'index' => ManageLoginLogs::route('/'),
];
}
}
diff --git a/app/Filament/Resources/User/TokenResource.php b/app/Filament/Resources/User/TokenResource.php
index 15c69e9f..38ceb5a4 100644
--- a/app/Filament/Resources/User/TokenResource.php
+++ b/app/Filament/Resources/User/TokenResource.php
@@ -2,11 +2,16 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\BulkActionGroup;
+use Filament\Actions\DeleteBulkAction;
+use App\Filament\Resources\User\TokenResource\Pages\ManageTokens;
use App\Filament\Resources\User\TokenResource\Pages;
use App\Filament\Resources\User\TokenResource\RelationManagers;
use App\Models\PersonalAccessToken;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
@@ -18,9 +23,9 @@ class TokenResource extends Resource
{
protected static ?string $model = PersonalAccessToken::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 6;
@@ -34,10 +39,10 @@ class TokenResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -46,31 +51,31 @@ class TokenResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
- Tables\Columns\TextColumn::make('abilities')
+ TextColumn::make('id'),
+ TextColumn::make('name')->label(__('label.name')),
+ TextColumn::make('abilities')
->label(__('token.permission'))
->formatStateUsing(fn ($record): string => $record->abilitiesText)
,
- Tables\Columns\TextColumn::make('token')->label(__('token.token')),
- Tables\Columns\TextColumn::make('tokenable_id')
+ TextColumn::make('token')->label(__('token.token')),
+ TextColumn::make('tokenable_id')
->label(__('label.username'))
->formatStateUsing(fn ($state) => username_for_admin($state))
,
- Tables\Columns\TextColumn::make('last_used_at')->label(__('token.last_used_at')),
- Tables\Columns\TextColumn::make('expires_at')->label(__('label.expire_at')),
- Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at')),
+ TextColumn::make('last_used_at')->label(__('token.last_used_at')),
+ TextColumn::make('expires_at')->label(__('label.expire_at')),
+ TextColumn::make('created_at')->label(__('label.created_at')),
])
->filters([
//
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\BulkActionGroup::make([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ BulkActionGroup::make([
+ DeleteBulkAction::make(),
]),
]);
}
@@ -78,7 +83,7 @@ class TokenResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageTokens::route('/'),
+ 'index' => ManageTokens::route('/'),
];
}
}
diff --git a/app/Filament/Resources/User/TorrentBuyLogResource.php b/app/Filament/Resources/User/TorrentBuyLogResource.php
index 37fa4597..c6545cf3 100644
--- a/app/Filament/Resources/User/TorrentBuyLogResource.php
+++ b/app/Filament/Resources/User/TorrentBuyLogResource.php
@@ -2,11 +2,17 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use App\Filament\Resources\User\TorrentBuyLogResource\Pages\ListTorrentBuyLogs;
+use App\Filament\Resources\User\TorrentBuyLogResource\Pages\CreateTorrentBuyLog;
+use App\Filament\Resources\User\TorrentBuyLogResource\Pages\EditTorrentBuyLog;
use App\Filament\Resources\User\TorrentBuyLogResource\Pages;
use App\Filament\Resources\User\TorrentBuyLogResource\RelationManagers;
use App\Models\TorrentBuyLog;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -17,9 +23,9 @@ class TorrentBuyLogResource extends Resource
{
protected static ?string $model = TorrentBuyLog::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 10;
@@ -33,10 +39,10 @@ class TorrentBuyLogResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -45,29 +51,29 @@ class TorrentBuyLogResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')
->formatStateUsing(fn ($state) => username_for_admin($state))
->label(__('label.username'))
,
- Tables\Columns\TextColumn::make('torrent_id')
+ TextColumn::make('torrent_id')
->formatStateUsing(fn ($record) => torrent_name_for_admin($record->torrent))
->label(__('label.torrent.label'))
,
- Tables\Columns\TextColumn::make('price')
+ TextColumn::make('price')
->formatStateUsing(fn ($state) => number_format($state))
->label(__('label.price'))
,
- Tables\Columns\TextColumn::make('created_at')
+ TextColumn::make('created_at')
->formatStateUsing(fn ($state) => format_datetime($state))
->label(__('label.created_at'))
,
])
->defaultSort('id','desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label(__('label.username'))
->placeholder('UID')
,
@@ -75,9 +81,9 @@ class TorrentBuyLogResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $value) => $query->where("uid", $value));
})
,
- Tables\Filters\Filter::make('torrent_id')
- ->form([
- Forms\Components\TextInput::make('torrent_id')
+ Filter::make('torrent_id')
+ ->schema([
+ TextInput::make('torrent_id')
->label(__('label.torrent.label'))
->placeholder('Torrent ID')
,
@@ -86,10 +92,10 @@ class TorrentBuyLogResource extends Resource
})
,
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\DeleteBulkAction::make(),
]);
}
@@ -104,9 +110,9 @@ class TorrentBuyLogResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListTorrentBuyLogs::route('/'),
- 'create' => Pages\CreateTorrentBuyLog::route('/create'),
- 'edit' => Pages\EditTorrentBuyLog::route('/{record}/edit'),
+ 'index' => ListTorrentBuyLogs::route('/'),
+ 'create' => CreateTorrentBuyLog::route('/create'),
+ 'edit' => EditTorrentBuyLog::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/User/TorrentBuyLogResource/Pages/EditTorrentBuyLog.php b/app/Filament/Resources/User/TorrentBuyLogResource/Pages/EditTorrentBuyLog.php
index 275864c5..572532f9 100644
--- a/app/Filament/Resources/User/TorrentBuyLogResource/Pages/EditTorrentBuyLog.php
+++ b/app/Filament/Resources/User/TorrentBuyLogResource/Pages/EditTorrentBuyLog.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\User\TorrentBuyLogResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\TorrentBuyLogResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditTorrentBuyLog extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/UserMedalResource.php b/app/Filament/Resources/User/UserMedalResource.php
index ec99e715..16948f7c 100644
--- a/app/Filament/Resources/User/UserMedalResource.php
+++ b/app/Filament/Resources/User/UserMedalResource.php
@@ -2,6 +2,21 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\ImageColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\BulkActionGroup;
+use Filament\Actions\DeleteBulkAction;
+use Filament\Actions\BulkAction;
+use Exception;
+use Filament\Forms\Components\DateTimePicker;
+use App\Filament\Resources\User\UserMedalResource\Pages\ListUserMedals;
+use App\Filament\Resources\User\UserMedalResource\Pages\CreateUserMedal;
+use App\Filament\Resources\User\UserMedalResource\Pages\EditUserMedal;
use App\Filament\OptionsTrait;
use App\Filament\Resources\User\UserMedalResource\Pages;
use App\Filament\Resources\User\UserMedalResource\RelationManagers;
@@ -11,7 +26,6 @@ use App\Models\UserMedal;
use App\Repositories\MedalRepository;
use Carbon\Carbon;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -26,9 +40,9 @@ class UserMedalResource extends Resource
protected static ?string $model = UserMedal::class;
- protected static ?string $navigationIcon = 'heroicon-o-flag';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-flag';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 5;
@@ -42,10 +56,10 @@ class UserMedalResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -54,25 +68,25 @@ class UserMedalResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')->searchable(),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')->searchable(),
+ TextColumn::make('user.username')
->label(__('label.username'))
->searchable()
->formatStateUsing(fn ($record) => new HtmlString(get_username($record->uid, false, true, true, true)))
,
- Tables\Columns\TextColumn::make('medal.name')->label(__('label.medal.label'))->searchable(),
- Tables\Columns\ImageColumn::make('medal.image_large')->label(__('label.image')),
- Tables\Columns\TextColumn::make('expire_at')->label(__('label.expire_at')),
- Tables\Columns\TextColumn::make('bonus_addition_expire_at')->label(__('medal.bonus_addition_expire_at')),
- Tables\Columns\TextColumn::make('wearingStatusText')->label(__('label.status')),
- Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at')),
+ TextColumn::make('medal.name')->label(__('label.medal.label'))->searchable(),
+ ImageColumn::make('medal.image_large')->label(__('label.image')),
+ TextColumn::make('expire_at')->label(__('label.expire_at')),
+ TextColumn::make('bonus_addition_expire_at')->label(__('medal.bonus_addition_expire_at')),
+ TextColumn::make('wearingStatusText')->label(__('label.status')),
+ TextColumn::make('created_at')->label(__('label.created_at')),
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label('UID')
->placeholder('UID')
,
@@ -80,11 +94,11 @@ class UserMedalResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $uid) => $query->where("uid", $uid));
})
,
- Tables\Filters\SelectFilter::make('medal_id')
+ SelectFilter::make('medal_id')
->options(Medal::query()->pluck('name', 'id')->toArray())
->label(__('medal.label'))
,
- Tables\Filters\SelectFilter::make('is_expired')
+ SelectFilter::make('is_expired')
->options(self::getYesNoOptions())
->label(__('medal.is_expired'))
->query(function (Builder $query, array $data) {
@@ -100,7 +114,7 @@ class UserMedalResource extends Resource
}
})
,
- Tables\Filters\SelectFilter::make('is_bonus_addition_expired')
+ SelectFilter::make('is_bonus_addition_expired')
->options(self::getYesNoOptions())
->label(__('medal.is_bonus_addition_expired'))
->query(function (Builder $query, array $data) {
@@ -116,41 +130,41 @@ class UserMedalResource extends Resource
}
})
,
- Tables\Filters\SelectFilter::make('status')
+ SelectFilter::make('status')
->options(UserMedal::listWearingStatusLabels())
->label(__('label.status'))
,
])
- ->actions([
- Tables\Actions\DeleteAction::make()->using(function (NexusModel $record) {
+ ->recordActions([
+ DeleteAction::make()->using(function (NexusModel $record) {
$record->delete();
clear_user_cache($record->uid);
})
])
- ->bulkActions([
- Tables\Actions\BulkActionGroup::make([
+ ->toolbarActions([
+ BulkActionGroup::make([
self::buildBulkActionIncreaseExpireAt('expire_at'),
self::buildBulkActionUpdateExpireAt('expire_at'),
self::buildBulkActionCancelExpireAt('expire_at'),
])->label(sprintf("%s-%s", __('label.bulk'), __('label.expire_at'))),
- Tables\Actions\BulkActionGroup::make([
+ BulkActionGroup::make([
self::buildBulkActionIncreaseExpireAt('bonus_addition_expire_at'),
self::buildBulkActionUpdateExpireAt('bonus_addition_expire_at'),
self::buildBulkActionCancelExpireAt('bonus_addition_expire_at'),
])->label(sprintf("%s-%s", __('label.bulk'), __('medal.bonus_addition_expire_at'))),
- Tables\Actions\DeleteBulkAction::make(),
+ DeleteBulkAction::make(),
])
->selectCurrentPageOnly()
;
}
- private static function buildBulkActionIncreaseExpireAt(string $filed): Tables\Actions\BulkAction
+ private static function buildBulkActionIncreaseExpireAt(string $filed): BulkAction
{
- return Tables\Actions\BulkAction::make("bulkActionIncrease$filed")
+ return BulkAction::make("bulkActionIncrease$filed")
->label(__('medal.bulk_action_increase'))
->modalHeading(__('medal.bulk_action_increase_' . $filed))
->form([
- Forms\Components\TextInput::make('increase_duration')
+ TextInput::make('increase_duration')
->label(__('medal.increase_duration'))
->helperText(__('medal.increase_duration_help'))
->integer()
@@ -161,7 +175,7 @@ class UserMedalResource extends Resource
$rep = new MedalRepository();
$rep->increaseExpireAt($collection, $filed, $data['increase_duration']);
send_admin_success_notification();
- } catch (\Exception $e) {
+ } catch (Exception $e) {
send_admin_fail_notification($e->getMessage());
}
})
@@ -169,13 +183,13 @@ class UserMedalResource extends Resource
;
}
- private static function buildBulkActionUpdateExpireAt(string $filed): Tables\Actions\BulkAction
+ private static function buildBulkActionUpdateExpireAt(string $filed): BulkAction
{
- return Tables\Actions\BulkAction::make("bulkActionUpdate$filed")
+ return BulkAction::make("bulkActionUpdate$filed")
->label(__('medal.bulk_action_update'))
->modalHeading(__('medal.bulk_action_update_' . $filed))
->form([
- Forms\Components\DateTimePicker::make('update_expire_at')
+ DateTimePicker::make('update_expire_at')
->label(__('medal.update_expire_at'))
->helperText(__('medal.update_expire_at_help'))
->required(),
@@ -186,7 +200,7 @@ class UserMedalResource extends Resource
$rep = new MedalRepository();
$rep->updateExpireAt($collection, $filed, $expireAt);
send_admin_success_notification();
- } catch (\Exception $e) {
+ } catch (Exception $e) {
send_admin_fail_notification($e->getMessage());
}
})
@@ -194,9 +208,9 @@ class UserMedalResource extends Resource
;
}
- private static function buildBulkActionCancelExpireAt(string $filed): Tables\Actions\BulkAction
+ private static function buildBulkActionCancelExpireAt(string $filed): BulkAction
{
- return Tables\Actions\BulkAction::make("bulkActionCancel$filed")
+ return BulkAction::make("bulkActionCancel$filed")
->label(__('medal.bulk_action_cancel'))
->modalHeading(__('medal.bulk_action_cancel_' . $filed))
->requiresConfirmation()
@@ -205,7 +219,7 @@ class UserMedalResource extends Resource
$rep = new MedalRepository();
$rep->cancelExpireAt($collection, $filed);
send_admin_success_notification();
- } catch (\Exception $e) {
+ } catch (Exception $e) {
send_admin_fail_notification($e->getMessage());
}
})
@@ -228,9 +242,9 @@ class UserMedalResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListUserMedals::route('/'),
- 'create' => Pages\CreateUserMedal::route('/create'),
- 'edit' => Pages\EditUserMedal::route('/{record}/edit'),
+ 'index' => ListUserMedals::route('/'),
+ 'create' => CreateUserMedal::route('/create'),
+ 'edit' => EditUserMedal::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/User/UserMedalResource/Pages/EditUserMedal.php b/app/Filament/Resources/User/UserMedalResource/Pages/EditUserMedal.php
index 84daf540..da6585b6 100644
--- a/app/Filament/Resources/User/UserMedalResource/Pages/EditUserMedal.php
+++ b/app/Filament/Resources/User/UserMedalResource/Pages/EditUserMedal.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\User\UserMedalResource\Pages;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\UserMedalResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
@@ -13,7 +14,7 @@ class EditUserMedal extends EditRecord
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/UserMetaResource.php b/app/Filament/Resources/User/UserMetaResource.php
index 6696c4e0..58ca0a63 100644
--- a/app/Filament/Resources/User/UserMetaResource.php
+++ b/app/Filament/Resources/User/UserMetaResource.php
@@ -2,12 +2,20 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\DeleteAction;
+use App\Filament\Resources\User\UserMetaResource\Pages\ListUserMetas;
+use App\Filament\Resources\User\UserMetaResource\Pages\CreateUserMeta;
+use App\Filament\Resources\User\UserMetaResource\Pages\EditUserMeta;
use App\Filament\Resources\User\UserMetaResource\Pages;
use App\Filament\Resources\User\UserMetaResource\RelationManagers;
use App\Models\NexusModel;
use App\Models\UserMeta;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
@@ -20,9 +28,9 @@ class UserMetaResource extends Resource
{
protected static ?string $model = UserMeta::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 8;
@@ -36,10 +44,10 @@ class UserMetaResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -48,28 +56,28 @@ class UserMetaResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable(),
- Tables\Columns\TextColumn::make('uid')
+ TextColumn::make('id')->sortable(),
+ TextColumn::make('uid')
->searchable()
->label(__('label.username'))
->formatStateUsing(fn ($state) => username_for_admin($state))
,
- Tables\Columns\TextColumn::make('meta_key_text')
+ TextColumn::make('meta_key_text')
->label(__('label.name'))
,
- Tables\Columns\TextColumn::make('deadline')
+ TextColumn::make('deadline')
->label(__('label.deadline'))
,
- Tables\Columns\TextColumn::make('created_at')
+ TextColumn::make('created_at')
->label(__('label.created_at'))
->formatStateUsing(fn ($state) => format_datetime($state))
,
])
->defaultSort('id', 'desc')
->filters([
- Tables\Filters\Filter::make('uid')
- ->form([
- Forms\Components\TextInput::make('uid')
+ Filter::make('uid')
+ ->schema([
+ TextInput::make('uid')
->label(__('label.username'))
->placeholder('UID')
,
@@ -77,19 +85,19 @@ class UserMetaResource extends Resource
return $query->when($data['uid'], fn (Builder $query, $value) => $query->where("uid", $value));
})
,
- Tables\Filters\SelectFilter::make('meta_key')
+ SelectFilter::make('meta_key')
->options(UserMeta::listProps())
->label(__('label.name'))
,
])
- ->actions([
- Tables\Actions\DeleteAction::make()->using(function (NexusModel $record) {
+ ->recordActions([
+ DeleteAction::make()->using(function (NexusModel $record) {
$record->delete();
clear_user_cache($record->uid);
do_log(sprintf("user: %d meta: %s was del by %s", $record->uid, $record->meta_key, Auth::user()->username));
}),
])
- ->bulkActions([
+ ->toolbarActions([
]);
}
@@ -103,9 +111,9 @@ class UserMetaResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListUserMetas::route('/'),
- 'create' => Pages\CreateUserMeta::route('/create'),
- 'edit' => Pages\EditUserMeta::route('/{record}/edit'),
+ 'index' => ListUserMetas::route('/'),
+ 'create' => CreateUserMeta::route('/create'),
+ 'edit' => EditUserMeta::route('/{record}/edit'),
];
}
}
diff --git a/app/Filament/Resources/User/UserMetaResource/Pages/CreateUserMeta.php b/app/Filament/Resources/User/UserMetaResource/Pages/CreateUserMeta.php
index 29c5e4a0..80b77d9f 100644
--- a/app/Filament/Resources/User/UserMetaResource/Pages/CreateUserMeta.php
+++ b/app/Filament/Resources/User/UserMetaResource/Pages/CreateUserMeta.php
@@ -2,11 +2,12 @@
namespace App\Filament\Resources\User\UserMetaResource\Pages;
+use Filament\Actions\Contracts\HasActions;
use App\Filament\Resources\User\UserMetaResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\CreateRecord;
-class CreateUserMeta extends CreateRecord
+class CreateUserMeta extends CreateRecord implements HasActions
{
protected static string $resource = UserMetaResource::class;
}
diff --git a/app/Filament/Resources/User/UserMetaResource/Pages/EditUserMeta.php b/app/Filament/Resources/User/UserMetaResource/Pages/EditUserMeta.php
index 4a2ba3cf..e5470ef3 100644
--- a/app/Filament/Resources/User/UserMetaResource/Pages/EditUserMeta.php
+++ b/app/Filament/Resources/User/UserMetaResource/Pages/EditUserMeta.php
@@ -2,18 +2,20 @@
namespace App\Filament\Resources\User\UserMetaResource\Pages;
+use Filament\Actions\Contracts\HasActions;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\UserMetaResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
-class EditUserMeta extends EditRecord
+class EditUserMeta extends EditRecord implements HasActions
{
protected static string $resource = UserMetaResource::class;
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/UserMetaResource/Pages/ListUserMetas.php b/app/Filament/Resources/User/UserMetaResource/Pages/ListUserMetas.php
index bcc4e4b7..373c69eb 100644
--- a/app/Filament/Resources/User/UserMetaResource/Pages/ListUserMetas.php
+++ b/app/Filament/Resources/User/UserMetaResource/Pages/ListUserMetas.php
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\User\UserMetaResource\Pages;
+use Filament\Actions\Contracts\HasActions;
use App\Filament\PageList;
use App\Filament\Resources\User\UserMetaResource;
use App\Models\UserMeta;
@@ -9,7 +10,7 @@ use Filament\Pages\Actions;
use Filament\Resources\Pages\ListRecords;
use Illuminate\Database\Eloquent\Builder;
-class ListUserMetas extends PageList
+class ListUserMetas extends PageList implements HasActions
{
protected static string $resource = UserMetaResource::class;
diff --git a/app/Filament/Resources/User/UserModifyLogResource.php b/app/Filament/Resources/User/UserModifyLogResource.php
index cd39d7f0..f7d8d26f 100644
--- a/app/Filament/Resources/User/UserModifyLogResource.php
+++ b/app/Filament/Resources/User/UserModifyLogResource.php
@@ -2,11 +2,15 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Forms\Components\TextInput;
+use App\Filament\Resources\User\UserModifyLogResource\Pages\ManageUserModifyLogs;
use App\Filament\Resources\User\UserModifyLogResource\Pages;
use App\Filament\Resources\User\UserModifyLogResource\RelationManagers;
use App\Models\UserModifyLog;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
@@ -17,9 +21,9 @@ class UserModifyLogResource extends Resource
{
protected static ?string $model = UserModifyLog::class;
- protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-rectangle-stack';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 100;
@@ -33,10 +37,10 @@ class UserModifyLogResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
+ return $schema
+ ->components([
//
]);
}
@@ -45,28 +49,28 @@ class UserModifyLogResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id'),
- Tables\Columns\TextColumn::make('user_id')->label('UID'),
- Tables\Columns\TextColumn::make('user.username')
+ TextColumn::make('id'),
+ TextColumn::make('user_id')->label('UID'),
+ TextColumn::make('user.username')
->label(nexus_trans("label.username"))
->formatStateUsing(fn ($record) => username_for_admin($record->user_id))
,
- Tables\Columns\TextColumn::make('content')->label(nexus_trans("user-modify-log.content")),
- Tables\Columns\TextColumn::make('created_at')->label(nexus_trans("label.created_at")),
+ TextColumn::make('content')->label(nexus_trans("user-modify-log.content")),
+ TextColumn::make('created_at')->label(nexus_trans("label.created_at")),
])
->filters([
- Tables\Filters\Filter::make('user_id')
- ->form([
- Forms\Components\TextInput::make('user_id')
+ Filter::make('user_id')
+ ->schema([
+ TextInput::make('user_id')
->label(__('UID'))
,
])->query(function (Builder $query, array $data) {
return $query->when($data['user_id'], fn (Builder $query, $value) => $query->where("user_id", $value));
})
,
- Tables\Filters\Filter::make('user')
- ->form([
- Forms\Components\TextInput::make('username')
+ Filter::make('user')
+ ->schema([
+ TextInput::make('username')
->label(__('label.username'))
,
])->query(function (Builder $query, array $data) {
@@ -75,9 +79,9 @@ class UserModifyLogResource extends Resource
}));
})
,
- Tables\Filters\Filter::make('content')
- ->form([
- Forms\Components\TextInput::make('content')
+ Filter::make('content')
+ ->schema([
+ TextInput::make('content')
->label(__('user-modify-log.content'))
,
])->query(function (Builder $query, array $data) {
@@ -86,11 +90,11 @@ class UserModifyLogResource extends Resource
,
])
->defaultSort('id', 'desc')
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
// Tables\Actions\DeleteAction::make(),
])
- ->bulkActions([
+ ->toolbarActions([
// Tables\Actions\BulkActionGroup::make([
// Tables\Actions\DeleteBulkAction::make(),
// ]),
@@ -100,7 +104,7 @@ class UserModifyLogResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ManageUserModifyLogs::route('/'),
+ 'index' => ManageUserModifyLogs::route('/'),
];
}
}
diff --git a/app/Filament/Resources/User/UserModifyLogResource/Pages/ManageUserModifyLogs.php b/app/Filament/Resources/User/UserModifyLogResource/Pages/ManageUserModifyLogs.php
index 0df51808..746e3468 100644
--- a/app/Filament/Resources/User/UserModifyLogResource/Pages/ManageUserModifyLogs.php
+++ b/app/Filament/Resources/User/UserModifyLogResource/Pages/ManageUserModifyLogs.php
@@ -2,12 +2,13 @@
namespace App\Filament\Resources\User\UserModifyLogResource\Pages;
+use Filament\Actions\Contracts\HasActions;
use App\Filament\PageListSingle;
use App\Filament\Resources\User\UserModifyLogResource;
use Filament\Actions;
use Filament\Resources\Pages\ManageRecords;
-class ManageUserModifyLogs extends PageListSingle
+class ManageUserModifyLogs extends PageListSingle implements HasActions
{
protected static string $resource = UserModifyLogResource::class;
diff --git a/app/Filament/Resources/User/UserResource.php b/app/Filament/Resources/User/UserResource.php
index 380bacf9..50384478 100644
--- a/app/Filament/Resources/User/UserResource.php
+++ b/app/Filament/Resources/User/UserResource.php
@@ -2,6 +2,26 @@
namespace App\Filament\Resources\User;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use App\Filament\Resources\User\UserResource\Pages\CreateUser;
+use Filament\Forms\Components\Select;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\Column;
+use Filament\Tables\Columns\BadgeColumn;
+use Filament\Tables\Filters\Filter;
+use Filament\Tables\Filters\SelectFilter;
+use Filament\Actions\ViewAction;
+use Filament\Schemas\Components\Group;
+use Filament\Infolists\Components\TextEntry;
+use Filament\Forms\Components\Radio;
+use Filament\Schemas\Components\Utilities\Get;
+use Filament\Forms\Components\DateTimePicker;
+use Exception;
+use Filament\Forms\Components\Hidden;
+use App\Filament\Resources\User\UserResource\Pages\ListUsers;
+use App\Filament\Resources\User\UserResource\Pages\UserProfile;
+use Filament\Actions\BulkAction;
use App\Filament\OptionsTrait;
use App\Filament\Resources\User\UserResource\Pages;
use App\Filament\Resources\User\UserResource\RelationManagers;
@@ -10,12 +30,10 @@ use App\Repositories\UserRepository;
use Filament\Actions\Action;
use Filament\Forms;
use Filament\Forms\Components\Grid;
-use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables;
use Filament\Infolists;
-use Filament\Infolists\Infolist;
use Filament\Infolists\Components;
use Illuminate\Database\Eloquent\Builder;
@@ -30,9 +48,9 @@ class UserResource extends Resource
protected static ?string $model = User::class;
- protected static ?string $navigationIcon = 'heroicon-o-users';
+ protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-users';
- protected static ?string $navigationGroup = 'User';
+ protected static string | \UnitEnum | null $navigationGroup = 'User';
protected static ?int $navigationSort = 1;
@@ -56,16 +74,16 @@ class UserResource extends Resource
return self::getNavigationLabel();
}
- public static function form(Form $form): Form
+ public static function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('username')->required(),
- Forms\Components\TextInput::make('email')->required(),
- Forms\Components\TextInput::make('password')->password()->required()->visibleOn(Pages\CreateUser::class),
- Forms\Components\TextInput::make('password_confirmation')->password()->required()->same('password')->visibleOn(Pages\CreateUser::class),
- Forms\Components\TextInput::make('id')->integer(),
- Forms\Components\Select::make('class')->options(User::listClass(User::CLASS_PEASANT, Auth::user()->class - 1)),
+ return $schema
+ ->components([
+ TextInput::make('username')->required(),
+ TextInput::make('email')->required(),
+ TextInput::make('password')->password()->required()->visibleOn(CreateUser::class),
+ TextInput::make('password_confirmation')->password()->required()->same('password')->visibleOn(CreateUser::class),
+ TextInput::make('id')->integer(),
+ Select::make('class')->options(User::listClass(User::CLASS_PEASANT, Auth::user()->class - 1)),
]);
}
@@ -73,108 +91,108 @@ class UserResource extends Resource
{
return $table
->columns([
- Tables\Columns\TextColumn::make('id')->sortable()->searchable(),
- Tables\Columns\TextColumn::make('username')->searchable()->label(__("label.user.username"))
+ TextColumn::make('id')->sortable()->searchable(),
+ TextColumn::make('username')->searchable()->label(__("label.user.username"))
->formatStateUsing(fn ($record) => new HtmlString(get_username($record->id, false, true, true, true))),
- Tables\Columns\TextColumn::make('email')->searchable()->label(__("label.email")),
- Tables\Columns\TextColumn::make('class')->label('Class')
- ->formatStateUsing(fn(Tables\Columns\Column $column) => $column->getRecord()->classText)
+ TextColumn::make('email')->searchable()->label(__("label.email")),
+ TextColumn::make('class')->label('Class')
+ ->formatStateUsing(fn(Column $column) => $column->getRecord()->classText)
->sortable()->label(__("label.user.class")),
- Tables\Columns\TextColumn::make('uploaded')->label('Uploaded')
- ->formatStateUsing(fn(Tables\Columns\Column $column) => $column->getRecord()->uploadedText)
+ TextColumn::make('uploaded')->label('Uploaded')
+ ->formatStateUsing(fn(Column $column) => $column->getRecord()->uploadedText)
->sortable()->label(__("label.uploaded")),
- Tables\Columns\TextColumn::make('downloaded')->label('Downloaded')
- ->formatStateUsing(fn(Tables\Columns\Column $column) => $column->getRecord()->downloadedText)
+ TextColumn::make('downloaded')->label('Downloaded')
+ ->formatStateUsing(fn(Column $column) => $column->getRecord()->downloadedText)
->sortable()->label(__("label.downloaded")),
- Tables\Columns\BadgeColumn::make('status')->colors(['success' => 'confirmed', 'warning' => 'pending'])->label(__("label.user.status")),
- Tables\Columns\BadgeColumn::make('enabled')->colors(['success' => 'yes', 'danger' => 'no'])->label(__("label.user.enabled")),
- Tables\Columns\BadgeColumn::make('downloadpos')->colors(['success' => 'yes', 'danger' => 'no'])->label(__("label.user.downloadpos")),
- Tables\Columns\BadgeColumn::make('parked')->colors(['success' => 'yes', 'danger' => 'no'])->label(__("label.user.parked")),
- Tables\Columns\TextColumn::make('added')->sortable()->dateTime('Y-m-d H:i')->label(__("label.added")),
- Tables\Columns\TextColumn::make('last_access')->dateTime('Y-m-d H:i')->label(__("label.last_access")),
+ BadgeColumn::make('status')->colors(['success' => 'confirmed', 'warning' => 'pending'])->label(__("label.user.status")),
+ BadgeColumn::make('enabled')->colors(['success' => 'yes', 'danger' => 'no'])->label(__("label.user.enabled")),
+ BadgeColumn::make('downloadpos')->colors(['success' => 'yes', 'danger' => 'no'])->label(__("label.user.downloadpos")),
+ BadgeColumn::make('parked')->colors(['success' => 'yes', 'danger' => 'no'])->label(__("label.user.parked")),
+ TextColumn::make('added')->sortable()->dateTime('Y-m-d H:i')->label(__("label.added")),
+ TextColumn::make('last_access')->dateTime('Y-m-d H:i')->label(__("label.last_access")),
])
->defaultSort('added', 'desc')
->filters([
- Tables\Filters\Filter::make('id')
- ->form([
- Forms\Components\TextInput::make('id')
+ Filter::make('id')
+ ->schema([
+ TextInput::make('id')
->placeholder('UID')
,
])->query(function (Builder $query, array $data) {
return $query->when($data['id'], fn (Builder $query, $id) => $query->where("id", $id));
})
,
- Tables\Filters\SelectFilter::make('class')->options(array_column(User::$classes, 'text'))->label(__('label.user.class')),
- Tables\Filters\SelectFilter::make('status')->options(['confirmed' => 'confirmed', 'pending' => 'pending'])->label(__('label.user.status')),
- Tables\Filters\SelectFilter::make('enabled')->options(self::$yesOrNo)->label(__('label.user.enabled')),
- Tables\Filters\SelectFilter::make('downloadpos')->options(self::$yesOrNo)->label(__('label.user.downloadpos')),
- Tables\Filters\SelectFilter::make('parked')->options(self::$yesOrNo)->label(__('label.user.parked')),
+ SelectFilter::make('class')->options(array_column(User::$classes, 'text'))->label(__('label.user.class')),
+ SelectFilter::make('status')->options(['confirmed' => 'confirmed', 'pending' => 'pending'])->label(__('label.user.status')),
+ SelectFilter::make('enabled')->options(self::$yesOrNo)->label(__('label.user.enabled')),
+ SelectFilter::make('downloadpos')->options(self::$yesOrNo)->label(__('label.user.downloadpos')),
+ SelectFilter::make('parked')->options(self::$yesOrNo)->label(__('label.user.parked')),
])
- ->actions([
- Tables\Actions\ViewAction::make(),
+ ->recordActions([
+ ViewAction::make(),
])
- ->bulkActions(self::getBulkActions());
+ ->toolbarActions(self::getBulkActions());
}
- public static function infolist(Infolist $infolist): Infolist
+ public static function infolist(Schema $schema): Schema
{
- return $infolist
- ->schema([
- Components\Grid::make(2)->schema([
- Components\Group::make([
- Infolists\Components\TextEntry::make('id')->label("UID"),
- Infolists\Components\TextEntry::make('username')
+ return $schema
+ ->components([
+ \Filament\Schemas\Components\Grid::make(2)->schema([
+ Group::make([
+ TextEntry::make('id')->label("UID"),
+ TextEntry::make('username')
->label(__("label.user.username"))
->formatStateUsing(fn ($record) => get_username($record->id, false, true, true, true))
->html()
,
- Infolists\Components\TextEntry::make('email')
+ TextEntry::make('email')
->label(__("label.email"))
->copyable()
->placeholder("点击复制")
,
- Infolists\Components\TextEntry::make('passkey')->limit(10)->copyable(),
- Infolists\Components\TextEntry::make('added')->label(__("label.added")),
- Infolists\Components\TextEntry::make('last_access')->label(__("label.last_access")),
- Infolists\Components\TextEntry::make('inviter.username')->label(__("label.user.invite_by")),
- Infolists\Components\TextEntry::make('parked')->label(__("label.user.parked")),
- Infolists\Components\TextEntry::make('offer_allowed_count')->label(__("label.user.offer_allowed_count")),
- Infolists\Components\TextEntry::make('seed_points')->label(__("label.user.seed_points")),
- Infolists\Components\TextEntry::make('uploadedText')->label(__("label.uploaded")),
- Infolists\Components\TextEntry::make('downloadedText')->label(__("label.downloaded")),
- Infolists\Components\TextEntry::make('seedbonus')->label(__("label.user.seedbonus")),
- Infolists\Components\TextEntry::make('seed_points')->label(__("label.user.seed_points")),
+ TextEntry::make('passkey')->limit(10)->copyable(),
+ TextEntry::make('added')->label(__("label.added")),
+ TextEntry::make('last_access')->label(__("label.last_access")),
+ TextEntry::make('inviter.username')->label(__("label.user.invite_by")),
+ TextEntry::make('parked')->label(__("label.user.parked")),
+ TextEntry::make('offer_allowed_count')->label(__("label.user.offer_allowed_count")),
+ TextEntry::make('seed_points')->label(__("label.user.seed_points")),
+ TextEntry::make('uploadedText')->label(__("label.uploaded")),
+ TextEntry::make('downloadedText')->label(__("label.downloaded")),
+ TextEntry::make('seedbonus')->label(__("label.user.seedbonus")),
+ TextEntry::make('seed_points')->label(__("label.user.seed_points")),
])
->columns(6)
->columnSpan(4)
,
- Components\Group::make([
- Infolists\Components\TextEntry::make('status')
+ Group::make([
+ TextEntry::make('status')
->label(__('label.user.status'))
->badge()
->colors(['success' => User::STATUS_CONFIRMED, 'warning' => User::STATUS_PENDING])
->hintAction(self::buildActionConfirm())
,
- Infolists\Components\TextEntry::make('classText')
+ TextEntry::make('classText')
->label(__("label.user.class"))
->hintAction(self::buildActionChangeClass())
,
- Infolists\Components\TextEntry::make('enabled')
+ TextEntry::make('enabled')
->label(__("label.user.enabled"))
->badge()
->colors(['success' => 'yes', 'warning' => 'no'])
->hintAction(self::buildActionEnableDisable())
,
- Infolists\Components\TextEntry::make('downloadpos')
+ TextEntry::make('downloadpos')
->label(__("label.user.downloadpos"))
->badge()
->colors(['success' => 'yes', 'warning' => 'no'])
->hintAction(self::buildActionChangeDownloadPos())
,
- Infolists\Components\TextEntry::make('twoFactorAuthenticationStatus')
+ TextEntry::make('twoFactorAuthenticationStatus')
->label(__("label.user.two_step_authentication"))
->badge()
->colors(['success' => 'yes', 'warning' => 'no'])
@@ -186,34 +204,34 @@ class UserResource extends Resource
]);
}
- private static function buildActionChangeClass(): Infolists\Components\Actions\Action
+ private static function buildActionChangeClass(): Action
{
- return Infolists\Components\Actions\Action::make("changeClass")
+ return Action::make("changeClass")
->label(__('label.change'))
->button()
->visible(fn (User $record): bool => (Auth::user()->class > $record->class))
- ->form([
- Forms\Components\Select::make('class')
+ ->schema([
+ Select::make('class')
->options(User::listClass(User::CLASS_PEASANT, Auth::user()->class - 1))
->default(fn (User $record) => $record->class)
->label(__('user.labels.class'))
->required()
->reactive()
,
- Forms\Components\Radio::make('vip_added')
+ Radio::make('vip_added')
->options(self::getYesNoOptions('yes', 'no'))
->default(fn (User $record) => $record->vip_added)
->label(__('user.labels.vip_added'))
->helperText(__('user.labels.vip_added_help'))
- ->hidden(fn (\Filament\Forms\Get $get) => $get('class') != User::CLASS_VIP)
+ ->hidden(fn (Get $get) => $get('class') != User::CLASS_VIP)
,
- Forms\Components\DateTimePicker::make('vip_until')
+ DateTimePicker::make('vip_until')
->default(fn (User $record) => $record->vip_until)
->label(__('user.labels.vip_until'))
->helperText(__('user.labels.vip_until_help'))
- ->hidden(fn (\Filament\Forms\Get $get) => $get('class') != User::CLASS_VIP)
+ ->hidden(fn (Get $get) => $get('class') != User::CLASS_VIP)
,
- Forms\Components\TextInput::make('reason')
+ TextInput::make('reason')
->label(__('admin.resources.user.actions.enable_disable_reason'))
->placeholder(__('admin.resources.user.actions.enable_disable_reason_placeholder'))
,
@@ -223,15 +241,15 @@ class UserResource extends Resource
try {
$userRep->changeClass(Auth::user(), $record, $data['class'], $data['reason'], $data);
send_admin_success_notification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
});
}
- private static function buildActionConfirm(): Infolists\Components\Actions\Action
+ private static function buildActionConfirm(): Action
{
- return Infolists\Components\Actions\Action::make(__('admin.resources.user.actions.confirm_btn'))
+ return Action::make(__('admin.resources.user.actions.confirm_btn'))
->modalHeading(__('admin.resources.user.actions.confirm_btn'))
->requiresConfirmation()
->visible(fn (User $record): bool => (Auth::user()->class > $record->class))
@@ -250,17 +268,17 @@ class UserResource extends Resource
});
}
- private static function buildActionEnableDisable(): Infolists\Components\Actions\Action
+ private static function buildActionEnableDisable(): Action
{
- return Infolists\Components\Actions\Action::make("changeClass")
+ return Action::make("changeClass")
->label(fn (User $record) => $record->enabled == 'yes' ? __('admin.resources.user.actions.disable_modal_btn') : __('admin.resources.user.actions.enable_modal_btn'))
->modalHeading(fn (User $record) => $record->enabled == 'yes' ? __('admin.resources.user.actions.disable_modal_title') : __('admin.resources.user.actions.enable_modal_title'))
->button()
->visible(fn (User $record): bool => (Auth::user()->class > $record->class))
- ->form([
- Forms\Components\TextInput::make('reason')->label(__('admin.resources.user.actions.enable_disable_reason'))->placeholder(__('admin.resources.user.actions.enable_disable_reason_placeholder')),
- Forms\Components\Hidden::make('action')->default(fn (User $record) => $record->enabled == 'yes' ? 'disable' : 'enable'),
- Forms\Components\Hidden::make('uid')->default(fn (User $record) => $record->id),
+ ->schema([
+ TextInput::make('reason')->label(__('admin.resources.user.actions.enable_disable_reason'))->placeholder(__('admin.resources.user.actions.enable_disable_reason_placeholder')),
+ Hidden::make('action')->default(fn (User $record) => $record->enabled == 'yes' ? 'disable' : 'enable'),
+ Hidden::make('uid')->default(fn (User $record) => $record->id),
])
->action(function (User $record, array $data) {
$userRep = self::getRep();
@@ -271,15 +289,15 @@ class UserResource extends Resource
$userRep->disableUser(Auth::user(), $data['uid'], $data['reason']);
}
send_admin_success_notification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
});
}
- private static function buildActionChangeDownloadPos(): Infolists\Components\Actions\Action
+ private static function buildActionChangeDownloadPos(): Action
{
- return Infolists\Components\Actions\Action::make("changeDownloadPos")
+ return Action::make("changeDownloadPos")
->label(fn (User $record) => $record->downloadpos == 'yes' ? __('admin.resources.user.actions.disable_download_privileges_btn') : __('admin.resources.user.actions.enable_download_privileges_btn'))
->button()
->requiresConfirmation()
@@ -289,16 +307,16 @@ class UserResource extends Resource
try {
$userRep->updateDownloadPrivileges(Auth::user(), $record->id, $record->downloadpos == 'yes' ? 'no' : 'yes');
send_admin_success_notification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
});
}
- private static function buildActionCancelTwoStepAuthentication(): Infolists\Components\Actions\Action
+ private static function buildActionCancelTwoStepAuthentication(): Action
{
- return Infolists\Components\Actions\Action::make("twoStepAuthentication")
+ return Action::make("twoStepAuthentication")
->label(__('admin.resources.user.actions.disable_two_step_authentication'))
->button()
->visible(fn (User $record) => $record->two_step_secret != "")
@@ -309,7 +327,7 @@ class UserResource extends Resource
try {
$userRep->removeTwoStepAuthentication(Auth::user(), $record->id);
send_admin_success_notification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
});
@@ -326,11 +344,11 @@ class UserResource extends Resource
public static function getPages(): array
{
return [
- 'index' => Pages\ListUsers::route('/'),
- 'create' => Pages\CreateUser::route('/create'),
+ 'index' => ListUsers::route('/'),
+ 'create' => CreateUser::route('/create'),
// 'edit' => Pages\EditUser::route('/{record}/edit'),
// 'view' => Pages\ViewUser::route('/{record}'),
- 'view' => Pages\UserProfile::route('/{record}'),
+ 'view' => UserProfile::route('/{record}'),
];
}
@@ -338,7 +356,7 @@ class UserResource extends Resource
{
$actions = [];
if (filament()->auth()->user()->class >= User::CLASS_SYSOP) {
- $actions[] = Tables\Actions\BulkAction::make('confirm')
+ $actions[] = BulkAction::make('confirm')
->label(__('admin.resources.user.actions.confirm_bulk'))
->requiresConfirmation()
->deselectRecordsAfterCompletion()
diff --git a/app/Filament/Resources/User/UserResource/Pages/CreateUser.php b/app/Filament/Resources/User/UserResource/Pages/CreateUser.php
index 7a6e28a5..0f72acd2 100644
--- a/app/Filament/Resources/User/UserResource/Pages/CreateUser.php
+++ b/app/Filament/Resources/User/UserResource/Pages/CreateUser.php
@@ -2,13 +2,15 @@
namespace App\Filament\Resources\User\UserResource\Pages;
+use Filament\Actions\Contracts\HasActions;
+use Exception;
use App\Filament\Resources\User\UserResource;
use App\Repositories\UserRepository;
use Filament\Pages\Actions;
use Filament\Resources\Pages\CreateRecord;
use Illuminate\Database\Eloquent\Model;
-class CreateUser extends CreateRecord
+class CreateUser extends CreateRecord implements HasActions
{
protected static string $resource = UserResource::class;
@@ -20,7 +22,7 @@ class CreateUser extends CreateRecord
$this->record = $userRep->store($data);
send_admin_success_notification();
$this->redirect($this->getRedirectUrl());
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
send_admin_fail_notification($exception->getMessage());
}
}
diff --git a/app/Filament/Resources/User/UserResource/Pages/EditUser.php b/app/Filament/Resources/User/UserResource/Pages/EditUser.php
index 0a8532c0..e923b5e5 100644
--- a/app/Filament/Resources/User/UserResource/Pages/EditUser.php
+++ b/app/Filament/Resources/User/UserResource/Pages/EditUser.php
@@ -2,18 +2,20 @@
namespace App\Filament\Resources\User\UserResource\Pages;
+use Filament\Actions\Contracts\HasActions;
+use Filament\Actions\DeleteAction;
use App\Filament\Resources\User\UserResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
-class EditUser extends EditRecord
+class EditUser extends EditRecord implements HasActions
{
protected static string $resource = UserResource::class;
protected function getHeaderActions(): array
{
return [
- Actions\DeleteAction::make(),
+ DeleteAction::make(),
];
}
}
diff --git a/app/Filament/Resources/User/UserResource/Pages/ListUsers.php b/app/Filament/Resources/User/UserResource/Pages/ListUsers.php
index 0dbd3cf1..559c3b0d 100644
--- a/app/Filament/Resources/User/UserResource/Pages/ListUsers.php
+++ b/app/Filament/Resources/User/UserResource/Pages/ListUsers.php
@@ -2,6 +2,9 @@
namespace App\Filament\Resources\User\UserResource\Pages;
+use Filament\Actions\Contracts\HasActions;
+use Filament\Actions\CreateAction;
+use Filament\Tables\Enums\FiltersLayout;
use App\Filament\PageList;
use App\Filament\Resources\User\UserResource;
use Filament\Pages\Actions;
@@ -9,14 +12,14 @@ use Filament\Resources\Pages\ListRecords;
use Illuminate\Database\Eloquent\Model;
use Filament\Tables\Filters\Layout;
-class ListUsers extends PageList
+class ListUsers extends PageList implements HasActions
{
protected static string $resource = UserResource::class;
protected function getHeaderActions(): array
{
return [
- Actions\CreateAction::make(),
+ CreateAction::make(),
];
}
@@ -28,7 +31,7 @@ class ListUsers extends PageList
protected function getTableFiltersLayout(): ?string
{
- return \Filament\Tables\Enums\FiltersLayout::AboveContent;
+ return FiltersLayout::AboveContent;
}
}
diff --git a/app/Filament/Resources/User/UserResource/Pages/UserProfile.php b/app/Filament/Resources/User/UserResource/Pages/UserProfile.php
index fb157bdd..428bdf8e 100644
--- a/app/Filament/Resources/User/UserResource/Pages/UserProfile.php
+++ b/app/Filament/Resources/User/UserResource/Pages/UserProfile.php
@@ -2,6 +2,16 @@
namespace App\Filament\Resources\User\UserResource\Pages;
+use Filament\Actions\Contracts\HasActions;
+use Filament\Actions\Action;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Hidden;
+use Exception;
+use Filament\Forms\Components\Radio;
+use Filament\Schemas\Components\Utilities\Get;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Actions\DeleteAction;
use App\Filament\OptionsTrait;
use App\Filament\Resources\User\UserResource;
use App\Models\Exam;
@@ -23,7 +33,7 @@ use Filament\Resources\Pages\ViewRecord;
use Illuminate\Support\Facades\Auth;
use Nexus\Database\NexusDB;
-class UserProfile extends ViewRecord
+class UserProfile extends ViewRecord implements HasActions
{
use InteractsWithRecord;
use HasRelationManagers;
@@ -71,15 +81,15 @@ class UserProfile extends ViewRecord
return $actions;
}
- private function buildEnableDisableAction(): Actions\Action
+ private function buildEnableDisableAction(): Action
{
- return Actions\Action::make('enable_disable')
+ return Action::make('enable_disable')
->label($this->record->enabled == 'yes' ? __('admin.resources.user.actions.disable_modal_btn') : __('admin.resources.user.actions.enable_modal_btn'))
->modalHeading($this->record->enabled == 'yes' ? __('admin.resources.user.actions.disable_modal_title') : __('admin.resources.user.actions.enable_modal_title'))
- ->form([
- Forms\Components\TextInput::make('reason')->label(__('admin.resources.user.actions.enable_disable_reason'))->placeholder(__('admin.resources.user.actions.enable_disable_reason_placeholder')),
- Forms\Components\Hidden::make('action')->default($this->record->enabled == 'yes' ? 'disable' : 'enable'),
- Forms\Components\Hidden::make('uid')->default($this->record->id),
+ ->schema([
+ TextInput::make('reason')->label(__('admin.resources.user.actions.enable_disable_reason'))->placeholder(__('admin.resources.user.actions.enable_disable_reason_placeholder')),
+ Hidden::make('action')->default($this->record->enabled == 'yes' ? 'disable' : 'enable'),
+ Hidden::make('uid')->default($this->record->id),
])
// ->visible(false)
// ->hidden(true)
@@ -92,15 +102,15 @@ class UserProfile extends ViewRecord
$userRep->disableUser(Auth::user(), $data['uid'], $data['reason']);
}
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
}
- private function buildDisableTwoStepAuthenticationAction(): Actions\Action
+ private function buildDisableTwoStepAuthenticationAction(): Action
{
- return Actions\Action::make(__('admin.resources.user.actions.disable_two_step_authentication'))
+ return Action::make(__('admin.resources.user.actions.disable_two_step_authentication'))
->modalHeading(__('admin.resources.user.actions.disable_two_step_authentication'))
->requiresConfirmation()
->action(function ($data) {
@@ -108,18 +118,18 @@ class UserProfile extends ViewRecord
try {
$userRep->removeTwoStepAuthentication(Auth::user(), $this->record->id);
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
}
- private function buildChangeBonusEtcAction(): Actions\Action
+ private function buildChangeBonusEtcAction(): Action
{
- return Actions\Action::make(__('admin.resources.user.actions.change_bonus_etc_btn'))
+ return Action::make(__('admin.resources.user.actions.change_bonus_etc_btn'))
->modalHeading(__('admin.resources.user.actions.change_bonus_etc_btn'))
- ->form([
- Forms\Components\Radio::make('field')->options([
+ ->schema([
+ Radio::make('field')->options([
'uploaded' => __('label.user.uploaded'),
'downloaded' => __('label.user.downloaded'),
'invites' => __('label.user.invites'),
@@ -132,7 +142,7 @@ class UserProfile extends ViewRecord
->required()
->reactive()
,
- Forms\Components\Radio::make('action')->options([
+ Radio::make('action')->options([
'Increment' => __("admin.resources.user.actions.change_bonus_etc_action_increment"),
'Decrement' => __("admin.resources.user.actions.change_bonus_etc_action_decrement"),
])
@@ -140,18 +150,18 @@ class UserProfile extends ViewRecord
->inline()
->required()
,
- Forms\Components\TextInput::make('value')->integer()->required()
+ TextInput::make('value')->integer()->required()
->label(__('admin.resources.user.actions.change_bonus_etc_value_label'))
->helperText(__('admin.resources.user.actions.change_bonus_etc_value_help'))
,
- Forms\Components\TextInput::make('duration')->integer()
+ TextInput::make('duration')->integer()
->label(__('admin.resources.user.actions.change_bonus_etc_duration_label'))
->helperText(__('admin.resources.user.actions.change_bonus_etc_duration_help'))
- ->hidden(fn (\Filament\Forms\Get $get) => $get('field') != 'tmp_invites')
+ ->hidden(fn (Get $get) => $get('field') != 'tmp_invites')
,
- Forms\Components\TextInput::make('reason')
+ TextInput::make('reason')
->label(__('admin.resources.user.actions.change_bonus_etc_reason_label'))
,
])
@@ -164,7 +174,7 @@ class UserProfile extends ViewRecord
$userRep->incrementDecrement(Auth::user(), $this->record->id, $data['action'], $data['field'], $data['value'], $data['reason']);
}
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
@@ -172,11 +182,11 @@ class UserProfile extends ViewRecord
private function buildResetPasswordAction()
{
- return Actions\Action::make(__('admin.resources.user.actions.reset_password_btn'))
+ return Action::make(__('admin.resources.user.actions.reset_password_btn'))
->modalHeading(__('admin.resources.user.actions.reset_password_btn'))
- ->form([
- Forms\Components\TextInput::make('password')->label(__('admin.resources.user.actions.reset_password_label'))->required(),
- Forms\Components\TextInput::make('password_confirmation')
+ ->schema([
+ TextInput::make('password')->label(__('admin.resources.user.actions.reset_password_label'))->required(),
+ TextInput::make('password_confirmation')
->label(__('admin.resources.user.actions.reset_password_confirmation_label'))
->same('password')
->required(),
@@ -186,7 +196,7 @@ class UserProfile extends ViewRecord
try {
$userRep->resetPassword($this->record->id, $data['password'], $data['password_confirmation']);
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
@@ -194,14 +204,14 @@ class UserProfile extends ViewRecord
private function buildAssignExamAction()
{
- return Actions\Action::make(__('admin.resources.user.actions.assign_exam_btn'))
+ return Action::make(__('admin.resources.user.actions.assign_exam_btn'))
->modalHeading(__('admin.resources.user.actions.assign_exam_btn'))
- ->form([
- Forms\Components\Select::make('exam_id')
+ ->schema([
+ Select::make('exam_id')
->options((new ExamRepository())->listMatchExam($this->record->id)->pluck('name', 'id'))
->label(__('admin.resources.user.actions.assign_exam_exam_label'))->required(),
- Forms\Components\DateTimePicker::make('begin')->label(__('admin.resources.user.actions.assign_exam_begin_label')),
- Forms\Components\DateTimePicker::make('end')->label(__('admin.resources.user.actions.assign_exam_end_label'))
+ DateTimePicker::make('begin')->label(__('admin.resources.user.actions.assign_exam_begin_label')),
+ DateTimePicker::make('end')->label(__('admin.resources.user.actions.assign_exam_end_label'))
->helperText(__('admin.resources.user.actions.assign_exam_end_help')),
])
@@ -210,7 +220,7 @@ class UserProfile extends ViewRecord
try {
$examRep->assignToUser($this->record->id, $data['exam_id'], $data['begin'], $data['end']);
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
@@ -218,15 +228,15 @@ class UserProfile extends ViewRecord
private function buildGrantMedalAction()
{
- return Actions\Action::make(__('admin.resources.user.actions.grant_medal_btn'))
+ return Action::make(__('admin.resources.user.actions.grant_medal_btn'))
->modalHeading(__('admin.resources.user.actions.grant_medal_btn'))
- ->form([
- Forms\Components\Select::make('medal_id')
+ ->schema([
+ Select::make('medal_id')
->options(Medal::query()->pluck('name', 'id'))
->label(__('admin.resources.user.actions.grant_medal_medal_label'))
->required(),
- Forms\Components\TextInput::make('duration')
+ TextInput::make('duration')
->label(__('admin.resources.user.actions.grant_medal_duration_label'))
->helperText(__('admin.resources.user.actions.grant_medal_duration_help'))
->integer(),
@@ -237,7 +247,7 @@ class UserProfile extends ViewRecord
try {
$medalRep->grantToUser($this->record->id, $data['medal_id'], $data['duration']);
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
@@ -245,7 +255,7 @@ class UserProfile extends ViewRecord
private function buildConfirmAction()
{
- return Actions\Action::make(__('admin.resources.user.actions.confirm_btn'))
+ return Action::make(__('admin.resources.user.actions.confirm_btn'))
->modalHeading(__('admin.resources.user.actions.confirm_btn'))
->requiresConfirmation()
->action(function () {
@@ -261,9 +271,9 @@ class UserProfile extends ViewRecord
}
- private function buildEnableDisableDownloadPrivilegesAction(): Actions\Action
+ private function buildEnableDisableDownloadPrivilegesAction(): Action
{
- return Actions\Action::make($this->record->downloadpos == 'yes' ? __('admin.resources.user.actions.disable_download_privileges_btn') : __('admin.resources.user.actions.enable_download_privileges_btn'))
+ return Action::make($this->record->downloadpos == 'yes' ? __('admin.resources.user.actions.disable_download_privileges_btn') : __('admin.resources.user.actions.enable_download_privileges_btn'))
// ->modalHeading($this->record->enabled == 'yes' ? __('admin.resources.user.actions.disable_modal_title') : __('admin.resources.user.actions.enable_modal_title'))
->requiresConfirmation()
->action(function () {
@@ -271,7 +281,7 @@ class UserProfile extends ViewRecord
try {
$userRep->updateDownloadPrivileges(Auth::user(), $this->record->id, $this->record->downloadpos == 'yes' ? 'no' : 'yes');
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
@@ -279,13 +289,13 @@ class UserProfile extends ViewRecord
private function buildGrantPropsAction()
{
- return Actions\Action::make(__('admin.resources.user.actions.grant_prop_btn'))
+ return Action::make(__('admin.resources.user.actions.grant_prop_btn'))
->modalHeading(__('admin.resources.user.actions.grant_prop_btn'))
- ->form([
- Forms\Components\Select::make('meta_key')
+ ->schema([
+ Select::make('meta_key')
->options(UserMeta::listProps())
->label(__('admin.resources.user.actions.grant_prop_form_prop'))->required(),
- Forms\Components\TextInput::make('duration')->label(__('admin.resources.user.actions.grant_prop_form_duration'))
+ TextInput::make('duration')->label(__('admin.resources.user.actions.grant_prop_form_duration'))
->helperText(__('admin.resources.user.actions.grant_prop_form_duration_help')),
])
@@ -294,15 +304,15 @@ class UserProfile extends ViewRecord
try {
$rep->addMeta($this->record, $data, $data);
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
}
- private function buildDeleteAction(): Actions\DeleteAction
+ private function buildDeleteAction(): DeleteAction
{
- return Actions\DeleteAction::make()->using(function () {
+ return DeleteAction::make()->using(function () {
$this->getRep()->destroy($this->record->id);
return redirect(self::$resource::getUrl('index'));
});
@@ -344,32 +354,32 @@ class UserProfile extends ViewRecord
->count();
}
- private function buildChangeClassAction(): Actions\Action
+ private function buildChangeClassAction(): Action
{
- return Actions\Action::make('change_class')
+ return Action::make('change_class')
->label(__('admin.resources.user.actions.change_class_btn'))
- ->form([
- Forms\Components\Select::make('class')
+ ->schema([
+ Select::make('class')
->options(User::listClass(User::CLASS_PEASANT, Auth::user()->class - 1))
->default($this->record->class)
->label(__('user.labels.class'))
->required()
->reactive()
,
- Forms\Components\Radio::make('vip_added')
+ Radio::make('vip_added')
->options(self::getYesNoOptions('yes', 'no'))
->default($this->record->vip_added)
->label(__('user.labels.vip_added'))
->helperText(__('user.labels.vip_added_help'))
- ->hidden(fn (\Filament\Forms\Get $get) => $get('class') != User::CLASS_VIP)
+ ->hidden(fn (Get $get) => $get('class') != User::CLASS_VIP)
,
- Forms\Components\DateTimePicker::make('vip_until')
+ DateTimePicker::make('vip_until')
->default($this->record->vip_until)
->label(__('user.labels.vip_until'))
->helperText(__('user.labels.vip_until_help'))
- ->hidden(fn (\Filament\Forms\Get $get) => $get('class') != User::CLASS_VIP)
+ ->hidden(fn (Get $get) => $get('class') != User::CLASS_VIP)
,
- Forms\Components\TextInput::make('reason')
+ TextInput::make('reason')
->label(__('admin.resources.user.actions.enable_disable_reason'))
->placeholder(__('admin.resources.user.actions.enable_disable_reason_placeholder'))
,
@@ -379,7 +389,7 @@ class UserProfile extends ViewRecord
try {
$userRep->changeClass(Auth::user(), $this->record, $data['class'], $data['reason'], $data);
$this->sendSuccessNotification();
- } catch (\Exception $exception) {
+ } catch (Exception $exception) {
$this->sendFailNotification($exception->getMessage());
}
});
diff --git a/app/Filament/Resources/User/UserResource/Pages/ViewUser.php b/app/Filament/Resources/User/UserResource/Pages/ViewUser.php
index 64857ce0..6b572000 100644
--- a/app/Filament/Resources/User/UserResource/Pages/ViewUser.php
+++ b/app/Filament/Resources/User/UserResource/Pages/ViewUser.php
@@ -2,11 +2,12 @@
namespace App\Filament\Resources\User\UserResource\Pages;
+use Filament\Actions\Contracts\HasActions;
use App\Filament\Resources\User\UserResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\ViewRecord;
-class ViewUser extends ViewRecord
+class ViewUser extends ViewRecord implements HasActions
{
protected static string $resource = UserResource::class;
}
diff --git a/app/Filament/Resources/User/UserResource/RelationManagers/MedalsRelationManager.php b/app/Filament/Resources/User/UserResource/RelationManagers/MedalsRelationManager.php
index 9dd5aca5..8393bacf 100644
--- a/app/Filament/Resources/User/UserResource/RelationManagers/MedalsRelationManager.php
+++ b/app/Filament/Resources/User/UserResource/RelationManagers/MedalsRelationManager.php
@@ -2,25 +2,31 @@
namespace App\Filament\Resources\User\UserResource\RelationManagers;
+use Filament\Actions\Contracts\HasActions;
+use Filament\Schemas\Schema;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\ImageColumn;
+use Filament\Actions\DeleteAction;
+use Filament\Actions\DeleteBulkAction;
use Filament\Forms;
-use Filament\Forms\Form;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables\Table;
use Filament\Tables;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
-class MedalsRelationManager extends RelationManager
+class MedalsRelationManager extends RelationManager implements HasActions
{
protected static string $relationship = 'medals';
protected static ?string $recordTitleAttribute = 'name';
- public function form(Form $form): Form
+ public function form(Schema $schema): Schema
{
- return $form
- ->schema([
- Forms\Components\TextInput::make('name')
+ return $schema
+ ->components([
+ TextInput::make('name')
->required()
->maxLength(255),
]);
@@ -30,9 +36,9 @@ class MedalsRelationManager extends RelationManager
{
return $table
->columns([
- Tables\Columns\TextColumn::make('name')->label(__('label.name')),
- Tables\Columns\ImageColumn::make('image_large')->label(__('label.image')),
- Tables\Columns\ImageColumn::make('expire_at')->label(__('label.expire_at')),
+ TextColumn::make('name')->label(__('label.name')),
+ ImageColumn::make('image_large')->label(__('label.image')),
+ ImageColumn::make('expire_at')->label(__('label.expire_at')),
])
->filters([
//
@@ -40,12 +46,12 @@ class MedalsRelationManager extends RelationManager
->headerActions([
// Tables\Actions\CreateAction::make(),
])
- ->actions([
+ ->recordActions([
// Tables\Actions\EditAction::make(),
- Tables\Actions\DeleteAction::make(),
+ DeleteAction::make(),
])
- ->bulkActions([
- Tables\Actions\DeleteBulkAction::make(),
+ ->toolbarActions([
+ DeleteBulkAction::make(),
]);
}
}
diff --git a/app/Filament/Widgets/AccountInfo.php b/app/Filament/Widgets/AccountInfo.php
index f4a50602..0ecd627a 100644
--- a/app/Filament/Widgets/AccountInfo.php
+++ b/app/Filament/Widgets/AccountInfo.php
@@ -6,7 +6,7 @@ use Filament\Widgets\Widget;
class AccountInfo extends Widget
{
- protected static string $view = 'filament.widgets.account-info';
+ protected string $view = 'filament.widgets.account-info';
protected int | string | array $columnSpan = 'full';
}
diff --git a/app/Filament/Widgets/AnnounceMonitor/MaxUploadedUser.php b/app/Filament/Widgets/AnnounceMonitor/MaxUploadedUser.php
index 64ec4e8e..142c1f87 100644
--- a/app/Filament/Widgets/AnnounceMonitor/MaxUploadedUser.php
+++ b/app/Filament/Widgets/AnnounceMonitor/MaxUploadedUser.php
@@ -2,6 +2,8 @@
namespace App\Filament\Widgets\AnnounceMonitor;
+use Filament\Actions\Contracts\HasActions;
+use Filament\Tables\Columns\TextColumn;
use App\Models\AnnounceLog;
use App\Repositories\AnnounceLogRepository;
use Filament\Tables;
@@ -12,7 +14,7 @@ use Illuminate\Contracts\Pagination\Paginator;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\HtmlString;
-class MaxUploadedUser extends BaseWidget
+class MaxUploadedUser extends BaseWidget implements HasActions
{
public function table(Table $table): Table
{
@@ -22,11 +24,11 @@ class MaxUploadedUser extends BaseWidget
->query(AnnounceLog::query())
->defaultPaginationPageOption(null)
->columns([
- Tables\Columns\TextColumn::make('user_id')
+ TextColumn::make('user_id')
->label(__('announce-log.user_id'))
->formatStateUsing(fn ($state) => username_for_admin($state))
,
- Tables\Columns\TextColumn::make('uploaded_total')
+ TextColumn::make('uploaded_total')
->label(__('announce-log.uploaded_total'))
->formatStateUsing(fn ($state) => mksize($state))
,
diff --git a/app/Filament/Widgets/LatestTorrents.php b/app/Filament/Widgets/LatestTorrents.php
index 6d0db610..3952848e 100644
--- a/app/Filament/Widgets/LatestTorrents.php
+++ b/app/Filament/Widgets/LatestTorrents.php
@@ -2,6 +2,8 @@
namespace App\Filament\Widgets;
+use Filament\Actions\Contracts\HasActions;
+use Filament\Tables\Columns\TextColumn;
use App\Models\Torrent;
use Closure;
use Filament\Tables;
@@ -9,7 +11,7 @@ use Filament\Widgets\TableWidget as BaseWidget;
use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Database\Eloquent\Builder;
-class LatestTorrents extends BaseWidget
+class LatestTorrents extends BaseWidget implements HasActions
{
protected static ?int $sort = 2;
@@ -31,16 +33,16 @@ class LatestTorrents extends BaseWidget
protected function getTableColumns(): array
{
return [
- Tables\Columns\TextColumn::make('name')
+ TextColumn::make('name')
->label(__('label.name'))
->formatStateUsing(fn ($record) => torrent_name_for_admin($record, false, 30))
,
- Tables\Columns\TextColumn::make('owner')
+ TextColumn::make('owner')
->label(__('label.torrent.owner'))
->formatStateUsing(fn ($state) => username_for_admin($state))
,
- Tables\Columns\TextColumn::make('size')->formatStateUsing(fn ($state) => mksize($state))->label(__('label.torrent.size')),
- Tables\Columns\TextColumn::make('added')->dateTime()->label(__('label.added')),
+ TextColumn::make('size')->formatStateUsing(fn ($state) => mksize($state))->label(__('label.torrent.size')),
+ TextColumn::make('added')->dateTime()->label(__('label.added')),
];
}
}
diff --git a/app/Filament/Widgets/LatestUsers.php b/app/Filament/Widgets/LatestUsers.php
index c16173f3..1ea47dd7 100644
--- a/app/Filament/Widgets/LatestUsers.php
+++ b/app/Filament/Widgets/LatestUsers.php
@@ -2,6 +2,9 @@
namespace App\Filament\Widgets;
+use Filament\Actions\Contracts\HasActions;
+use Filament\Tables\Columns\TextColumn;
+use Filament\Tables\Columns\BadgeColumn;
use App\Models\User;
use Closure;
use Filament\Tables;
@@ -9,7 +12,7 @@ use Filament\Widgets\TableWidget as BaseWidget;
use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Database\Eloquent\Builder;
-class LatestUsers extends BaseWidget
+class LatestUsers extends BaseWidget implements HasActions
{
protected static ?int $sort = 1;
@@ -31,13 +34,13 @@ class LatestUsers extends BaseWidget
protected function getTableColumns(): array
{
return [
- Tables\Columns\TextColumn::make('id')
+ TextColumn::make('id')
->label(__('label.user.username'))
->formatStateUsing(fn ($state) => username_for_admin($state))
,
- Tables\Columns\TextColumn::make('email')->label(__('label.email')),
- Tables\Columns\BadgeColumn::make('status')->colors(['success' => 'confirmed', 'danger' => 'pending'])->label(__('label.status')),
- Tables\Columns\TextColumn::make('added')->dateTime()->label(__('label.added')),
+ TextColumn::make('email')->label(__('label.email')),
+ BadgeColumn::make('status')->colors(['success' => 'confirmed', 'danger' => 'pending'])->label(__('label.status')),
+ TextColumn::make('added')->dateTime()->label(__('label.added')),
];
}
}
diff --git a/app/Filament/Widgets/TorrentTrend.php b/app/Filament/Widgets/TorrentTrend.php
index 0eb975dd..2b946790 100644
--- a/app/Filament/Widgets/TorrentTrend.php
+++ b/app/Filament/Widgets/TorrentTrend.php
@@ -12,7 +12,7 @@ class TorrentTrend extends LineChartWidget
{
protected static ?int $sort = 4;
- protected static ?string $pollingInterval = null;
+ protected ?string $pollingInterval = null;
public function getHeading(): ?string
{
diff --git a/app/Filament/Widgets/UserTrend.php b/app/Filament/Widgets/UserTrend.php
index 6cc9eb1d..baab183e 100644
--- a/app/Filament/Widgets/UserTrend.php
+++ b/app/Filament/Widgets/UserTrend.php
@@ -14,7 +14,7 @@ class UserTrend extends LineChartWidget
protected static ?int $sort = 3;
- protected static ?string $pollingInterval = null;
+ protected ?string $pollingInterval = null;
public function getHeading(): ?string
{