154 lines
7.4 KiB
PHP
154 lines
7.4 KiB
PHP
@extends('layouts.admin.app')
|
|
|
|
@section('content')
|
|
<div class="container mx-auto px-4">
|
|
<div class="bg-white rounded-lg shadow-lg p-6">
|
|
<div class="flex justify-between items-center mb-6">
|
|
<h2 class="text-2xl font-bold text-gray-800">Bestseller Management</h2>
|
|
<button onclick="openModal()" class="bg-[#8B0000] hover:bg-red-900 text-white px-4 py-2 rounded">
|
|
Add New Bestseller
|
|
</button>
|
|
</div>
|
|
|
|
@if(session('success'))
|
|
<div class="bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded relative mb-4" role="alert">
|
|
<span class="block sm:inline">{{ session('success') }}</span>
|
|
</div>
|
|
@endif
|
|
|
|
<!-- Bestsellers Grid -->
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
@foreach($bestsellers as $bestseller)
|
|
<div class="bg-white rounded-lg shadow overflow-hidden">
|
|
<img src="{{ asset('storage/bestsellers/' . $bestseller->image) }}" alt="{{ $bestseller->name }}"
|
|
class="w-full h-48 object-cover">
|
|
<div class="p-4">
|
|
<h3 class="text-lg font-semibold text-gray-800">{{ $bestseller->name }}</h3>
|
|
<p class="text-gray-600 mt-2">{{ $bestseller->description }}</p>
|
|
<div class="mt-4 flex justify-end space-x-2">
|
|
<button onclick="openEditModal({{ $bestseller->id }}, '{{ $bestseller->name }}', '{{ $bestseller->description }}')"
|
|
class="bg-blue-500 hover:bg-blue-600 text-white px-3 py-1 rounded">
|
|
Edit
|
|
</button>
|
|
<form action="{{ url('/admin/bestseller/' . $bestseller->id) }}" method="POST" class="inline">
|
|
@csrf
|
|
@method('DELETE')
|
|
<button type="submit" onclick="return confirm('Are you sure?')"
|
|
class="bg-red-500 hover:bg-red-600 text-white px-3 py-1 rounded">
|
|
Delete
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Add Modal -->
|
|
<div id="addModal" class="fixed inset-0 bg-gray-600 bg-opacity-50 hidden">
|
|
<div class="modal-container bg-white w-11/12 md:max-w-md mx-auto rounded shadow-lg z-50 overflow-y-auto mt-20">
|
|
<div class="modal-content py-4 text-left px-6">
|
|
<div class="flex justify-between items-center pb-3">
|
|
<p class="text-2xl font-bold">Add New Bestseller</p>
|
|
<button onclick="closeModal()" class="text-black">×</button>
|
|
</div>
|
|
<form action="{{ url('/admin/bestseller') }}" method="POST" enctype="multipart/form-data">
|
|
@csrf
|
|
<div class="mb-4">
|
|
<label class="block text-gray-700 text-sm font-bold mb-2">Name</label>
|
|
<input type="text" name="name" required
|
|
class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
|
|
</div>
|
|
<div class="mb-4">
|
|
<label class="block text-gray-700 text-sm font-bold mb-2">Description</label>
|
|
<textarea name="description" required rows="3"
|
|
class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"></textarea>
|
|
</div>
|
|
<div class="mb-4">
|
|
<label class="block text-gray-700 text-sm font-bold mb-2">Image</label>
|
|
<input type="file" name="image" required
|
|
class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
|
|
</div>
|
|
<div class="flex justify-end">
|
|
<button type="submit" class="bg-[#8B0000] hover:bg-red-900 text-white font-bold py-2 px-4 rounded">
|
|
Save
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Edit Modal -->
|
|
<div id="editModal" class="fixed inset-0 bg-gray-600 bg-opacity-50 hidden">
|
|
<div class="modal-container bg-white w-11/12 md:max-w-md mx-auto rounded shadow-lg z-50 overflow-y-auto mt-20">
|
|
<div class="modal-content py-4 text-left px-6">
|
|
<div class="flex justify-between items-center pb-3">
|
|
<p class="text-2xl font-bold">Edit Bestseller</p>
|
|
<button onclick="closeEditModal()" class="text-black">×</button>
|
|
</div>
|
|
<form id="editForm" method="POST" enctype="multipart/form-data">
|
|
@csrf
|
|
@method('PUT')
|
|
<div class="mb-4">
|
|
<label class="block text-gray-700 text-sm font-bold mb-2">Name</label>
|
|
<input type="text" name="name" id="editName" required
|
|
class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
|
|
</div>
|
|
<div class="mb-4">
|
|
<label class="block text-gray-700 text-sm font-bold mb-2">Description</label>
|
|
<textarea name="description" id="editDescription" required rows="3"
|
|
class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"></textarea>
|
|
</div>
|
|
<div class="mb-4">
|
|
<label class="block text-gray-700 text-sm font-bold mb-2">Image</label>
|
|
<input type="file" name="image"
|
|
class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
|
|
</div>
|
|
<div class="flex justify-end">
|
|
<button type="submit" class="bg-blue-500 hover:bg-blue-600 text-white font-bold py-2 px-4 rounded">
|
|
Update
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@push('scripts')
|
|
<script>
|
|
function openModal() {
|
|
document.getElementById('addModal').classList.remove('hidden');
|
|
}
|
|
|
|
function closeModal() {
|
|
document.getElementById('addModal').classList.add('hidden');
|
|
}
|
|
|
|
function openEditModal(id, name, description) {
|
|
document.getElementById('editModal').classList.remove('hidden');
|
|
document.getElementById('editName').value = name;
|
|
document.getElementById('editDescription').value = description;
|
|
document.getElementById('editForm').action = `/admin/bestseller/${id}`;
|
|
}
|
|
|
|
function closeEditModal() {
|
|
document.getElementById('editModal').classList.add('hidden');
|
|
}
|
|
|
|
// Close modals when clicking outside
|
|
window.onclick = function(event) {
|
|
let addModal = document.getElementById('addModal');
|
|
let editModal = document.getElementById('editModal');
|
|
if (event.target == addModal) {
|
|
closeModal();
|
|
}
|
|
if (event.target == editModal) {
|
|
closeEditModal();
|
|
}
|
|
}
|
|
</script>
|
|
@endpush
|
|
@endsection
|