feat: enhance user experience with cheerful notification styles and improved messaging across various sections
This commit is contained in:
parent
ae52c75bd3
commit
bb8f41079f
@ -33,9 +33,9 @@ public function form(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
->components([
|
||||
Section::make('Akun')
|
||||
->description('Kelola informasi detail akun Anda agar selalu terkini.')
|
||||
->icon('heroicon-o-user')
|
||||
Section::make(SystemNotification::getMessage('Akun Pengguna 👤✨', 'Akun'))
|
||||
->description(SystemNotification::getMessage('Kelola informasi detail akun Anda di sini ya biar nggak kudet! 😉🚀', 'Kelola informasi detail akun Anda agar selalu terkini.'))
|
||||
->icon(SystemNotification::getNotifStyle() === NotifStyle::Cheerful ? 'heroicon-o-face-smile' : 'heroicon-o-user')
|
||||
->schema([
|
||||
Grid::make(2)
|
||||
->schema([
|
||||
@ -63,9 +63,9 @@ public function form(Schema $schema): Schema
|
||||
]),
|
||||
]),
|
||||
|
||||
Section::make('Informasi Mahasiswa')
|
||||
->description('Pastikan data akademik Anda sesuai dengan record sistem.')
|
||||
->icon('heroicon-o-academic-cap')
|
||||
Section::make(SystemNotification::getMessage('Data Mahasiswa 🎓📚', 'Informasi Mahasiswa'))
|
||||
->description(SystemNotification::getMessage('Pastikan data akademikmu sesuai dengan yang di sistem, jangan sampai salah loh! 🤓📝', 'Pastikan data akademik Anda sesuai dengan record sistem.'))
|
||||
->icon(SystemNotification::getNotifStyle() === NotifStyle::Cheerful ? 'heroicon-o-academic-cap' : 'heroicon-o-identification')
|
||||
->statePath('student')
|
||||
->schema([
|
||||
TextInput::make('full_name')
|
||||
@ -132,9 +132,9 @@ public function form(Schema $schema): Schema
|
||||
->columns(2)
|
||||
->visible(fn () => auth()->user()?->student()->exists()),
|
||||
|
||||
Section::make('Keamanan Akun')
|
||||
->description('Perbarui kata sandi Anda secara berkala untuk menjaga keamanan akun.')
|
||||
->icon('heroicon-o-lock-closed')
|
||||
Section::make(SystemNotification::getMessage('Keamanan Akun 🔐⚡', 'Keamanan Akun'))
|
||||
->description(SystemNotification::getMessage('Rajin-rajin ganti password ya, biar akunmu aman dan nggak dibobol orang! 🕵️♂️🛡️', 'Perbarui kata sandi Anda secara berkala untuk menjaga keamanan akun.'))
|
||||
->icon(SystemNotification::getNotifStyle() === NotifStyle::Cheerful ? 'heroicon-o-shield-check' : 'heroicon-o-lock-closed')
|
||||
->schema([
|
||||
Grid::make(2)
|
||||
->schema([
|
||||
@ -277,8 +277,10 @@ protected function handleRecordUpdate(Model $record, array $data): Model
|
||||
protected function afterSave(): void
|
||||
{
|
||||
SystemNotification::success(
|
||||
'Profil Berhasil Diperbarui ✅',
|
||||
'Data profil Anda telah berhasil disimpan dan diperbarui di dalam sistem.'
|
||||
'Profil Berhasil Diperbarui ✅✨',
|
||||
'Data profil Anda telah berhasil disimpan dan diperbarui. Makin keren deh! 😎🌈',
|
||||
'Pembaharuan Profil Berhasil',
|
||||
'Seluruh data profil Anda telah berhasil sinkronisasi dan disimpan dalam database.'
|
||||
)->send();
|
||||
|
||||
if (filled($this->form->getState()['password'] ?? null)) {
|
||||
@ -288,7 +290,9 @@ protected function afterSave(): void
|
||||
|
||||
SystemNotification::info(
|
||||
'Keamanan Akun Diperbarui 🔐',
|
||||
'Anda telah mengubah kata sandi. Untuk alasan keamanan, silakan masuk kembali dengan kata sandi baru Anda.'
|
||||
'Anda telah mengubah kata sandi. Demi keamanan, silakan masuk kembali ya! 🚪🔑',
|
||||
'Pembaruan Kredensial',
|
||||
'Kata sandi Anda telah berhasil diubah. Harap lakukan otentikasi ulang untuk melanjutkan sesi.'
|
||||
)->send();
|
||||
|
||||
$this->redirect(filament()->getLoginUrl());
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
use App\Filament\Support\SystemNotification;
|
||||
use App\Models\AssignmentPin;
|
||||
use Filament\Actions\Action;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class PinAction extends Action
|
||||
{
|
||||
@ -24,7 +25,9 @@ protected function setUp(): void
|
||||
->tooltip(fn (array $arguments, $livewire) => in_array($arguments['record'], $livewire->pinnedIds) ? 'Lepas pin' : 'Pin tugas ini')
|
||||
->action(function (array $arguments, $livewire) {
|
||||
$assignmentId = $arguments['record'];
|
||||
$studentProfile = auth()->user()?->student;
|
||||
/** @var \App\Models\User|null $user */
|
||||
$user = Auth::user();
|
||||
$studentProfile = $user?->student;
|
||||
|
||||
if (! $studentProfile) {
|
||||
return;
|
||||
@ -36,13 +39,24 @@ protected function setUp(): void
|
||||
|
||||
if ($existing) {
|
||||
$existing->delete();
|
||||
SystemNotification::success('Pin Tugas Dilepas 📌', 'Pin pada tugas ini telah berhasil dilepas dari daftar prioritas Anda.')->send();
|
||||
SystemNotification::success(
|
||||
'Pin Dilepas! Bye 📌',
|
||||
'Pin pada tugas ini sukses dilepas dari daftar prioritas kamu. Semangat! 👋',
|
||||
'Pembatalan Prioritas Berhasil',
|
||||
'Penanda prioritas pada tugas ini telah berhasil dihapus dari daftar akun Anda.'
|
||||
)->send();
|
||||
} else {
|
||||
AssignmentPin::create([
|
||||
'student_id' => $studentProfile->id,
|
||||
'assignment_id' => $assignmentId,
|
||||
]);
|
||||
SystemNotification::success('Tugas Berhasil Di-pin 📍', 'Tugas ini sekarang berada di posisi teratas daftar prioritas Anda.')->send();
|
||||
|
||||
SystemNotification::success(
|
||||
'Keren! Tugas Jadi Utama 📍',
|
||||
'Tugas ini sekarang nangkring di posisi teratas daftar prioritas kamu. Sikat! 🚀',
|
||||
'Penandaan Prioritas Berhasil',
|
||||
'Tugas ini telah berhasil ditandai sebagai prioritas utama dalam daftar tugas Anda.'
|
||||
)->send();
|
||||
}
|
||||
|
||||
unset($livewire->assignments, $livewire->pinnedIds);
|
||||
|
||||
@ -12,6 +12,7 @@
|
||||
use App\Models\StudyGroup;
|
||||
use Filament\Resources\Pages\Page;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\WithFileUploads;
|
||||
|
||||
@ -63,7 +64,10 @@ public function statusCards(): array
|
||||
#[Computed]
|
||||
public function student(): Student
|
||||
{
|
||||
return auth()->user()->student;
|
||||
/** @var \App\Models\User|null $user */
|
||||
$user = Auth::user();
|
||||
|
||||
return $user?->student;
|
||||
}
|
||||
|
||||
#[Computed]
|
||||
@ -154,7 +158,9 @@ public function submit(): void
|
||||
if ($assignment->type === AssignmentType::Group && ! $this->currentGroup) {
|
||||
SystemNotification::danger(
|
||||
'Gagal Mengumpulkan 🚫',
|
||||
'Anda tidak terdaftar dalam kelompok manapun yang ditugaskan untuk tugas ini.'
|
||||
'Anda tidak terdaftar dalam kelompok manapun yang ditugaskan untuk tugas ini. 😟',
|
||||
'Kesalahan Pengumpulan Tugas',
|
||||
'Data akun Anda tidak ditemukan dalam daftar kelompok yang ditugaskan untuk tugas ini.'
|
||||
)->send();
|
||||
|
||||
return;
|
||||
@ -162,8 +168,10 @@ public function submit(): void
|
||||
|
||||
if (! $this->canSubmit) {
|
||||
SystemNotification::danger(
|
||||
'Gagal Mengumpulkan 🚫',
|
||||
'Hanya ketua kelompok yang diizinkan untuk mengumpulkan atau memperbarui tugas kelompok.'
|
||||
'Akses Ditolak 🚫',
|
||||
'Hanya ketua kelompok yang diizinkan untuk mengumpulkan atau memperbarui tugas kelompok. 👑',
|
||||
'Batasan Otoritas Pengumpulan',
|
||||
'Hanya ketua kelompok yang memiliki otoritas untuk memperbarui atau mengumpulkan tugas kelompok.'
|
||||
)->send();
|
||||
|
||||
return;
|
||||
@ -173,8 +181,10 @@ public function submit(): void
|
||||
|
||||
if (! $existingSubmission && ! $this->file) {
|
||||
SystemNotification::warning(
|
||||
'File Diperlukan',
|
||||
'Silakan pilih file untuk dikumpulkan.'
|
||||
'Pilih File Dulu Dong! 📁',
|
||||
'Silakan pilih file untuk dikumpulkan agar sistem bisa menyimpannya ya! 😊',
|
||||
'Kelengkapan Berkas Diperlukan',
|
||||
'Mohon sertakan lampiran berkas sebelum melanjutkan proses pengumpulan tugas.'
|
||||
)->send();
|
||||
|
||||
return;
|
||||
@ -206,8 +216,10 @@ public function submit(): void
|
||||
]);
|
||||
|
||||
SystemNotification::success(
|
||||
'Tugas Diperbarui ✅',
|
||||
'File tugas Anda telah berhasil diunggah ulang dan diperbarui.'
|
||||
'Keren! Tugas Sudah Update ✨',
|
||||
'File tugas Anda telah berhasil diunggah ulang dan diperbarui di sistem. 📤',
|
||||
'Pembaruan Berkas Berhasil',
|
||||
'Berkas tugas telah berhasil diunggah ulang dan divalidasi oleh sistem.'
|
||||
)->send();
|
||||
} else {
|
||||
$submission = AssignmentSubmission::create([
|
||||
@ -223,8 +235,10 @@ public function submit(): void
|
||||
->toMediaCollection('submission');
|
||||
|
||||
SystemNotification::success(
|
||||
'Tugas Dikumpulkan 🚀',
|
||||
'Berhasil! Tugas Anda telah tercatat di sistem.'
|
||||
'Yeay! Tugas Terkumpul! 🎉',
|
||||
'Berhasil! Tugas Anda telah tercatat dengan aman di sistem. Semangat! 🎈',
|
||||
'Konfirmasi Pengumpulan Berhasil',
|
||||
'Seluruh berkas tugas Anda telah berhasil diverifikasi dan disimpan oleh sistem.'
|
||||
)->send();
|
||||
}
|
||||
|
||||
|
||||
@ -3,7 +3,9 @@
|
||||
namespace App\Filament\Resources\Learning\Assignments\Schemas;
|
||||
|
||||
use App\Enums\AssignmentType;
|
||||
use App\Enums\NotifStyle;
|
||||
use App\Filament\Resources\Learning\Assignments\Actions\SelectAllStudentsAction;
|
||||
use App\Filament\Support\SystemNotification;
|
||||
use App\Models\Assignment;
|
||||
use App\Models\ClassSession;
|
||||
use App\Models\Course;
|
||||
@ -28,7 +30,9 @@ public static function configure(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
->components([
|
||||
Section::make('Informasi Tugas')
|
||||
Section::make(SystemNotification::getMessage('Informasi Tugas 📝✨', 'Informasi Tugas'))
|
||||
->description(SystemNotification::getMessage('Jelaskan tugasnya apa, kapan deadline-nya, dan buat sesi berapa. Semangat! 💪', 'Lengkapi informasi detail penugasan.'))
|
||||
->icon(SystemNotification::getNotifStyle() === NotifStyle::Cheerful ? 'heroicon-o-document-text' : 'heroicon-o-information-circle')
|
||||
->schema([
|
||||
|
||||
TextInput::make('title')
|
||||
@ -125,7 +129,9 @@ public static function configure(Schema $schema): Schema
|
||||
])
|
||||
->columns(2),
|
||||
|
||||
Section::make('Target Penugasan')
|
||||
Section::make(SystemNotification::getMessage('Target Penugasan 🎯🧑🎓', 'Target Penugasan'))
|
||||
->description(SystemNotification::getMessage('Pilih siapa saja yang bakal ngerjain tugas ini. Jangan sampai salah sasaran ya! 🏹', 'Tentukan sasaran penerima penugasan ini.'))
|
||||
->icon(SystemNotification::getNotifStyle() === NotifStyle::Cheerful ? 'heroicon-o-users' : 'heroicon-o-user-group')
|
||||
->schema([
|
||||
Select::make('student_ids')
|
||||
->label('Mahasiswa')
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Livewire\Attributes\Computed;
|
||||
|
||||
class ManageAttendances extends Page implements HasForms, HasTable
|
||||
@ -36,8 +37,8 @@ class ManageAttendances extends Page implements HasForms, HasTable
|
||||
|
||||
public function getSchedules()
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
/** @var User|null $user */
|
||||
$user = Auth::user();
|
||||
$student = $user->student;
|
||||
|
||||
if (! $student) {
|
||||
@ -132,8 +133,8 @@ public function scheduleCards()
|
||||
|
||||
public function attend(int $sessionId): void
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
/** @var User|null $user */
|
||||
$user = Auth::user();
|
||||
$student = $user->student;
|
||||
if (! $student) {
|
||||
return;
|
||||
@ -152,7 +153,9 @@ public function attend(int $sessionId): void
|
||||
if ($existing) {
|
||||
SystemNotification::warning(
|
||||
'Presensi Sudah Tercatat ⚠️',
|
||||
'Anda telah melakukan presensi untuk sesi perkuliahan ini.'
|
||||
'Anda telah melakukan presensi untuk sesi perkuliahan ini. Jangan lupa belajar yang rajin ya! 📚✨',
|
||||
'Pemberitahuan Presensi',
|
||||
'Status kehadiran Anda untuk sesi perkuliahan ini telah tercatat sebelumnya dalam sistem.'
|
||||
)->send();
|
||||
|
||||
return;
|
||||
@ -162,8 +165,10 @@ public function attend(int $sessionId): void
|
||||
$startTime = $session->start_time;
|
||||
if (now()->lessThan($startTime)) {
|
||||
SystemNotification::warning(
|
||||
'Presensi Belum Dibuka ⏳',
|
||||
'Waktu presensi untuk sesi perkuliahan ini belum dimulai.'
|
||||
'Sabar Yaa! Belum Dibuka ⏳',
|
||||
'Waktu presensi untuk sesi perkuliahan ini belum dimulai nih. Tunggu sebentar lagi, ya! ☕😊',
|
||||
'Sesi Presensi Belum Dimulai',
|
||||
'Akses pengisian presensi untuk sesi ini belum diaktifkan sesuai dengan jadwal yang ditentukan.'
|
||||
)->send();
|
||||
|
||||
return;
|
||||
@ -183,15 +188,17 @@ public function attend(int $sessionId): void
|
||||
]);
|
||||
|
||||
SystemNotification::success(
|
||||
'Presensi Berhasil Dicatat ✅',
|
||||
'Kehadiran Anda telah berhasil direkam ke dalam sistem.'
|
||||
'Mantap! Presensi Berhasil ✨🚀',
|
||||
'Kehadiran Anda telah berhasil direkam. Semangat belajarnya hari ini! 💪✅',
|
||||
'Konfirmasi Presensi Berhasil',
|
||||
'Informasi kehadiran Anda telah berhasil diverifikasi dan disimpan secara resmi ke dalam sistem.'
|
||||
)->send();
|
||||
}
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
/** @var User|null $user */
|
||||
$user = Auth::user();
|
||||
|
||||
return $table
|
||||
->query(AttendanceResource::getEloquentQuery())
|
||||
|
||||
@ -38,7 +38,12 @@ protected function setUp(): void
|
||||
$schedule = $course->courseSchedules()->first();
|
||||
|
||||
if (! $schedule) {
|
||||
SystemNotification::danger('Batal!', 'Jadwal belum ditentukan untuk mata kuliah ini.')->send();
|
||||
SystemNotification::danger(
|
||||
'Oops! Gagal Generate 🚫',
|
||||
'Jadwal belum ditentukan untuk mata kuliah ini, jadi sistem bingung mau buat sesi kapan. 😟',
|
||||
'Eksekusi Dibatalkan',
|
||||
'Penjadwalan resmi belum dikonfigurasi untuk mata kuliah ini. Proses pembuatan sesi otomatis tidak dapat dilanjutkan.'
|
||||
)->send();
|
||||
|
||||
return;
|
||||
}
|
||||
@ -59,7 +64,12 @@ protected function setUp(): void
|
||||
);
|
||||
}
|
||||
|
||||
SystemNotification::success('Selesai!', '16 Sesi berhasil digenerate/diperbarui.')->send();
|
||||
SystemNotification::success(
|
||||
'Hore! Sesi Siap ✨🚀',
|
||||
'16 Sesi berhasil digenerate dan diperbarui. Selamat mengajar! 🎉',
|
||||
'Verifikasi Sesi Berhasil',
|
||||
'Seluruh 16 sesi pembelajaran telah berhasil dikonfigurasi secara otomatis ke dalam sistem.'
|
||||
)->send();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,8 +34,10 @@ protected function setUp(): void
|
||||
]);
|
||||
|
||||
SystemNotification::success(
|
||||
'Kata sandi berhasil diubah! 🔑',
|
||||
"Kata sandi untuk mahasiswa {$record->full_name} telah diperbarui."
|
||||
'Aha! Kata Sandi Baru Berhasil 🔑✨',
|
||||
"Kata sandi untuk {$record->full_name} sudah update nih. Jangan lupa ingatkan mereka ya! 😉",
|
||||
'Perubahan Kata Sandi Berhasil',
|
||||
"Kredensial keamanan untuk mahasiswa {$record->full_name} telah diperbarui sesuai dengan entri sistem."
|
||||
)->send();
|
||||
});
|
||||
}
|
||||
|
||||
@ -2,7 +2,9 @@
|
||||
|
||||
namespace App\Filament\Resources\Master\Students\Schemas;
|
||||
|
||||
use App\Enums\NotifStyle;
|
||||
use App\Enums\Sex;
|
||||
use App\Filament\Support\SystemNotification;
|
||||
use Carbon\Carbon;
|
||||
use Filament\Forms\Components\DatePicker;
|
||||
use Filament\Forms\Components\Radio;
|
||||
@ -19,8 +21,12 @@ public static function configure(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
->components([
|
||||
Section::make('Akun')
|
||||
->description(new HtmlString('Alamat Surel dan Nama Pengguna akan digunakan untuk masuk ke dalam sistem. Kata sandi bawaan adalah <code class="text-sm bg-gray-100 text-red-400 px-1.5 py-0.5 rounded font-mono">Minimal8@</code>'))
|
||||
Section::make(SystemNotification::getMessage('Kredensial Akun 🔑✨', 'Akun'))
|
||||
->description(new HtmlString(SystemNotification::getMessage(
|
||||
'Pake email dan username ini buat login ya. Oh iya, password awalnya <code class="text-sm bg-gray-100 text-red-400 px-1.5 py-0.5 rounded font-mono">Minimal8@</code> 🥳',
|
||||
'Alamat Surel dan Nama Pengguna akan digunakan untuk masuk ke dalam sistem. Kata sandi bawaan adalah <code class="text-sm bg-gray-100 text-red-400 px-1.5 py-0.5 rounded font-mono">Minimal8@</code>'
|
||||
)))
|
||||
->icon(SystemNotification::getNotifStyle() === NotifStyle::Cheerful ? 'heroicon-o-key' : 'heroicon-o-user')
|
||||
->schema([
|
||||
TextInput::make('email')
|
||||
->label('Alamat Surel')
|
||||
@ -44,7 +50,9 @@ public static function configure(Schema $schema): Schema
|
||||
->columns(2)
|
||||
->hiddenOn('edit'),
|
||||
|
||||
Section::make('Informasi Mahasiswa')
|
||||
Section::make(SystemNotification::getMessage('Data Mahasiswa 🎓📚', 'Informasi Mahasiswa'))
|
||||
->description(SystemNotification::getMessage('Lengkapi data mahasiswa di bawah ini dengan benar ya! 🤓📝', 'Masukkan seluruh informasi akademik dan personal mahasiswa dengan benar.'))
|
||||
->icon(SystemNotification::getNotifStyle() === NotifStyle::Cheerful ? 'heroicon-o-academic-cap' : 'heroicon-o-identification')
|
||||
->schema([
|
||||
TextInput::make('full_name')
|
||||
->label('Nama Lengkap')
|
||||
|
||||
@ -105,8 +105,10 @@ public static function configure(Table $table): Table
|
||||
}
|
||||
|
||||
SystemNotification::success(
|
||||
$state ? 'Pengguna Diaktifkan! ✅' : 'Pengguna Dinonaktifkan ⛔',
|
||||
$state ? 'Status akun pengguna berhasil diaktifkan kembali. Siap beraksi! 🚀' : 'Status akun pengguna telah berhasil dinonaktifkan. Istirahat dulu ya... 😴'
|
||||
$state ? 'Pengguna Diaktifkan! ✅✨' : 'Pengguna Dinonaktifkan ⛔👋',
|
||||
$state ? 'Status akun pengguna berhasil diaktifkan kembali. Siap beraksi! 🚀' : 'Status akun pengguna telah berhasil dinonaktifkan. Istirahat dulu ya... 😴',
|
||||
$state ? 'Aktivasi Akun Berhasil' : 'Penonaktifan Akun Berhasil',
|
||||
$state ? 'Status akun pengguna terpilih telah diubah menjadi aktif.' : 'Status akun pengguna terpilih telah diubah menjadi tidak aktif.'
|
||||
)->send();
|
||||
})
|
||||
->visible(fn () => auth()->user()->hasRole([RoleEnum::Kosma, RoleEnum::Developer])),
|
||||
|
||||
@ -127,7 +127,8 @@ public static function success(string $title, string $body, ?string $formalTitle
|
||||
self::make()
|
||||
->title(self::clean($finalTitle))
|
||||
->body(self::clean($finalBody))
|
||||
->success()
|
||||
->success(),
|
||||
'success'
|
||||
);
|
||||
}
|
||||
|
||||
@ -143,7 +144,8 @@ public static function info(string $title, string $body, ?string $formalTitle =
|
||||
self::make()
|
||||
->title(self::clean($finalTitle))
|
||||
->body(self::clean($finalBody))
|
||||
->info()
|
||||
->info(),
|
||||
'info'
|
||||
);
|
||||
}
|
||||
|
||||
@ -159,7 +161,8 @@ public static function warning(string $title, string $body, ?string $formalTitle
|
||||
self::make()
|
||||
->title(self::clean($finalTitle))
|
||||
->body(self::clean($finalBody))
|
||||
->warning()
|
||||
->warning(),
|
||||
'warning'
|
||||
);
|
||||
}
|
||||
|
||||
@ -175,17 +178,32 @@ public static function danger(string $title, string $body, ?string $formalTitle
|
||||
self::make()
|
||||
->title(self::clean($finalTitle))
|
||||
->body(self::clean($finalBody))
|
||||
->danger()
|
||||
->danger(),
|
||||
'danger'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the user's selected style to the notification.
|
||||
*/
|
||||
protected static function applyStyle(Notification $notification): Notification
|
||||
protected static function applyStyle(Notification $notification, string $status): Notification
|
||||
{
|
||||
if (self::getNotifStyle() === NotifStyle::Formal) {
|
||||
$notification->icon(null);
|
||||
$isCheerful = self::getNotifStyle() === NotifStyle::Cheerful;
|
||||
|
||||
if ($isCheerful) {
|
||||
$notification
|
||||
->duration(6000)
|
||||
->icon(match ($status) {
|
||||
'success' => 'heroicon-o-sparkles',
|
||||
'danger' => 'heroicon-o-fire',
|
||||
'warning' => 'heroicon-o-bolt',
|
||||
'info' => 'heroicon-o-megaphone',
|
||||
default => null,
|
||||
});
|
||||
} else {
|
||||
$notification
|
||||
->icon(null)
|
||||
->duration(4000);
|
||||
}
|
||||
|
||||
return $notification;
|
||||
@ -197,7 +215,7 @@ protected static function applyStyle(Notification $notification): Notification
|
||||
public static function getNotifStyle(): NotifStyle
|
||||
{
|
||||
try {
|
||||
/** @var \App\Models\User $user */
|
||||
/** @var \App\Models\User|null $user */
|
||||
$user = Auth::user();
|
||||
|
||||
return $user?->settings?->notif_style ?? NotifStyle::Cheerful;
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
<x-filament-panels::page>
|
||||
<x-filament::section>
|
||||
<x-slot name="heading">Tugas Saya</x-slot>
|
||||
<x-slot name="description">Klik tugas untuk melihat detail dan mengumpulkan file.</x-slot>
|
||||
<x-filament::section
|
||||
icon="{{ \App\Filament\Support\SystemNotification::getNotifStyle() === \App\Enums\NotifStyle::Cheerful ? 'heroicon-o-pencil-square' : 'heroicon-o-briefcase' }}"
|
||||
icon-color="primary"
|
||||
>
|
||||
<x-slot name="heading">{{ \App\Filament\Support\SystemNotification::getMessage('Daftar Tugas Bikin Lemes! 🤣📒', 'Tugas Saya') }}</x-slot>
|
||||
<x-slot name="description">{{ \App\Filament\Support\SystemNotification::getMessage('Yuk, cek dan kumpulin tugasmu biar tenang hidupnya! Klik aja di tugasnya ya. 🚀👨💻', 'Klik pada tugas untuk melihat detail dan mengumpulkan file.') }}</x-slot>
|
||||
|
||||
<div class="space-y-4">
|
||||
@forelse ($this->assignmentCards as $card)
|
||||
|
||||
@ -26,7 +26,10 @@
|
||||
style="width: {{ $this->percentage }}%"></div>
|
||||
</div>
|
||||
|
||||
<x-filament::section>
|
||||
<x-filament::section
|
||||
icon="{{ \App\Filament\Support\SystemNotification::getNotifStyle() === \App\Enums\NotifStyle::Cheerful ? 'heroicon-o-document-magnifying-glass' : 'heroicon-o-document-text' }}"
|
||||
icon-color="primary"
|
||||
>
|
||||
<x-slot name="heading">{{ $this->assignmentSummary['title'] }}</x-slot>
|
||||
<x-slot name="description">
|
||||
{{ $this->assignmentSummary['course'] }}
|
||||
|
||||
@ -45,10 +45,12 @@ class="block border-0"></iframe>
|
||||
</x-filament::section>
|
||||
|
||||
@if ($this->isOverdue)
|
||||
<x-filament::section>
|
||||
<x-slot name="heading">Batas Waktu Telah Berakhir</x-slot>
|
||||
<x-slot name="description">Proses pengumpulan tugas ini telah ditutup karena melewati batas
|
||||
waktu.</x-slot>
|
||||
<x-filament::section
|
||||
icon="{{ \App\Filament\Support\SystemNotification::getNotifStyle() === \App\Enums\NotifStyle::Cheerful ? 'heroicon-o-exclamation-triangle' : 'heroicon-o-lock-closed' }}"
|
||||
icon-color="danger"
|
||||
>
|
||||
<x-slot name="heading">{{ \App\Filament\Support\SystemNotification::getMessage('Yah, Batas Waktu Udah Habis! 😭⏳', 'Batas Waktu Telah Berakhir') }}</x-slot>
|
||||
<x-slot name="description">{{ \App\Filament\Support\SystemNotification::getMessage('Maaf ya, kamu udah nggak bisa kumpulin tugas ini lagi karena waktunya udah lewat. Tetap semangat buat tugas selanjutnya! 💪', 'Proses pengumpulan tugas ini telah ditutup karena melewati batas waktu.') }}</x-slot>
|
||||
|
||||
<div class="flex items-center gap-3 mb-5">
|
||||
<div
|
||||
@ -98,8 +100,11 @@ class="block border-0"></iframe>
|
||||
@endif
|
||||
</x-filament::section>
|
||||
@else
|
||||
<x-filament::section>
|
||||
<x-slot name="heading">{{ $this->isResubmit ? 'Perbarui Pengumpulan' : 'Kumpulkan Tugas' }}</x-slot>
|
||||
<x-filament::section
|
||||
icon="{{ \App\Filament\Support\SystemNotification::getNotifStyle() === \App\Enums\NotifStyle::Cheerful ? 'heroicon-o-paper-airplane' : 'heroicon-o-document-arrow-up' }}"
|
||||
icon-color="primary"
|
||||
>
|
||||
<x-slot name="heading">{{ $this->isResubmit ? \App\Filament\Support\SystemNotification::getMessage('Kuy Perbarui Tugasmu! 🔄✨', 'Perbarui Pengumpulan') : \App\Filament\Support\SystemNotification::getMessage('Kumpulkan Tugas Sekarang! 🚀📚', 'Kumpulkan Tugas') }}</x-slot>
|
||||
|
||||
@if ($this->isResubmit && ($url = $this->getSubmissionFileUrl()))
|
||||
<div class="mb-4">
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
<x-filament-panels::page>
|
||||
<x-filament::section>
|
||||
<x-slot name="heading">Sesi Kuliah</x-slot>
|
||||
<x-slot name="description">Silakan melakukan presensi sesuai dengan waktu kelas.</x-slot>
|
||||
<x-filament::section
|
||||
icon="{{ \App\Filament\Support\SystemNotification::getNotifStyle() === \App\Enums\NotifStyle::Cheerful ? 'heroicon-o-hand-raised' : 'heroicon-o-clipboard-document-check' }}"
|
||||
icon-color="primary"
|
||||
>
|
||||
<x-slot name="heading">{{ \App\Filament\Support\SystemNotification::getMessage('Ayo Presensi Dulu! 🙋♂️✨', 'Sesi Kuliah') }}</x-slot>
|
||||
<x-slot name="description">{{ \App\Filament\Support\SystemNotification::getMessage('Jangan lupa absen ya kalau kelasnya udah mulai! Biar tercatat hadir. 💪', 'Silakan melakukan presensi sesuai dengan waktu kelas.') }}</x-slot>
|
||||
|
||||
@if (count($this->scheduleCards))
|
||||
<div class="columns-1 md:columns-2 lg:columns-3 xl:columns-4 gap-6 space-y-6">
|
||||
@ -107,9 +110,12 @@ class="text-[10px] font-bold text-gray-400 uppercase tracking-widest leading-non
|
||||
|
||||
</x-filament::section>
|
||||
|
||||
<x-filament::section>
|
||||
<x-slot name="heading">Riwayat Presensi</x-slot>
|
||||
<x-slot name="description">Berikut adalah riwayat kehadiran Anda pada sesi perkuliahan.</x-slot>
|
||||
<x-filament::section
|
||||
icon="{{ \App\Filament\Support\SystemNotification::getNotifStyle() === \App\Enums\NotifStyle::Cheerful ? 'heroicon-o-clock' : 'heroicon-o-archive-box' }}"
|
||||
icon-color="gray"
|
||||
>
|
||||
<x-slot name="heading">{{ \App\Filament\Support\SystemNotification::getMessage('Jejak Presensimu 🕰️📜', 'Riwayat Presensi') }}</x-slot>
|
||||
<x-slot name="description">{{ \App\Filament\Support\SystemNotification::getMessage('Di sini kamu bisa ngecek semua histori kehadiranmu sebelumnya. Rajin-rajin ya! 🎓', 'Berikut adalah riwayat kehadiran Anda pada sesi perkuliahan.') }}</x-slot>
|
||||
|
||||
{{ $this->table }}
|
||||
</x-filament::section>
|
||||
|
||||
@ -5,9 +5,12 @@
|
||||
</div>
|
||||
</x-filament::section>
|
||||
|
||||
<x-filament::section icon="heroicon-o-bolt" icon-color="primary">
|
||||
<x-slot name="heading">Sesi Hari Ini</x-slot>
|
||||
<x-slot name="description">Sesi yang dijadwalkan pada {{ $this->today_date }}</x-slot>
|
||||
<x-filament::section
|
||||
icon="{{ \App\Filament\Support\SystemNotification::getNotifStyle() === \App\Enums\NotifStyle::Cheerful ? 'heroicon-o-sparkles' : 'heroicon-o-bolt' }}"
|
||||
icon-color="primary"
|
||||
>
|
||||
<x-slot name="heading">{{ \App\Filament\Support\SystemNotification::getMessage('Sesi Kelas Hari Ini ✨🚀', 'Sesi Hari Ini') }}</x-slot>
|
||||
<x-slot name="description">{{ \App\Filament\Support\SystemNotification::getMessage('Daftar sesi seru yang udah dijadwalkan buat hari ini (' . $this->today_date . '). Semangat belajar! 💪', 'Sesi yang dijadwalkan pada ' . $this->today_date) }}</x-slot>
|
||||
|
||||
<div class="space-y-4">
|
||||
@forelse ($this->todaySessions as $session)
|
||||
@ -98,9 +101,12 @@
|
||||
</div>
|
||||
</x-filament::section>
|
||||
|
||||
<x-filament::section icon="heroicon-o-academic-cap" icon-color="gray">
|
||||
<x-slot name="heading">Daftar Mata Kuliah Semester Ini</x-slot>
|
||||
<x-slot name="description">Pilih mata kuliah untuk melihat dan mengelola semua riwayat sesi.</x-slot>
|
||||
<x-filament::section
|
||||
icon="{{ \App\Filament\Support\SystemNotification::getNotifStyle() === \App\Enums\NotifStyle::Cheerful ? 'heroicon-o-book-open' : 'heroicon-o-academic-cap' }}"
|
||||
icon-color="gray"
|
||||
>
|
||||
<x-slot name="heading">{{ \App\Filament\Support\SystemNotification::getMessage('Daftar Mata Kuliah Semester Ini 📚🎓', 'Daftar Mata Kuliah Semester Ini') }}</x-slot>
|
||||
<x-slot name="description">{{ \App\Filament\Support\SystemNotification::getMessage('Pilih aja mata kuliahnya buat ngecek materi sama tugas-tugas seru lainnya! 🧐✨', 'Pilih mata kuliah untuk melihat dan mengelola semua riwayat sesi.') }}</x-slot>
|
||||
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6">
|
||||
@forelse ($this->courses as $course)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user