tambah berita dan pengumuman

This commit is contained in:
rahmagustin 2026-03-05 18:38:20 +07:00
parent e0119a4ff0
commit d59c9faaf0
17 changed files with 951 additions and 10 deletions

View File

@ -0,0 +1,90 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Berita;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
class BeritaController extends Controller
{
// Menampilkan semua berita
public function index()
{
$berita = Berita::orderBy('tanggal_berita', 'desc')->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.');
}
}

View File

@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Pengumuman;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
class PengumumanController extends Controller
{
public function index()
{
$pengumuman = Pengumuman::orderBy('tanggal_pengumuman', 'desc')->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.');
}
}

28
app/Models/Berita.php Normal file
View File

@ -0,0 +1,28 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Berita extends Model
{
// Nama tabel
protected $table = 'berita';
// Nama primary key custom
protected $primaryKey = 'id_berita';
// Mass assignable fields
protected $fillable = [
'judul_berita',
'isi_berita',
'tanggal_berita',
'gambar_berita',
];
// Primary key auto increment
public $incrementing = true;
// Tipe primary key
protected $keyType = 'int';
}

28
app/Models/Pengumuman.php Normal file
View File

@ -0,0 +1,28 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Pengumuman extends Model
{
// Nama tabel
protected $table = 'pengumuman';
// Primary key custom
protected $primaryKey = 'id_pengumuman';
// Mass assignable fields
protected $fillable = [
'judul_pengumuman',
'isi_pengumuman',
'tanggal_pengumuman',
'gambar_pengumuman',
];
// Primary key auto increment
public $incrementing = true;
// Tipe primary key
protected $keyType = 'int';
}

View File

@ -0,0 +1,25 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create('berita', function (Blueprint $table) {
$table->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');
}
};

View File

@ -0,0 +1,25 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create('pengumuman', function (Blueprint $table) {
$table->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');
}
};

View File

@ -0,0 +1,89 @@
@extends('admin.template')
@section('title', 'Tambah Berita')
@section('content')
<div class="content-wrapper">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">Tambah Berita</h4>
<p class="card-description">Form tambah data berita</p>
<form action="{{ route('admin.berita.store') }}" method="POST" enctype="multipart/form-data">
@csrf
{{-- JUDUL BERITA --}}
<div class="form-group">
<label>Judul Berita</label>
<input type="text"
name="judul_berita"
class="form-control @error('judul_berita') is-invalid @enderror"
placeholder="Judul Berita"
value="{{ old('judul_berita') }}">
@error('judul_berita')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- TANGGAL BERITA --}}
<div class="form-group">
<label>Tanggal Berita</label>
<input type="date"
name="tanggal_berita"
class="form-control @error('tanggal_berita') is-invalid @enderror"
value="{{ old('tanggal_berita') }}">
@error('tanggal_berita')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- ISI BERITA --}}
<div class="form-group">
<label>Isi Berita</label>
<textarea name="isi_berita"
class="form-control @error('isi_berita') is-invalid @enderror"
rows="6"
placeholder="Isi Berita">{{ old('isi_berita') }}</textarea>
@error('isi_berita')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- GAMBAR BERITA --}}
<div class="form-group">
<label>Gambar Berita</label>
<input type="file"
name="gambar_berita"
id="gambar_berita"
class="file-upload-default @error('gambar_berita') is-invalid @enderror">
<div class="input-group col-xs-12">
<input type="text"
class="form-control file-upload-info"
disabled
placeholder="Upload Gambar">
<span class="input-group-append">
<button class="file-upload-browse btn btn-primary" type="button">
Upload
</button>
</span>
</div>
@error('gambar_berita')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
<a href="{{ route('admin.berita.index') }}" class="btn btn-light">Batal</a>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,103 @@
@extends('admin.template')
@section('title', 'Edit Berita')
@section('content')
<div class="content-wrapper">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">Edit Berita</h4>
<p class="card-description">Form edit data berita</p>
<form action="{{ route('admin.berita.update', $berita->id_berita) }}"
method="POST"
enctype="multipart/form-data">
@csrf
@method('PUT')
{{-- JUDUL BERITA --}}
<div class="form-group">
<label>Judul Berita</label>
<input type="text"
name="judul_berita"
class="form-control @error('judul_berita') is-invalid @enderror"
value="{{ old('judul_berita', $berita->judul_berita) }}"
required>
@error('judul_berita')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- TANGGAL BERITA --}}
<div class="form-group">
<label>Tanggal Berita</label>
<input type="date"
name="tanggal_berita"
class="form-control @error('tanggal_berita') is-invalid @enderror"
value="{{ old('tanggal_berita', $berita->tanggal_berita) }}"
required>
@error('tanggal_berita')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- ISI BERITA --}}
<div class="form-group">
<label>Isi Berita</label>
<textarea name="isi_berita"
rows="6"
class="form-control @error('isi_berita') is-invalid @enderror"
placeholder="Isi Berita">{{ old('isi_berita', $berita->isi_berita) }}</textarea>
@error('isi_berita')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- GAMBAR BERITA --}}
<div class="form-group">
<label>Gambar Berita</label>
<input type="file"
name="gambar_berita"
id="gambar_berita"
class="file-upload-default @error('gambar_berita') is-invalid @enderror"
accept="image/*">
<div class="input-group col-xs-12">
<input type="text"
class="form-control file-upload-info"
disabled
placeholder="Upload Gambar">
<span class="input-group-append">
<button class="file-upload-browse btn btn-primary" type="button">
Upload
</button>
</span>
</div>
@error('gambar_berita')
<small class="text-danger">{{ $message }}</small>
@enderror
{{-- PREVIEW GAMBAR LAMA --}}
@if ($berita->gambar_berita)
<div class="mt-2">
<img src="{{ asset('storage/' . $berita->gambar_berita) }}"
width="250"
class="img-thumbnail">
</div>
@endif
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
<a href="{{ route('admin.berita.index') }}" class="btn btn-light">Batal</a>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,128 @@
@extends('admin.template')
@section('title', 'Data Berita')
@section('content')
<style>
.deskripsi-truncate-div {
max-width: 300px;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.table td {
vertical-align: top;
}
</style>
<div class="content-wrapper">
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<div class="mb-3 d-flex justify-content-between">
<div>
<h4 class="mb-0 card-title">Data Berita</h4>
<p class="mb-0 card-description">
Daftar semua berita yang tersedia
</p>
</div>
<a href="{{ route('admin.berita.create') }}" class="btn btn-primary">
<i class="bi bi-plus-lg"></i> Tambah
</a>
</div>
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Judul</th>
<th>Gambar</th>
<th>Isi</th>
<th>Tanggal</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@foreach ($berita as $item)
<tr>
<td>{{ $item->judul_berita }}</td>
<td>
@if ($item->gambar_berita)
<img src="{{ asset('storage/' . $item->gambar_berita) }}"
alt="Gambar Berita"
style="width:200px; height:auto; border-radius:2px;">
@else
<span class="text-muted">-</span>
@endif
</td>
<td>
<div class="text-justify deskripsi-truncate-div">
{{ Str::limit($item->isi_berita, 150, '...') }}
</div>
</td>
<td>{{ \Carbon\Carbon::parse($item->tanggal_berita)->format('d M Y') }}</td>
<td class="text-center">
<a href="{{ route('admin.berita.edit', $item->id_berita) }}"
class="btn btn-warning btn-sm me-1" title="Edit">
<i class="bi bi-pencil-square"></i>
</a>
<form action="{{ route('admin.berita.destroy', $item->id_berita) }}"
method="POST" class="form-hapus" style="display:inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger btn-sm">
<i class="bi bi-trash"></i>
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
document.querySelectorAll('.form-hapus').forEach(form => {
form.addEventListener('submit', function(e) {
e.preventDefault();
Swal.fire({
title: 'Hapus Data Berita?',
text: 'Data yang sudah dihapus tidak dapat dikembalikan!',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#d33',
cancelButtonColor: '#6c757d',
confirmButtonText: 'Ya, Hapus',
cancelButtonText: 'Batal',
didOpen: () => {
document.querySelector('.swal2-popup').style.fontFamily = 'Nunito, sans-serif';
}
}).then((result) => {
if (result.isConfirmed) {
form.submit();
}
});
});
});
</script>
@if (session('success'))
<script>
Swal.fire({
icon: 'success',
title: 'Berhasil',
text: '{{ session('success') }}',
timer: 2000,
showConfirmButton: false
});
</script>
@endif
@endsection

View File

@ -92,3 +92,4 @@ class="form-control file-upload-info"
</div>
</div>
@endsection

View File

@ -0,0 +1,89 @@
@extends('admin.template')
@section('title', 'Tambah Pengumuman')
@section('content')
<div class="content-wrapper">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">Tambah Pengumuman</h4>
<p class="card-description">Form tambah data pengumuman</p>
<form action="{{ route('admin.pengumuman.store') }}" method="POST" enctype="multipart/form-data">
@csrf
{{-- JUDUL PENGUMUMAN --}}
<div class="form-group">
<label>Judul Pengumuman</label>
<input type="text"
name="judul_pengumuman"
class="form-control @error('judul_pengumuman') is-invalid @enderror"
placeholder="Judul Pengumuman"
value="{{ old('judul_pengumuman') }}">
@error('judul_pengumuman')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- TANGGAL PENGUMUMAN --}}
<div class="form-group">
<label>Tanggal Pengumuman</label>
<input type="date"
name="tanggal_pengumuman"
class="form-control @error('tanggal_pengumuman') is-invalid @enderror"
value="{{ old('tanggal_pengumuman') }}">
@error('tanggal_pengumuman')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- ISI PENGUMUMAN --}}
<div class="form-group">
<label>Isi Pengumuman</label>
<textarea name="isi_pengumuman"
class="form-control @error('isi_pengumuman') is-invalid @enderror"
rows="6"
placeholder="Isi Pengumuman">{{ old('isi_pengumuman') }}</textarea>
@error('isi_pengumuman')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- GAMBAR PENGUMUMAN --}}
<div class="form-group">
<label>Gambar Pengumuman</label>
<input type="file"
name="gambar_pengumuman"
id="gambar_pengumuman"
class="file-upload-default @error('gambar_pengumuman') is-invalid @enderror">
<div class="input-group col-xs-12">
<input type="text"
class="form-control file-upload-info"
disabled
placeholder="Upload Gambar">
<span class="input-group-append">
<button class="file-upload-browse btn btn-primary" type="button">
Upload
</button>
</span>
</div>
@error('gambar_pengumuman')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
<a href="{{ route('admin.pengumuman.index') }}" class="btn btn-light">Batal</a>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,103 @@
@extends('admin.template')
@section('title', 'Edit Pengumuman')
@section('content')
<div class="content-wrapper">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">Edit Pengumuman</h4>
<p class="card-description">Form edit data pengumuman</p>
<form action="{{ route('admin.pengumuman.update', $pengumuman->id_pengumuman) }}"
method="POST"
enctype="multipart/form-data">
@csrf
@method('PUT')
{{-- JUDUL PENGUMUMAN --}}
<div class="form-group">
<label>Judul Pengumuman</label>
<input type="text"
name="judul_pengumuman"
class="form-control @error('judul_pengumuman') is-invalid @enderror"
value="{{ old('judul_pengumuman', $pengumuman->judul_pengumuman) }}"
required>
@error('judul_pengumuman')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- TANGGAL PENGUMUMAN --}}
<div class="form-group">
<label>Tanggal Pengumuman</label>
<input type="date"
name="tanggal_pengumuman"
class="form-control @error('tanggal_pengumuman') is-invalid @enderror"
value="{{ old('tanggal_pengumuman', $pengumuman->tanggal_pengumuman) }}"
required>
@error('tanggal_pengumuman')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- ISI PENGUMUMAN --}}
<div class="form-group">
<label>Isi Pengumuman</label>
<textarea name="isi_pengumuman"
rows="6"
class="form-control @error('isi_pengumuman') is-invalid @enderror"
placeholder="Isi Pengumuman">{{ old('isi_pengumuman', $pengumuman->isi_pengumuman) }}</textarea>
@error('isi_pengumuman')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
{{-- GAMBAR PENGUMUMAN --}}
<div class="form-group">
<label>Gambar Pengumuman</label>
<input type="file"
name="gambar_pengumuman"
id="gambar_pengumuman"
class="file-upload-default @error('gambar_pengumuman') is-invalid @enderror"
accept="image/*">
<div class="input-group col-xs-12">
<input type="text"
class="form-control file-upload-info"
disabled
placeholder="Upload Gambar">
<span class="input-group-append">
<button class="file-upload-browse btn btn-primary" type="button">
Upload
</button>
</span>
</div>
@error('gambar_pengumuman')
<small class="text-danger">{{ $message }}</small>
@enderror
{{-- PREVIEW GAMBAR LAMA --}}
@if ($pengumuman->gambar_pengumuman)
<div class="mt-2">
<img src="{{ asset('storage/' . $pengumuman->gambar_pengumuman) }}"
width="250"
class="img-thumbnail">
</div>
@endif
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
<a href="{{ route('admin.pengumuman.index') }}" class="btn btn-light">Batal</a>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,128 @@
@extends('admin.template')
@section('title', 'Data Pengumuman')
@section('content')
<style>
.deskripsi-truncate-div {
max-width: 300px;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.table td {
vertical-align: top;
}
</style>
<div class="content-wrapper">
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<div class="mb-3 d-flex justify-content-between">
<div>
<h4 class="mb-0 card-title">Data Pengumuman</h4>
<p class="mb-0 card-description">
Daftar semua pengumuman yang tersedia
</p>
</div>
<a href="{{ route('admin.pengumuman.create') }}" class="btn btn-primary">
<i class="bi bi-plus-lg"></i> Tambah
</a>
</div>
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Judul</th>
<th>Gambar</th>
<th>Isi</th>
<th>Tanggal</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@foreach ($pengumuman as $item)
<tr>
<td>{{ $item->judul_pengumuman }}</td>
<td>
@if ($item->gambar_pengumuman)
<img src="{{ asset('storage/' . $item->gambar_pengumuman) }}"
alt="Gambar Pengumuman"
style="width:200px; height:auto; border-radius:2px;">
@else
<span class="text-muted">-</span>
@endif
</td>
<td>
<div class="text-justify deskripsi-truncate-div">
{{ Str::limit($item->isi_pengumuman, 150, '...') }}
</div>
</td>
<td>{{ \Carbon\Carbon::parse($item->tanggal_pengumuman)->format('d M Y') }}</td>
<td class="text-center">
<a href="{{ route('admin.pengumuman.edit', $item->id_pengumuman) }}"
class="btn btn-warning btn-sm me-1" title="Edit">
<i class="bi bi-pencil-square"></i>
</a>
<form action="{{ route('admin.pengumuman.destroy', $item->id_pengumuman) }}"
method="POST" class="form-hapus" style="display:inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger btn-sm">
<i class="bi bi-trash"></i>
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
document.querySelectorAll('.form-hapus').forEach(form => {
form.addEventListener('submit', function(e) {
e.preventDefault();
Swal.fire({
title: 'Hapus Data Pengumuman?',
text: 'Data yang sudah dihapus tidak dapat dikembalikan!',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#d33',
cancelButtonColor: '#6c757d',
confirmButtonText: 'Ya, Hapus',
cancelButtonText: 'Batal',
didOpen: () => {
document.querySelector('.swal2-popup').style.fontFamily = 'Nunito, sans-serif';
}
}).then((result) => {
if (result.isConfirmed) {
form.submit();
}
});
});
});
</script>
@if (session('success'))
<script>
Swal.fire({
icon: 'success',
title: 'Berhasil',
text: '{{ session('success') }}',
timer: 2000,
showConfirmButton: false
});
</script>
@endif
@endsection

View File

@ -119,6 +119,18 @@
<span class="menu-title">Kelola Aduan</span>
</a>
</li>
<li class="nav-item {{ request()->routeIs('admin.berita.index') ? 'active' : '' }}">
<a class="nav-link" href="{{ route('admin.berita.index') }}">
<i class="icon-mail menu-icon"></i>
<span class="menu-title">Kelola Berita</span>
</a>
</li>
<li class="nav-item {{ request()->routeIs('admin.pengumuman.index') ? 'active' : '' }}">
<a class="nav-link" href="{{ route('admin.pengumuman.index') }}">
<i class="icon-mail menu-icon"></i>
<span class="menu-title">Kelola Pengumuman</span>
</a>
</li>
</ul>
</nav>

View File

@ -170,7 +170,7 @@ class="img-fluid" alt="{{ $item->nama_kategori }}">
@endif
</div>
<a href="#" class="stretched-link">
<a href="{{ route('user.about.kategori', ['id' => $item->id_kategori_tps]) }}" class="stretched-link">
<h3>{{ $item->kepanjangan_kategori }}</h3>
</a>

View File

@ -69,15 +69,6 @@ class="{{ Request::is('about/' . $kategori->id_kategori_tps) ? 'active' : '' }}"
</ul>
</li>
<li>
<a href="{{ route('user.sig-tps') }}"
class="{{ Request::routeIs('user.sig-tps') ? 'active' : '' }}">
Sebaran TPS
</a>
</li>
<li>
<a href="{{ route('user.aduan') }}"
class="{{ Request::routeIs('user.aduan') ? 'active' : '' }}">
@ -85,6 +76,20 @@ class="{{ Request::routeIs('user.aduan') ? 'active' : '' }}">
</a>
</li>
<li>
<a href="{{ route('user.sig-tps') }}"
class="{{ Request::routeIs('user.sig-tps') ? 'active' : '' }}">
Berita
</a>
</li>
<li>
<a href="{{ route('user.sig-tps') }}"
class="{{ Request::routeIs('user.sig-tps') ? 'active' : '' }}">
Pengumuman
</a>
</li>
<li>
<a href="{{ route('user.kontak') }}"
class="{{ Request::routeIs('user.kontak') ? 'active' : '' }}">

View File

@ -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');