From bf7b9392f311b3e24322275e84c9917cbe5d091b Mon Sep 17 00:00:00 2001 From: rahmagustin Date: Thu, 5 Mar 2026 20:29:59 +0700 Subject: [PATCH] berita user --- app/Http/Controllers/BeritaController.php | 49 ++++++++ app/Http/Controllers/PengumumanController.php | 10 ++ resources/views/user/berita.blade.php | 68 +++++++++++ resources/views/user/detail-berita.blade.php | 108 ++++++++++++++++++ resources/views/user/template.blade.php | 4 +- routes/web.php | 14 ++- 6 files changed, 247 insertions(+), 6 deletions(-) create mode 100644 app/Http/Controllers/BeritaController.php create mode 100644 app/Http/Controllers/PengumumanController.php create mode 100644 resources/views/user/berita.blade.php create mode 100644 resources/views/user/detail-berita.blade.php diff --git a/app/Http/Controllers/BeritaController.php b/app/Http/Controllers/BeritaController.php new file mode 100644 index 0000000..85efc26 --- /dev/null +++ b/app/Http/Controllers/BeritaController.php @@ -0,0 +1,49 @@ +paginate(6); // Pagination 6 per halaman + + return view('user.berita', compact('berita')); + } + + /** + * Tampilkan detail berita. + */ + public function show($id) + { + // Ambil berita berdasarkan ID + $berita = Berita::findOrFail($id); + + // Ambil 5 berita terbaru selain yang sedang dibuka + $recentBerita = Berita::where('id_berita', '!=', $id) + ->orderBy('tanggal_berita', 'desc') + ->limit(5) + ->get(); + + return view('user.detail-berita', compact('berita', 'recentBerita')); + } + + /** + * Ambil 3 berita terbaru untuk slider di hero section + */ + public function hero() + { + $beritaHero = Berita::orderBy('tanggal_berita', 'desc')->take(3)->get(); + + return view('user.index', compact('beritaHero')); + } +} diff --git a/app/Http/Controllers/PengumumanController.php b/app/Http/Controllers/PengumumanController.php new file mode 100644 index 0000000..e98dc69 --- /dev/null +++ b/app/Http/Controllers/PengumumanController.php @@ -0,0 +1,10 @@ + +
+

Berita

+ +
+ + + +
+
+
+ + @forelse ($berita as $item) +
+
+ +
+ @if ($item->gambar_berita) + {{ $item->judul_berita }} + @else + default + @endif +
+ + + +

+ + {{ Str::limit($item->judul_berita, 30) }} + +

+ +
+ +
+ +
+
+ @empty +

Belum ada berita tersedia.

+ @endforelse + +
+ +
+
+ +@endsection diff --git a/resources/views/user/detail-berita.blade.php b/resources/views/user/detail-berita.blade.php new file mode 100644 index 0000000..7dc909e --- /dev/null +++ b/resources/views/user/detail-berita.blade.php @@ -0,0 +1,108 @@ +@extends('user.template') + +@section('title', $berita->judul_berita) + +@section('content') + +
+
+

Detail Berita

+ +
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ @if ($berita->gambar_berita) + {{ $berita->judul_berita }} + @else + default + @endif +
+ +

{{ $berita->judul_berita }}

+ +
+
    +
  • + + {{ $berita->author ?? 'Admin' }} +
  • +
  • + + +
  • + +
+
+ +
+ {!! $berita->isi_berita !!} +
+ +
+ +
+
+ +
+ + + +
+
+ +@endsection diff --git a/resources/views/user/template.blade.php b/resources/views/user/template.blade.php index 1f63dcc..ab12bd3 100644 --- a/resources/views/user/template.blade.php +++ b/resources/views/user/template.blade.php @@ -77,8 +77,8 @@ class="{{ Request::routeIs('user.aduan') ? 'active' : '' }}">
  • - + Berita
  • diff --git a/routes/web.php b/routes/web.php index 67c6bc6..b32339c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6,6 +6,9 @@ use App\Http\Controllers\IndexController; use App\Http\Controllers\AduanController; use App\Http\Controllers\KontakController; +use App\Http\Controllers\BeritaController; +use App\Http\Controllers\PengumumanController; + // ADMIN use App\Http\Controllers\Admin\DashboardController; @@ -13,8 +16,8 @@ use App\Http\Controllers\Admin\KategoriTpsController; use App\Http\Controllers\Admin\SampahController; use App\Http\Controllers\Admin\AduanController as AdminAduanController; -use App\Http\Controllers\Admin\BeritaController; -use App\Http\Controllers\Admin\PengumumanController; +use App\Http\Controllers\Admin\BeritaController as AdminBeritaController; +use App\Http\Controllers\Admin\PengumumanController as AdminPengumumanController; use App\Http\Controllers\Admin\ProfilController; /* @@ -37,6 +40,9 @@ Route::get('/aduan-tps', [AduanController::class, 'index'])->name('user.aduan'); Route::post('/aduan-tps', [AduanController::class, 'store'])->name('user.aduan.store'); +Route::get('/berita', [BeritaController::class, 'index'])->name('user.berita'); +Route::get('/berita/{id}', [BeritaController::class, 'show'])->name('user.detail-berita'); + Route::get('/kontak', [KontakController::class, 'index'])->name('user.kontak'); require __DIR__.'/auth.php'; @@ -70,8 +76,8 @@ Route::post('/aduan/{id}/tanggapi', [AdminAduanController::class, 'tanggapi'])->name('aduan.tanggapi'); Route::delete('/aduan/{id}', [AdminAduanController::class, 'destroy'])->name('aduan.destroy'); - Route::resource('berita', BeritaController::class)->except(['show']); - Route::resource('pengumuman', PengumumanController::class)->except(['show']); + Route::resource('berita', AdminBeritaController::class)->except(['show']); + Route::resource('pengumuman', AdminPengumumanController::class)->except(['show']); // PROFIL Route::get('/profil', [ProfilController::class, 'index'])->name('profil');