diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/CopyAssignmentLinkAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/CopyAssignmentLinkAction.php new file mode 100644 index 0000000..9c11fb0 --- /dev/null +++ b/app/Filament/Resources/Learning/ClassSessions/Actions/CopyAssignmentLinkAction.php @@ -0,0 +1,40 @@ +label('Salin Tautan') + ->color('gray') + ->icon('heroicon-o-clipboard-document') + ->action(function (array $arguments, $livewire) { + $course = $livewire->course; + $session = ClassSession::find($arguments['session'] ?? null); + + $url = route('share.assignment', [ + 'course' => $course->id, + 'session_id' => $session ? $session->id : null, + ]); + + $livewire->js("if (navigator.clipboard) { navigator.clipboard.writeText('{$url}').catch(() => {}); }"); + + SystemNotification::success( + 'Tautan Berhasil Disalin ✨', + 'Tautan telah disalin ke clipboard dan siap untuk dibagikan.' + )->send(); + }); + } +} diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/CopyAttendanceLinkAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/CopyAttendanceLinkAction.php new file mode 100644 index 0000000..c53276f --- /dev/null +++ b/app/Filament/Resources/Learning/ClassSessions/Actions/CopyAttendanceLinkAction.php @@ -0,0 +1,38 @@ +label('Salin Tautan') + ->color('gray') + ->icon('heroicon-o-clipboard-document') + ->action(function (array $arguments, $livewire) { + $course = $livewire->course; + $session = ClassSession::find($arguments['session'] ?? null); + $date = $session ? $session->date->toDateString() : null; + + $url = route('share.attendance', ['course' => $course->id, 'date' => $date]); + + $livewire->js("if (navigator.clipboard) { navigator.clipboard.writeText('{$url}').catch(() => {}); }"); + + SystemNotification::success( + 'Tautan Berhasil Disalin ✨', + 'Tautan telah disalin ke clipboard dan siap untuk dibagikan.' + )->send(); + }); + } +} diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAssignmentAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAssignmentAction.php index 42fa072..a3a7b2a 100644 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAssignmentAction.php +++ b/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAssignmentAction.php @@ -21,9 +21,17 @@ protected function setUp(): void ->icon('heroicon-o-paper-airplane') ->color(Color::Fuchsia) ->link() + ->requiresConfirmation() + ->modalIcon('heroicon-o-paper-airplane') + ->modalHeading('Bagikan Info Tugas') + ->modalDescription('Pilih metode untuk membagikan tautan publik status pengumpulan tugas sesi ini.') + ->modalSubmitActionLabel('Ke WhatsApp') + ->modalCancelAction(false) + ->extraModalFooterActions([ + CopyAssignmentLinkAction::make(), + ]) ->action(function (array $arguments, $livewire) { $course = $livewire->course; - $session = ClassSession::find($arguments['session'] ?? null); $url = route('share.assignment', [ @@ -39,10 +47,6 @@ protected function setUp(): void << {}); -} window.open(url, '_blank'); JS ); diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php index 222315a..8799847 100644 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php +++ b/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php @@ -21,9 +21,17 @@ protected function setUp(): void ->icon('heroicon-o-share') ->color(Color::Teal) ->link() + ->requiresConfirmation() + ->modalIcon('heroicon-o-share') + ->modalHeading('Bagikan Info Presensi') + ->modalDescription('Pilih metode untuk membagikan tautan publik status presensi sesi ini.') + ->modalSubmitActionLabel('Ke WhatsApp') + ->modalCancelAction(false) + ->extraModalFooterActions([ + CopyAttendanceLinkAction::make(), + ]) ->action(function (array $arguments, $livewire) { $course = $livewire->course; - $session = ClassSession::find($arguments['session'] ?? null); $date = $session ? $session->date->toDateString() : null; @@ -37,10 +45,6 @@ protected function setUp(): void << {}); -} window.open(url, '_blank'); JS );