fix pdam redirect back and advertisement partial update redirect
This commit is contained in:
@@ -11,38 +11,27 @@ class CustomersController extends Controller
|
|||||||
{
|
{
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$menuId = $request->query('menu_id');
|
$menuId = $request->query('menu_id') ?? $request->input('menu_id');
|
||||||
$user = Auth::user();
|
$permissions = $this->permissions[$menuId]?? []; // Avoid undefined index error
|
||||||
$userId = $user->id;
|
$creator = $permissions['allow_create'] ?? 0;
|
||||||
|
$updater = $permissions['allow_update'] ?? 0;
|
||||||
|
$destroyer = $permissions['allow_destroy'] ?? 0;
|
||||||
|
|
||||||
// Ambil role_id yang dimiliki user
|
return view('customers.index', compact('creator', 'updater', 'destroyer', 'menuId'));
|
||||||
$roleIds = DB::table('user_role')
|
|
||||||
->where('user_id', $userId)
|
|
||||||
->pluck('role_id');
|
|
||||||
|
|
||||||
// Ambil data akses berdasarkan role_id dan menu_id
|
|
||||||
$roleAccess = DB::table('role_menu')
|
|
||||||
->whereIn('role_id', $roleIds)
|
|
||||||
->where('menu_id', $menuId)
|
|
||||||
->first();
|
|
||||||
|
|
||||||
// Pastikan roleAccess tidak null sebelum mengakses properti
|
|
||||||
$creator = $roleAccess->allow_create ?? 0;
|
|
||||||
$updater = $roleAccess->allow_update ?? 0;
|
|
||||||
$destroyer = $roleAccess->allow_destroy ?? 0;
|
|
||||||
|
|
||||||
return view('customers.index', compact('creator', 'updater', 'destroyer'));
|
|
||||||
}
|
}
|
||||||
public function create()
|
public function create(Request $request)
|
||||||
{
|
{
|
||||||
return view('customers.create');
|
$menuId = $request->query('menu_id');
|
||||||
|
return view('customers.create', compact('menuId'));
|
||||||
}
|
}
|
||||||
public function edit(string $id)
|
public function edit(Request $request, string $id)
|
||||||
{
|
{
|
||||||
$data = Customer::findOrFail($id);
|
$data = Customer::findOrFail($id);
|
||||||
return view('customers.edit', compact('data'));
|
$menuId = $request->query('menu_id');
|
||||||
|
return view('customers.edit', compact('data', 'menuId'));
|
||||||
}
|
}
|
||||||
public function upload(){
|
public function upload(Request $request){
|
||||||
return view('customers.upload');
|
$menuId = $request->query('menu_id');
|
||||||
|
return view('customers.upload', compact('menuId'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,27 +15,14 @@ class AdvertisementController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$menuId = $request->query('menu_id');
|
$menuId = (int) $request->query('menu_id', 0);
|
||||||
$user = Auth::user();
|
$permissions = $this->permissions[$menuId] ?? []; // Avoid undefined index error
|
||||||
$userId = $user->id;
|
|
||||||
|
|
||||||
// Ambil role_id yang dimiliki user
|
$creator = $permissions['allow_create'] ?? 0;
|
||||||
$roleIds = DB::table('user_role')
|
$updater = $permissions['allow_update'] ?? 0;
|
||||||
->where('user_id', $userId)
|
$destroyer = $permissions['allow_destroy'] ?? 0;
|
||||||
->pluck('role_id');
|
|
||||||
|
|
||||||
// Ambil data akses berdasarkan role_id dan menu_id
|
return view('data.advertisements.index', compact('creator', 'updater', 'destroyer','menuId'));
|
||||||
$roleAccess = DB::table('role_menu')
|
|
||||||
->whereIn('role_id', $roleIds)
|
|
||||||
->where('menu_id', $menuId)
|
|
||||||
->first();
|
|
||||||
|
|
||||||
// Pastikan roleAccess tidak null sebelum mengakses properti
|
|
||||||
$creator = $roleAccess->allow_create ?? 0;
|
|
||||||
$updater = $roleAccess->allow_update ?? 0;
|
|
||||||
$destroyer = $roleAccess->allow_destroy ?? 0;
|
|
||||||
|
|
||||||
return view('data.advertisements.index', compact('creator', 'updater', 'destroyer'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -50,8 +37,9 @@ class AdvertisementController extends Controller
|
|||||||
/**
|
/**
|
||||||
* Show the form for creating a new resource.
|
* Show the form for creating a new resource.
|
||||||
*/
|
*/
|
||||||
public function create()
|
public function create(Request $request)
|
||||||
{
|
{
|
||||||
|
$menuId = (int) $request->query('menu_id', 0);
|
||||||
$title = 'Advertisement';
|
$title = 'Advertisement';
|
||||||
$subtitle = 'Create Data';
|
$subtitle = 'Create Data';
|
||||||
|
|
||||||
@@ -68,14 +56,15 @@ class AdvertisementController extends Controller
|
|||||||
|
|
||||||
// $route = 'advertisements.create';
|
// $route = 'advertisements.create';
|
||||||
// info("AdvertisementController@edit diakses dengan ID: $title");
|
// info("AdvertisementController@edit diakses dengan ID: $title");
|
||||||
return view('data.advertisements.form', compact('title', 'subtitle', 'fields', 'fieldTypes', 'apiUrl', 'dropdownOptions'));
|
return view('data.advertisements.form', compact('title', 'subtitle', 'fields', 'fieldTypes', 'apiUrl', 'dropdownOptions','menuId'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the form for editing the specified resource.
|
* Show the form for editing the specified resource.
|
||||||
*/
|
*/
|
||||||
public function edit($id)
|
public function edit(Request $request, $id)
|
||||||
{
|
{
|
||||||
|
$menuId = (int) $request->query('menu_id', 0);
|
||||||
info("AdvertisementController@edit diakses dengan ID: $id");
|
info("AdvertisementController@edit diakses dengan ID: $id");
|
||||||
$title = 'Advertisement';
|
$title = 'Advertisement';
|
||||||
$subtitle = 'Update Data';
|
$subtitle = 'Update Data';
|
||||||
@@ -107,7 +96,7 @@ class AdvertisementController extends Controller
|
|||||||
|
|
||||||
// $route = 'advertisements.update'; // Menggunakan route update untuk form edit
|
// $route = 'advertisements.update'; // Menggunakan route update untuk form edit
|
||||||
// info("AdvertisementController@edit diakses dengan route: $route");
|
// info("AdvertisementController@edit diakses dengan route: $route");
|
||||||
return view('data.advertisements.form', compact('title', 'subtitle', 'modelInstance', 'fields', 'fieldTypes', 'apiUrl', 'dropdownOptions'));
|
return view('data.advertisements.form', compact('title', 'subtitle', 'modelInstance', 'fields', 'fieldTypes', 'apiUrl', 'dropdownOptions', 'menuId'));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getFields()
|
private function getFields()
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ class CreateCustomer {
|
|||||||
initCreateCustomer() {
|
initCreateCustomer() {
|
||||||
const toastNotification = document.getElementById("toastNotification");
|
const toastNotification = document.getElementById("toastNotification");
|
||||||
const toast = new bootstrap.Toast(toastNotification);
|
const toast = new bootstrap.Toast(toastNotification);
|
||||||
|
let menuId = document.getElementById("menuId").value;
|
||||||
document
|
document
|
||||||
.getElementById("btnCreateCustomer")
|
.getElementById("btnCreateCustomer")
|
||||||
.addEventListener("click", async function () {
|
.addEventListener("click", async function () {
|
||||||
@@ -41,7 +42,7 @@ class CreateCustomer {
|
|||||||
result.message;
|
result.message;
|
||||||
toast.show();
|
toast.show();
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.href = "/data/customers";
|
window.location.href = `/data/customers?menu_id=${menuId}`;
|
||||||
}, 2000);
|
}, 2000);
|
||||||
} else {
|
} else {
|
||||||
let error = await response.json();
|
let error = await response.json();
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ class UpdateCustomer {
|
|||||||
initUpdateCustomer() {
|
initUpdateCustomer() {
|
||||||
const toastNotification = document.getElementById("toastNotification");
|
const toastNotification = document.getElementById("toastNotification");
|
||||||
const toast = new bootstrap.Toast(toastNotification);
|
const toast = new bootstrap.Toast(toastNotification);
|
||||||
|
let menuId = document.getElementById("menuId").value;
|
||||||
document
|
document
|
||||||
.getElementById("btnUpdateCustomer")
|
.getElementById("btnUpdateCustomer")
|
||||||
.addEventListener("click", async function () {
|
.addEventListener("click", async function () {
|
||||||
@@ -41,7 +42,7 @@ class UpdateCustomer {
|
|||||||
result.message;
|
result.message;
|
||||||
toast.show();
|
toast.show();
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.href = "/data/customers";
|
window.location.href = `/data/customers?menu_id=${menuId}`;
|
||||||
}, 2000);
|
}, 2000);
|
||||||
} else {
|
} else {
|
||||||
let error = await response.json();
|
let error = await response.json();
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ class Customers {
|
|||||||
tableContainer.innerHTML = "";
|
tableContainer.innerHTML = "";
|
||||||
let canUpdate = tableContainer.getAttribute("data-updater") === "1";
|
let canUpdate = tableContainer.getAttribute("data-updater") === "1";
|
||||||
let canDelete = tableContainer.getAttribute("data-destroyer") === "1";
|
let canDelete = tableContainer.getAttribute("data-destroyer") === "1";
|
||||||
|
let menuId = tableContainer.getAttribute("data-menuId");
|
||||||
this.table = new Grid({
|
this.table = new Grid({
|
||||||
columns: [
|
columns: [
|
||||||
"ID",
|
"ID",
|
||||||
@@ -45,15 +46,15 @@ class Customers {
|
|||||||
name: "Action",
|
name: "Action",
|
||||||
formatter: (cell) => {
|
formatter: (cell) => {
|
||||||
let buttons = "";
|
let buttons = "";
|
||||||
|
|
||||||
if (canUpdate) {
|
if (canUpdate) {
|
||||||
buttons += `
|
buttons += `
|
||||||
<a href="/data/customers/${cell}/edit" class="btn btn-yellow btn-sm d-inline-flex align-items-center justify-content-center">
|
<a href="/data/customers/${cell}/edit?menu_id=${menuId}" class="btn btn-yellow btn-sm d-inline-flex align-items-center justify-content-center">
|
||||||
<i class='bx bx-edit'></i>
|
<i class='bx bx-edit'></i>
|
||||||
</a>
|
</a>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDelete) {
|
if (canDelete) {
|
||||||
buttons += `
|
buttons += `
|
||||||
<button data-id="${cell}" class="btn btn-sm btn-red btn-delete-customers d-inline-flex align-items-center justify-content-center">
|
<button data-id="${cell}" class="btn btn-sm btn-red btn-delete-customers d-inline-flex align-items-center justify-content-center">
|
||||||
@@ -61,12 +62,14 @@ class Customers {
|
|||||||
</button>
|
</button>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUpdate && !canDelete) {
|
if (!canUpdate && !canDelete) {
|
||||||
buttons = `<span class="text-muted">No Privilege</span>`;
|
buttons = `<span class="text-muted">No Privilege</span>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return gridjs.html(`<div class="d-flex justify-content-center gap-2">${buttons}</div>`);
|
return gridjs.html(
|
||||||
|
`<div class="d-flex justify-content-center gap-2">${buttons}</div>`
|
||||||
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ class UploadCustomers {
|
|||||||
initDropzone() {
|
initDropzone() {
|
||||||
const toastNotification = document.getElementById("toastNotification");
|
const toastNotification = document.getElementById("toastNotification");
|
||||||
const toast = new bootstrap.Toast(toastNotification);
|
const toast = new bootstrap.Toast(toastNotification);
|
||||||
|
let menuId = document.getElementById("menuId").value;
|
||||||
var previewTemplate,
|
var previewTemplate,
|
||||||
dropzonePreviewNode = document.querySelector(
|
dropzonePreviewNode = document.querySelector(
|
||||||
"#dropzone-preview-list"
|
"#dropzone-preview-list"
|
||||||
@@ -46,7 +47,7 @@ class UploadCustomers {
|
|||||||
response.message;
|
response.message;
|
||||||
toast.show();
|
toast.show();
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.href = "/data/customers";
|
window.location.href = `/data/customers?menu_id=${menuId}`;
|
||||||
}, 2000);
|
}, 2000);
|
||||||
});
|
});
|
||||||
this.on("error", function (file, errorMessage) {
|
this.on("error", function (file, errorMessage) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import GeneralTable from "../../table-generator.js";
|
|||||||
const tableElement = document.getElementById("reklame-data-table");
|
const tableElement = document.getElementById("reklame-data-table");
|
||||||
const canUpdate = tableElement.getAttribute("data-updater") === "1";
|
const canUpdate = tableElement.getAttribute("data-updater") === "1";
|
||||||
const canDelete = tableElement.getAttribute("data-destroyer") === "1";
|
const canDelete = tableElement.getAttribute("data-destroyer") === "1";
|
||||||
|
let menuId = document.getElementById("menuId").value;
|
||||||
|
|
||||||
const dataAdvertisementsColumns = [
|
const dataAdvertisementsColumns = [
|
||||||
"No",
|
"No",
|
||||||
@@ -23,13 +24,13 @@ const dataAdvertisementsColumns = [
|
|||||||
{
|
{
|
||||||
name: "Actions",
|
name: "Actions",
|
||||||
width: "120px",
|
width: "120px",
|
||||||
formatter: function(cell, row) {
|
formatter: function (cell, row) {
|
||||||
const id = row.cells[10].data;
|
const id = row.cells[10].data;
|
||||||
const model = "data/advertisements";
|
const model = `data/web-advertisements`;
|
||||||
|
|
||||||
let actionButtons = '<div class="d-flex justify-items-end gap-10">';
|
let actionButtons = '<div class="d-flex justify-items-end gap-10">';
|
||||||
let hasPrivilege = false;
|
let hasPrivilege = false;
|
||||||
|
|
||||||
// Tampilkan tombol Edit jika user punya akses update
|
// Tampilkan tombol Edit jika user punya akses update
|
||||||
if (canUpdate) {
|
if (canUpdate) {
|
||||||
hasPrivilege = true;
|
hasPrivilege = true;
|
||||||
@@ -40,7 +41,7 @@ const dataAdvertisementsColumns = [
|
|||||||
<i class='bx bx-edit'></i>
|
<i class='bx bx-edit'></i>
|
||||||
</button>`;
|
</button>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tampilkan tombol Delete jika user punya akses delete
|
// Tampilkan tombol Delete jika user punya akses delete
|
||||||
if (canDelete) {
|
if (canDelete) {
|
||||||
hasPrivilege = true;
|
hasPrivilege = true;
|
||||||
@@ -50,13 +51,17 @@ const dataAdvertisementsColumns = [
|
|||||||
<i class='bx bxs-trash'></i>
|
<i class='bx bxs-trash'></i>
|
||||||
</button>`;
|
</button>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
actionButtons += '</div>';
|
actionButtons += "</div>";
|
||||||
|
|
||||||
// Jika tidak memiliki akses, tampilkan teks "No Privilege"
|
// Jika tidak memiliki akses, tampilkan teks "No Privilege"
|
||||||
return gridjs.html(hasPrivilege ? actionButtons : '<span class="text-muted">No Privilege</span>');
|
return gridjs.html(
|
||||||
}
|
hasPrivilege
|
||||||
}
|
? actionButtons
|
||||||
|
: '<span class="text-muted">No Privilege</span>'
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
@@ -86,4 +91,4 @@ document.addEventListener("DOMContentLoaded", () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
table.init();
|
table.init();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||||||
const modalButton = document.querySelector(".btn-modal");
|
const modalButton = document.querySelector(".btn-modal");
|
||||||
const form = document.querySelector("form#create-update-form");
|
const form = document.querySelector("form#create-update-form");
|
||||||
var authLogo = document.querySelector(".auth-logo");
|
var authLogo = document.querySelector(".auth-logo");
|
||||||
|
let menuId = document.getElementById("menuId").value;
|
||||||
|
|
||||||
if (!saveButton || !form) return;
|
if (!saveButton || !form) return;
|
||||||
|
|
||||||
@@ -73,7 +74,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||||||
}, 2000);
|
}, 2000);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.href = "/data/web-advertisements";
|
window.location.href = `/data/web-advertisements?menu_id=${menuId}`;
|
||||||
}, 1000);
|
}, 1000);
|
||||||
} else {
|
} else {
|
||||||
if (authLogo) {
|
if (authLogo) {
|
||||||
|
|||||||
@@ -5,11 +5,12 @@
|
|||||||
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM'])
|
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM'])
|
||||||
|
|
||||||
<x-toast-notification />
|
<x-toast-notification />
|
||||||
|
<input type="hidden" id="menuId" value="{{ $menuId ?? 0 }}">
|
||||||
<div class="row d-flex justify-content-center">
|
<div class="row d-flex justify-content-center">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header d-flex justify-content-end">
|
<div class="card-header d-flex justify-content-end">
|
||||||
<a href="{{ route('customers') }}" class="btn btn-sm btn-secondary">Back</a>
|
<a href="{{ route('customers', ['menu_id' => $menuId]) }}" class="btn btn-sm btn-secondary">Back</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form id="formCreateCustomer" action="{{ route('api.customers.store') }}" method="post">
|
<form id="formCreateCustomer" action="{{ route('api.customers.store') }}" method="post">
|
||||||
|
|||||||
@@ -5,11 +5,12 @@
|
|||||||
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM'])
|
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM'])
|
||||||
|
|
||||||
<x-toast-notification />
|
<x-toast-notification />
|
||||||
|
<input type="hidden" id="menuId" value="{{ $menuId ?? 0 }}">
|
||||||
<div class="row d-flex justify-content-center">
|
<div class="row d-flex justify-content-center">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header d-flex justify-content-end">
|
<div class="card-header d-flex justify-content-end">
|
||||||
<a href="{{ route('customers') }}" class="btn btn-sm btn-secondary">Back</a>
|
<a href="{{ route('customers', ['menu_id' => $menuId]) }}" class="btn btn-sm btn-secondary">Back</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form id="formUpdateCustomer" action="{{ route('api.customers.update', $data->id) }}" method="post">
|
<form id="formUpdateCustomer" action="{{ route('api.customers.update', $data->id) }}" method="post">
|
||||||
|
|||||||
@@ -16,13 +16,14 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="d-flex flex-wrap justify-content-end align-items-center mb-2">
|
<div class="d-flex flex-wrap justify-content-end align-items-center mb-2">
|
||||||
@if ($creator)
|
@if ($creator)
|
||||||
<a href="{{ route('customers.create')}}" class="btn btn-success btn-sm d-block d-sm-inline w-auto me-3">Create</a>
|
<a href="{{ route('customers.create', ['menu_id' => $menuId]) }}" class="btn btn-success btn-sm d-block d-sm-inline w-auto me-3">Create</a>
|
||||||
<a href="{{ route('customers.upload')}}" class="btn btn-success btn-sm d-block d-sm-inline w-auto">Upload</a>
|
<a href="{{ route('customers.upload', ['menu_id' => $menuId]) }}" class="btn btn-success btn-sm d-block d-sm-inline w-auto">Upload</a>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div id="table-customers"
|
<div id="table-customers"
|
||||||
data-updater="{{ $updater }}"
|
data-updater="{{ $updater }}"
|
||||||
data-destroyer="{{ $destroyer }}">
|
data-destroyer="{{ $destroyer }}"
|
||||||
|
data-menuId="{{ $menuId }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM'])
|
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM'])
|
||||||
|
|
||||||
<x-toast-notification />
|
<x-toast-notification />
|
||||||
|
<input type="hidden" id="menuId" value="{{ $menuId ?? 0 }}">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-12">
|
<div class="col-xl-12">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
@section('content')
|
@section('content')
|
||||||
|
|
||||||
@include('layouts.partials/page-title', ['title' => $title, 'subtitle' => $subtitle]) <!-- Menggunakan title dan subtitle dari controller -->
|
@include('layouts.partials/page-title', ['title' => $title, 'subtitle' => $subtitle]) <!-- Menggunakan title dan subtitle dari controller -->
|
||||||
|
<input type="hidden" id="menuId" value="{{ $menuId ?? 0 }}">
|
||||||
<div class="row d-flex justify-content-center">
|
<div class="row d-flex justify-content-center">
|
||||||
@if (session('error'))
|
@if (session('error'))
|
||||||
<div class="alert alert-danger">
|
<div class="alert alert-danger">
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'Reklame'])
|
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'Reklame'])
|
||||||
|
|
||||||
|
<input type="hidden" id="menuId" value="{{ $menuId ?? 0 }}">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h5 class="card-title">Daftar Reklame</h5>
|
<h5 class="card-title">Daftar Reklame</h5>
|
||||||
|
|||||||
Reference in New Issue
Block a user