feat: add admin panel layout, dashboard, and user management
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('breadcrumb')
|
||||
<div>
|
||||
<div>
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||
ویرایش کاربر
|
||||
{{getUserFullName($user)}}
|
||||
</h1>
|
||||
<div class="">
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item"><a href="javascript:void(0);">مدیریت کاربران</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">ویرایش کاربر</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
@if(session('success'))
|
||||
<span style="color: green">
|
||||
{{session('success')}}
|
||||
</span>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
|
||||
<form
|
||||
action="{{route('admin.users.update', $user)}}"
|
||||
method="POST"
|
||||
enctype="multipart/form-data"
|
||||
>
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="card custom-card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">ویرایش کاربر</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<!-- User Fields -->
|
||||
<div class="row gy-3">
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">نام</label>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="first_name"
|
||||
value="{{old('first_name' , $user->first_name)}}"
|
||||
placeholder="نام را وارد کنید"
|
||||
>
|
||||
@error('first_name')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">نام خانوادگی</label>
|
||||
<input type="text" class="form-control" name="last_name"
|
||||
value="{{old('last_name' , $user->last_name)}}"
|
||||
placeholder="نام خانوادگی را وارد کنید">
|
||||
@error('last_name')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">ایمیل</label>
|
||||
<input type="email" class="form-control" name="email"
|
||||
value="{{old('email' , $user->email)}}"
|
||||
placeholder="ایمیل را وارد کنید">
|
||||
@error('email')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">شماره موبایل</label>
|
||||
<input type="text" class="form-control" name="mobile"
|
||||
value="{{old('mobile' , $user->mobile)}}"
|
||||
placeholder="شماره موبایل را وارد کنید">
|
||||
@error('mobile')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">رمز عبور (در صورت تغییر)</label>
|
||||
<input type="text" class="form-control" name="password"
|
||||
placeholder="رمز عبور را وارد کنید">
|
||||
@error('password')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-footer text-end">
|
||||
<button type="submit" class="btn btn-primary">ذخیره تغییرات</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,152 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('breadcrumb')
|
||||
<div>
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">لیست کاربران</h1>
|
||||
<div class="">
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item"><a href="javascript:void(0);">مدیریت کاربران</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">لیست کاربران</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
<!-- Page Header Close -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
<div class="card custom-card">
|
||||
<div class="card-body p-3">
|
||||
<form>
|
||||
<div class="d-flex align-items-center justify-content-between flex-wrap gap-3">
|
||||
|
||||
<!-- Left: Search + Sort -->
|
||||
<div class="d-flex flex-wrap gap-1 project-list-main align-items-center">
|
||||
<div class="d-flex me-2">
|
||||
<input
|
||||
class="form-control me-2"
|
||||
type="search"
|
||||
name="search"
|
||||
placeholder="جستجوی کاربر"
|
||||
value="{{request()->input('search')}}"
|
||||
aria-label="جستجوی کاربر"
|
||||
/>
|
||||
<button class="btn btn-light" type="submit">جستجو</button>
|
||||
</div>
|
||||
|
||||
<select id="choices-single-default" class="form-control" name="sort">
|
||||
<option value="">مرتبسازی بر اساس</option>
|
||||
<option
|
||||
value="newest" @selected(request()->missing('sort') || request()->input('sort') == 'newest')>
|
||||
جدیدترین
|
||||
</option>
|
||||
<option value="name_asc" @selected(request()->input('sort') == 'name_asc')>
|
||||
الفبا (الف - ی)
|
||||
</option>
|
||||
<option value="name_desc" @selected(request()->input('sort') == 'name_desc')>
|
||||
الفبا (ی - الف)
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Right: Trash Button -->
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<a href="{{ route('admin.users.trash') }}" class="btn btn-danger-light d-flex align-items-center">
|
||||
<i class="ri-delete-bin-3-line me-1 fw-medium align-middle"></i>
|
||||
سطل زباله
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Start::row-2 -->
|
||||
<div class="row">
|
||||
@error('user_delete')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
<div class="col-xl-12">
|
||||
<div class="card custom-card ">
|
||||
<div class="table-responsive">
|
||||
<!-- Removed .table-responsive -->
|
||||
<table class="table text-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">نام و نام خانوادگی</th>
|
||||
<th scope="col">ایمیل</th>
|
||||
<th scope="col">شماره موبایل</th>
|
||||
<th scope="col">تاریخ ثبت نام</th>
|
||||
<th scope="col">عملیات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($users as $user)
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="flex-fill">
|
||||
<a
|
||||
href="javascript:void(0);"
|
||||
class="fw-medium fs-14 d-block text-truncate"
|
||||
>
|
||||
{{getUserFullName($user)}}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>{{$user->email}}</td>
|
||||
<td>{{$user->mobile}}</td>
|
||||
<td>{{$user->created_at->toJalali()->format('H:i Y-m-d')}}</td>
|
||||
<td>
|
||||
<div class="btn-list">
|
||||
<a href="{{route('admin.users.show', $user->id)}}"
|
||||
class="btn btn-primary-light btn-icon btn-sm"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top" title="مشاهده">
|
||||
<i class="ri-eye-line"></i>
|
||||
</a>
|
||||
<a href="{{route('admin.users.edit' , $user->id)}}"
|
||||
class="btn btn-secondary-light btn-icon btn-sm"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top" title="ویرایش">
|
||||
<i class="ri-edit-line"></i>
|
||||
</a>
|
||||
<a href="javascript:void(0);"
|
||||
onclick="if(confirm('آیا از حذف این کاربر مطمئن هستید؟')) { document.getElementById('delete-form-{{$user->id}}').submit(); }"
|
||||
class="btn btn-pink-light btn-icon btn-sm"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top" title="حذف">
|
||||
<i class="ri-delete-bin-line"></i>
|
||||
</a>
|
||||
<form
|
||||
id="delete-form-{{$user->id}}"
|
||||
action="{{route('admin.users.destroy' , $user->id)}}"
|
||||
method="POST"
|
||||
style="display:none;"
|
||||
>
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
</form>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End::row-2 -->
|
||||
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,53 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('breadcrumb')
|
||||
<div>
|
||||
<div>
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||
جزئیات کاربر
|
||||
{{getUserFullName($user)}}
|
||||
</h1>
|
||||
<div class="">
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item"><a href="javascript:void(0);">مدیریت کاربران</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">جزئیات کاربر</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
|
||||
<!-- User Info Card -->
|
||||
<div class="card custom-card mb-4">
|
||||
<div class="card-header">
|
||||
<div class="card-title">اطلاعات کاربر</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-center p-3 pt-0">
|
||||
<div class="card-body flex-grow-1">
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-sm-3 my-2 fw-semibold">نام کامل:</dt>
|
||||
<dd class="col-sm-9 my-2">{{getUserFullName($user)}}</dd>
|
||||
|
||||
<dt class="col-sm-3 my-2 fw-semibold">ایمیل:</dt>
|
||||
<dd class="col-sm-9 my-2">{{$user->email}}</dd>
|
||||
|
||||
<dt class="col-sm-3 my-2 fw-semibold">شماره تلفن:</dt>
|
||||
<dd class="col-sm-9 my-2">{{$user->mobile}}</dd>
|
||||
|
||||
<dt class="col-sm-3 my-2 fw-semibold">تاریخ ثبتنام:</dt>
|
||||
<dd class="col-sm-9 my-2">{{$user->created_at->toJalali()->format('H:i Y-m-d')}}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user