berita user

This commit is contained in:
rahmagustin 2026-03-05 20:29:59 +07:00
parent d59c9faaf0
commit bf7b9392f3
6 changed files with 247 additions and 6 deletions

View File

@ -0,0 +1,49 @@
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Berita;
use Carbon\Carbon;
class BeritaController extends Controller
{
/**
* Tampilkan semua berita.
*/
public function index()
{
// Ambil semua berita terbaru, urut dari tanggal terbaru
$berita = Berita::orderBy('tanggal_berita', 'desc')->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'));
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PengumumanController extends Controller
{
//
}

View File

@ -0,0 +1,68 @@
@extends('user.template')
@section('title', 'Berita')
@section('content')
<div class="page-title">
<div class="container d-lg-flex justify-content-between align-items-center">
<h1 class="mb-2 mb-lg-0">Berita</h1>
<nav class="breadcrumbs">
<ol>
<li><a href="{{ route('user.index') }}">Beranda</a></li>
<li class="current">Berita</li>
</ol>
</nav>
</div>
</div><!-- End Page Title -->
<!-- Blog Posts Section -->
<section id="blog-posts" class="blog-posts section">
<div class="container">
<div class="row gy-4">
@forelse ($berita as $item)
<div class="col-lg-4">
<article>
<div class="post-img">
@if ($item->gambar_berita)
<img src="{{ asset('storage/' . $item->gambar_berita) }}"
alt="{{ $item->judul_berita }}" class="img-fluid">
@else
<img src="assets/img/blog/default.jpg" alt="default" class="img-fluid">
@endif
</div>
<p class="post-category">
<time datetime="{{ $item->tanggal_berita }}">
{{ $item->tanggal_berita ? \Carbon\Carbon::parse($item->tanggal_berita)->translatedFormat('d F Y') : '-' }}
</time>
</p>
<h2 class="title">
<a href="{{ route('user.detail-berita', $item->id_berita) }}">
{{ Str::limit($item->judul_berita, 30) }}
</a>
</h2>
<div class="d-flex align-items-start">
<div class="post-meta ms-2">
<p class="post-excerpt">
{{ Str::limit(strip_tags($item->isi_berita), 120, '...') }}
</p>
</div>
</div>
</article>
</div><!-- End post list item -->
@empty
<p class="text-center">Belum ada berita tersedia.</p>
@endforelse
</div>
</div>
</section><!-- /Blog Posts Section -->
@endsection

View File

@ -0,0 +1,108 @@
@extends('user.template')
@section('title', $berita->judul_berita)
@section('content')
<div class="page-title">
<div class="container d-lg-flex justify-content-between align-items-center">
<h1 class="mb-2 mb-lg-0">Detail Berita</h1>
<nav class="breadcrumbs">
<ol>
<li><a href="{{ route('user.index') }}">Beranda</a></li>
<li><a href="{{ route('user.berita') }}">Berita</a></li>
<li class="current">Detail Berita</li>
</ol>
</nav>
</div>
</div><!-- End Page Title -->
<div class="container">
<div class="row">
<div class="col-lg-8">
<!-- Blog Details Section -->
<section id="blog-details" class="blog-details section">
<div class="container">
<article class="article">
<div class="post-img">
@if ($berita->gambar_berita)
<img src="{{ asset('storage/' . $berita->gambar_berita) }}"
alt="{{ $berita->judul_berita }}" class="img-fluid">
@else
<img src="assets/img/blog/default.jpg" alt="default" class="img-fluid">
@endif
</div>
<h2 class="title">{{ $berita->judul_berita }}</h2>
<div class="meta-top">
<ul>
<li class="d-flex align-items-center">
<i class="bi bi-person"></i>
{{ $berita->author ?? 'Admin' }}
</li>
<li class="d-flex align-items-center">
<i class="bi bi-clock"></i>
<time datetime="{{ $berita->tanggal_berita }}">
{{ \Carbon\Carbon::parse($berita->tanggal_berita)->translatedFormat('d F Y') }}
</time>
</li>
</ul>
</div><!-- End meta top -->
<div class="content">
{!! $berita->isi_berita !!}
</div><!-- End post content -->
</article>
</div>
</section><!-- /Blog Details Section -->
</div>
<div class="col-lg-4 sidebar">
<div class="widgets-container">
<!-- Recent Posts Widget -->
<!-- Recent Posts Widget -->
<div class="recent-posts-widget widget-item">
<h3 class="widget-title">Berita Lainnya</h3>
@foreach ($recentBerita as $recent)
<div class="post-item">
@if ($recent->gambar_berita)
<img src="{{ asset('storage/' . $recent->gambar_berita) }}"
alt="{{ $recent->judul_berita }}" class="flex-shrink-0">
@else
<img src="assets/img/blog/default.jpg" alt="default" class="flex-shrink-0">
@endif
<div>
<h4>
<a href="{{ route('user.detail-berita', $recent->id_berita) }}">
{{ Str::limit($recent->judul_berita, 50) }}
</a>
</h4>
<time datetime="{{ $recent->tanggal_berita }}">
{{ \Carbon\Carbon::parse($recent->tanggal_berita)->translatedFormat('d F Y') }}
</time>
</div>
</div>
@endforeach
</div><!--/Recent Posts Widget -->
</div>
</div>
</div>
</div>
@endsection

View File

@ -77,8 +77,8 @@ class="{{ Request::routeIs('user.aduan') ? 'active' : '' }}">
</li> </li>
<li> <li>
<a href="{{ route('user.sig-tps') }}" <a href="{{ route('user.berita') }}"
class="{{ Request::routeIs('user.sig-tps') ? 'active' : '' }}"> class="{{ Request::routeIs('user.berita') ? 'active' : '' }}">
Berita Berita
</a> </a>
</li> </li>

View File

@ -6,6 +6,9 @@
use App\Http\Controllers\IndexController; use App\Http\Controllers\IndexController;
use App\Http\Controllers\AduanController; use App\Http\Controllers\AduanController;
use App\Http\Controllers\KontakController; use App\Http\Controllers\KontakController;
use App\Http\Controllers\BeritaController;
use App\Http\Controllers\PengumumanController;
// ADMIN // ADMIN
use App\Http\Controllers\Admin\DashboardController; use App\Http\Controllers\Admin\DashboardController;
@ -13,8 +16,8 @@
use App\Http\Controllers\Admin\KategoriTpsController; use App\Http\Controllers\Admin\KategoriTpsController;
use App\Http\Controllers\Admin\SampahController; use App\Http\Controllers\Admin\SampahController;
use App\Http\Controllers\Admin\AduanController as AdminAduanController; use App\Http\Controllers\Admin\AduanController as AdminAduanController;
use App\Http\Controllers\Admin\BeritaController; use App\Http\Controllers\Admin\BeritaController as AdminBeritaController;
use App\Http\Controllers\Admin\PengumumanController; use App\Http\Controllers\Admin\PengumumanController as AdminPengumumanController;
use App\Http\Controllers\Admin\ProfilController; use App\Http\Controllers\Admin\ProfilController;
/* /*
@ -37,6 +40,9 @@
Route::get('/aduan-tps', [AduanController::class, 'index'])->name('user.aduan'); Route::get('/aduan-tps', [AduanController::class, 'index'])->name('user.aduan');
Route::post('/aduan-tps', [AduanController::class, 'store'])->name('user.aduan.store'); 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'); Route::get('/kontak', [KontakController::class, 'index'])->name('user.kontak');
require __DIR__.'/auth.php'; require __DIR__.'/auth.php';
@ -70,8 +76,8 @@
Route::post('/aduan/{id}/tanggapi', [AdminAduanController::class, 'tanggapi'])->name('aduan.tanggapi'); Route::post('/aduan/{id}/tanggapi', [AdminAduanController::class, 'tanggapi'])->name('aduan.tanggapi');
Route::delete('/aduan/{id}', [AdminAduanController::class, 'destroy'])->name('aduan.destroy'); Route::delete('/aduan/{id}', [AdminAduanController::class, 'destroy'])->name('aduan.destroy');
Route::resource('berita', BeritaController::class)->except(['show']); Route::resource('berita', AdminBeritaController::class)->except(['show']);
Route::resource('pengumuman', PengumumanController::class)->except(['show']); Route::resource('pengumuman', AdminPengumumanController::class)->except(['show']);
// PROFIL // PROFIL
Route::get('/profil', [ProfilController::class, 'index'])->name('profil'); Route::get('/profil', [ProfilController::class, 'index'])->name('profil');