# Panduan Upgrade v3 — Homepage Fully Admin-Controlled

Versi ini melanjutkan v2 dengan **6 admin page baru** + **5 tabel database baru**, sehingga
**SELURUH konten homepage** bisa dikontrol dari admin panel — tanpa edit kode lagi.

---

## 🚀 Langkah Deploy

### 1. Backup database
Export `fsains_uncp` dari phpMyAdmin sebelum upgrade.

### 2. Jalankan kedua SQL upgrade (urutannya penting!)

**Jika baru pertama kali upgrade dari versi awal**, jalankan kedua-duanya:
1. `database_upgrade.sql` (yang dari v2)
2. `database_upgrade_v3.sql` (yang baru)

**Jika sudah pernah upgrade ke v2**, cukup jalankan:
- `database_upgrade_v3.sql`

Caranya: phpMyAdmin → pilih DB `fsains_uncp` → tab **SQL** → paste isi file → **Go**.

### 3. Ganti file project
Extract ZIP, replace folder `fakultas_sains` di XAMPP htdocs.
**Jangan lupa salin folder `assets/images/news/` dan `upload/` dari versi lama** kalau ada gambar berita.

### 4. Login admin dan eksplorasi menu baru

Login → sidebar sekarang punya 3 grup menu:
- **KONTEN UTAMA**: Hero Slideshow, Quick Info Bar, Kelola Berita, Agenda
- **PROFIL FAKULTAS**: Pimpinan, Laboratorium, Informasi Akademik
- **PENGATURAN**: Pengaturan Web, Kelola Menu Nav, Kelola Admin

---

## 🎛️ Apa yang Sekarang Bisa Anda Kontrol dari Admin

| Section di Homepage | Admin Page |
|---|---|
| **Hero Slideshow** (4-5 gambar di atas) | `admin/hero-slides.php` |
| **Quick Info Bar** (4 kartu PMB) | `admin/quick-info.php` |
| **Headline Berita** | `admin/news-management.php` |
| **Informasi Akademik & Layanan** | `admin/quick-services.php` |
| **Tentang FSAINS** (paragraf sejarah/visi/misi) | `admin/settings.php` (key `about_*`) |
| **Pimpinan Fakultas** | `admin/pimpinan.php` |
| **Program Studi** | langsung edit tabel `program_studi` |
| **Laboratorium Unggulan** | `admin/laboratorium.php` |
| **Agenda & Kegiatan** | `admin/agenda.php` |
| **Alamat, telepon, email, sosmed** | `admin/settings.php` |
| **Link SIAKAD, e-Learning, PMB** | `admin/settings.php` |

**Semua dengan satu klik. Tidak perlu phpMyAdmin lagi.**

---

## 🔒 Foundation yang Diperbaiki

### 1. Brute-force protection di login
- Max 5 percobaan gagal per IP dalam 15 menit
- Setelah 5x gagal → IP terkunci 15 menit, form login disabled
- Log percobaan tersimpan di tabel `login_attempts`
- Session ID di-regenerate setelah login sukses (anti session fixation)

### 2. Upload gambar berita pakai `image_helper.php`
- Validasi MIME asli (via `finfo`), bukan ekstensi
- Auto-resize max 1600px lebar
- Kompresi JPEG q82 / PNG level 7 / WebP q82
- Mempertahankan transparansi PNG/WebP

### 3. TinyMCE rich text editor
Sekarang aktif di `admin/add.php` dan `admin/edit.php` berita. Anda bisa
bold, italic, bullet list, insert link, insert tabel — tanpa nulis HTML manual.
Gratis (lisensi GPL self-hosted dari jsdelivr CDN). Tidak perlu API key.

---

## 📋 Struktur Menu Admin Baru

```
Dashboard
─── KONTEN UTAMA ───
Hero Slideshow      ← BARU
Quick Info Bar      ← BARU
Kelola Berita
Agenda & Kegiatan   ← BARU
─── PROFIL FAKULTAS ───
Pimpinan            ← BARU
Laboratorium        ← BARU
Informasi Akademik
─── PENGATURAN ───
Pengaturan Web      ← BARU (settings)
Kelola Menu Nav
Kelola Admin (super only)
─── Akun ───
Akun Saya
Logout
```

---

## 🗃️ Tabel Database Baru

- `hero_slides` — slideshow homepage
- `quick_info` — 4 kartu PMB
- `pimpinan` — daftar pimpinan
- `laboratorium` — daftar lab
- `agenda` — agenda akademik
- `login_attempts` — log brute-force protection

Plus 4 settings baru di tabel `settings`: `about_sejarah`, `about_visi`, `about_misi`, `about_tujuan`.

---

## ❓ Troubleshooting

**Q: Setelah upgrade, halaman utama error / blank**
A: Pastikan `database_upgrade_v3.sql` sudah dijalankan. Cek di phpMyAdmin apakah tabel `hero_slides`, `quick_info`, dll sudah ada.

**Q: Hero slideshow tidak muncul gambar**
A: Pastikan folder `assets/images/hero/` masih ada dan berisi `hero-1.jpg` sampai `hero-4.jpg`. Atau upload gambar baru via `admin/hero-slides.php`.

**Q: Foto pimpinan tidak muncul setelah upload**
A: Cek permission folder `assets/images/pimpinan/` — harus writable (chmod 755 atau 775).

**Q: TinyMCE tidak load di add/edit berita**
A: Pastikan ada koneksi internet (TinyMCE dari jsdelivr CDN). Jika tetap tidak load, cek browser console untuk error.

**Q: Login terkunci karena saya salah password berkali-kali sendiri**
A: Buka phpMyAdmin → `TRUNCATE TABLE login_attempts;` — kunci akan reset.

**Q: Mau matikan brute-force protection (dev mode)**
A: Edit `admin/login.php`, ganti `$max_attempts = 5;` jadi `$max_attempts = 9999;`

---

## 🎯 Saran Pengembangan Lanjutan

1. **Email notification untuk form kontak** — sekarang form kontak hanya redirect WhatsApp.
   Integrasikan PHPMailer.

2. **Activity log admin** — log siapa edit apa kapan, untuk audit trail.

3. **Backup otomatis database** — cron job harian dump SQL.

4. **Search di seluruh website** — sekarang search baru ada di halaman berita.

5. **Schema.org JSON-LD** untuk SEO yang lebih baik (Article schema di detail berita).

6. **Analytics tracking** (Google Analytics 4 atau Plausible).

---

## 📝 Catatan Untuk Production

Sebelum deploy ke server live:

1. `config/config.php`: ganti `$IS_PRODUCTION = true;`
2. `config/config.php`: ganti `$base_url = "";` (jika di root domain) atau sesuaikan
3. `robots.txt`: ganti URL sitemap ke domain asli
4. Hapus file `database_upgrade*.sql` dari server (sudah dieksekusi)
5. Set permission folder upload: `chmod 755 -R assets/images/ upload/`
6. **Ganti password admin default**!

Selamat menggunakan! 🎉
