feat: add CopyAssignmentLinkAction and CopyAttendanceLinkAction for sharing assignment and attendance links
This commit is contained in:
parent
ca90c308f1
commit
7bebb127eb
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Learning\ClassSessions\Actions;
|
||||
|
||||
use App\Filament\Support\SystemNotification;
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
|
||||
class CopyAssignmentLinkAction extends Action
|
||||
{
|
||||
public static function getDefaultName(): ?string
|
||||
{
|
||||
return 'copyAssignmentLink';
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->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();
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Learning\ClassSessions\Actions;
|
||||
|
||||
use App\Filament\Support\SystemNotification;
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
|
||||
class CopyAttendanceLinkAction extends Action
|
||||
{
|
||||
public static function getDefaultName(): ?string
|
||||
{
|
||||
return 'copyAttendanceLink';
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->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();
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
<<<JS
|
||||
const text = {$escapedText};
|
||||
const url = 'https://wa.me/?text=' + encodeURIComponent(text);
|
||||
|
||||
if (navigator.clipboard) {
|
||||
navigator.clipboard.writeText(text).catch(() => {});
|
||||
}
|
||||
window.open(url, '_blank');
|
||||
JS
|
||||
);
|
||||
|
||||
@ -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
|
||||
<<<JS
|
||||
const text = {$escapedText};
|
||||
const url = 'https://wa.me/?text=' + encodeURIComponent(text);
|
||||
|
||||
if (navigator.clipboard) {
|
||||
navigator.clipboard.writeText(text).catch(() => {});
|
||||
}
|
||||
window.open(url, '_blank');
|
||||
JS
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user