From d59c9faaf0e4336f166060801c40c21dc35958c3 Mon Sep 17 00:00:00 2001 From: rahmagustin Date: Thu, 5 Mar 2026 18:38:20 +0700 Subject: [PATCH] tambah berita dan pengumuman --- .../Controllers/Admin/BeritaController.php | 90 ++++++++++++ .../Admin/PengumumanController.php | 82 +++++++++++ app/Models/Berita.php | 28 ++++ app/Models/Pengumuman.php | 28 ++++ .../2026_03_05_062354_create_berita_table.php | 25 ++++ ...6_03_05_062643_create_pengumuman_table.php | 25 ++++ resources/views/admin/berita/create.blade.php | 89 ++++++++++++ resources/views/admin/berita/edit.blade.php | 103 ++++++++++++++ resources/views/admin/berita/index.blade.php | 128 ++++++++++++++++++ .../views/admin/kategori-tps/create.blade.php | 1 + .../views/admin/pengumuman/create.blade.php | 89 ++++++++++++ .../views/admin/pengumuman/edit.blade.php | 103 ++++++++++++++ .../views/admin/pengumuman/index.blade.php | 128 ++++++++++++++++++ resources/views/admin/template.blade.php | 12 ++ resources/views/user/index.blade.php | 2 +- resources/views/user/template.blade.php | 23 ++-- routes/web.php | 5 + 17 files changed, 951 insertions(+), 10 deletions(-) create mode 100644 app/Http/Controllers/Admin/BeritaController.php create mode 100644 app/Http/Controllers/Admin/PengumumanController.php create mode 100644 app/Models/Berita.php create mode 100644 app/Models/Pengumuman.php create mode 100644 database/migrations/2026_03_05_062354_create_berita_table.php create mode 100644 database/migrations/2026_03_05_062643_create_pengumuman_table.php create mode 100644 resources/views/admin/berita/create.blade.php create mode 100644 resources/views/admin/berita/edit.blade.php create mode 100644 resources/views/admin/berita/index.blade.php create mode 100644 resources/views/admin/pengumuman/create.blade.php create mode 100644 resources/views/admin/pengumuman/edit.blade.php create mode 100644 resources/views/admin/pengumuman/index.blade.php diff --git a/app/Http/Controllers/Admin/BeritaController.php b/app/Http/Controllers/Admin/BeritaController.php new file mode 100644 index 0000000..cc69cc1 --- /dev/null +++ b/app/Http/Controllers/Admin/BeritaController.php @@ -0,0 +1,90 @@ +get(); + return view('admin.berita.index', compact('berita')); + } + + // Form tambah berita + public function create() + { + return view('admin.berita.create'); + } + + // Simpan berita baru + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'judul_berita' => 'required|string|max:255', + 'isi_berita' => 'required|string', + 'tanggal_berita' => 'required|date', + 'gambar_berita' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); + + if ($validator->fails()) return redirect()->back()->withErrors($validator)->withInput(); + + $data = $request->only('judul_berita','isi_berita','tanggal_berita'); + + if ($request->hasFile('gambar_berita')) { + $data['gambar_berita'] = $request->file('gambar_berita')->store('berita', 'public'); + } + + Berita::create($data); + + return redirect()->route('admin.berita.index')->with('success','Berita berhasil ditambahkan.'); + } + + // Form edit berita + public function edit($id_berita) + { + $berita = Berita::findOrFail($id_berita); + return view('admin.berita.edit', compact('berita')); + } + + // Update berita + public function update(Request $request, $id_berita) + { + $berita = Berita::findOrFail($id_berita); + + $validator = Validator::make($request->all(), [ + 'judul_berita' => 'required|string|max:255', + 'isi_berita' => 'required|string', + 'tanggal_berita' => 'required|date', + 'gambar_berita' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); + + if ($validator->fails()) return redirect()->back()->withErrors($validator)->withInput(); + + $data = $request->only('judul_berita','isi_berita','tanggal_berita'); + + if ($request->hasFile('gambar_berita')) { + if ($berita->gambar_berita) Storage::disk('public')->delete($berita->gambar_berita); + $data['gambar_berita'] = $request->file('gambar_berita')->store('berita','public'); + } + + $berita->update($data); + + return redirect()->route('admin.berita.index')->with('success','Berita berhasil diperbarui.'); + } + + // Hapus berita + public function destroy($id_berita) + { + $berita = Berita::findOrFail($id_berita); + if ($berita->gambar_berita) Storage::disk('public')->delete($berita->gambar_berita); + $berita->delete(); + return redirect()->route('admin.berita.index')->with('success','Berita berhasil dihapus.'); + } +} diff --git a/app/Http/Controllers/Admin/PengumumanController.php b/app/Http/Controllers/Admin/PengumumanController.php new file mode 100644 index 0000000..c065303 --- /dev/null +++ b/app/Http/Controllers/Admin/PengumumanController.php @@ -0,0 +1,82 @@ +get(); + return view('admin.pengumuman.index', compact('pengumuman')); + } + + public function create() + { + return view('admin.pengumuman.create'); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'judul_pengumuman' => 'required|string|max:255', + 'isi_pengumuman' => 'required|string', + 'tanggal_pengumuman' => 'required|date', + 'gambar_pengumuman' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); + + if ($validator->fails()) return redirect()->back()->withErrors($validator)->withInput(); + + $data = $request->only('judul_pengumuman','isi_pengumuman','tanggal_pengumuman'); + + if ($request->hasFile('gambar_pengumuman')) { + $data['gambar_pengumuman'] = $request->file('gambar_pengumuman')->store('pengumuman', 'public'); + } + + Pengumuman::create($data); + return redirect()->route('admin.pengumuman.index')->with('success','Pengumuman berhasil ditambahkan.'); + } + + public function edit($id_pengumuman) + { + $pengumuman = Pengumuman::findOrFail($id_pengumuman); + return view('admin.pengumuman.edit', compact('pengumuman')); + } + + public function update(Request $request, $id_pengumuman) + { + $pengumuman = Pengumuman::findOrFail($id_pengumuman); + + $validator = Validator::make($request->all(), [ + 'judul_pengumuman' => 'required|string|max:255', + 'isi_pengumuman' => 'required|string', + 'tanggal_pengumuman' => 'required|date', + 'gambar_pengumuman' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); + + if ($validator->fails()) return redirect()->back()->withErrors($validator)->withInput(); + + $data = $request->only('judul_pengumuman','isi_pengumuman','tanggal_pengumuman'); + + if ($request->hasFile('gambar_pengumuman')) { + if ($pengumuman->gambar_pengumuman) Storage::disk('public')->delete($pengumuman->gambar_pengumuman); + $data['gambar_pengumuman'] = $request->file('gambar_pengumuman')->store('pengumuman','public'); + } + + $pengumuman->update($data); + return redirect()->route('admin.pengumuman.index')->with('success','Pengumuman berhasil diperbarui.'); + } + + public function destroy($id_pengumuman) + { + $pengumuman = Pengumuman::findOrFail($id_pengumuman); + if ($pengumuman->gambar_pengumuman) Storage::disk('public')->delete($pengumuman->gambar_pengumuman); + $pengumuman->delete(); + return redirect()->route('admin.pengumuman.index')->with('success','Pengumuman berhasil dihapus.'); + } +} diff --git a/app/Models/Berita.php b/app/Models/Berita.php new file mode 100644 index 0000000..0de45bd --- /dev/null +++ b/app/Models/Berita.php @@ -0,0 +1,28 @@ +id('id_berita'); // ID khusus + $table->string('judul_berita'); // Judul berita + $table->text('isi_berita'); // Isi berita + $table->date('tanggal_berita'); // Tanggal berita + $table->string('gambar_berita')->nullable(); // Gambar berita opsional + $table->timestamps(); // created_at & updated_at + }); + } + + public function down() + { + Schema::dropIfExists('berita'); + } +}; diff --git a/database/migrations/2026_03_05_062643_create_pengumuman_table.php b/database/migrations/2026_03_05_062643_create_pengumuman_table.php new file mode 100644 index 0000000..cdce87b --- /dev/null +++ b/database/migrations/2026_03_05_062643_create_pengumuman_table.php @@ -0,0 +1,25 @@ +id('id_pengumuman'); // ID khusus + $table->string('judul_pengumuman'); // Judul pengumuman + $table->text('isi_pengumuman'); // Isi pengumuman + $table->date('tanggal_pengumuman'); // Tanggal pengumuman + $table->string('gambar_pengumuman')->nullable(); // Gambar opsional + $table->timestamps(); + }); + } + + public function down() + { + Schema::dropIfExists('pengumuman'); + } +}; diff --git a/resources/views/admin/berita/create.blade.php b/resources/views/admin/berita/create.blade.php new file mode 100644 index 0000000..3f4a4a7 --- /dev/null +++ b/resources/views/admin/berita/create.blade.php @@ -0,0 +1,89 @@ +@extends('admin.template') + +@section('title', 'Tambah Berita') + +@section('content') +
+
+
+
+
+ +

Tambah Berita

+

Form tambah data berita

+ +
+ @csrf + + {{-- JUDUL BERITA --}} +
+ + + @error('judul_berita') + {{ $message }} + @enderror +
+ + {{-- TANGGAL BERITA --}} +
+ + + @error('tanggal_berita') + {{ $message }} + @enderror +
+ + {{-- ISI BERITA --}} +
+ + + @error('isi_berita') + {{ $message }} + @enderror +
+ + {{-- GAMBAR BERITA --}} +
+ + + +
+ + + + +
+ + @error('gambar_berita') + {{ $message }} + @enderror +
+ + + Batal +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/admin/berita/edit.blade.php b/resources/views/admin/berita/edit.blade.php new file mode 100644 index 0000000..7d67206 --- /dev/null +++ b/resources/views/admin/berita/edit.blade.php @@ -0,0 +1,103 @@ +@extends('admin.template') + +@section('title', 'Edit Berita') + +@section('content') +
+
+
+
+
+ +

Edit Berita

+

Form edit data berita

+ +
+ @csrf + @method('PUT') + + {{-- JUDUL BERITA --}} +
+ + + @error('judul_berita') + {{ $message }} + @enderror +
+ + {{-- TANGGAL BERITA --}} +
+ + + @error('tanggal_berita') + {{ $message }} + @enderror +
+ + {{-- ISI BERITA --}} +
+ + + @error('isi_berita') + {{ $message }} + @enderror +
+ + {{-- GAMBAR BERITA --}} +
+ + + +
+ + + + +
+ + @error('gambar_berita') + {{ $message }} + @enderror + + {{-- PREVIEW GAMBAR LAMA --}} + @if ($berita->gambar_berita) +
+ +
+ @endif +
+ + + Batal +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/admin/berita/index.blade.php b/resources/views/admin/berita/index.blade.php new file mode 100644 index 0000000..95ba16d --- /dev/null +++ b/resources/views/admin/berita/index.blade.php @@ -0,0 +1,128 @@ +@extends('admin.template') + +@section('title', 'Data Berita') + +@section('content') + + +
+
+
+
+
+
+
+

Data Berita

+

+ Daftar semua berita yang tersedia +

+
+ + Tambah + +
+ +
+ + + + + + + + + + + + @foreach ($berita as $item) + + + + + + + + @endforeach + +
JudulGambarIsiTanggalAksi
{{ $item->judul_berita }} + @if ($item->gambar_berita) + Gambar Berita + @else + - + @endif + +
+ {{ Str::limit($item->isi_berita, 150, '...') }} +
+
{{ \Carbon\Carbon::parse($item->tanggal_berita)->format('d M Y') }} + + + +
+ @csrf + @method('DELETE') + +
+
+
+ +
+
+
+
+
+ + + +@if (session('success')) + +@endif +@endsection diff --git a/resources/views/admin/kategori-tps/create.blade.php b/resources/views/admin/kategori-tps/create.blade.php index ffea1fd..6493036 100644 --- a/resources/views/admin/kategori-tps/create.blade.php +++ b/resources/views/admin/kategori-tps/create.blade.php @@ -92,3 +92,4 @@ class="form-control file-upload-info" @endsection + diff --git a/resources/views/admin/pengumuman/create.blade.php b/resources/views/admin/pengumuman/create.blade.php new file mode 100644 index 0000000..d987494 --- /dev/null +++ b/resources/views/admin/pengumuman/create.blade.php @@ -0,0 +1,89 @@ +@extends('admin.template') + +@section('title', 'Tambah Pengumuman') + +@section('content') +
+
+
+
+
+ +

Tambah Pengumuman

+

Form tambah data pengumuman

+ +
+ @csrf + + {{-- JUDUL PENGUMUMAN --}} +
+ + + @error('judul_pengumuman') + {{ $message }} + @enderror +
+ + {{-- TANGGAL PENGUMUMAN --}} +
+ + + @error('tanggal_pengumuman') + {{ $message }} + @enderror +
+ + {{-- ISI PENGUMUMAN --}} +
+ + + @error('isi_pengumuman') + {{ $message }} + @enderror +
+ + {{-- GAMBAR PENGUMUMAN --}} +
+ + + +
+ + + + +
+ + @error('gambar_pengumuman') + {{ $message }} + @enderror +
+ + + Batal +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/admin/pengumuman/edit.blade.php b/resources/views/admin/pengumuman/edit.blade.php new file mode 100644 index 0000000..2a7b50a --- /dev/null +++ b/resources/views/admin/pengumuman/edit.blade.php @@ -0,0 +1,103 @@ +@extends('admin.template') + +@section('title', 'Edit Pengumuman') + +@section('content') +
+
+
+
+
+ +

Edit Pengumuman

+

Form edit data pengumuman

+ +
+ @csrf + @method('PUT') + + {{-- JUDUL PENGUMUMAN --}} +
+ + + @error('judul_pengumuman') + {{ $message }} + @enderror +
+ + {{-- TANGGAL PENGUMUMAN --}} +
+ + + @error('tanggal_pengumuman') + {{ $message }} + @enderror +
+ + {{-- ISI PENGUMUMAN --}} +
+ + + @error('isi_pengumuman') + {{ $message }} + @enderror +
+ + {{-- GAMBAR PENGUMUMAN --}} +
+ + + +
+ + + + +
+ + @error('gambar_pengumuman') + {{ $message }} + @enderror + + {{-- PREVIEW GAMBAR LAMA --}} + @if ($pengumuman->gambar_pengumuman) +
+ +
+ @endif +
+ + + Batal +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/admin/pengumuman/index.blade.php b/resources/views/admin/pengumuman/index.blade.php new file mode 100644 index 0000000..14bf998 --- /dev/null +++ b/resources/views/admin/pengumuman/index.blade.php @@ -0,0 +1,128 @@ +@extends('admin.template') + +@section('title', 'Data Pengumuman') + +@section('content') + + +
+
+
+
+
+
+
+

Data Pengumuman

+

+ Daftar semua pengumuman yang tersedia +

+
+ + Tambah + +
+ +
+ + + + + + + + + + + + @foreach ($pengumuman as $item) + + + + + + + + @endforeach + +
JudulGambarIsiTanggalAksi
{{ $item->judul_pengumuman }} + @if ($item->gambar_pengumuman) + Gambar Pengumuman + @else + - + @endif + +
+ {{ Str::limit($item->isi_pengumuman, 150, '...') }} +
+
{{ \Carbon\Carbon::parse($item->tanggal_pengumuman)->format('d M Y') }} + + + +
+ @csrf + @method('DELETE') + +
+
+
+ +
+
+
+
+
+ + + +@if (session('success')) + +@endif +@endsection diff --git a/resources/views/admin/template.blade.php b/resources/views/admin/template.blade.php index 7ecca07..d2c00a8 100644 --- a/resources/views/admin/template.blade.php +++ b/resources/views/admin/template.blade.php @@ -119,6 +119,18 @@ Kelola Aduan + + diff --git a/resources/views/user/index.blade.php b/resources/views/user/index.blade.php index ef93d75..0aefd1a 100644 --- a/resources/views/user/index.blade.php +++ b/resources/views/user/index.blade.php @@ -170,7 +170,7 @@ class="img-fluid" alt="{{ $item->nama_kategori }}"> @endif - +

{{ $item->kepanjangan_kategori }}

diff --git a/resources/views/user/template.blade.php b/resources/views/user/template.blade.php index 698e365..1f63dcc 100644 --- a/resources/views/user/template.blade.php +++ b/resources/views/user/template.blade.php @@ -69,15 +69,6 @@ class="{{ Request::is('about/' . $kategori->id_kategori_tps) ? 'active' : '' }}" - - -
  • - - Sebaran TPS - -
  • -
  • @@ -85,6 +76,20 @@ class="{{ Request::routeIs('user.aduan') ? 'active' : '' }}">
  • +
  • + + Berita + +
  • + +
  • + + Pengumuman + +
  • +
  • diff --git a/routes/web.php b/routes/web.php index 4f9c153..67c6bc6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,6 +13,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\ProfilController; /* @@ -68,6 +70,9 @@ 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']); + // PROFIL Route::get('/profil', [ProfilController::class, 'index'])->name('profil'); Route::post('/profil', [ProfilController::class, 'update'])->name('profil.update');