git commit "feat: improve admin panel and frontend features"

This commit is contained in:
2026-08-20 16:26:15 +03:30
parent 598be63d71
commit 4cd296df34
22 changed files with 1709 additions and 535 deletions
@@ -0,0 +1,272 @@
@extends('admin.layouts.app')
@section('breadcrumb')
<div>
<h1 class="page-title fw-medium fs-18 mb-2">
ایجاد ادمین
</h1>
<nav>
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item">
<a href="javascript:void(0)">
مدیریت ادمین‌ها
</a>
</li>
<li class="breadcrumb-item active">
ایجاد ادمین
</li>
</ol>
</nav>
</div>
@endsection
@section('content')
<div class="container-fluid pt-4">
<div class="card custom-card">
<div class="card-header">
<div class="card-title">
ایجاد ادمین جدید
</div>
</div>
<form
action="{{ route('admin.admins.store') }}"
method="POST"
enctype="multipart/form-data"
>
@csrf
<div class="card-body">
<div class="row gy-3">
<div class="col-md-6">
<label class="form-label">
نام
</label>
<input
type="text"
name="first_name"
class="form-control"
value="{{ old('first_name') }}"
placeholder="نام"
>
@error('first_name')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
نام خانوادگی
</label>
<input
type="text"
name="last_name"
class="form-control"
value="{{ old('last_name') }}"
placeholder="نام خانوادگی"
>
@error('last_name')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
نام کاربری
</label>
<input
type="text"
name="username"
class="form-control"
value="{{ old('username') }}"
placeholder="نام کاربری"
>
@error('username')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
ایمیل
</label>
<input
type="email"
name="email"
class="form-control"
value="{{ old('email') }}"
placeholder="ایمیل"
>
@error('email')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
شماره موبایل
</label>
<input
type="text"
name="mobile"
class="form-control"
value="{{ old('mobile') }}"
placeholder="شماره موبایل"
>
@error('mobile')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
کلمه عبور
</label>
<input
type="password"
name="password"
class="form-control"
placeholder="کلمه عبور"
>
@error('password')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
تصویر
</label>
<input
type="file"
name="image"
class="form-control"
>
@error('image')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
وضعیت
</label>
<select
name="status"
class="form-control"
>
<option value="1"
{{ old('status', 1) == 1 ? 'selected' : '' }}>
فعال
</option>
<option value="0"
{{ old('status') === '0' ? 'selected' : '' }}>
غیرفعال
</option>
</select>
@error('status')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
</div>
<div class="card-footer text-end">
<a
href="{{ route('admin.admins.index') }}"
class="btn btn-secondary"
>
انصراف
</a>
<button
type="submit"
class="btn btn-primary"
>
ذخیره ادمین
</button>
</div>
</form>
</div>
</div>
@endsection
+289
View File
@@ -0,0 +1,289 @@
@extends('admin.layouts.app')
@section('breadcrumb')
<div>
<h1 class="page-title fw-medium fs-18 mb-2">
ویرایش ادمین
</h1>
<nav>
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item">
<a href="javascript:void(0)">
مدیریت ادمین‌ها
</a>
</li>
<li class="breadcrumb-item active">
ویرایش ادمین
</li>
</ol>
</nav>
</div>
@endsection
@section('content')
<div class="container-fluid pt-4">
<div class="card custom-card">
<div class="card-header">
<div class="card-title">
ویرایش ادمین
</div>
</div>
<form
action="{{ route('admin.admins.update', $admin) }}"
method="POST"
enctype="multipart/form-data"
>
@csrf
@method('PUT')
<div class="card-body">
<div class="row gy-3">
<div class="col-md-6">
<label class="form-label">
نام
</label>
<input
type="text"
name="first_name"
class="form-control"
value="{{ old('first_name', $admin->first_name) }}"
placeholder="نام"
>
@error('first_name')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
نام خانوادگی
</label>
<input
type="text"
name="last_name"
class="form-control"
value="{{ old('last_name', $admin->last_name) }}"
placeholder="نام خانوادگی"
>
@error('last_name')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
نام کاربری
</label>
<input
type="text"
name="username"
class="form-control"
value="{{ old('username', $admin->username) }}"
placeholder="نام کاربری"
>
@error('username')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
ایمیل
</label>
<input
type="email"
name="email"
class="form-control"
value="{{ old('email', $admin->email) }}"
placeholder="ایمیل"
>
@error('email')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
شماره موبایل
</label>
<input
type="text"
name="mobile"
class="form-control"
value="{{ old('mobile', $admin->mobile) }}"
placeholder="شماره موبایل"
>
@error('mobile')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
کلمه عبور جدید
</label>
<input
type="password"
name="password"
class="form-control"
placeholder="در صورت تغییر وارد کنید"
>
@error('password')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
تصویر
</label>
<input
type="file"
name="image"
class="form-control"
>
@if($admin->image)
<div class="mt-2">
<img
src="{{ asset('storage/' . $admin->image) }}"
alt="تصویر ادمین"
width="80"
height="80"
style="object-fit: cover; border-radius: 10px;"
>
</div>
@endif
@error('image')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="col-md-6">
<label class="form-label">
وضعیت
</label>
<select
name="status"
class="form-control"
>
<option value="1"
{{ old('status', $admin->status) == 1 ? 'selected' : '' }}>
فعال
</option>
<option value="0"
{{ old('status', $admin->status) == 0 ? 'selected' : '' }}>
غیرفعال
</option>
</select>
@error('status')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
</div>
<div class="card-footer text-end">
<a
href="{{ route('admin.admins.index') }}"
class="btn btn-secondary"
>
انصراف
</a>
<button
type="submit"
class="btn btn-primary"
>
ذخیره تغییرات
</button>
</div>
</form>
</div>
</div>
@endsection
@@ -0,0 +1,131 @@
@extends('admin.layouts.app')
@section('content')
<div class="container-fluid pt-4">
<div class="card custom-card">
<div class="card-header d-flex justify-content-between align-items-center">
<div class="card-title">
لیست ادمین‌ها
</div>
<a href="{{ route('admin.admins.create') }}"
class="btn btn-primary">
ایجاد ادمین
</a>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered table-hover text-center align-middle">
<thead>
<tr>
<th>نام</th>
<th>نام خانوادگی</th>
<th>نام کاربری</th>
<th>موبایل</th>
<th>وضعیت</th>
<th>عملیات</th>
</tr>
</thead>
<tbody>
@forelse($admins as $admin)
<tr>
<td>
{{ $admin->first_name }}
</td>
<td>
{{ $admin->last_name }}
</td>
<td>
{{ $admin->username }}
</td>
<td>
{{ $admin->mobile }}
</td>
<td>
@if($admin->status)
<span class="badge bg-success">
فعال
</span>
@else
<span class="badge bg-danger">
غیرفعال
</span>
@endif
</td>
<td>
<div class="d-flex justify-content-center gap-2">
<a href="{{ route('admin.admins.edit', $admin) }}"
class="btn btn-warning btn-sm">
ویرایش
</a>
<form
action="{{ route('admin.admins.destroy', $admin) }}"
method="POST"
class="d-inline"
onsubmit="return confirm('آیا از حذف این ادمین مطمئن هستید؟')"
>
@csrf
@method('DELETE')
<button
type="submit"
class="btn btn-danger btn-sm"
>
حذف
</button>
</form>
</div>
</td>
</tr>
@empty
<tr>
<td colspan="6">
ادمینی ثبت نشده است.
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
<div class="mt-3">
{{ $admins->links() }}
</div>
</div>
</div>
</div>
@endsection