From 971812a72c39883ccf64abe2e249e4817e38e2b9 Mon Sep 17 00:00:00 2001 From: ZedoX Date: Mon, 22 Apr 2024 09:27:03 +0500 Subject: [PATCH 1/3] init: LoggerPlugin Object --- src/LoggerPlugin.php | 67 ++++++++++++++++++++++++++++++ src/Resources/ActivityResource.php | 12 +----- 2 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 src/LoggerPlugin.php diff --git a/src/LoggerPlugin.php b/src/LoggerPlugin.php new file mode 100644 index 0000000..dae4215 --- /dev/null +++ b/src/LoggerPlugin.php @@ -0,0 +1,67 @@ +resources(array_filter([ + config('filament-logger.activity_resource') + ])); + } + + public function navigationGroup(?string $navigationGroup): static + { + $this->getActivityResourceClass()::navigationGroup($navigationGroup); + + return $this; + } + + public function navigationIcon(?string $navigationIcon): static + { + $this->getActivityResourceClass()::navigationIcon($navigationIcon); + + return $this; + } + + public function navigationSort(?int $navigationSort): static + { + $this->getActivityResourceClass()::navigationSort($navigationSort); + + return $this; + } + + public static function getActivityResourceClass(): string + { + return config('filament-logger.activity_resource'); + } + + public static function get(): static + { + /** @var static $plugin */ + $plugin = filament(app(static::class)->getId()); + + return $plugin; + } +} diff --git a/src/Resources/ActivityResource.php b/src/Resources/ActivityResource.php index 52c5dc9..6db20a0 100644 --- a/src/Resources/ActivityResource.php +++ b/src/Resources/ActivityResource.php @@ -29,7 +29,7 @@ class ActivityResource extends Resource protected static ?string $label = 'Activity Log'; protected static ?string $slug = 'activity-logs'; - protected static ?string $navigationIcon = 'heroicon-o-clipboard-list'; + protected static ?string $navigationIcon = 'heroicon-o-clipboard-document-list'; public static function form(Form $form): Form { @@ -317,18 +317,8 @@ public static function getPluralLabel(): string return __('filament-logger::filament-logger.resource.label.logs'); } - public static function getNavigationGroup(): ?string - { - return __('filament-logger::filament-logger.nav.group'); - } - public static function getNavigationLabel(): string { return __('filament-logger::filament-logger.nav.log.label'); } - - public static function getNavigationIcon(): string - { - return __('filament-logger::filament-logger.nav.log.icon'); - } } From 3b0e606c6d2fe15a58c0e4e071414fffbb6dfc90 Mon Sep 17 00:00:00 2001 From: ZedoX Date: Mon, 22 Apr 2024 09:29:22 +0500 Subject: [PATCH 2/3] remove icon from translation files --- resources/lang/ar/filament-logger.php | 1 - resources/lang/de/filament-logger.php | 1 - resources/lang/en/filament-logger.php | 1 - resources/lang/es/filament-logger.php | 1 - resources/lang/fa/filament-logger.php | 1 - resources/lang/fr/filament-logger.php | 1 - resources/lang/id/filament-logger.php | 1 - resources/lang/it/filament-logger.php | 1 - resources/lang/ka/filament-logger.php | 1 - resources/lang/ko/filament-logger.php | 1 - resources/lang/nl/filament-logger.php | 1 - resources/lang/pt_BR/filament-logger.php | 1 - resources/lang/ru/filament-logger.php | 1 - resources/lang/tr/filament-logger.php | 1 - resources/lang/uk/filament-logger.php | 1 - resources/lang/vi/filament-logger.php | 1 - 16 files changed, 16 deletions(-) diff --git a/resources/lang/ar/filament-logger.php b/resources/lang/ar/filament-logger.php index 00bbeb3..557a55d 100644 --- a/resources/lang/ar/filament-logger.php +++ b/resources/lang/ar/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'إعدادات', 'nav.log.label' => 'سجل النشاطات', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'سجل النشاط', 'resource.label.logs' => 'سجل النشاطات', 'resource.label.user' => 'المستخدم', diff --git a/resources/lang/de/filament-logger.php b/resources/lang/de/filament-logger.php index 79652cc..f370bd9 100644 --- a/resources/lang/de/filament-logger.php +++ b/resources/lang/de/filament-logger.php @@ -9,7 +9,6 @@ 'nav.group' => 'Settings', 'nav.log.label' => 'Activity Log', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Aktivitätslog', 'resource.label.logs' => 'Aktivitätslog', 'resource.label.user' => 'Nutzer', diff --git a/resources/lang/en/filament-logger.php b/resources/lang/en/filament-logger.php index 01c2f0d..fdba222 100644 --- a/resources/lang/en/filament-logger.php +++ b/resources/lang/en/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Settings', 'nav.log.label' => 'Activity Log', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Activity log', 'resource.label.logs' => 'Activity logs', 'resource.label.user' => 'User', diff --git a/resources/lang/es/filament-logger.php b/resources/lang/es/filament-logger.php index 16e8ef2..6976b56 100644 --- a/resources/lang/es/filament-logger.php +++ b/resources/lang/es/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Settings', 'nav.log.label' => 'Bitácora de actividad', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Registro de actividad', 'resource.label.logs' => 'Registros de actividad', 'resource.label.user' => 'Usuario', diff --git a/resources/lang/fa/filament-logger.php b/resources/lang/fa/filament-logger.php index 2d80e0d..627480c 100644 --- a/resources/lang/fa/filament-logger.php +++ b/resources/lang/fa/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'تنظیمات', 'nav.log.label' => 'لاگ فعالیت ها', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'لاگ فعالیت', 'resource.label.logs' => 'لاگ فعالیت ها', 'resource.label.user' => 'کاربر', diff --git a/resources/lang/fr/filament-logger.php b/resources/lang/fr/filament-logger.php index b7c4d64..f6f581a 100644 --- a/resources/lang/fr/filament-logger.php +++ b/resources/lang/fr/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Paramètres', 'nav.log.label' => 'Journal d\'activités', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Journal d\'activité', 'resource.label.logs' => 'Journal d\'activités', 'resource.label.user' => 'Utilisateur', diff --git a/resources/lang/id/filament-logger.php b/resources/lang/id/filament-logger.php index 8315cc7..9c8c37b 100644 --- a/resources/lang/id/filament-logger.php +++ b/resources/lang/id/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Pengaturan', 'nav.log.label' => 'Catatan Aktivitas', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Catatan aktivitas', 'resource.label.logs' => 'Catatan aktivitas', 'resource.label.user' => 'Pengguna', diff --git a/resources/lang/it/filament-logger.php b/resources/lang/it/filament-logger.php index a6f5711..af648dd 100644 --- a/resources/lang/it/filament-logger.php +++ b/resources/lang/it/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Impostazioni', 'nav.log.label' => 'Registro attività', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Log', 'resource.label.logs' => 'Log', 'resource.label.user' => 'User', diff --git a/resources/lang/ka/filament-logger.php b/resources/lang/ka/filament-logger.php index 3ea6fec..1dcdf76 100644 --- a/resources/lang/ka/filament-logger.php +++ b/resources/lang/ka/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'პარამეტრები', 'nav.log.label' => 'საქმიანობის ჟურნალი', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'საქმიანობის ჟურნალი', 'resource.label.logs' => 'საქმიანობის ჟურნალი', 'resource.label.user' => 'მომხმარებელი', diff --git a/resources/lang/ko/filament-logger.php b/resources/lang/ko/filament-logger.php index 879a1bb..ddf9a4d 100644 --- a/resources/lang/ko/filament-logger.php +++ b/resources/lang/ko/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => '설정', 'nav.log.label' => '활동 로그', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => '활동 로그', 'resource.label.logs' => '활동 로그', 'resource.label.user' => '사용자', diff --git a/resources/lang/nl/filament-logger.php b/resources/lang/nl/filament-logger.php index 518547f..7fbc442 100644 --- a/resources/lang/nl/filament-logger.php +++ b/resources/lang/nl/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Instellingen', 'nav.log.label' => 'Activiteitenlog', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Activiteiten log', 'resource.label.logs' => 'Activiteiten logs', 'resource.label.user' => 'Gebruiker', diff --git a/resources/lang/pt_BR/filament-logger.php b/resources/lang/pt_BR/filament-logger.php index 629e7d3..395475f 100644 --- a/resources/lang/pt_BR/filament-logger.php +++ b/resources/lang/pt_BR/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Configurações', 'nav.log.label' => 'Registro de atividade', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Registro de atividade', 'resource.label.logs' => 'Registros de atividade', 'resource.label.user' => 'Usuário', diff --git a/resources/lang/ru/filament-logger.php b/resources/lang/ru/filament-logger.php index 7bf8e71..72e26d6 100644 --- a/resources/lang/ru/filament-logger.php +++ b/resources/lang/ru/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Настройки', 'nav.log.label' => 'Лог действий', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Лога действий', 'resource.label.logs' => 'Журнал активности', 'resource.label.user' => 'Юзер', diff --git a/resources/lang/tr/filament-logger.php b/resources/lang/tr/filament-logger.php index e1fcbe4..9759821 100644 --- a/resources/lang/tr/filament-logger.php +++ b/resources/lang/tr/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Ayarlar', 'nav.log.label' => 'Aktivite Günlüğü', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Aktivite Günlüğü', 'resource.label.logs' => 'Aktivite Günlükleri', 'resource.label.user' => 'Kullanıcı', diff --git a/resources/lang/uk/filament-logger.php b/resources/lang/uk/filament-logger.php index 951ea15..7a6cfe5 100644 --- a/resources/lang/uk/filament-logger.php +++ b/resources/lang/uk/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Налаштування', 'nav.log.label' => 'Лог дій', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Лога дій', 'resource.label.logs' => 'Журнал активності', 'resource.label.user' => 'Юзер', diff --git a/resources/lang/vi/filament-logger.php b/resources/lang/vi/filament-logger.php index 2bf1ea5..8c2d66e 100644 --- a/resources/lang/vi/filament-logger.php +++ b/resources/lang/vi/filament-logger.php @@ -10,7 +10,6 @@ 'nav.group' => 'Cài đặt', 'nav.log.label' => 'Nhật ký hoạt động', - 'nav.log.icon' => 'heroicon-o-clipboard-document-list', 'resource.label.log' => 'Nhật ký hoạt động', 'resource.label.logs' => 'Nhật ký hoạt động', 'resource.label.user' => 'Người dùng', From cf8167672cce8ea0dbe10cf952345b352ef40d02 Mon Sep 17 00:00:00 2001 From: ZedoX Date: Mon, 22 Apr 2024 09:52:15 +0500 Subject: [PATCH 3/3] feat: subject name customization --- src/LoggerPlugin.php | 44 +++++++++++++++++++++++++----- src/Resources/ActivityResource.php | 14 ++-------- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/LoggerPlugin.php b/src/LoggerPlugin.php index dae4215..f1e1857 100644 --- a/src/LoggerPlugin.php +++ b/src/LoggerPlugin.php @@ -2,13 +2,19 @@ namespace Z3d0X\FilamentLogger; +use Closure; use Filament\Contracts\Plugin; use Filament\Panel; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Str; +use Spatie\Activitylog\Models\Activity; class LoggerPlugin implements Plugin { const ID = 'z3d0x::filament-logger'; + protected ?Closure $resolveSubjectNameUsing = null; + public static function make(): static { return app(static::class); @@ -19,9 +25,12 @@ public function getId(): string return static::ID; } - public function boot(Panel $panel): void + public static function get(): static { + /** @var static $plugin */ + $plugin = filament(app(static::class)->getId()); + return $plugin; } public function register(Panel $panel): void @@ -31,6 +40,16 @@ public function register(Panel $panel): void ])); } + public function boot(Panel $panel): void + { + + } + + public static function getActivityResourceClass(): string + { + return config('filament-logger.activity_resource'); + } + public function navigationGroup(?string $navigationGroup): static { $this->getActivityResourceClass()::navigationGroup($navigationGroup); @@ -52,16 +71,27 @@ public function navigationSort(?int $navigationSort): static return $this; } - public static function getActivityResourceClass(): string + public function resolveSubjectNameUsing(?Closure $callback): static { - return config('filament-logger.activity_resource'); + $this->resolveSubjectNameUsing = $callback; + + return $this; } - public static function get(): static + public function getResolveSubjectNameUsing(): ?Closure { - /** @var static $plugin */ - $plugin = filament(app(static::class)->getId()); + if (! is_null($this->resolveSubjectNameUsing)) { + return $this->resolveSubjectNameUsing; + }; - return $plugin; + return static function ($state, Model $record) { + /** @var Activity $record */ + if (!$state) { + + return '-'; + } + + return Str::of($state)->afterLast('\\')->headline().' # '.$record->subject_id; + }; } } diff --git a/src/Resources/ActivityResource.php b/src/Resources/ActivityResource.php index 6db20a0..82802a4 100644 --- a/src/Resources/ActivityResource.php +++ b/src/Resources/ActivityResource.php @@ -22,6 +22,7 @@ use Spatie\Activitylog\Contracts\Activity; use Spatie\Activitylog\ActivitylogServiceProvider; use Spatie\Activitylog\Models\Activity as ActivityModel; +use Z3d0X\FilamentLogger\LoggerPlugin; use Z3d0X\FilamentLogger\Resources\ActivityResource\Pages; class ActivityResource extends Resource @@ -45,10 +46,7 @@ public static function form(Form $form): Form ->label(__('filament-logger::filament-logger.resource.label.user')), TextInput::make('subject_type') - ->afterStateHydrated(function ($component, ?Model $record, $state) { - /** @var Activity&ActivityModel $record */ - return $state ? $component->state(Str::of($state)->afterLast('\\')->headline().' # '.$record->subject_id) : '-'; - }) + ->formatStateUsing(LoggerPlugin::get()->getResolveSubjectNameUsing()) ->label(__('filament-logger::filament-logger.resource.label.subject')), Textarea::make('description') @@ -140,13 +138,7 @@ public static function table(Table $table): Table TextColumn::make('subject_type') ->label(__('filament-logger::filament-logger.resource.label.subject')) - ->formatStateUsing(function ($state, Model $record) { - /** @var Activity&ActivityModel $record */ - if (!$state) { - return '-'; - } - return Str::of($state)->afterLast('\\')->headline().' # '.$record->subject_id; - }), + ->formatStateUsing(LoggerPlugin::get()->getResolveSubjectNameUsing()), TextColumn::make('causer.name') ->label(__('filament-logger::filament-logger.resource.label.user')),