%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
<?php
/**
* Halaman Kotak Saran — masyarakat menyampaikan saran/masukan.
*/
require_once __DIR__ . '/config/config.php';
$errors = [];
$old = ['nama' => '', 'email' => '', 'kategori' => 'saran', 'isi' => ''];
$kategoriOptions = [
'saran' => 'Saran / Usulan',
'kritik' => 'Kritik',
'pertanyaan' => 'Pertanyaan',
'apresiasi' => 'Apresiasi',
'lainnya' => 'Lainnya',
];
$sukses = !empty($_SESSION['saran_sukses']);
unset($_SESSION['saran_sukses']);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
csrf_verify();
$old['nama'] = post_param('nama');
$old['email'] = post_param('email');
$old['kategori'] = post_param('kategori', 'saran');
$old['isi'] = post_param('isi');
if (!array_key_exists($old['kategori'], $kategoriOptions)) {
$old['kategori'] = 'saran';
}
if ($old['email'] !== '' && !is_valid_email($old['email'])) {
$errors['email'] = 'Alamat email tidak valid.';
}
if (mb_strlen(trim($old['isi'])) < 10) {
$errors['isi'] = 'Saran minimal 10 karakter.';
}
if (empty($errors)) {
$stmt = db()->prepare(
'INSERT INTO saran (nama, email, kategori, isi, status) VALUES (?, ?, ?, ?, "baru")'
);
$stmt->execute([
$old['nama'] !== '' ? $old['nama'] : null,
$old['email'] !== '' ? $old['email'] : null,
$old['kategori'],
$old['isi'],
]);
$_SESSION['saran_sukses'] = true;
redirect('saran.php');
}
}
$pageTitle = 'Kotak Saran — ' . APP_NAME_SHORT;
$activeNav = '';
require __DIR__ . '/partials/head.php';
require __DIR__ . '/partials/navbar.php';
$val = static fn (string $k) => e($old[$k] ?? '');
$inputClass = static fn (string $k) => isset($errors[$k])
? 'border-red-300 focus:border-red-500 focus:ring-red-100'
: 'border-slate-300 focus:border-mateng-green focus:ring-green-100';
?>
<section class="relative overflow-hidden bg-gradient-to-br from-mateng-green to-mateng-blue text-white py-14">
<?php require __DIR__ . '/partials/sekda-header.php'; ?>
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<nav class="text-sm text-green-100 mb-3">
<a href="<?= e(url('index.php')) ?>" class="hover:underline">Beranda</a><span class="mx-2">/</span><span>Kotak Saran</span>
</nav>
<h1 class="text-3xl md:text-4xl font-extrabold mb-2">Kotak Saran & Masukan</h1>
<p class="text-green-50 max-w-2xl">Suara Anda penting bagi kami. Sampaikan saran, kritik, atau apresiasi untuk peningkatan layanan informasi publik.</p>
</div>
</section>
<main class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 py-10 w-full">
<?php if ($sukses): ?>
<div class="bg-white rounded-2xl border border-green-200 shadow-sm overflow-hidden">
<div class="bg-green-50 p-8 text-center border-b border-green-100">
<div class="w-16 h-16 bg-mateng-green text-white rounded-full flex items-center justify-center text-3xl mx-auto mb-4"><i class="fas fa-comment-dots"></i></div>
<h2 class="text-2xl font-bold text-slate-900 mb-1">Terima Kasih!</h2>
<p class="text-slate-500">Saran Anda telah kami terima dan akan menjadi bahan evaluasi layanan kami.</p>
</div>
<div class="p-8 text-center">
<div class="flex flex-col sm:flex-row justify-center gap-3">
<a href="<?= e(url('saran.php')) ?>" class="bg-mateng-green hover:bg-green-700 text-white px-6 py-3 rounded-lg font-semibold transition-colors">Kirim Saran Lain</a>
<a href="<?= e(url('index.php')) ?>" class="bg-slate-100 hover:bg-slate-200 text-slate-700 px-6 py-3 rounded-lg font-semibold transition-colors">Kembali ke Beranda</a>
</div>
</div>
</div>
<?php else: ?>
<div class="grid grid-cols-1 sm:grid-cols-3 gap-4 mb-8">
<div class="bg-white border border-slate-100 rounded-xl p-5 text-center shadow-sm">
<i class="fas fa-lightbulb text-2xl text-mateng-gold mb-2"></i>
<p class="text-sm font-semibold text-slate-700">Saran Membangun</p>
</div>
<div class="bg-white border border-slate-100 rounded-xl p-5 text-center shadow-sm">
<i class="fas fa-user-shield text-2xl text-mateng-blue mb-2"></i>
<p class="text-sm font-semibold text-slate-700">Bisa Anonim</p>
</div>
<div class="bg-white border border-slate-100 rounded-xl p-5 text-center shadow-sm">
<i class="fas fa-bolt text-2xl text-mateng-green mb-2"></i>
<p class="text-sm font-semibold text-slate-700">Langsung Tersampaikan</p>
</div>
</div>
<?php if (!empty($errors)): ?>
<div class="bg-red-50 border border-red-200 text-red-700 rounded-xl p-4 mb-6 text-sm flex items-start gap-2">
<i class="fas fa-triangle-exclamation mt-0.5"></i><span>Mohon periksa kembali isian formulir.</span>
</div>
<?php endif; ?>
<form method="post" class="bg-white rounded-2xl border border-slate-100 shadow-sm p-6 sm:p-8 space-y-5">
<?= csrf_field() ?>
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-slate-700 mb-1.5">Nama <span class="text-slate-400 font-normal">(opsional)</span></label>
<input type="text" name="nama" value="<?= $val('nama') ?>" placeholder="Kosongkan untuk anonim" class="w-full rounded-lg border border-slate-300 px-4 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100">
</div>
<div>
<label class="block text-sm font-medium text-slate-700 mb-1.5">Email <span class="text-slate-400 font-normal">(opsional)</span></label>
<input type="email" name="email" value="<?= $val('email') ?>" placeholder="Untuk balasan (bila perlu)" class="w-full rounded-lg border px-4 py-2.5 outline-none focus:ring-4 <?= $inputClass('email') ?>">
<?php if (isset($errors['email'])): ?><p class="text-xs text-red-500 mt-1"><?= e($errors['email']) ?></p><?php endif; ?>
</div>
</div>
<div>
<label class="block text-sm font-medium text-slate-700 mb-1.5">Kategori</label>
<select name="kategori" class="w-full rounded-lg border border-slate-300 px-4 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100 bg-white">
<?php foreach ($kategoriOptions as $key => $label): ?>
<option value="<?= e($key) ?>" <?= $old['kategori'] === $key ? 'selected' : '' ?>><?= e($label) ?></option>
<?php endforeach; ?>
</select>
</div>
<div>
<label class="block text-sm font-medium text-slate-700 mb-1.5">Saran / Masukan Anda <span class="text-red-500">*</span></label>
<textarea name="isi" rows="5" class="w-full rounded-lg border px-4 py-2.5 outline-none focus:ring-4 <?= $inputClass('isi') ?>" placeholder="Tuliskan saran, kritik, atau masukan Anda di sini..."><?= $val('isi') ?></textarea>
<?php if (isset($errors['isi'])): ?><p class="text-xs text-red-500 mt-1"><?= e($errors['isi']) ?></p><?php endif; ?>
</div>
<button type="submit" class="w-full bg-mateng-green hover:bg-green-700 text-white font-bold px-6 py-3.5 rounded-xl transition-colors flex items-center justify-center gap-2">
<i class="fas fa-paper-plane"></i> Kirim Saran
</button>
</form>
<?php endif; ?>
</main>
<?php require __DIR__ . '/partials/footer.php'; ?>