feat: news
This commit is contained in:
parent
3ff970391c
commit
298092be84
@ -2,6 +2,7 @@
|
||||
|
||||
use Hashids\Hashids;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
// Template
|
||||
@ -11,9 +12,9 @@
|
||||
// }
|
||||
|
||||
if (! function_exists('store_file')) {
|
||||
function store_file($file, $path, $disk = 'public')
|
||||
function store_file($file = null, $path, $disk = 'public')
|
||||
{
|
||||
if (isset($file)) {
|
||||
if ($file && $file instanceof \Illuminate\Http\UploadedFile) {
|
||||
$randomFilename = Str::random(35).time().'.'.$file->getClientOriginalExtension();
|
||||
$originalFileName = Str::slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)).'.'.$file->getClientOriginalExtension();
|
||||
|
||||
@ -34,6 +35,19 @@ function store_file($file, $path, $disk = 'public')
|
||||
}
|
||||
}
|
||||
|
||||
if (! function_exists('delete_file')) {
|
||||
function delete_file($path)
|
||||
{
|
||||
if (File::exists(storage_path($path))) {
|
||||
File::delete(storage_path($path));
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_role_name')) {
|
||||
function get_role_name($role = null) {
|
||||
|
||||
|
||||
@ -33,12 +33,12 @@ public function store(ClassificationRequest $request){
|
||||
if($createdClassification){
|
||||
return redirect()->back()->with('success-status', 'Berhasil menambahkan klasifikasi.');
|
||||
}else{
|
||||
return redirect()->back()->with('failed-status', 'Gagal menambahkan klasifikasi');
|
||||
return redirect()->back()->with('failed-status', 'Gagal menambahkan klasifikasi.');
|
||||
}
|
||||
}
|
||||
|
||||
public function edit($id){
|
||||
$classification = Classification::find(decrypt_id($id));
|
||||
$classification = Classification::findOrFail(decrypt_id($id));
|
||||
|
||||
return view('dashboard.classifications.edit', [
|
||||
'title' => 'Ubah Klasifikasi',
|
||||
@ -51,13 +51,13 @@ public function update(ClassificationRequest $request, $id){
|
||||
$validatedData['slug'] = Str::slug($validatedData['name']);
|
||||
$validatedData['enhancer_id'] = Auth::id();
|
||||
|
||||
$classification = Classification::find(decrypt_id($id));
|
||||
$classification = Classification::findOrFail(decrypt_id($id));
|
||||
$updatedClassification = $classification->update($validatedData);
|
||||
|
||||
if($updatedClassification){
|
||||
return redirect()->back()->with('success-status', 'Berhasil mengubah klasifikasi.');
|
||||
}else{
|
||||
return redirect()->back()->with('failed-status', 'Gagal mengubah klasifikasi');
|
||||
return redirect()->back()->with('failed-status', 'Gagal mengubah klasifikasi.');
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ public function destroy($id){
|
||||
|
||||
$classification->delete();
|
||||
|
||||
return response()->json(['message' => 'Berhasil menghapus klasifikasi']);
|
||||
return response()->json(['message' => 'Berhasil menghapus klasifikasi.']);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['message' => 'Gagal menghapus klasifikasi.'], 500);
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Classification;
|
||||
use App\Models\GovernmentAgency;
|
||||
use App\Models\News;
|
||||
use App\Models\SubClassification;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@ -185,4 +186,64 @@ public function governmentAgency(Request $request){
|
||||
return response()->json(['error' => 'Unauthorized'], 401);
|
||||
|
||||
}
|
||||
|
||||
public function news(Request $request){
|
||||
if ($request->ajax()) {
|
||||
$data = News::all();
|
||||
|
||||
return DataTables::of($data)
|
||||
->addIndexColumn()
|
||||
->addColumn('title', function ($data) {
|
||||
return shorten_text($data->title, 50);
|
||||
})
|
||||
->addColumn('link', function ($data) {
|
||||
if ($data->link != null) {
|
||||
return '<a href="'.$data->link.'" target="_blank">'.$data->link.'</a>';
|
||||
}else{
|
||||
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak ada link</span>';
|
||||
}
|
||||
})
|
||||
->addColumn('category', function ($data) {
|
||||
if ($data->category == '0') {
|
||||
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Berita</span>';
|
||||
}else{
|
||||
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Pengumuman</span>';
|
||||
}
|
||||
})
|
||||
->addColumn('action', function ($data) {
|
||||
$showUrl = route('dashboard.news.show', ['id' => encrypt_id($data->id)]);
|
||||
|
||||
$editUrl = route('dashboard.news.edit', ['id' => encrypt_id($data->id)]);
|
||||
|
||||
$deleteUrl = route('dashboard.news.destroy', ['id' => encrypt_id($data->id)]);
|
||||
|
||||
$dropdown = '<div class="dropdown" style="display:flex; justify-content:center;">
|
||||
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
||||
<div class="dropdown-menu dropdown-menu-end">
|
||||
<ul class="link-list-opt">
|
||||
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
||||
|
||||
if (is_role([1])) {
|
||||
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
||||
}
|
||||
|
||||
if (is_role([1])) {
|
||||
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus berita '.$data->title.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
||||
|
||||
}
|
||||
|
||||
$dropdown .= '</ul>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
return $dropdown;
|
||||
})
|
||||
|
||||
->rawColumns(['link', 'category', 'action'])
|
||||
->make(true);
|
||||
}
|
||||
|
||||
return response()->json(['error' => 'Unauthorized'], 401);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ public function store(GovernmentAgencyRequest $request){
|
||||
}
|
||||
|
||||
public function edit($id){
|
||||
$governmentAgency = GovernmentAgency::find(decrypt_id($id));
|
||||
$governmentAgency = GovernmentAgency::findOrFail(decrypt_id($id));
|
||||
|
||||
return view('dashboard.government-agencies.edit',[
|
||||
'title' => 'Ubah OPD',
|
||||
|
||||
97
app/Http/Controllers/Dashboard/NewsController.php
Normal file
97
app/Http/Controllers/Dashboard/NewsController.php
Normal file
@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Dashboard;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\NewsRequest;
|
||||
use App\Models\News;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class NewsController extends Controller
|
||||
{
|
||||
public function index(){
|
||||
return view('dashboard.news.index', [
|
||||
'title' => 'Berita'
|
||||
]);
|
||||
}
|
||||
|
||||
public function create(){
|
||||
return view('dashboard.news.create', [
|
||||
'title' => 'Tambah Berita'
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(NewsRequest $request){
|
||||
$validatedData = $request->validated();
|
||||
$validatedData['image'] = store_file($validatedData['image'], '/uploads/news', 'public')['randomFileName'];
|
||||
$validatedData['slug'] = Str::slug($validatedData['title']);
|
||||
$validatedData['author_id'] = Auth::id();
|
||||
|
||||
|
||||
$createdNews = News::create($validatedData);
|
||||
|
||||
if($createdNews){
|
||||
return redirect()->back()->with('success-status', 'Berhasil menambahkan berita.');
|
||||
}else{
|
||||
return redirect()->back()->with('failed-status', 'Gagal menambahkan berita.');
|
||||
}
|
||||
}
|
||||
|
||||
public function edit($id){
|
||||
$news = News::findOrFail(decrypt_id($id));
|
||||
|
||||
return view('dashboard.news.edit', [
|
||||
'title' => 'Ubah Berita',
|
||||
'news' => $news
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(NewsRequest $request, $id){
|
||||
$validatedData = $request->validated();
|
||||
|
||||
$news = News::findOrFail(decrypt_id($id));
|
||||
|
||||
if($request->has('image')){
|
||||
delete_file('app/public/uploads/news/'.$news->image);
|
||||
$validatedData['image'] = store_file($validatedData['image'], '/uploads/news', 'public')['randomFileName'];
|
||||
}else{
|
||||
$validatedData['image'] = $news->image;
|
||||
}
|
||||
|
||||
$validatedData['slug'] = Str::slug($validatedData['title']);
|
||||
$validatedData['author_id'] = Auth::id();
|
||||
|
||||
$news = News::findOrFail(decrypt_id($id));
|
||||
$updatedNews = $news->update($validatedData);
|
||||
|
||||
if($updatedNews){
|
||||
return redirect()->back()->with('success-status', 'Berhasil mengubah berita.');
|
||||
}else{
|
||||
return redirect()->back()->with('failed-status', 'Gagal mengubah berita.');
|
||||
}
|
||||
}
|
||||
|
||||
public function show($id){
|
||||
$news = News::findOrFail(decrypt_id($id));
|
||||
|
||||
return view('dashboard.news.show', [
|
||||
'title' => 'Detail Berita',
|
||||
'news' => $news
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy($id){
|
||||
try {
|
||||
$news = News::findOrFail(decrypt_id($id));
|
||||
delete_file('app/public/uploads/news/'.$news->image);
|
||||
$news->delete();
|
||||
|
||||
|
||||
return response()->json(['message' => 'Berhasil menghapus berita.']);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['message' => 'Gagal menghapus berita.'], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -50,12 +50,12 @@ public function store(SubClassificationRequest $request){
|
||||
if($createdSubClassification){
|
||||
return redirect()->back()->with('success-status', 'Berhasil menambahkan sub klasifikasi.');
|
||||
}else{
|
||||
return redirect()->back()->with('failed-status', 'Gagal menambahkan sub klasifikasi');
|
||||
return redirect()->back()->with('failed-status', 'Gagal menambahkan sub klasifikasi.');
|
||||
}
|
||||
}
|
||||
|
||||
public function edit($id){
|
||||
$subClassification = SubClassification::find(decrypt_id($id));
|
||||
$subClassification = SubClassification::findOrFail(decrypt_id($id));
|
||||
|
||||
return view('dashboard.sub-classifications.edit', [
|
||||
'title' => 'Ubah Sub Klasifikasi',
|
||||
@ -69,13 +69,13 @@ public function update(SubClassificationRequest $request, $id){
|
||||
$validatedData['slug'] = Str::slug($validatedData['name']);
|
||||
$validatedData['enhancer_id'] = Auth::id();
|
||||
|
||||
$subClassification = SubClassification::find(decrypt_id($id));
|
||||
$subClassification = SubClassification::findOrFail(decrypt_id($id));
|
||||
$updatedSubClassification = $subClassification->update($validatedData);
|
||||
|
||||
if($updatedSubClassification){
|
||||
return redirect()->back()->with('success-status', 'Berhasil mengubah sub klasifikasi.');
|
||||
}else{
|
||||
return redirect()->back()->with('failed-status', 'Gagal mengubah sub klasifikasi');
|
||||
return redirect()->back()->with('failed-status', 'Gagal mengubah sub klasifikasi.');
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ public function destroy($id){
|
||||
|
||||
$subClassification->delete();
|
||||
|
||||
return response()->json(['message' => 'Berhasil menghapus sub klasifikasi']);
|
||||
return response()->json(['message' => 'Berhasil menghapus sub klasifikasi.']);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['message' => 'Gagal menghapus sub klasifikasi.'], 500);
|
||||
}
|
||||
|
||||
58
app/Http/Requests/NewsRequest.php
Normal file
58
app/Http/Requests/NewsRequest.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class NewsRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return Auth::check() && is_role(['1']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$rules = [
|
||||
'title' => ['required' , 'max:200'],
|
||||
'content' => ['required'],
|
||||
'link' => ['nullable', 'url'],
|
||||
'tag' => ['nullable'],
|
||||
'category' => ['required', 'in:0,1'],
|
||||
];
|
||||
|
||||
if($this->isMethod('post')){
|
||||
$rules['image'] = ['required', 'image', 'mimes:png,jpg,jpeg', 'max:4096'];
|
||||
}else if($this->isMethod('put')){
|
||||
$rules['image'] = ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:4096'];
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function messages(): array
|
||||
{
|
||||
return [
|
||||
'title.required' => 'Judul harus diisi.',
|
||||
'title.max' => 'Judul tidak boleh lebih dari 200 karakter.',
|
||||
'content.required' => 'Konten harus diisi.',
|
||||
'link.url' => 'Harus link valid.',
|
||||
'category.required' => 'Kategori harus dipilih.',
|
||||
'category.in' => 'Kategori harus bernilai berita atau pengumuman.',
|
||||
|
||||
'image.required' => 'Gambar wajib diunggah.',
|
||||
'image.image' => 'File yang diunggah harus berupa gambar.',
|
||||
'image.mimes' => 'Format gambar yang diperbolehkan adalah PNG, JPG, atau JPEG.',
|
||||
'image.max' => 'Ukuran gambar tidak boleh lebih dari 4MB.',
|
||||
];
|
||||
}
|
||||
}
|
||||
21
app/Models/News.php
Normal file
21
app/Models/News.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class News extends Model
|
||||
{
|
||||
protected $table = 'news';
|
||||
|
||||
protected $fillable = [
|
||||
'title',
|
||||
'slug',
|
||||
'content',
|
||||
'image',
|
||||
'link',
|
||||
'tag',
|
||||
'category',
|
||||
'author_id'
|
||||
];
|
||||
}
|
||||
@ -14,7 +14,7 @@ public function up(): void
|
||||
Schema::create('classifications', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->string('slug');
|
||||
$table->string('slug')->unique();;
|
||||
$table->text('description')->nullable();
|
||||
$table->enum('status', ['0', '1'])->default('0');
|
||||
$table->unsignedBigInteger('enhancer_id');
|
||||
|
||||
@ -14,7 +14,7 @@ public function up(): void
|
||||
Schema::create('sub_classifications', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->string('slug');
|
||||
$table->string('slug')->unique();;
|
||||
$table->text('description')->nullable();
|
||||
$table->enum('status', ['0', '1'])->default('0');
|
||||
$table->unsignedBigInteger('classification_id');
|
||||
|
||||
@ -14,7 +14,7 @@ public function up(): void
|
||||
Schema::create('government_agencies', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->string('slug');
|
||||
$table->string('slug')->unique();;
|
||||
$table->string('short_name')->nullable();
|
||||
$table->text('location')->nullable();
|
||||
$table->text('description')->nullable();
|
||||
|
||||
36
database/migrations/2025_02_27_030638_create_news_table.php
Normal file
36
database/migrations/2025_02_27_030638_create_news_table.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('news', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('title');
|
||||
$table->string('slug')->unique();
|
||||
$table->text('content');
|
||||
$table->string('image');
|
||||
$table->string('link')->nullable();
|
||||
$table->string('tag')->nullable();
|
||||
$table->enum('category', ['0', '1'])->default('0');
|
||||
$table->unsignedBigInteger('author_id');
|
||||
$table->foreign('author_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('news');
|
||||
}
|
||||
};
|
||||
17
database/seeders/NewsSeeder.php
Normal file
17
database/seeders/NewsSeeder.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class NewsSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@ -74,3 +74,9 @@ .description-content{
|
||||
border-radius: 0.4rem;
|
||||
}
|
||||
|
||||
.news-content{
|
||||
background-color: #F5F6FA;
|
||||
/* border: 1px solid #DBDFEA; */
|
||||
padding: 0.7rem;
|
||||
border-radius: 0.4rem;
|
||||
}
|
||||
|
||||
@ -90,46 +90,72 @@
|
||||
|
||||
|
||||
NioApp.Quill = function () {
|
||||
var _basic = '.quill-basic';
|
||||
$(document).ready(function () {
|
||||
var _basic = '.quill-basic';
|
||||
|
||||
if ($(_basic).exists()) {
|
||||
$(_basic).each(function () {
|
||||
var toolbarOptions = [['bold', 'italic', 'underline', 'strike'], // toggled buttons
|
||||
['blockquote', 'code-block'], [{
|
||||
'list': 'ordered'
|
||||
}, {
|
||||
'list': 'bullet'
|
||||
}], [{
|
||||
'script': 'sub'
|
||||
}, {
|
||||
'script': 'super'
|
||||
}], // superscript/subscript
|
||||
[{
|
||||
'indent': '-1'
|
||||
}, {
|
||||
'indent': '+1'
|
||||
}], // outdent/indent
|
||||
[{
|
||||
'header': [1, 2, 3, 4, 5, 6]
|
||||
}], [{
|
||||
'color': []
|
||||
}, {
|
||||
'background': []
|
||||
}], // dropdown with defaults from theme
|
||||
[{
|
||||
'font': []
|
||||
}], [{
|
||||
'align': []
|
||||
}], ['clean'] // remove formatting button
|
||||
];
|
||||
var quill = new Quill(this, {
|
||||
modules: {
|
||||
toolbar: toolbarOptions
|
||||
},
|
||||
theme: 'snow'
|
||||
});
|
||||
if ($( _basic ).length) {
|
||||
$( _basic ).each(function () {
|
||||
var toolbarOptions = [
|
||||
['bold', 'italic', 'underline', 'strike'],
|
||||
['blockquote', 'code-block'],
|
||||
[{
|
||||
'list': 'ordered'
|
||||
}, {
|
||||
'list': 'bullet'
|
||||
}],
|
||||
[{
|
||||
'script': 'sub'
|
||||
}, {
|
||||
'script': 'super'
|
||||
}],
|
||||
[{
|
||||
'indent': '-1'
|
||||
}, {
|
||||
'indent': '+1'
|
||||
}],
|
||||
[{
|
||||
'header': [1, 2, 3, 4, 5, 6]
|
||||
}],
|
||||
[{
|
||||
'color': []
|
||||
}, {
|
||||
'background': []
|
||||
}],
|
||||
[{
|
||||
'font': []
|
||||
}],
|
||||
[{
|
||||
'align': []
|
||||
}],
|
||||
['clean']
|
||||
];
|
||||
|
||||
var quill = new Quill(this, {
|
||||
modules: {
|
||||
toolbar: toolbarOptions
|
||||
},
|
||||
theme: 'snow'
|
||||
});
|
||||
|
||||
// Debugging Quill untuk melihat apakah editor sudah diinisialisasi dengan benar
|
||||
console.log(quill);
|
||||
|
||||
// Menangani saat form disubmit
|
||||
$('#myForm').on('submit', function(event) {
|
||||
// Ambil konten HTML dari Quill editor
|
||||
var quillValue = quill.root.innerHTML;
|
||||
|
||||
// Set konten Quill ke dalam input hidden
|
||||
$('#richEeditorValue').val(quillValue);
|
||||
|
||||
// Debugging untuk memeriksa apakah nilai sudah diset
|
||||
console.log("Quill content before submit: ", quillValue);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
var _minimal = '.quill-minimal';
|
||||
|
||||
|
||||
@ -41,8 +41,7 @@
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Deskripsi</label>
|
||||
<div class="form-control-wrap">
|
||||
<div class="summernote-minimal">{!!old('description')!!}</div>
|
||||
<input type="hidden" name="description" id="richEeditorValue">
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!old('description')!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -42,8 +42,7 @@
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Deskripsi</label>
|
||||
<div class="form-control-wrap">
|
||||
<div class="summernote-minimal">{!! $classification->description !!}</div>
|
||||
<input type="hidden" name="description" id="richEeditorValue">
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!$classification->description!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -52,8 +52,7 @@
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Deskripsi</label>
|
||||
<div class="form-control-wrap">
|
||||
<div class="summernote-minimal">{!!old('description')!!}</div>
|
||||
<input type="hidden" name="description" id="richEeditorValue">
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!old('description')!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -53,8 +53,7 @@
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Deskripsi</label>
|
||||
<div class="form-control-wrap">
|
||||
<div class="summernote-minimal">{!!$governmentAgency->description!!}</div>
|
||||
<input type="hidden" name="description" id="richEeditorValue">
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!$governmentAgency->description!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
101
resources/views/dashboard/news/create.blade.php
Normal file
101
resources/views/dashboard/news/create.blade.php
Normal file
@ -0,0 +1,101 @@
|
||||
@include('partials.dashboard.head')
|
||||
@include('partials.dashboard.sidebar', ['page' => 'news'])
|
||||
@include('partials.dashboard.header')
|
||||
<!-- content @s -->
|
||||
<div class="nk-content ">
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
</div>
|
||||
@foreach ($errors->all() as $item)
|
||||
{{$item}}
|
||||
@endforeach
|
||||
<form action="{{route('dashboard.news.store')}}" method="post" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="title">Judul<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('title') border-danger @enderror" id="title" name="title" placeholder="Masukan judul" value="{{old('title')}}">
|
||||
</div>
|
||||
@error('title')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="link">Link</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('link') border-danger @enderror" id="link" name="link" placeholder="Masukan link" value="{{old('link')}}">
|
||||
</div>
|
||||
@error('link')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label">Kategori<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<select class="form-select js-select2" name="category">
|
||||
<option value="0" {{old('category') == '0' ? 'selected' : ''}}>Berita</option>
|
||||
<option value="1" {{old('category') == '1' ? 'selected' : ''}}>Pengumuman</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="tag">Tag</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('tag') border-danger @enderror" id="tag" name="tag" placeholder="Masukan tag" value="{{old('tag')}}">
|
||||
</div>
|
||||
@error('tag')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="image">Gambar<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="file" class="form-control @error('image') border-danger @enderror" id="image" name="image" accept="image/*">
|
||||
</div>
|
||||
@error('image')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Konten<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<textarea class="tinymce-basic form-control" name="content">{!!old('content')!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
<div class="form-group d-flex justify-content-end">
|
||||
<a href="{{route('dashboard.news.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
|
||||
<button type="submit" class="btn btn-md btn-primary">Tambahkan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content @e -->
|
||||
@include('partials.dashboard.footer', ['rich_editor' => true])
|
||||
102
resources/views/dashboard/news/edit.blade.php
Normal file
102
resources/views/dashboard/news/edit.blade.php
Normal file
@ -0,0 +1,102 @@
|
||||
@include('partials.dashboard.head')
|
||||
@include('partials.dashboard.sidebar', ['page' => 'news'])
|
||||
@include('partials.dashboard.header')
|
||||
<!-- content @s -->
|
||||
<div class="nk-content ">
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
</div>
|
||||
@foreach ($errors->all() as $item)
|
||||
{{$item}}
|
||||
@endforeach
|
||||
<form action="{{route('dashboard.news.update', ['id' => encrypt_id($news->id)])}}" method="post" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('put')
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="title">Judul<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('title') border-danger @enderror" id="title" name="title" placeholder="Masukan judul" value="{{$news->title}}">
|
||||
</div>
|
||||
@error('title')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="link">Link</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('link') border-danger @enderror" id="link" name="link" placeholder="Masukan link" value="{{$news->link}}">
|
||||
</div>
|
||||
@error('link')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label">Kategori<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<select class="form-select js-select2" name="category">
|
||||
<option value="0" {{$news->category == '0' ? 'selected' : ''}}>Berita</option>
|
||||
<option value="1" {{$news->category == '1' ? 'selected' : ''}}>Pengumuman</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="tag">Tag</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('tag') border-danger @enderror" id="tag" name="tag" placeholder="Masukan tag" value="{{$news->tag}}">
|
||||
</div>
|
||||
@error('tag')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="image">Gambar<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="file" class="form-control @error('image') border-danger @enderror" id="image" name="image" accept="image/*">
|
||||
</div>
|
||||
@error('image')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Konten<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<textarea class="tinymce-basic form-control" name="content">{!!$news->content!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
<div class="form-group d-flex justify-content-end">
|
||||
<a href="{{route('dashboard.news.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
|
||||
<button type="submit" class="btn btn-md btn-primary">Simpan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content @e -->
|
||||
@include('partials.dashboard.footer', ['rich_editor' => true])
|
||||
63
resources/views/dashboard/news/index.blade.php
Normal file
63
resources/views/dashboard/news/index.blade.php
Normal file
@ -0,0 +1,63 @@
|
||||
@include('partials.dashboard.head')
|
||||
@include('partials.dashboard.sidebar', ['page' => 'news'])
|
||||
@include('partials.dashboard.header')
|
||||
<!-- content @s -->
|
||||
<div class="nk-content ">
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block-head nk-block-head-sm">
|
||||
<div class="nk-block-between">
|
||||
<div class="nk-block-head-content">
|
||||
<h3 class="nk-block-title page-title">{{$title}}</h3>
|
||||
</div><!-- .nk-block-head-content -->
|
||||
<div class="nk-block-head-content">
|
||||
<div class="toggle-wrap nk-block-tools-toggle">
|
||||
<a href="#" class="btn btn-icon btn-trigger toggle-expand me-n1" data-target="pageMenu"><em class="icon ni ni-more-v"></em></a>
|
||||
<div class="toggle-expand-content" data-content="pageMenu">
|
||||
<ul class="nk-block-tools g-3">
|
||||
{{-- <li>
|
||||
<div class="drodown">
|
||||
<a href="#" class="dropdown-toggle btn btn-white btn-dim btn-outline-light" data-bs-toggle="dropdown"><em class="d-none d-sm-inline icon ni ni-calender-date"></em><span><span class="d-none d-md-inline">Last</span> 30 Days</span><em class="dd-indc icon ni ni-chevron-right"></em></a>
|
||||
<div class="dropdown-menu dropdown-menu-end">
|
||||
<ul class="link-list-opt no-bdr">
|
||||
<li><a href="#"><span>Last 30 Days</span></a></li>
|
||||
<li><a href="#"><span>Last 6 Months</span></a></li>
|
||||
<li><a href="#"><span>Last 1 Years</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li> --}}
|
||||
<li class="nk-block-tools-opt"><a href="{{route('dashboard.news.create')}}" class="btn btn-primary"><em class="icon ni ni-plus"></em><span>Tambah</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .nk-block-head-content -->
|
||||
</div><!-- .nk-block-between -->
|
||||
</div><!-- .nk-block-head -->
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-bordered nowrap" id="newsTable" border="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 10% !important;">No</th>
|
||||
<th>Judul</th>
|
||||
<th>Link</th>
|
||||
<th>Kategori</th>
|
||||
<th>Tag</th>
|
||||
<th style="width: 10% !important;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content @e -->
|
||||
@include('partials.dashboard.footer' ,['datatable' => 'news'])
|
||||
108
resources/views/dashboard/news/show.blade.php
Normal file
108
resources/views/dashboard/news/show.blade.php
Normal file
@ -0,0 +1,108 @@
|
||||
@include('partials.dashboard.head')
|
||||
@include('partials.dashboard.sidebar', ['page' => 'news'])
|
||||
@include('partials.dashboard.header')
|
||||
<!-- content @s -->
|
||||
<div class="nk-content ">
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
</div>
|
||||
@foreach ($errors->all() as $item)
|
||||
{{$item}}
|
||||
@endforeach
|
||||
<form action="{{route('dashboard.news.update', ['id' => encrypt_id($news->id)])}}" method="post" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('put')
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="title">Judul</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('title') border-danger @enderror" id="title" name="title" placeholder="Masukan judul" value="{{$news->title}}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="link">Link</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('link') border-danger @enderror" id="link" name="link" placeholder="Masukan link" value="{{$news->link}}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="link">Kategori</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('link') border-danger @enderror" id="link" name="link" placeholder="Masukan link" value="{{$news->category === '0' ? 'Berita' : 'Pengumuman'}}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="tag">Tag</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('tag') border-danger @enderror" id="tag" name="tag" placeholder="Masukan tag" value="{{$news->tag}}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="image">Gambar<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<a href="javascript:void(0);" data-bs-toggle="modal" data-bs-target="#modalDefault" class="btn btn-info">Lihat gambar</a>
|
||||
</div>
|
||||
@error('image')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Konten<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<div class="news-content">{!! $news->content !!}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
<div class="form-group d-flex justify-content-end">
|
||||
<a href="{{route('dashboard.news.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
|
||||
<a href="{{route('dashboard.news.edit', ['id' => encrypt_id($news->id)])}}" class="btn btn-warning"><span>Ubah</span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" tabindex="-1" id="modalDefault">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Preview</h5>
|
||||
<a href="#" class="close" data-bs-dismiss="modal" aria-label="Close">
|
||||
<em class="icon ni ni-cross"></em>
|
||||
</a>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<img src="{{asset('storage/uploads/news/'. $news->image)}}" alt="preview">
|
||||
</div>
|
||||
{{-- <div class="modal-footer bg-light">
|
||||
<span class="sub-text">Modal Footer Text</span>
|
||||
</div> --}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content @e -->
|
||||
@include('partials.dashboard.footer', ['rich_editor' => true])
|
||||
@ -19,7 +19,7 @@
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="name">Nama Sub Klasifikasi<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama sub klasifikasi" value="{{old('name')}}">
|
||||
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama klasifikasi" value="{{old('name')}}">
|
||||
</div>
|
||||
@error('name')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@ -59,8 +59,7 @@
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Deskripsi</label>
|
||||
<div class="form-control-wrap">
|
||||
<div class="summernote-minimal">{!!old('description')!!}</div>
|
||||
<input type="hidden" name="description" id="richEeditorValue">
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!old('description')!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -54,8 +54,7 @@
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="phone-no-1">Deskripsi</label>
|
||||
<div class="form-control-wrap">
|
||||
<div class="summernote-minimal">{!!$subClassification->description!!}</div>
|
||||
<input type="hidden" name="description" id="richEeditorValue">
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!$subClassification->description!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -90,3 +90,28 @@
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if ($datatable === 'news')
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#newsTable').DataTable({
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
ajax: '{{ route('dashboard.news.data') }}',
|
||||
columns: [
|
||||
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
|
||||
{ data: 'title', name: 'title' },
|
||||
{ data: 'link', name: 'link' },
|
||||
{ data: 'category', name: 'category' },
|
||||
{ data: 'tag', name: 'tag' },
|
||||
{ data: 'action', name: 'action', orderable: false, searchable: false },
|
||||
{ data: 'id', name: 'id', orderable: true, searchable: false, visible: false },
|
||||
],
|
||||
language: datatableLanguage,
|
||||
autoWidth: false,
|
||||
order: [[1, 'desc']],
|
||||
lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@ -60,8 +60,8 @@
|
||||
@endif
|
||||
|
||||
@if (isset($rich_editor))
|
||||
<link rel="stylesheet" href="{{asset('assets/dashboard/css/editors/summernote.css?ver=3.0.3')}}">
|
||||
<script src="{{asset('assets/dashboard/js/libs/editors/summernote.js?ver=3.0.3')}}"></script>
|
||||
<link rel="stylesheet" href="{{asset('assets/dashboard/css/editors/tinymce.css?ver=3.0.3')}}">
|
||||
<script src="{{asset('assets/dashboard/js/libs/editors/tinymce.js?ver=3.0.3')}}"></script>
|
||||
<script src="{{asset('assets/dashboard/js/editors.js?ver=3.0.3')}}"></script>
|
||||
@endif
|
||||
</body>
|
||||
|
||||
@ -67,7 +67,7 @@
|
||||
<h6 class="overline-title text-primary-alt">Kelola</h6>
|
||||
</li><!-- .nk-menu-item -->
|
||||
<li class="nk-menu-item">
|
||||
<a href="javascript:void(0);" class="nk-menu-link">
|
||||
<a href="{{route('dashboard.news.index')}}" class="nk-menu-link {{$page === 'news' ? 'active-page' : ''}}">
|
||||
<span class="nk-menu-icon"><em class="icon ni ni-article"></em></span>
|
||||
<span class="nk-menu-text">Berita</span>
|
||||
</a>
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
use App\Http\Controllers\Dashboard\ClassificationController;
|
||||
use App\Http\Controllers\Dashboard\DatatableController;
|
||||
use App\Http\Controllers\Dashboard\GovernmentAgencyController;
|
||||
use App\Http\Controllers\Dashboard\NewsController;
|
||||
use App\Http\Controllers\Dashboard\OverviewController;
|
||||
use App\Http\Controllers\Dashboard\SubClassificationController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
@ -73,5 +74,19 @@
|
||||
|
||||
Route::get('/data', [DatatableController::class, 'governmentAgency'])->name('data');
|
||||
});
|
||||
|
||||
Route::prefix('news')->name('news.')->group(function(){
|
||||
Route::controller(NewsController::class)->group(function(){
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('/create', 'create')->name('create');
|
||||
Route::post('/', 'store')->name('store');
|
||||
Route::get('/{id}/show', 'show')->name('show');
|
||||
Route::get('/{id}/edit', 'edit')->name('edit');
|
||||
Route::put('/{id}', 'update')->name('update');
|
||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||
});
|
||||
|
||||
Route::get('/data', [DatatableController::class, 'news'])->name('data');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user