refactor: CRUD Page manajemen pengguna, pengumuman, buku
This commit is contained in:
parent
7157d45590
commit
2b7d234475
|
|
@ -36,4 +36,15 @@ public function create()
|
|||
'pageTitle' => 'Tambah Buku Baru'
|
||||
]);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$buku = DummyDataService::getKatalogBuku()->firstWhere('id', (int)$id);
|
||||
abort_if(!$buku, 404);
|
||||
|
||||
return view('admin.buku.edit', [
|
||||
'pageTitle' => 'Edit Buku: ' . $buku['judul'],
|
||||
'buku' => $buku
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,9 @@
|
|||
|
||||
class PengumumanController extends Controller
|
||||
{
|
||||
/**
|
||||
* Menampilkan daftar semua pengumuman.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$semuaPengumuman = DummyDataService::getPengumuman();
|
||||
|
|
@ -16,4 +19,30 @@ public function index()
|
|||
'semuaPengumuman' => $semuaPengumuman,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Menampilkan form untuk membuat pengumuman baru.
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('admin.pengumuman.create', [
|
||||
'pageTitle' => 'Buat Pengumuman Baru',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Menampilkan form untuk mengedit pengumuman yang ada.
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
$pengumuman = collect(DummyDataService::getPengumuman())->firstWhere('id', (int)$id);
|
||||
|
||||
// Hentikan jika pengumuman tidak ditemukan
|
||||
abort_if(!$pengumuman, 404);
|
||||
|
||||
return view('admin.pengumuman.edit', [
|
||||
'pageTitle' => 'Edit Pengumuman',
|
||||
'pengumuman' => $pengumuman,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\DummyDataService;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
public function index()
|
||||
|
|
@ -12,4 +15,28 @@ public function index()
|
|||
'semuaSiswa' => $semuaSiswa
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Menampilkan form untuk membuat pengguna baru.
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('admin.pengguna.create', [
|
||||
'pageTitle' => 'Tambah Pengguna Baru',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Menampilkan form untuk mengedit pengguna yang ada.
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
$pengguna = collect(DummyDataService::getAllSiswa())->firstWhere('id', (int)$id);
|
||||
abort_if(!$pengguna, 404);
|
||||
|
||||
return view('admin.pengguna.edit', [
|
||||
'pageTitle' => 'Edit Pengguna',
|
||||
'pengguna' => $pengguna,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -128,13 +128,13 @@ public static function getDashboardStats(): array
|
|||
public static function getPengumuman(): array
|
||||
{
|
||||
$pengumuman = [
|
||||
['type' => 'warning', 'icon' => 'bi-exclamation-triangle-fill', 'title' => 'Perpustakaan Tutup', 'content' => 'Perpustakaan akan tutup pada tanggal 25 Desember untuk perayaan Natal.'],
|
||||
['type' => 'info', 'icon' => 'bi-info-circle-fill', 'title' => 'Buku Baru Tersedia', 'content' => 'Edisi baru telah ditambahkan ke koleksi perpustakaan digital.'],
|
||||
['id' => 1, 'type' => 'warning', 'icon' => 'bi-exclamation-triangle-fill', 'title' => 'Perpustakaan Tutup', 'content' => 'Perpustakaan akan tutup pada tanggal 25 Desember untuk perayaan Natal.'],
|
||||
['id' => 2, 'type' => 'info', 'icon' => 'bi-info-circle-fill', 'title' => 'Buku Baru Tersedia', 'content' => 'Edisi baru telah ditambahkan ke koleksi perpustakaan digital.'],
|
||||
];
|
||||
|
||||
// Buat 30 data dummy tambahan
|
||||
for ($i = 1; $i <= 30; $i++) {
|
||||
$pengumuman[] = ['type' => 'secondary', 'icon' => 'bi-megaphone-fill', 'title' => "Pengumuman Biasa #{$i}", 'content' => "Ini adalah isi dari pengumuman rutin nomor {$i}."];
|
||||
// Buat 30 data dummy tambahan dengan 'id'
|
||||
for ($i = 3; $i <= 32; $i++) {
|
||||
$pengumuman[] = ['id' => $i, 'type' => 'secondary', 'icon' => 'bi-megaphone-fill', 'title' => "Pengumuman Biasa #{$i}", 'content' => "Ini adalah isi dari pengumuman rutin nomor {$i}."];
|
||||
}
|
||||
|
||||
return $pengumuman;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
<x-app-layout>
|
||||
@section('page-title', $pageTitle)
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-header bg-white d-flex align-items-center">
|
||||
<a href="{{ route('admin.buku.index') }}" class="btn btn-light me-2">
|
||||
<i class="bi bi-arrow-left"></i>
|
||||
</a>
|
||||
<h5 class="my-0 fw-bold">Formulir Edit Buku</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="#" method="POST">
|
||||
{{-- Form ini tidak akan berfungsi karena tidak ada backend --}}
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="mb-3">
|
||||
<label for="judul" class="form-label">Judul Buku</label>
|
||||
<input type="text" class="form-control" id="judul" value="{{ $buku['judul'] }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="penulis" class="form-label">Penulis</label>
|
||||
<input type="text" class="form-control" id="penulis" value="{{ $buku['penulis'] }}">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="kategori" class="form-label">Kategori</label>
|
||||
<input type="text" class="form-control" id="kategori" value="{{ $buku['kategori'] }}">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="tahun" class="form-label">Tahun Terbit</label>
|
||||
<input type="number" class="form-control" id="tahun" value="{{ $buku['tahun'] }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Tipe Akses</label>
|
||||
@php
|
||||
$tipe_akses = is_array($buku['tipe_akses']) ? $buku['tipe_akses'] : [$buku['tipe_akses']];
|
||||
@endphp
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="tipe_offline" @if(in_array('offline', $tipe_akses)) checked @endif>
|
||||
<label class="form-check-label" for="tipe_offline">Peminjaman Offline</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="tipe_online" @if(in_array('online', $tipe_akses)) checked @endif>
|
||||
<label class="form-check-label" for="tipe_online">Baca Online</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="mb-3">
|
||||
<label for="cover" class="form-label">Cover Buku</label>
|
||||
<input type="file" class="form-control" id="cover">
|
||||
<img src="{{ asset($buku['cover']) }}" alt="Cover saat ini" class="img-thumbnail mt-2" width="150">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="file_pdf" class="form-label">File PDF</label>
|
||||
<input type="file" class="form-control" id="file_pdf">
|
||||
@if(isset($buku['file_pdf']))
|
||||
<small class="text-muted">File saat ini: {{ $buku['file_pdf'] }}</small>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary">Simpan Perubahan</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
|
|
@ -42,6 +42,7 @@
|
|||
</td>
|
||||
<td>
|
||||
<button class="btn btn-sm btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#detailBukuModal"
|
||||
data-id="{{ $buku['id'] }}"
|
||||
data-cover="{{ asset($buku['cover']) }}"
|
||||
data-judul="{{ $buku['judul'] }}"
|
||||
data-penulis="{{ $buku['penulis'] }}"
|
||||
|
|
@ -77,6 +78,7 @@
|
|||
<td><span class="badge bg-info-subtle text-info-emphasis">{{ $buku['file_pdf'] ?? 'N/A' }}</span></td>
|
||||
<td>
|
||||
<button class="btn btn-sm btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#detailBukuModal"
|
||||
data-id="{{ $buku['id'] }}"
|
||||
data-cover="{{ asset($buku['cover']) }}"
|
||||
data-judul="{{ $buku['judul'] }}"
|
||||
data-penulis="{{ $buku['penulis'] }}"
|
||||
|
|
@ -121,6 +123,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
|
||||
<a href="#" id="modalEditButton" class="btn btn-primary"><i class="bi bi-pencil-fill me-2"></i>Edit Buku</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -129,42 +135,45 @@
|
|||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const detailBukuModal = document.getElementById('detailBukuModal');
|
||||
detailBukuModal.addEventListener('show.bs.modal', event => {
|
||||
const button = event.relatedTarget; // Tombol yang memicu modal
|
||||
if(detailBukuModal) {
|
||||
detailBukuModal.addEventListener('show.bs.modal', event => {
|
||||
const button = event.relatedTarget;
|
||||
|
||||
// Ambil data dari atribut data-*
|
||||
const cover = button.getAttribute('data-cover');
|
||||
const judul = button.getAttribute('data-judul');
|
||||
const penulis = button.getAttribute('data-penulis');
|
||||
const kategori = button.getAttribute('data-kategori');
|
||||
const tahun = button.getAttribute('data-tahun');
|
||||
const status = button.getAttribute('data-status');
|
||||
const id = button.getAttribute('data-id');
|
||||
const cover = button.getAttribute('data-cover');
|
||||
const judul = button.getAttribute('data-judul');
|
||||
const penulis = button.getAttribute('data-penulis');
|
||||
const kategori = button.getAttribute('data-kategori');
|
||||
const tahun = button.getAttribute('data-tahun');
|
||||
const status = button.getAttribute('data-status');
|
||||
|
||||
const editUrl = `{{ url('admin/buku') }}/${id}/edit`;
|
||||
|
||||
// Dapatkan elemen-elemen di dalam modal
|
||||
const modalJudul = detailBukuModal.querySelector('#modalJudul');
|
||||
const modalCover = detailBukuModal.querySelector('#modalCover');
|
||||
const modalJudulContent = detailBukuModal.querySelector('#modalJudulContent');
|
||||
const modalPenulis = detailBukuModal.querySelector('#modalPenulis');
|
||||
const modalKategori = detailBukuModal.querySelector('#modalKategori');
|
||||
const modalTahun = detailBukuModal.querySelector('#modalTahun');
|
||||
const modalStatus = detailBukuModal.querySelector('#modalStatus');
|
||||
const modalJudul = detailBukuModal.querySelector('#modalJudul');
|
||||
const modalCover = detailBukuModal.querySelector('#modalCover');
|
||||
const modalJudulContent = detailBukuModal.querySelector('#modalJudulContent');
|
||||
const modalPenulis = detailBukuModal.querySelector('#modalPenulis');
|
||||
const modalKategori = detailBukuModal.querySelector('#modalKategori');
|
||||
const modalTahun = detailBukuModal.querySelector('#modalTahun');
|
||||
const modalStatus = detailBukuModal.querySelector('#modalStatus');
|
||||
const modalEditButton = detailBukuModal.querySelector('#modalEditButton');
|
||||
|
||||
// Masukkan data ke dalam elemen modal
|
||||
modalJudul.textContent = judul;
|
||||
modalCover.src = cover;
|
||||
modalJudulContent.textContent = judul;
|
||||
modalPenulis.textContent = `oleh ${penulis}`;
|
||||
modalKategori.textContent = `: ${kategori}`;
|
||||
modalTahun.textContent = `: ${tahun}`;
|
||||
modalStatus.textContent = status;
|
||||
modalJudul.textContent = judul;
|
||||
modalCover.src = cover;
|
||||
modalJudulContent.textContent = judul;
|
||||
modalPenulis.textContent = `oleh ${penulis}`;
|
||||
modalKategori.textContent = `: ${kategori}`;
|
||||
modalTahun.textContent = `: ${tahun}`;
|
||||
modalStatus.textContent = status;
|
||||
modalEditButton.href = editUrl;
|
||||
|
||||
// Atur warna badge status
|
||||
if (status === 'Tersedia' || status === 'Dapat Dibaca Online') {
|
||||
modalStatus.className = 'badge bg-success-subtle text-success-emphasis';
|
||||
} else {
|
||||
modalStatus.className = 'badge bg-warning-subtle text-warning-emphasis';
|
||||
}
|
||||
});
|
||||
if (status === 'Tersedia' || status === 'Dapat Dibaca Online') {
|
||||
modalStatus.className = 'badge bg-success-subtle text-success-emphasis';
|
||||
} else {
|
||||
modalStatus.className = 'badge bg-warning-subtle text-warning-emphasis';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
<x-app-layout>
|
||||
@section('page-title', $pageTitle)
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-header bg-white d-flex align-items-center">
|
||||
<a href="{{ route('admin.pengguna.index') }}" class="btn btn-light me-2"><i class="bi bi-arrow-left"></i></a>
|
||||
<h5 class="my-0 fw-bold">Formulir Tambah Pengguna</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="#" method="POST">
|
||||
<div class="mb-3">
|
||||
<label for="nama_lengkap" class="form-label">Nama Lengkap</label>
|
||||
<input type="text" class="form-control" id="nama_lengkap" placeholder="Masukkan nama lengkap">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<input type="email" class="form-control" id="email" placeholder="Masukkan alamat email">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="nisn" class="form-label">NISN (jika siswa)</label>
|
||||
<input type="text" class="form-control" id="nisn" placeholder="Masukkan NISN">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="role" class="form-label">Role</label>
|
||||
<select class="form-select" id="role">
|
||||
<option selected>Pilih role...</option>
|
||||
<option value="siswa">Siswa</option>
|
||||
<option value="penjaga perpus">Penjaga Perpus</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="password" class="form-label">Password</label>
|
||||
<input type="password" class="form-control" id="password">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="password_confirmation" class="form-label">Konfirmasi Password</label>
|
||||
<input type="password" class="form-control" id="password_confirmation">
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary">Simpan Pengguna</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
<x-app-layout>
|
||||
@section('page-title', $pageTitle)
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-header bg-white d-flex align-items-center">
|
||||
<a href="{{ route('admin.pengguna.index') }}" class="btn btn-light me-2"><i class="bi bi-arrow-left"></i></a>
|
||||
<h5 class="my-0 fw-bold">Formulir Edit Pengguna</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="#" method="POST">
|
||||
<div class="mb-3">
|
||||
<label for="nama_lengkap" class="form-label">Nama Lengkap</label>
|
||||
<input type="text" class="form-control" id="nama_lengkap" value="{{ $pengguna['nama_lengkap'] }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<input type="email" class="form-control" id="email" value="{{ $pengguna['email'] }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="nisn" class="form-label">NISN (jika siswa)</label>
|
||||
<input type="text" class="form-control" id="nisn" value="{{ $pengguna['nisn'] ?? '' }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="role" class="form-label">Role</label>
|
||||
<select class="form-select" id="role">
|
||||
<option>Pilih role...</option>
|
||||
<option value="siswa" @if($pengguna['role'] == 'siswa') selected @endif>Siswa</option>
|
||||
<option value="penjaga perpus" @if($pengguna['role'] == 'penjaga perpus') selected @endif>Penjaga Perpus</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="password" class="form-label">Password Baru</label>
|
||||
<input type="password" class="form-control" id="password" placeholder="Kosongkan jika tidak diubah">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="password_confirmation" class="form-label">Konfirmasi Password</label>
|
||||
<input type="password" class="form-control" id="password_confirmation">
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary">Simpan Perubahan</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
|
|
@ -1,12 +1,24 @@
|
|||
<x-app-layout>
|
||||
@section('page-title', $pageTitle)
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-header bg-white"><h5 class="my-0 fw-bold">Daftar Semua Pengguna</h5></div>
|
||||
<div class="card-header bg-white d-flex justify-content-between align-items-center">
|
||||
<h5 class="my-0 fw-bold">Daftar Semua Pengguna</h5>
|
||||
<a href="{{ route('admin.pengguna.create') }}" class="btn btn-primary">
|
||||
<i class="bi bi-plus-circle-fill me-2"></i>Tambah Pengguna
|
||||
</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr><th>No</th><th>Nama Lengkap</th><th>Email</th><th>Role</th><th>Aksi</th></tr>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Nama Lengkap</th>
|
||||
<th>Email</th>
|
||||
<th>Role</th>
|
||||
<th>Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($semuaSiswa as $siswa)
|
||||
|
|
@ -14,15 +26,91 @@
|
|||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $siswa['nama_lengkap'] }}</td>
|
||||
<td>{{ $siswa['email'] }}</td>
|
||||
<td><span class="badge bg-primary-subtle text-primary-emphasis">{{ Str::title($siswa['role']) }}</span></td>
|
||||
<td><button class="btn btn-sm btn-outline-secondary">Detail</button></td>
|
||||
<td>
|
||||
@if($siswa['role'] == 'penjaga perpus')
|
||||
<span class="badge bg-success-subtle text-success-emphasis">{{ Str::title($siswa['role']) }}</span>
|
||||
@else
|
||||
<span class="badge bg-primary-subtle text-primary-emphasis">{{ Str::title($siswa['role']) }}</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-sm btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#detailPenggunaModal"
|
||||
data-id="{{ $siswa['id'] }}"
|
||||
data-nama="{{ $siswa['nama_lengkap'] }}"
|
||||
data-email="{{ $siswa['email'] }}"
|
||||
data-role="{{ Str::title($siswa['role']) }}"
|
||||
data-nisn="{{ $siswa['nisn'] ?? 'N/A' }}">
|
||||
<i class="bi bi-eye-fill"></i> Detail
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="5" class="text-center">Tidak ada data pengguna.</td></tr>
|
||||
<tr>
|
||||
<td colspan="5" class="text-center">Tidak ada data pengguna.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="detailPenggunaModal" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title fw-bold" id="modalNama"></h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table class="table table-borderless table-sm">
|
||||
<tr><th width="80px">Email</th><td id="modalEmail"></td></tr>
|
||||
<tr><th>Role</th><td><span id="modalRole" class="badge"></span></td></tr>
|
||||
<tr><th>NISN</th><td id="modalNisn"></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
|
||||
<a href="#" id="modalEditPengguna" class="btn btn-primary"><i class="bi bi-pencil-fill me-2"></i>Edit</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const detailPenggunaModal = document.getElementById('detailPenggunaModal');
|
||||
if(detailPenggunaModal) {
|
||||
detailPenggunaModal.addEventListener('show.bs.modal', event => {
|
||||
const button = event.relatedTarget;
|
||||
|
||||
const id = button.getAttribute('data-id');
|
||||
const nama = button.getAttribute('data-nama');
|
||||
const email = button.getAttribute('data-email');
|
||||
const role = button.getAttribute('data-role');
|
||||
const nisn = button.getAttribute('data-nisn');
|
||||
|
||||
const modalNama = detailPenggunaModal.querySelector('#modalNama');
|
||||
const modalEmail = detailPenggunaModal.querySelector('#modalEmail');
|
||||
const modalRole = detailPenggunaModal.querySelector('#modalRole');
|
||||
const modalNisn = detailPenggunaModal.querySelector('#modalNisn');
|
||||
const modalEditPengguna = detailPenggunaModal.querySelector('#modalEditPengguna');
|
||||
|
||||
modalNama.textContent = nama;
|
||||
modalEmail.textContent = `: ${email}`;
|
||||
modalRole.textContent = role;
|
||||
modalNisn.textContent = `: ${nisn}`;
|
||||
modalEditPengguna.href = `{{ url('admin/pengguna') }}/${id}/edit`;
|
||||
|
||||
if (role.toLowerCase() === 'penjaga perpus') {
|
||||
modalRole.className = 'badge bg-success-subtle text-success-emphasis';
|
||||
} else {
|
||||
modalRole.className = 'badge bg-primary-subtle text-primary-emphasis';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
</x-app-layout>
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<x-app-layout>
|
||||
@section('page-title', $pageTitle)
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-header bg-white d-flex align-items-center">
|
||||
<a href="{{ route('admin.pengumuman.index') }}" class="btn btn-light me-2">
|
||||
<i class="bi bi-arrow-left"></i>
|
||||
</a>
|
||||
<h5 class="my-0 fw-bold">Formulir Pengumuman Baru</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="#" method="POST">
|
||||
{{-- Form ini tidak akan berfungsi karena tidak ada backend --}}
|
||||
<div class="mb-3">
|
||||
<label for="judul" class="form-label">Judul Pengumuman</label>
|
||||
<input type="text" class="form-control" id="judul" placeholder="Masukkan judul pengumuman">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="tipe" class="form-label">Tipe Pengumuman</label>
|
||||
<select class="form-select" id="tipe">
|
||||
<option selected>Pilih tipe...</option>
|
||||
<option value="info">Info</option>
|
||||
<option value="success">Success</option>
|
||||
<option value="warning">Warning</option>
|
||||
<option value="danger">Danger</option>
|
||||
<option value="secondary">Secondary</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="content" class="form-label">Isi Pengumuman</label>
|
||||
<textarea class="form-control" id="content" rows="5" placeholder="Tulis isi pengumuman di sini..."></textarea>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary">Simpan Pengumuman</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<x-app-layout>
|
||||
@section('page-title', $pageTitle)
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-header bg-white d-flex align-items-center">
|
||||
<a href="{{ route('admin.pengumuman.index') }}" class="btn btn-light me-2">
|
||||
<i class="bi bi-arrow-left"></i>
|
||||
</a>
|
||||
<h5 class="my-0 fw-bold">Formulir Edit Pengumuman</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="#" method="POST">
|
||||
{{-- Form ini tidak akan berfungsi karena tidak ada backend --}}
|
||||
<div class="mb-3">
|
||||
<label for="judul" class="form-label">Judul Pengumuman</label>
|
||||
<input type="text" class="form-control" id="judul" value="{{ $pengumuman['title'] }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="tipe" class="form-label">Tipe Pengumuman</label>
|
||||
<select class="form-select" id="tipe">
|
||||
<option>Pilih tipe...</option>
|
||||
<option value="info" @if($pengumuman['type'] == 'info') selected @endif>Info</option>
|
||||
<option value="success" @if($pengumuman['type'] == 'success') selected @endif>Success</option>
|
||||
<option value="warning" @if($pengumuman['type'] == 'warning') selected @endif>Warning</option>
|
||||
<option value="danger" @if($pengumuman['type'] == 'danger') selected @endif>Danger</option>
|
||||
<option value="secondary" @if($pengumuman['type'] == 'secondary') selected @endif>Secondary</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="content" class="form-label">Isi Pengumuman</label>
|
||||
<textarea class="form-control" id="content" rows="5">{{ $pengumuman['content'] }}</textarea>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary">Simpan Perubahan</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
|
|
@ -1,42 +1,55 @@
|
|||
<x-app-layout>
|
||||
@section('page-title', $pageTitle)
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-header bg-white d-flex justify-content-between align-items-center">
|
||||
<h5 class="my-0 fw-bold">Kelola Pengumuman</h5>
|
||||
<button class="btn btn-primary"><i class="bi bi-plus-circle-fill me-2"></i>Buat Pengumuman</button>
|
||||
<a href="{{ route('admin.pengumuman.create') }}" class="btn btn-primary">
|
||||
<i class="bi bi-plus-circle-fill me-2"></i>Buat Pengumuman
|
||||
</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<table class="table table-hover align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Tipe</th>
|
||||
<th>Judul</th>
|
||||
<th>Isi</th>
|
||||
<th>Aksi</th>
|
||||
<th scope="col">No</th>
|
||||
<th scope="col">Tipe</th>
|
||||
<th scope="col">Judul</th>
|
||||
<th scope="col">Isi</th>
|
||||
<th scope="col">Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($semuaPengumuman as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td><span
|
||||
class="badge bg-{{ $item['type'] }}-subtle text-{{ $item['type'] }}-emphasis">{{ Str::title($item['type']) }}</span>
|
||||
</td>
|
||||
<td>{{ $item['title'] }}</td>
|
||||
<td class="truncate-text" style="max-width: 300px;">{{ $item['content'] }}</td>
|
||||
<td>
|
||||
<button class="btn btn-sm btn-outline-secondary"><i
|
||||
class="bi bi-pencil-fill"></i></button>
|
||||
<button class="btn btn-sm btn-outline-danger"><i
|
||||
class="bi bi-trash3-fill"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@forelse ($semuaPengumuman as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>
|
||||
<span class="badge bg-{{ $item['type'] }}-subtle text-{{ $item['type'] }}-emphasis">{{ Str::title($item['type']) }}</span>
|
||||
</td>
|
||||
<td>{{ $item['title'] }}</td>
|
||||
<td class="truncate-text" style="max-width: 300px;">
|
||||
{{ $item['content'] }}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ route('admin.pengumuman.edit', $item['id']) }}" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="bi bi-pencil-fill"></i>
|
||||
</a>
|
||||
<button class="btn btn-sm btn-outline-danger" disabled>
|
||||
<i class="bi bi-trash3-fill"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="5" class="text-center py-4">
|
||||
<p class="text-muted">Belum ada pengumuman yang dibuat.</p>
|
||||
</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
</x-app-layout>
|
||||
|
|
@ -54,9 +54,14 @@
|
|||
Route::middleware(['session.auth', 'role:penjaga perpus'])->prefix('admin')->name('admin.')->group(function () {
|
||||
Route::get('/dashboard', [AdminDashboardController::class, 'index'])->name('dashboard');
|
||||
Route::get('/buku', [AdminBookController::class, 'index'])->name('buku.index');
|
||||
Route::get('/buku/{id}/edit', [AdminBookController::class, 'edit'])->name('buku.edit');
|
||||
Route::get('/buku/tambah', [AdminBookController::class, 'create'])->name('buku.create');
|
||||
Route::get('/pengguna', [AdminUserController::class, 'index'])->name('pengguna.index');
|
||||
Route::get('/pengumuman', [PengumumanController::class, 'index'])->name('pengumuman.index');
|
||||
Route::get('/pengumuman/tambah', [PengumumanController::class, 'create'])->name('pengumuman.create');
|
||||
Route::get('/pengumuman/{id}/edit', [PengumumanController::class, 'edit'])->name('pengumuman.edit');
|
||||
Route::get('/pengguna/tambah', [AdminUserController::class, 'create'])->name('pengguna.create');
|
||||
Route::get('/pengguna/{id}/edit', [AdminUserController::class, 'edit'])->name('pengguna.edit');
|
||||
});
|
||||
|
||||
require __DIR__ . '/auth.php';
|
||||
require __DIR__ . '/auth.php';
|
||||
|
|
|
|||
Loading…
Reference in New Issue