From 0086ff50d2c7e6571c27eb0f319c396c990b5c4d Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 26 Mar 2026 14:40:35 +0700 Subject: [PATCH] feat: Introduce UxStyle enum for enhanced user experience and update modal headings and descriptions across Filament actions to utilize cheerful notifications, improving clarity and engagement. --- app/Enums/UxStyle.php | 19 ++++ .../Actions/Cheerful/CreateAction.php | 7 +- .../Actions/Cheerful/DeleteAction.php | 14 ++- app/Filament/Actions/Cheerful/EditAction.php | 7 +- .../Actions/Cheerful/ForceDeleteAction.php | 14 ++- .../Actions/Cheerful/RestoreAction.php | 7 +- app/Filament/Actions/DefaultBulkActions.php | 6 +- .../Actions/ApproveAction.php | 5 +- .../Actions/Concerns/CanProcessReview.php | 26 ++--- .../Actions/RejectAction.php | 5 +- .../Actions/RevisionAction.php | 5 +- app/Filament/Pages/Auth/EmailVerification.php | 8 +- app/Filament/Pages/Auth/Login.php | 12 +-- app/Filament/Pages/Auth/Profile.php | 31 ++++-- app/Filament/Pages/Auth/Registration.php | 8 +- app/Filament/Pages/Company.php | 41 +++++--- app/Filament/Pages/Media.php | 38 ++++--- .../Pages/Settings/ManageGeneralSettings.php | 8 +- .../Pages/Settings/ManageSeoSettings.php | 4 +- .../Settings/ManageSocialMediaSettings.php | 4 +- app/Filament/Pages/Verification.php | 24 ++--- .../Manage/Contacts/Actions/ReplyAction.php | 8 +- .../Manage/Contacts/ContactResource.php | 22 +++-- .../Actions/Cooperation/AcceptAction.php | 8 +- .../Cooperation/CompleteCooperationAction.php | 16 +-- .../CreateTaskAssignmentAction.php | 12 +-- .../Cooperation/ProceedToPaymentAction.php | 8 +- .../Actions/Cooperation/RejectAction.php | 8 +- .../Cooperation/SendProposalAction.php | 16 +-- .../Cooperations/Actions/Media/PayAction.php | 8 +- .../Actions/Proposal/AcceptAction.php | 12 +-- .../Actions/Proposal/RejectAction.php | 12 +-- .../Actions/Report/AcceptAction.php | 8 +- .../Actions/Report/RejectAction.php | 12 +-- .../Cooperations/CooperationResource.php | 6 +- .../Cooperations/Pages/CreateCooperation.php | 14 ++- .../Cooperations/Pages/EditCooperation.php | 10 ++ .../CooperationProposalRelationManager.php | 6 +- .../ReportRelationManager.php | 12 +-- .../TaskAssignmentRelationManager.php | 36 +++---- .../Cooperations/Schemas/CooperationForm.php | 14 +-- .../Cooperations/Tables/CooperationsTable.php | 3 +- .../DataChangeRequest/AcceptAction.php | 20 ++-- .../DataChangeRequest/RejectAction.php | 12 +-- .../DataChanges/DataChangesResource.php | 19 ++-- .../Actions/CreateJournalistAction.php | 12 +-- .../Actions/DeleteJournalistAction.php | 17 ++-- .../Actions/EditJournalistAction.php | 20 ++-- .../Manage/Partners/PartnerResource.php | 52 ++++++---- .../Categories/Pages/ManageCategories.php | 5 +- .../Pages/ManageClassifications.php | 5 +- .../Departments/Pages/ManageDepartments.php | 5 +- .../Locations/Pages/ManageLocations.php | 5 +- .../Pages/ManageSubClassifications.php | 5 +- .../SubClassificationResource.php | 6 +- .../SubLocations/Pages/ManageSubLocations.php | 5 +- .../Master/Themes/Pages/ManageThemes.php | 5 +- .../Master/Users/Pages/ManageUsers.php | 5 +- .../Resources/Master/Users/UserResource.php | 6 +- .../Pages/CreateContentRecap.php | 10 +- .../ContentRecaps/Pages/EditContentRecap.php | 10 ++ .../Schemas/ContentRecapForm.php | 14 +-- .../Pages/CreateIssueManagement.php | 10 +- .../Pages/EditIssueManagement.php | 10 ++ .../Schemas/IssueManagementForm.php | 14 +-- .../Actions/CrawlNewsAction.php | 8 +- .../Pages/CreateMediaMonitoring.php | 10 +- .../Pages/EditMediaMonitoring.php | 10 ++ .../Schemas/MediaMonitoringForm.php | 14 +-- .../Pages/ManageAnnouncements.php | 15 ++- .../Publication/News/Pages/CreateNews.php | 10 +- .../Publication/News/Pages/EditNews.php | 10 ++ .../Publication/News/Schemas/NewsForm.php | 14 +-- app/Filament/Support/CheerfulNotification.php | 98 +++++++++++-------- app/Models/User.php | 2 + ..._26_140819_add_ux_style_to_users_table.php | 28 ++++++ 76 files changed, 649 insertions(+), 386 deletions(-) create mode 100644 app/Enums/UxStyle.php create mode 100644 database/migrations/2026_03_26_140819_add_ux_style_to_users_table.php diff --git a/app/Enums/UxStyle.php b/app/Enums/UxStyle.php new file mode 100644 index 0000000..2b10469 --- /dev/null +++ b/app/Enums/UxStyle.php @@ -0,0 +1,19 @@ + 'Ceria (Banyak Emoji) ๐Ÿš€โœจ', + self::FORMAL => 'Formal & Profesional ๐Ÿ’ผ', + }; + } +} diff --git a/app/Filament/Actions/Cheerful/CreateAction.php b/app/Filament/Actions/Cheerful/CreateAction.php index fe2d782..ef2c065 100644 --- a/app/Filament/Actions/Cheerful/CreateAction.php +++ b/app/Filament/Actions/Cheerful/CreateAction.php @@ -11,12 +11,11 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading('Tambah Data Seru! ๐Ÿš€โœจ'); + $this->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Data Seru! ๐Ÿš€โœจ', 'Tambah Data Baru')); - $this->modalDescription('Isi form di bawah ini dengan semangat ya, biar datanya tersimpan dengan aman! ๐Ÿ’ช๐Ÿ˜Š'); + $this->modalDescription(fn () => CheerfulNotification::getMessage('Isi form di bawah ini dengan semangat ya, biar datanya tersimpan dengan aman! ๐Ÿ’ช๐Ÿ˜Š', 'Silakan isi formulir di bawah ini dengan lengkap untuk menambahkan data baru.')); - $this->successNotification( - CheerfulNotification::create() + $this->successNotification(fn () => CheerfulNotification::create() ); } } diff --git a/app/Filament/Actions/Cheerful/DeleteAction.php b/app/Filament/Actions/Cheerful/DeleteAction.php index d1c3fc4..1c462ca 100644 --- a/app/Filament/Actions/Cheerful/DeleteAction.php +++ b/app/Filament/Actions/Cheerful/DeleteAction.php @@ -2,6 +2,7 @@ namespace App\Filament\Actions\Cheerful; +use App\Enums\UxStyle; use App\Filament\Support\CheerfulNotification; use Filament\Actions\DeleteAction as ActionsDeleteAction; @@ -11,12 +12,17 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading('Betulan Mau Hapus? ๐Ÿ—‘๏ธ๐Ÿค”'); + $this->modalHeading(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL + ? 'Betulan Mau Hapus? ๐Ÿ—‘๏ธ๐Ÿค”' + : 'Hapus Data' + ); - $this->modalDescription('Data ini akan kita lepas ya. Hati-hati, data berelasi juga mungkin bakal ikut berpamitan! ๐Ÿƒ๐Ÿ’จ'); + $this->modalDescription(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL + ? 'Data ini akan kita lepas ya. Hati-hati, data berelasi juga mungkin bakal ikut berpamitan! ๐Ÿƒ๐Ÿ’จ' + : 'Apakah Anda yakin ingin menghapus data ini secara permanen?' + ); - $this->successNotification( - CheerfulNotification::delete() + $this->successNotification(fn () => CheerfulNotification::delete() ); } } diff --git a/app/Filament/Actions/Cheerful/EditAction.php b/app/Filament/Actions/Cheerful/EditAction.php index a61799c..464f84a 100644 --- a/app/Filament/Actions/Cheerful/EditAction.php +++ b/app/Filament/Actions/Cheerful/EditAction.php @@ -11,12 +11,11 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading('Sempurnakan Datanya ๐Ÿ“โœจ'); + $this->modalHeading(fn () => CheerfulNotification::getMessage('Sempurnakan Datanya ๐Ÿ“โœจ', 'Ubah Data')); - $this->modalDescription('Ayo kita perbarui supaya datanya makin akurat dan segar lagi! ๐Ÿ› ๏ธ๐Ÿ‘Œ'); + $this->modalDescription(fn () => CheerfulNotification::getMessage('Ayo kita perbarui supaya datanya makin akurat dan segar lagi! ๐Ÿ› ๏ธ๐Ÿ‘Œ', 'Silakan perbarui informasi pada formulir di bawah ini.')); - $this->successNotification( - CheerfulNotification::update() + $this->successNotification(fn () => CheerfulNotification::update() ); } } diff --git a/app/Filament/Actions/Cheerful/ForceDeleteAction.php b/app/Filament/Actions/Cheerful/ForceDeleteAction.php index 6b165b7..b72c1df 100644 --- a/app/Filament/Actions/Cheerful/ForceDeleteAction.php +++ b/app/Filament/Actions/Cheerful/ForceDeleteAction.php @@ -2,6 +2,7 @@ namespace App\Filament\Actions\Cheerful; +use App\Enums\UxStyle; use App\Filament\Support\CheerfulNotification; use Filament\Actions\ForceDeleteAction as ActionsForceDeleteAction; @@ -11,12 +12,17 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading('Yakin Hapus Selamanya? ๐Ÿ—‘๏ธ๐Ÿ”ฅ'); + $this->modalHeading(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL + ? 'Yakin Hapus Selamanya? ๐Ÿ—‘๏ธ๐Ÿ”ฅ' + : 'Hapus Permanen' + ); - $this->modalDescription('Data ini bakal hilang dari muka bumi sistem dan nggak bisa balik lagi. Hati-hati ya! ๐Ÿ˜จ๐Ÿ™'); + $this->modalDescription(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL + ? 'Data ini bakal hilang dari muka bumi sistem dan nggak bisa balik lagi. Hati-hati ya! ๐Ÿ˜จ๐Ÿ™' + : 'Tindakan ini tidak dapat dibatalkan. Apakah Anda yakin ingin menghapus data ini secara permanen?' + ); - $this->successNotification( - CheerfulNotification::forceDelete() + $this->successNotification(fn () => CheerfulNotification::forceDelete() ); } } diff --git a/app/Filament/Actions/Cheerful/RestoreAction.php b/app/Filament/Actions/Cheerful/RestoreAction.php index 39b921d..9917440 100644 --- a/app/Filament/Actions/Cheerful/RestoreAction.php +++ b/app/Filament/Actions/Cheerful/RestoreAction.php @@ -11,12 +11,11 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading('Panggil Balik Datanya? โ™ป๏ธโœจ'); + $this->modalHeading(fn () => CheerfulNotification::getMessage('Panggil Balik Datanya? โ™ป๏ธโœจ', 'Pulihkan Data')); - $this->modalDescription('Siap buat mengaktifkan kembali data yang sempat hilang? Yuk, kita pulihkan bareng-bareng! ๐Ÿ˜‰๐Ÿ™Œ'); + $this->modalDescription(fn () => CheerfulNotification::getMessage('Siap buat mengaktifkan kembali data yang sempat hilang? Yuk, kita pulihkan bareng-bareng! ๐Ÿ˜‰๐Ÿ™Œ', 'Apakah Anda yakin ingin memulihkan data yang telah dihapus ini?')); - $this->successNotification( - CheerfulNotification::restore() + $this->successNotification(fn () => CheerfulNotification::restore() ); } } diff --git a/app/Filament/Actions/DefaultBulkActions.php b/app/Filament/Actions/DefaultBulkActions.php index 97ae8f9..64c9f4e 100644 --- a/app/Filament/Actions/DefaultBulkActions.php +++ b/app/Filament/Actions/DefaultBulkActions.php @@ -13,19 +13,19 @@ public static function make(string $entity): array { return [ DeleteBulkAction::make() - ->modalHeading("Mau Hapus Banyak {$entity}? ๐Ÿ—‘๏ธ๐Ÿค”") + ->modalHeading(fn () => CheerfulNotification::getMessage("Mau Hapus Banyak {$entity}? ๐Ÿ—‘๏ธ๐Ÿค”", "Hapus Data {$entity} Terpilih")) ->successNotification( CheerfulNotification::bulkDelete() ), ForceDeleteBulkAction::make() - ->modalHeading("Hapus Permanen {$entity} Terpilih? ๐Ÿ—‘๏ธ๐Ÿ”ฅ") + ->modalHeading(fn () => CheerfulNotification::getMessage("Hapus Permanen {$entity} Terpilih? ๐Ÿ—‘๏ธ๐Ÿ”ฅ", "Hapus Permanen Data {$entity} Terpilih")) ->successNotification( CheerfulNotification::bulkForceDelete() ), RestoreBulkAction::make() - ->modalHeading("Pulihkan {$entity} yang Dipilih? โ™ป๏ธโœจ") + ->modalHeading(fn () => CheerfulNotification::getMessage("Pulihkan {$entity} yang Dipilih? โ™ป๏ธโœจ", "Pulihkan Data {$entity} Terpilih")) ->successNotification( CheerfulNotification::bulkRestore() ), diff --git a/app/Filament/Pages/AdminVerification/Actions/ApproveAction.php b/app/Filament/Pages/AdminVerification/Actions/ApproveAction.php index b022bb4..a361ed7 100644 --- a/app/Filament/Pages/AdminVerification/Actions/ApproveAction.php +++ b/app/Filament/Pages/AdminVerification/Actions/ApproveAction.php @@ -4,6 +4,7 @@ use App\Enums\DecisionAdmin; use App\Filament\Pages\AdminVerification\Actions\Concerns\CanProcessReview; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; class ApproveAction extends Action @@ -24,8 +25,8 @@ protected function setUp(): void ->icon('heroicon-o-check') ->size('sm') ->requiresConfirmation() - ->modalHeading('Setujui Verifikasi? โœ…โœจ') - ->modalDescription('Yakin datanya sudah oke semua? Yuk, kita resmikan verifikasinya sekarang! ๐Ÿš€๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Setujui Verifikasi? โœ…โœจ', 'Setujui Verifikasi')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin datanya sudah oke semua? Yuk, kita resmikan verifikasinya sekarang! ๐Ÿš€๐Ÿ˜Š', 'Apakah Anda yakin ingin menyetujui verifikasi ini? Seluruh data yang diajukan akan dianggap valid.')) ->modalSubmitActionLabel('Ya, Setujui') ->action(function (array $arguments): void { $this->processReview($arguments['id'], DecisionAdmin::APPROVED, null); diff --git a/app/Filament/Pages/AdminVerification/Actions/Concerns/CanProcessReview.php b/app/Filament/Pages/AdminVerification/Actions/Concerns/CanProcessReview.php index 2ef5f55..acad200 100644 --- a/app/Filament/Pages/AdminVerification/Actions/Concerns/CanProcessReview.php +++ b/app/Filament/Pages/AdminVerification/Actions/Concerns/CanProcessReview.php @@ -21,8 +21,8 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin if (! $verificationRequest) { CheerfulNotification::danger( - 'Belum ketemu nih ๐Ÿ™Œ', - 'Data verifikasi belum kami temukan. Coba sebentar lagi, ya.', + CheerfulNotification::getMessage('Belum ketemu nih ๐Ÿ™Œ', 'Data Tidak Ditemukan'), + CheerfulNotification::getMessage('Data verifikasi belum kami temukan. Coba sebentar lagi, ya.', 'Permintaan verifikasi tidak ditemukan dalam sistem kami.') ) ->send(); @@ -60,8 +60,8 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin }; CheerfulNotification::success( - 'Berhasil Diproses! โœจ', - "Mantap! Verifikasi telah {$actionLabel} dan notifikasi sudah dikirim ke pengguna. Kerja bagus, Admin! ๐Ÿ’ช" + CheerfulNotification::getMessage('Berhasil Diproses! โœจ', 'Berhasil Diproses'), + CheerfulNotification::getMessage("Mantap! Verifikasi telah {$actionLabel} dan notifikasi sudah dikirim ke pengguna. Kerja bagus, Admin! ๐Ÿ’ช", "Proses verifikasi telah {$actionLabel} dan notifikasi telah dikirimkan ke pihak pengguna.") ) ->send(); @@ -69,19 +69,19 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin $partnerUser = $verificationRequest->company?->user; if ($partnerUser) { $statusTitle = match ($decision) { - DecisionAdmin::APPROVED => 'Horee! Verifikasi Disetujui ๐ŸŽ‰', - DecisionAdmin::NEED_REVISION => 'Yah, Ada Yang Perlu Direvisi nih ๐Ÿ“', - DecisionAdmin::REJECTED => 'Maaf, Verifikasi Ditolak ๐Ÿ˜”', + DecisionAdmin::APPROVED => CheerfulNotification::getMessage('Horee! Verifikasi Disetujui ๐ŸŽ‰', 'Verifikasi Disetujui'), + DecisionAdmin::NEED_REVISION => CheerfulNotification::getMessage('Yah, Ada Yang Perlu Direvisi nih ๐Ÿ“', 'Perlu Revisi Verifikasi'), + DecisionAdmin::REJECTED => CheerfulNotification::getMessage('Maaf, Verifikasi Ditolak ๐Ÿ˜”', 'Verifikasi Ditolak'), }; $body = match ($decision) { - DecisionAdmin::APPROVED => 'Yeay! Pengajuan verifikasi perusahaan Anda telah disetujui. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami! ๐ŸŽŠ', - DecisionAdmin::NEED_REVISION => 'Ayo sedikit lagi! Admin meminta beberapa perbaikan pada pengajuan Anda agar bisa segera disetujui. ๐Ÿ’ช', - DecisionAdmin::REJECTED => 'Yah, maaf banget... pengajuan verifikasi perusahaan Anda belum bisa kami terima saat ini. ๐Ÿ’”', + DecisionAdmin::APPROVED => CheerfulNotification::getMessage('Yeay! Pengajuan verifikasi perusahaan Anda telah disetujui. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami! ๐ŸŽŠ', 'Pengajuan verifikasi perusahaan Anda telah disetujui.'), + DecisionAdmin::NEED_REVISION => CheerfulNotification::getMessage('Ayo sedikit lagi! Admin meminta beberapa perbaikan pada pengajuan Anda agar bisa segera disetujui. ๐Ÿ’ช', 'Admin meminta beberapa perbaikan pada pengajuan verifikasi Anda.'), + DecisionAdmin::REJECTED => CheerfulNotification::getMessage('Yah, maaf banget... pengajuan verifikasi perusahaan Anda belum bisa kami terima saat ini. ๐Ÿ’”', 'Pengajuan verifikasi perusahaan Anda tidak dapat kami setujui saat ini.'), }; if ($note) { - $body .= "\n\nCatatan Admin: {$note}"; + $body .= "\n\n".CheerfulNotification::getMessage("Catatan Admin: {$note} ๐Ÿ˜Š", "Catatan Admin: {$note}"); } $partnerUser->notify(new BroadcastNotification([ @@ -104,8 +104,8 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin ]); CheerfulNotification::danger( - 'Terjadi Kesalahan โš ๏ธ', - 'Proses verifikasi gagal karena kesalahan sistem. Tim kami sudah mencatat masalah ini. Silakan coba lagi nanti.', + CheerfulNotification::getMessage('Terjadi Kesalahan โš ๏ธ', 'Terjadi Kesalahan Sistem'), + CheerfulNotification::getMessage('Proses verifikasi gagal karena kesalahan sistem. Tim kami sudah mencatat masalah ini. Silakan coba lagi nanti.', 'Proses verifikasi gagal dilakukan karena kendala teknis. Silakan laporkan jika masalah berlanjut.') ) ->send(); } diff --git a/app/Filament/Pages/AdminVerification/Actions/RejectAction.php b/app/Filament/Pages/AdminVerification/Actions/RejectAction.php index 06c5dcb..e6909d3 100644 --- a/app/Filament/Pages/AdminVerification/Actions/RejectAction.php +++ b/app/Filament/Pages/AdminVerification/Actions/RejectAction.php @@ -4,6 +4,7 @@ use App\Enums\DecisionAdmin; use App\Filament\Pages\AdminVerification\Actions\Concerns\CanProcessReview; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; use Filament\Forms\Components\Textarea; @@ -25,8 +26,8 @@ protected function setUp(): void ->icon('heroicon-o-x-mark') ->size('sm') ->requiresConfirmation() - ->modalHeading('Tolak Verifikasi? ๐Ÿ›‘๐Ÿค”') - ->modalDescription('Yakin mau ditolak secara permanen? Pastikan alasannya sudah sreg di hati ya! ๐Ÿ˜”๐Ÿ“') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tolak Verifikasi? ๐Ÿ›‘๐Ÿค”', 'Tolak Verifikasi')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin mau ditolak secara permanen? Pastikan alasannya sudah sreg di hati ya! ๐Ÿ˜”๐Ÿ“', 'Apakah Anda yakin ingin menolak verifikasi ini secara permanen?')) ->modalSubmitActionLabel('Ya, Tolak') ->schema([ Textarea::make('note') diff --git a/app/Filament/Pages/AdminVerification/Actions/RevisionAction.php b/app/Filament/Pages/AdminVerification/Actions/RevisionAction.php index a47b1c1..19dbdf1 100644 --- a/app/Filament/Pages/AdminVerification/Actions/RevisionAction.php +++ b/app/Filament/Pages/AdminVerification/Actions/RevisionAction.php @@ -4,6 +4,7 @@ use App\Enums\DecisionAdmin; use App\Filament\Pages\AdminVerification\Actions\Concerns\CanProcessReview; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; use Filament\Forms\Components\Textarea; use Filament\Support\Enums\Width; @@ -25,8 +26,8 @@ protected function setUp(): void ->color('warning') ->icon('heroicon-o-pencil-square') ->size('sm') - ->modalHeading('Minta Revisi Data ๐Ÿ“โš ๏ธ') - ->modalDescription('Siap kirim instruksi perbaikan? Kasih catatan yang jelas ya biar pengguna nggak bingung! ๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Minta Revisi Data ๐Ÿ“โš ๏ธ', 'Minta Revisi Data')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Siap kirim instruksi perbaikan? Kasih catatan yang jelas ya biar pengguna nggak bingung! ๐Ÿ˜Š', 'Silakan masukkan instruksi perbaikan yang diperlukan untuk pengguna.')) ->schema([ Textarea::make('note') ->label('Catatan Revisi') diff --git a/app/Filament/Pages/Auth/EmailVerification.php b/app/Filament/Pages/Auth/EmailVerification.php index bd6acb3..1675c9c 100644 --- a/app/Filament/Pages/Auth/EmailVerification.php +++ b/app/Filament/Pages/Auth/EmailVerification.php @@ -34,8 +34,8 @@ public function resendNotificationAction(): Action $this->sendEmailVerificationNotification($this->getVerifiable()); CheerfulNotification::success( - 'Mail Meluncur! ๐Ÿ“ง๐Ÿš€', - 'Tautan verifikasi baru sudah dikirim ke alamat surelmu. Cek inbox (atau spam) ya! ๐Ÿ˜‰โœจ' + CheerfulNotification::getMessage('Mail Meluncur! ๐Ÿ“ง๐Ÿš€', 'Email Terkirim'), + CheerfulNotification::getMessage('Tautan verifikasi baru sudah dikirim ke alamat surelmu. Cek inbox (atau spam) ya! ๐Ÿ˜‰โœจ', 'Tautan verifikasi baru telah dikirimkan ke alamat email Anda. Silakan periksa kotak masuk atau spam.') )->send(); }); } @@ -43,8 +43,8 @@ public function resendNotificationAction(): Action protected function getRateLimitedNotification(TooManyRequestsException $exception): ?Notification { return CheerfulNotification::danger( - 'Pelan-pelan ya โณ', - 'Permintaan terlalu sering. Tunggu sebentar lalu coba lagi dalam '.$exception->secondsUntilAvailable.' detik.' + CheerfulNotification::getMessage('Pelan-pelan ya โณ', 'Terlalu Banyak Permintaan'), + CheerfulNotification::getMessage('Permintaan terlalu sering. Tunggu sebentar lalu coba lagi dalam '.$exception->secondsUntilAvailable.' detik.', 'Anda telah melakukan terlalu banyak permintaan. Silakan coba kembali dalam '.$exception->secondsUntilAvailable.' detik.') )->send(); } } diff --git a/app/Filament/Pages/Auth/Login.php b/app/Filament/Pages/Auth/Login.php index b8ea892..1c5cef3 100644 --- a/app/Filament/Pages/Auth/Login.php +++ b/app/Filament/Pages/Auth/Login.php @@ -103,8 +103,8 @@ public function authenticate(): ?LoginResponse if ($user instanceof FilamentUser && (! $user->canAccessPanel(Filament::getCurrentOrDefaultPanel()))) { CheerfulNotification::danger( - 'Akun Tidak Aktif ๐Ÿšซ', - 'Maaf, akun Anda saat ini tidak aktif. Silakan hubungi Administrator. ๐Ÿ“ž' + CheerfulNotification::getMessage('Akun Tidak Aktif ๐Ÿšซ', 'Akses Ditolak'), + CheerfulNotification::getMessage('Maaf, akun Anda saat ini tidak aktif. Silakan hubungi Administrator. ๐Ÿ“ž', 'Akun Anda saat ini tidak memiliki izin untuk mengakses sistem. Silakan hubungi administrator.') )->send(); throw ValidationException::withMessages([]); @@ -151,8 +151,8 @@ public function authenticate(): ?LoginResponse session()->regenerate(); CheerfulNotification::success( - 'Hore! Berhasil Masuk ๐ŸŽ‰', - 'Selamat datang kembali, '.$user->name.'! Siap untuk beraksi hari ini? ๐Ÿš€โœจ' + CheerfulNotification::getMessage('Hore! Berhasil Masuk ๐ŸŽ‰', 'Login Berhasil'), + CheerfulNotification::getMessage('Selamat datang kembali, '.$user->name.'! Siap untuk beraksi hari ini? ๐Ÿš€โœจ', 'Selamat datang kembali, '.$user->name.'. Anda telah berhasil masuk ke dalam sistem.') )->send(); return app(LoginResponse::class); @@ -161,8 +161,8 @@ public function authenticate(): ?LoginResponse protected function throwFailureValidationException(): never { CheerfulNotification::danger( - 'Ups! Gagal Masuk ๐Ÿ˜…', - 'Sepertinya ada yang salah nih. Coba cek email atau kata sandi mu lagi ya! ๐Ÿค”๐Ÿ”' + CheerfulNotification::getMessage('Ups! Gagal Masuk ๐Ÿ˜…', 'Login Gagal'), + CheerfulNotification::getMessage('Sepertinya ada yang salah nih. Coba cek email atau kata sandi mu lagi ya! ๐Ÿค”๐Ÿ”', 'Kredensial yang Anda masukkan salah. Silakan periksa kembali email dan kata sandi Anda.') )->send(); throw ValidationException::withMessages([]); diff --git a/app/Filament/Pages/Auth/Profile.php b/app/Filament/Pages/Auth/Profile.php index ab261b2..2f58a26 100644 --- a/app/Filament/Pages/Auth/Profile.php +++ b/app/Filament/Pages/Auth/Profile.php @@ -2,9 +2,12 @@ namespace App\Filament\Pages\Auth; +use App\Enums\UxStyle; use App\Filament\Support\CheerfulNotification; use Filament\Auth\Pages\EditProfile; +use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; +use Filament\Notifications\Notification; use Filament\Schemas\Components\Grid; use Filament\Schemas\Components\Section; use Filament\Schemas\Components\Utilities\Get; @@ -25,7 +28,9 @@ public function form(Schema $schema): Schema { return $schema ->components([ - Section::make() + Section::make(fn () => CheerfulNotification::getMessage('Detail Profil ๐Ÿ‘คโœจ', 'Profil Pengguna')) + ->description(fn () => CheerfulNotification::getMessage('Yuk, kelola informasi detail profil Anda agar selalu terkini! ๐Ÿ‘ค๐Ÿš€', 'Kelola informasi profil dasar Anda di bawah ini.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-user' : null) ->schema([ TextInput::make('name') ->label('Nama Lengkap') @@ -56,10 +61,19 @@ public function form(Schema $schema): Schema ->regex('/^[a-zA-Z0-9_.-]+$/') ->unique(ignoreRecord: true) ->prefixIcon('heroicon-o-at-symbol'), + + Select::make('ux_style') + ->label('Gaya Bahasa Aplikasi') + ->options(UxStyle::class) + ->native(false) + ->required() + ->prefixIcon('heroicon-o-chat-bubble-bottom-center-text'), ]), ]), - Section::make() + Section::make(fn () => CheerfulNotification::getMessage('Keamanan Akun ๐Ÿ”โœจ', 'Ubah Kata Sandi')) + ->description(fn () => CheerfulNotification::getMessage('Ingin ganti kata sandi? Pastikan pilih yang kuat ya biar makin aman! ๐Ÿ”๐Ÿ’ช', 'Silakan masukkan kata sandi baru untuk memperbarui keamanan akun Anda.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-lock-closed' : null) ->schema([ Grid::make(2) ->schema([ @@ -100,8 +114,8 @@ protected function handleRecordUpdate(Model $record, array $data): Model protected function afterSave(): void { CheerfulNotification::success( - 'Profil Diperbarui! โœจ', - 'Sip! Detail profil baru Anda sudah tersimpan dengan aman. Terus semangat ya! ๐Ÿ’ช๐Ÿ˜Š' + CheerfulNotification::getMessage('Profil Diperbarui! โœจ', 'Profil Diperbarui'), + CheerfulNotification::getMessage('Sip! Detail profil baru Anda sudah tersimpan dengan aman. Terus semangat ya! ๐Ÿ’ช๐Ÿ˜Š', 'Perubahan pada profil Anda telah berhasil disimpan ke dalam sistem.') )->send(); if (filled($this->form->getState()['password'] ?? null)) { @@ -110,11 +124,16 @@ protected function afterSave(): void session()->regenerateToken(); CheerfulNotification::info( - 'Sesi Berakhir ๐Ÿ”', - 'Anda telah mengubah kata sandi. Silakan masuk kembali dengan kata sandi baru Anda ya. ๐Ÿ˜‰๐Ÿ‘‹' + CheerfulNotification::getMessage('Sesi Berakhir ๐Ÿ”', 'Keamanan Diperbarui'), + CheerfulNotification::getMessage('Anda telah mengubah kata sandi. Silakan masuk kembali dengan kata sandi baru Anda ya. ๐Ÿ˜‰๐Ÿ‘‹', 'Kata sandi Anda telah berhasil diubah. Harap lakukan login kembali menggunakan kata sandi yang baru untuk alasan keamanan.') )->send(); $this->redirect(filament()->getLoginUrl()); } } + + protected function getSavedNotification(): ?Notification + { + return null; + } } diff --git a/app/Filament/Pages/Auth/Registration.php b/app/Filament/Pages/Auth/Registration.php index 97d2597..e857468 100644 --- a/app/Filament/Pages/Auth/Registration.php +++ b/app/Filament/Pages/Auth/Registration.php @@ -81,8 +81,8 @@ protected function handleRegistration(array $data): Model $user->assignRole('Perusahaan'); CheerfulNotification::success( - 'Selamat Datang! ๐Ÿ‘‹๐ŸŽ‰', - "Halooo, {$user->name}!, terima kasih sudah bergabung! Akunmu berhasil dibuat. Silakan verifikasi alamat surelmu! ๐Ÿš€โœจ" + CheerfulNotification::getMessage('Selamat Datang! ๐Ÿ‘‹๐ŸŽ‰', 'Pendaftaran Berhasil'), + CheerfulNotification::getMessage("Halooo, {$user->name}!, terima kasih sudah bergabung! Akunmu berhasil dibuat. Silakan verifikasi alamat surelmu! ๐Ÿš€โœจ", "Selamat datang, {$user->name}. Akun Anda telah berhasil dibuat. Silakan periksa email Anda untuk melakukan verifikasi.") ) ->send(); @@ -90,8 +90,8 @@ protected function handleRegistration(array $data): Model ->get() ->each(function ($admin) use ($user): void { $admin->notify(new BroadcastNotification([ - 'title' => 'Warga Baru Nih! ๐Ÿ‘‹๐ŸŽ‰', - 'body' => "Halo Admin! {$user->name} baru saja mendaftar. Yuk cek kelengkapannya! ๐Ÿš€", + 'title' => CheerfulNotification::getMessage('Warga Baru Nih! ๐Ÿ‘‹๐ŸŽ‰', 'Pendaftaran Pengguna Baru'), + 'body' => CheerfulNotification::getMessage("Halo Admin! {$user->name} baru saja mendaftar. Yuk cek kelengkapannya! ๐Ÿš€", "Pengguna baru {$user->name} telah mendaftar ke dalam sistem."), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Pages/Company.php b/app/Filament/Pages/Company.php index 152d38c..bb6a7d1 100644 --- a/app/Filament/Pages/Company.php +++ b/app/Filament/Pages/Company.php @@ -3,6 +3,7 @@ namespace App\Filament\Pages; use App\Enums\DataChangeStatus; +use App\Enums\UxStyle; use App\Enums\VerificationStatus; use App\Filament\Resources\Manage\DataChanges\DataChangesResource; use App\Filament\Support\CheerfulNotification; @@ -52,7 +53,15 @@ class Company extends Page implements HasForms protected static ?string $slug = 'manage/company'; - protected static ?string $title = 'Perusahaan'; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Detail Perusahaan ๐Ÿ—๏ธโœจ', 'Profil Perusahaan'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Kelola informasi perusahaan Anda biar tetap resmi dan kredibel! ๐Ÿš€๐Ÿ˜Š', 'Silakan kelola informasi detail perusahaan Anda pada formulir di bawah ini.'); + } public ?VerificationRequest $verificationRequest = null; @@ -183,7 +192,9 @@ public static function form(Schema $schema): Schema return $schema ->components([ - Section::make('Informasi') + Section::make(fn () => CheerfulNotification::getMessage('Informasi Perusahaan ๐Ÿ—๏ธโœจ', 'Profil Perusahaan')) + ->description(fn () => CheerfulNotification::getMessage('Kelola informasi perusahaan Anda biar tetap resmi dan kredibel! ๐Ÿš€โœจ', 'Kelola informasi detail perusahaan Anda di sini.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-building-office-2' : null) ->schema([ TextInput::make('name') ->label('Nama') @@ -228,7 +239,8 @@ public static function form(Schema $schema): Schema ->schema( array_merge( [ - Section::make('NIK Direktur') + Section::make(fn () => CheerfulNotification::getMessage('NIK Direktur ๐Ÿ‘คโœจ', 'NIK Direktur')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-user' : null) ->schema([ TextInput::make('director_nik') ->hiddenLabel() @@ -252,7 +264,8 @@ public static function form(Schema $schema): Schema collect($documents) ->map(function (array $doc): Section { - return Section::make($doc['title']) + return Section::make(fn () => CheerfulNotification::getMessage($doc['title'].' ๐Ÿ“„โœจ', $doc['title'])) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextInput::make($doc['text_name']) ->hiddenLabel() @@ -288,8 +301,8 @@ public function saveAction(): Action return Action::make('save') ->label('Simpan') - ->modalHeading('Ajukan Perubahan Profil ๐Ÿ“โœจ') - ->modalDescription('Yakin ingin mengubah data perusahaan? Jelaskan alasannya supaya proses verifikasi makin lancar! ๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Ajukan Perubahan Profil ๐Ÿ“โœจ', 'Ubah Profil Perusahaan')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin ingin mengubah data perusahaan? Jelaskan alasannya supaya proses verifikasi makin lancar! ๐Ÿ˜Š', 'Silakan masukkan alasan Anda melakukan perubahan profil perusahaan.')) ->modal($needsReview) ->schema( $needsReview @@ -325,8 +338,8 @@ public function performSave(array $data, bool $needsReview = false): void if ($existingRequest) { CheerfulNotification::warning( - 'Pengajuan Sudah Ada โณ', - 'Masih ada pengajuan perubahan data yang sedang menunggu verifikasi. Silakan tunggu hingga selesai diproses.' + CheerfulNotification::getMessage('Pengajuan Sudah Ada โณ', 'Pengajuan Sedang Diproses'), + CheerfulNotification::getMessage('Masih ada pengajuan perubahan data yang sedang menunggu verifikasi. Silakan tunggu hingga selesai diproses.', 'Pengajuan perubahan data perusahaan Anda masih dalam proses verifikasi oleh admin.') ) ->send(); @@ -391,8 +404,8 @@ public function performSave(array $data, bool $needsReview = false): void if (empty($changedFields)) { CheerfulNotification::info( - 'Belum ada yang berubah โœจ', - 'Ubah data terlebih dulu lalu simpan kembali ๐Ÿ’ช' + CheerfulNotification::getMessage('Belum ada yang berubah โœจ', 'Tidak Ada Perubahan'), + CheerfulNotification::getMessage('Ubah data terlebih dulu lalu simpan kembali ๐Ÿ’ช', 'Silakan ubah data terlebih dahulu sebelum melakukan penyimpanan.') ) ->send(); @@ -409,8 +422,8 @@ public function performSave(array $data, bool $needsReview = false): void ]); CheerfulNotification::success( - 'Permohonan Berhasil ๐ŸŽ‰', - 'Data sudah dikirim dan sedang menunggu verifikasi admin โณ' + CheerfulNotification::getMessage('Permohonan Berhasil ๐ŸŽ‰', 'Permohonan Berhasil'), + CheerfulNotification::getMessage('Data sudah dikirim dan sedang menunggu verifikasi admin โณ', 'Permohonan perubahan data perusahaan telah berhasil dikirimkan.') ) ->send(); @@ -418,8 +431,8 @@ public function performSave(array $data, bool $needsReview = false): void ->get() ->each(function ($admin) use ($dataChangeRequest): void { $admin->notify(new BroadcastNotification([ - 'title' => 'Ada Pengajuan Perubahan Data โœจ', - 'body' => 'Halooo Admin! ๐Ÿ‘‹ '.auth()->user()->name.' baru saja mengajukan perubahan data. Yuk, cek detailnya dan lakukan verifikasi ya! ๐Ÿš€', + 'title' => CheerfulNotification::getMessage('Ada Pengajuan Perubahan Data โœจ', 'Pengajuan Perubahan Perusahaan'), + 'body' => CheerfulNotification::getMessage('Halooo Admin! ๐Ÿ‘‹ '.auth()->user()->name.' baru saja mengajukan perubahan data. Yuk, cek detailnya dan lakukan verifikasi ya! ๐Ÿš€', 'Pengguna '.auth()->user()->name.' telah mengajukan perubahan data perusahaan.'), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Pages/Media.php b/app/Filament/Pages/Media.php index 6e3c761..b9b4f0c 100644 --- a/app/Filament/Pages/Media.php +++ b/app/Filament/Pages/Media.php @@ -6,6 +6,7 @@ use App\Enums\MediaClassification; use App\Enums\MediaType; use App\Enums\RoleEnum; +use App\Enums\UxStyle; use App\Enums\VerificationStatus; use App\Filament\Resources\Manage\DataChanges\DataChangesResource; use App\Filament\Support\CheerfulNotification; @@ -63,7 +64,15 @@ class Media extends Page implements HasForms protected static ?string $slug = 'manage/media'; - protected static ?string $title = 'Media'; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Detail Media ๐Ÿ“ฐโœจ', 'Profil Media'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Kelola informasi media Anda biar tetap eksis dan terpercaya! ๐Ÿš€๐Ÿ˜Š', 'Silakan kelola informasi detail media Anda pada formulir di bawah ini.'); + } public ?VerificationRequest $verificationRequest = null; @@ -156,7 +165,9 @@ public static function form(Schema $schema): Schema return $schema ->components([ - Section::make('Informasi') + Section::make(fn () => CheerfulNotification::getMessage('Detail Informasi ๐Ÿ“ฐโœจ', 'Informasi Media')) + ->description(fn () => CheerfulNotification::getMessage('Kelola informasi media Anda biar tetap eksis dan terpercaya! ๐Ÿš€โœจ', 'Kelola informasi detail media Anda di sini.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-newspaper' : null) ->schema([ TextInput::make('name') ->label('Nama') @@ -202,7 +213,8 @@ public static function form(Schema $schema): Schema ->schema( collect($documents) ->map(function (array $doc): Section { - return Section::make($doc['title']) + return Section::make(fn () => CheerfulNotification::getMessage($doc['title'].' ๐Ÿ“„โœจ', $doc['title'])) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextInput::make($doc['text_name']) ->hiddenLabel() @@ -236,8 +248,8 @@ public function saveAction(): Action return Action::make('save') ->label('Simpan') - ->modalHeading('Ajukan Perubahan Media ๐Ÿ“โœจ') - ->modalDescription('Mau mengubah data media? Sertakan alasan yang jelas ya biar admin makin yakin! ๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Ajukan Perubahan Media ๐Ÿ“โœจ', 'Ubah Data Media')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Mau mengubah data media? Sertakan alasan yang jelas ya biar admin makin yakin! ๐Ÿ˜Š', 'Silakan masukkan alasan Anda melakukan perubahan data media.')) ->modal($needsReview) ->schema( $needsReview @@ -267,8 +279,8 @@ public function performSave(array $data = [], bool $needsReview = false): void if ($existingRequest) { CheerfulNotification::warning( - 'Pengajuan Sudah Ada โณ', - 'Masih ada pengajuan perubahan data yang sedang menunggu verifikasi. Silakan tunggu hingga selesai diproses.' + CheerfulNotification::getMessage('Pengajuan Sudah Ada โณ', 'Pengajuan Sedang Diproses'), + CheerfulNotification::getMessage('Masih ada pengajuan perubahan data yang sedang menunggu verifikasi. Silakan tunggu hingga selesai diproses.', 'Pengajuan perubahan data media Anda masih dalam proses verifikasi oleh admin.') ) ->send(); @@ -333,8 +345,8 @@ public function performSave(array $data = [], bool $needsReview = false): void if (empty($changedFields)) { CheerfulNotification::info( - 'Belum ada yang berubah โœจ', - 'Ubah data terlebih dulu lalu simpan kembali ๐Ÿ’ช' + CheerfulNotification::getMessage('Belum ada yang berubah โœจ', 'Tidak Ada Perubahan'), + CheerfulNotification::getMessage('Ubah data terlebih dulu lalu simpan kembali ๐Ÿ’ช', 'Silakan ubah data terlebih dahulu sebelum melakukan penyimpanan.') ) ->send(); @@ -351,8 +363,8 @@ public function performSave(array $data = [], bool $needsReview = false): void ]); CheerfulNotification::success( - 'Permohonan Berhasil ๐ŸŽ‰', - 'Data sudah dikirim dan sedang menunggu verifikasi admin โณ' + CheerfulNotification::getMessage('Permohonan Berhasil ๐ŸŽ‰', 'Permohonan Berhasil'), + CheerfulNotification::getMessage('Data sudah dikirim dan sedang menunggu verifikasi admin โณ', 'Permohonan perubahan data media telah berhasil dikirimkan.') ) ->send(); @@ -360,8 +372,8 @@ public function performSave(array $data = [], bool $needsReview = false): void ->get() ->each(function ($admin) use ($dataChangeRequest): void { $admin->notify(new BroadcastNotification([ - 'title' => 'Ada Pengajuan Perubahan Data Media โœจ', - 'body' => 'Halooo Admin! ๐Ÿ‘‹ '.auth()->user()->name.' baru saja mengajukan perubahan data media. Yuk, cek detailnya! ๐Ÿš€', + 'title' => CheerfulNotification::getMessage('Ada Pengajuan Perubahan Data Media โœจ', 'Pengajuan Perubahan Media'), + 'body' => CheerfulNotification::getMessage('Halooo Admin! ๐Ÿ‘‹ '.auth()->user()->name.' baru saja mengajukan perubahan data media. Yuk, cek detailnya! ๐Ÿš€', 'Pengguna '.auth()->user()->name.' telah mengajukan perubahan data media.'), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Pages/Settings/ManageGeneralSettings.php b/app/Filament/Pages/Settings/ManageGeneralSettings.php index b7e7ead..816907c 100644 --- a/app/Filament/Pages/Settings/ManageGeneralSettings.php +++ b/app/Filament/Pages/Settings/ManageGeneralSettings.php @@ -37,8 +37,8 @@ public function form(Schema $schema): Schema { return $schema ->components([ - Section::make('Informasi Dasar ๐Ÿ“‹โœจ') - ->description('Atur info penting website kita di sini biar makin lengkap! ๐Ÿš€๐Ÿ˜Š') + Section::make(fn () => CheerfulNotification::getMessage('Informasi Dasar ๐Ÿ“‹โœจ', 'Informasi Dasar')) + ->description(fn () => CheerfulNotification::getMessage('Atur info penting website kita di sini biar makin lengkap! ๐Ÿš€๐Ÿ˜Š', 'Silakan atur informasi dasar situs web pada bagian ini.')) ->schema([ TextInput::make('site_name') ->label('Nama') @@ -84,8 +84,8 @@ public function form(Schema $schema): Schema ->columnSpanFull(), ])->columnSpan(2), - Section::make('Logo & Ikon ๐Ÿ–ผ๏ธโœจ') - ->description('Unggah logo dan ikon biar branding kita makin cakep! ๐ŸŽจ๐Ÿ‘Œ') + Section::make(fn () => CheerfulNotification::getMessage('Logo & Ikon ๐Ÿ–ผ๏ธโœจ', 'Logo & Ikon')) + ->description(fn () => CheerfulNotification::getMessage('Unggah logo dan ikon biar branding kita makin cakep! ๐ŸŽจ๐Ÿ‘Œ', 'Silakan unggah logo dan ikon untuk keperluan branding situs web.')) ->schema([ FileUpload::make('site_logo') ->label('Logo') diff --git a/app/Filament/Pages/Settings/ManageSeoSettings.php b/app/Filament/Pages/Settings/ManageSeoSettings.php index 7db12a0..c8085cf 100644 --- a/app/Filament/Pages/Settings/ManageSeoSettings.php +++ b/app/Filament/Pages/Settings/ManageSeoSettings.php @@ -35,8 +35,8 @@ public function form(Schema $schema): Schema { return $schema ->components([ - Section::make('Search Engine Optimization ๐Ÿ”โœจ') - ->description('Atur kata kunci dan deskripsi biar website kita gampang dicari orang ya! ๐Ÿš€๐Ÿ“ˆ') + Section::make(fn () => CheerfulNotification::getMessage('Search Engine Optimization ๐Ÿ”โœจ', 'Optimasi Mesin Pencari (SEO)')) + ->description(fn () => CheerfulNotification::getMessage('Atur kata kunci dan deskripsi biar website kita gampang dicari orang ya! ๐Ÿš€๐Ÿ“ˆ', 'Atur kata kunci dan deskripsi untuk meningkatkan visibilitas situs web pada mesin pencari.')) ->schema([ TextInput::make('title') ->label('SEO Title') diff --git a/app/Filament/Pages/Settings/ManageSocialMediaSettings.php b/app/Filament/Pages/Settings/ManageSocialMediaSettings.php index 43aa62e..1dd9e31 100644 --- a/app/Filament/Pages/Settings/ManageSocialMediaSettings.php +++ b/app/Filament/Pages/Settings/ManageSocialMediaSettings.php @@ -35,8 +35,8 @@ public function form(Schema $schema): Schema { return $schema ->components([ - Section::make('Link Media Sosial ๐Ÿ”—โœจ') - ->description('Hubungkan semua media sosial resmi kita di sini untuk menjangkau lebih banyak orang! ๐ŸŒ๐Ÿคฉ') + Section::make(fn () => CheerfulNotification::getMessage('Link Media Sosial ๐Ÿ”—โœจ', 'Tautan Media Sosial')) + ->description(fn () => CheerfulNotification::getMessage('Hubungkan semua media sosial resmi kita di sini untuk menjangkau lebih banyak orang! ๐ŸŒ๐Ÿคฉ', 'Silakan masukkan tautan media sosial resmi perusahaan pada bagian ini.')) ->schema([ Grid::make(2) ->schema([ diff --git a/app/Filament/Pages/Verification.php b/app/Filament/Pages/Verification.php index e84e676..e557e88 100644 --- a/app/Filament/Pages/Verification.php +++ b/app/Filament/Pages/Verification.php @@ -112,17 +112,17 @@ public function submitVerificationAction(): Action ->icon('heroicon-o-paper-airplane') ->color('primary') ->requiresConfirmation() - ->modalHeading('Ajukan Verifikasi Sekarang? ๐Ÿš€โœจ') + ->modalHeading(fn () => CheerfulNotification::getMessage('Ajukan Verifikasi Sekarang? ๐Ÿš€โœจ', 'Ajukan Verifikasi')) ->modalDescription(function () use ($progress): string { if (! $progress['isDataComplete']) { - return 'Aduh, data belum lengkap nih! ๐Ÿ˜… Silakan lengkapi dulu bagian: '.implode(', ', $progress['missingData']).' ya!'; + return CheerfulNotification::getMessage('Aduh, data belum lengkap nih! ๐Ÿ˜… Silakan lengkapi dulu bagian: '.implode(', ', $progress['missingData']).' ya!', 'Data belum lengkap. Silakan lengkapi bagian: '.implode(', ', $progress['missingData']).'.'); } if ($this->verificationRequest && $this->verificationRequest->status === VerificationStatus::NEED_REVISION) { - return 'Ayo kirim ulang perbaikannya! Pastikan semuanya sudah sesuai catatan admin biar langsung gaspol! ๐Ÿ’ชโœจ'; + return CheerfulNotification::getMessage('Ayo kirim ulang perbaikannya! Pastikan semuanya sudah sesuai catatan admin biar langsung gaspol! ๐Ÿ’ชโœจ', 'Silakan kirimkan kembali perbaikan data Anda sesuai dengan catatan Admin.'); } - return 'Apakah Anda yakin ingin mengajukan verifikasi? Pastikan semua data sudah benar dan lengkap ya! Pasti bisa! ๐Ÿ˜Š๐Ÿ‘'; + return CheerfulNotification::getMessage('Apakah Anda yakin ingin mengajukan verifikasi? Pastikan semua data sudah benar and lengkap ya! Pasti bisa! ๐Ÿ˜Š๐Ÿ‘', 'Apakah Anda yakin ingin mengajukan verifikasi? Pastikan seluruh data yang diinput telah sesuai.'); }) ->modalSubmitActionLabel('Ya, Ajukan') ->visible(fn (): bool => $progress['canSubmit']) @@ -130,8 +130,8 @@ public function submitVerificationAction(): Action ->action(function () use ($progress): void { if (! $progress['isDataComplete']) { CheerfulNotification::danger( - 'Data Belum Lengkap! ๐Ÿ˜…', - 'Silakan lengkapi data terlebih dahulu sebelum mengajukan verifikasi ya: '.implode(', ', $progress['missingData']) + CheerfulNotification::getMessage('Data Belum Lengkap! ๐Ÿ˜…', 'Data Tidak Lengkap'), + CheerfulNotification::getMessage('Silakan lengkapi data terlebih dahulu sebelum mengajukan verifikasi ya: '.implode(', ', $progress['missingData']), 'Silakan lengkapi seluruh data wajib sebelum mengajukan verifikasi: '.implode(', ', $progress['missingData'])) )->send(); return; @@ -142,8 +142,8 @@ public function submitVerificationAction(): Action $this->verificationRequest = $this->submitVerification(); CheerfulNotification::success( - 'Berhasil Diajukan! ๐Ÿš€', - 'Yeay! Pengajuan verifikasi Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! โœจ' + CheerfulNotification::getMessage('Berhasil Diajukan! ๐Ÿš€', 'Berhasil Diajukan'), + CheerfulNotification::getMessage('Yeay! Pengajuan verifikasi Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! โœจ', 'Pengajuan verifikasi Anda telah berhasil dikirimkan ke pihak Admin untuk diproses.') )->send(); User::superAdmin() @@ -152,10 +152,12 @@ public function submitVerificationAction(): Action $user = auth()->user(); $admin->notify(new BroadcastNotification([ - 'title' => $isRevision ? 'Pembaruan Data Verifikasi โœจ' : 'Ada Pengajuan Verifikasi Baru! ๐Ÿš€', + 'title' => $isRevision + ? CheerfulNotification::getMessage('Pembaruan Data Verifikasi โœจ', 'Pembaruan Data Verifikasi') + : CheerfulNotification::getMessage('Ada Pengajuan Verifikasi Baru! ๐Ÿš€', 'Pengajuan Verifikasi Baru'), 'body' => $isRevision - ? "Cihuy! {$user->name} baru saja memperbarui data verifikasi untuk perusahaan {$user->company->name}. Yuk, cek perubahannya!" - : "Halo Admin! {$user->name} baru saja mengajukan verifikasi data untuk perusahaan {$user->company->name}. Segera diproses ya! ๐Ÿ˜Š", + ? CheerfulNotification::getMessage("Cihuy! {$user->name} baru saja memperbarui data verifikasi untuk perusahaan {$user->company->name}. Yuk, cek perubahannya!", "Pengguna {$user->name} telah memperbarui data verifikasi untuk perusahaan {$user->company->name}.") + : CheerfulNotification::getMessage("Halo Admin! {$user->name} baru saja mengajukan verifikasi data untuk perusahaan {$user->company->name}. Segera diproses ya! ๐Ÿ˜Š", "Pengguna {$user->name} telah mengajukan verifikasi data untuk perusahaan {$user->company->name}."), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php b/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php index 12c146f..9e1d6fb 100644 --- a/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php +++ b/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php @@ -19,8 +19,8 @@ protected function setUp(): void $this->label('Balas') ->icon(Heroicon::OutlinedChatBubbleLeftRight) ->color('success') - ->modalHeading('Balas Pesan Kontak โœจโœ‰๏ธ') - ->modalDescription('Tuliskan jawaban terbaik Anda di sini ya! Hati-hati, setelah dikirim tidak bisa ditarik kembali. ๐Ÿ‘‹๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Balas Pesan Kontak โœจโœ‰๏ธ', 'Balas Pesan Kontak')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Tuliskan jawaban terbaik Anda di sini ya! Hati-hati, setelah dikirim tidak bisa ditarik kembali. ๐Ÿ‘‹๐Ÿ˜Š', 'Silakan masukkan balasan Anda untuk pesan kontak ini.')) ->schema([ Textarea::make('reply_message') ->label('Pesan Balasan') @@ -40,8 +40,8 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Balasan Terkirim! ๐Ÿš€โœ‰๏ธ', - 'Pesan balasan Anda sudah meluncur ke email pengirim. Semoga membantu mereka ya! ๐Ÿ˜Š' + CheerfulNotification::getMessage('Balasan Terkirim! ๐Ÿš€โœ‰๏ธ', 'Balasan Berhasil Dikirim'), + CheerfulNotification::getMessage('Pesan balasan Anda sudah meluncur ke email pengirim. Semoga membantu mereka ya! ๐Ÿ˜Š', 'Pesan balasan telah berhasil dikirim ke alamat email pengirim.') )->send(); }) ->visible(fn (Contact $record): bool => $record->replied_at === null); diff --git a/app/Filament/Resources/Manage/Contacts/ContactResource.php b/app/Filament/Resources/Manage/Contacts/ContactResource.php index ba75457..1caf9e6 100644 --- a/app/Filament/Resources/Manage/Contacts/ContactResource.php +++ b/app/Filament/Resources/Manage/Contacts/ContactResource.php @@ -2,11 +2,13 @@ namespace App\Filament\Resources\Manage\Contacts; +use App\Enums\UxStyle; use App\Filament\Actions\Cheerful\DeleteAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\RowIndexColumn; use App\Filament\Resources\Manage\Contacts\Actions\ReplyAction; use App\Filament\Resources\Manage\Contacts\Pages\ManageContacts; +use App\Filament\Support\CheerfulNotification; use App\Models\Contact; use BackedEnum; use Filament\Actions\BulkActionGroup; @@ -50,9 +52,9 @@ public static function infolist(Schema $schema): Schema { return $schema ->schema([ - Section::make('Informasi Pengirim ๐Ÿ“ง') - ->description('Detail mengenai identitas pengirim pesan.') - ->icon('heroicon-o-user') + Section::make(fn () => CheerfulNotification::getMessage('Informasi Pengirim ๐Ÿ“ง', 'Informasi Pengirim')) + ->description(fn () => CheerfulNotification::getMessage('Cek detail identitas pengirim pesan biar makin kenal! ๐Ÿ“งโœจ', 'Detail mengenai identitas pengirim pesan.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-user' : null) ->schema([ Grid::make(4) ->schema([ @@ -76,9 +78,9 @@ public static function infolist(Schema $schema): Schema ]) ->columnSpanFull(), - Section::make('Isi Pesan ๐Ÿ’ฌ') - ->description('Pesan lengkap yang dikirimkan oleh pengguna.') - ->icon('heroicon-o-chat-bubble-left-right') + Section::make(fn () => CheerfulNotification::getMessage('Isi Pesan ๐Ÿ’ฌ', 'Isi Pesan')) + ->description(fn () => CheerfulNotification::getMessage('Yuk, baca pesan lengkap yang dikirimkan oleh pengguna! ๐Ÿ’ฌโœจ', 'Pesan lengkap yang dikirimkan oleh pengguna.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-chat-bubble-left-right' : null) ->schema([ TextEntry::make('message') ->label('Konten Pesan') @@ -86,9 +88,9 @@ public static function infolist(Schema $schema): Schema ]) ->columnSpanFull(), - Section::make('Riwayat Balasan ๐Ÿ“ค') - ->description('Detail mengenai tanggapan yang telah diberikan.') - ->icon('heroicon-o-paper-airplane') + Section::make(fn () => CheerfulNotification::getMessage('Riwayat Balasan ๐Ÿ“ค', 'Riwayat Balasan')) + ->description(fn () => CheerfulNotification::getMessage('Lihat detail tanggapan yang sudah Admin berikan sebelumnya! ๐Ÿ“คโœจ', 'Detail mengenai tanggapan yang telah diberikan.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-paper-airplane' : null) ->schema([ TextEntry::make('repliedBy.name') ->label('Dibalas Oleh') @@ -173,7 +175,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedEnvelope) - ->emptyStateDescription('Belum ada kontak atau pesan masuk.') + ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada kontak atau pesan masuk nih! Santai dulu yuk. โœจโœ…', 'Belum ada kontak atau pesan masuk yang tersedia.')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php index 96f9bfd..6f7f08f 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php @@ -35,8 +35,8 @@ protected function setUp(): void $cooperationMedia->update(['status' => ApprovalStatus::ACCEPTED]); CheerfulNotification::success( - 'Berhasil Diterima! โœ…โœจ', - 'Mantap! Anda telah menerima penawaran kerja sama ini. Silakan lanjut ke tahap pengajuan proposal ya! ๐Ÿ’ช' + CheerfulNotification::getMessage('Berhasil Diterima! โœ…โœจ', 'Tawaran Diterima'), + CheerfulNotification::getMessage('Mantap! Anda telah menerima penawaran kerja sama ini. Silakan lanjut ke tahap pengajuan proposal ya! ๐Ÿ’ช', 'Anda telah menyetujui penawaran kerja sama ini. Silakan lanjutkan ke tahap pengiriman proposal.') )->send(); // Notify Admins @@ -44,8 +44,8 @@ protected function setUp(): void ->get() ->each(function ($admin) use ($record, $cooperationMedia): void { $admin->notify(new BroadcastNotification([ - 'title' => 'Kabar Baik! Tawaran Diterima โœจ๐Ÿค', - 'body' => "Media {$cooperationMedia->partnerMedia->name} baru saja menerima penawaran kerja sama \"{$record->title}\". Siap-siap cek proposal mereka ya! ๐Ÿ˜Š", + 'title' => CheerfulNotification::getMessage('Kabar Baik! Tawaran Diterima โœจ๐Ÿค', 'Tawaran Kerja Sama Disetujui Media'), + 'body' => CheerfulNotification::getMessage("Media {$cooperationMedia->partnerMedia->name} baru saja menerima penawaran kerja sama \"{$record->title}\". Siap-siap cek proposal mereka ya! ๐Ÿ˜Š", "Pihak media {$cooperationMedia->partnerMedia->name} telah menyetujui penawaran kerja sama \"{$record->title}\"."), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php index dff1b96..4c49c40 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php @@ -19,16 +19,16 @@ protected function setUp(): void ->icon(Heroicon::OutlinedCheckBadge) ->color('success') ->requiresConfirmation() - ->modalHeading('Selesaikan Kerja Sama? ๐Ÿโœจ') - ->modalDescription('Yakin mau menyelesaikan kerja sama ini? Pastikan semua pembayaran ke media sudah lunas dan aman ya! ๐Ÿค๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Selesaikan Kerja Sama? ๐Ÿโœจ', 'Selesaikan Kerja Sama')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin mau menyelesaikan kerja sama ini? Pastikan semua pembayaran ke media sudah lunas dan aman ya! ๐Ÿค๐Ÿ˜Š', 'Apakah Anda yakin ingin menyelesaikan kerja sama ini? Pastikan seluruh kewajiban pembayaran telah terpenuhi.')) ->action(function (Cooperation $record): void { // Verify all accepted media are paid $acceptedMedia = $record->cooperationMedia()->accepted()->get(); if ($acceptedMedia->isEmpty()) { CheerfulNotification::danger( - 'Tidak Ada Media! โŒ', - 'Tidak ada media yang menerima kerja sama ini. Tidak dapat diselesaikan.' + CheerfulNotification::getMessage('Tidak Ada Media! โŒ', 'Data Media Kosong'), + CheerfulNotification::getMessage('Tidak ada media yang menerima kerja sama ini. Tidak dapat diselesaikan.', 'Proses tidak dapat dilanjutkan karena tidak ada media yang terlibat dalam kerja sama ini.') )->send(); return; @@ -40,8 +40,8 @@ protected function setUp(): void if ($unpaidMedia->isNotEmpty()) { CheerfulNotification::danger( - 'Pembayaran Belum Lunas! โš ๏ธ', - 'Masih ada media yang belum dibayar. Harap selesaikan pembayaran untuk semua media yang menerima kerja sama.' + CheerfulNotification::getMessage('Pembayaran Belum Lunas! โš ๏ธ', 'Pembayaran Belum Terpenuhi'), + CheerfulNotification::getMessage('Masih ada media yang belum dibayar. Harap selesaikan pembayaran untuk semua media yang menerima kerja sama.', 'Terdapat kewajiban pembayaran yang belum diselesaikan untuk media terkait.') )->send(); $this->halt(); @@ -59,8 +59,8 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Kerja Sama Selesai! ๐ŸŽ‰โœจ', - 'Alhamdulillah! Kerja sama ini telah resmi diselesaikan. Terima kasih atas kerja samanya! ๐Ÿ™Œ๐Ÿ˜Š' + CheerfulNotification::getMessage('Kerja Sama Selesai! ๐ŸŽ‰โœจ', 'Kerja Sama Berhasil Diselesaikan'), + CheerfulNotification::getMessage('Alhamdulillah! Kerja sama ini telah resmi diselesaikan. Terima kasih atas kerja samanya! ๐Ÿ™Œ๐Ÿ˜Š', 'Proses kerja sama ini telah resmi ditutup dan diselesaikan.') )->send(); }) ->visible(function (Cooperation $record): bool { diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php index f61d7ae..03cddf5 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php @@ -82,8 +82,8 @@ protected function setUp(): void $partnerUser = $partnerMedia->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => 'Tugas Baru Telah Menanti! ๐Ÿ“โœจ', - 'body' => "Halo! Admin sudah menetapkan tugas untuk kerja sama \"{$record->title}\". Yuk, cek detail tugasnya dan mulai buat laporannya! Semangat! ๐Ÿ’ช๐Ÿ˜Š", + 'title' => CheerfulNotification::getMessage('Tugas Baru Telah Menanti! ๐Ÿ“โœจ', 'Penugasan Kerja Sama Baru'), + 'body' => CheerfulNotification::getMessage("Halo! Admin sudah menetapkan tugas untuk kerja sama \"{$record->title}\". Yuk, cek detail tugasnya dan mulai buat laporannya! Semangat! ๐Ÿ’ช๐Ÿ˜Š", "Admin telah menetapkan penugasan baru untuk kerja sama \"{$record->title}\". Silakan tinjau detail tugas dan laporan yang diperlukan."), 'action' => [ Action::make('view') ->label('Lihat') @@ -94,12 +94,12 @@ protected function setUp(): void } CheerfulNotification::success( - 'Penugasan Berhasil Dibuat! ๐Ÿš€โœจ', - 'Mantap! Penugasan telah dibuat dan semua media terkait sudah diberi tahu. Mari kita pantau progresnya! ๐Ÿ’ช' + CheerfulNotification::getMessage('Penugasan Berhasil Dibuat! ๐Ÿš€โœจ', 'Penugasan Berhasil Dibuat'), + CheerfulNotification::getMessage('Mantap! Penugasan telah dibuat dan semua media terkait sudah diberi tahu. Mari kita pantau progresnya! ๐Ÿ’ช', 'Penugasan telah berhasil dibuat dan seluruh media terkait telah dinotifikasi.') )->send(); }) - ->modalHeading('Buat Penugasan Baru ๐Ÿ“โœจ') - ->modalDescription('Waktunya bagi-bagi tugas! Tentukan detail penugasan untuk para media biar mereka bisa langsung gaspol! ๐Ÿš€๐Ÿ’ช') + ->modalHeading(fn () => CheerfulNotification::getMessage('Buat Penugasan Baru ๐Ÿ“โœจ', 'Buat Penugasan Baru')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Waktunya bagi-bagi tugas! Tentukan detail penugasan untuk para media biar mereka bisa langsung gaspol! ๐Ÿš€๐Ÿ’ช', 'Silakan tentukan detail penugasan untuk pihak media eksternal.')) ->modalSubmitActionLabel('Simpan') ->visible(function (Cooperation $record): bool { $user = auth()->user(); diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php index 8e4f232..6883fa0 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php @@ -20,8 +20,8 @@ protected function setUp(): void ->icon(Heroicon::OutlinedBanknotes) ->color('success') ->requiresConfirmation() - ->modalHeading('Lanjut ke Pembayaran? ๐Ÿ’ธ๐Ÿ’ณ') - ->modalDescription('Siap buat lanjut ke tahap pembayaran? Pastikan semua laporan sudah diverifikasi dulu ya! โœ…๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Lanjut ke Pembayaran? ๐Ÿ’ธ๐Ÿ’ณ', 'Lanjutkan ke Pembayaran')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Siap buat lanjut ke tahap pembayaran? Pastikan semua laporan sudah diverifikasi dulu ya! โœ…๐Ÿ˜Š', 'Apakah Anda yakin ingin melanjutkan ke tahap pembayaran? Pastikan seluruh laporan telah diverifikasi.')) ->action(function (Cooperation $record): void { $record->update([ 'status' => CooperationStatus::PAYMENT, @@ -29,8 +29,8 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Tahap Pembayaran Dimulai! ๐Ÿ’ธโœจ', - 'Kerja sama telah dipindahkan ke tahap pembayaran. Silakan proses pembayarannya ya! ๐Ÿ˜Š' + CheerfulNotification::getMessage('Tahap Pembayaran Dimulai! ๐Ÿ’ธโœจ', 'Tahap Pembayaran Aktif'), + CheerfulNotification::getMessage('Kerja sama telah dipindahkan ke tahap pembayaran. Silakan proses pembayarannya ya! ๐Ÿ˜Š', 'Status kerja sama telah dialihkan ke tahap pembayaran.') )->send(); }) ->visible(function (Cooperation $record): bool { diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php index c9eff74..2576c83 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php @@ -33,8 +33,8 @@ protected function setUp(): void $cooperationMedia->update(['status' => ApprovalStatus::REJECTED]); CheerfulNotification::info( - 'Berhasil Ditolak ๐Ÿ™', - 'Terima kasih atas konfirmasinya. Pesan penolakan telah diteruskan ke Admin. ๐Ÿ˜Š' + CheerfulNotification::getMessage('Berhasil Ditolak ๐Ÿ™', 'Tawaran Kerja Sama Ditolak'), + CheerfulNotification::getMessage('Terima kasih atas konfirmasinya. Pesan penolakan telah diteruskan ke Admin. ๐Ÿ˜Š', 'Penolakan penawaran kerja sama telah berhasil dikirimkan ke pihak Admin.') )->send(); // Notify Admins @@ -42,8 +42,8 @@ protected function setUp(): void ->get() ->each(function ($admin) use ($record, $cooperationMedia): void { $admin->notify(new BroadcastNotification([ - 'title' => 'Yah, Tawaran Ditolak ๐Ÿ˜”๐Ÿค', - 'body' => "Media {$cooperationMedia->partnerMedia->name} baru saja menolak penawaran kerja sama \"{$record->title}\". Mungkin di lain waktu ya! ๐Ÿ™", + 'title' => CheerfulNotification::getMessage('Yah, Tawaran Ditolak ๐Ÿ˜”๐Ÿค', 'Tawaran Kerja Sama Ditolak Media'), + 'body' => CheerfulNotification::getMessage("Media {$cooperationMedia->partnerMedia->name} baru saja menolak penawaran kerja sama \"{$record->title}\". Mungkin di lain waktu ya! ๐Ÿ™", "Pihak media {$cooperationMedia->partnerMedia->name} telah menolak penawaran kerja sama \"{$record->title}\"."), ])); }); } diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php index fc2d463..5a379a2 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php @@ -93,8 +93,8 @@ protected function setUp(): void } CheerfulNotification::success( - 'Berhasil Diajukan! ๐Ÿš€', - 'Yeay! Proposal kerja sama Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! โœจ' + CheerfulNotification::getMessage('Berhasil Diajukan! ๐Ÿš€', 'Proposal Berhasil Dikirim'), + CheerfulNotification::getMessage('Yeay! Proposal kerja sama Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! โœจ', 'Proposal kerja sama Anda telah berhasil dikirimkan ke pihak Admin.') )->send(); // Notify Admin @@ -104,10 +104,12 @@ protected function setUp(): void $user = auth()->user(); $admin->notify(new BroadcastNotification([ - 'title' => $isRevision ? 'Pembaruan Proposal Kerja Sama โœจ' : 'Ada Proposal Kerja Sama Baru! ๐Ÿš€', + 'title' => $isRevision + ? CheerfulNotification::getMessage('Pembaruan Proposal Kerja Sama โœจ', 'Pembaruan Proposal Kerja Sama') + : CheerfulNotification::getMessage('Ada Proposal Kerja Sama Baru! ๐Ÿš€', 'Proposal Kerja Sama Baru'), 'body' => $isRevision - ? "Cihuy! {$user->name} baru saja memperbarui proposal kerja sama untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}. Yuk, cek perubahannya!" - : "Halo Admin! {$user->name} baru saja mengajukan proposal kerja sama baru untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}. Segera diproses ya! ๐Ÿ˜Š", + ? CheerfulNotification::getMessage("Cihuy! {$user->name} baru saja memperbarui proposal kerja sama untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}. Yuk, cek perubahannya!", "Pengguna {$user->name} telah memperbarui proposal kerja sama untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}.") + : CheerfulNotification::getMessage("Halo Admin! {$user->name} baru saja mengajukan proposal kerja sama baru untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}. Segera diproses ya! ๐Ÿ˜Š", "Pengguna {$user->name} telah mengajukan proposal kerja sama baru untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}."), 'action' => [ Action::make('view') ->label('Lihat') @@ -117,8 +119,8 @@ protected function setUp(): void }); } }) - ->modalHeading('Ajukan Proposal Kerja Sama ๐Ÿš€๐Ÿ“') - ->modalDescription('Ayo kirimkan proposal terbaikmu! Pastikan semua dokumen sudah lengkap ya biar admin makin sreg! โœจ๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Ajukan Proposal Kerja Sama ๐Ÿš€๐Ÿ“', 'Ajukan Proposal Kerja Sama')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Ayo kirimkan proposal terbaikmu! Pastikan semua dokumen sudah lengkap ya biar admin makin sreg! โœจ๐Ÿ˜Š', 'Silakan ajukan proposal kerja sama Anda. Pastikan seluruh dokumen pendukung telah dilampirkan.')) ->modalSubmitActionLabel('Kirim Proposal') ->visible(function (Cooperation $record): bool { $user = auth()->user(); diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Media/PayAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Media/PayAction.php index 6c8a4f8..2d72e9f 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Media/PayAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Media/PayAction.php @@ -63,15 +63,15 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Pembayaran Berhasil! ๐Ÿ’ธโœจ', - "Pembayaran untuk {$record->partnerMedia->name} telah berhasil dicatat." + CheerfulNotification::getMessage('Pembayaran Berhasil! ๐Ÿ’ธโœจ', 'Pembayaran Berhasil Dicatat'), + CheerfulNotification::getMessage("Pembayaran untuk {$record->partnerMedia->name} telah berhasil dicatat.", "Proses pembayaran untuk {$record->partnerMedia->name} telah berhasil diselesaikan.") )->send(); $partnerUser = $record->partnerMedia->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => 'Pembayaran Telah Dikirim! ๐Ÿ’ธโœจ', - 'body' => "Halo! Pembayaran untuk kerja sama \"{$record->cooperation->title}\" telah berhasil dikirim oleh Admin. Silakan cek detailnya ya! ๐Ÿ˜Š", + 'title' => CheerfulNotification::getMessage('Pembayaran Telah Dikirim! ๐Ÿ’ธโœจ', 'Pembayaran Kerja Sama Telah Dikirim'), + 'body' => CheerfulNotification::getMessage("Halo! Pembayaran untuk kerja sama \"{$record->cooperation->title}\" telah berhasil dikirim oleh Admin. Silakan cek detailnya ya! ๐Ÿ˜Š", "Admin telah mengirimkan pembayaran untuk kerja sama \"{$record->cooperation->title}\". Silakan periksa detail transaksi Anda."), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php index 3ef02cf..f1b796c 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php @@ -22,8 +22,8 @@ protected function setUp(): void ->icon(Heroicon::OutlinedCheck) ->color('success') ->requiresConfirmation() - ->modalHeading('Terima Proposal Ini? โœ…โœจ') - ->modalDescription('Yakin ingin menerima proposal kerja sama ini? Pastikan profil medianya sudah oke semua ya! ๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Terima Proposal Ini? โœ…โœจ', 'Terima Proposal')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin ingin menerima proposal kerja sama ini? Pastikan profil medianya sudah oke semua ya! ๐Ÿ˜Š', 'Apakah Anda yakin ingin menyetujui proposal kerja sama ini?')) ->action(function (CooperationProposal $record): void { $record->update([ 'status' => ApprovalStatus::ACCEPTED, @@ -31,16 +31,16 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Proposal Diterima! โœ…โœจ', - "Mantap! Proposal dari '{$record->partnerMedia->name}' telah berhasil diterima. Mari kita lanjut ke tahap berikutnya! ๐Ÿ’ช" + CheerfulNotification::getMessage('Proposal Diterima! โœ…โœจ', 'Proposal Berhasil Disetujui'), + CheerfulNotification::getMessage("Mantap! Proposal dari '{$record->partnerMedia->name}' telah berhasil diterima. Mari kita lanjut ke tahap berikutnya! ๐Ÿ’ช", "Proposal kerja sama dari '{$record->partnerMedia->name}' telah berhasil disetujui.") )->send(); // Notify User (Partner) $partnerUser = $record->partnerMedia?->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => 'Horee! Proposal Disetujui ๐ŸŽ‰', - 'body' => 'Yeay! Proposal kerja sama Anda telah disetujui oleh Admin. Mari kita lanjut ke tahap berikutnya! ๐ŸŽŠ', + 'title' => CheerfulNotification::getMessage('Horee! Proposal Disetujui ๐ŸŽ‰', 'Proposal Kerja Sama Disetujui'), + 'body' => CheerfulNotification::getMessage('Yeay! Proposal kerja sama Anda telah disetujui oleh Admin. Mari kita lanjut ke tahap berikutnya! ๐ŸŽŠ', 'Proposal kerja sama Anda telah disetujui oleh pihak Admin.'), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php index 3c430e6..5860052 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php @@ -23,8 +23,8 @@ protected function setUp(): void $this->label('Tolak') ->icon(Heroicon::OutlinedXMark) ->color('danger') - ->modalHeading('Tolak Proposal Ini? ๐Ÿ›‘๐Ÿค”') - ->modalDescription('Yakin ingin menolak proposal ini? Berikan alasan biar media bisa melakukan perbaikan ke depannya! ๐Ÿ“๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tolak Proposal Ini? ๐Ÿ›‘๐Ÿค”', 'Tolak Proposal')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin ingin menolak proposal ini? Berikan alasan biar media bisa melakukan perbaikan ke depannya! ๐Ÿ“๐Ÿ˜Š', 'Apakah Anda yakin ingin menolak proposal kerja sama ini? Harap berikan alasan penolakan.')) ->schema([ Textarea::make('reason') ->label('Alasan Penolakan') @@ -40,16 +40,16 @@ protected function setUp(): void $record->rejectionReasons()->create(['reason' => $data['reason']]); CheerfulNotification::warning( - 'Proposal Ditolak! ๐Ÿ›‘', - "Proposal dari '{$record->partnerMedia->name}' telah ditolak. Media terkait akan segera mendapatkan notifikasi. ๐Ÿ™" + CheerfulNotification::getMessage('Proposal Ditolak! ๐Ÿ›‘', 'Proposal Ditolak'), + CheerfulNotification::getMessage("Proposal dari '{$record->partnerMedia->name}' telah ditolak. Media terkait akan segera mendapatkan notifikasi. ๐Ÿ™", "Proposal kerja sama dari '{$record->partnerMedia->name}' telah ditolak.") )->send(); // Notify User (Partner) $partnerUser = $record->partnerMedia?->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => 'Maaf, Proposal Belum Diterima ๐Ÿ˜”', - 'body' => "Yah, maaf banget... proposal kerja sama Anda belum bisa kami terima saat ini. ๐Ÿ’”\n\nAlasan: {$data['reason']}", + 'title' => CheerfulNotification::getMessage('Maaf, Proposal Belum Diterima ๐Ÿ˜”', 'Pemberitahuan Penolakan Proposal'), + 'body' => CheerfulNotification::getMessage("Yah, maaf banget... proposal kerja sama Anda belum bisa kami terima saat ini. ๐Ÿ’”\n\nAlasan: {$data['reason']}", "Proposal kerja sama Anda telah ditolak oleh pihak Admin.\n\nAlasan: {$data['reason']}"), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php index ca79544..7951750 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php @@ -27,15 +27,15 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Laporan Diterima! โœ…โœจ', - "Laporan '{$record->title}' telah berhasil diproses. Notifikasi sudah dikirim ke media terkait! ๐Ÿ’ช" + CheerfulNotification::getMessage('Laporan Diterima! โœ…โœจ', 'Laporan Berhasil Disetujui'), + CheerfulNotification::getMessage("Laporan '{$record->title}' telah berhasil diproses. Notifikasi sudah dikirim ke media terkait! ๐Ÿ’ช", "Laporan '{$record->title}' telah disetujui dan notifikasi telah dikirimkan ke pihak media.") )->send(); $partnerUser = $record->mediaTaskAssignment?->partnerMedia?->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => 'Mantap! Laporan Diterima ๐ŸŽŠโœจ', - 'body' => "Hore! Laporan \"{$record->title}\" pada kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" telah disetujui oleh Admin. Satu langkah lebih dekat! ๐Ÿš€", + 'title' => CheerfulNotification::getMessage('Mantap! Laporan Diterima ๐ŸŽŠโœจ', 'Laporan Kerja Sama Disetujui'), + 'body' => CheerfulNotification::getMessage("Hore! Laporan \"{$record->title}\" pada kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" telah disetujui oleh Admin. Satu langkah lebih dekat! ๐Ÿš€", "Laporan \"{$record->title}\" untuk kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" telah disetujui oleh Admin."), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php index 12b84c5..3c76ec1 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php @@ -29,8 +29,8 @@ protected function setUp(): void ->placeholder('Jelaskan alasan pengajuan ditolak...') ->required(), ]) - ->modalHeading('Tolak Laporan? ๐Ÿ›‘๐Ÿค”') - ->modalDescription('Apakah Anda yakin ingin menolak laporan ini? Sertakan alasan biar media bisa segera memperbaikinya ya! ๐Ÿ“๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tolak Laporan? ๐Ÿ›‘๐Ÿค”', 'Tolak Laporan')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Apakah Anda yakin ingin menolak laporan ini? Sertakan alasan biar media bisa segera memperbaikinya ya! ๐Ÿ“๐Ÿ˜Š', 'Apakah Anda yakin ingin menolak laporan ini? Silakan berikan alasan penolakan untuk perbaikan oleh pihak media.')) ->action(function (Report $record, array $data): void { $record->update([ 'status' => ApprovalStatus::REJECTED, @@ -39,15 +39,15 @@ protected function setUp(): void $record->rejectionReasons()->create(['reason' => $data['reason']]); CheerfulNotification::warning( - 'Laporan Ditolak! ๐Ÿ›‘', - "Laporan '{$record->title}' telah ditolak. Media terkait akan segera mendapatkan notifikasi untuk perbaikan. ๐Ÿ™" + CheerfulNotification::getMessage('Laporan Ditolak! ๐Ÿ›‘', 'Laporan Ditolak'), + CheerfulNotification::getMessage("Laporan '{$record->title}' telah ditolak. Media terkait akan segera mendapatkan notifikasi untuk perbaikan. ๐Ÿ™", "Laporan '{$record->title}' telah ditolak. Notifikasi perbaikan telah dikirimkan ke pihak media.") )->send(); $partnerUser = $record->mediaTaskAssignment?->partnerMedia?->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => 'Yah, Laporan Ditolak ๐Ÿ™', - 'body' => "Halo! Laporan \"{$record->title}\" pada kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" ditolak oleh Admin. ๐Ÿ’ช\n\nCatatan Admin: {$data['reason']}", + 'title' => CheerfulNotification::getMessage('Yah, Laporan Ditolak ๐Ÿ™', 'Laporan Kerja Sama Ditolak'), + 'body' => CheerfulNotification::getMessage("Halo! Laporan \"{$record->title}\" pada kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" ditolak oleh Admin. ๐Ÿ’ช\n\nCatatan Admin: {$data['reason']}", "Laporan \"{$record->title}\" untuk kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" ditolak oleh Admin.\n\nAlasan: {$data['reason']}"), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/CooperationResource.php b/app/Filament/Resources/Manage/Cooperations/CooperationResource.php index 6628ad2..7d113c3 100644 --- a/app/Filament/Resources/Manage/Cooperations/CooperationResource.php +++ b/app/Filament/Resources/Manage/Cooperations/CooperationResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\Manage\Cooperations; use App\Enums\RoleEnum; +use App\Enums\UxStyle; use App\Filament\Resources\Manage\Cooperations\Pages\CreateCooperation; use App\Filament\Resources\Manage\Cooperations\Pages\EditCooperation; use App\Filament\Resources\Manage\Cooperations\Pages\ListCooperations; @@ -14,6 +15,7 @@ use App\Filament\Resources\Manage\Cooperations\RelationManagers\TaskAssignmentRelationManager; use App\Filament\Resources\Manage\Cooperations\Schemas\CooperationForm; use App\Filament\Resources\Manage\Cooperations\Tables\CooperationsTable; +use App\Filament\Support\CheerfulNotification; use App\Models\Cooperation; use BackedEnum; use Filament\Actions\Action; @@ -72,7 +74,9 @@ public static function infolist(Schema $schema): Schema { return $schema ->components([ - Section::make('Informasi Kerja Sama') + Section::make(fn () => CheerfulNotification::getMessage('Informasi Kerja Sama ๐Ÿค', 'Informasi Kerja Sama')) + ->description(fn () => CheerfulNotification::getMessage('Detail lengkap mengenai data kerja sama yang sedang berjalan. ๐Ÿคโœจ', 'Informasi detail mengenai pelaksanaan kerja sama.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-hand-raised' : null) ->headerActions([ Action::make('status') ->label(fn (Cooperation $record): ?string => $record->status->getLabel()) diff --git a/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php b/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php index 2abd85b..feb9f26 100644 --- a/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php +++ b/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php @@ -15,7 +15,15 @@ class CreateCooperation extends CreateRecord { protected static string $resource = CooperationResource::class; - protected static ?string $title = 'Tambah Kerja Sama'; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Tambah Kerja Sama Seru! ๐Ÿš€โœจ', 'Tambah Kerja Sama'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Yuk, buat penawaran kerja sama yang menarik buat para media! ๐Ÿ’ช๐Ÿ˜Š', 'Silakan isi formulir di bawah ini dengan lengkap untuk pengajuan kerja sama baru.'); + } protected function getHeaderActions(): array { @@ -68,8 +76,8 @@ protected function afterCreate(): void $partnerUser = $media->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => 'Ada Penawaran Kerja Sama Baru! ๐Ÿคโœจ', - 'body' => "Halo! Admin baru saja menawarkan kerja sama \"{$record->title}\" untuk media {$media->name}. Yuk, cek detailnya dan berikan tanggapanmu! ๐Ÿ˜Š", + 'title' => CheerfulNotification::getMessage('Ada Penawaran Kerja Sama Baru! ๐Ÿคโœจ', 'Penawaran Kerja Sama Baru'), + 'body' => CheerfulNotification::getMessage("Halo! Admin baru saja menawarkan kerja sama \"{$record->title}\" untuk media {$media->name}. Yuk, cek detailnya dan berikan tanggapanmu! ๐Ÿ˜Š", "Admin telah menawarkan kerja sama \"{$record->title}\" untuk media {$media->name}."), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Pages/EditCooperation.php b/app/Filament/Resources/Manage/Cooperations/Pages/EditCooperation.php index d584d86..cd9554a 100644 --- a/app/Filament/Resources/Manage/Cooperations/Pages/EditCooperation.php +++ b/app/Filament/Resources/Manage/Cooperations/Pages/EditCooperation.php @@ -14,6 +14,16 @@ class EditCooperation extends EditRecord { protected static string $resource = CooperationResource::class; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Sempurnakan Kerja Sama ๐Ÿ“โœจ', 'Ubah Data Kerja Sama'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Perbarui detailnya biar penawaran makin mantap dan segar lagi! ๐Ÿ› ๏ธ๐Ÿ‘Œ', 'Silakan perbarui informasi kerja sama pada formulir di bawah ini.'); + } + public function mount(int|string $record): void { parent::mount($record); diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php index a757340..b527500 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php @@ -107,9 +107,9 @@ public function table(Table $table): Table BulkActionGroup::make([ DeleteBulkAction::make() ->successNotification( - CheerfulNotification::delete( - 'Proposal Dihapus! ๐Ÿ—‘๏ธ', - 'Semua proposal yang dipilih telah berhasil dihapus dari sistem. ๐Ÿ‘‹' + fn () => CheerfulNotification::success( + CheerfulNotification::getMessage('Proposal Dihapus! ๐Ÿ—‘๏ธ', 'Proposal Dihapus'), + CheerfulNotification::getMessage('Semua proposal yang dipilih telah berhasil dihapus dari sistem. ๐Ÿ‘‹', 'Seluruh data proposal yang dipilih telah berhasil dihapus dari sistem.') ) ), ]), diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php index de72fc1..a13173d 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php @@ -154,8 +154,8 @@ public function table(Table $table): Table CreateAction::make() ->label('Buat Laporan') ->modalWidth(Width::Large) - ->modalHeading('Sampaikan Laporan Baru ๐Ÿ“๐Ÿš€') - ->modalDescription('Ayo kirimkan hasil kerja kerasmu! Isi detail laporannya biar admin bisa langsung verifikasi ya! ๐Ÿ’ชโœจ') + ->modalHeading(fn () => CheerfulNotification::getMessage('Sampaikan Laporan Baru ๐Ÿ“๐Ÿš€', 'Buat Laporan Baru')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Ayo kirimkan hasil kerja kerasmu! Isi detail laporannya biar admin bisa langsung verifikasi ya! ๐Ÿ’ชโœจ', 'Silakan masukkan detail laporan pekerjaan Anda pada formulir di bawah ini.')) ->mutateDataUsing(function (array $data): array { $taskAssignment = $this->getOwnerRecord()->taskAssignment; @@ -174,8 +174,8 @@ public function table(Table $table): Table ->successNotification(null) ->after(function (Report $record): void { CheerfulNotification::success( - 'Laporan Berhasil Terkirim! ๐Ÿš€โœจ', - 'Hore! Laporan Anda sudah masuk ke sistem. Admin akan segera memeriksanya. Terima kasih atas kerja kerasnya! ๐Ÿ’ช' + CheerfulNotification::getMessage('Laporan Berhasil Terkirim! ๐Ÿš€โœจ', 'Laporan Berhasil Terkirim'), + CheerfulNotification::getMessage('Hore! Laporan Anda sudah masuk ke sistem. Admin akan segera memeriksanya. Terima kasih atas kerja kerasnya! ๐Ÿ’ช', 'Laporan Anda telah berhasil dikirimkan ke sistem dan sedang menunggu verifikasi admin.') )->send(); // Notify Admins @@ -185,8 +185,8 @@ public function table(Table $table): Table $user = auth()->user(); $admin->notify(new BroadcastNotification([ - 'title' => 'Ada Laporan Baru! ๐Ÿ“โœจ', - 'body' => "Halo Admin! {$user->name} baru saja mengirimkan laporan \"{$record->title}\" untuk kerja sama \"{$this->getOwnerRecord()->title}\". Yuk, dicek! ๐Ÿ˜Š", + 'title' => CheerfulNotification::getMessage('Ada Laporan Baru! ๐Ÿ“โœจ', 'Laporan Kerja Sama Baru'), + 'body' => CheerfulNotification::getMessage("Halo Admin! {$user->name} baru saja mengirimkan laporan \"{$record->title}\" untuk kerja sama \"{$this->getOwnerRecord()->title}\". Yuk, dicek! ๐Ÿ˜Š", "Pengguna {$user->name} telah mengirimkan laporan baru \"{$record->title}\" untuk pengajuan kerja sama \"{$this->getOwnerRecord()->title}\"."), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php index 0448af1..229e9f0 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php @@ -72,38 +72,34 @@ public function table(Table $table): Table return $cooperation->proposal()->accepted()->exists() && ! $cooperation->taskAssignment()->exists(); }) - ->successNotification( - CheerfulNotification::create( - 'Penugasan Dibuat! ๐Ÿš€โœจ', - 'Tugas baru berhasil ditetapkan. Media terkait akan segera mengetahuinya! ๐Ÿ’ช' - ) + ->successNotification(fn () => CheerfulNotification::success( + CheerfulNotification::getMessage('Penugasan Dibuat! ๐Ÿš€โœจ', 'Penugasan Berhasil'), + CheerfulNotification::getMessage('Tugas baru berhasil ditetapkan. Media terkait akan segera mengetahuinya! ๐Ÿ’ช', 'Tugas baru telah berhasil ditetapkan untuk pihak media.') + ) ), ]) ->recordActions([ EditAction::make() - ->successNotification( - CheerfulNotification::update( - 'Penugasan Diperbarui! โœ…', - 'Perubahan pada penugasan berhasil disimpan dengan aman. ๐Ÿ‘' - ) + ->successNotification(fn () => CheerfulNotification::success( + CheerfulNotification::getMessage('Penugasan Diperbarui! โœ…', 'Penugasan Diperbarui'), + CheerfulNotification::getMessage('Perubahan pada penugasan berhasil disimpan dengan aman. ๐Ÿ‘', 'Perubahan pada detail penugasan telah berhasil disimpan.') + ) ), DeleteAction::make() - ->successNotification( - CheerfulNotification::delete( - 'Penugasan Dihapus! ๐Ÿ—‘๏ธ', - 'Penugasan telah berhasil dihapus dari sistem. ๐Ÿ‘‹' - ) + ->successNotification(fn () => CheerfulNotification::success( + CheerfulNotification::getMessage('Penugasan Dihapus! ๐Ÿ—‘๏ธ', 'Penugasan Dihapus'), + CheerfulNotification::getMessage('Penugasan telah berhasil dihapus dari sistem. ๐Ÿ‘‹', 'Data penugasan telah berhasil dihapus dari sistem.') + ) ), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make() - ->successNotification( - CheerfulNotification::delete( - 'Banyak Penugasan Dihapus! ๐Ÿ—‘๏ธ๐Ÿ‘‹', - 'Semua penugasan yang dipilih telah dihapus dari sistem. ๐Ÿงน' - ) + ->successNotification(fn () => CheerfulNotification::success( + CheerfulNotification::getMessage('Banyak Penugasan Dihapus! ๐Ÿ—‘๏ธ๐Ÿ‘‹', 'Penugasan Berhasil Dihapus'), + CheerfulNotification::getMessage('Semua penugasan yang dipilih telah dihapus dari sistem. ๐Ÿงน', 'Seluruh data penugasan yang dipilih telah berhasil dihapus.') + ) ), ]), ]) diff --git a/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php b/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php index 0fe8a3e..7aed9c4 100644 --- a/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php +++ b/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php @@ -2,6 +2,8 @@ namespace App\Filament\Resources\Manage\Cooperations\Schemas; +use App\Enums\UxStyle; +use App\Filament\Support\CheerfulNotification; use App\Models\PartnerMedia; use Asmit\FilamentUpload\Forms\Components\AdvancedFileUpload; use Filament\Actions\Action; @@ -23,9 +25,9 @@ public static function configure(Schema $schema): Schema { return $schema ->components([ - Section::make('Detail Kerja Sama ๐Ÿค') - ->description('Lengkapi informasi mengenai judul, durasi, dan media yang terlibat.') - ->icon('heroicon-o-hand-raised') + Section::make(fn () => CheerfulNotification::getMessage('Detail Kerja Sama ๐Ÿค', 'Detail Kerja Sama')) + ->description(fn () => CheerfulNotification::getMessage('Ayo lengkapi informasi mengenai judul, durasi, dan media yang diajak kerja sama! ๐Ÿคโœจ', 'Lengkapi informasi mengenai judul, durasi, dan media yang terlibat.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-hand-raised' : null) ->schema([ TextInput::make('title') ->label('Judul Kerja Sama') @@ -86,9 +88,9 @@ public static function configure(Schema $schema): Schema ]) ->columnSpan(2), - Section::make('Lampiran & Media ๐Ÿ–ผ๏ธ') - ->description('Unggah banner promosi dan template untuk pengajuan.') - ->icon('heroicon-o-paper-clip') + Section::make(fn () => CheerfulNotification::getMessage('Lampiran & Media ๐Ÿ–ผ๏ธ', 'Lampiran & Media')) + ->description(fn () => CheerfulNotification::getMessage('Jangan lupa unggah banner promosi dan template pengajuannya ya! ๐Ÿ–ผ๏ธโœจ', 'Unggah banner promosi dan template untuk pengajuan.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-paper-clip' : null) ->schema([ SpatieMediaLibraryFileUpload::make('banner') ->label('Banner Promosi') diff --git a/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php b/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php index 56bdc63..3c61acb 100644 --- a/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php +++ b/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php @@ -17,6 +17,7 @@ use App\Filament\Resources\Manage\Cooperations\Actions\Cooperation\ProceedToPaymentAction; use App\Filament\Resources\Manage\Cooperations\Actions\Cooperation\RejectAction; use App\Filament\Resources\Manage\Cooperations\Actions\Cooperation\SendProposalAction; +use App\Filament\Support\CheerfulNotification; use App\Models\Cooperation; use Carbon\CarbonInterface; use Filament\Actions\BulkActionGroup; @@ -286,7 +287,7 @@ public static function configure(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedHandRaised) - ->emptyStateDescription('Setelah Anda membuat data pertama, maka akan muncul disini.') + ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data kerja sama nih. Yuk, mulai buat data pertama Anda! ๐Ÿคโœจ', 'Belum ada data kerja sama yang tersedia saat ini.')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/AcceptAction.php b/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/AcceptAction.php index f40f2ba..c595413 100644 --- a/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/AcceptAction.php +++ b/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/AcceptAction.php @@ -24,8 +24,8 @@ protected function setUp(): void ->icon(Heroicon::OutlinedCheck) ->color('success') ->requiresConfirmation() - ->modalHeading('Setujui Perubahan Data? โœ…โœจ') - ->modalDescription('Siap untuk menerapkan perubahan data ini secara otomatis ke sistem? Pastikan semuanya sudah sesuai ya! ๐Ÿš€๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Setujui Perubahan Data? โœ…โœจ', 'Setujui Perubahan Data')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Siap untuk menerapkan perubahan data ini secara otomatis ke sistem? Pastikan semuanya sudah sesuai ya! ๐Ÿš€๐Ÿ˜Š', 'Apakah Anda yakin ingin menerapkan perubahan data ini ke dalam sistem?')) ->action(function (DataChangeRequest $record): void { $entity = $record->entity; $newData = $record->new_data; @@ -42,14 +42,14 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Penghapusan Disetujui! โœ…', - 'Data telah berhasil dihapus sesuai dengan permohonan.' + CheerfulNotification::getMessage('Penghapusan Disetujui! โœ…', 'Penghapusan Disetujui'), + CheerfulNotification::getMessage('Data telah berhasil dihapus sesuai dengan permohonan.', 'Data telah berhasil dihapus sesuai dengan permintaan permohonan.') )->send(); // Notify User $record->user?->notify(new BroadcastNotification([ - 'title' => 'Permohonan Penghapusan Disetujui โœจ', - 'body' => "Halo! Permohonan penghapusan data Anda untuk {$record->change_reason} telah disetujui oleh admin. ๐Ÿš€", + 'title' => CheerfulNotification::getMessage('Permohonan Penghapusan Disetujui โœจ', 'Permohonan Penghapusan Disetujui'), + 'body' => CheerfulNotification::getMessage("Halo! Permohonan penghapusan data Anda untuk {$record->change_reason} telah disetujui oleh admin. ๐Ÿš€", "Permohonan penghapusan data untuk {$record->change_reason} telah disetujui oleh Admin."), ])); return; @@ -147,14 +147,14 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Perubahan Disetujui! โœ…', - 'Data telah berhasil diperbarui sesuai dengan permohonan.' + CheerfulNotification::getMessage('Perubahan Disetujui! โœ…', 'Perubahan Disetujui'), + CheerfulNotification::getMessage('Data telah berhasil diperbarui sesuai dengan permohonan.', 'Data telah berhasil diperbarui sesuai dengan permintaan permohonan.') )->send(); // Notify User $record->user?->notify(new BroadcastNotification([ - 'title' => 'Permohonan Perubahan Disetujui โœจ', - 'body' => "Halo! Permohonan perubahan data Anda untuk {$record->change_reason} telah disetujui oleh admin. Cek sekarang ya! ๐Ÿš€", + 'title' => CheerfulNotification::getMessage('Permohonan Perubahan Disetujui โœจ', 'Permohonan Perubahan Disetujui'), + 'body' => CheerfulNotification::getMessage("Halo! Permohonan perubahan data Anda untuk {$record->change_reason} telah disetujui oleh admin. Cek sekarang ya! ๐Ÿš€", "Permohonan perubahan data untuk {$record->change_reason} telah disetujui oleh Admin."), ])); }) ->visible(fn (DataChangeRequest $record): bool => $record->status === DataChangeStatus::PENDING && ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)); diff --git a/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/RejectAction.php b/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/RejectAction.php index 30aad6f..e453b89 100644 --- a/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/RejectAction.php +++ b/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/RejectAction.php @@ -29,8 +29,8 @@ protected function setUp(): void ->placeholder('Berikan alasan mengapa permohonan ini ditolak...') ->required(), ]) - ->modalHeading('Tolak Perubahan Data? ๐Ÿ›‘๐Ÿค”') - ->modalDescription('Yakin ingin menolak permohonan ini? Pastikan alasannya jelas biar pemohon nggak bingung ya! ๐Ÿ˜”๐Ÿ“') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tolak Perubahan Data? ๐Ÿ›‘๐Ÿค”', 'Tolak Perubahan Data')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin ingin menolak permohonan ini? Pastikan alasannya jelas biar pemohon nggak bingung ya! ๐Ÿ˜”๐Ÿ“', 'Apakah Anda yakin ingin menolak permohonan perubahan data ini?')) ->action(function (DataChangeRequest $record, array $data): void { $record->update([ 'status' => DataChangeStatus::REJECTED, @@ -50,14 +50,14 @@ protected function setUp(): void } CheerfulNotification::info( - 'Permohonan Ditolak ๐Ÿ›‘', - 'Permohonan perubahan data telah ditolak. ๐Ÿ˜”' + CheerfulNotification::getMessage('Permohonan Ditolak ๐Ÿ›‘', 'Permohonan Ditolak'), + CheerfulNotification::getMessage('Permohonan perubahan data telah ditolak. ๐Ÿ˜”', 'Permohonan perubahan data telah ditolak oleh Admin.') )->send(); // Notify User $record->user?->notify(new BroadcastNotification([ - 'title' => 'Permohonan Perubahan Ditolak ๐Ÿ›‘', - 'body' => "Halo! Mohon maaf, permohonan perubahan data Anda untuk {$record->change_reason} ditolak oleh admin. Alasan: {$data['rejection_reason']} ๐Ÿ˜”", + 'title' => CheerfulNotification::getMessage('Permohonan Perubahan Ditolak ๐Ÿ›‘', 'Permohonan Perubahan Ditolak'), + 'body' => CheerfulNotification::getMessage("Halo! Mohon maaf, permohonan perubahan data Anda untuk {$record->change_reason} ditolak oleh admin. Alasan: {$data['rejection_reason']} ๐Ÿ˜”", "Permohonan perubahan data Anda untuk {$record->change_reason} telah ditolak oleh Admin.\n\nAlasan: {$data['rejection_reason']}"), ])); }) ->visible(fn (DataChangeRequest $record): bool => $record->status === DataChangeStatus::PENDING && ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) diff --git a/app/Filament/Resources/Manage/DataChanges/DataChangesResource.php b/app/Filament/Resources/Manage/DataChanges/DataChangesResource.php index f1712eb..264f92d 100644 --- a/app/Filament/Resources/Manage/DataChanges/DataChangesResource.php +++ b/app/Filament/Resources/Manage/DataChanges/DataChangesResource.php @@ -10,6 +10,7 @@ use App\Filament\Resources\Manage\DataChanges\Actions\DataChangeRequest\RejectAction; use App\Filament\Resources\Manage\DataChanges\Pages\ManageDataChanges; use App\Filament\Resources\Manage\DataChanges\Pages\ViewDataChange; +use App\Filament\Support\CheerfulNotification; use App\Models\Company; use App\Models\DataChangeRequest; use App\Models\Journalist; @@ -119,10 +120,10 @@ public static function infolist(Schema $schema): Schema if (isset($new['__delete_request__']) && $new['__delete_request__'] === true) { return "
-
๐Ÿšฎ Permohonan Penghapusan Data
-

User mengajukan penghapusan permanen untuk data ini. Semua informasi terkait akan dihapus setelah disetujui.

+
".CheerfulNotification::getMessage('๐Ÿšฎ Permohonan Penghapusan Data', 'Permohonan Penghapusan Data')."
+

".CheerfulNotification::getMessage('User mengajukan penghapusan permanen untuk data ini. Semua informasi terkait akan dihapus setelah disetujui.', 'Pengguna mengajukan permohonan penghapusan permanen untuk data ini.').'

- "; + '; } // 2. New Addition Request @@ -143,8 +144,8 @@ public static function infolist(Schema $schema): Schema return "
-
โœจ Permohonan Penambahan Data
-

Berikut adalah data baru yang akan dibuat.

+
".CheerfulNotification::getMessage('โœจ Permohonan Penambahan Data', 'Permohonan Penambahan Data')."
+

".CheerfulNotification::getMessage('Berikut adalah data baru yang akan dibuat.', 'Berikut adalah rincian data baru yang diajukan.')."

{$rows} "; @@ -204,9 +205,9 @@ public static function table(Table $table): Table ->searchable() ->sortable() ->description(fn (DataChangeRequest $record): ?string => match (true) { - isset($record->new_data['__delete_request__']) => '๐Ÿ—‘๏ธ Penghapusan', - empty($record->old_data) => 'โœจ Penambahan', - default => '๐Ÿ“ Perubahan', + isset($record->new_data['__delete_request__']) => CheerfulNotification::getMessage('๐Ÿ—‘๏ธ Penghapusan', 'Penghapusan'), + empty($record->old_data) => CheerfulNotification::getMessage('โœจ Penambahan', 'Penambahan'), + default => CheerfulNotification::getMessage('๐Ÿ“ Perubahan', 'Perubahan'), }) ->formatStateUsing(fn (DataChangeRequest $record): ?string => match ($record->entity_type) { Company::class => 'Perusahaan', @@ -267,7 +268,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedDocumentText) - ->emptyStateDescription('Belum ada permohonan perubahan data.') + ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada permohonan baru nih! Semua aman dan terkendali. โœจโœ…', 'Belum ada permohonan perubahan data yang tersedia.')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Manage/Journalists/Actions/CreateJournalistAction.php b/app/Filament/Resources/Manage/Journalists/Actions/CreateJournalistAction.php index 6b0d45e..f13c260 100644 --- a/app/Filament/Resources/Manage/Journalists/Actions/CreateJournalistAction.php +++ b/app/Filament/Resources/Manage/Journalists/Actions/CreateJournalistAction.php @@ -21,8 +21,8 @@ protected function setUp(): void parent::setUp(); $this->label('Tambah') - ->modalHeading('Tambah Jurnalis Baru ๐Ÿš€โœจ') - ->modalDescription('Yuk, masukkan data jurnalisnya dengan lengkap biar sistem makin mantap! ๐Ÿ’ช๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Jurnalis Baru ๐Ÿš€โœจ', 'Tambah Jurnalis')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yuk, masukkan data jurnalisnya dengan lengkap biar sistem makin mantap! ๐Ÿ’ช๐Ÿ˜Š', 'Silakan masukkan detail data jurnalis baru di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->successNotification(null) @@ -94,16 +94,16 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Permohonan Berhasil ๐ŸŽ‰', - 'Data jurnalis baru telah dikirim dan sedang menunggu verifikasi admin โณ' + CheerfulNotification::getMessage('Permohonan Berhasil ๐ŸŽ‰', 'Permohonan Berhasil'), + CheerfulNotification::getMessage('Data jurnalis baru telah dikirim dan sedang menunggu verifikasi admin โณ', 'Permohonan penambahan jurnalis baru sedang menunggu verifikasi.') )->send(); User::superAdmin() ->get() ->each(function ($admin) use ($dataChangeRequest, $user): void { $admin->notify(new BroadcastNotification([ - 'title' => 'Ada Penambahan Jurnalis Baru โœจ', - 'body' => 'Halooo Admin! ๐Ÿ‘‹ '.$user->name.' baru saja menambahkan jurnalis baru. Yuk, cek detailnya! ๐Ÿš€', + 'title' => CheerfulNotification::getMessage('Ada Penambahan Jurnalis Baru โœจ', 'Penambahan Jurnalis Baru'), + 'body' => CheerfulNotification::getMessage('Halooo Admin! ๐Ÿ‘‹ '.$user->name.' baru saja menambahkan jurnalis baru. Yuk, cek detailnya! ๐Ÿš€', 'Pengguna '.$user->name.' telah menambahkan jurnalis baru ke dalam sistem.'), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php b/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php index e38494a..8655533 100644 --- a/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php +++ b/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php @@ -23,7 +23,10 @@ protected function setUp(): void $this->successNotification(null); - $this->modalHeading(fn () => auth()->user()->company?->verificationRequest?->status === VerificationStatus::APPROVED ? 'Mau Ajukan Penghapusan Jurnalis? ๐Ÿ—‘๏ธ๐Ÿ“ฌ' : 'Betulan Mau Hapus Jurnalis? ๐Ÿ—‘๏ธ๐Ÿค”'); + $this->modalHeading(fn () => auth()->user()->company?->verificationRequest?->status === VerificationStatus::APPROVED + ? CheerfulNotification::getMessage('Mau Ajukan Penghapusan Jurnalis? ๐Ÿ—‘๏ธ๐Ÿ“ฌ', 'Ajukan Penghapusan Jurnalis') + : CheerfulNotification::getMessage('Betulan Mau Hapus Jurnalis? ๐Ÿ—‘๏ธ๐Ÿค”', 'Hapus Jurnalis') + ); $this->schema(fn () => auth()->user()->company?->verificationRequest?->status === VerificationStatus::APPROVED ? [ Textarea::make('deletion_reason') @@ -43,8 +46,8 @@ protected function setUp(): void if ($existingRequest) { CheerfulNotification::warning( - 'Pengajuan Sudah Ada โณ', - 'Masih ada pengajuan penghapusan jurnalis yang sedang menunggu verifikasi.' + CheerfulNotification::getMessage('Pengajuan Sudah Ada โณ', 'Pengajuan Sedang Diproses'), + CheerfulNotification::getMessage('Masih ada pengajuan penghapusan jurnalis yang sedang menunggu verifikasi.', 'Pengajuan penghapusan jurnalis ini masih dalam proses verifikasi admin.') )->send(); return; @@ -60,16 +63,16 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Permohonan Berhasil ๐ŸŽ‰', - 'Permohonan penghapusan jurnalis telah dikirim dan sedang menunggu verifikasi admin โณ' + CheerfulNotification::getMessage('Permohonan Berhasil ๐ŸŽ‰', 'Permohonan Berhasil'), + CheerfulNotification::getMessage('Permohonan penghapusan jurnalis telah dikirim dan sedang menunggu verifikasi admin โณ', 'Pengajuan penghapusan jurnalis telah berhasil dikirim.') )->send(); User::superAdmin() ->get() ->each(function ($admin) use ($user, $record, $dataChangeRequest): void { $admin->notify(new BroadcastNotification([ - 'title' => 'Ada Pengajuan Penghapusan Jurnalis โœจ', - 'body' => 'Halooo Admin! ๐Ÿ‘‹ '.$user->name.' baru saja mengajukan penghapusan jurnalis '.$record->name.'. Yuk, cek detailnya! ๐Ÿš€', + 'title' => CheerfulNotification::getMessage('Ada Pengajuan Penghapusan Jurnalis โœจ', 'Pengajuan Penghapusan Jurnalis'), + 'body' => CheerfulNotification::getMessage('Halooo Admin! ๐Ÿ‘‹ '.$user->name.' baru saja mengajukan penghapusan jurnalis '.$record->name.'. Yuk, cek detailnya! ๐Ÿš€', 'Pengguna '.$user->name.' telah mengajukan penghapusan jurnalis '.$record->name.'.'), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php b/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php index 4e5ba92..f6d7478 100644 --- a/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php +++ b/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php @@ -22,8 +22,8 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading('Sempurnakan Data Jurnalis ๐Ÿ“โœจ') - ->modalDescription('Ayo kita perbarui supaya data jurnalis makin akurat dan segar lagi! ๐Ÿ› ๏ธ๐Ÿ‘Œ') + $this->modalHeading(fn () => CheerfulNotification::getMessage('Sempurnakan Data Jurnalis ๐Ÿ“โœจ', 'Ubah Data Jurnalis')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Ayo kita perbarui supaya data jurnalis makin akurat dan segar lagi! ๐Ÿ› ๏ธ๐Ÿ‘Œ', 'Silakan perbarui informasi jurnalis pada formulir di bawah ini.')) ->modalWidth(Width::Large) ->successNotification(null) ->fillForm(function (Journalist $journalist): array { @@ -61,8 +61,8 @@ protected function setUp(): void if ($existingRequest) { CheerfulNotification::warning( - 'Pengajuan Sudah Ada โณ', - 'Masih ada pengajuan perubahan data yang sedang menunggu verifikasi.' + CheerfulNotification::getMessage('Pengajuan Sudah Ada โณ', 'Pengajuan Sedang Diproses'), + CheerfulNotification::getMessage('Masih ada pengajuan perubahan data yang sedang menunggu verifikasi.', 'Pengajuan perubahan data ini masih dalam proses verifikasi admin.') )->send(); return $record; @@ -121,8 +121,8 @@ protected function setUp(): void if (empty($changedFields)) { CheerfulNotification::info( - 'Belum ada yang berubah โœจ', - 'Ubah data terlebih dulu lalu simpan kembali ๐Ÿ’ช' + CheerfulNotification::getMessage('Belum ada yang berubah โœจ', 'Tidak Ada Perubahan'), + CheerfulNotification::getMessage('Ubah data terlebih dulu lalu simpan kembali ๐Ÿ’ช', 'Silakan ubah data terlebih dahulu sebelum menyimpan.') )->send(); return $record; @@ -138,16 +138,16 @@ protected function setUp(): void ]); CheerfulNotification::success( - 'Permohonan Berhasil ๐ŸŽ‰', - 'Data sudah dikirim dan sedang menunggu verifikasi admin โณ' + CheerfulNotification::getMessage('Permohonan Berhasil ๐ŸŽ‰', 'Permohonan Berhasil'), + CheerfulNotification::getMessage('Data sudah dikirim dan sedang menunggu verifikasi admin โณ', 'Pengajuan perubahan data telah berhasil dikirim.') )->send(); User::superAdmin() ->get() ->each(function ($admin) use ($dataChangeRequest, $user): void { $admin->notify(new BroadcastNotification([ - 'title' => 'Ada Pengajuan Perubahan Jurnalis โœจ', - 'body' => 'Halooo Admin! ๐Ÿ‘‹ '.$user->name.' baru saja mengajukan perubahan data jurnalis. Yuk, cek detailnya! ๐Ÿš€', + 'title' => CheerfulNotification::getMessage('Ada Pengajuan Perubahan Jurnalis โœจ', 'Pengajuan Perubahan Jurnalis'), + 'body' => CheerfulNotification::getMessage('Halooo Admin! ๐Ÿ‘‹ '.$user->name.' baru saja mengajukan perubahan data jurnalis. Yuk, cek detailnya! ๐Ÿš€', 'Pengguna '.$user->name.' telah mengajukan perubahan data jurnalis.'), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Partners/PartnerResource.php b/app/Filament/Resources/Manage/Partners/PartnerResource.php index 3198ad0..1dcca42 100644 --- a/app/Filament/Resources/Manage/Partners/PartnerResource.php +++ b/app/Filament/Resources/Manage/Partners/PartnerResource.php @@ -6,11 +6,13 @@ use App\Enums\MediaClassification; use App\Enums\MediaType; use App\Enums\RoleEnum; +use App\Enums\UxStyle; use App\Enums\VerificationStatus; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\RowIndexColumn; use App\Filament\Resources\Manage\Partners\Pages\ManagePartners; use App\Filament\Resources\Manage\Partners\Pages\ViewPartner; +use App\Filament\Support\CheerfulNotification; use App\Models\User; use BackedEnum; use Filament\Actions\BulkActionGroup; @@ -52,7 +54,8 @@ public static function infolist(Schema $schema): Schema { return $schema ->schema([ - Section::make('Akun') + Section::make(fn () => CheerfulNotification::getMessage('Akun ๐Ÿ‘ค', 'Akun')) + ->description(fn () => CheerfulNotification::getMessage('Detail informasi akun pengguna yang terdaftar. โœจ', 'Informasi detail mengenai akun pengguna.')) ->schema([ Grid::make(3) ->schema([ @@ -76,7 +79,8 @@ public static function infolist(Schema $schema): Schema ]), ]), - Section::make('Perusahaan') + Section::make(fn () => CheerfulNotification::getMessage('Perusahaan ๐Ÿข', 'Perusahaan')) + ->description(fn () => CheerfulNotification::getMessage('Informasi lengkap mengenai profil dan legalitas perusahaan. ๐Ÿขโœจ', 'Informasi detail mengenai profil dan legalitas perusahaan.')) ->schema([ Grid::make(3) ->schema([ @@ -118,7 +122,8 @@ public static function infolist(Schema $schema): Schema Grid::make(3) ->schema([ - Section::make('NIK Direktur') + Section::make(fn () => CheerfulNotification::getMessage('NIK Direktur ๐Ÿ‘คโœจ', 'NIK Direktur')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-user' : null) ->schema([ TextEntry::make('company.director_nik') ->hiddenLabel(), @@ -152,7 +157,8 @@ public static function infolist(Schema $schema): Schema }), ]), - Section::make('Akta Pendirian') + Section::make(fn () => CheerfulNotification::getMessage('Akta Pendirian ๐Ÿ“„โœจ', 'Akta Pendirian')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.deed_incorporation') ->hiddenLabel(), @@ -160,7 +166,8 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.deed_incorporation'), ]), - Section::make('SIUP') + Section::make(fn () => CheerfulNotification::getMessage('SIUP / NIB ๐Ÿ“„โœจ', 'SIUP / NIB')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.trade_license') ->hiddenLabel(), @@ -168,7 +175,8 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.trade_license'), ]), - Section::make('NPWP') + Section::make(fn () => CheerfulNotification::getMessage('NPWP ๐Ÿ“„โœจ', 'NPWP')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.tax_id_number') ->hiddenLabel(), @@ -176,7 +184,8 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.tax_id_number'), ]), - Section::make('PKP') + Section::make(fn () => CheerfulNotification::getMessage('PKP ๐Ÿ“„โœจ', 'PKP')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.taxable_enterprise') ->hiddenLabel(), @@ -184,7 +193,8 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.taxable_enterprise'), ]), - Section::make('SPT Tahunan') + Section::make(fn () => CheerfulNotification::getMessage('SPT Tahunan ๐Ÿ“„โœจ', 'SPT Tahunan')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.annual_tax_return') ->hiddenLabel(), @@ -192,7 +202,8 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.annual_tax_return'), ]), - Section::make('SK Domisili') + Section::make(fn () => CheerfulNotification::getMessage('SK Domisili ๐Ÿ“„โœจ', 'SK Domisili')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.domicile_certificate') ->hiddenLabel(), @@ -200,7 +211,8 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.domicile_certificate'), ]), - Section::make('Profil Perusahaan') + Section::make(fn () => CheerfulNotification::getMessage('Profil Perusahaan ๐Ÿ“„โœจ', 'Profil Perusahaan')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.profile') ->hiddenLabel(), @@ -210,7 +222,8 @@ public static function infolist(Schema $schema): Schema ]), ]), - Section::make('Media') + Section::make(fn () => CheerfulNotification::getMessage('Media ๐Ÿ“บ', 'Media')) + ->description(fn () => CheerfulNotification::getMessage('Detail informasi media yang dikelola oleh perusahaan ini. ๐Ÿ“บโœจ', 'Informasi detail mengenai media yang dikelola.')) ->schema([ Grid::make(4) ->schema([ @@ -236,7 +249,8 @@ public static function infolist(Schema $schema): Schema Grid::make(2) ->schema([ - Section::make('Sertifikat Organisasi Kewartawanan') + Section::make(fn () => CheerfulNotification::getMessage('Sertifikat Organisasi Kewartawanan ๐Ÿ“„โœจ', 'Sertifikat Organisasi Kewartawanan')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.partnerMedia.journalism_organization') ->hiddenLabel(), @@ -244,7 +258,8 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.partnerMedia.journalism_organization', 'company.partnerMedia', 'partnerMedia'), ]), - Section::make('Sertifikat Dewan Pers') + Section::make(fn () => CheerfulNotification::getMessage('Sertifikat Dewan Pers ๐Ÿ“„โœจ', 'Sertifikat Dewan Pers')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.partnerMedia.press_council_certificate') ->hiddenLabel(), @@ -254,7 +269,8 @@ public static function infolist(Schema $schema): Schema ]), ]), - Section::make('Jurnalis') + Section::make(fn () => CheerfulNotification::getMessage('Jurnalis โœ๏ธ', 'Jurnalis')) + ->description(fn () => CheerfulNotification::getMessage('Daftar jurnalis yang terdaftar di bawah bendera media ini. โœ๏ธโœจ', 'Daftar jurnalis yang terdaftar pada media ini.')) ->schema([ RepeatableEntry::make('company.partnerMedia.journalists') ->hiddenLabel() @@ -272,7 +288,8 @@ public static function infolist(Schema $schema): Schema ]), Grid::make(2) ->schema([ - Section::make('Kartu Pers') + Section::make(fn () => CheerfulNotification::getMessage('Kartu Pers ๐Ÿ†”โœจ', 'Kartu Pers')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-identification' : null) ->schema([ TextEntry::make('press_card') ->hiddenLabel(), @@ -280,7 +297,8 @@ public static function infolist(Schema $schema): Schema self::fileEntry('press_card', null, 'journalists'), ]), - Section::make('Sertifikat UKW') + Section::make(fn () => CheerfulNotification::getMessage('Sertifikat UKW ๐Ÿ“„โœจ', 'Sertifikat UKW')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('ukw_certificate') ->hiddenLabel(), @@ -397,7 +415,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedBuildingOffice2) - ->emptyStateDescription('Setelah Anda membubat data pertama, maka akan muncul disini.') + ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada rekanan yang terdaftar nih. Yuk, mulai buat data pertama! ๐Ÿขโœจ', 'Belum ada data rekanan yang tersedia saat ini.')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php b/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php index 2ec18c4..902a389 100644 --- a/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php +++ b/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php @@ -4,6 +4,7 @@ use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Categories\CategoryResource; +use App\Filament\Support\CheerfulNotification; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; @@ -18,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Tambah Kategori Baru ๐Ÿท๏ธโœจ') - ->modalDescription('Tambahkan kategori baru biar data makin teratur dan rapi! ๐Ÿ“๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Kategori Baru ๐Ÿท๏ธโœจ', 'Tambah Kategori')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Tambahkan kategori baru biar data makin teratur dan rapi! ๐Ÿ“๐Ÿ˜Š', 'Silakan masukkan detail kategori data di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php b/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php index 97aa9d4..85d1c9d 100644 --- a/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php +++ b/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php @@ -4,6 +4,7 @@ use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Classifications\ClassificationResource; +use App\Filament\Support\CheerfulNotification; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; @@ -18,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Tambah Klasifikasi Baru ๐Ÿ“‚โœจ') - ->modalDescription('Bantu sistem mengelompokkan data dengan klasifikasi yang pas! ๐Ÿงฉ๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Klasifikasi Baru ๐Ÿ“‚โœจ', 'Tambah Klasifikasi')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Bantu sistem mengelompokkan data dengan klasifikasi yang pas! ๐Ÿงฉ๐Ÿ˜Š', 'Silakan masukkan detail klasifikasi data di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php b/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php index 186a0e4..8824bf2 100644 --- a/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php +++ b/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php @@ -4,6 +4,7 @@ use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Departments\DepartmentResource; +use App\Filament\Support\CheerfulNotification; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; @@ -18,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Tambah OPD Baru ๐Ÿขโœจ') - ->modalDescription('Daftarkan instansi/OPD baru ke dalam sistem kita! ๐Ÿ’ช๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah OPD Baru ๐Ÿขโœจ', 'Tambah OPD')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Daftarkan instansi/OPD baru ke dalam sistem kita! ๐Ÿ’ช๐Ÿ˜Š', 'Silakan masukkan detail instansi/OPD baru di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php b/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php index 9cc299c..c6b3593 100644 --- a/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php +++ b/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php @@ -4,6 +4,7 @@ use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Locations\LocationResource; +use App\Filament\Support\CheerfulNotification; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; @@ -18,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Tambah Lokus Baru ๐Ÿ“โœจ') - ->modalDescription('Tentukan titik lokasi baru biar datanya makin presisi! ๐Ÿ—บ๏ธ๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Lokus Baru ๐Ÿ“โœจ', 'Tambah Lokus')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Tentukan titik lokasi baru biar datanya makin presisi! ๐Ÿ—บ๏ธ๐Ÿ˜Š', 'Silakan masukkan detail lokasi/lokus data di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php b/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php index e45a336..38929f8 100644 --- a/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php +++ b/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php @@ -4,6 +4,7 @@ use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\SubClassifications\SubClassificationResource; +use App\Filament\Support\CheerfulNotification; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; @@ -18,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Tambah Sub Klasifikasi Baru ๐Ÿ“‘โœจ') - ->modalDescription('Perdalam klasifikasi data biar makin detail dan tertata! ๐Ÿ—‚๏ธ๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Sub Klasifikasi Baru ๐Ÿ“‘โœจ', 'Tambah Sub Klasifikasi')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Perdalam klasifikasi data biar makin detail dan tertata! ๐Ÿ—‚๏ธ๐Ÿ˜Š', 'Silakan masukkan detail sub klasifikasi data di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php b/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php index 105d3de..a8ef349 100644 --- a/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php +++ b/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php @@ -92,8 +92,8 @@ public static function table(Table $table): Table $record->save(); CheerfulNotification::success( - 'Status Berubah! ๐Ÿ”„โœจ', - 'Status data berhasil diperbarui. Perubahan langsung aktif ya! ๐Ÿ‘' + CheerfulNotification::getMessage('Status Berubah! ๐Ÿ”„โœจ', 'Status Diperbarui'), + CheerfulNotification::getMessage('Status data berhasil diperbarui. Perubahan langsung aktif ya! ๐Ÿ‘', 'Perubahan status data telah berhasil disimpan dan diterapkan.') )->send(); }), @@ -132,7 +132,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedQueueList) - ->emptyStateDescription('Setelah Anda membubat data pertama, maka akan muncul disini.') + ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data nih! Mulai buat data pertama sekarang biar makin rame! ๐Ÿš€โœจ', 'Belum ada data yang tersedia saat ini.')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php b/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php index 5c15f96..a94b4f3 100644 --- a/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php +++ b/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php @@ -4,6 +4,7 @@ use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\SubLocations\SubLocationResource; +use App\Filament\Support\CheerfulNotification; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; @@ -18,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Tambah Sub Lokus Baru ๐Ÿ“Œโœจ') - ->modalDescription('Detailkan lebih dalam lagi titik lokasinya, ya! ๐Ÿ“๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Sub Lokus Baru ๐Ÿ“Œโœจ', 'Tambah Sub Lokus')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Detailkan lebih dalam lagi titik lokasinya, ya! ๐Ÿ“๐Ÿ˜Š', 'Silakan masukkan detail sub lokasi/lokus data di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php b/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php index a2b57f8..c9fa8f4 100644 --- a/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php +++ b/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php @@ -4,6 +4,7 @@ use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Themes\ThemeResource; +use App\Filament\Support\CheerfulNotification; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; @@ -18,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Tambah Tema Baru ๐Ÿ“‚โœจ') - ->modalDescription('Ayo tambahkan tema biar pengelompokan makin lengkap! ๐Ÿ“š๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Tema Baru ๐Ÿ“‚โœจ', 'Tambah Tema')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Ayo tambahkan tema biar pengelompokan makin lengkap! ๐Ÿ“š๐Ÿ˜Š', 'Silakan masukkan detail tema data di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Users/Pages/ManageUsers.php b/app/Filament/Resources/Master/Users/Pages/ManageUsers.php index 37206f1..413116c 100644 --- a/app/Filament/Resources/Master/Users/Pages/ManageUsers.php +++ b/app/Filament/Resources/Master/Users/Pages/ManageUsers.php @@ -4,6 +4,7 @@ use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Users\UserResource; +use App\Filament\Support\CheerfulNotification; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; @@ -18,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Tambah Pengguna Baru ๐Ÿš€โœจ') - ->modalDescription('Yuk, buat akun baru biar makin lengkap penggunanya! ๐Ÿ’ช๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Pengguna Baru ๐Ÿš€โœจ', 'Tambah Pengguna')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Yuk, buat akun baru biar makin lengkap penggunanya! ๐Ÿ’ช๐Ÿ˜Š', 'Silakan masukkan detail akun pengguna baru di bawah ini.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Users/UserResource.php b/app/Filament/Resources/Master/Users/UserResource.php index a418836..dcde56d 100644 --- a/app/Filament/Resources/Master/Users/UserResource.php +++ b/app/Filament/Resources/Master/Users/UserResource.php @@ -140,8 +140,8 @@ public static function table(Table $table): Table } CheerfulNotification::success( - $state ? 'Pengguna Diaktifkan! โœ…' : 'Pengguna Dinonaktifkan โ›”', - $state ? 'Status akun pengguna berhasil diaktifkan kembali. Siap beraksi! ๐Ÿš€' : 'Status akun pengguna berhasil dinonaktifkan. Istirahat dulu ya... ๐Ÿ˜ด' + $state ? CheerfulNotification::getMessage('Pengguna Diaktifkan! โœ…', 'Pengguna Diaktifkan') : CheerfulNotification::getMessage('Pengguna Dinonaktifkan โ›”', 'Pengguna Dinonaktifkan'), + $state ? CheerfulNotification::getMessage('Status akun pengguna berhasil diaktifkan kembali. Siap beraksi! ๐Ÿš€', 'Status akun pengguna telah berhasil diaktifkan kembali.') : CheerfulNotification::getMessage('Status akun pengguna berhasil dinonaktifkan. Istirahat dulu ya... ๐Ÿ˜ด', 'Status akun pengguna telah berhasil dinonaktifkan.') )->send(); }) ->disabled(fn (User $record): bool => $record->hasRole(RoleEnum::PERUSAHAAN->value)), @@ -192,7 +192,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedUserGroup) - ->emptyStateDescription('Setelah Anda membubat data pertama, maka akan muncul disini.') + ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data nih! Mulai buat data pertama sekarang biar makin rame! ๐Ÿš€โœจ', 'Belum ada data yang tersedia saat ini.')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Pages/CreateContentRecap.php b/app/Filament/Resources/Monitoring/ContentRecaps/Pages/CreateContentRecap.php index a0fedc2..aae31b6 100644 --- a/app/Filament/Resources/Monitoring/ContentRecaps/Pages/CreateContentRecap.php +++ b/app/Filament/Resources/Monitoring/ContentRecaps/Pages/CreateContentRecap.php @@ -12,7 +12,15 @@ class CreateContentRecap extends CreateRecord { protected static string $resource = ContentRecapResource::class; - protected static ?string $title = 'Tambah Rekap Konten'; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Tambah Rekap Konten Seru! ๐Ÿš€โœจ', 'Tambah Rekap Konten'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Ayo susun rekap konten yang mantap biar makin rapi! ๐Ÿ“š๐Ÿ˜Š', 'Silakan isi formulir di bawah ini dengan lengkap untuk rekap konten baru.'); + } protected function getHeaderActions(): array { diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Pages/EditContentRecap.php b/app/Filament/Resources/Monitoring/ContentRecaps/Pages/EditContentRecap.php index 156bae6..d865968 100644 --- a/app/Filament/Resources/Monitoring/ContentRecaps/Pages/EditContentRecap.php +++ b/app/Filament/Resources/Monitoring/ContentRecaps/Pages/EditContentRecap.php @@ -13,6 +13,16 @@ class EditContentRecap extends EditRecord { protected static string $resource = ContentRecapResource::class; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Sempurnakan Rekap Konten ๐Ÿ“โœจ', 'Ubah Rekap Konten'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Perbarui rekapnya supaya tetap akurat dan informatif! ๐Ÿ› ๏ธ๐Ÿ‘Œ', 'Silakan perbarui informasi rekap konten pada formulir di bawah ini.'); + } + protected function getHeaderActions(): array { return [ diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php b/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php index 4fb8cb6..498c47f 100644 --- a/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php +++ b/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php @@ -5,6 +5,8 @@ use App\Enums\Channel; use App\Enums\ContentType; use App\Enums\SocialMedia; +use App\Enums\UxStyle; +use App\Filament\Support\CheerfulNotification; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\Select; use Filament\Forms\Components\SpatieMediaLibraryFileUpload; @@ -20,9 +22,9 @@ public static function configure(Schema $schema): Schema { return $schema ->components([ - Section::make('Informasi Konten ๐Ÿ“') - ->description('Lengkapi detail judul, tautan, dan jenis konten Anda.') - ->icon('heroicon-o-document-text') + Section::make(fn () => CheerfulNotification::getMessage('Informasi Konten ๐Ÿ“', 'Informasi Konten')) + ->description(fn () => CheerfulNotification::getMessage('Lengkapi detail judul, tautan, dan jenis konten Anda biar makin keren! ๐Ÿš€๐Ÿ˜Š', 'Lengkapi detail judul, tautan, dan jenis konten Anda.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextInput::make('title') ->label('Judul Konten') @@ -72,9 +74,9 @@ public static function configure(Schema $schema): Schema ]), ])->columnSpan(2), - Section::make('Klasifikasi & Lampiran ๐Ÿ“') - ->description('Pilih klasifikasi yang sesuai dan unggah gambar pendukung.') - ->icon('heroicon-o-folder-open') + Section::make(fn () => CheerfulNotification::getMessage('Klasifikasi & Lampiran ๐Ÿ“', 'Klasifikasi & Lampiran')) + ->description(fn () => CheerfulNotification::getMessage('Pilih klasifikasi yang pas dan unggah gambar pendukung ya! ๐Ÿ“โœจ', 'Pilih klasifikasi yang sesuai dan unggah gambar pendukung.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-folder-open' : null) ->schema([ Select::make('classification_id') ->label('Klasifikasi') diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Pages/CreateIssueManagement.php b/app/Filament/Resources/Monitoring/IssueManagements/Pages/CreateIssueManagement.php index b05b9e4..85c9242 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Pages/CreateIssueManagement.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Pages/CreateIssueManagement.php @@ -12,7 +12,15 @@ class CreateIssueManagement extends CreateRecord { protected static string $resource = IssueManagementResource::class; - protected static ?string $title = 'Tambah Manajemen Isu'; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Tambah Manajemen Isu Seru! ๐Ÿš€โœจ', 'Tambah Manajemen Isu'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Ayo kelola isu yang ada biar semuanya terkendali dengan baik! ๐Ÿ’ช๐Ÿ˜Š', 'Silakan isi formulir di bawah ini dengan lengkap untuk manajemen isu baru.'); + } protected function getHeaderActions(): array { diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Pages/EditIssueManagement.php b/app/Filament/Resources/Monitoring/IssueManagements/Pages/EditIssueManagement.php index 6a14329..46e6fd7 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Pages/EditIssueManagement.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Pages/EditIssueManagement.php @@ -12,6 +12,16 @@ class EditIssueManagement extends EditRecord { protected static string $resource = IssueManagementResource::class; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Sempurnakan Manajemen Isu ๐Ÿ“โœจ', 'Ubah Manajemen Isu'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Perbarui datanya supaya tetap akurat dan penanganannya makin oke! ๐Ÿ› ๏ธ๐Ÿ‘Œ', 'Silakan perbarui informasi manajemen isu pada formulir di bawah ini.'); + } + protected function getHeaderActions(): array { return [ diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php b/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php index 8e7a35c..bc56b02 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php @@ -3,6 +3,8 @@ namespace App\Filament\Resources\Monitoring\IssueManagements\Schemas; use App\Enums\IssueSentiment; +use App\Enums\UxStyle; +use App\Filament\Support\CheerfulNotification; use Filament\Forms\Components\RichEditor; use Filament\Forms\Components\Select; use Filament\Schemas\Components\Grid; @@ -18,9 +20,9 @@ public static function configure(Schema $schema): Schema { return $schema ->components([ - Section::make('Identifikasi Isu ๐Ÿ”') - ->description('Hubungkan dengan berita monitoring dan tentukan lokasi isu.') - ->icon('heroicon-o-magnifying-glass') + Section::make(fn () => CheerfulNotification::getMessage('Identifikasi Isu ๐Ÿ”', 'Identifikasi Isu')) + ->description(fn () => CheerfulNotification::getMessage('Yuk, hubungkan dengan berita monitoring dan tentukan lokasi isunya! ๐Ÿ”โœจ', 'Hubungkan dengan berita monitoring dan tentukan lokasi isu.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-magnifying-glass' : null) ->schema([ Select::make('media_monitoring_id') ->label('Monitoring Media') @@ -71,9 +73,9 @@ public static function configure(Schema $schema): Schema ->columnSpanFull(), ])->columnSpan(2), - Section::make('Sentimen & Klasifikasi ๐Ÿ“Š') - ->description('Tentukan sentimen isu, respon, dan kategori klasifikasinya.') - ->icon('heroicon-o-chart-bar') + Section::make(fn () => CheerfulNotification::getMessage('Sentimen & Klasifikasi ๐Ÿ“Š', 'Sentimen & Klasifikasi')) + ->description(fn () => CheerfulNotification::getMessage('Tentukan sentimen isu, respon, dan kategorinya biar makin jelas! ๐Ÿ“Šโœจ', 'Tentukan sentimen isu, respon, dan kategori klasifikasinya.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-chart-bar' : null) ->schema([ Select::make('issue') ->label('Sentimen Isu') diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php index 4858bba..77e5ad0 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php @@ -47,13 +47,13 @@ protected function setUp(): void if ($count > 0) { CheerfulNotification::success( - 'Crawl Berhasil! ๐Ÿ•ธ๏ธ๐Ÿš€', - "Mantap! Ada {$count} berita baru nih tentang '{$data['keyword']}' di Purwakarta. Databasenya makin kaya! ๐Ÿ˜Ž" + CheerfulNotification::getMessage('Crawl Berhasil! ๐Ÿ•ธ๏ธ๐Ÿš€', 'Crawl Selesai'), + CheerfulNotification::getMessage("Mantap! Ada {$count} berita baru nih tentang '{$data['keyword']}' di Purwakarta. Databasenya makin kaya! ๐Ÿ˜Ž", "Berhasil mendapatkan {$count} berita baru terkait kata kunci '{$data['keyword']}'.") )->send(); } else { CheerfulNotification::info( - 'Belum Ada Berita Baru ๐Ÿ”', - "Hmm, sepertinya belum ada update berita baru untuk '{$data['keyword']}'. Coba lagi nanti ya! ๐Ÿ˜‰" + CheerfulNotification::getMessage('Belum Ada Berita Baru ๐Ÿ”', 'Tidak Ada Berita Baru'), + CheerfulNotification::getMessage("Hmm, sepertinya belum ada update berita baru untuk '{$data['keyword']}'. Coba lagi nanti ya! ๐Ÿ˜‰", "Tidak ditemukan berita baru untuk kata kunci '{$data['keyword']}' saat ini.") )->send(); } }) diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/CreateMediaMonitoring.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/CreateMediaMonitoring.php index 140cade..1ef86bd 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/CreateMediaMonitoring.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/CreateMediaMonitoring.php @@ -13,7 +13,15 @@ class CreateMediaMonitoring extends CreateRecord { protected static string $resource = MediaMonitoringResource::class; - protected static ?string $title = 'Tambah Monitoring Media'; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Tambah Monitoring Media Seru! ๐Ÿš€โœจ', 'Tambah Monitoring Media'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Ayo pantau beritanya biar makin oke dan up-to-date! ๐Ÿ”๐Ÿ˜Š', 'Silakan isi formulir di bawah ini dengan lengkap untuk monitoring media baru.'); + } protected function getHeaderActions(): array { diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/EditMediaMonitoring.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/EditMediaMonitoring.php index a0fd8d0..acad172 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/EditMediaMonitoring.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/EditMediaMonitoring.php @@ -12,6 +12,16 @@ class EditMediaMonitoring extends EditRecord { protected static string $resource = MediaMonitoringResource::class; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Sempurnakan Monitoring Media ๐Ÿ“โœจ', 'Ubah Monitoring Media'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Perbarui datanya supaya tetap akurat dan segar lagi! ๐Ÿ› ๏ธ๐Ÿ‘Œ', 'Silakan perbarui informasi monitoring media pada formulir di bawah ini.'); + } + protected function getHeaderActions(): array { return [ diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php index 5c19f66..916d860 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php @@ -3,6 +3,8 @@ namespace App\Filament\Resources\Monitoring\MediaMonitorings\Schemas; use App\Enums\Channel; +use App\Enums\UxStyle; +use App\Filament\Support\CheerfulNotification; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\RichEditor; use Filament\Forms\Components\Select; @@ -19,9 +21,9 @@ public static function configure(Schema $schema): Schema { return $schema ->components([ - Section::make('Detail Berita ๐Ÿ“ฐ') - ->description('Masukkan informasi lengkap mengenai pemberitaan media.') - ->icon('heroicon-o-newspaper') + Section::make(fn () => CheerfulNotification::getMessage('Detail Berita ๐Ÿ“ฐ', 'Detail Berita')) + ->description(fn () => CheerfulNotification::getMessage('Masukkan informasi lengkap mengenai pemberitaan media biar makin lengkap! ๐Ÿ“ฐโœจ', 'Masukkan informasi lengkap mengenai pemberitaan media.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-newspaper' : null) ->schema([ TextInput::make('media_name') ->label('Nama Media') @@ -73,9 +75,9 @@ public static function configure(Schema $schema): Schema ->required(), ])->columnSpan(2), - Section::make('Kategori & Metadata ๐Ÿท๏ธ') - ->description('Tentukan kategori berita dan informasi tambahan lainnya.') - ->icon('heroicon-o-tag') + Section::make(fn () => CheerfulNotification::getMessage('Kategori & Metadata ๐Ÿท๏ธ', 'Kategori & Metadata')) + ->description(fn () => CheerfulNotification::getMessage('Tentukan kategori berita dan informasi tambahan lainnya biar makin rapi! ๐Ÿท๏ธโœจ', 'Tentukan kategori berita dan informasi tambahan lainnya.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-tag' : null) ->schema([ Select::make('channel') ->label('Kanal') diff --git a/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php b/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php index db91c35..1a4b0e2 100644 --- a/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php +++ b/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php @@ -5,6 +5,7 @@ use App\Enums\AnnouncementType; use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Publication\Announcements\AnnouncementResource; +use App\Filament\Support\CheerfulNotification; use App\Models\Company; use App\Models\PartnerMedia; use App\Models\User; @@ -16,15 +17,23 @@ class ManageAnnouncements extends ManageRecords { protected static string $resource = AnnouncementResource::class; - protected static ?string $title = 'Pengumuman'; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Pengumuman ๐Ÿ“ขโœจ', 'Kelola Pengumuman'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Siarkan kabar terbaru ke seluruh sistem biar semua orang tetap update! ๐Ÿš€๐Ÿ˜Š', 'Kelola dan publikasikan pengumuman sistem pada halaman ini.'); + } protected function getHeaderActions(): array { return [ CreateAction::make() ->label('Tambah') - ->modalHeading('Buat Pengumuman Baru ๐Ÿ“ขโœจ') - ->modalDescription('Siarkan kabar terbaru ke seluruh sistem biar semua orang tetap update! ๐Ÿš€๐Ÿ˜Š') + ->modalHeading(fn () => CheerfulNotification::getMessage('Buat Pengumuman Baru ๐Ÿ“ขโœจ', 'Tambah Pengumuman')) + ->modalDescription(fn () => CheerfulNotification::getMessage('Siarkan kabar terbaru ke seluruh sistem biar semua orang tetap update! ๐Ÿš€๐Ÿ˜Š', 'Silakan isi formulir di bawah ini untuk membuat pengumuman baru.')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Publication/News/Pages/CreateNews.php b/app/Filament/Resources/Publication/News/Pages/CreateNews.php index 707593b..f181484 100644 --- a/app/Filament/Resources/Publication/News/Pages/CreateNews.php +++ b/app/Filament/Resources/Publication/News/Pages/CreateNews.php @@ -12,7 +12,15 @@ class CreateNews extends CreateRecord { protected static string $resource = NewsResource::class; - protected static ?string $title = 'Tambah Berita'; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Tambah Berita Seru! ๐Ÿš€โœจ', 'Tambah Berita'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Ayo bagikan kabar terbaru yang mantap buat semua! โœ๏ธ๐Ÿ˜Š', 'Silakan isi formulir di bawah ini dengan lengkap untuk menambahkan berita baru.'); + } protected function getHeaderActions(): array { diff --git a/app/Filament/Resources/Publication/News/Pages/EditNews.php b/app/Filament/Resources/Publication/News/Pages/EditNews.php index efa20b4..4ac4a6d 100644 --- a/app/Filament/Resources/Publication/News/Pages/EditNews.php +++ b/app/Filament/Resources/Publication/News/Pages/EditNews.php @@ -12,6 +12,16 @@ class EditNews extends EditRecord { protected static string $resource = NewsResource::class; + public function getTitle(): string + { + return CheerfulNotification::getMessage('Sempurnakan Berita ๐Ÿ“โœจ', 'Ubah Data Berita'); + } + + public function getSubheading(): ?string + { + return CheerfulNotification::getMessage('Perbarui beritanya supaya tetap akurat dan segar lagi! ๐Ÿ› ๏ธ๐Ÿ‘Œ', 'Silakan perbarui informasi berita pada formulir di bawah ini.'); + } + protected function getHeaderActions(): array { return [ diff --git a/app/Filament/Resources/Publication/News/Schemas/NewsForm.php b/app/Filament/Resources/Publication/News/Schemas/NewsForm.php index c91a1de..048a1e1 100644 --- a/app/Filament/Resources/Publication/News/Schemas/NewsForm.php +++ b/app/Filament/Resources/Publication/News/Schemas/NewsForm.php @@ -3,6 +3,8 @@ namespace App\Filament\Resources\Publication\News\Schemas; use App\Enums\NewsStatus; +use App\Enums\UxStyle; +use App\Filament\Support\CheerfulNotification; use App\Models\News; use Filament\Forms\Components\Hidden; use Filament\Forms\Components\Radio; @@ -25,9 +27,9 @@ public static function configure(Schema $schema): Schema Hidden::make('author_id') ->default(auth()->id()), - Section::make('Konten Berita โœ๏ธ') - ->description('Tuliskan judul, ringkasan, dan isi lengkap berita Anda.') - ->icon('heroicon-o-pencil-square') + Section::make(fn () => CheerfulNotification::getMessage('Konten Berita โœ๏ธ', 'Konten Berita')) + ->description(fn () => CheerfulNotification::getMessage('Yuk, tuliskan judul, ringkasan, dan isi lengkap berita Anda biar makin menarik! ๐Ÿš€๐Ÿ˜Š', 'Silakan tuliskan judul, ringkasan, dan isi lengkap berita Anda.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-pencil-square' : null) ->schema([ TextInput::make('title') ->label('Judul Berita') @@ -50,9 +52,9 @@ public static function configure(Schema $schema): Schema ->columnSpanFull(), ])->columnSpan(2), - Section::make('Kategori & Publikasi ๐Ÿท๏ธ') - ->description('Tentukan kategori, tautan media, dan status publikasi.') - ->icon('heroicon-o-tag') + Section::make(fn () => CheerfulNotification::getMessage('Kategori & Publikasi ๐Ÿท๏ธ', 'Kategori & Publikasi')) + ->description(fn () => CheerfulNotification::getMessage('Tentukan kategori, tautan media, dan status publikasi biar berita kita gampang dicari! ๐Ÿท๏ธโœจ', 'Tentukan kategori, tautan media, dan status publikasi.')) + ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-tag' : null) ->schema([ TextInput::make('link') ->label('Tautan Media (Opsional)') diff --git a/app/Filament/Support/CheerfulNotification.php b/app/Filament/Support/CheerfulNotification.php index c20943c..ecf70e0 100644 --- a/app/Filament/Support/CheerfulNotification.php +++ b/app/Filament/Support/CheerfulNotification.php @@ -2,6 +2,7 @@ namespace App\Filament\Support; +use App\Enums\UxStyle; use Filament\Notifications\Notification; class CheerfulNotification @@ -15,101 +16,104 @@ public static function make(): Notification } /** - * Notification for successful record creation. + * Get the current user's UX style preference. */ + public static function getUxStyle(): UxStyle + { + try { + return auth()->user()?->ux_style ?? UxStyle::CHEERFUL; + } catch (\Throwable $e) { + return UxStyle::CHEERFUL; + } + } + public static function create(): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title('Hore! Data Tersimpan ๐ŸŽ‰โœจ') - ->body('Data baru berhasil ditambahkan! Sistem sudah menyimpannya dengan aman. ๐Ÿš€๐Ÿ’ช') + ->title($cheerful ? 'Hore! Data Tersimpan ๐ŸŽ‰โœจ' : 'Data Berhasil Disimpan') + ->body($cheerful ? 'Data baru berhasil ditambahkan! Sistem sudah menyimpannya dengan aman. ๐Ÿš€๐Ÿ’ช' : 'Data baru telah berhasil ditambahkan ke dalam sistem.') ->success(); } - /** - * Notification for successful record update. - */ public static function update(): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title('Mantap! Data Diperbarui โœ…๐Ÿ”ฅ') - ->body('Perubahan berhasil disimpan! Data sekarang sudah up-to-date dan segar lagi. โœจ๐Ÿ‘Œ') + ->title($cheerful ? 'Mantap! Data Diperbarui โœ…๐Ÿ”ฅ' : 'Perubahan Tersimpan') + ->body($cheerful ? 'Perubahan berhasil disimpan! Data sekarang sudah up-to-date dan segar lagi. โœจ๐Ÿ‘Œ' : 'Perubahan pada data telah berhasil diperbarui dan disimpan.') ->success(); } - /** - * Notification for successful record deletion (soft delete). - */ public static function delete(): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title('Oke, Data Dihapus ๐Ÿ—‘๏ธ๐Ÿ‘‹') - ->body('Data tersebut sudah berhasil dihapus dari sistem. Semuanya bersih dan rapi sekarang! ๐Ÿ˜Š๐Ÿšฎ') + ->title($cheerful ? 'Oke, Data Dihapus ๐Ÿ—‘๏ธ๐Ÿ‘‹' : 'Data Dihapus') + ->body($cheerful ? 'Data tersebut sudah berhasil dihapus dari sistem. Semuanya bersih dan rapi sekarang! ๐Ÿ˜Š๐Ÿšฎ' : 'Data tersebut telah berhasil dihapus dari sistem aplikasi.') ->success(); } - /** - * Notification for successful permanent deletion. - */ public static function forceDelete(): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title('Selamat Tinggal Selamanya ๐Ÿ‘‹๐Ÿ˜ข') - ->body('Data telah dihapus permanen dan tidak bisa kembali. Semoga ini keputusan yang tepat! ๐Ÿšฎ๐Ÿ’จ') + ->title($cheerful ? 'Selamat Tinggal Selamanya ๐Ÿ‘‹๐Ÿ˜ข' : 'Data Dihapus Permanen') + ->body($cheerful ? 'Data telah dihapus permanen dan tidak bisa kembali. Semoga ini keputusan yang tepat! ๐Ÿšฎ๐Ÿ’จ' : 'Data tersebut telah dihapus secara permanen dari sistem.') ->success(); } - /** - * Notification for successful record restoration. - */ public static function restore(): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title('Welcome Back! Data Pulih โ™ป๏ธโœจ') - ->body('Data berhasil dikembalikan! Hati-hati ya, jangan sampai terhapus lagi. ๐Ÿ˜‰๐Ÿ‘') + ->title($cheerful ? 'Welcome Back! Data Pulih โ™ป๏ธโœจ' : 'Data Berhasil Dipulihkan') + ->body($cheerful ? 'Data berhasil dikembalikan! Hati-hati ya, jangan sampai terhapus lagi. ๐Ÿ˜‰๐Ÿ‘' : 'Data yang dihapus sebelumnya telah berhasil dipulihkan ke dalam sistem.') ->success(); } - /** - * Notification for successful status change/toggle. - */ public static function statusUpdated(?string $title = null, ?string $body = null): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title($title ?? 'Status Berubah! ๐Ÿ”„โœจ') - ->body($body ?? 'Status data berhasil diperbarui. Perubahan langsung aktif ya! ๐Ÿ‘') + ->title($title ?? ($cheerful ? 'Status Berubah! ๐Ÿ”„โœจ' : 'Status Diperbarui')) + ->body($body ?? ($cheerful ? 'Status data berhasil diperbarui. Perubahan langsung aktif ya! ๐Ÿ‘' : 'Status data telah berhasil diperbarui dan telah diterapkan.')) ->success(); } - /** - * Notification for successful bulk deletion. - */ public static function bulkDelete(): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title('Oke, Banyak Data Dihapus ๐Ÿ—‘๏ธ๐Ÿ‘‹') - ->body('Semua data yang dipilih berhasil dihapus. Sistem makin lega deh! ๐Ÿ˜Š') + ->title($cheerful ? 'Oke, Banyak Data Dihapus ๐Ÿ—‘๏ธ๐Ÿ‘‹' : 'Data Berhasil Dihapus') + ->body($cheerful ? 'Semua data yang dipilih berhasil dihapus. Sistem makin lega deh! ๐Ÿ˜Š' : 'Seluruh data yang dipilih telah berhasil dihapus dari sistem.') ->success(); } - /** - * Notification for successful bulk permanent deletion. - */ public static function bulkForceDelete(): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title('Bye Bye Semua! ๐Ÿ‘‹๐Ÿ”ฅ') - ->body('Data yang dipilih sudah dihapus permanen. Bersih total! ๐Ÿงน๐Ÿ’จ') + ->title($cheerful ? 'Bye Bye Semua! ๐Ÿ‘‹๐Ÿ”ฅ' : 'Data Dihapus Permanen') + ->body($cheerful ? 'Data yang dipilih sudah dihapus permanen. Bersih total! ๐Ÿงน๐Ÿ’จ' : 'Data yang dipilih telah berhasil dihapus secara permanen.') ->success(); } - /** - * Notification for successful bulk restoration. - */ public static function bulkRestore(): Notification { + $cheerful = self::getUxStyle() === UxStyle::CHEERFUL; + return self::make() - ->title('Hore! Banyak Data Pulih โ™ป๏ธ๐ŸŽ‰') - ->body('Data-data tersebut sudah kembali aktif. Selamat bekerja kembali! ๐Ÿ’ชโœจ') + ->title($cheerful ? 'Hore! Banyak Data Pulih โ™ป๏ธ๐ŸŽ‰' : 'Data Berhasil Dipulihkan') + ->body($cheerful ? 'Data-data tersebut sudah kembali aktif. Selamat bekerja kembali! ๐Ÿ’ชโœจ' : 'Seluruh data yang dipilih telah berhasil dikembalikan ke posisi semula.') ->success(); } @@ -156,4 +160,12 @@ public static function danger(string $title, string $body): Notification ->body($body) ->danger(); } + + /** + * Get dynamic message based on UX style. + */ + public static function getMessage(string $cheerful, string $formal): string + { + return self::getUxStyle() === UxStyle::CHEERFUL ? $cheerful : $formal; + } } diff --git a/app/Models/User.php b/app/Models/User.php index 0a44ca1..50ae6b8 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -4,6 +4,7 @@ use App\Enums\IsActive; use App\Enums\RoleEnum; +use App\Enums\UxStyle; use App\Enums\VerificationStatus; use Filament\Models\Contracts\FilamentUser; use Filament\Panel; @@ -33,6 +34,7 @@ protected function casts(): array 'password' => 'hashed', 'is_active' => IsActive::class, 'email_verified_at' => 'timestamp', + 'ux_style' => UxStyle::class, ]; } diff --git a/database/migrations/2026_03_26_140819_add_ux_style_to_users_table.php b/database/migrations/2026_03_26_140819_add_ux_style_to_users_table.php new file mode 100644 index 0000000..e98e2c2 --- /dev/null +++ b/database/migrations/2026_03_26_140819_add_ux_style_to_users_table.php @@ -0,0 +1,28 @@ +string('ux_style')->default('cheerful')->after('email_verified_at'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +};