Commit 01e6816d2631836a9ac4393558aefaa1d707a00f
1 parent
e4220ec543
Exists in
master
and in
1 other branch
Добавление модели образование, справочник образование, соискатели, работодатели
Showing 21 changed files with 366 additions and 43 deletions Inline Diff
- app/Http/Controllers/Admin/EducationController.php
- app/Http/Requests/EducationRequest.php
- app/Models/Education.php
- database/migrations/2023_10_10_094144_alter_table_education.php
- html/public/modals.html
- resources/views/admin/ad_employers/index.blade.php
- resources/views/admin/education/add.blade.php
- resources/views/admin/education/edit.blade.php
- resources/views/admin/education/form.blade.php
- resources/views/admin/education/index.blade.php
- resources/views/admin/employer/index.blade.php
- resources/views/admin/employer/index_ajax.blade.php
- resources/views/admin/employer/modal.blade.php
- resources/views/admin/message/index.blade.php
- resources/views/admin/message/index_ajax.blade.php
- resources/views/admin/users/index.blade.php
- resources/views/admin/users/index_ajax.blade.php
- resources/views/admin/worker/index.blade.php
- resources/views/admin/worker/index_ajax.blade.php
- resources/views/layout/admin.blade.php
- routes/web.php
app/Http/Controllers/Admin/EducationController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers\Admin; | 3 | namespace App\Http\Controllers\Admin; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Http\Requests\EducationRequest; | 6 | use App\Http\Requests\EducationRequest; |
7 | use App\Models\Education; | 7 | use App\Models\Education; |
8 | use Illuminate\Http\Request; | 8 | use Illuminate\Http\Request; |
9 | use Illuminate\Support\Facades\Storage; | ||
9 | 10 | ||
10 | class EducationController extends Controller | 11 | class EducationController extends Controller |
11 | { | 12 | { |
12 | /** | 13 | /** |
13 | * Display a listing of the resource. | 14 | * Display a listing of the resource. |
14 | * | 15 | * |
15 | * @return \Illuminate\Http\Response | 16 | * @return \Illuminate\Http\Response |
16 | */ | 17 | */ |
17 | public function index() | 18 | public function index() |
18 | { | 19 | { |
19 | $education = Education::query()->active()->paginate(15); | 20 | $education = Education::query()->active()->paginate(15); |
20 | return view('admin.education.index', compact('education')); | 21 | return view('admin.education.index', compact('education')); |
21 | } | 22 | } |
22 | 23 | ||
23 | /** | 24 | /** |
24 | * Show the form for creating a new resource. | 25 | * Show the form for creating a new resource. |
25 | * | 26 | * |
26 | * @return \Illuminate\Http\Response | 27 | * @return \Illuminate\Http\Response |
27 | */ | 28 | */ |
28 | public function create() | 29 | public function create() |
29 | { | 30 | { |
30 | return view('admin.education.add'); | 31 | return view('admin.education.add'); |
31 | } | 32 | } |
32 | 33 | ||
33 | /** | 34 | /** |
34 | * Store a newly created resource in storage. | 35 | * Store a newly created resource in storage. |
35 | * | 36 | * |
36 | * @param \Illuminate\Http\Request $request | 37 | * @param \Illuminate\Http\Request $request |
37 | * @return \Illuminate\Http\Response | 38 | * @return \Illuminate\Http\Response |
38 | */ | 39 | */ |
39 | public function store(EducationRequest $request) | 40 | public function store(EducationRequest $request) |
40 | { | 41 | { |
41 | Education::create($request->all()); | 42 | $params = $request->all(); |
43 | if ($request->has('image')) { | ||
44 | $params['image'] = $request->file('image')->store("education", 'public'); | ||
45 | } | ||
46 | Education::create($params); | ||
47 | |||
48 | |||
42 | return redirect()->route('admin.education.index'); | 49 | return redirect()->route('admin.education.index'); |
43 | } | 50 | } |
44 | 51 | ||
45 | /** | 52 | /** |
46 | * Display the specified resource. | 53 | * Display the specified resource. |
47 | * | 54 | * |
48 | * @param \App\Models\Education $education | 55 | * @param \App\Models\Education $education |
49 | * @return \Illuminate\Http\Response | 56 | * @return \Illuminate\Http\Response |
50 | */ | 57 | */ |
51 | public function show(Education $education) | 58 | public function show(Education $education) |
52 | { | 59 | { |
53 | // | 60 | // |
54 | } | 61 | } |
55 | 62 | ||
56 | /** | 63 | /** |
57 | * Show the form for editing the specified resource. | 64 | * Show the form for editing the specified resource. |
58 | * | 65 | * |
59 | * @param \App\Models\Education $education | 66 | * @param \App\Models\Education $education |
60 | * @return \Illuminate\Http\Response | 67 | * @return \Illuminate\Http\Response |
61 | */ | 68 | */ |
62 | public function edit(Education $education) | 69 | public function edit(Education $education) |
63 | { | 70 | { |
71 | |||
64 | return view('admin.education.edit', compact('education')); | 72 | return view('admin.education.edit', compact('education')); |
65 | } | 73 | } |
66 | 74 | ||
67 | /** | 75 | /** |
68 | * Update the specified resource in storage. | 76 | * Update the specified resource in storage. |
69 | * | 77 | * |
70 | * @param \Illuminate\Http\Request $request | 78 | * @param \Illuminate\Http\Request $request |
71 | * @param \App\Models\Education $education | 79 | * @param \App\Models\Education $education |
72 | * @return \Illuminate\Http\Response | 80 | * @return \Illuminate\Http\Response |
73 | */ | 81 | */ |
74 | public function update(EducationRequest $request, Education $education) | 82 | public function update(EducationRequest $request, Education $education) |
75 | { | 83 | { |
76 | $education->update($request->all()); | 84 | $params = $request->all(); |
85 | if ($request->has('image')) { | ||
86 | if (!empty($education->image)) { | ||
87 | Storage::delete($education->image); | ||
88 | } | ||
89 | $params['image'] = $request->file('image')->store("education", 'public'); | ||
90 | } | ||
91 | |||
92 | $education->update($params); | ||
77 | return redirect()->route('admin.education.index'); | 93 | return redirect()->route('admin.education.index'); |
78 | } | 94 | } |
79 | 95 | ||
80 | /** | 96 | /** |
81 | * Remove the specified resource from storage. | 97 | * Remove the specified resource from storage. |
82 | * | 98 | * |
83 | * @param \App\Models\Education $education | 99 | * @param \App\Models\Education $education |
84 | * @return \Illuminate\Http\Response | 100 | * @return \Illuminate\Http\Response |
85 | */ | 101 | */ |
86 | public function destroy(Education $education) | 102 | public function destroy(Education $education) |
87 | { | 103 | { |
88 | $education->update(['is_remove' => 1]); | 104 | $education->update(['is_remove' => 1]); |
89 | return redirect()->route('admin.education.index'); | 105 | return redirect()->route('admin.education.index'); |
90 | } | 106 | } |
91 | } | 107 | } |
92 | 108 |
app/Http/Requests/EducationRequest.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Requests; | 3 | namespace App\Http\Requests; |
4 | 4 | ||
5 | use Illuminate\Foundation\Http\FormRequest; | 5 | use Illuminate\Foundation\Http\FormRequest; |
6 | 6 | ||
7 | class EducationRequest extends FormRequest | 7 | class EducationRequest extends FormRequest |
8 | { | 8 | { |
9 | /** | 9 | /** |
10 | * Determine if the user is authorized to make this request. | 10 | * Determine if the user is authorized to make this request. |
11 | * | 11 | * |
12 | * @return bool | 12 | * @return bool |
13 | */ | 13 | */ |
14 | public function authorize() | 14 | public function authorize() |
15 | { | 15 | { |
16 | return true; | 16 | return true; |
17 | } | 17 | } |
18 | 18 | ||
19 | /** | 19 | /** |
20 | * Get the validation rules that apply to the request. | 20 | * Get the validation rules that apply to the request. |
21 | * | 21 | * |
22 | * @return array<string, mixed> | 22 | * @return array<string, mixed> |
23 | */ | 23 | */ |
24 | public function rules() | 24 | public function rules() |
25 | { | 25 | { |
26 | return [ | 26 | return [ |
27 | 'name' => 'required|min:3|max:255', | 27 | 'name' => 'required|min:3|max:255', |
28 | 'email' => 'required|email|min:5', | ||
29 | 'image' => [ | ||
30 | 'mimes:jpeg,jpg,png', | ||
31 | 'max:10000' | ||
32 | ], | ||
28 | ]; | 33 | ]; |
29 | } | 34 | } |
30 | 35 | ||
31 | public function messages() { | 36 | public function messages() { |
32 | return [ | 37 | return [ |
33 | 'required' => 'Поле :attribute обязательно для ввода', | 38 | 'required' => 'Поле :attribute обязательно для ввода', |
34 | 'min' => [ | 39 | 'min' => [ |
35 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 40 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
36 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 41 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
37 | ], | 42 | ], |
38 | 'max' => [ | 43 | 'max' => [ |
39 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 44 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
40 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 45 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
41 | ], | 46 | ], |
47 | 'email' => 'Введите корректный емайл' | ||
42 | 48 | ||
43 | ]; | 49 | ]; |
44 | } | 50 | } |
45 | } | 51 | } |
46 | 52 |
app/Models/Education.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Education extends Model | 8 | class Education extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | 11 | ||
12 | protected $fillable = [ | 12 | protected $fillable = [ |
13 | 'name', | 13 | 'name', |
14 | 'is_remove' | 14 | 'is_remove', |
15 | 'address', | ||
16 | 'telephone', | ||
17 | 'email', | ||
18 | 'text', | ||
19 | 'image' | ||
15 | ]; | 20 | ]; |
16 | 21 | ||
17 | public function scopeActive($query) { | 22 | public function scopeActive($query) { |
18 | return $query->where('is_remove', '=', '0'); | 23 | return $query->where('is_remove', '=', '0'); |
19 | } | 24 | } |
20 | } | 25 | } |
21 | 26 |
database/migrations/2023_10_10_094144_alter_table_education.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('education', function (Blueprint $table) { | ||
17 | $table->string('address', 255)->nullable(); | ||
18 | $table->string('telephone', 255)->nullable(); | ||
19 | $table->string('email', 255)->nullable(); | ||
20 | $table->text('text')->nullable(); | ||
21 | $table->string('image', 255)->nullable(); | ||
22 | }); | ||
23 | } | ||
24 | |||
25 | /** | ||
26 | * Reverse the migrations. | ||
27 | * | ||
28 | * @return void | ||
29 | */ | ||
30 | public function down() | ||
31 | { | ||
32 | Schema::table('education', function (Blueprint $table) { | ||
33 | $table->dropColumn('address'); | ||
34 | $table->dropColumn('telephone'); | ||
35 | $table->dropColumn('email'); | ||
36 | $table->dropColumn('text'); | ||
37 | $table->dropColumn('image'); | ||
38 | }); | ||
39 | } | ||
40 | }; | ||
41 |
html/public/modals.html
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html :class="{ 'theme-dark': dark }" x-data="data()" lang="en"> | 2 | <html :class="{ 'theme-dark': dark }" x-data="data()" lang="en"> |
3 | <head> | 3 | <head> |
4 | <meta charset="UTF-8" /> | 4 | <meta charset="UTF-8" /> |
5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
6 | <title>Modals - Windmill Dashboard</title> | 6 | <title>Modals - Windmill Dashboard</title> |
7 | <link | 7 | <link |
8 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" | 8 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" |
9 | rel="stylesheet" | 9 | rel="stylesheet" |
10 | /> | 10 | /> |
11 | <link rel="stylesheet" href="./assets/css/tailwind.output.css" /> | 11 | <link rel="stylesheet" href="./assets/css/tailwind.output.css" /> |
12 | <script | 12 | <script |
13 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" | 13 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" |
14 | defer | 14 | defer |
15 | ></script> | 15 | ></script> |
16 | <script src="./assets/js/init-alpine.js"></script> | 16 | <script src="./assets/js/init-alpine.js"></script> |
17 | <!-- You need focus-trap.js to make the modal accessible --> | 17 | <!-- You need focus-trap.js to make the modal accessible --> |
18 | <script src="./assets/js/focus-trap.js" defer></script> | 18 | <script src="./assets/js/focus-trap.js" defer></script> |
19 | </head> | 19 | </head> |
20 | <body> | 20 | <body> |
21 | <div | 21 | <div |
22 | class="flex h-screen bg-gray-50 dark:bg-gray-900" | 22 | class="flex h-screen bg-gray-50 dark:bg-gray-900" |
23 | :class="{ 'overflow-hidden': isSideMenuOpen}" | 23 | :class="{ 'overflow-hidden': isSideMenuOpen}" |
24 | > | 24 | > |
25 | <!-- Desktop sidebar --> | 25 | <!-- Desktop sidebar --> |
26 | <aside | 26 | <aside |
27 | class="z-20 flex-shrink-0 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block" | 27 | class="z-20 flex-shrink-0 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block" |
28 | > | 28 | > |
29 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 29 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
30 | <a | 30 | <a |
31 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 31 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
32 | href="#" | 32 | href="#" |
33 | > | 33 | > |
34 | Windmill | 34 | Windmill |
35 | </a> | 35 | </a> |
36 | <ul class="mt-6"> | 36 | <ul class="mt-6"> |
37 | <li class="relative px-6 py-3"> | 37 | <li class="relative px-6 py-3"> |
38 | <a | 38 | <a |
39 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 39 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
40 | href="index.html" | 40 | href="index.html" |
41 | > | 41 | > |
42 | <svg | 42 | <svg |
43 | class="w-5 h-5" | 43 | class="w-5 h-5" |
44 | aria-hidden="true" | 44 | aria-hidden="true" |
45 | fill="none" | 45 | fill="none" |
46 | stroke-linecap="round" | 46 | stroke-linecap="round" |
47 | stroke-linejoin="round" | 47 | stroke-linejoin="round" |
48 | stroke-width="2" | 48 | stroke-width="2" |
49 | viewBox="0 0 24 24" | 49 | viewBox="0 0 24 24" |
50 | stroke="currentColor" | 50 | stroke="currentColor" |
51 | > | 51 | > |
52 | <path | 52 | <path |
53 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" | 53 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
54 | ></path> | 54 | ></path> |
55 | </svg> | 55 | </svg> |
56 | <span class="ml-4">Dashboard</span> | 56 | <span class="ml-4">Dashboard</span> |
57 | </a> | 57 | </a> |
58 | </li> | 58 | </li> |
59 | </ul> | 59 | </ul> |
60 | <ul> | 60 | <ul> |
61 | <li class="relative px-6 py-3"> | 61 | <li class="relative px-6 py-3"> |
62 | <a | 62 | <a |
63 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 63 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
64 | href="forms.html" | 64 | href="forms.html" |
65 | > | 65 | > |
66 | <svg | 66 | <svg |
67 | class="w-5 h-5" | 67 | class="w-5 h-5" |
68 | aria-hidden="true" | 68 | aria-hidden="true" |
69 | fill="none" | 69 | fill="none" |
70 | stroke-linecap="round" | 70 | stroke-linecap="round" |
71 | stroke-linejoin="round" | 71 | stroke-linejoin="round" |
72 | stroke-width="2" | 72 | stroke-width="2" |
73 | viewBox="0 0 24 24" | 73 | viewBox="0 0 24 24" |
74 | stroke="currentColor" | 74 | stroke="currentColor" |
75 | > | 75 | > |
76 | <path | 76 | <path |
77 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 77 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
78 | ></path> | 78 | ></path> |
79 | </svg> | 79 | </svg> |
80 | <span class="ml-4">Forms</span> | 80 | <span class="ml-4">Forms</span> |
81 | </a> | 81 | </a> |
82 | </li> | 82 | </li> |
83 | <li class="relative px-6 py-3"> | 83 | <li class="relative px-6 py-3"> |
84 | <a | 84 | <a |
85 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 85 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
86 | href="cards.html" | 86 | href="cards.html" |
87 | > | 87 | > |
88 | <svg | 88 | <svg |
89 | class="w-5 h-5" | 89 | class="w-5 h-5" |
90 | aria-hidden="true" | 90 | aria-hidden="true" |
91 | fill="none" | 91 | fill="none" |
92 | stroke-linecap="round" | 92 | stroke-linecap="round" |
93 | stroke-linejoin="round" | 93 | stroke-linejoin="round" |
94 | stroke-width="2" | 94 | stroke-width="2" |
95 | viewBox="0 0 24 24" | 95 | viewBox="0 0 24 24" |
96 | stroke="currentColor" | 96 | stroke="currentColor" |
97 | > | 97 | > |
98 | <path | 98 | <path |
99 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 99 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
100 | ></path> | 100 | ></path> |
101 | </svg> | 101 | </svg> |
102 | <span class="ml-4">Cards</span> | 102 | <span class="ml-4">Cards</span> |
103 | </a> | 103 | </a> |
104 | </li> | 104 | </li> |
105 | <li class="relative px-6 py-3"> | 105 | <li class="relative px-6 py-3"> |
106 | <a | 106 | <a |
107 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 107 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
108 | href="charts.html" | 108 | href="charts.html" |
109 | > | 109 | > |
110 | <svg | 110 | <svg |
111 | class="w-5 h-5" | 111 | class="w-5 h-5" |
112 | aria-hidden="true" | 112 | aria-hidden="true" |
113 | fill="none" | 113 | fill="none" |
114 | stroke-linecap="round" | 114 | stroke-linecap="round" |
115 | stroke-linejoin="round" | 115 | stroke-linejoin="round" |
116 | stroke-width="2" | 116 | stroke-width="2" |
117 | viewBox="0 0 24 24" | 117 | viewBox="0 0 24 24" |
118 | stroke="currentColor" | 118 | stroke="currentColor" |
119 | > | 119 | > |
120 | <path | 120 | <path |
121 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 121 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
122 | ></path> | 122 | ></path> |
123 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 123 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
124 | </svg> | 124 | </svg> |
125 | <span class="ml-4">Charts</span> | 125 | <span class="ml-4">Charts</span> |
126 | </a> | 126 | </a> |
127 | </li> | 127 | </li> |
128 | <li class="relative px-6 py-3"> | 128 | <li class="relative px-6 py-3"> |
129 | <a | 129 | <a |
130 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 130 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
131 | href="buttons.html" | 131 | href="buttons.html" |
132 | > | 132 | > |
133 | <svg | 133 | <svg |
134 | class="w-5 h-5" | 134 | class="w-5 h-5" |
135 | aria-hidden="true" | 135 | aria-hidden="true" |
136 | fill="none" | 136 | fill="none" |
137 | stroke-linecap="round" | 137 | stroke-linecap="round" |
138 | stroke-linejoin="round" | 138 | stroke-linejoin="round" |
139 | stroke-width="2" | 139 | stroke-width="2" |
140 | viewBox="0 0 24 24" | 140 | viewBox="0 0 24 24" |
141 | stroke="currentColor" | 141 | stroke="currentColor" |
142 | > | 142 | > |
143 | <path | 143 | <path |
144 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 144 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
145 | ></path> | 145 | ></path> |
146 | </svg> | 146 | </svg> |
147 | <span class="ml-4">Buttons</span> | 147 | <span class="ml-4">Buttons</span> |
148 | </a> | 148 | </a> |
149 | </li> | 149 | </li> |
150 | <li class="relative px-6 py-3"> | 150 | <li class="relative px-6 py-3"> |
151 | <span | 151 | <span |
152 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 152 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
153 | aria-hidden="true" | 153 | aria-hidden="true" |
154 | ></span> | 154 | ></span> |
155 | <a | 155 | <a |
156 | class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" | 156 | class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" |
157 | href="modals.html" | 157 | href="modals.html" |
158 | > | 158 | > |
159 | <svg | 159 | <svg |
160 | class="w-5 h-5" | 160 | class="w-5 h-5" |
161 | aria-hidden="true" | 161 | aria-hidden="true" |
162 | fill="none" | 162 | fill="none" |
163 | stroke-linecap="round" | 163 | stroke-linecap="round" |
164 | stroke-linejoin="round" | 164 | stroke-linejoin="round" |
165 | stroke-width="2" | 165 | stroke-width="2" |
166 | viewBox="0 0 24 24" | 166 | viewBox="0 0 24 24" |
167 | stroke="currentColor" | 167 | stroke="currentColor" |
168 | > | 168 | > |
169 | <path | 169 | <path |
170 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" | 170 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" |
171 | ></path> | 171 | ></path> |
172 | </svg> | 172 | </svg> |
173 | <span class="ml-4">Modals</span> | 173 | <span class="ml-4">Modals</span> |
174 | </a> | 174 | </a> |
175 | </li> | 175 | </li> |
176 | <li class="relative px-6 py-3"> | 176 | <li class="relative px-6 py-3"> |
177 | <a | 177 | <a |
178 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 178 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
179 | href="tables.html" | 179 | href="tables.html" |
180 | > | 180 | > |
181 | <svg | 181 | <svg |
182 | class="w-5 h-5" | 182 | class="w-5 h-5" |
183 | aria-hidden="true" | 183 | aria-hidden="true" |
184 | fill="none" | 184 | fill="none" |
185 | stroke-linecap="round" | 185 | stroke-linecap="round" |
186 | stroke-linejoin="round" | 186 | stroke-linejoin="round" |
187 | stroke-width="2" | 187 | stroke-width="2" |
188 | viewBox="0 0 24 24" | 188 | viewBox="0 0 24 24" |
189 | stroke="currentColor" | 189 | stroke="currentColor" |
190 | > | 190 | > |
191 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 191 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
192 | </svg> | 192 | </svg> |
193 | <span class="ml-4">Tables</span> | 193 | <span class="ml-4">Tables</span> |
194 | </a> | 194 | </a> |
195 | </li> | 195 | </li> |
196 | <li class="relative px-6 py-3"> | 196 | <li class="relative px-6 py-3"> |
197 | <button | 197 | <button |
198 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 198 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
199 | @click="togglePagesMenu" | 199 | @click="togglePagesMenu" |
200 | aria-haspopup="true" | 200 | aria-haspopup="true" |
201 | > | 201 | > |
202 | <span class="inline-flex items-center"> | 202 | <span class="inline-flex items-center"> |
203 | <svg | 203 | <svg |
204 | class="w-5 h-5" | 204 | class="w-5 h-5" |
205 | aria-hidden="true" | 205 | aria-hidden="true" |
206 | fill="none" | 206 | fill="none" |
207 | stroke-linecap="round" | 207 | stroke-linecap="round" |
208 | stroke-linejoin="round" | 208 | stroke-linejoin="round" |
209 | stroke-width="2" | 209 | stroke-width="2" |
210 | viewBox="0 0 24 24" | 210 | viewBox="0 0 24 24" |
211 | stroke="currentColor" | 211 | stroke="currentColor" |
212 | > | 212 | > |
213 | <path | 213 | <path |
214 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" | 214 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" |
215 | ></path> | 215 | ></path> |
216 | </svg> | 216 | </svg> |
217 | <span class="ml-4">Pages</span> | 217 | <span class="ml-4">Pages</span> |
218 | </span> | 218 | </span> |
219 | <svg | 219 | <svg |
220 | class="w-4 h-4" | 220 | class="w-4 h-4" |
221 | aria-hidden="true" | 221 | aria-hidden="true" |
222 | fill="currentColor" | 222 | fill="currentColor" |
223 | viewBox="0 0 20 20" | 223 | viewBox="0 0 20 20" |
224 | > | 224 | > |
225 | <path | 225 | <path |
226 | fill-rule="evenodd" | 226 | fill-rule="evenodd" |
227 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" | 227 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |
228 | clip-rule="evenodd" | 228 | clip-rule="evenodd" |
229 | ></path> | 229 | ></path> |
230 | </svg> | 230 | </svg> |
231 | </button> | 231 | </button> |
232 | <template x-if="isPagesMenuOpen"> | 232 | <template x-if="isPagesMenuOpen"> |
233 | <ul | 233 | <ul |
234 | x-transition:enter="transition-all ease-in-out duration-300" | 234 | x-transition:enter="transition-all ease-in-out duration-300" |
235 | x-transition:enter-start="opacity-25 max-h-0" | 235 | x-transition:enter-start="opacity-25 max-h-0" |
236 | x-transition:enter-end="opacity-100 max-h-xl" | 236 | x-transition:enter-end="opacity-100 max-h-xl" |
237 | x-transition:leave="transition-all ease-in-out duration-300" | 237 | x-transition:leave="transition-all ease-in-out duration-300" |
238 | x-transition:leave-start="opacity-100 max-h-xl" | 238 | x-transition:leave-start="opacity-100 max-h-xl" |
239 | x-transition:leave-end="opacity-0 max-h-0" | 239 | x-transition:leave-end="opacity-0 max-h-0" |
240 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" | 240 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" |
241 | aria-label="submenu" | 241 | aria-label="submenu" |
242 | > | 242 | > |
243 | <li | 243 | <li |
244 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 244 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
245 | > | 245 | > |
246 | <a class="w-full" href="pages/login.html">Login</a> | 246 | <a class="w-full" href="pages/login.html">Login</a> |
247 | </li> | 247 | </li> |
248 | <li | 248 | <li |
249 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 249 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
250 | > | 250 | > |
251 | <a class="w-full" href="pages/create-account.html"> | 251 | <a class="w-full" href="pages/create-account.html"> |
252 | Create account | 252 | Create account |
253 | </a> | 253 | </a> |
254 | </li> | 254 | </li> |
255 | <li | 255 | <li |
256 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 256 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
257 | > | 257 | > |
258 | <a class="w-full" href="pages/forgot-password.html"> | 258 | <a class="w-full" href="pages/forgot-password.html"> |
259 | Forgot password | 259 | Forgot password |
260 | </a> | 260 | </a> |
261 | </li> | 261 | </li> |
262 | <li | 262 | <li |
263 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 263 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
264 | > | 264 | > |
265 | <a class="w-full" href="pages/404.html">404</a> | 265 | <a class="w-full" href="pages/404.html">404</a> |
266 | </li> | 266 | </li> |
267 | <li | 267 | <li |
268 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 268 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
269 | > | 269 | > |
270 | <a class="w-full" href="pages/blank.html">Blank</a> | 270 | <a class="w-full" href="pages/blank.html">Blank</a> |
271 | </li> | 271 | </li> |
272 | </ul> | 272 | </ul> |
273 | </template> | 273 | </template> |
274 | </li> | 274 | </li> |
275 | </ul> | 275 | </ul> |
276 | <div class="px-6 my-6"> | 276 | <div class="px-6 my-6"> |
277 | <button | 277 | <button |
278 | class="flex items-center justify-between w-full px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 278 | class="flex items-center justify-between w-full px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
279 | > | 279 | > |
280 | Create account | 280 | Create account |
281 | <span class="ml-2" aria-hidden="true">+</span> | 281 | <span class="ml-2" aria-hidden="true">+</span> |
282 | </button> | 282 | </button> |
283 | </div> | 283 | </div> |
284 | </div> | 284 | </div> |
285 | </aside> | 285 | </aside> |
286 | <!-- Mobile sidebar --> | 286 | <!-- Mobile sidebar --> |
287 | <!-- Backdrop --> | 287 | <!-- Backdrop --> |
288 | <div | 288 | <div |
289 | x-show="isSideMenuOpen" | 289 | x-show="isSideMenuOpen" |
290 | x-transition:enter="transition ease-in-out duration-150" | 290 | x-transition:enter="transition ease-in-out duration-150" |
291 | x-transition:enter-start="opacity-0" | 291 | x-transition:enter-start="opacity-0" |
292 | x-transition:enter-end="opacity-100" | 292 | x-transition:enter-end="opacity-100" |
293 | x-transition:leave="transition ease-in-out duration-150" | 293 | x-transition:leave="transition ease-in-out duration-150" |
294 | x-transition:leave-start="opacity-100" | 294 | x-transition:leave-start="opacity-100" |
295 | x-transition:leave-end="opacity-0" | 295 | x-transition:leave-end="opacity-0" |
296 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | 296 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" |
297 | ></div> | 297 | ></div> |
298 | <aside | 298 | <aside |
299 | class="fixed inset-y-0 z-20 flex-shrink-0 w-64 mt-16 overflow-y-auto bg-white dark:bg-gray-800 md:hidden" | 299 | class="fixed inset-y-0 z-20 flex-shrink-0 w-64 mt-16 overflow-y-auto bg-white dark:bg-gray-800 md:hidden" |
300 | x-show="isSideMenuOpen" | 300 | x-show="isSideMenuOpen" |
301 | x-transition:enter="transition ease-in-out duration-150" | 301 | x-transition:enter="transition ease-in-out duration-150" |
302 | x-transition:enter-start="opacity-0 transform -translate-x-20" | 302 | x-transition:enter-start="opacity-0 transform -translate-x-20" |
303 | x-transition:enter-end="opacity-100" | 303 | x-transition:enter-end="opacity-100" |
304 | x-transition:leave="transition ease-in-out duration-150" | 304 | x-transition:leave="transition ease-in-out duration-150" |
305 | x-transition:leave-start="opacity-100" | 305 | x-transition:leave-start="opacity-100" |
306 | x-transition:leave-end="opacity-0 transform -translate-x-20" | 306 | x-transition:leave-end="opacity-0 transform -translate-x-20" |
307 | @click.away="closeSideMenu" | 307 | @click.away="closeSideMenu" |
308 | @keydown.escape="closeSideMenu" | 308 | @keydown.escape="closeSideMenu" |
309 | > | 309 | > |
310 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 310 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
311 | <a | 311 | <a |
312 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 312 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
313 | href="#" | 313 | href="#" |
314 | > | 314 | > |
315 | Windmill | 315 | Windmill |
316 | </a> | 316 | </a> |
317 | <ul class="mt-6"> | 317 | <ul class="mt-6"> |
318 | <li class="relative px-6 py-3"> | 318 | <li class="relative px-6 py-3"> |
319 | <a | 319 | <a |
320 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 320 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
321 | href="index.html" | 321 | href="index.html" |
322 | > | 322 | > |
323 | <svg | 323 | <svg |
324 | class="w-5 h-5" | 324 | class="w-5 h-5" |
325 | aria-hidden="true" | 325 | aria-hidden="true" |
326 | fill="none" | 326 | fill="none" |
327 | stroke-linecap="round" | 327 | stroke-linecap="round" |
328 | stroke-linejoin="round" | 328 | stroke-linejoin="round" |
329 | stroke-width="2" | 329 | stroke-width="2" |
330 | viewBox="0 0 24 24" | 330 | viewBox="0 0 24 24" |
331 | stroke="currentColor" | 331 | stroke="currentColor" |
332 | > | 332 | > |
333 | <path | 333 | <path |
334 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" | 334 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
335 | ></path> | 335 | ></path> |
336 | </svg> | 336 | </svg> |
337 | <span class="ml-4">Dashboard</span> | 337 | <span class="ml-4">Dashboard</span> |
338 | </a> | 338 | </a> |
339 | </li> | 339 | </li> |
340 | </ul> | 340 | </ul> |
341 | <ul> | 341 | <ul> |
342 | <li class="relative px-6 py-3"> | 342 | <li class="relative px-6 py-3"> |
343 | <a | 343 | <a |
344 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 344 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
345 | href="forms.html" | 345 | href="forms.html" |
346 | > | 346 | > |
347 | <svg | 347 | <svg |
348 | class="w-5 h-5" | 348 | class="w-5 h-5" |
349 | aria-hidden="true" | 349 | aria-hidden="true" |
350 | fill="none" | 350 | fill="none" |
351 | stroke-linecap="round" | 351 | stroke-linecap="round" |
352 | stroke-linejoin="round" | 352 | stroke-linejoin="round" |
353 | stroke-width="2" | 353 | stroke-width="2" |
354 | viewBox="0 0 24 24" | 354 | viewBox="0 0 24 24" |
355 | stroke="currentColor" | 355 | stroke="currentColor" |
356 | > | 356 | > |
357 | <path | 357 | <path |
358 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 358 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
359 | ></path> | 359 | ></path> |
360 | </svg> | 360 | </svg> |
361 | <span class="ml-4">Forms</span> | 361 | <span class="ml-4">Forms</span> |
362 | </a> | 362 | </a> |
363 | </li> | 363 | </li> |
364 | <li class="relative px-6 py-3"> | 364 | <li class="relative px-6 py-3"> |
365 | <a | 365 | <a |
366 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 366 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
367 | href="cards.html" | 367 | href="cards.html" |
368 | > | 368 | > |
369 | <svg | 369 | <svg |
370 | class="w-5 h-5" | 370 | class="w-5 h-5" |
371 | aria-hidden="true" | 371 | aria-hidden="true" |
372 | fill="none" | 372 | fill="none" |
373 | stroke-linecap="round" | 373 | stroke-linecap="round" |
374 | stroke-linejoin="round" | 374 | stroke-linejoin="round" |
375 | stroke-width="2" | 375 | stroke-width="2" |
376 | viewBox="0 0 24 24" | 376 | viewBox="0 0 24 24" |
377 | stroke="currentColor" | 377 | stroke="currentColor" |
378 | > | 378 | > |
379 | <path | 379 | <path |
380 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 380 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
381 | ></path> | 381 | ></path> |
382 | </svg> | 382 | </svg> |
383 | <span class="ml-4">Cards</span> | 383 | <span class="ml-4">Cards</span> |
384 | </a> | 384 | </a> |
385 | </li> | 385 | </li> |
386 | <li class="relative px-6 py-3"> | 386 | <li class="relative px-6 py-3"> |
387 | <a | 387 | <a |
388 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 388 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
389 | href="charts.html" | 389 | href="charts.html" |
390 | > | 390 | > |
391 | <svg | 391 | <svg |
392 | class="w-5 h-5" | 392 | class="w-5 h-5" |
393 | aria-hidden="true" | 393 | aria-hidden="true" |
394 | fill="none" | 394 | fill="none" |
395 | stroke-linecap="round" | 395 | stroke-linecap="round" |
396 | stroke-linejoin="round" | 396 | stroke-linejoin="round" |
397 | stroke-width="2" | 397 | stroke-width="2" |
398 | viewBox="0 0 24 24" | 398 | viewBox="0 0 24 24" |
399 | stroke="currentColor" | 399 | stroke="currentColor" |
400 | > | 400 | > |
401 | <path | 401 | <path |
402 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 402 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
403 | ></path> | 403 | ></path> |
404 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 404 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
405 | </svg> | 405 | </svg> |
406 | <span class="ml-4">Charts</span> | 406 | <span class="ml-4">Charts</span> |
407 | </a> | 407 | </a> |
408 | </li> | 408 | </li> |
409 | <li class="relative px-6 py-3"> | 409 | <li class="relative px-6 py-3"> |
410 | <a | 410 | <a |
411 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 411 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
412 | href="buttons.html" | 412 | href="buttons.html" |
413 | > | 413 | > |
414 | <svg | 414 | <svg |
415 | class="w-5 h-5" | 415 | class="w-5 h-5" |
416 | aria-hidden="true" | 416 | aria-hidden="true" |
417 | fill="none" | 417 | fill="none" |
418 | stroke-linecap="round" | 418 | stroke-linecap="round" |
419 | stroke-linejoin="round" | 419 | stroke-linejoin="round" |
420 | stroke-width="2" | 420 | stroke-width="2" |
421 | viewBox="0 0 24 24" | 421 | viewBox="0 0 24 24" |
422 | stroke="currentColor" | 422 | stroke="currentColor" |
423 | > | 423 | > |
424 | <path | 424 | <path |
425 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 425 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
426 | ></path> | 426 | ></path> |
427 | </svg> | 427 | </svg> |
428 | <span class="ml-4">Buttons</span> | 428 | <span class="ml-4">Buttons</span> |
429 | </a> | 429 | </a> |
430 | </li> | 430 | </li> |
431 | <li class="relative px-6 py-3"> | 431 | <li class="relative px-6 py-3"> |
432 | <span | 432 | <span |
433 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 433 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
434 | aria-hidden="true" | 434 | aria-hidden="true" |
435 | ></span> | 435 | ></span> |
436 | <a | 436 | <a |
437 | class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" | 437 | class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" |
438 | href="modals.html" | 438 | href="modals.html" |
439 | > | 439 | > |
440 | <svg | 440 | <svg |
441 | class="w-5 h-5" | 441 | class="w-5 h-5" |
442 | aria-hidden="true" | 442 | aria-hidden="true" |
443 | fill="none" | 443 | fill="none" |
444 | stroke-linecap="round" | 444 | stroke-linecap="round" |
445 | stroke-linejoin="round" | 445 | stroke-linejoin="round" |
446 | stroke-width="2" | 446 | stroke-width="2" |
447 | viewBox="0 0 24 24" | 447 | viewBox="0 0 24 24" |
448 | stroke="currentColor" | 448 | stroke="currentColor" |
449 | > | 449 | > |
450 | <path | 450 | <path |
451 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" | 451 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" |
452 | ></path> | 452 | ></path> |
453 | </svg> | 453 | </svg> |
454 | <span class="ml-4">Modals</span> | 454 | <span class="ml-4">Modals</span> |
455 | </a> | 455 | </a> |
456 | </li> | 456 | </li> |
457 | <li class="relative px-6 py-3"> | 457 | <li class="relative px-6 py-3"> |
458 | <a | 458 | <a |
459 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 459 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
460 | href="tables.html" | 460 | href="tables.html" |
461 | > | 461 | > |
462 | <svg | 462 | <svg |
463 | class="w-5 h-5" | 463 | class="w-5 h-5" |
464 | aria-hidden="true" | 464 | aria-hidden="true" |
465 | fill="none" | 465 | fill="none" |
466 | stroke-linecap="round" | 466 | stroke-linecap="round" |
467 | stroke-linejoin="round" | 467 | stroke-linejoin="round" |
468 | stroke-width="2" | 468 | stroke-width="2" |
469 | viewBox="0 0 24 24" | 469 | viewBox="0 0 24 24" |
470 | stroke="currentColor" | 470 | stroke="currentColor" |
471 | > | 471 | > |
472 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 472 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
473 | </svg> | 473 | </svg> |
474 | <span class="ml-4">Tables</span> | 474 | <span class="ml-4">Tables</span> |
475 | </a> | 475 | </a> |
476 | </li> | 476 | </li> |
477 | <li class="relative px-6 py-3"> | 477 | <li class="relative px-6 py-3"> |
478 | <button | 478 | <button |
479 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 479 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
480 | @click="togglePagesMenu" | 480 | @click="togglePagesMenu" |
481 | aria-haspopup="true" | 481 | aria-haspopup="true" |
482 | > | 482 | > |
483 | <span class="inline-flex items-center"> | 483 | <span class="inline-flex items-center"> |
484 | <svg | 484 | <svg |
485 | class="w-5 h-5" | 485 | class="w-5 h-5" |
486 | aria-hidden="true" | 486 | aria-hidden="true" |
487 | fill="none" | 487 | fill="none" |
488 | stroke-linecap="round" | 488 | stroke-linecap="round" |
489 | stroke-linejoin="round" | 489 | stroke-linejoin="round" |
490 | stroke-width="2" | 490 | stroke-width="2" |
491 | viewBox="0 0 24 24" | 491 | viewBox="0 0 24 24" |
492 | stroke="currentColor" | 492 | stroke="currentColor" |
493 | > | 493 | > |
494 | <path | 494 | <path |
495 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" | 495 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" |
496 | ></path> | 496 | ></path> |
497 | </svg> | 497 | </svg> |
498 | <span class="ml-4">Pages</span> | 498 | <span class="ml-4">Pages</span> |
499 | </span> | 499 | </span> |
500 | <svg | 500 | <svg |
501 | class="w-4 h-4" | 501 | class="w-4 h-4" |
502 | aria-hidden="true" | 502 | aria-hidden="true" |
503 | fill="currentColor" | 503 | fill="currentColor" |
504 | viewBox="0 0 20 20" | 504 | viewBox="0 0 20 20" |
505 | > | 505 | > |
506 | <path | 506 | <path |
507 | fill-rule="evenodd" | 507 | fill-rule="evenodd" |
508 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" | 508 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |
509 | clip-rule="evenodd" | 509 | clip-rule="evenodd" |
510 | ></path> | 510 | ></path> |
511 | </svg> | 511 | </svg> |
512 | </button> | 512 | </button> |
513 | <template x-if="isPagesMenuOpen"> | 513 | <template x-if="isPagesMenuOpen"> |
514 | <ul | 514 | <ul |
515 | x-transition:enter="transition-all ease-in-out duration-300" | 515 | x-transition:enter="transition-all ease-in-out duration-300" |
516 | x-transition:enter-start="opacity-25 max-h-0" | 516 | x-transition:enter-start="opacity-25 max-h-0" |
517 | x-transition:enter-end="opacity-100 max-h-xl" | 517 | x-transition:enter-end="opacity-100 max-h-xl" |
518 | x-transition:leave="transition-all ease-in-out duration-300" | 518 | x-transition:leave="transition-all ease-in-out duration-300" |
519 | x-transition:leave-start="opacity-100 max-h-xl" | 519 | x-transition:leave-start="opacity-100 max-h-xl" |
520 | x-transition:leave-end="opacity-0 max-h-0" | 520 | x-transition:leave-end="opacity-0 max-h-0" |
521 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" | 521 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" |
522 | aria-label="submenu" | 522 | aria-label="submenu" |
523 | > | 523 | > |
524 | <li | 524 | <li |
525 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 525 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
526 | > | 526 | > |
527 | <a class="w-full" href="pages/login.html">Login</a> | 527 | <a class="w-full" href="pages/login.html">Login</a> |
528 | </li> | 528 | </li> |
529 | <li | 529 | <li |
530 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 530 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
531 | > | 531 | > |
532 | <a class="w-full" href="pages/create-account.html"> | 532 | <a class="w-full" href="pages/create-account.html"> |
533 | Create account | 533 | Create account |
534 | </a> | 534 | </a> |
535 | </li> | 535 | </li> |
536 | <li | 536 | <li |
537 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 537 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
538 | > | 538 | > |
539 | <a class="w-full" href="pages/forgot-password.html"> | 539 | <a class="w-full" href="pages/forgot-password.html"> |
540 | Forgot password | 540 | Forgot password |
541 | </a> | 541 | </a> |
542 | </li> | 542 | </li> |
543 | <li | 543 | <li |
544 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 544 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
545 | > | 545 | > |
546 | <a class="w-full" href="pages/404.html">404</a> | 546 | <a class="w-full" href="pages/404.html">404</a> |
547 | </li> | 547 | </li> |
548 | <li | 548 | <li |
549 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 549 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
550 | > | 550 | > |
551 | <a class="w-full" href="pages/blank.html">Blank</a> | 551 | <a class="w-full" href="pages/blank.html">Blank</a> |
552 | </li> | 552 | </li> |
553 | </ul> | 553 | </ul> |
554 | </template> | 554 | </template> |
555 | </li> | 555 | </li> |
556 | </ul> | 556 | </ul> |
557 | <div class="px-6 my-6"> | 557 | <div class="px-6 my-6"> |
558 | <button | 558 | <button |
559 | class="flex items-center justify-between px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 559 | class="flex items-center justify-between px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
560 | > | 560 | > |
561 | Create account | 561 | Create account |
562 | <span class="ml-2" aria-hidden="true">+</span> | 562 | <span class="ml-2" aria-hidden="true">+</span> |
563 | </button> | 563 | </button> |
564 | </div> | 564 | </div> |
565 | </div> | 565 | </div> |
566 | </aside> | 566 | </aside> |
567 | <div class="flex flex-col flex-1"> | 567 | <div class="flex flex-col flex-1"> |
568 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> | 568 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> |
569 | <div | 569 | <div |
570 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" | 570 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" |
571 | > | 571 | > |
572 | <!-- Mobile hamburger --> | 572 | <!-- Mobile hamburger --> |
573 | <button | 573 | <button |
574 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" | 574 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" |
575 | @click="toggleSideMenu" | 575 | @click="toggleSideMenu" |
576 | aria-label="Menu" | 576 | aria-label="Menu" |
577 | > | 577 | > |
578 | <svg | 578 | <svg |
579 | class="w-6 h-6" | 579 | class="w-6 h-6" |
580 | aria-hidden="true" | 580 | aria-hidden="true" |
581 | fill="currentColor" | 581 | fill="currentColor" |
582 | viewBox="0 0 20 20" | 582 | viewBox="0 0 20 20" |
583 | > | 583 | > |
584 | <path | 584 | <path |
585 | fill-rule="evenodd" | 585 | fill-rule="evenodd" |
586 | d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" | 586 | d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" |
587 | clip-rule="evenodd" | 587 | clip-rule="evenodd" |
588 | ></path> | 588 | ></path> |
589 | </svg> | 589 | </svg> |
590 | </button> | 590 | </button> |
591 | <!-- Search input --> | 591 | <!-- Search input --> |
592 | <div class="flex justify-center flex-1 lg:mr-32"> | 592 | <div class="flex justify-center flex-1 lg:mr-32"> |
593 | <div | 593 | <div |
594 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" | 594 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" |
595 | > | 595 | > |
596 | <div class="absolute inset-y-0 flex items-center pl-2"> | 596 | <div class="absolute inset-y-0 flex items-center pl-2"> |
597 | <svg | 597 | <svg |
598 | class="w-4 h-4" | 598 | class="w-4 h-4" |
599 | aria-hidden="true" | 599 | aria-hidden="true" |
600 | fill="currentColor" | 600 | fill="currentColor" |
601 | viewBox="0 0 20 20" | 601 | viewBox="0 0 20 20" |
602 | > | 602 | > |
603 | <path | 603 | <path |
604 | fill-rule="evenodd" | 604 | fill-rule="evenodd" |
605 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" | 605 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" |
606 | clip-rule="evenodd" | 606 | clip-rule="evenodd" |
607 | ></path> | 607 | ></path> |
608 | </svg> | 608 | </svg> |
609 | </div> | 609 | </div> |
610 | <input | 610 | <input |
611 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" | 611 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" |
612 | type="text" | 612 | type="text" |
613 | placeholder="Search for projects" | 613 | placeholder="Search for projects" |
614 | aria-label="Search" | 614 | aria-label="Search" |
615 | /> | 615 | /> |
616 | </div> | 616 | </div> |
617 | </div> | 617 | </div> |
618 | <ul class="flex items-center flex-shrink-0 space-x-6"> | 618 | <ul class="flex items-center flex-shrink-0 space-x-6"> |
619 | <!-- Theme toggler --> | 619 | <!-- Theme toggler --> |
620 | <li class="flex"> | 620 | <li class="flex"> |
621 | <button | 621 | <button |
622 | class="rounded-md focus:outline-none focus:shadow-outline-purple" | 622 | class="rounded-md focus:outline-none focus:shadow-outline-purple" |
623 | @click="toggleTheme" | 623 | @click="toggleTheme" |
624 | aria-label="Toggle color mode" | 624 | aria-label="Toggle color mode" |
625 | > | 625 | > |
626 | <template x-if="!dark"> | 626 | <template x-if="!dark"> |
627 | <svg | 627 | <svg |
628 | class="w-5 h-5" | 628 | class="w-5 h-5" |
629 | aria-hidden="true" | 629 | aria-hidden="true" |
630 | fill="currentColor" | 630 | fill="currentColor" |
631 | viewBox="0 0 20 20" | 631 | viewBox="0 0 20 20" |
632 | > | 632 | > |
633 | <path | 633 | <path |
634 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" | 634 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" |
635 | ></path> | 635 | ></path> |
636 | </svg> | 636 | </svg> |
637 | </template> | 637 | </template> |
638 | <template x-if="dark"> | 638 | <template x-if="dark"> |
639 | <svg | 639 | <svg |
640 | class="w-5 h-5" | 640 | class="w-5 h-5" |
641 | aria-hidden="true" | 641 | aria-hidden="true" |
642 | fill="currentColor" | 642 | fill="currentColor" |
643 | viewBox="0 0 20 20" | 643 | viewBox="0 0 20 20" |
644 | > | 644 | > |
645 | <path | 645 | <path |
646 | fill-rule="evenodd" | 646 | fill-rule="evenodd" |
647 | d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" | 647 | d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" |
648 | clip-rule="evenodd" | 648 | clip-rule="evenodd" |
649 | ></path> | 649 | ></path> |
650 | </svg> | 650 | </svg> |
651 | </template> | 651 | </template> |
652 | </button> | 652 | </button> |
653 | </li> | 653 | </li> |
654 | <!-- Notifications menu --> | 654 | <!-- Notifications menu --> |
655 | <li class="relative"> | 655 | <li class="relative"> |
656 | <button | 656 | <button |
657 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" | 657 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" |
658 | @click="toggleNotificationsMenu" | 658 | @click="toggleNotificationsMenu" |
659 | @keydown.escape="closeNotificationsMenu" | 659 | @keydown.escape="closeNotificationsMenu" |
660 | aria-label="Notifications" | 660 | aria-label="Notifications" |
661 | aria-haspopup="true" | 661 | aria-haspopup="true" |
662 | > | 662 | > |
663 | <svg | 663 | <svg |
664 | class="w-5 h-5" | 664 | class="w-5 h-5" |
665 | aria-hidden="true" | 665 | aria-hidden="true" |
666 | fill="currentColor" | 666 | fill="currentColor" |
667 | viewBox="0 0 20 20" | 667 | viewBox="0 0 20 20" |
668 | > | 668 | > |
669 | <path | 669 | <path |
670 | d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z" | 670 | d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z" |
671 | ></path> | 671 | ></path> |
672 | </svg> | 672 | </svg> |
673 | <!-- Notification badge --> | 673 | <!-- Notification badge --> |
674 | <span | 674 | <span |
675 | aria-hidden="true" | 675 | aria-hidden="true" |
676 | class="absolute top-0 right-0 inline-block w-3 h-3 transform translate-x-1 -translate-y-1 bg-red-600 border-2 border-white rounded-full dark:border-gray-800" | 676 | class="absolute top-0 right-0 inline-block w-3 h-3 transform translate-x-1 -translate-y-1 bg-red-600 border-2 border-white rounded-full dark:border-gray-800" |
677 | ></span> | 677 | ></span> |
678 | </button> | 678 | </button> |
679 | <template x-if="isNotificationsMenuOpen"> | 679 | <template x-if="isNotificationsMenuOpen"> |
680 | <ul | 680 | <ul |
681 | x-transition:leave="transition ease-in duration-150" | 681 | x-transition:leave="transition ease-in duration-150" |
682 | x-transition:leave-start="opacity-100" | 682 | x-transition:leave-start="opacity-100" |
683 | x-transition:leave-end="opacity-0" | 683 | x-transition:leave-end="opacity-0" |
684 | @click.away="closeNotificationsMenu" | 684 | @click.away="closeNotificationsMenu" |
685 | @keydown.escape="closeNotificationsMenu" | 685 | @keydown.escape="closeNotificationsMenu" |
686 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:text-gray-300 dark:border-gray-700 dark:bg-gray-700" | 686 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:text-gray-300 dark:border-gray-700 dark:bg-gray-700" |
687 | aria-label="submenu" | 687 | aria-label="submenu" |
688 | > | 688 | > |
689 | <li class="flex"> | 689 | <li class="flex"> |
690 | <a | 690 | <a |
691 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 691 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
692 | href="#" | 692 | href="#" |
693 | > | 693 | > |
694 | <span>Messages</span> | 694 | <span>Messages</span> |
695 | <span | 695 | <span |
696 | class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600" | 696 | class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600" |
697 | > | 697 | > |
698 | 13 | 698 | 13 |
699 | </span> | 699 | </span> |
700 | </a> | 700 | </a> |
701 | </li> | 701 | </li> |
702 | <li class="flex"> | 702 | <li class="flex"> |
703 | <a | 703 | <a |
704 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 704 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
705 | href="#" | 705 | href="#" |
706 | > | 706 | > |
707 | <span>Sales</span> | 707 | <span>Sales</span> |
708 | <span | 708 | <span |
709 | class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600" | 709 | class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600" |
710 | > | 710 | > |
711 | 2 | 711 | 2 |
712 | </span> | 712 | </span> |
713 | </a> | 713 | </a> |
714 | </li> | 714 | </li> |
715 | <li class="flex"> | 715 | <li class="flex"> |
716 | <a | 716 | <a |
717 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 717 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
718 | href="#" | 718 | href="#" |
719 | > | 719 | > |
720 | <span>Alerts</span> | 720 | <span>Alerts</span> |
721 | </a> | 721 | </a> |
722 | </li> | 722 | </li> |
723 | </ul> | 723 | </ul> |
724 | </template> | 724 | </template> |
725 | </li> | 725 | </li> |
726 | <!-- Profile menu --> | 726 | <!-- Profile menu --> |
727 | <li class="relative"> | 727 | <li class="relative"> |
728 | <button | 728 | <button |
729 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" | 729 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" |
730 | @click="toggleProfileMenu" | 730 | @click="toggleProfileMenu" |
731 | @keydown.escape="closeProfileMenu" | 731 | @keydown.escape="closeProfileMenu" |
732 | aria-label="Account" | 732 | aria-label="Account" |
733 | aria-haspopup="true" | 733 | aria-haspopup="true" |
734 | > | 734 | > |
735 | <img | 735 | <img |
736 | class="object-cover w-8 h-8 rounded-full" | 736 | class="object-cover w-8 h-8 rounded-full" |
737 | src="https://images.unsplash.com/photo-1502378735452-bc7d86632805?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&s=aa3a807e1bbdfd4364d1f449eaa96d82" | 737 | src="https://images.unsplash.com/photo-1502378735452-bc7d86632805?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&s=aa3a807e1bbdfd4364d1f449eaa96d82" |
738 | alt="" | 738 | alt="" |
739 | aria-hidden="true" | 739 | aria-hidden="true" |
740 | /> | 740 | /> |
741 | </button> | 741 | </button> |
742 | <template x-if="isProfileMenuOpen"> | 742 | <template x-if="isProfileMenuOpen"> |
743 | <ul | 743 | <ul |
744 | x-transition:leave="transition ease-in duration-150" | 744 | x-transition:leave="transition ease-in duration-150" |
745 | x-transition:leave-start="opacity-100" | 745 | x-transition:leave-start="opacity-100" |
746 | x-transition:leave-end="opacity-0" | 746 | x-transition:leave-end="opacity-0" |
747 | @click.away="closeProfileMenu" | 747 | @click.away="closeProfileMenu" |
748 | @keydown.escape="closeProfileMenu" | 748 | @keydown.escape="closeProfileMenu" |
749 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:border-gray-700 dark:text-gray-300 dark:bg-gray-700" | 749 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:border-gray-700 dark:text-gray-300 dark:bg-gray-700" |
750 | aria-label="submenu" | 750 | aria-label="submenu" |
751 | > | 751 | > |
752 | <li class="flex"> | 752 | <li class="flex"> |
753 | <a | 753 | <a |
754 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 754 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
755 | href="#" | 755 | href="#" |
756 | > | 756 | > |
757 | <svg | 757 | <svg |
758 | class="w-4 h-4 mr-3" | 758 | class="w-4 h-4 mr-3" |
759 | aria-hidden="true" | 759 | aria-hidden="true" |
760 | fill="none" | 760 | fill="none" |
761 | stroke-linecap="round" | 761 | stroke-linecap="round" |
762 | stroke-linejoin="round" | 762 | stroke-linejoin="round" |
763 | stroke-width="2" | 763 | stroke-width="2" |
764 | viewBox="0 0 24 24" | 764 | viewBox="0 0 24 24" |
765 | stroke="currentColor" | 765 | stroke="currentColor" |
766 | > | 766 | > |
767 | <path | 767 | <path |
768 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" | 768 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" |
769 | ></path> | 769 | ></path> |
770 | </svg> | 770 | </svg> |
771 | <span>Profile</span> | 771 | <span>Profile</span> |
772 | </a> | 772 | </a> |
773 | </li> | 773 | </li> |
774 | <li class="flex"> | 774 | <li class="flex"> |
775 | <a | 775 | <a |
776 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 776 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
777 | href="#" | 777 | href="#" |
778 | > | 778 | > |
779 | <svg | 779 | <svg |
780 | class="w-4 h-4 mr-3" | 780 | class="w-4 h-4 mr-3" |
781 | aria-hidden="true" | 781 | aria-hidden="true" |
782 | fill="none" | 782 | fill="none" |
783 | stroke-linecap="round" | 783 | stroke-linecap="round" |
784 | stroke-linejoin="round" | 784 | stroke-linejoin="round" |
785 | stroke-width="2" | 785 | stroke-width="2" |
786 | viewBox="0 0 24 24" | 786 | viewBox="0 0 24 24" |
787 | stroke="currentColor" | 787 | stroke="currentColor" |
788 | > | 788 | > |
789 | <path | 789 | <path |
790 | d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" | 790 | d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" |
791 | ></path> | 791 | ></path> |
792 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> | 792 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> |
793 | </svg> | 793 | </svg> |
794 | <span>Settings</span> | 794 | <span>Settings</span> |
795 | </a> | 795 | </a> |
796 | </li> | 796 | </li> |
797 | <li class="flex"> | 797 | <li class="flex"> |
798 | <a | 798 | <a |
799 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 799 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
800 | href="#" | 800 | href="#" |
801 | > | 801 | > |
802 | <svg | 802 | <svg |
803 | class="w-4 h-4 mr-3" | 803 | class="w-4 h-4 mr-3" |
804 | aria-hidden="true" | 804 | aria-hidden="true" |
805 | fill="none" | 805 | fill="none" |
806 | stroke-linecap="round" | 806 | stroke-linecap="round" |
807 | stroke-linejoin="round" | 807 | stroke-linejoin="round" |
808 | stroke-width="2" | 808 | stroke-width="2" |
809 | viewBox="0 0 24 24" | 809 | viewBox="0 0 24 24" |
810 | stroke="currentColor" | 810 | stroke="currentColor" |
811 | > | 811 | > |
812 | <path | 812 | <path |
813 | d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1" | 813 | d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1" |
814 | ></path> | 814 | ></path> |
815 | </svg> | 815 | </svg> |
816 | <span>Log out</span> | 816 | <span>Log out</span> |
817 | </a> | 817 | </a> |
818 | </li> | 818 | </li> |
819 | </ul> | 819 | </ul> |
820 | </template> | 820 | </template> |
821 | </li> | 821 | </li> |
822 | </ul> | 822 | </ul> |
823 | </div> | 823 | </div> |
824 | </header> | 824 | </header> |
825 | <main class="h-full pb-16 overflow-y-auto"> | 825 | <main class="h-full pb-16 overflow-y-auto"> |
826 | <div class="container grid px-6 mx-auto"> | 826 | <div class="container grid px-6 mx-auto"> |
827 | <h2 | 827 | <h2 |
828 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" | 828 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" |
829 | > | 829 | > |
830 | Modals | 830 | Modals |
831 | </h2> | 831 | </h2> |
832 | <!-- CTA --> | 832 | <!-- CTA --> |
833 | <a | 833 | <a |
834 | class="flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple" | 834 | class="flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple" |
835 | href="https://github.com/estevanmaito/windmill-dashboard" | 835 | href="https://github.com/estevanmaito/windmill-dashboard" |
836 | > | 836 | > |
837 | <div class="flex items-center"> | 837 | <div class="flex items-center"> |
838 | <svg | 838 | <svg |
839 | class="w-5 h-5 mr-2" | 839 | class="w-5 h-5 mr-2" |
840 | fill="currentColor" | 840 | fill="currentColor" |
841 | viewBox="0 0 20 20" | 841 | viewBox="0 0 20 20" |
842 | > | 842 | > |
843 | <path | 843 | <path |
844 | d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" | 844 | d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" |
845 | ></path> | 845 | ></path> |
846 | </svg> | 846 | </svg> |
847 | <span>Star this project on GitHub</span> | 847 | <span>Star this project on GitHub</span> |
848 | </div> | 848 | </div> |
849 | <span>View more →</span> | 849 | <span>View more →</span> |
850 | </a> | 850 | </a> |
851 | 851 | ||
852 | <div | 852 | <div |
853 | class="max-w-2xl px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | 853 | class="max-w-2xl px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" |
854 | > | 854 | > |
855 | <p class="mb-4 text-gray-600 dark:text-gray-400"> | 855 | <p class="mb-4 text-gray-600 dark:text-gray-400"> |
856 | This is possibly | 856 | This is possibly |
857 | <strong>the most accessible a modal can get</strong> | 857 | <strong>the most accessible a modal can get</strong> |
858 | , using JavaScript. When opened, it uses | 858 | , using JavaScript. When opened, it uses |
859 | <code>assets/js/focus-trap.js</code> | 859 | <code>assets/js/focus-trap.js</code> |
860 | to create a | 860 | to create a |
861 | <em>focus trap</em> | 861 | <em>focus trap</em> |
862 | , which means that if you use your keyboard to navigate around, | 862 | , which means that if you use your keyboard to navigate around, |
863 | focus won't leak to the elements behind, staying inside the | 863 | focus won't leak to the elements behind, staying inside the |
864 | modal in a loop, until you take any action. | 864 | modal in a loop, until you take any action. |
865 | </p> | 865 | </p> |
866 | 866 | ||
867 | <p class="text-gray-600 dark:text-gray-400"> | 867 | <p class="text-gray-600 dark:text-gray-400"> |
868 | Also, on small screens it is placed at the bottom of the screen, | 868 | Also, on small screens it is placed at the bottom of the screen, |
869 | to account for larger devices and make it easier to click the | 869 | to account for larger devices and make it easier to click the |
870 | larger buttons. | 870 | larger buttons. |
871 | </p> | 871 | </p> |
872 | </div> | 872 | </div> |
873 | 873 | ||
874 | <div> | 874 | <div> |
875 | <button | 875 | <button id="i1" |
876 | @click="openModal" | 876 | @click="openModal" data-employer="1" data-user="20" |
877 | class="px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 877 | class="btn px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
878 | > | ||
879 | Open Modal1 | ||
880 | </button> | ||
881 | <button id="i2" | ||
882 | @click="openModal" data-employer="2" data-user="25" | ||
883 | class="btn px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | ||
884 | > | ||
885 | Open Modal2 | ||
886 | </button> | ||
887 | <button id="i3" | ||
888 | @click="openModal" data-employer="3" data-user="30" | ||
889 | class="btn px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | ||
878 | > | 890 | > |
879 | Open Modal | 891 | Open Modal3 |
880 | </button> | 892 | </button> |
881 | </div> | 893 | </div> |
882 | </div> | 894 | </div> |
883 | </main> | 895 | </main> |
884 | </div> | 896 | </div> |
885 | </div> | 897 | </div> |
898 | <script> | ||
899 | const btns = document.querySelectorAll('.btn'); | ||
900 | btns.forEach(btn => { | ||
901 | btn.addEventListener('click', (e) => { | ||
902 | const id = e.target.id; | ||
903 | let form = document.getElementById("form1"); | ||
904 | form.action = "https://link.ru/"+e.target.getAttribute('data-employer')+'/'+e.target.getAttribute('data-user'); | ||
905 | //document.getElementById("title_modal").innerHTML = id; | ||
906 | console.log(e.target.getAttribute('data-employer')); | ||
907 | console.log(e.target.getAttribute('data-user')); | ||
908 | console.log(id); | ||
909 | }); | ||
910 | }); | ||
911 | </script> | ||
886 | <!-- Modal backdrop. This what you want to place close to the closing body tag --> | 912 | <!-- Modal backdrop. This what you want to place close to the closing body tag --> |
887 | <div | 913 | <div |
888 | x-show="isModalOpen" | 914 | x-show="isModalOpen" |
889 | x-transition:enter="transition ease-out duration-150" | 915 | x-transition:enter="transition ease-out duration-150" |
890 | x-transition:enter-start="opacity-0" | 916 | x-transition:enter-start="opacity-0" |
891 | x-transition:enter-end="opacity-100" | 917 | x-transition:enter-end="opacity-100" |
892 | x-transition:leave="transition ease-in duration-150" | 918 | x-transition:leave="transition ease-in duration-150" |
893 | x-transition:leave-start="opacity-100" | 919 | x-transition:leave-start="opacity-100" |
894 | x-transition:leave-end="opacity-0" | 920 | x-transition:leave-end="opacity-0" |
895 | class="fixed inset-0 z-30 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | 921 | class="fixed inset-0 z-30 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" |
896 | > | 922 | > |
897 | <!-- Modal --> | 923 | <!-- Modal --> |
898 | <div | 924 | <div |
899 | x-show="isModalOpen" | 925 | x-show="isModalOpen" |
900 | x-transition:enter="transition ease-out duration-150" | 926 | x-transition:enter="transition ease-out duration-150" |
901 | x-transition:enter-start="opacity-0 transform translate-y-1/2" | 927 | x-transition:enter-start="opacity-0 transform translate-y-1/2" |
902 | x-transition:enter-end="opacity-100" | 928 | x-transition:enter-end="opacity-100" |
903 | x-transition:leave="transition ease-in duration-150" | 929 | x-transition:leave="transition ease-in duration-150" |
904 | x-transition:leave-start="opacity-100" | 930 | x-transition:leave-start="opacity-100" |
905 | x-transition:leave-end="opacity-0 transform translate-y-1/2" | 931 | x-transition:leave-end="opacity-0 transform translate-y-1/2" |
906 | @click.away="closeModal" | 932 | @click.away="closeModal" |
907 | @keydown.escape="closeModal" | 933 | @keydown.escape="closeModal" |
908 | class="w-full px-6 py-4 overflow-hidden bg-white rounded-t-lg dark:bg-gray-800 sm:rounded-lg sm:m-4 sm:max-w-xl" | 934 | class="w-full px-6 py-4 overflow-hidden bg-white rounded-t-lg dark:bg-gray-800 sm:rounded-lg sm:m-4 sm:max-w-xl" |
909 | role="dialog" | 935 | role="dialog" |
910 | id="modal" | 936 | id="modal" |
911 | > | 937 | > |
912 | <!-- Remove header if you don't want a close icon. Use modal body to place modal tile. --> | 938 | <!-- Remove header if you don't want a close icon. Use modal body to place modal tile. --> |
913 | <header class="flex justify-end"> | 939 | <header class="flex justify-end"> |
914 | <button | 940 | <button |
915 | class="inline-flex items-center justify-center w-6 h-6 text-gray-400 transition-colors duration-150 rounded dark:hover:text-gray-200 hover: hover:text-gray-700" | 941 | class="inline-flex items-center justify-center w-6 h-6 text-gray-400 transition-colors duration-150 rounded dark:hover:text-gray-200 hover: hover:text-gray-700" |
916 | aria-label="close" | 942 | aria-label="close" |
917 | @click="closeModal" | 943 | @click="closeModal" |
918 | > | 944 | > |
919 | <svg | 945 | <svg |
920 | class="w-4 h-4" | 946 | class="w-4 h-4" |
921 | fill="currentColor" | 947 | fill="currentColor" |
922 | viewBox="0 0 20 20" | 948 | viewBox="0 0 20 20" |
923 | role="img" | 949 | role="img" |
924 | aria-hidden="true" | 950 | aria-hidden="true" |
925 | > | 951 | > |
926 | <path | 952 | <path |
927 | d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" | 953 | d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" |
928 | clip-rule="evenodd" | 954 | clip-rule="evenodd" |
929 | fill-rule="evenodd" | 955 | fill-rule="evenodd" |
930 | ></path> | 956 | ></path> |
931 | </svg> | 957 | </svg> |
932 | </button> | 958 | </button> |
933 | </header> | 959 | </header> |
934 | <!-- Modal body --> | 960 | <!-- Modal body --> |
935 | <div class="mt-4 mb-6"> | 961 | <div class="mt-4 mb-6"> |
936 | <!-- Modal title --> | 962 | <!-- Modal title --> |
937 | <p | 963 | <p name="title_modal" id="title_modal" |
938 | class="mb-2 text-lg font-semibold text-gray-700 dark:text-gray-300" | 964 | class="mb-2 text-lg font-semibold text-gray-700 dark:text-gray-300" |
939 | > | 965 | > |
940 | Modal header | 966 | Modal header |
941 | </p> | 967 | </p> |
942 | <!-- Modal description --> | 968 | <!-- Modal description --> |
943 | <p class="text-sm text-gray-700 dark:text-gray-400"> | 969 | <p class="text-sm text-gray-700 dark:text-gray-400"> |
944 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nostrum et | 970 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nostrum et |
945 | eligendi repudiandae voluptatem tempore! | 971 | eligendi repudiandae voluptatem tempore! |
946 | </p> | 972 | </p> |
947 | </div> | 973 | </div> |
948 | <footer | 974 | <footer |
949 | class="flex flex-col items-center justify-end px-6 py-3 -mx-6 -mb-4 space-y-4 sm:space-y-0 sm:space-x-6 sm:flex-row bg-gray-50 dark:bg-gray-800" | 975 | class="flex flex-col items-center justify-end px-6 py-3 -mx-6 -mb-4 space-y-4 sm:space-y-0 sm:space-x-6 sm:flex-row bg-gray-50 dark:bg-gray-800" |
950 | > | 976 | > |
951 | <button | 977 | <button |
952 | @click="closeModal" | 978 | @click="closeModal" |
953 | class="w-full px-5 py-3 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 sm:px-4 sm:py-2 sm:w-auto active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" | 979 | class="w-full px-5 py-3 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 sm:px-4 sm:py-2 sm:w-auto active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" |
954 | > | 980 | > |
955 | Cancel | 981 | Cancel |
956 | </button> | 982 | </button> |
983 | <form id="form1" name="form1" action="" method="POST"> | ||
957 | <button | 984 | <button |
958 | class="w-full px-5 py-3 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg sm:w-auto sm:px-4 sm:py-2 active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 985 | class="w-full px-5 py-3 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg sm:w-auto sm:px-4 sm:py-2 active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
959 | > | 986 | > |
960 | Accept | 987 | Accept |
961 | </button> | 988 | </button> |
989 | </form> | ||
962 | </footer> | 990 | </footer> |
963 | </div> | 991 | </div> |
964 | </div> | 992 | </div> |
965 | <!-- End of modal backdrop --> | 993 | <!-- End of modal backdrop --> |
966 | </body> | 994 | </body> |
967 | </html> | 995 | </html> |
968 | 996 |
resources/views/admin/ad_employers/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Вакансии']) | 1 | @extends('layout.admin', ['title' => 'Админка - Вакансии']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | @endsection | 4 | @endsection |
5 | 5 | ||
6 | @section('search') | 6 | @section('search') |
7 | 7 | ||
8 | @endsection | 8 | @endsection |
9 | 9 | ||
10 | @section('content') | 10 | @section('content') |
11 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 11 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
12 | <div class="w-full overflow-x-auto"> | 12 | <div class="w-full overflow-x-auto"> |
13 | <table class="w-full whitespace-no-wrap"> | 13 | <table class="w-full whitespace-no-wrap"> |
14 | <thead> | 14 | <thead> |
15 | <tr | 15 | <tr |
16 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 16 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
17 | > | 17 | > |
18 | <th class="px-4 py-3">№</th> | 18 | <th class="px-4 py-3">№</th> |
19 | <th class="px-4 py-3">Название объявления</th> | 19 | <th class="px-4 py-3">Название объявления</th> |
20 | <th class="px-4 py-3">Название компании</th> | 20 | <th class="px-4 py-3">Название компании</th> |
21 | <th class="px-4 py-3">Должности</th> | 21 | <th class="px-4 py-3">Должности</th> |
22 | <th class="px-4 py-3">Избранные</th> | 22 | <th class="px-4 py-3">Избранные</th> |
23 | <th class="px-4 py-3">Срочные</th> | 23 | <th class="px-4 py-3">Срочные</th> |
24 | <th class="px-4 py-3">Статус</th> | 24 | <th class="px-4 py-3">Статус</th> |
25 | <th class="px-4 py-3">Дата создан.</th> | 25 | <th class="px-4 py-3">Дата создан.</th> |
26 | <th class="px-4 py-3">Дата изменен.</th> | 26 | <th class="px-4 py-3">Дата изменен.</th> |
27 | <th class="px-4 py-3">Изменить</th> | 27 | <th class="px-4 py-3">Изменить</th> |
28 | </tr> | 28 | </tr> |
29 | </thead> | 29 | </thead> |
30 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 30 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
31 | @foreach($ad_employers as $ad) | 31 | @foreach($ad_employers as $ad) |
32 | <tr class="text-gray-700 dark:text-gray-400"> | 32 | <tr class="text-gray-700 dark:text-gray-400"> |
33 | <td class="px-4 py-3"> | 33 | <td class="px-4 py-3"> |
34 | {{$ad->id}} | 34 | {{$ad->id}} |
35 | </td> | 35 | </td> |
36 | <td class="px-4 py-3"> | 36 | <td class="px-4 py-3"> |
37 | {{$ad->name}} | 37 | {{$ad->name}} |
38 | </td> | 38 | </td> |
39 | <td class="px-4 py-3"> | 39 | <td class="px-4 py-3"> |
40 | {{$ad->employer->name_company}} | 40 | {{$ad->employer->name_company}} |
41 | </td> | 41 | </td> |
42 | <td class="px-4 py-3"> | 42 | <td class="px-4 py-3"> |
43 | <div class="flex items-center text-sm"> | 43 | <div class="flex items-center text-sm"> |
44 | @if ($ad->jobs->count()) | 44 | @if ($ad->jobs->count()) |
45 | <div> | 45 | <div> |
46 | <?php $i = 0;?> | 46 | <?php $i = 0;?> |
47 | @foreach ($ad->jobs as $title) | 47 | @foreach ($ad->jobs as $title) |
48 | <?php if ($i==0) {?> | 48 | <?php if ($i==0) {?> |
49 | <p class="font-semibold">{{$title->name}}</p> | 49 | <p class="font-semibold">{{$title->name}}</p> |
50 | <?php } else {?> | 50 | <?php } else {?> |
51 | <p class="font-semibold">/ {{$title->name}}</p> | 51 | <p class="font-semibold">/ {{$title->name}}</p> |
52 | <?php } | 52 | <?php } |
53 | $i++; | 53 | $i++; |
54 | ?> | 54 | ?> |
55 | @endforeach | 55 | @endforeach |
56 | </div> | 56 | </div> |
57 | @endif | 57 | @endif |
58 | </div> | 58 | </div> |
59 | 59 | ||
60 | </td> | 60 | </td> |
61 | 61 | ||
62 | <td class="px-4 py-3 text-sm"> | 62 | <td class="px-4 py-3 text-sm"> |
63 | @if ($ad->favorite_vacancy==1) | 63 | @if ($ad->favorite_vacancy==1) |
64 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 64 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
65 | Да | 65 | Да |
66 | </span> | 66 | </span> |
67 | @else | 67 | @else |
68 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 68 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
69 | Нет | 69 | Нет |
70 | </span> | 70 | </span> |
71 | @endif | 71 | @endif |
72 | </td> | 72 | </td> |
73 | 73 | ||
74 | <td class="px-4 py-3 text-sm"> | 74 | <td class="px-4 py-3 text-sm"> |
75 | @if ($ad->sroch_vacancy==1) | 75 | @if ($ad->sroch_vacancy==1) |
76 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 76 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
77 | Да | 77 | Да |
78 | </span> | 78 | </span> |
79 | @else | 79 | @else |
80 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 80 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
81 | Нет | 81 | Нет |
82 | </span> | 82 | </span> |
83 | @endif | 83 | @endif |
84 | </td> | 84 | </td> |
85 | 85 | ||
86 | <td class="px-4 py-3 text-sm"> | 86 | <td class="px-4 py-3 text-sm"> |
87 | {{ $ad->status }} | 87 | {{ $ad->status }} |
88 | </td> | 88 | </td> |
89 | <td class="px-4 py-3 text-sm"> | 89 | <td class="px-4 py-3 text-sm"> |
90 | {{ $ad->created_at }} | 90 | {{ date('d.m.Y', strtotime($ad->created_at)) }} |
91 | </td> | 91 | </td> |
92 | <td class="px-4 py-3 text-sm"> | 92 | <td class="px-4 py-3 text-sm"> |
93 | {{ $ad->updated_at }} | 93 | {{ date('d.m.Y', strtotime($ad->updated_at)) }} |
94 | </td> | 94 | </td> |
95 | <td class="px-4 py-3 text-sm"> | 95 | <td class="px-4 py-3 text-sm"> |
96 | <a href="{{ route('admin.edit-ad-employers', ['ad_employer' => $ad->id]) }}"> | 96 | <a href="{{ route('admin.edit-ad-employers', ['ad_employer' => $ad->id]) }}"> |
97 | Изменить | 97 | Изменить |
98 | </a> | 98 | </a> |
99 | </td> | 99 | </td> |
100 | </tr> | 100 | </tr> |
101 | @endforeach | 101 | @endforeach |
102 | </tbody> | 102 | </tbody> |
103 | </table> | 103 | </table> |
104 | </div> | 104 | </div> |
105 | 105 | ||
106 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 106 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
107 | <?=$ad_employers->appends($_GET)->links('admin.pagginate'); ?> | 107 | <?=$ad_employers->appends($_GET)->links('admin.pagginate'); ?> |
108 | </div> | 108 | </div> |
109 | </div> | 109 | </div> |
110 | @endsection | 110 | @endsection |
111 | 111 |
resources/views/admin/education/add.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Добавление образования']) | 1 | @extends('layout.admin', ['title' => 'Админка - Добавление образования']) |
2 | 2 | ||
3 | @section('content') | 3 | @section('content') |
4 | <form method="POST" action="{{ route('admin.education.store') }}"> | 4 | <form method="POST" action="{{ route('admin.education.store') }}" enctype="multipart/form-data"> |
5 | @include('admin.education.form') | 5 | @include('admin.education.form') |
6 | </form> | 6 | </form> |
7 | @endsection | 7 | @endsection |
8 | 8 |
resources/views/admin/education/edit.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Редактирование образования']) | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование образования']) |
2 | 2 | ||
3 | @section('content') | 3 | @section('content') |
4 | <form method="POST" action="{{ route('admin.education.update', ['education' => $education->id]) }}"> | 4 | <form method="POST" action="{{ route('admin.education.update', ['education' => $education->id]) }}" enctype="multipart/form-data"> |
5 | @include('admin.education.form') | 5 | @include('admin.education.form') |
6 | </form> | 6 | </form> |
7 | @endsection | 7 | @endsection |
8 | 8 |
resources/views/admin/education/form.blade.php
1 | @csrf | 1 | @csrf |
2 | 2 | ||
3 | @isset($education) | 3 | @isset($education) |
4 | @method('PUT') | 4 | @method('PUT') |
5 | @endisset | 5 | @endisset |
6 | 6 | ||
7 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | 7 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> |
8 | <label class="block text-sm"> | 8 | <label class="block text-sm"> |
9 | <span class="text-gray-700 dark:text-gray-400">Имя категории</span> | 9 | <span class="text-gray-700 dark:text-gray-400">Название учебного заведения</span> |
10 | <input name="name" id="name" | 10 | <input name="name" id="name" |
11 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 11 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
12 | placeholder="Имя категории" value="{{ old('name') ?? $education->name ?? '' }}" | 12 | placeholder="Название учебного заведения" value="{{ old('name') ?? $education->name ?? '' }}" |
13 | /> | 13 | /> |
14 | @error('name') | 14 | @error('name') |
15 | <span class="text-xs text-red-600 dark:text-red-400"> | 15 | <span class="text-xs text-red-600 dark:text-red-400"> |
16 | {{ $message }} | 16 | {{ $message }} |
17 | </span> | 17 | </span> |
18 | @enderror | 18 | @enderror |
19 | </label><br> | 19 | </label><br> |
20 | 20 | ||
21 | <label class="block text-sm"> | ||
22 | <span class="text-gray-700 dark:text-gray-400">Адрес</span> | ||
23 | <input name="address" id="address" | ||
24 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
25 | placeholder="Адрес" value="{{ old('address') ?? $education->address ?? '' }}" | ||
26 | /> | ||
27 | @error('address') | ||
28 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
29 | {{ $message }} | ||
30 | </span> | ||
31 | @enderror | ||
32 | </label><br> | ||
33 | |||
34 | <label class="block text-sm"> | ||
35 | <span class="text-gray-700 dark:text-gray-400">Email</span> | ||
36 | <input name="email" id="email" | ||
37 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
38 | placeholder="Email" value="{{ old('email') ?? $education->email ?? '' }}" | ||
39 | /> | ||
40 | @error('email') | ||
41 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
42 | {{ $message }} | ||
43 | </span> | ||
44 | @enderror | ||
45 | </label><br> | ||
46 | |||
47 | <label class="block text-sm"> | ||
48 | <span class="text-gray-700 dark:text-gray-400">Телефон</span> | ||
49 | <input name="telephone" id="telephone" | ||
50 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
51 | placeholder="Телефон" value="{{ old('telephone') ?? $education->telephone ?? '' }}" | ||
52 | /> | ||
53 | @error('telephone') | ||
54 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
55 | {{ $message }} | ||
56 | </span> | ||
57 | @enderror | ||
58 | </label><br> | ||
59 | |||
60 | <label class="block text-sm"> | ||
61 | <span class="text-gray-700 dark:text-gray-400">Текст</span> | ||
62 | <textarea class="form-control ckeditor" name="text" placeholder="Текст (html)" required | ||
63 | rows="10">{{ old('text') ?? $education->text ?? '' }}</textarea> | ||
64 | @error('text') | ||
65 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
66 | {{ $message }} | ||
67 | </span> | ||
68 | @enderror | ||
69 | </label><br> | ||
70 | |||
71 | <label class="block text-sm"> | ||
72 | <span class="text-gray-700 dark:text-gray-400">Картинка</span> | ||
73 | <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 | ||
74 | focus:border-purple-400 focus:outline-none focus:shadow-outline-purple | ||
75 | dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
76 | id="image" name="image" accept="image/png, image/jpeg"> | ||
77 | @error('image') | ||
78 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
79 | {{ $message }} | ||
80 | </span> | ||
81 | @enderror | ||
82 | @isset($education->image) | ||
83 | <img src="{{asset(Storage::url($education->image))}}" width="100px"/> | ||
84 | @endisset | ||
85 | </label><br> | ||
86 | |||
21 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | 87 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> |
22 | <div> | 88 | <div> |
23 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | 89 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> |
24 | Сохранить | 90 | Сохранить |
25 | </button> | 91 | </button> |
26 | <a href="{{ route('admin.education.index') }}" | 92 | <a href="{{ route('admin.education.index') }}" |
27 | class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 93 | class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
28 | style="display: -webkit-inline-box; height: 30px!important;" | 94 | style="display: -webkit-inline-box; height: 30px!important;" |
29 | >Назад</a> | 95 | >Назад</a> |
30 | </div> | 96 | </div> |
31 | </div> | 97 | </div> |
32 | </div> | 98 | </div> |
99 | <script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script> | ||
100 | <script> | ||
101 | CKEDITOR.replace( 'text', { | ||
102 | filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", | ||
103 | filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", | ||
104 | filebrowserUploadMethod: 'form' | ||
105 | }); | ||
106 | </script> | ||
33 | 107 |
resources/views/admin/education/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Справочник образование']) | 1 | @extends('layout.admin', ['title' => 'Админка - Справочник образование']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | 4 | ||
5 | @endsection | 5 | @endsection |
6 | 6 | ||
7 | @section('search') | 7 | @section('search') |
8 | 8 | ||
9 | @endsection | 9 | @endsection |
10 | 10 | ||
11 | @section('content') | 11 | @section('content') |
12 | 12 | ||
13 | <a href="{{ route('admin.education.create') }}" style="width: 195px" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | 13 | <a href="{{ route('admin.education.create') }}" style="width: 195px" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> |
14 | Добавить образование | 14 | Добавить образование |
15 | </a> | 15 | </a> |
16 | <br> | 16 | <br> |
17 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 17 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
18 | 18 | ||
19 | <div class="w-full overflow-x-auto"> | 19 | <div class="w-full overflow-x-auto"> |
20 | <table class="w-full whitespace-no-wrap"> | 20 | <table class="w-full whitespace-no-wrap"> |
21 | <thead> | 21 | <thead> |
22 | <tr | 22 | <tr |
23 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 23 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
24 | > | 24 | > |
25 | <th class="px-4 py-3">№</th> | 25 | <th class="px-4 py-3">№</th> |
26 | <th class="px-4 py-3">Название образования</th> | 26 | <th class="px-4 py-3">Название образования</th> |
27 | <th class="px-4 py-3">Дата создания</th> | ||
28 | <th class="px-4 py-3">Редактировать</th> | 27 | <th class="px-4 py-3">Редактировать</th> |
28 | <th class="px-4 py-3">Дата создания</th> | ||
29 | </tr> | 29 | </tr> |
30 | </thead> | 30 | </thead> |
31 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 31 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
32 | @foreach($education as $cat) | 32 | @foreach($education as $cat) |
33 | <tr class="text-gray-700 dark:text-gray-400"> | 33 | <tr class="text-gray-700 dark:text-gray-400"> |
34 | <td class="px-4 py-3"> | 34 | <td class="px-4 py-3"> |
35 | {{$cat->id}} | 35 | {{$cat->id}} |
36 | </td> | 36 | </td> |
37 | <td class="px-4 py-3"> | 37 | <td class="px-4 py-3"> |
38 | {{$cat->name}} | 38 | {{$cat->name}} |
39 | </td> | 39 | </td> |
40 | <td class="px-4 py-3"> | 40 | |
41 | {{$cat->created_at}} | ||
42 | </td> | ||
43 | <td class="px-4 py-3 text-sm_"> | 41 | <td class="px-4 py-3 text-sm_"> |
44 | <form action="{{ route('admin.education.destroy', ['education' => $cat->id]) }}" method="POST"> | 42 | <form action="{{ route('admin.education.destroy', ['education' => $cat->id]) }}" method="POST"> |
45 | <a href="{{ route('admin.education.edit', ['education' => $cat->id]) }}">Изменить</a> | | 43 | <a href="{{ route('admin.education.edit', ['education' => $cat->id]) }}">Изменить</a> | |
46 | @csrf | 44 | @csrf |
47 | @method('DELETE') | 45 | @method('DELETE') |
48 | <input class="btn btn-danger" type="submit" value="Удалить"/> | 46 | <input class="btn btn-danger" type="submit" value="Удалить"/> |
49 | </form> | 47 | </form> |
50 | </td> | 48 | </td> |
49 | <td class="px-4 py-3"> | ||
50 | {{ date('d.m.Y', strtotime($cat->created_at))}} | ||
51 | </td> | ||
51 | </tr> | 52 | </tr> |
52 | @endforeach | 53 | @endforeach |
53 | </tbody> | 54 | </tbody> |
54 | </table> | 55 | </table> |
55 | </div> | 56 | </div> |
56 | 57 | ||
57 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 58 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
58 | <?=$education->appends($_GET)->links('admin.pagginate'); ?> | 59 | <?=$education->appends($_GET)->links('admin.pagginate'); ?> |
59 | </div> | 60 | </div> |
resources/views/admin/employer/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Работодатели']) | 1 | @extends('layout.admin', ['title' => 'Админка - Работодатели']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.checkban', function () { | 6 | $(document).on('click', '.checkban', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var ajax_block = $('#ajax_block'); | 9 | var ajax_block = $('#ajax_block'); |
10 | var bool = 0; | 10 | var bool = 0; |
11 | 11 | ||
12 | if(this.checked){ | 12 | if(this.checked){ |
13 | bool = 1; | 13 | bool = 1; |
14 | } else { | 14 | } else { |
15 | bool = 0; | 15 | bool = 0; |
16 | } | 16 | } |
17 | 17 | ||
18 | $.ajax({ | 18 | $.ajax({ |
19 | type: "GET", | 19 | type: "GET", |
20 | url: "{{ url()->full()}}", | 20 | url: "{{ url()->full()}}", |
21 | data: "id=" + value + "&is_ban=" + bool, | 21 | data: "id=" + value + "&is_ban=" + bool, |
22 | success: function (data) { | 22 | success: function (data) { |
23 | console.log('Обновление таблицы пользователей '); | 23 | console.log('Обновление таблицы пользователей '); |
24 | //data = JSON.parse(data); | 24 | //data = JSON.parse(data); |
25 | //console.log(data); | 25 | //console.log(data); |
26 | ajax_block.html(data); | 26 | ajax_block.html(data); |
27 | }, | 27 | }, |
28 | headers: { | 28 | headers: { |
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
30 | }, | 30 | }, |
31 | error: function (data) { | 31 | error: function (data) { |
32 | console.log('Error: ' + data); | 32 | console.log('Error: ' + data); |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }); | 35 | }); |
36 | 36 | ||
37 | }); | 37 | }); |
38 | </script> | 38 | </script> |
39 | <script> | ||
40 | const btns = document.querySelectorAll('.btn_del'); | ||
41 | btns.forEach(btn => { | ||
42 | btn.addEventListener('click', (e) => { | ||
43 | console.log('click button'); | ||
44 | const id = e.target.id; | ||
45 | let form = document.getElementById("form_modal_del"); | ||
46 | form.action = "<?=$_SERVER['HTTP_REFERER']?>/delete/"+e.target.getAttribute('data-employer')+'/'+e.target.getAttribute('data-user'); | ||
47 | //document.getElementById("title_modal").innerHTML = id; | ||
48 | console.log(e.target.getAttribute('data-employer')); | ||
49 | console.log(e.target.getAttribute('data-user')); | ||
50 | |||
51 | }); | ||
52 | }); | ||
53 | </script> | ||
39 | @endsection | 54 | @endsection |
40 | 55 | ||
41 | @section('search') | 56 | @section('search') |
42 | @include('admin.find_employer', ['select_category' => $select_category]) | 57 | @include('admin.find_employer', ['select_category' => $select_category]) |
43 | @endsection | 58 | @endsection |
44 | 59 | ||
60 | @section('modal') | ||
61 | @include('admin.employer.modal') | ||
62 | @endsection | ||
63 | |||
45 | @section('content') | 64 | @section('content') |
46 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 65 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
47 | 66 | ||
48 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 67 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
49 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> | 68 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> |
50 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 69 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
51 | <path | 70 | <path |
52 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> | 71 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> |
53 | </svg> | 72 | </svg> |
54 | </div> | 73 | </div> |
55 | <div> | 74 | <div> |
56 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 75 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
57 | Всего работодателей | 76 | Всего работодателей |
58 | </p> | 77 | </p> |
59 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 78 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
60 | {{ $all_employer }} | 79 | {{ $all_employer }} |
61 | </p> | 80 | </p> |
62 | </div> | 81 | </div> |
63 | </div> | 82 | </div> |
64 | </div> | 83 | </div> |
65 | 84 | <pre> | |
85 | <?//print_r($_SERVER);?> | ||
86 | </pre> | ||
66 | 87 | ||
67 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 88 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
68 | <div class="w-full overflow-x-auto"> | 89 | <div class="w-full overflow-x-auto"> |
69 | <table class="w-full whitespace-no-wrap"> | 90 | <table class="w-full whitespace-no-wrap"> |
70 | <thead> | 91 | <thead> |
71 | <tr | 92 | <tr |
72 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 93 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
73 | > | 94 | > |
74 | <th class="px-4 py-3">№</th> | 95 | <th class="px-4 py-3">№</th> |
75 | <th class="px-4 py-3">Название компании</th> | 96 | <th class="px-4 py-3">Название компании</th> |
76 | <th class="px-4 py-3">Email/Телефон</th> | 97 | <th class="px-4 py-3">Email/Телефон</th> |
77 | <th class="px-4 py-3">Категория</th> | 98 | <th class="px-4 py-3">Категория</th> |
78 | <th class="px-4 py-3">Комментарий</th> | 99 | <th class="px-4 py-3">Комментарий</th> |
79 | <th class="px-4 py-3">Дата регистрации</th> | 100 | <th class="px-4 py-3">Дата регистрации</th> |
80 | <th class="px-4 py-3">Редакт.</th> | 101 | <th class="px-4 py-3">Редакт.</th> |
81 | </tr> | 102 | </tr> |
82 | </thead> | 103 | </thead> |
83 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 104 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
84 | @foreach($users as $user) | 105 | @foreach($users as $user) |
85 | <tr class="text-gray-700 dark:text-gray-400"> | 106 | <tr class="text-gray-700 dark:text-gray-400"> |
86 | <td class="px-4 py-3"> | 107 | <td class="px-4 py-3"> |
87 | {{$user->id}} | 108 | {{$user->id}} |
88 | </td> | 109 | </td> |
89 | <td class="px-4 py-3"> | 110 | <td class="px-4 py-3"> |
90 | {{$user->name}} | 111 | {{$user->name}} |
91 | </td> | 112 | </td> |
92 | <td class="px-4 py-3"> | 113 | <td class="px-4 py-3"> |
93 | <div class="flex items-center text-sm"> | 114 | <div class="flex items-center text-sm"> |
94 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 115 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
95 | <div | 116 | <div |
96 | class="absolute inset-0 rounded-full shadow-inner" | 117 | class="absolute inset-0 rounded-full shadow-inner" |
97 | aria-hidden="true" | 118 | aria-hidden="true" |
98 | ></div> | 119 | ></div> |
99 | </div>--> | 120 | </div>--> |
100 | <div> | 121 | <div> |
101 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | 122 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> |
102 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 123 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
103 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | 124 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} |
104 | </p> | 125 | </p> |
105 | </div> | 126 | </div> |
106 | </div> | 127 | </div> |
107 | 128 | ||
108 | </td> | 129 | </td> |
109 | <td class="px-4 py-3 text-sm"> | 130 | <td class="px-4 py-3 text-sm"> |
110 | {{ $user->category }} | 131 | {{ $user->category }} |
111 | </td> | 132 | </td> |
112 | <td class="px-4 py-3 text-sm"> | 133 | <td class="px-4 py-3 text-sm"> |
113 | {{ $user->comment_admin }} | 134 | @if (!empty($user->comment_admin)) |
135 | Есть | ||
136 | @else | ||
137 | Нет | ||
138 | @endif | ||
114 | </td> | 139 | </td> |
115 | <td class="px-4 py-3 text-sm"> | 140 | <td class="px-4 py-3 text-sm"> |
116 | {{ $user->created_at }} | 141 | {{ date('d.m.Y', strtotime($user->created_at)) }} |
117 | </td> | 142 | </td> |
118 | <td class="px-4 py-3 text-sm"> | 143 | <td class="px-4 py-3 text-sm"> |
119 | @if (!empty($user->emp_id)) | 144 | @if (!empty($user->emp_id)) |
120 | <form action="{{ route('admin.delete-employer', ['employer' => $user->emp_id, 'user' => $user->user_id]) }}" method="POST"> | ||
121 | <a href="{{ route('admin.employer-profile', ['employer' => $user->emp_id]) }}">Изменить</a> | | 145 | <a href="{{ route('admin.employer-profile', ['employer' => $user->emp_id]) }}">Изменить</a> | |
122 | @csrf | 146 | <a @click="openModal" style="cursor: pointer;" data-employer="{{$user->emp_id}}" data-user="{{$user->user_id}}" class="btn_del btn btn-danger">Удалить</a> |
123 | @method('DELETE') | ||
124 | <input class="btn btn-danger" type="submit" value="Удалить"/> | ||
125 | </form> | ||
126 | @endif | 147 | @endif |
127 | </td> | 148 | </td> |
128 | <!--<td class="px-4 py-3 text-sm"> | 149 | <!--<td class="px-4 py-3 text-sm"> |
129 | @if ($user->usr_id > 1) | 150 | @if ($user->usr_id > 1) |
130 | <input type="checkbox" class="checkban" value="{{$user->usr_id}}" name="ban_{{$user->usr_id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 151 | <input type="checkbox" class="checkban" value="{{$user->usr_id}}" name="ban_{{$user->usr_id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
131 | @endif | 152 | @endif |
132 | </td>--> | 153 | </td>--> |
133 | </tr> | 154 | </tr> |
134 | @endforeach | 155 | @endforeach |
135 | </tbody> | 156 | </tbody> |
136 | </table> | 157 | </table> |
137 | </div> | 158 | </div> |
138 | 159 | ||
139 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 160 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
140 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 161 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
resources/views/admin/employer/index_ajax.blade.php
1 | <div class="w-full overflow-x-auto"> | 1 | <div class="w-full overflow-x-auto"> |
2 | <table class="w-full whitespace-no-wrap"> | 2 | <table class="w-full whitespace-no-wrap"> |
3 | <thead> | 3 | <thead> |
4 | <tr | 4 | <tr |
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
6 | > | 6 | > |
7 | <th class="px-4 py-3">№</th> | 7 | <th class="px-4 py-3">№</th> |
8 | <th class="px-4 py-3">Название компании</th> | 8 | <th class="px-4 py-3">Название компании</th> |
9 | <th class="px-4 py-3">Email/Телефон</th> | 9 | <th class="px-4 py-3">Email/Телефон</th> |
10 | <th class="px-4 py-3">Имя</th> | 10 | <th class="px-4 py-3">Категория</th> |
11 | <th class="px-4 py-3">Комментарий</th> | ||
11 | <th class="px-4 py-3">Дата регистрации</th> | 12 | <th class="px-4 py-3">Дата регистрации</th> |
12 | <th class="px-4 py-3">Изменить</th> | 13 | <th class="px-4 py-3">Редакт.</th> |
13 | <th class="px-4 py-3">Бан</th> | ||
14 | </tr> | 14 | </tr> |
15 | </thead> | 15 | </thead> |
16 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 16 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
17 | @foreach($users as $user) | 17 | @foreach($users as $user) |
18 | <tr class="text-gray-700 dark:text-gray-400"> | 18 | <tr class="text-gray-700 dark:text-gray-400"> |
19 | <td class="px-4 py-3"> | 19 | <td class="px-4 py-3"> |
20 | {{$user->id}} | 20 | {{$user->id}} |
21 | </td> | 21 | </td> |
22 | <td class="px-4 py-3"> | 22 | <td class="px-4 py-3"> |
23 | {{$user->name}} | 23 | {{$user->name}} |
24 | </td> | 24 | </td> |
25 | <td class="px-4 py-3"> | 25 | <td class="px-4 py-3"> |
26 | <div class="flex items-center text-sm"> | 26 | <div class="flex items-center text-sm"> |
27 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 27 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
28 | <div | 28 | <div |
29 | class="absolute inset-0 rounded-full shadow-inner" | 29 | class="absolute inset-0 rounded-full shadow-inner" |
30 | aria-hidden="true" | 30 | aria-hidden="true" |
31 | ></div> | 31 | ></div> |
32 | </div>--> | 32 | </div>--> |
33 | <div> | 33 | <div> |
34 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | 34 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> |
35 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 35 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
36 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | 36 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} |
37 | </p> | 37 | </p> |
38 | </div> | 38 | </div> |
39 | </div> | 39 | </div> |
40 | 40 | ||
41 | </td> | 41 | </td> |
42 | <td class="px-4 py-3 text-sm"> | 42 | <td class="px-4 py-3 text-sm"> |
43 | {{ $user->name_man }} ({{ $user->usr_id }}) | 43 | {{ $user->name_man }} ({{ $user->usr_id }}) |
44 | </td> | 44 | </td> |
45 | <td class="px-4 py-3 text-sm"> | 45 | <td class="px-4 py-3 text-sm"> |
46 | {{ $user->created_at }} | 46 | {{ date('d.m.Y', strtotime($user->created_at)) }} |
47 | </td> | 47 | </td> |
48 | <td class="px-4 py-3 text-sm"> | 48 | <td class="px-4 py-3 text-sm"> |
49 | @if (!empty($user->emp_id)) | 49 | @if (!empty($user->emp_id)) |
50 | <a href="{{ route('admin.employer-profile', ['employer' => $user->emp_id]) }}">Изменить</a> | 50 | <a href="{{ route('admin.employer-profile', ['employer' => $user->emp_id]) }}">Изменить</a> | |
51 | <a @click="openModal" style="cursor: pointer;" data-employer="{{$user->emp_id}}" data-user="{{$user->user_id}}" class="btn_del btn btn-danger">Удалить</a> | ||
51 | @endif | 52 | @endif |
52 | </td> | 53 | </td> |
53 | <td class="px-4 py-3 text-sm"> | 54 | <!--<td class="px-4 py-3 text-sm"> |
54 | @if ($user->usr_id > 1) | 55 | @if ($user->usr_id > 1) |
55 | <input type="checkbox" class="checkban" value="{{$user->usr_id}}" name="ban_{{$user->usr_id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 56 | <input type="checkbox" class="checkban" value="{{$user->usr_id}}" name="ban_{{$user->usr_id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
56 | @endif | 57 | @endif |
57 | </td> | 58 | </td>--> |
58 | </tr> | 59 | </tr> |
59 | @endforeach | 60 | @endforeach |
60 | </tbody> | 61 | </tbody> |
61 | </table> | 62 | </table> |
62 | </div> | 63 | </div> |
63 | 64 | ||
64 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 65 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
65 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | 66 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> |
66 | <?=$users->links('admin.pagginate'); ?> | 67 | <?=$users->links('admin.pagginate'); ?> |
67 | </div> | 68 | </div> |
68 | 69 |
resources/views/admin/employer/modal.blade.php
File was created | 1 | <!-- Modal backdrop. This what you want to place close to the closing body tag --> | |
2 | <div | ||
3 | x-show="isModalOpen" | ||
4 | x-transition:enter="transition ease-out duration-150" | ||
5 | x-transition:enter-start="opacity-0" | ||
6 | x-transition:enter-end="opacity-100" | ||
7 | x-transition:leave="transition ease-in duration-150" | ||
8 | x-transition:leave-start="opacity-100" | ||
9 | x-transition:leave-end="opacity-0" | ||
10 | class="fixed inset-0 z-30 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | ||
11 | > | ||
12 | <!-- Modal --> | ||
13 | <div | ||
14 | x-show="isModalOpen" | ||
15 | x-transition:enter="transition ease-out duration-150" | ||
16 | x-transition:enter-start="opacity-0 transform translate-y-1/2" | ||
17 | x-transition:enter-end="opacity-100" | ||
18 | x-transition:leave="transition ease-in duration-150" | ||
19 | x-transition:leave-start="opacity-100" | ||
20 | x-transition:leave-end="opacity-0 transform translate-y-1/2" | ||
21 | @click.away="closeModal" | ||
22 | @keydown.escape="closeModal" | ||
23 | class="w-full px-6 py-4 overflow-hidden bg-white rounded-t-lg dark:bg-gray-800 sm:rounded-lg sm:m-4 sm:max-w-xl" | ||
24 | role="dialog" | ||
25 | id="modal" | ||
26 | > | ||
27 | <!-- Remove header if you don't want a close icon. Use modal body to place modal tile. --> | ||
28 | <header class="flex justify-end"> | ||
29 | <button | ||
30 | class="inline-flex items-center justify-center w-6 h-6 text-gray-400 transition-colors duration-150 rounded dark:hover:text-gray-200 hover: hover:text-gray-700" | ||
31 | aria-label="close" | ||
32 | @click="closeModal" | ||
33 | > | ||
34 | <svg | ||
35 | class="w-4 h-4" | ||
36 | fill="currentColor" | ||
37 | viewBox="0 0 20 20" | ||
38 | role="img" | ||
39 | aria-hidden="true" | ||
40 | > | ||
41 | <path | ||
42 | d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" | ||
43 | clip-rule="evenodd" | ||
44 | fill-rule="evenodd" | ||
45 | ></path> | ||
46 | </svg> | ||
47 | </button> | ||
48 | </header> | ||
49 | <!-- Modal body --> | ||
50 | <div class="mt-4 mb-6"> | ||
51 | <!-- Modal title --> | ||
52 | <p | ||
53 | class="mb-2 text-lg font-semibold text-gray-700 dark:text-gray-300" | ||
54 | > | ||
55 | Вы действительно хотите удалить данного работодателя? | ||
56 | </p> | ||
57 | <!-- Modal description --> | ||
58 | <p class="text-sm text-gray-700 dark:text-gray-400"> | ||
59 | Это приведет к удалению всей информации о работодателе<br> | ||
60 | и его вакансиях на данном проекте. | ||
61 | </p> | ||
62 | </div> | ||
63 | <footer | ||
64 | class="flex flex-col items-center justify-end px-6 py-3 -mx-6 -mb-4 space-y-4 sm:space-y-0 sm:space-x-6 sm:flex-row bg-gray-50 dark:bg-gray-800" | ||
65 | > | ||
66 | <button | ||
67 | @click="closeModal" | ||
68 | class="w-full px-5 py-3 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 sm:px-4 sm:py-2 sm:w-auto active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" | ||
69 | > | ||
70 | Отмена | ||
71 | </button> | ||
72 | <form id="form_modal_del" name="form_modal_del" action="/employer-profile/delete/{employer}/{user}" method="POST"> | ||
73 | @csrf | ||
74 | @method('DELETE') | ||
75 | |||
76 | <button | ||
77 | type="submit" | ||
78 | class="w-full px-5 py-3 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg sm:w-auto sm:px-4 sm:py-2 active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | ||
79 | > | ||
80 | Удалить | ||
81 | </button> | ||
82 | </form> | ||
83 | |||
84 | </footer> | ||
85 | </div> | ||
86 | </div> | ||
87 | <!-- End of modal backdrop --> | ||
88 |
resources/views/admin/message/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Сообщения адмистратора']) | 1 | @extends('layout.admin', ['title' => 'Админка - Сообщения адмистратора']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('change', '.checkread', function () { | 6 | $(document).on('change', '.checkread', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var ajax_block = $('#ajax_block'); | 9 | var ajax_block = $('#ajax_block'); |
10 | var bool = 0; | 10 | var bool = 0; |
11 | 11 | ||
12 | if(this.checked){ | 12 | if(this.checked){ |
13 | bool = 1; | 13 | bool = 1; |
14 | } else { | 14 | } else { |
15 | bool = 0; | 15 | bool = 0; |
16 | } | 16 | } |
17 | 17 | ||
18 | $.ajax({ | 18 | $.ajax({ |
19 | type: "GET", | 19 | type: "GET", |
20 | url: "{{ url()->full()}}", | 20 | url: "{{ url()->full()}}", |
21 | data: "id=" + value + "&flag_new=" + bool, | 21 | data: "id=" + value + "&flag_new=" + bool, |
22 | success: function (data) { | 22 | success: function (data) { |
23 | console.log('Обновление таблицы сообщений администратора '); | 23 | console.log('Обновление таблицы сообщений администратора '); |
24 | //data = JSON.parse(data); | 24 | //data = JSON.parse(data); |
25 | //console.log(data); | 25 | //console.log(data); |
26 | ajax_block.html(data); | 26 | ajax_block.html(data); |
27 | }, | 27 | }, |
28 | headers: { | 28 | headers: { |
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
30 | }, | 30 | }, |
31 | error: function (data) { | 31 | error: function (data) { |
32 | console.log('Error: ' + data); | 32 | console.log('Error: ' + data); |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }); | 35 | }); |
36 | 36 | ||
37 | }); | 37 | }); |
38 | </script> | 38 | </script> |
39 | @endsection | 39 | @endsection |
40 | 40 | ||
41 | @section('search') | 41 | @section('search') |
42 | @include('admin.find_message') | 42 | @include('admin.find_message') |
43 | @endsection | 43 | @endsection |
44 | 44 | ||
45 | @section('content') | 45 | @section('content') |
46 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 46 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
47 | <div class="w-full overflow-x-auto"> | 47 | <div class="w-full overflow-x-auto"> |
48 | <table class="w-full whitespace-no-wrap"> | 48 | <table class="w-full whitespace-no-wrap"> |
49 | <thead> | 49 | <thead> |
50 | <tr | 50 | <tr |
51 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 51 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
52 | > | 52 | > |
53 | <th class="px-4 py-3">№</th> | 53 | <th class="px-4 py-3">№</th> |
54 | <th class="px-4 py-3">От юзера</th> | 54 | <th class="px-4 py-3">От юзера</th> |
55 | <th class="px-4 py-3">К юзеру</th> | 55 | <th class="px-4 py-3">К юзеру</th> |
56 | <th class="px-4 py-3">Текст</th> | 56 | <th class="px-4 py-3">Текст</th> |
57 | <th class="px-4 py-3">Дата</th> | 57 | <th class="px-4 py-3">Дата</th> |
58 | <th class="px-4 py-3">Прочтено</th> | 58 | <th class="px-4 py-3">Прочтено</th> |
59 | </tr> | 59 | </tr> |
60 | </thead> | 60 | </thead> |
61 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 61 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
62 | @foreach($Msgs as $msg) | 62 | @foreach($Msgs as $msg) |
63 | <tr class="text-gray-700 dark:text-gray-400" | 63 | <tr class="text-gray-700 dark:text-gray-400" |
64 | @if (isset($msg->user_to->id)) | 64 | @if (isset($msg->user_to->id)) |
65 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) | 65 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) |
66 | style="background-color: #403998;" | 66 | style="background-color: #403998;" |
67 | @endif | 67 | @endif |
68 | @endif> | 68 | @endif> |
69 | <td class="px-4 py-3"> | 69 | <td class="px-4 py-3"> |
70 | {{$msg->id}} | 70 | {{$msg->id}} |
71 | </td> | 71 | </td> |
72 | <td class="px-4 py-3"> | 72 | <td class="px-4 py-3"> |
73 | @if (isset($msg->user_from->name)) | 73 | @if (isset($msg->user_from->name)) |
74 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) | 74 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) |
75 | @else | 75 | @else |
76 | Пользователь удален | 76 | Пользователь удален |
77 | @endif | 77 | @endif |
78 | </td> | 78 | </td> |
79 | <td class="px-4 py-3"> | 79 | <td class="px-4 py-3"> |
80 | @if (isset($msg->user_to->name)) | 80 | @if (isset($msg->user_to->name)) |
81 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) | 81 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) |
82 | @else | 82 | @else |
83 | Пользователь удален | 83 | Пользователь удален |
84 | @endif | 84 | @endif |
85 | </td> | 85 | </td> |
86 | <td class="px-4 py-3"> | 86 | <td class="px-4 py-3"> |
87 | {{$msg->title}} | 87 | {{$msg->title}} |
88 | <div class="flex items-center text-sm"> | 88 | <div class="flex items-center text-sm"> |
89 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> | 89 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> |
90 | </div> | 90 | </div> |
91 | </td> | 91 | </td> |
92 | <td class="px-4 py-3 text-sm"> | 92 | <td class="px-4 py-3 text-sm"> |
93 | {{ $msg->created_at }} | 93 | {{ date('d.m.Y h:i:s', strtotime($msg->created_at)) }} |
94 | </td> | 94 | </td> |
95 | <td class="px-4 py-3 text-sm"> | 95 | <td class="px-4 py-3 text-sm"> |
96 | @if (isset($msg->user_to->id)) | 96 | @if (isset($msg->user_to->id)) |
97 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) | 97 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) |
98 | <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/> | 98 | <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/> |
99 | @endif | 99 | @endif |
100 | @endif | 100 | @endif |
101 | </td> | 101 | </td> |
102 | </tr> | 102 | </tr> |
103 | @endforeach | 103 | @endforeach |
104 | </tbody> | 104 | </tbody> |
105 | </table> | 105 | </table> |
106 | </div> | 106 | </div> |
107 | 107 | ||
108 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 108 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
109 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> | 109 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> |
110 | </div> | 110 | </div> |
111 | </div><br> | 111 | </div><br> |
112 | 112 | ||
113 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2"> | 113 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2"> |
114 | 114 | ||
115 | <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data"> | 115 | <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data"> |
116 | @csrf | 116 | @csrf |
117 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | 117 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> |
118 | <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3> | 118 | <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3> |
119 | <hr> | 119 | <hr> |
120 | <label for="ad_employer_id" class="block text-sm"> | 120 | <label for="ad_employer_id" class="block text-sm"> |
121 | <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/> | 121 | <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/> |
122 | 122 | ||
123 | <span class="text-gray-700 dark:text-gray-400">Кому:</span> | 123 | <span class="text-gray-700 dark:text-gray-400">Кому:</span> |
124 | 124 | ||
125 | <select name="to_user_id" id="to_user_id" class="block change_js mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"> | 125 | <select name="to_user_id" id="to_user_id" class="block change_js mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"> |
126 | @foreach($users as $user) | 126 | @foreach($users as $user) |
127 | <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option> | 127 | <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option> |
128 | @endforeach | 128 | @endforeach |
129 | </select> | 129 | </select> |
130 | </label><br> | 130 | </label><br> |
131 | 131 | ||
132 | <label class="block text-sm"> | 132 | <label class="block text-sm"> |
133 | <span class="text-gray-700 dark:text-gray-400">Заголовок</span> | 133 | <span class="text-gray-700 dark:text-gray-400">Заголовок</span> |
134 | <input name="title" id="title" | 134 | <input name="title" id="title" |
135 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 135 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
136 | placeholder="Заголовок" value="{{ old('title') ?? '' }}" | 136 | placeholder="Заголовок" value="{{ old('title') ?? '' }}" |
137 | /> | 137 | /> |
138 | @error('title') | 138 | @error('title') |
139 | <span class="text-xs text-red-600 dark:text-red-400"> | 139 | <span class="text-xs text-red-600 dark:text-red-400"> |
140 | {{ $message }} | 140 | {{ $message }} |
141 | </span> | 141 | </span> |
142 | @enderror | 142 | @enderror |
143 | </label><br> | 143 | </label><br> |
144 | 144 | ||
145 | <label class="block text-sm"> | 145 | <label class="block text-sm"> |
146 | <span class="text-gray-700 dark:text-gray-400">Текст</span> | 146 | <span class="text-gray-700 dark:text-gray-400">Текст</span> |
147 | <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" name="text" placeholder="Текст" required | 147 | <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" name="text" placeholder="Текст" required |
148 | rows="4">{{ old('text') ?? '' }}</textarea> | 148 | rows="4">{{ old('text') ?? '' }}</textarea> |
149 | @error('text') | 149 | @error('text') |
150 | <span class="text-xs text-red-600 dark:text-red-400"> | 150 | <span class="text-xs text-red-600 dark:text-red-400"> |
151 | {{ $message }} | 151 | {{ $message }} |
152 | </span> | 152 | </span> |
153 | @enderror | 153 | @enderror |
154 | </label><br> | 154 | </label><br> |
155 | 155 | ||
156 | 156 | ||
157 | <label class="block text-sm"> | 157 | <label class="block text-sm"> |
158 | <span class="text-gray-700 dark:text-gray-400">Файл</span> | 158 | <span class="text-gray-700 dark:text-gray-400">Файл</span> |
159 | <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 | 159 | <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 |
160 | focus:border-purple-400 focus:outline-none focus:shadow-outline-purple | 160 | focus:border-purple-400 focus:outline-none focus:shadow-outline-purple |
161 | dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 161 | dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
162 | id="file" name="file"> | 162 | id="file" name="file"> |
163 | @error('file') | 163 | @error('file') |
164 | <span class="text-xs text-red-600 dark:text-red-400"> | 164 | <span class="text-xs text-red-600 dark:text-red-400"> |
165 | {{ $message }} | 165 | {{ $message }} |
166 | </span> | 166 | </span> |
167 | @enderror | 167 | @enderror |
168 | </label><br> | 168 | </label><br> |
169 | 169 | ||
170 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | 170 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> |
171 | <div> | 171 | <div> |
172 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | 172 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> |
173 | Отправить | 173 | Отправить |
174 | </button> | 174 | </button> |
175 | </div> | 175 | </div> |
176 | </div> | 176 | </div> |
177 | </div> | 177 | </div> |
178 | </form> | 178 | </form> |
179 | </div> | 179 | </div> |
180 | @endsection | 180 | @endsection |
181 | 181 |
resources/views/admin/message/index_ajax.blade.php
1 | <div class="w-full overflow-x-auto"> | 1 | <div class="w-full overflow-x-auto"> |
2 | <table class="w-full whitespace-no-wrap"> | 2 | <table class="w-full whitespace-no-wrap"> |
3 | <thead> | 3 | <thead> |
4 | <tr | 4 | <tr |
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
6 | > | 6 | > |
7 | <th class="px-4 py-3">№</th> | 7 | <th class="px-4 py-3">№</th> |
8 | <th class="px-4 py-3">От юзера</th> | 8 | <th class="px-4 py-3">От юзера</th> |
9 | <th class="px-4 py-3">К юзеру</th> | 9 | <th class="px-4 py-3">К юзеру</th> |
10 | <th class="px-4 py-3">Текст</th> | 10 | <th class="px-4 py-3">Текст</th> |
11 | <th class="px-4 py-3">Дата</th> | 11 | <th class="px-4 py-3">Дата</th> |
12 | <th class="px-4 py-3">Прочтено</th> | 12 | <th class="px-4 py-3">Прочтено</th> |
13 | </tr> | 13 | </tr> |
14 | </thead> | 14 | </thead> |
15 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 15 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
16 | @foreach($Msgs as $msg) | 16 | @foreach($Msgs as $msg) |
17 | <tr class="text-gray-700 dark:text-gray-400" | 17 | <tr class="text-gray-700 dark:text-gray-400" |
18 | @if (isset($msg->user_to->id)) | 18 | @if (isset($msg->user_to->id)) |
19 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" | 19 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" |
20 | @endif | 20 | @endif |
21 | @endif> | 21 | @endif> |
22 | <td class="px-4 py-3"> | 22 | <td class="px-4 py-3"> |
23 | {{$msg->id}} | 23 | {{$msg->id}} |
24 | </td> | 24 | </td> |
25 | <td class="px-4 py-3"> | 25 | <td class="px-4 py-3"> |
26 | @if ((isset($msg->user_from->name)) && (!empty($msg->user_from->name))) | 26 | @if ((isset($msg->user_from->name)) && (!empty($msg->user_from->name))) |
27 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) | 27 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) |
28 | @else | 28 | @else |
29 | Пользователь удален | 29 | Пользователь удален |
30 | @endif | 30 | @endif |
31 | </td> | 31 | </td> |
32 | <td class="px-4 py-3"> | 32 | <td class="px-4 py-3"> |
33 | @if ((isset($msg->user_to->name)) && (!empty($msg->user_to->name))) | 33 | @if ((isset($msg->user_to->name)) && (!empty($msg->user_to->name))) |
34 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) | 34 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) |
35 | @else | 35 | @else |
36 | Пользователь удален | 36 | Пользователь удален |
37 | @endif | 37 | @endif |
38 | </td> | 38 | </td> |
39 | <td class="px-4 py-3"> | 39 | <td class="px-4 py-3"> |
40 | {{$msg->title}} | 40 | {{$msg->title}} |
41 | <div class="flex items-center text-sm"> | 41 | <div class="flex items-center text-sm"> |
42 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> | 42 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> |
43 | </div> | 43 | </div> |
44 | </td> | 44 | </td> |
45 | <td class="px-4 py-3 text-sm"> | 45 | <td class="px-4 py-3 text-sm"> |
46 | {{ $msg->created_at }} | 46 | {{ date('d.m.Y h:i:s', strtotime($msg->created_at)) }} |
47 | </td> | 47 | </td> |
48 | <td class="px-4 py-3 text-sm"> | 48 | <td class="px-4 py-3 text-sm"> |
49 | @if (isset($msg->user_to->id)) | 49 | @if (isset($msg->user_to->id)) |
50 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) | 50 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) |
51 | <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/> | 51 | <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/> |
52 | @endif | 52 | @endif |
53 | @endif | 53 | @endif |
54 | </td> | 54 | </td> |
55 | </tr> | 55 | </tr> |
56 | @endforeach | 56 | @endforeach |
57 | </tbody> | 57 | </tbody> |
58 | </table> | 58 | </table> |
59 | </div> | 59 | </div> |
60 | 60 | ||
61 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 61 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
62 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> | 62 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> |
63 | </div> | 63 | </div> |
64 | 64 |
resources/views/admin/users/index.blade.php
1 | @extends('layout.admin', ['title' => $title]) | 1 | @extends('layout.admin', ['title' => $title]) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.check_click', function () { | 6 | $(document).on('click', '.check_click', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var field = this_.attr('data-field'); | 9 | var field = this_.attr('data-field'); |
10 | var ajax_block = $('#ajax_block'); | 10 | var ajax_block = $('#ajax_block'); |
11 | var bool = 0; | 11 | var bool = 0; |
12 | var str_get = ''; | 12 | var str_get = ''; |
13 | 13 | ||
14 | if(this.checked){ | 14 | if(this.checked){ |
15 | bool = 1; | 15 | bool = 1; |
16 | } else { | 16 | } else { |
17 | bool = 0; | 17 | bool = 0; |
18 | } | 18 | } |
19 | console.log(field); | 19 | console.log(field); |
20 | str_get = "id=" + value + "&" + field + "=" + bool; | 20 | str_get = "id=" + value + "&" + field + "=" + bool; |
21 | console.log(str_get); | 21 | console.log(str_get); |
22 | 22 | ||
23 | $.ajax({ | 23 | $.ajax({ |
24 | type: "GET", | 24 | type: "GET", |
25 | url: "{{ url()->full()}}", | 25 | url: "{{ url()->full()}}", |
26 | data: str_get, | 26 | data: str_get, |
27 | success: function (data) { | 27 | success: function (data) { |
28 | console.log('Обновление таблицы пользователей '); | 28 | console.log('Обновление таблицы пользователей '); |
29 | //data = JSON.parse(data); | 29 | //data = JSON.parse(data); |
30 | //console.log(data); | 30 | //console.log(data); |
31 | ajax_block.html(data); | 31 | ajax_block.html(data); |
32 | }, | 32 | }, |
33 | headers: { | 33 | headers: { |
34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
35 | }, | 35 | }, |
36 | error: function (data) { | 36 | error: function (data) { |
37 | console.log('Error: ' + data); | 37 | console.log('Error: ' + data); |
38 | } | 38 | } |
39 | }); | 39 | }); |
40 | }); | 40 | }); |
41 | }); | 41 | }); |
42 | </script> | 42 | </script> |
43 | @endsection | 43 | @endsection |
44 | 44 | ||
45 | @section('search') | 45 | @section('search') |
46 | @include('admin.find') | 46 | @include('admin.find') |
47 | @endsection | 47 | @endsection |
48 | 48 | ||
49 | @section('content') | 49 | @section('content') |
50 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 50 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
51 | <div class="w-full overflow-x-auto"> | 51 | <div class="w-full overflow-x-auto"> |
52 | <table class="w-full whitespace-no-wrap"> | 52 | <table class="w-full whitespace-no-wrap"> |
53 | <thead> | 53 | <thead> |
54 | <tr | 54 | <tr |
55 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 55 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
56 | > | 56 | > |
57 | <th class="px-4 py-3">№</th> | 57 | <th class="px-4 py-3">№</th> |
58 | <th class="px-4 py-3">Имя</th> | 58 | <th class="px-4 py-3">Имя</th> |
59 | <th class="px-4 py-3">Email/логин</th> | 59 | <th class="px-4 py-3">Email/логин</th> |
60 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | 60 | <th class="px-4 py-3">Работодатель/работник/администратор</th> |
61 | <th class="px-4 py-3">Бан</th> | 61 | <th class="px-4 py-3">Бан</th> |
62 | <th class="px-4 py-3">Новый</th> | 62 | <th class="px-4 py-3">Новый</th> |
63 | @if ($id_admin == 1) | 63 | @if ($id_admin == 1) |
64 | <th class="px-4 py-3">Админ</th> | 64 | <th class="px-4 py-3">Админ</th> |
65 | @endif | 65 | @endif |
66 | <th class="px-4 py-3">Дата регистрации</th> | 66 | <th class="px-4 py-3">Дата регистрации</th> |
67 | </tr> | 67 | </tr> |
68 | </thead> | 68 | </thead> |
69 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 69 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
70 | @foreach($users as $user) | 70 | @foreach($users as $user) |
71 | <tr class="text-gray-700 dark:text-gray-400"> | 71 | <tr class="text-gray-700 dark:text-gray-400"> |
72 | <td class="px-4 py-3"> | 72 | <td class="px-4 py-3"> |
73 | {{$user->id}} | 73 | {{$user->id}} |
74 | </td> | 74 | </td> |
75 | <td class="px-4 py-3"> | 75 | <td class="px-4 py-3"> |
76 | <!--<div class="flex items-center text-sm"> | 76 | <!--<div class="flex items-center text-sm"> |
77 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 77 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
78 | <div | 78 | <div |
79 | class="absolute inset-0 rounded-full shadow-inner" | 79 | class="absolute inset-0 rounded-full shadow-inner" |
80 | aria-hidden="true" | 80 | aria-hidden="true" |
81 | ></div> | 81 | ></div> |
82 | </div> | 82 | </div> |
83 | <div> | 83 | <div> |
84 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | 84 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> |
85 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 85 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
86 | Все пользователи сайта | 86 | Все пользователи сайта |
87 | </p> | 87 | </p> |
88 | </div> | 88 | </div> |
89 | </div> | 89 | </div> |
90 | --> | 90 | --> |
91 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}">{{ $user->name }}</a> | 91 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}">{{ $user->name }}</a> |
92 | </td> | 92 | </td> |
93 | <td class="px-4 py-3 text-sm"> | 93 | <td class="px-4 py-3 text-sm"> |
94 | {{ $user->email }} | 94 | {{ $user->email }} |
95 | </td> | 95 | </td> |
96 | <td class="px-4 py-3 text-xs"> | 96 | <td class="px-4 py-3 text-xs"> |
97 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 97 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
98 | @if ($user->is_worker) | 98 | @if ($user->is_worker) |
99 | Работник | 99 | Работник |
100 | @else | 100 | @else |
101 | Работодатель | 101 | Работодатель |
102 | @endif | 102 | @endif |
103 | </span> | 103 | </span> |
104 | @if ($user->admin) | 104 | @if ($user->admin) |
105 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 105 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
106 | Администратор | 106 | Администратор |
107 | </span> | 107 | </span> |
108 | @endif | 108 | @endif |
109 | </td> | 109 | </td> |
110 | <td class="px-4 py-3 text-sm"> | 110 | <td class="px-4 py-3 text-sm"> |
111 | @if ($user->id > 1) | 111 | @if ($user->id > 1) |
112 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 112 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
113 | @endif | 113 | @endif |
114 | </td> | 114 | </td> |
115 | 115 | ||
116 | <td class="px-4 py-3 text-sm"> | 116 | <td class="px-4 py-3 text-sm"> |
117 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | 117 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> |
118 | </td> | 118 | </td> |
119 | 119 | ||
120 | @if ($id_admin == 1) | 120 | @if ($id_admin == 1) |
121 | <td class="px-4 py-3 text-sm"> | 121 | <td class="px-4 py-3 text-sm"> |
122 | @if ($user->id > 1) | 122 | @if ($user->id > 1) |
123 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> | 123 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> |
124 | @endif | 124 | @endif |
125 | </td> | 125 | </td> |
126 | @endif | 126 | @endif |
127 | 127 | ||
128 | <td class="px-4 py-3 text-sm"> | 128 | <td class="px-4 py-3 text-sm"> |
129 | {{ $user->created_at }} | 129 | {{ date('d.m.Y', strtotime($user->created_at)) }} |
130 | </td> | 130 | </td> |
131 | </tr> | 131 | </tr> |
132 | @endforeach | 132 | @endforeach |
133 | </tbody> | 133 | </tbody> |
134 | </table> | 134 | </table> |
135 | </div> | 135 | </div> |
136 | 136 | ||
137 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 137 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
138 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | 138 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> |
139 | <?=$users->links('admin.pagginate'); ?> | 139 | <?=$users->links('admin.pagginate'); ?> |
140 | </div> | 140 | </div> |
141 | 141 | ||
142 | 142 | ||
143 | <!--<div | 143 | <!--<div |
144 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | 144 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" |
145 | > | 145 | > |
146 | <span class="flex items-center col-span-3"> | 146 | <span class="flex items-center col-span-3"> |
147 | Showing 21-30 of 100 | 147 | Showing 21-30 of 100 |
148 | </span> | 148 | </span> |
149 | <span class="col-span-2"></span> | 149 | <span class="col-span-2"></span> |
150 | 150 | ||
151 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 151 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
152 | <nav aria-label="Table navigation"> | 152 | <nav aria-label="Table navigation"> |
153 | <ul class="inline-flex items-center"> | 153 | <ul class="inline-flex items-center"> |
154 | <li> | 154 | <li> |
155 | <button | 155 | <button |
156 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 156 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
157 | aria-label="Previous" | 157 | aria-label="Previous" |
158 | > | 158 | > |
159 | <svg | 159 | <svg |
160 | aria-hidden="true" | 160 | aria-hidden="true" |
161 | class="w-4 h-4 fill-current" | 161 | class="w-4 h-4 fill-current" |
162 | viewBox="0 0 20 20" | 162 | viewBox="0 0 20 20" |
163 | > | 163 | > |
164 | <path | 164 | <path |
165 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | 165 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" |
166 | clip-rule="evenodd" | 166 | clip-rule="evenodd" |
167 | fill-rule="evenodd" | 167 | fill-rule="evenodd" |
168 | ></path> | 168 | ></path> |
169 | </svg> | 169 | </svg> |
170 | </button> | 170 | </button> |
171 | </li> | 171 | </li> |
172 | <li> | 172 | <li> |
173 | <button | 173 | <button |
174 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 174 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
175 | > | 175 | > |
176 | 1 | 176 | 1 |
177 | </button> | 177 | </button> |
178 | </li> | 178 | </li> |
179 | <li> | 179 | <li> |
180 | <button | 180 | <button |
181 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 181 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
182 | > | 182 | > |
183 | 2 | 183 | 2 |
184 | </button> | 184 | </button> |
185 | </li> | 185 | </li> |
186 | <li> | 186 | <li> |
187 | <button | 187 | <button |
188 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | 188 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" |
189 | > | 189 | > |
190 | 3 | 190 | 3 |
191 | </button> | 191 | </button> |
192 | </li> | 192 | </li> |
193 | <li> | 193 | <li> |
194 | <button | 194 | <button |
195 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 195 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
196 | > | 196 | > |
197 | 4 | 197 | 4 |
198 | </button> | 198 | </button> |
199 | </li> | 199 | </li> |
200 | <li> | 200 | <li> |
201 | <span class="px-3 py-1">...</span> | 201 | <span class="px-3 py-1">...</span> |
202 | </li> | 202 | </li> |
203 | <li> | 203 | <li> |
204 | <button | 204 | <button |
205 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 205 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
206 | > | 206 | > |
207 | 8 | 207 | 8 |
208 | </button> | 208 | </button> |
209 | </li> | 209 | </li> |
210 | <li> | 210 | <li> |
211 | <button | 211 | <button |
212 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 212 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
213 | > | 213 | > |
214 | 9 | 214 | 9 |
215 | </button> | 215 | </button> |
216 | </li> | 216 | </li> |
217 | <li> | 217 | <li> |
218 | <button | 218 | <button |
219 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 219 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
220 | aria-label="Next" | 220 | aria-label="Next" |
221 | > | 221 | > |
222 | <svg | 222 | <svg |
223 | class="w-4 h-4 fill-current" | 223 | class="w-4 h-4 fill-current" |
224 | aria-hidden="true" | 224 | aria-hidden="true" |
225 | viewBox="0 0 20 20" | 225 | viewBox="0 0 20 20" |
226 | > | 226 | > |
227 | <path | 227 | <path |
228 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | 228 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" |
229 | clip-rule="evenodd" | 229 | clip-rule="evenodd" |
230 | fill-rule="evenodd" | 230 | fill-rule="evenodd" |
231 | ></path> | 231 | ></path> |
232 | </svg> | 232 | </svg> |
233 | </button> | 233 | </button> |
234 | </li> | 234 | </li> |
235 | </ul> | 235 | </ul> |
236 | </nav> | 236 | </nav> |
237 | </span> | 237 | </span> |
238 | </div>--> | 238 | </div>--> |
239 | </div> | 239 | </div> |
240 | 240 | ||
241 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | 241 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> |
242 | 242 | ||
243 | 243 | ||
244 | @endsection | 244 | @endsection |
245 | 245 |
resources/views/admin/users/index_ajax.blade.php
1 | <div class="w-full overflow-x-auto"> | 1 | <div class="w-full overflow-x-auto"> |
2 | <table class="w-full whitespace-no-wrap"> | 2 | <table class="w-full whitespace-no-wrap"> |
3 | <thead> | 3 | <thead> |
4 | <tr | 4 | <tr |
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
6 | > | 6 | > |
7 | <th class="px-4 py-3">№</th> | 7 | <th class="px-4 py-3">№</th> |
8 | <th class="px-4 py-3">Имя</th> | 8 | <th class="px-4 py-3">Имя</th> |
9 | <th class="px-4 py-3">Email/логин</th> | 9 | <th class="px-4 py-3">Email/логин</th> |
10 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | 10 | <th class="px-4 py-3">Работодатель/работник/администратор</th> |
11 | <th class="px-4 py-3">Бан</th> | 11 | <th class="px-4 py-3">Бан</th> |
12 | <th class="px-4 py-3">Новый</th> | 12 | <th class="px-4 py-3">Новый</th> |
13 | @if ($id_admin == 1) | 13 | @if ($id_admin == 1) |
14 | <th class="px-4 py-3">Админ</th> | 14 | <th class="px-4 py-3">Админ</th> |
15 | @endif | 15 | @endif |
16 | <th class="px-4 py-3">Дата регистрации</th> | 16 | <th class="px-4 py-3">Дата регистрации</th> |
17 | </tr> | 17 | </tr> |
18 | </thead> | 18 | </thead> |
19 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 19 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
20 | @foreach($users as $user) | 20 | @foreach($users as $user) |
21 | <tr class="text-gray-700 dark:text-gray-400"> | 21 | <tr class="text-gray-700 dark:text-gray-400"> |
22 | <td class="px-4 py-3"> | 22 | <td class="px-4 py-3"> |
23 | {{$user->id}} | 23 | {{$user->id}} |
24 | </td> | 24 | </td> |
25 | <td class="px-4 py-3"> | 25 | <td class="px-4 py-3"> |
26 | {{ $user->name }} | 26 | {{ $user->name }} |
27 | </td> | 27 | </td> |
28 | <td class="px-4 py-3 text-sm"> | 28 | <td class="px-4 py-3 text-sm"> |
29 | {{ $user->email }} | 29 | {{ $user->email }} |
30 | </td> | 30 | </td> |
31 | <td class="px-4 py-3 text-xs"> | 31 | <td class="px-4 py-3 text-xs"> |
32 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 32 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
33 | @if ($user->is_worker) | 33 | @if ($user->is_worker) |
34 | Работник | 34 | Работник |
35 | @else | 35 | @else |
36 | Работодатель | 36 | Работодатель |
37 | @endif | 37 | @endif |
38 | </span> | 38 | </span> |
39 | @if ($user->admin) | 39 | @if ($user->admin) |
40 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 40 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
41 | Администратор | 41 | Администратор |
42 | </span> | 42 | </span> |
43 | @endif | 43 | @endif |
44 | </td> | 44 | </td> |
45 | <td class="px-4 py-3 text-sm"> | 45 | <td class="px-4 py-3 text-sm"> |
46 | @if ($user->id > 1) | 46 | @if ($user->id > 1) |
47 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 47 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
48 | @endif | 48 | @endif |
49 | </td> | 49 | </td> |
50 | <td class="px-4 py-3 text-sm"> | 50 | <td class="px-4 py-3 text-sm"> |
51 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | 51 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> |
52 | </td> | 52 | </td> |
53 | 53 | ||
54 | @if ($id_admin == 1) | 54 | @if ($id_admin == 1) |
55 | <td class="px-4 py-3 text-sm"> | 55 | <td class="px-4 py-3 text-sm"> |
56 | @if ($user->id > 1) | 56 | @if ($user->id > 1) |
57 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> | 57 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> |
58 | @endif | 58 | @endif |
59 | </td> | 59 | </td> |
60 | @endif | 60 | @endif |
61 | 61 | ||
62 | <td class="px-4 py-3 text-sm"> | 62 | <td class="px-4 py-3 text-sm"> |
63 | {{ $user->created_at }} | 63 | {{ date('d.m.Y', strtotime($user->created_at)) }} |
64 | </td> | 64 | </td> |
65 | </tr> | 65 | </tr> |
66 | @endforeach | 66 | @endforeach |
67 | </tbody> | 67 | </tbody> |
68 | </table> | 68 | </table> |
69 | </div> | 69 | </div> |
70 | 70 | ||
71 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 71 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
72 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | 72 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> |
73 | <?=$users->links('admin.pagginate'); ?> | 73 | <?=$users->links('admin.pagginate'); ?> |
74 | </div> | 74 | </div> |
75 | 75 |
resources/views/admin/worker/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Работники']) | 1 | @extends('layout.admin', ['title' => 'Админка - Работники']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.checkban', function () { | 6 | $(document).on('click', '.checkban', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var ajax_block = $('#ajax_block'); | 9 | var ajax_block = $('#ajax_block'); |
10 | var bool = 0; | 10 | var bool = 0; |
11 | 11 | ||
12 | if(this.checked){ | 12 | if(this.checked){ |
13 | bool = 1; | 13 | bool = 1; |
14 | } else { | 14 | } else { |
15 | bool = 0; | 15 | bool = 0; |
16 | } | 16 | } |
17 | 17 | ||
18 | $.ajax({ | 18 | $.ajax({ |
19 | type: "GET", | 19 | type: "GET", |
20 | url: "{{ url()->full()}}", | 20 | url: "{{ url()->full()}}", |
21 | data: "id=" + value + "&is_ban=" + bool, | 21 | data: "id=" + value + "&is_ban=" + bool, |
22 | success: function (data) { | 22 | success: function (data) { |
23 | console.log('Обновление таблицы работников '); | 23 | console.log('Обновление таблицы работников '); |
24 | //data = JSON.parse(data); | 24 | //data = JSON.parse(data); |
25 | console.log(data); | 25 | console.log(data); |
26 | ajax_block.html(data); | 26 | ajax_block.html(data); |
27 | }, | 27 | }, |
28 | headers: { | 28 | headers: { |
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
30 | }, | 30 | }, |
31 | error: function (data) { | 31 | error: function (data) { |
32 | console.log('Error: ' + data); | 32 | console.log('Error: ' + data); |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }); | 35 | }); |
36 | 36 | ||
37 | }); | 37 | }); |
38 | </script> | 38 | </script> |
39 | @endsection | 39 | @endsection |
40 | 40 | ||
41 | @section('search') | 41 | @section('search') |
42 | @include('admin.find_worker', ['find_status_work' => $find_status_work]) | 42 | @include('admin.find_worker', ['find_status_work' => $find_status_work]) |
43 | @endsection | 43 | @endsection |
44 | 44 | ||
45 | @section('content') | 45 | @section('content') |
46 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 46 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
47 | <div class="w-full overflow-x-auto"> | 47 | <div class="w-full overflow-x-auto"> |
48 | <table class="w-full whitespace-no-wrap"> | 48 | <table class="w-full whitespace-no-wrap"> |
49 | <thead> | 49 | <thead> |
50 | <tr | 50 | <tr |
51 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 51 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
52 | > | 52 | > |
53 | <th class="px-4 py-3">№</th> | 53 | <th class="px-4 py-3">№</th> |
54 | <th class="px-4 py-3">ФИО</th> | 54 | <th class="px-4 py-3">ФИО</th> |
55 | <th class="px-4 py-3">Email/Телефон</th> | 55 | <th class="px-4 py-3">Email/Телефон</th> |
56 | <th class="px-4 py-3">% заполнения анкеты</th> | 56 | <th class="px-4 py-3">% заполнения анкеты</th> |
57 | <th class="px-4 py-3">Должность</th> | 57 | <th class="px-4 py-3">Должность</th> |
58 | <th class="px-4 py-3">Дата регистрации</th> | 58 | <th class="px-4 py-3">Дата регистрации</th> |
59 | <th class="px-4 py-3">Изменить</th> | 59 | <th class="px-4 py-3">Изменить</th> |
60 | <!--<th class="px-4 py-3">Бан</th>--> | 60 | <!--<th class="px-4 py-3">Бан</th>--> |
61 | </tr> | 61 | </tr> |
62 | </thead> | 62 | </thead> |
63 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 63 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
64 | @foreach($users as $user) | 64 | @foreach($users as $user) |
65 | <tr class="text-gray-700 dark:text-gray-400"> | 65 | <tr class="text-gray-700 dark:text-gray-400"> |
66 | <td class="px-4 py-3"> | 66 | <td class="px-4 py-3"> |
67 | {{$user->id}} | 67 | {{$user->id}} |
68 | </td> | 68 | </td> |
69 | <td class="px-4 py-3"> | 69 | <td class="px-4 py-3"> |
70 | @if (isset($user->id)) | 70 | @if (isset($user->id)) |
71 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}}">{{ $user->surname }} {{ !empty($user->name_man) ? $user->name_man : $user->name }} {{ $user->surname2 }}</a> | 71 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}}">{{ $user->surname }} {{ !empty($user->name_man) ? $user->name_man : $user->name }} {{ $user->surname2 }}</a> |
72 | @else | 72 | @else |
73 | {{ $user->surname }} {{ !empty($user->name_man) ? $user->name_man : $user->name }} {{ $user->surname2 }} | 73 | {{ $user->surname }} {{ !empty($user->name_man) ? $user->name_man : $user->name }} {{ $user->surname2 }} |
74 | @endif | 74 | @endif |
75 | </td> | 75 | </td> |
76 | <td class="px-4 py-3 text-sm"> | 76 | <td class="px-4 py-3 text-sm"> |
77 | <div class="flex items-center text-sm"> | 77 | <div class="flex items-center text-sm"> |
78 | <div> | 78 | <div> |
79 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> | 79 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> |
80 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 80 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
81 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} | 81 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} |
82 | </p> | 82 | </p> |
83 | </div> | 83 | </div> |
84 | </div> | 84 | </div> |
85 | </td> | 85 | </td> |
86 | <td class="px-4 py-3 text-xs"> | 86 | <td class="px-4 py-3 text-xs"> |
87 | @if (isset($user->workers[0]->persent_anketa)) | 87 | @if (isset($user->workers[0]->persent_anketa)) |
88 | @if ($user->workers[0]->persent_anketa > 40) | 88 | @if ($user->workers[0]->persent_anketa > 40) |
89 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 89 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
90 | {{$user->workers[0]->persent_anketa}}% | 90 | {{$user->workers[0]->persent_anketa}}% |
91 | </span> | 91 | </span> |
92 | @else | 92 | @else |
93 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 93 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
94 | {{$user->workers[0]->persent_anketa}}% | 94 | {{$user->workers[0]->persent_anketa}}% |
95 | </span> | 95 | </span> |
96 | @endif | 96 | @endif |
97 | @else | 97 | @else |
98 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 98 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
99 | 0% | 99 | 0% |
100 | </span> | 100 | </span> |
101 | @endif | 101 | @endif |
102 | </td> | 102 | </td> |
103 | <td class="px-4 py-3 text-sm"> | 103 | <td class="px-4 py-3 text-sm"> |
104 | @if (isset($user->jobtitles[0]->name)) | 104 | @if (isset($user->jobtitles[0]->name)) |
105 | {{ $user->jobtitles[0]->name }} | 105 | {{ $user->jobtitles[0]->name }} |
106 | @else | 106 | @else |
107 | Не задана | 107 | Не задана |
108 | @endif | 108 | @endif |
109 | </td> | 109 | </td> |
110 | <td class="px-4 py-3 text-sm"> | 110 | <td class="px-4 py-3 text-sm"> |
111 | {{ $user->created_at }} | 111 | {{ date('d.m.Y h:i:s', strtotime($user->created_at)) }} |
112 | </td> | 112 | </td> |
113 | <td class="px-4 py-3 text-sm"> | 113 | <td class="px-4 py-3 text-sm"> |
114 | <!--if ($user->id > 1)--> | 114 | <!--if ($user->id > 1)--> |
115 | @if (isset($user->workers[0]->id)) | 115 | @if (isset($user->workers[0]->id)) |
116 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Изменить</a> | 116 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Изменить</a> |
117 | 117 | ||
118 | @endif | 118 | @endif |
119 | <!--endif--> | 119 | <!--endif--> |
120 | </td> | 120 | </td> |
121 | <!--<td class="px-4 py-3 text-sm"> | 121 | <!--<td class="px-4 py-3 text-sm"> |
122 | @if ($user->id > 1) | 122 | @if ($user->id > 1) |
123 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 123 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
124 | @endif | 124 | @endif |
125 | </td>--> | 125 | </td>--> |
126 | </tr> | 126 | </tr> |
127 | @endforeach | 127 | @endforeach |
128 | </tbody> | 128 | </tbody> |
129 | </table> | 129 | </table> |
130 | </div> | 130 | </div> |
131 | 131 | ||
132 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 132 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
133 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 133 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
134 | </div> | 134 | </div> |
135 | 135 | ||
136 | 136 | ||
137 | <!--<div | 137 | <!--<div |
138 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | 138 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" |
139 | > | 139 | > |
140 | <span class="flex items-center col-span-3"> | 140 | <span class="flex items-center col-span-3"> |
141 | Showing 21-30 of 100 | 141 | Showing 21-30 of 100 |
142 | </span> | 142 | </span> |
143 | <span class="col-span-2"></span> | 143 | <span class="col-span-2"></span> |
144 | 144 | ||
145 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 145 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
146 | <nav aria-label="Table navigation"> | 146 | <nav aria-label="Table navigation"> |
147 | <ul class="inline-flex items-center"> | 147 | <ul class="inline-flex items-center"> |
148 | <li> | 148 | <li> |
149 | <button | 149 | <button |
150 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 150 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
151 | aria-label="Previous" | 151 | aria-label="Previous" |
152 | > | 152 | > |
153 | <svg | 153 | <svg |
154 | aria-hidden="true" | 154 | aria-hidden="true" |
155 | class="w-4 h-4 fill-current" | 155 | class="w-4 h-4 fill-current" |
156 | viewBox="0 0 20 20" | 156 | viewBox="0 0 20 20" |
157 | > | 157 | > |
158 | <path | 158 | <path |
159 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | 159 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" |
160 | clip-rule="evenodd" | 160 | clip-rule="evenodd" |
161 | fill-rule="evenodd" | 161 | fill-rule="evenodd" |
162 | ></path> | 162 | ></path> |
163 | </svg> | 163 | </svg> |
164 | </button> | 164 | </button> |
165 | </li> | 165 | </li> |
166 | <li> | 166 | <li> |
167 | <button | 167 | <button |
168 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 168 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
169 | > | 169 | > |
170 | 1 | 170 | 1 |
171 | </button> | 171 | </button> |
172 | </li> | 172 | </li> |
173 | <li> | 173 | <li> |
174 | <button | 174 | <button |
175 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 175 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
176 | > | 176 | > |
177 | 2 | 177 | 2 |
178 | </button> | 178 | </button> |
179 | </li> | 179 | </li> |
180 | <li> | 180 | <li> |
181 | <button | 181 | <button |
182 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | 182 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" |
183 | > | 183 | > |
184 | 3 | 184 | 3 |
185 | </button> | 185 | </button> |
186 | </li> | 186 | </li> |
187 | <li> | 187 | <li> |
188 | <button | 188 | <button |
189 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 189 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
190 | > | 190 | > |
191 | 4 | 191 | 4 |
192 | </button> | 192 | </button> |
193 | </li> | 193 | </li> |
194 | <li> | 194 | <li> |
195 | <span class="px-3 py-1">...</span> | 195 | <span class="px-3 py-1">...</span> |
196 | </li> | 196 | </li> |
197 | <li> | 197 | <li> |
198 | <button | 198 | <button |
199 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 199 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
200 | > | 200 | > |
201 | 8 | 201 | 8 |
202 | </button> | 202 | </button> |
203 | </li> | 203 | </li> |
204 | <li> | 204 | <li> |
205 | <button | 205 | <button |
206 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 206 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
207 | > | 207 | > |
208 | 9 | 208 | 9 |
209 | </button> | 209 | </button> |
210 | </li> | 210 | </li> |
211 | <li> | 211 | <li> |
212 | <button | 212 | <button |
213 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 213 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
214 | aria-label="Next" | 214 | aria-label="Next" |
215 | > | 215 | > |
216 | <svg | 216 | <svg |
217 | class="w-4 h-4 fill-current" | 217 | class="w-4 h-4 fill-current" |
218 | aria-hidden="true" | 218 | aria-hidden="true" |
219 | viewBox="0 0 20 20" | 219 | viewBox="0 0 20 20" |
220 | > | 220 | > |
221 | <path | 221 | <path |
222 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | 222 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" |
223 | clip-rule="evenodd" | 223 | clip-rule="evenodd" |
224 | fill-rule="evenodd" | 224 | fill-rule="evenodd" |
225 | ></path> | 225 | ></path> |
226 | </svg> | 226 | </svg> |
227 | </button> | 227 | </button> |
228 | </li> | 228 | </li> |
229 | </ul> | 229 | </ul> |
230 | </nav> | 230 | </nav> |
231 | </span> | 231 | </span> |
232 | </div>--> | 232 | </div>--> |
233 | </div> | 233 | </div> |
234 | 234 | ||
235 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | 235 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> |
236 | 236 | ||
237 | 237 | ||
238 | @endsection | 238 | @endsection |
239 | 239 |
resources/views/admin/worker/index_ajax.blade.php
1 | <div class="w-full overflow-x-auto"> | 1 | <div class="w-full overflow-x-auto"> |
2 | <table class="w-full whitespace-no-wrap"> | 2 | <table class="w-full whitespace-no-wrap"> |
3 | <thead> | 3 | <thead> |
4 | <tr | 4 | <tr |
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
6 | > | 6 | > |
7 | <th class="px-4 py-3">№</th> | 7 | <th class="px-4 py-3">№</th> |
8 | <th class="px-4 py-3">Имя</th> | 8 | <th class="px-4 py-3">Имя</th> |
9 | <th class="px-4 py-3">Email/Телефон</th> | 9 | <th class="px-4 py-3">Email/Телефон</th> |
10 | <th class="px-4 py-3">% заполнения анкеты</th> | 10 | <th class="px-4 py-3">% заполнения анкеты</th> |
11 | <th class="px-4 py-3">Должность</th> | 11 | <th class="px-4 py-3">Должность</th> |
12 | <th class="px-4 py-3">Дата регистрации</th> | 12 | <th class="px-4 py-3">Дата регистрации</th> |
13 | <th class="px-4 py-3">Изменить</th> | 13 | <th class="px-4 py-3">Изменить</th> |
14 | <th class="px-4 py-3">Бан</th> | 14 | <th class="px-4 py-3">Бан</th> |
15 | </tr> | 15 | </tr> |
16 | </thead> | 16 | </thead> |
17 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 17 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
18 | @foreach($users as $user) | 18 | @foreach($users as $user) |
19 | <tr class="text-gray-700 dark:text-gray-400"> | 19 | <tr class="text-gray-700 dark:text-gray-400"> |
20 | <td class="px-4 py-3"> | 20 | <td class="px-4 py-3"> |
21 | {{$user->id}} | 21 | {{$user->id}} |
22 | </td> | 22 | </td> |
23 | <td class="px-4 py-3"> | 23 | <td class="px-4 py-3"> |
24 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} | 24 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} |
25 | </td> | 25 | </td> |
26 | <td class="px-4 py-3 text-sm"> | 26 | <td class="px-4 py-3 text-sm"> |
27 | <div class="flex items-center text-sm"> | 27 | <div class="flex items-center text-sm"> |
28 | <div> | 28 | <div> |
29 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> | 29 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> |
30 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 30 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
31 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} | 31 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} |
32 | </p> | 32 | </p> |
33 | </div> | 33 | </div> |
34 | </div> | 34 | </div> |
35 | </td> | 35 | </td> |
36 | <td class="px-4 py-3 text-xs"> | 36 | <td class="px-4 py-3 text-xs"> |
37 | @if (isset($user->workers[0]->persent_anketa)) | 37 | @if (isset($user->workers[0]->persent_anketa)) |
38 | @if ($user->workers[0]->persent_anketa > 40) | 38 | @if ($user->workers[0]->persent_anketa > 40) |
39 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 39 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
40 | {{$user->workers[0]->persent_anketa}}% | 40 | {{$user->workers[0]->persent_anketa}}% |
41 | </span> | 41 | </span> |
42 | @else | 42 | @else |
43 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 43 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
44 | {{$user->workers[0]->persent_anketa}}% | 44 | {{$user->workers[0]->persent_anketa}}% |
45 | </span> | 45 | </span> |
46 | @endif | 46 | @endif |
47 | @else | 47 | @else |
48 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 48 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
49 | 0% | 49 | 0% |
50 | </span> | 50 | </span> |
51 | @endif | 51 | @endif |
52 | </td> | 52 | </td> |
53 | <td class="px-4 py-3 text-sm"> | 53 | <td class="px-4 py-3 text-sm"> |
54 | @if (isset($user->jobtitles[0]->name)) | 54 | @if (isset($user->jobtitles[0]->name)) |
55 | {{ $user->jobtitles[0]->name }} | 55 | {{ $user->jobtitles[0]->name }} |
56 | @else | 56 | @else |
57 | Не задана | 57 | Не задана |
58 | @endif | 58 | @endif |
59 | </td> | 59 | </td> |
60 | <td class="px-4 py-3 text-sm"> | 60 | <td class="px-4 py-3 text-sm"> |
61 | {{ $user->created_at }} | 61 | {{ date('d.m.Y h:i:s', strtotime($user->created_at)) }} |
62 | </td> | 62 | </td> |
63 | <td class="px-4 py-3 text-sm"> | 63 | <td class="px-4 py-3 text-sm"> |
64 | @if ($user->id > 1) | 64 | @if ($user->id > 1) |
65 | @if (isset($user->workers[0]->id)) | 65 | @if (isset($user->workers[0]->id)) |
66 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Изменить</a> | 66 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Изменить</a> |
67 | 67 | ||
68 | @endif | 68 | @endif |
69 | @endif | 69 | @endif |
70 | </td> | 70 | </td> |
71 | <td class="px-4 py-3 text-sm"> | 71 | <!--<td class="px-4 py-3 text-sm"> |
72 | @if ($user->id > 1) | 72 | @if ($user->id > 1) |
73 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 73 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
74 | @endif | 74 | @endif |
75 | </td> | 75 | </td>--> |
76 | </tr> | 76 | </tr> |
77 | @endforeach | 77 | @endforeach |
78 | </tbody> | 78 | </tbody> |
79 | </table> | 79 | </table> |
80 | </div> | 80 | </div> |
81 | 81 | ||
82 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 82 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
83 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 83 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
84 | </div> | 84 | </div> |
85 | 85 |
resources/views/layout/admin.blade.php
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html :class="{ 'theme-dark': dark }" x-data="data()" lang="{{ str_replace('_', '-', app()->getLocale()) }}"> | 2 | <html :class="{ 'theme-dark': dark }" x-data="data()" lang="{{ str_replace('_', '-', app()->getLocale()) }}"> |
3 | <head> | 3 | <head> |
4 | <meta charset="UTF-8" /> | 4 | <meta charset="UTF-8" /> |
5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
6 | <title>{{$title}}</title> | 6 | <title>{{$title}}</title> |
7 | <link | 7 | <link |
8 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" | 8 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" |
9 | rel="stylesheet" | 9 | rel="stylesheet" |
10 | /> | 10 | /> |
11 | <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output.css')}}" /> | 11 | <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output.css')}}" /> |
12 | <link rel="stylesheet" href="{{ asset('./assets/css/tabs.css')}}" /> | 12 | <link rel="stylesheet" href="{{ asset('./assets/css/tabs.css')}}" /> |
13 | <script | 13 | <script |
14 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" | 14 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" |
15 | defer | 15 | defer |
16 | ></script> | 16 | ></script> |
17 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> | 17 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> |
18 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> | 18 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> |
19 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> | 19 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> |
20 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> | 20 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> |
21 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> | 21 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> |
22 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> | 22 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> |
23 | </head> | 23 | </head> |
24 | <body> | 24 | <body> |
25 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> | 25 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> |
26 | <!-- Desktop sidebar --> | 26 | <!-- Desktop sidebar --> |
27 | <aside | 27 | <aside |
28 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" | 28 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" |
29 | > | 29 | > |
30 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 30 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
31 | <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 31 | <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
32 | href="{{ route('admin.index') }}"> | 32 | href="{{ route('admin.index') }}"> |
33 | Админка | 33 | Админка |
34 | </a> | 34 | </a> |
35 | <ul class="mt-6"> | 35 | <ul class="mt-6"> |
36 | <li class="relative px-6 py-3"> | 36 | <li class="relative px-6 py-3"> |
37 | <span | 37 | <span |
38 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 38 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
39 | aria-hidden="true" | 39 | aria-hidden="true" |
40 | ></span> | 40 | ></span> |
41 | <!--class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" | 41 | <!--class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" |
42 | --> | 42 | --> |
43 | <a | 43 | <a |
44 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" | 44 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" |
45 | href="{{ route('admin.index') }}" | 45 | href="{{ route('admin.index') }}" |
46 | > | 46 | > |
47 | <svg | 47 | <svg |
48 | class="w-5 h-5" | 48 | class="w-5 h-5" |
49 | aria-hidden="true" | 49 | aria-hidden="true" |
50 | fill="none" | 50 | fill="none" |
51 | stroke-linecap="round" | 51 | stroke-linecap="round" |
52 | stroke-linejoin="round" | 52 | stroke-linejoin="round" |
53 | stroke-width="2" | 53 | stroke-width="2" |
54 | viewBox="0 0 24 24" | 54 | viewBox="0 0 24 24" |
55 | stroke="currentColor" | 55 | stroke="currentColor" |
56 | > | 56 | > |
57 | <path | 57 | <path |
58 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" | 58 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
59 | ></path> | 59 | ></path> |
60 | </svg> | 60 | </svg> |
61 | <span class="ml-4">Главная страница</span> | 61 | <span class="ml-4">Главная страница</span> |
62 | </a> | 62 | </a> |
63 | </li> | 63 | </li> |
64 | </ul> | 64 | </ul> |
65 | <ul> | 65 | <ul> |
66 | @if ($UserId == 1) | 66 | @if ($UserId == 1) |
67 | <li class="relative px-6 py-3"> | 67 | <li class="relative px-6 py-3"> |
68 | <a | 68 | <a |
69 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" | 69 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" |
70 | href="{{ route('admin.users') }}" | 70 | href="{{ route('admin.users') }}" |
71 | > | 71 | > |
72 | <svg | 72 | <svg |
73 | class="w-5 h-5" | 73 | class="w-5 h-5" |
74 | aria-hidden="true" | 74 | aria-hidden="true" |
75 | fill="none" | 75 | fill="none" |
76 | stroke-linecap="round" | 76 | stroke-linecap="round" |
77 | stroke-linejoin="round" | 77 | stroke-linejoin="round" |
78 | stroke-width="2" | 78 | stroke-width="2" |
79 | viewBox="0 0 24 24" | 79 | viewBox="0 0 24 24" |
80 | stroke="currentColor" | 80 | stroke="currentColor" |
81 | > | 81 | > |
82 | <path | 82 | <path |
83 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 83 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
84 | ></path> | 84 | ></path> |
85 | </svg> | 85 | </svg> |
86 | <span class="ml-4">Пользователи</span> | 86 | <span class="ml-4">Пользователи</span> |
87 | </a> | 87 | </a> |
88 | </li> | 88 | </li> |
89 | @endif | 89 | @endif |
90 | <li class="relative px-6 py-3"> | 90 | <li class="relative px-6 py-3"> |
91 | <a | ||
92 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" | ||
93 | > | ||
94 | <svg | ||
95 | class="w-5 h-5" | ||
96 | aria-hidden="true" | ||
97 | fill="none" | ||
98 | stroke-linecap="round" | ||
99 | stroke-linejoin="round" | ||
100 | stroke-width="2" | ||
101 | viewBox="0 0 24 24" | ||
102 | stroke="currentColor" | ||
103 | > | ||
104 | <path | ||
105 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | ||
106 | ></path> | ||
107 | </svg> | ||
108 | <span class="ml-4">Администраторы</span> | ||
109 | </a> | ||
110 | </li> | ||
111 | <li class="relative px-6 py-3"> | ||
91 | <a | 112 | <a |
92 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" | 113 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" |
93 | > | 114 | > |
94 | <svg | 115 | <svg |
95 | class="w-5 h-5" | 116 | class="w-5 h-5" |
96 | aria-hidden="true" | 117 | aria-hidden="true" |
97 | fill="none" | 118 | fill="none" |
98 | stroke-linecap="round" | 119 | stroke-linecap="round" |
99 | stroke-linejoin="round" | 120 | stroke-linejoin="round" |
100 | stroke-width="2" | 121 | stroke-width="2" |
101 | viewBox="0 0 24 24" | 122 | viewBox="0 0 24 24" |
102 | stroke="currentColor" | 123 | stroke="currentColor" |
103 | > | 124 | > |
104 | <path | 125 | <path |
105 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 126 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
106 | ></path> | 127 | ></path> |
107 | </svg> | 128 | </svg> |
108 | <span class="ml-4">Работодатели</span> | 129 | <span class="ml-4">Работодатели</span> |
109 | </a> | 130 | </a> |
110 | </li> | 131 | </li> |
111 | <li class="relative px-6 py-3"> | 132 | <li class="relative px-6 py-3"> |
112 | <a | 133 | <a |
113 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200{{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" | 134 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" |
114 | > | 135 | > |
115 | <svg | 136 | <svg |
116 | class="w-5 h-5" | 137 | class="w-5 h-5" |
117 | aria-hidden="true" | 138 | aria-hidden="true" |
118 | fill="none" | 139 | fill="none" |
119 | stroke-linecap="round" | 140 | stroke-linecap="round" |
120 | stroke-linejoin="round" | 141 | stroke-linejoin="round" |
121 | stroke-width="2" | 142 | stroke-width="2" |
122 | viewBox="0 0 24 24" | 143 | viewBox="0 0 24 24" |
123 | stroke="currentColor" | 144 | stroke="currentColor" |
124 | > | 145 | > |
125 | <path | 146 | <path |
126 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 147 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
127 | ></path> | 148 | ></path> |
128 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 149 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
129 | </svg> | 150 | </svg> |
130 | <span class="ml-4">Соискатели</span> | 151 | <span class="ml-4">Соискатели</span> |
131 | </a> | 152 | </a> |
132 | </li> | 153 | </li> |
133 | <li class="relative px-6 py-3"> | 154 | <li class="relative px-6 py-3"> |
134 | <a | 155 | <a |
135 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" | 156 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" |
136 | > | 157 | > |
137 | <svg | 158 | <svg |
138 | class="w-5 h-5" | 159 | class="w-5 h-5" |
139 | aria-hidden="true" | 160 | aria-hidden="true" |
140 | fill="none" | 161 | fill="none" |
141 | stroke-linecap="round" | 162 | stroke-linecap="round" |
142 | stroke-linejoin="round" | 163 | stroke-linejoin="round" |
143 | stroke-width="2" | 164 | stroke-width="2" |
144 | viewBox="0 0 24 24" | 165 | viewBox="0 0 24 24" |
145 | stroke="currentColor" | 166 | stroke="currentColor" |
146 | > | 167 | > |
147 | <path | 168 | <path |
148 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 169 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
149 | ></path> | 170 | ></path> |
150 | </svg> | 171 | </svg> |
151 | <span class="ml-4">Вакансии</span> | 172 | <span class="ml-4">Вакансии</span> |
152 | </a> | 173 | </a> |
153 | </li> | 174 | </li> |
154 | 175 | ||
155 | <li class="relative px-6 py-3"> | 176 | <li class="relative px-6 py-3"> |
156 | <a | 177 | <a |
157 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 178 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
158 | > | 179 | > |
159 | <svg | 180 | <svg |
160 | class="w-5 h-5" | 181 | class="w-5 h-5" |
161 | aria-hidden="true" | 182 | aria-hidden="true" |
162 | fill="none" | 183 | fill="none" |
163 | stroke-linecap="round" | 184 | stroke-linecap="round" |
164 | stroke-linejoin="round" | 185 | stroke-linejoin="round" |
165 | stroke-width="2" | 186 | stroke-width="2" |
166 | viewBox="0 0 24 24" | 187 | viewBox="0 0 24 24" |
167 | stroke="currentColor" | 188 | stroke="currentColor" |
168 | > | 189 | > |
169 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 190 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
170 | </svg> | 191 | </svg> |
171 | <span class="ml-4">Сообщения все</span> | 192 | <span class="ml-4">Сообщения все</span> |
172 | </a> | 193 | </a> |
173 | </li> | 194 | </li> |
174 | <li class="relative px-6 py-3"> | 195 | <li class="relative px-6 py-3"> |
175 | <a | 196 | <a |
176 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}" | 197 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}" |
177 | > | 198 | > |
178 | <svg | 199 | <svg |
179 | class="w-5 h-5" | 200 | class="w-5 h-5" |
180 | aria-hidden="true" | 201 | aria-hidden="true" |
181 | fill="none" | 202 | fill="none" |
182 | stroke-linecap="round" | 203 | stroke-linecap="round" |
183 | stroke-linejoin="round" | 204 | stroke-linejoin="round" |
184 | stroke-width="2" | 205 | stroke-width="2" |
185 | viewBox="0 0 24 24" | 206 | viewBox="0 0 24 24" |
186 | stroke="currentColor" | 207 | stroke="currentColor" |
187 | > | 208 | > |
188 | <path | 209 | <path |
189 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 210 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
190 | ></path> | 211 | ></path> |
191 | </svg> | 212 | </svg> |
192 | <span class="ml-4">Группы пользователей</span> | 213 | <span class="ml-4">Группы пользователей</span> |
193 | </a> | 214 | </a> |
194 | </li> | 215 | </li> |
195 | @if ($UserId == 1) | 216 | @if ($UserId == 1) |
196 | <li class="relative px-6 py-3"> | 217 | <li class="relative px-6 py-3"> |
197 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> | 218 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> |
198 | <svg | 219 | <svg |
199 | class="w-5 h-5" | 220 | class="w-5 h-5" |
200 | aria-hidden="true" | 221 | aria-hidden="true" |
201 | fill="none" | 222 | fill="none" |
202 | stroke-linecap="round" | 223 | stroke-linecap="round" |
203 | stroke-linejoin="round" | 224 | stroke-linejoin="round" |
204 | stroke-width="2" | 225 | stroke-width="2" |
205 | viewBox="0 0 24 24" | 226 | viewBox="0 0 24 24" |
206 | stroke="currentColor" | 227 | stroke="currentColor" |
207 | > | 228 | > |
208 | <path | 229 | <path |
209 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 230 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
210 | ></path> | 231 | ></path> |
211 | </svg> | 232 | </svg> |
212 | <span class="ml-4">Роли пользователей</span> | 233 | <span class="ml-4">Роли пользователей</span> |
213 | </a> | 234 | </a> |
214 | </li> | 235 | </li> |
215 | @endif | 236 | @endif |
216 | <li class="relative px-6 py-3"> | 237 | <li class="relative px-6 py-3"> |
217 | <a | 238 | <a |
218 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" | 239 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" |
219 | > | 240 | > |
220 | <svg | 241 | <svg |
221 | class="w-5 h-5" | 242 | class="w-5 h-5" |
222 | aria-hidden="true" | 243 | aria-hidden="true" |
223 | fill="none" | 244 | fill="none" |
224 | stroke-linecap="round" | 245 | stroke-linecap="round" |
225 | stroke-linejoin="round" | 246 | stroke-linejoin="round" |
226 | stroke-width="2" | 247 | stroke-width="2" |
227 | viewBox="0 0 24 24" | 248 | viewBox="0 0 24 24" |
228 | stroke="currentColor" | 249 | stroke="currentColor" |
229 | > | 250 | > |
230 | <path | 251 | <path |
231 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 252 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
232 | ></path> | 253 | ></path> |
233 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 254 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
234 | </svg> | 255 | </svg> |
235 | <span class="ml-4">Статистика</span> | 256 | <span class="ml-4">Статистика</span> |
236 | </a> | 257 | </a> |
237 | </li> | 258 | </li> |
238 | <li class="relative px-6 py-3"> | 259 | <li class="relative px-6 py-3"> |
239 | <a | 260 | <a |
240 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.answers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.answers') }}" | 261 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.answers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.answers') }}" |
241 | > | 262 | > |
242 | <svg | 263 | <svg |
243 | class="w-5 h-5" | 264 | class="w-5 h-5" |
244 | aria-hidden="true" | 265 | aria-hidden="true" |
245 | fill="none" | 266 | fill="none" |
246 | stroke-linecap="round" | 267 | stroke-linecap="round" |
247 | stroke-linejoin="round" | 268 | stroke-linejoin="round" |
248 | stroke-width="2" | 269 | stroke-width="2" |
249 | viewBox="0 0 24 24" | 270 | viewBox="0 0 24 24" |
250 | stroke="currentColor" | 271 | stroke="currentColor" |
251 | > | 272 | > |
252 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 273 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
253 | </svg> | 274 | </svg> |
254 | <span class="ml-4">Модерация</span> | 275 | <span class="ml-4">Модерация</span> |
255 | </a> | 276 | </a> |
256 | </li> | 277 | </li> |
257 | <!-- Справочники --> | 278 | <!-- Справочники --> |
258 | <li class="relative px-6 py-3" x-data="{ open1: false }"> | 279 | <li class="relative px-6 py-3" x-data="{ open1: false }"> |
259 | <button | 280 | <button |
260 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 281 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
261 | @click="open1=!open1" | 282 | @click="open1=!open1" |
262 | aria-haspopup="true"> | 283 | aria-haspopup="true"> |
263 | <span class="inline-flex items-center"> | 284 | <span class="inline-flex items-center"> |
264 | <svg | 285 | <svg |
265 | class="w-5 h-5" | 286 | class="w-5 h-5" |
266 | aria-hidden="true" | 287 | aria-hidden="true" |
267 | fill="none" | 288 | fill="none" |
268 | stroke-linecap="round" | 289 | stroke-linecap="round" |
269 | stroke-linejoin="round" | 290 | stroke-linejoin="round" |
270 | stroke-width="2" | 291 | stroke-width="2" |
271 | viewBox="0 0 24 24" | 292 | viewBox="0 0 24 24" |
272 | stroke="currentColor"> | 293 | stroke="currentColor"> |
273 | <path | 294 | <path |
274 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" | 295 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" |
275 | ></path> | 296 | ></path> |
276 | </svg> | 297 | </svg> |
277 | <span class="ml-4">Справочники</span> | 298 | <span class="ml-4">Справочники</span> |
278 | </span> | 299 | </span> |
279 | <svg | 300 | <svg |
280 | class="w-4 h-4" | 301 | class="w-4 h-4" |
281 | aria-hidden="true" | 302 | aria-hidden="true" |
282 | fill="currentColor" | 303 | fill="currentColor" |
283 | viewBox="0 0 20 20" | 304 | viewBox="0 0 20 20" |
284 | > | 305 | > |
285 | <path | 306 | <path |
286 | fill-rule="evenodd" | 307 | fill-rule="evenodd" |
287 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" | 308 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |
288 | clip-rule="evenodd" | 309 | clip-rule="evenodd" |
289 | ></path> | 310 | ></path> |
290 | </svg> | 311 | </svg> |
291 | </button> | 312 | </button> |
292 | <template x-if="open1"> | 313 | <template x-if="open1"> |
293 | <ul | 314 | <ul |
294 | x-transition:enter="transition-all ease-in-out duration-300" | 315 | x-transition:enter="transition-all ease-in-out duration-300" |
295 | x-transition:enter-start="opacity-25 max-h-0" | 316 | x-transition:enter-start="opacity-25 max-h-0" |
296 | x-transition:enter-end="opacity-100 max-h-xl" | 317 | x-transition:enter-end="opacity-100 max-h-xl" |
297 | x-transition:leave="transition-all ease-in-out duration-300" | 318 | x-transition:leave="transition-all ease-in-out duration-300" |
298 | x-transition:leave-start="opacity-100 max-h-xl" | 319 | x-transition:leave-start="opacity-100 max-h-xl" |
299 | x-transition:leave-end="opacity-0 max-h-0" | 320 | x-transition:leave-end="opacity-0 max-h-0" |
300 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" | 321 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" |
301 | aria-label="submenu" | 322 | aria-label="submenu" |
302 | > | 323 | > |
303 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> | 324 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> |
304 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> | 325 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> |
305 | </li> | 326 | </li> |
306 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> | 327 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> |
307 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> | 328 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> |
308 | </li> | 329 | </li> |
309 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> | 330 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> |
310 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> | 331 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> |
311 | </li> | 332 | </li> |
312 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}"> | 333 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}"> |
313 | <a class="w-full" href="{{ route('admin.education.index') }}">Образование</a> | 334 | <a class="w-full" href="{{ route('admin.education.index') }}">Образование</a> |
314 | </li> | 335 | </li> |
315 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> | 336 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> |
316 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> | 337 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> |
317 | </li> | 338 | </li> |
318 | 339 | ||
319 | </ul> | 340 | </ul> |
320 | </template> | 341 | </template> |
321 | </li> | 342 | </li> |
322 | 343 | ||
323 | 344 | ||
324 | <!-- Редактор --> | 345 | <!-- Редактор --> |
325 | <li class="relative px-6 py-3"> | 346 | <li class="relative px-6 py-3"> |
326 | <button | 347 | <button |
327 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 348 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
328 | @click="togglePagesMenu" | 349 | @click="togglePagesMenu" |
329 | aria-haspopup="true"> | 350 | aria-haspopup="true"> |
330 | <span class="inline-flex items-center"> | 351 | <span class="inline-flex items-center"> |
331 | <svg | 352 | <svg |
332 | class="w-5 h-5" | 353 | class="w-5 h-5" |
333 | aria-hidden="true" | 354 | aria-hidden="true" |
334 | fill="none" | 355 | fill="none" |
335 | stroke-linecap="round" | 356 | stroke-linecap="round" |
336 | stroke-linejoin="round" | 357 | stroke-linejoin="round" |
337 | stroke-width="2" | 358 | stroke-width="2" |
338 | viewBox="0 0 24 24" | 359 | viewBox="0 0 24 24" |
339 | stroke="currentColor"> | 360 | stroke="currentColor"> |
340 | <path | 361 | <path |
341 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" | 362 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" |
342 | ></path> | 363 | ></path> |
343 | </svg> | 364 | </svg> |
344 | <span class="ml-4">Редактор</span> | 365 | <span class="ml-4">Редактор</span> |
345 | </span> | 366 | </span> |
346 | <svg | 367 | <svg |
347 | class="w-4 h-4" | 368 | class="w-4 h-4" |
348 | aria-hidden="true" | 369 | aria-hidden="true" |
349 | fill="currentColor" | 370 | fill="currentColor" |
350 | viewBox="0 0 20 20" | 371 | viewBox="0 0 20 20" |
351 | > | 372 | > |
352 | <path | 373 | <path |
353 | fill-rule="evenodd" | 374 | fill-rule="evenodd" |
354 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" | 375 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |
355 | clip-rule="evenodd" | 376 | clip-rule="evenodd" |
356 | ></path> | 377 | ></path> |
357 | </svg> | 378 | </svg> |
358 | </button> | 379 | </button> |
359 | <template x-if="isPagesMenuOpen"> | 380 | <template x-if="isPagesMenuOpen"> |
360 | <ul | 381 | <ul |
361 | x-transition:enter="transition-all ease-in-out duration-300" | 382 | x-transition:enter="transition-all ease-in-out duration-300" |
362 | x-transition:enter-start="opacity-25 max-h-0" | 383 | x-transition:enter-start="opacity-25 max-h-0" |
363 | x-transition:enter-end="opacity-100 max-h-xl" | 384 | x-transition:enter-end="opacity-100 max-h-xl" |
364 | x-transition:leave="transition-all ease-in-out duration-300" | 385 | x-transition:leave="transition-all ease-in-out duration-300" |
365 | x-transition:leave-start="opacity-100 max-h-xl" | 386 | x-transition:leave-start="opacity-100 max-h-xl" |
366 | x-transition:leave-end="opacity-0 max-h-0" | 387 | x-transition:leave-end="opacity-0 max-h-0" |
367 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" | 388 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" |
368 | aria-label="submenu" | 389 | aria-label="submenu" |
369 | > | 390 | > |
370 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> | 391 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> |
371 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 392 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
372 | </li> | 393 | </li> |
373 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> | 394 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> |
374 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 395 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
375 | </li> | 396 | </li> |
376 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}"> | 397 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}"> |
377 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> | 398 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> |
378 | </li> | 399 | </li> |
379 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> | 400 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> |
380 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 401 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
381 | </li> | 402 | </li> |
382 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> | 403 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> |
383 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 404 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
384 | </li> | 405 | </li> |
385 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> | 406 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> |
386 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 407 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
387 | </li> | 408 | </li> |
388 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> | 409 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> |
389 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 410 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
390 | </li> | 411 | </li> |
391 | </ul> | 412 | </ul> |
392 | </template> | 413 | </template> |
393 | </li> | 414 | </li> |
394 | 415 | ||
395 | </ul> | 416 | </ul> |
396 | <!--<div class="px-6 my-6"> | 417 | <!--<div class="px-6 my-6"> |
397 | <button | 418 | <button |
398 | class="flex items-center justify-between w-full px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 419 | class="flex items-center justify-between w-full px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
399 | > | 420 | > |
400 | Create account | 421 | Create account |
401 | <span class="ml-2" aria-hidden="true">+</span> | 422 | <span class="ml-2" aria-hidden="true">+</span> |
402 | </button> | 423 | </button> |
403 | </div>--> | 424 | </div>--> |
404 | </div> | 425 | </div> |
405 | </aside> | 426 | </aside> |
406 | <!-- Mobile sidebar --> | 427 | <!-- Mobile sidebar --> |
407 | <!-- Backdrop --> | 428 | <!-- Backdrop --> |
408 | <div | 429 | <div |
409 | x-show="isSideMenuOpen" | 430 | x-show="isSideMenuOpen" |
410 | x-transition:enter="transition ease-in-out duration-150" | 431 | x-transition:enter="transition ease-in-out duration-150" |
411 | x-transition:enter-start="opacity-0" | 432 | x-transition:enter-start="opacity-0" |
412 | x-transition:enter-end="opacity-100" | 433 | x-transition:enter-end="opacity-100" |
413 | x-transition:leave="transition ease-in-out duration-150" | 434 | x-transition:leave="transition ease-in-out duration-150" |
414 | x-transition:leave-start="opacity-100" | 435 | x-transition:leave-start="opacity-100" |
415 | x-transition:leave-end="opacity-0" | 436 | x-transition:leave-end="opacity-0" |
416 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | 437 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" |
417 | ></div> | 438 | ></div> |
418 | <aside | 439 | <aside |
419 | class="fixed inset-y-0 z-20 flex-shrink-0 w-64 mt-16 overflow-y-auto bg-white dark:bg-gray-800 md:hidden" | 440 | class="fixed inset-y-0 z-20 flex-shrink-0 w-64 mt-16 overflow-y-auto bg-white dark:bg-gray-800 md:hidden" |
420 | x-show="isSideMenuOpen" | 441 | x-show="isSideMenuOpen" |
421 | x-transition:enter="transition ease-in-out duration-150" | 442 | x-transition:enter="transition ease-in-out duration-150" |
422 | x-transition:enter-start="opacity-0 transform -translate-x-20" | 443 | x-transition:enter-start="opacity-0 transform -translate-x-20" |
423 | x-transition:enter-end="opacity-100" | 444 | x-transition:enter-end="opacity-100" |
424 | x-transition:leave="transition ease-in-out duration-150" | 445 | x-transition:leave="transition ease-in-out duration-150" |
425 | x-transition:leave-start="opacity-100" | 446 | x-transition:leave-start="opacity-100" |
426 | x-transition:leave-end="opacity-0 transform -translate-x-20" | 447 | x-transition:leave-end="opacity-0 transform -translate-x-20" |
427 | @click.away="closeSideMenu" | 448 | @click.away="closeSideMenu" |
428 | @keydown.escape="closeSideMenu" | 449 | @keydown.escape="closeSideMenu" |
429 | > | 450 | > |
430 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 451 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
431 | <a | 452 | <a |
432 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 453 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
433 | href="{{ route('admin.index') }}" | 454 | href="{{ route('admin.index') }}" |
434 | > | 455 | > |
435 | Админка | 456 | Админка |
436 | </a> | 457 | </a> |
437 | <ul class="mt-6"> | 458 | <ul class="mt-6"> |
438 | <li class="relative px-6 py-3"> | 459 | <li class="relative px-6 py-3"> |
439 | <span | 460 | <span |
440 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 461 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
441 | aria-hidden="true" | 462 | aria-hidden="true" |
442 | ></span> | 463 | ></span> |
443 | <a | 464 | <a |
444 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.index') }}" | 465 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.index') }}" |
445 | > | 466 | > |
446 | <svg | 467 | <svg |
447 | class="w-5 h-5" | 468 | class="w-5 h-5" |
448 | aria-hidden="true" | 469 | aria-hidden="true" |
449 | fill="none" | 470 | fill="none" |
450 | stroke-linecap="round" | 471 | stroke-linecap="round" |
451 | stroke-linejoin="round" | 472 | stroke-linejoin="round" |
452 | stroke-width="2" | 473 | stroke-width="2" |
453 | viewBox="0 0 24 24" | 474 | viewBox="0 0 24 24" |
454 | stroke="currentColor" | 475 | stroke="currentColor" |
455 | > | 476 | > |
456 | <path | 477 | <path |
457 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" | 478 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
458 | ></path> | 479 | ></path> |
459 | </svg> | 480 | </svg> |
460 | <span class="ml-4">Главная страница</span> | 481 | <span class="ml-4">Главная страница</span> |
461 | </a> | 482 | </a> |
462 | </li> | 483 | </li> |
463 | </ul> | 484 | </ul> |
464 | <ul> | 485 | <ul> |
465 | @if ($UserId == 1) | 486 | @if ($UserId == 1) |
466 | <li class="relative px-6 py-3"> | 487 | <li class="relative px-6 py-3"> |
467 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.users') }}"> | 488 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.users') }}"> |
468 | <svg | 489 | <svg |
469 | class="w-5 h-5" | 490 | class="w-5 h-5" |
470 | aria-hidden="true" | 491 | aria-hidden="true" |
471 | fill="none" | 492 | fill="none" |
472 | stroke-linecap="round" | 493 | stroke-linecap="round" |
473 | stroke-linejoin="round" | 494 | stroke-linejoin="round" |
474 | stroke-width="2" | 495 | stroke-width="2" |
475 | viewBox="0 0 24 24" | 496 | viewBox="0 0 24 24" |
476 | stroke="currentColor" | 497 | stroke="currentColor" |
477 | > | 498 | > |
478 | <path | 499 | <path |
479 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 500 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
480 | ></path> | 501 | ></path> |
481 | </svg> | 502 | </svg> |
482 | <span class="ml-4">Пользователи</span> | 503 | <span class="ml-4">Пользователи</span> |
483 | </a> | 504 | </a> |
484 | </li> | 505 | </li> |
485 | @endif | 506 | @endif |
486 | <li class="relative px-6 py-3"> | 507 | <li class="relative px-6 py-3"> |
508 | <a | ||
509 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" | ||
510 | > | ||
511 | <svg | ||
512 | class="w-5 h-5" | ||
513 | aria-hidden="true" | ||
514 | fill="none" | ||
515 | stroke-linecap="round" | ||
516 | stroke-linejoin="round" | ||
517 | stroke-width="2" | ||
518 | viewBox="0 0 24 24" | ||
519 | stroke="currentColor" | ||
520 | > | ||
521 | <path | ||
522 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | ||
523 | ></path> | ||
524 | </svg> | ||
525 | <span class="ml-4">Администраторы</span> | ||
526 | </a> | ||
527 | </li> | ||
528 | |||
529 | <li class="relative px-6 py-3"> | ||
487 | <a | 530 | <a |
488 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" | 531 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" |
489 | > | 532 | > |
490 | <svg | 533 | <svg |
491 | class="w-5 h-5" | 534 | class="w-5 h-5" |
492 | aria-hidden="true" | 535 | aria-hidden="true" |
493 | fill="none" | 536 | fill="none" |
494 | stroke-linecap="round" | 537 | stroke-linecap="round" |
495 | stroke-linejoin="round" | 538 | stroke-linejoin="round" |
496 | stroke-width="2" | 539 | stroke-width="2" |
497 | viewBox="0 0 24 24" | 540 | viewBox="0 0 24 24" |
498 | stroke="currentColor" | 541 | stroke="currentColor" |
499 | > | 542 | > |
500 | <path | 543 | <path |
501 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 544 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
502 | ></path> | 545 | ></path> |
503 | </svg> | 546 | </svg> |
504 | <span class="ml-4">Работодатели</span> | 547 | <span class="ml-4">Работодатели</span> |
505 | </a> | 548 | </a> |
506 | </li> | 549 | </li> |
507 | <li class="relative px-6 py-3"> | 550 | <li class="relative px-6 py-3"> |
508 | <a | 551 | <a |
509 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" | 552 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" |
510 | > | 553 | > |
511 | <svg | 554 | <svg |
512 | class="w-5 h-5" | 555 | class="w-5 h-5" |
513 | aria-hidden="true" | 556 | aria-hidden="true" |
514 | fill="none" | 557 | fill="none" |
515 | stroke-linecap="round" | 558 | stroke-linecap="round" |
516 | stroke-linejoin="round" | 559 | stroke-linejoin="round" |
517 | stroke-width="2" | 560 | stroke-width="2" |
518 | viewBox="0 0 24 24" | 561 | viewBox="0 0 24 24" |
519 | stroke="currentColor" | 562 | stroke="currentColor" |
520 | > | 563 | > |
521 | <path | 564 | <path |
522 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 565 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
523 | ></path> | 566 | ></path> |
524 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 567 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
525 | </svg> | 568 | </svg> |
526 | <span class="ml-4">Соискатели</span> | 569 | <span class="ml-4">Соискатели</span> |
527 | </a> | 570 | </a> |
528 | </li> | 571 | </li> |
529 | <li class="relative px-6 py-3"> | 572 | <li class="relative px-6 py-3"> |
530 | <a | 573 | <a |
531 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" | 574 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" |
532 | > | 575 | > |
533 | <svg | 576 | <svg |
534 | class="w-5 h-5" | 577 | class="w-5 h-5" |
535 | aria-hidden="true" | 578 | aria-hidden="true" |
536 | fill="none" | 579 | fill="none" |
537 | stroke-linecap="round" | 580 | stroke-linecap="round" |
538 | stroke-linejoin="round" | 581 | stroke-linejoin="round" |
539 | stroke-width="2" | 582 | stroke-width="2" |
540 | viewBox="0 0 24 24" | 583 | viewBox="0 0 24 24" |
541 | stroke="currentColor" | 584 | stroke="currentColor" |
542 | > | 585 | > |
543 | <path | 586 | <path |
544 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 587 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
545 | ></path> | 588 | ></path> |
546 | </svg> | 589 | </svg> |
547 | <span class="ml-4">Вакансии</span> | 590 | <span class="ml-4">Вакансии</span> |
548 | </a> | 591 | </a> |
549 | </li> | 592 | </li> |
550 | <li class="relative px-6 py-3"> | 593 | <li class="relative px-6 py-3"> |
551 | <a | 594 | <a |
552 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 595 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
553 | > | 596 | > |
554 | <svg | 597 | <svg |
555 | class="w-5 h-5" | 598 | class="w-5 h-5" |
556 | aria-hidden="true" | 599 | aria-hidden="true" |
557 | fill="none" | 600 | fill="none" |
558 | stroke-linecap="round" | 601 | stroke-linecap="round" |
559 | stroke-linejoin="round" | 602 | stroke-linejoin="round" |
560 | stroke-width="2" | 603 | stroke-width="2" |
561 | viewBox="0 0 24 24" | 604 | viewBox="0 0 24 24" |
562 | stroke="currentColor" | 605 | stroke="currentColor" |
563 | > | 606 | > |
564 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 607 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
565 | </svg> | 608 | </svg> |
566 | <span class="ml-4">Сообщения все</span> | 609 | <span class="ml-4">Сообщения все</span> |
567 | </a> | 610 | </a> |
568 | </li> | 611 | </li> |
569 | <li class="relative px-6 py-3"> | 612 | <li class="relative px-6 py-3"> |
570 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}"> | 613 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}"> |
571 | <svg | 614 | <svg |
572 | class="w-5 h-5" | 615 | class="w-5 h-5" |
573 | aria-hidden="true" | 616 | aria-hidden="true" |
574 | fill="none" | 617 | fill="none" |
575 | stroke-linecap="round" | 618 | stroke-linecap="round" |
576 | stroke-linejoin="round" | 619 | stroke-linejoin="round" |
577 | stroke-width="2" | 620 | stroke-width="2" |
578 | viewBox="0 0 24 24" | 621 | viewBox="0 0 24 24" |
579 | stroke="currentColor" | 622 | stroke="currentColor" |
580 | > | 623 | > |
581 | <path | 624 | <path |
582 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 625 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
583 | ></path> | 626 | ></path> |
584 | </svg> | 627 | </svg> |
585 | <span class="ml-4">Группы пользователей</span> | 628 | <span class="ml-4">Группы пользователей</span> |
586 | </a> | 629 | </a> |
587 | </li> | 630 | </li> |
588 | @if ($UserId == 1) | 631 | @if ($UserId == 1) |
589 | <li class="relative px-6 py-3"> | 632 | <li class="relative px-6 py-3"> |
590 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> | 633 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> |
591 | <svg | 634 | <svg |
592 | class="w-5 h-5" | 635 | class="w-5 h-5" |
593 | aria-hidden="true" | 636 | aria-hidden="true" |
594 | fill="none" | 637 | fill="none" |
595 | stroke-linecap="round" | 638 | stroke-linecap="round" |
596 | stroke-linejoin="round" | 639 | stroke-linejoin="round" |
597 | stroke-width="2" | 640 | stroke-width="2" |
598 | viewBox="0 0 24 24" | 641 | viewBox="0 0 24 24" |
599 | stroke="currentColor" | 642 | stroke="currentColor" |
600 | > | 643 | > |
601 | <path | 644 | <path |
602 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 645 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
603 | ></path> | 646 | ></path> |
604 | </svg> | 647 | </svg> |
605 | <span class="ml-4">Роли пользователей</span> | 648 | <span class="ml-4">Роли пользователей</span> |
606 | </a> | 649 | </a> |
607 | </li> | 650 | </li> |
608 | @endif | 651 | @endif |
609 | <li class="relative px-6 py-3"> | 652 | <li class="relative px-6 py-3"> |
610 | <a | 653 | <a |
611 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" | 654 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" |
612 | > | 655 | > |
613 | <svg | 656 | <svg |
614 | class="w-5 h-5" | 657 | class="w-5 h-5" |
615 | aria-hidden="true" | 658 | aria-hidden="true" |
616 | fill="none" | 659 | fill="none" |
617 | stroke-linecap="round" | 660 | stroke-linecap="round" |
618 | stroke-linejoin="round" | 661 | stroke-linejoin="round" |
619 | stroke-width="2" | 662 | stroke-width="2" |
620 | viewBox="0 0 24 24" | 663 | viewBox="0 0 24 24" |
621 | stroke="currentColor" | 664 | stroke="currentColor" |
622 | > | 665 | > |
623 | <path | 666 | <path |
624 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 667 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
625 | ></path> | 668 | ></path> |
626 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 669 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
627 | </svg> | 670 | </svg> |
628 | <span class="ml-4">Статистика</span> | 671 | <span class="ml-4">Статистика</span> |
629 | </a> | 672 | </a> |
630 | </li> | 673 | </li> |
631 | <li class="relative px-6 py-3"> | 674 | <li class="relative px-6 py-3"> |
632 | <a | 675 | <a |
633 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 676 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
634 | > | 677 | > |
635 | <svg | 678 | <svg |
636 | class="w-5 h-5" | 679 | class="w-5 h-5" |
637 | aria-hidden="true" | 680 | aria-hidden="true" |
638 | fill="none" | 681 | fill="none" |
639 | stroke-linecap="round" | 682 | stroke-linecap="round" |
640 | stroke-linejoin="round" | 683 | stroke-linejoin="round" |
641 | stroke-width="2" | 684 | stroke-width="2" |
642 | viewBox="0 0 24 24" | 685 | viewBox="0 0 24 24" |
643 | stroke="currentColor" | 686 | stroke="currentColor" |
644 | > | 687 | > |
645 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 688 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
646 | </svg> | 689 | </svg> |
647 | <span class="ml-4">Сообщения</span> | 690 | <span class="ml-4">Сообщения</span> |
648 | </a> | 691 | </a> |
649 | </li> | 692 | </li> |
650 | <!-- Справочники --> | 693 | <!-- Справочники --> |
651 | <li class="relative px-6 py-3" x-data="{ open2: false }"> | 694 | <li class="relative px-6 py-3" x-data="{ open2: false }"> |
652 | <button | 695 | <button |
653 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 696 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
654 | @click="open2=!open2" | 697 | @click="open2=!open2" |
655 | aria-haspopup="true"> | 698 | aria-haspopup="true"> |
656 | <span class="inline-flex items-center"> | 699 | <span class="inline-flex items-center"> |
657 | <svg | 700 | <svg |
658 | class="w-5 h-5" | 701 | class="w-5 h-5" |
659 | aria-hidden="true" | 702 | aria-hidden="true" |
660 | fill="none" | 703 | fill="none" |
661 | stroke-linecap="round" | 704 | stroke-linecap="round" |
662 | stroke-linejoin="round" | 705 | stroke-linejoin="round" |
663 | stroke-width="2" | 706 | stroke-width="2" |
664 | viewBox="0 0 24 24" | 707 | viewBox="0 0 24 24" |
665 | stroke="currentColor"> | 708 | stroke="currentColor"> |
666 | <path | 709 | <path |
667 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" | 710 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" |
668 | ></path> | 711 | ></path> |
669 | </svg> | 712 | </svg> |
670 | <span class="ml-4">Справочники</span> | 713 | <span class="ml-4">Справочники</span> |
671 | </span> | 714 | </span> |
672 | <svg | 715 | <svg |
673 | class="w-4 h-4" | 716 | class="w-4 h-4" |
674 | aria-hidden="true" | 717 | aria-hidden="true" |
675 | fill="currentColor" | 718 | fill="currentColor" |
676 | viewBox="0 0 20 20" | 719 | viewBox="0 0 20 20" |
677 | > | 720 | > |
678 | <path | 721 | <path |
679 | fill-rule="evenodd" | 722 | fill-rule="evenodd" |
680 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" | 723 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |
681 | clip-rule="evenodd" | 724 | clip-rule="evenodd" |
682 | ></path> | 725 | ></path> |
683 | </svg> | 726 | </svg> |
684 | </button> | 727 | </button> |
685 | <template x-if="open2"> | 728 | <template x-if="open2"> |
686 | <ul | 729 | <ul |
687 | x-transition:enter="transition-all ease-in-out duration-300" | 730 | x-transition:enter="transition-all ease-in-out duration-300" |
688 | x-transition:enter-start="opacity-25 max-h-0" | 731 | x-transition:enter-start="opacity-25 max-h-0" |
689 | x-transition:enter-end="opacity-100 max-h-xl" | 732 | x-transition:enter-end="opacity-100 max-h-xl" |
690 | x-transition:leave="transition-all ease-in-out duration-300" | 733 | x-transition:leave="transition-all ease-in-out duration-300" |
691 | x-transition:leave-start="opacity-100 max-h-xl" | 734 | x-transition:leave-start="opacity-100 max-h-xl" |
692 | x-transition:leave-end="opacity-0 max-h-0" | 735 | x-transition:leave-end="opacity-0 max-h-0" |
693 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" | 736 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" |
694 | aria-label="submenu" | 737 | aria-label="submenu" |
695 | > | 738 | > |
696 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> | 739 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> |
697 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> | 740 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> |
698 | </li> | 741 | </li> |
699 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> | 742 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> |
700 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> | 743 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> |
701 | </li> | 744 | </li> |
702 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> | 745 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> |
703 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> | 746 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> |
704 | </li> | 747 | </li> |
705 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}"> | 748 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}"> |
706 | <a class="w-full" href="{{ route('admin.education.index') }}">Образование</a> | 749 | <a class="w-full" href="{{ route('admin.education.index') }}">Образование</a> |
707 | </li> | 750 | </li> |
708 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> | 751 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> |
709 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> | 752 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> |
710 | </li> | 753 | </li> |
711 | 754 | ||
712 | </ul> | 755 | </ul> |
713 | </template> | 756 | </template> |
714 | </li> | 757 | </li> |
715 | 758 | ||
716 | 759 | ||
717 | <!-- Редактор --> | 760 | <!-- Редактор --> |
718 | <li class="relative px-6 py-3"> | 761 | <li class="relative px-6 py-3"> |
719 | <button | 762 | <button |
720 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 763 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
721 | @click="togglePagesMenu" | 764 | @click="togglePagesMenu" |
722 | aria-haspopup="true" | 765 | aria-haspopup="true" |
723 | > | 766 | > |
724 | <span class="inline-flex items-center"> | 767 | <span class="inline-flex items-center"> |
725 | <svg | 768 | <svg |
726 | class="w-5 h-5" | 769 | class="w-5 h-5" |
727 | aria-hidden="true" | 770 | aria-hidden="true" |
728 | fill="none" | 771 | fill="none" |
729 | stroke-linecap="round" | 772 | stroke-linecap="round" |
730 | stroke-linejoin="round" | 773 | stroke-linejoin="round" |
731 | stroke-width="2" | 774 | stroke-width="2" |
732 | viewBox="0 0 24 24" | 775 | viewBox="0 0 24 24" |
733 | stroke="currentColor" | 776 | stroke="currentColor" |
734 | > | 777 | > |
735 | <path | 778 | <path |
736 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" | 779 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" |
737 | ></path> | 780 | ></path> |
738 | </svg> | 781 | </svg> |
739 | <span class="ml-4">Редактор</span> | 782 | <span class="ml-4">Редактор</span> |
740 | </span> | 783 | </span> |
741 | <svg | 784 | <svg |
742 | class="w-4 h-4" | 785 | class="w-4 h-4" |
743 | aria-hidden="true" | 786 | aria-hidden="true" |
744 | fill="currentColor" | 787 | fill="currentColor" |
745 | viewBox="0 0 20 20" | 788 | viewBox="0 0 20 20" |
746 | > | 789 | > |
747 | <path | 790 | <path |
748 | fill-rule="evenodd" | 791 | fill-rule="evenodd" |
749 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" | 792 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |
750 | clip-rule="evenodd" | 793 | clip-rule="evenodd" |
751 | ></path> | 794 | ></path> |
752 | </svg> | 795 | </svg> |
753 | </button> | 796 | </button> |
754 | <template x-if="isPagesMenuOpen"> | 797 | <template x-if="isPagesMenuOpen"> |
755 | <ul | 798 | <ul |
756 | x-transition:enter="transition-all ease-in-out duration-300" | 799 | x-transition:enter="transition-all ease-in-out duration-300" |
757 | x-transition:enter-start="opacity-25 max-h-0" | 800 | x-transition:enter-start="opacity-25 max-h-0" |
758 | x-transition:enter-end="opacity-100 max-h-xl" | 801 | x-transition:enter-end="opacity-100 max-h-xl" |
759 | x-transition:leave="transition-all ease-in-out duration-300" | 802 | x-transition:leave="transition-all ease-in-out duration-300" |
760 | x-transition:leave-start="opacity-100 max-h-xl" | 803 | x-transition:leave-start="opacity-100 max-h-xl" |
761 | x-transition:leave-end="opacity-0 max-h-0" | 804 | x-transition:leave-end="opacity-0 max-h-0" |
762 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" | 805 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" |
763 | aria-label="submenu" | 806 | aria-label="submenu" |
764 | > | 807 | > |
765 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> | 808 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> |
766 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 809 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
767 | </li> | 810 | </li> |
768 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> | 811 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> |
769 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 812 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
770 | </li> | 813 | </li> |
771 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}"> | 814 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}"> |
772 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> | 815 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> |
773 | </li> | 816 | </li> |
774 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> | 817 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> |
775 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 818 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
776 | </li> | 819 | </li> |
777 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> | 820 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> |
778 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 821 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
779 | </li> | 822 | </li> |
780 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> | 823 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> |
781 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 824 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
782 | </li> | 825 | </li> |
783 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> | 826 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> |
784 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 827 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
785 | </li> | 828 | </li> |
786 | 829 | ||
787 | </ul> | 830 | </ul> |
788 | </template> | 831 | </template> |
789 | </li> | 832 | </li> |
790 | </ul> | 833 | </ul> |
791 | <!--<div class="px-6 my-6"> | 834 | <!--<div class="px-6 my-6"> |
792 | <button class="flex items-center justify-between px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | 835 | <button class="flex items-center justify-between px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> |
793 | Create account | 836 | Create account |
794 | <span class="ml-2" aria-hidden="true">+</span> | 837 | <span class="ml-2" aria-hidden="true">+</span> |
795 | </button> | 838 | </button> |
796 | </div>--> | 839 | </div>--> |
797 | </div> | 840 | </div> |
798 | </aside> | 841 | </aside> |
799 | <div class="flex flex-col flex-1 w-full"> | 842 | <div class="flex flex-col flex-1 w-full"> |
800 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> | 843 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> |
801 | <div | 844 | <div |
802 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" | 845 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" |
803 | > | 846 | > |
804 | <!-- Mobile hamburger --> | 847 | <!-- Mobile hamburger --> |
805 | <button | 848 | <button |
806 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" | 849 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" |
807 | @click="toggleSideMenu" | 850 | @click="toggleSideMenu" |
808 | aria-label="Menu" | 851 | aria-label="Menu" |
809 | > | 852 | > |
810 | <svg | 853 | <svg |
811 | class="w-6 h-6" | 854 | class="w-6 h-6" |
812 | aria-hidden="true" | 855 | aria-hidden="true" |
813 | fill="currentColor" | 856 | fill="currentColor" |
814 | viewBox="0 0 20 20" | 857 | viewBox="0 0 20 20" |
815 | > | 858 | > |
816 | <path | 859 | <path |
817 | fill-rule="evenodd" | 860 | fill-rule="evenodd" |
818 | d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" | 861 | d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" |
819 | clip-rule="evenodd" | 862 | clip-rule="evenodd" |
820 | ></path> | 863 | ></path> |
821 | </svg> | 864 | </svg> |
822 | </button> | 865 | </button> |
823 | <!-- Search input --> | 866 | <!-- Search input --> |
824 | <div class="flex justify-center flex-1 lg:mr-32"> | 867 | <div class="flex justify-center flex-1 lg:mr-32"> |
825 | <div | 868 | <div |
826 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" | 869 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" |
827 | > | 870 | > |
828 | 871 | ||
829 | @yield('search') | 872 | @yield('search') |
830 | </div> | 873 | </div> |
831 | </div> | 874 | </div> |
832 | <ul class="flex items-center flex-shrink-0 space-x-6"> | 875 | <ul class="flex items-center flex-shrink-0 space-x-6"> |
833 | <!-- Theme toggler --> | 876 | <!-- Theme toggler --> |
834 | <li class="flex"> | 877 | <li class="flex"> |
835 | <button | 878 | <button |
836 | class="rounded-md focus:outline-none focus:shadow-outline-purple" | 879 | class="rounded-md focus:outline-none focus:shadow-outline-purple" |
837 | @click="toggleTheme" | 880 | @click="toggleTheme" |
838 | aria-label="Toggle color mode" | 881 | aria-label="Toggle color mode" |
839 | > | 882 | > |
840 | <template x-if="!dark"> | 883 | <template x-if="!dark"> |
841 | <svg | 884 | <svg |
842 | class="w-5 h-5" | 885 | class="w-5 h-5" |
843 | aria-hidden="true" | 886 | aria-hidden="true" |
844 | fill="currentColor" | 887 | fill="currentColor" |
845 | viewBox="0 0 20 20" | 888 | viewBox="0 0 20 20" |
846 | > | 889 | > |
847 | <path | 890 | <path |
848 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" | 891 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" |
849 | ></path> | 892 | ></path> |
850 | </svg> | 893 | </svg> |
851 | </template> | 894 | </template> |
852 | <template x-if="dark"> | 895 | <template x-if="dark"> |
853 | <svg | 896 | <svg |
854 | class="w-5 h-5" | 897 | class="w-5 h-5" |
855 | aria-hidden="true" | 898 | aria-hidden="true" |
856 | fill="currentColor" | 899 | fill="currentColor" |
857 | viewBox="0 0 20 20" | 900 | viewBox="0 0 20 20" |
858 | > | 901 | > |
859 | <path | 902 | <path |
860 | fill-rule="evenodd" | 903 | fill-rule="evenodd" |
861 | d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" | 904 | d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" |
862 | clip-rule="evenodd" | 905 | clip-rule="evenodd" |
863 | ></path> | 906 | ></path> |
864 | </svg> | 907 | </svg> |
865 | </template> | 908 | </template> |
866 | </button> | 909 | </button> |
867 | </li> | 910 | </li> |
868 | <!-- Notifications menu --> | 911 | <!-- Notifications menu --> |
869 | <li class="relative"> | 912 | <li class="relative"> |
870 | <button | 913 | <button |
871 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" | 914 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" |
872 | @click="toggleNotificationsMenu" | 915 | @click="toggleNotificationsMenu" |
873 | @keydown.escape="closeNotificationsMenu" | 916 | @keydown.escape="closeNotificationsMenu" |
874 | aria-label="Notifications" | 917 | aria-label="Notifications" |
875 | aria-haspopup="true" | 918 | aria-haspopup="true" |
876 | > | 919 | > |
877 | <svg | 920 | <svg |
878 | class="w-5 h-5" | 921 | class="w-5 h-5" |
879 | aria-hidden="true" | 922 | aria-hidden="true" |
880 | fill="currentColor" | 923 | fill="currentColor" |
881 | viewBox="0 0 20 20" | 924 | viewBox="0 0 20 20" |
882 | > | 925 | > |
883 | <path | 926 | <path |
884 | d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z" | 927 | d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z" |
885 | ></path> | 928 | ></path> |
886 | </svg> | 929 | </svg> |
887 | <!-- Notification badge --> | 930 | <!-- Notification badge --> |
888 | <span | 931 | <span |
889 | aria-hidden="true" | 932 | aria-hidden="true" |
890 | class="absolute top-0 right-0 inline-block w-3 h-3 transform translate-x-1 -translate-y-1 bg-red-600 border-2 border-white rounded-full dark:border-gray-800" | 933 | class="absolute top-0 right-0 inline-block w-3 h-3 transform translate-x-1 -translate-y-1 bg-red-600 border-2 border-white rounded-full dark:border-gray-800" |
891 | ></span> | 934 | ></span> |
892 | </button> | 935 | </button> |
893 | <template x-if="isNotificationsMenuOpen"> | 936 | <template x-if="isNotificationsMenuOpen"> |
894 | <ul | 937 | <ul |
895 | x-transition:leave="transition ease-in duration-150" | 938 | x-transition:leave="transition ease-in duration-150" |
896 | x-transition:leave-start="opacity-100" | 939 | x-transition:leave-start="opacity-100" |
897 | x-transition:leave-end="opacity-0" | 940 | x-transition:leave-end="opacity-0" |
898 | @click.away="closeNotificationsMenu" | 941 | @click.away="closeNotificationsMenu" |
899 | @keydown.escape="closeNotificationsMenu" | 942 | @keydown.escape="closeNotificationsMenu" |
900 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:text-gray-300 dark:border-gray-700 dark:bg-gray-700" | 943 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:text-gray-300 dark:border-gray-700 dark:bg-gray-700" |
901 | > | 944 | > |
902 | <li class="flex"> | 945 | <li class="flex"> |
903 | <a | 946 | <a |
904 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 947 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
905 | href="{{ route('admin.admin-messages') }}" | 948 | href="{{ route('admin.admin-messages') }}" |
906 | > | 949 | > |
907 | <span>Сообщения</span> | 950 | <span>Сообщения</span> |
908 | @if($MsgCount > 0) | 951 | @if($MsgCount > 0) |
909 | <span | 952 | <span |
910 | class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600" | 953 | class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600" |
911 | > | 954 | > |
912 | 955 | ||
913 | {{ $MsgCount }} | 956 | {{ $MsgCount }} |
914 | </span> | 957 | </span> |
915 | @endif | 958 | @endif |
916 | </a> | 959 | </a> |
917 | </li> | 960 | </li> |
918 | <!--<li class="flex"> | 961 | <!--<li class="flex"> |
919 | <a | 962 | <a |
920 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 963 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
921 | href="#" | 964 | href="#" |
922 | > | 965 | > |
923 | <span>Логи</span> | 966 | <span>Логи</span> |
924 | </a> | 967 | </a> |
925 | </li>--> | 968 | </li>--> |
926 | </ul> | 969 | </ul> |
927 | </template> | 970 | </template> |
928 | </li> | 971 | </li> |
929 | <!-- Profile menu --> | 972 | <!-- Profile menu --> |
930 | <li class="relative"> | 973 | <li class="relative"> |
931 | <button | 974 | <button |
932 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" | 975 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" |
933 | @click="toggleProfileMenu" | 976 | @click="toggleProfileMenu" |
934 | @keydown.escape="closeProfileMenu" | 977 | @keydown.escape="closeProfileMenu" |
935 | aria-label="Account" | 978 | aria-label="Account" |
936 | aria-haspopup="true" | 979 | aria-haspopup="true" |
937 | > | 980 | > |
938 | <img | 981 | <img |
939 | class="object-cover w-8 h-8 rounded-full" | 982 | class="object-cover w-8 h-8 rounded-full" |
940 | src="{{ asset('assets/img/profile.jpg') }}" | 983 | src="{{ asset('assets/img/profile.jpg') }}" |
941 | alt="" | 984 | alt="" |
942 | aria-hidden="true" | 985 | aria-hidden="true" |
943 | /> | 986 | /> |
944 | </button> | 987 | </button> |
945 | <template x-if="isProfileMenuOpen"> | 988 | <template x-if="isProfileMenuOpen"> |
946 | <ul | 989 | <ul |
947 | x-transition:leave="transition ease-in duration-150" | 990 | x-transition:leave="transition ease-in duration-150" |
948 | x-transition:leave-start="opacity-100" | 991 | x-transition:leave-start="opacity-100" |
949 | x-transition:leave-end="opacity-0" | 992 | x-transition:leave-end="opacity-0" |
950 | @click.away="closeProfileMenu" | 993 | @click.away="closeProfileMenu" |
951 | @keydown.escape="closeProfileMenu" | 994 | @keydown.escape="closeProfileMenu" |
952 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:border-gray-700 dark:text-gray-300 dark:bg-gray-700" | 995 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:border-gray-700 dark:text-gray-300 dark:bg-gray-700" |
953 | aria-label="submenu" | 996 | aria-label="submenu" |
954 | > | 997 | > |
955 | <li class="flex"> | 998 | <li class="flex"> |
956 | <a | 999 | <a |
957 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 1000 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
958 | href="{{ route('admin.profile') }}" | 1001 | href="{{ route('admin.profile') }}" |
959 | > | 1002 | > |
960 | <svg | 1003 | <svg |
961 | class="w-4 h-4 mr-3" | 1004 | class="w-4 h-4 mr-3" |
962 | aria-hidden="true" | 1005 | aria-hidden="true" |
963 | fill="none" | 1006 | fill="none" |
964 | stroke-linecap="round" | 1007 | stroke-linecap="round" |
965 | stroke-linejoin="round" | 1008 | stroke-linejoin="round" |
966 | stroke-width="2" | 1009 | stroke-width="2" |
967 | viewBox="0 0 24 24" | 1010 | viewBox="0 0 24 24" |
968 | stroke="currentColor" | 1011 | stroke="currentColor" |
969 | > | 1012 | > |
970 | <path | 1013 | <path |
971 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" | 1014 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" |
972 | ></path> | 1015 | ></path> |
973 | </svg> | 1016 | </svg> |
974 | <span>Профиль</span> | 1017 | <span>Профиль</span> |
975 | </a> | 1018 | </a> |
976 | </li> | 1019 | </li> |
977 | <li class="flex"> | 1020 | <li class="flex"> |
978 | <a | 1021 | <a |
979 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 1022 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
980 | href="{{ route('admin.config') }}" | 1023 | href="{{ route('admin.config') }}" |
981 | > | 1024 | > |
982 | <svg | 1025 | <svg |
983 | class="w-4 h-4 mr-3" | 1026 | class="w-4 h-4 mr-3" |
984 | aria-hidden="true" | 1027 | aria-hidden="true" |
985 | fill="none" | 1028 | fill="none" |
986 | stroke-linecap="round" | 1029 | stroke-linecap="round" |
987 | stroke-linejoin="round" | 1030 | stroke-linejoin="round" |
988 | stroke-width="2" | 1031 | stroke-width="2" |
989 | viewBox="0 0 24 24" | 1032 | viewBox="0 0 24 24" |
990 | stroke="currentColor" | 1033 | stroke="currentColor" |
991 | > | 1034 | > |
992 | <path | 1035 | <path |
993 | d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" | 1036 | d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" |
994 | ></path> | 1037 | ></path> |
995 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> | 1038 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> |
996 | </svg> | 1039 | </svg> |
997 | <span>Настройки</span> | 1040 | <span>Настройки</span> |
998 | </a> | 1041 | </a> |
999 | </li> | 1042 | </li> |
1000 | <li class="flex"> | 1043 | <li class="flex"> |
1001 | <a | 1044 | <a |
1002 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 1045 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
1003 | href="{{ route('admin.logout') }}" | 1046 | href="{{ route('admin.logout') }}" |
1004 | > | 1047 | > |
1005 | <svg | 1048 | <svg |
1006 | class="w-4 h-4 mr-3" | 1049 | class="w-4 h-4 mr-3" |
1007 | aria-hidden="true" | 1050 | aria-hidden="true" |
1008 | fill="none" | 1051 | fill="none" |
1009 | stroke-linecap="round" | 1052 | stroke-linecap="round" |
1010 | stroke-linejoin="round" | 1053 | stroke-linejoin="round" |
1011 | stroke-width="2" | 1054 | stroke-width="2" |
1012 | viewBox="0 0 24 24" | 1055 | viewBox="0 0 24 24" |
1013 | stroke="currentColor" | 1056 | stroke="currentColor" |
1014 | > | 1057 | > |
1015 | <path | 1058 | <path |
1016 | d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1" | 1059 | d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1" |
1017 | ></path> | 1060 | ></path> |
1018 | </svg> | 1061 | </svg> |
1019 | <span>Выход</span> | 1062 | <span>Выход</span> |
1020 | </a> | 1063 | </a> |
1021 | </li> | 1064 | </li> |
1022 | </ul> | 1065 | </ul> |
1023 | </template> | 1066 | </template> |
1024 | </li> | 1067 | </li> |
1025 | </ul> | 1068 | </ul> |
1026 | </div> | 1069 | </div> |
1027 | </header> | 1070 | </header> |
1028 | <main class="h-full overflow-y-auto"> | 1071 | <main class="h-full overflow-y-auto"> |
1029 | <div class="container px-6 mx-auto grid"> | 1072 | <div class="container px-6 mx-auto grid"> |
1030 | <h2 | 1073 | <h2 |
1031 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" | 1074 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" |
1032 | > | 1075 | > |
1033 | {{$title}} | 1076 | {{$title}} |
1034 | </h2> | 1077 | </h2> |
1035 | <!-- CTA --> | 1078 | <!-- CTA --> |
1036 | <a | 1079 | <a |
1037 | class="flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple" | 1080 | class="flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple" |
1038 | href="{{ route('admin.admin-users') }}" | 1081 | href="{{ route('admin.admin-users') }}" |
1039 | > | 1082 | > |
1040 | <div class="flex items-center"> | 1083 | <div class="flex items-center"> |
1041 | <svg | 1084 | <svg |
1042 | class="w-5 h-5 mr-2" | 1085 | class="w-5 h-5 mr-2" |
1043 | fill="currentColor" | 1086 | fill="currentColor" |
1044 | viewBox="0 0 20 20" | 1087 | viewBox="0 0 20 20" |
1045 | > | 1088 | > |
1046 | <path | 1089 | <path |
1047 | d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" | 1090 | d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" |
1048 | ></path> | 1091 | ></path> |
1049 | </svg> | 1092 | </svg> |
1050 | <span>Контент для админов</span> | 1093 | <span>Контент для админов</span> |
1051 | </div> | 1094 | </div> |
1052 | <span>Список админов →</span> | 1095 | <span>Список админов →</span> |
1053 | </a> | 1096 | </a> |
1054 | 1097 | ||
1055 | @if ($message = Session::get('success')) | 1098 | @if ($message = Session::get('success')) |
1056 | <section> | 1099 | <section> |
1057 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 1100 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
1058 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1101 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
1059 | <span aria-hidden="true">×</span> | 1102 | <span aria-hidden="true">×</span> |
1060 | </button> | 1103 | </button> |
1061 | {{ $message }} | 1104 | {{ $message }} |
1062 | </div> | 1105 | </div> |
1063 | </section> | 1106 | </section> |
1064 | @endif | 1107 | @endif |
1065 | 1108 | ||
1066 | @if ($errors->any()) | 1109 | @if ($errors->any()) |
1067 | <section> | 1110 | <section> |
1068 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 1111 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
1069 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1112 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
1070 | <span aria-hidden="true">×</span> | 1113 | <span aria-hidden="true">×</span> |
1071 | </button> | 1114 | </button> |
1072 | <ul class="mb-0"> | 1115 | <ul class="mb-0"> |
1073 | @foreach ($errors->all() as $error) | 1116 | @foreach ($errors->all() as $error) |
1074 | <li>{{ $error }}</li> | 1117 | <li>{{ $error }}</li> |
1075 | @endforeach | 1118 | @endforeach |
1076 | </ul> | 1119 | </ul> |
1077 | </div> | 1120 | </div> |
1078 | </section> | 1121 | </section> |
1079 | @endif | 1122 | @endif |
1080 | 1123 | ||
1081 | @yield('content') | 1124 | @yield('content') |
1082 | 1125 | ||
1083 | <!-- Cards | 1126 | <!-- Cards |
1084 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 1127 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
1085 | 1128 | ||
1086 | <div | 1129 | <div |
1087 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1130 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1088 | > | 1131 | > |
1089 | <div | 1132 | <div |
1090 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" | 1133 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" |
1091 | > | 1134 | > |
1092 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1135 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1093 | <path | 1136 | <path |
1094 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z" | 1137 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z" |
1095 | ></path> | 1138 | ></path> |
1096 | </svg> | 1139 | </svg> |
1097 | </div> | 1140 | </div> |
1098 | <div> | 1141 | <div> |
1099 | <p | 1142 | <p |
1100 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1143 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1101 | > | 1144 | > |
1102 | Total clients | 1145 | Total clients |
1103 | </p> | 1146 | </p> |
1104 | <p | 1147 | <p |
1105 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1148 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1106 | > | 1149 | > |
1107 | 6389 | 1150 | 6389 |
1108 | </p> | 1151 | </p> |
1109 | </div> | 1152 | </div> |
1110 | </div> | 1153 | </div> |
1111 | 1154 | ||
1112 | <div | 1155 | <div |
1113 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1156 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1114 | > | 1157 | > |
1115 | <div | 1158 | <div |
1116 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" | 1159 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" |
1117 | > | 1160 | > |
1118 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1161 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1119 | <path | 1162 | <path |
1120 | fill-rule="evenodd" | 1163 | fill-rule="evenodd" |
1121 | d="M4 4a2 2 0 00-2 2v4a2 2 0 002 2V6h10a2 2 0 00-2-2H4zm2 6a2 2 0 012-2h8a2 2 0 012 2v4a2 2 0 01-2 2H8a2 2 0 01-2-2v-4zm6 4a2 2 0 100-4 2 2 0 000 4z" | 1164 | d="M4 4a2 2 0 00-2 2v4a2 2 0 002 2V6h10a2 2 0 00-2-2H4zm2 6a2 2 0 012-2h8a2 2 0 012 2v4a2 2 0 01-2 2H8a2 2 0 01-2-2v-4zm6 4a2 2 0 100-4 2 2 0 000 4z" |
1122 | clip-rule="evenodd" | 1165 | clip-rule="evenodd" |
1123 | ></path> | 1166 | ></path> |
1124 | </svg> | 1167 | </svg> |
1125 | </div> | 1168 | </div> |
1126 | <div> | 1169 | <div> |
1127 | <p | 1170 | <p |
1128 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1171 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1129 | > | 1172 | > |
1130 | Account balance | 1173 | Account balance |
1131 | </p> | 1174 | </p> |
1132 | <p | 1175 | <p |
1133 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1176 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1134 | > | 1177 | > |
1135 | $ 46,760.89 | 1178 | $ 46,760.89 |
1136 | </p> | 1179 | </p> |
1137 | </div> | 1180 | </div> |
1138 | </div> | 1181 | </div> |
1139 | 1182 | ||
1140 | <div | 1183 | <div |
1141 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1184 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1142 | > | 1185 | > |
1143 | <div | 1186 | <div |
1144 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" | 1187 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" |
1145 | > | 1188 | > |
1146 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1189 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1147 | <path | 1190 | <path |
1148 | d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" | 1191 | d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" |
1149 | ></path> | 1192 | ></path> |
1150 | </svg> | 1193 | </svg> |
1151 | </div> | 1194 | </div> |
1152 | <div> | 1195 | <div> |
1153 | <p | 1196 | <p |
1154 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1197 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1155 | > | 1198 | > |
1156 | New sales | 1199 | New sales |
1157 | </p> | 1200 | </p> |
1158 | <p | 1201 | <p |
1159 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1202 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1160 | > | 1203 | > |
1161 | 376 | 1204 | 376 |
1162 | </p> | 1205 | </p> |
1163 | </div> | 1206 | </div> |
1164 | </div> | 1207 | </div> |
1165 | 1208 | ||
1166 | <div | 1209 | <div |
1167 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1210 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1168 | > | 1211 | > |
1169 | <div | 1212 | <div |
1170 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" | 1213 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" |
1171 | > | 1214 | > |
1172 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1215 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1173 | <path | 1216 | <path |
1174 | fill-rule="evenodd" | 1217 | fill-rule="evenodd" |
1175 | d="M18 5v8a2 2 0 01-2 2h-5l-5 4v-4H4a2 2 0 01-2-2V5a2 2 0 012-2h12a2 2 0 012 2zM7 8H5v2h2V8zm2 0h2v2H9V8zm6 0h-2v2h2V8z" | 1218 | d="M18 5v8a2 2 0 01-2 2h-5l-5 4v-4H4a2 2 0 01-2-2V5a2 2 0 012-2h12a2 2 0 012 2zM7 8H5v2h2V8zm2 0h2v2H9V8zm6 0h-2v2h2V8z" |
1176 | clip-rule="evenodd" | 1219 | clip-rule="evenodd" |
1177 | ></path> | 1220 | ></path> |
1178 | </svg> | 1221 | </svg> |
1179 | </div> | 1222 | </div> |
1180 | <div> | 1223 | <div> |
1181 | <p | 1224 | <p |
1182 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1225 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1183 | > | 1226 | > |
1184 | Pending contacts | 1227 | Pending contacts |
1185 | </p> | 1228 | </p> |
1186 | <p | 1229 | <p |
1187 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1230 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1188 | > | 1231 | > |
1189 | 35 | 1232 | 35 |
1190 | </p> | 1233 | </p> |
1191 | </div> | 1234 | </div> |
1192 | </div> | 1235 | </div> |
1193 | </div> | 1236 | </div> |
1194 | --> | 1237 | --> |
1195 | <!-- New Table | 1238 | <!-- New Table |
1196 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 1239 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> |
1197 | <div class="w-full overflow-x-auto"> | 1240 | <div class="w-full overflow-x-auto"> |
1198 | <table class="w-full whitespace-no-wrap"> | 1241 | <table class="w-full whitespace-no-wrap"> |
1199 | <thead> | 1242 | <thead> |
1200 | <tr | 1243 | <tr |
1201 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 1244 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
1202 | > | 1245 | > |
1203 | <th class="px-4 py-3">Client</th> | 1246 | <th class="px-4 py-3">Client</th> |
1204 | <th class="px-4 py-3">Amount</th> | 1247 | <th class="px-4 py-3">Amount</th> |
1205 | <th class="px-4 py-3">Status</th> | 1248 | <th class="px-4 py-3">Status</th> |
1206 | <th class="px-4 py-3">Date</th> | 1249 | <th class="px-4 py-3">Date</th> |
1207 | </tr> | 1250 | </tr> |
1208 | </thead> | 1251 | </thead> |
1209 | <tbody | 1252 | <tbody |
1210 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" | 1253 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" |
1211 | > | 1254 | > |
1212 | <tr class="text-gray-700 dark:text-gray-400"> | 1255 | <tr class="text-gray-700 dark:text-gray-400"> |
1213 | <td class="px-4 py-3"> | 1256 | <td class="px-4 py-3"> |
1214 | <div class="flex items-center text-sm"> | 1257 | <div class="flex items-center text-sm"> |
1215 | 1258 | ||
1216 | <div | 1259 | <div |
1217 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1260 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1218 | > | 1261 | > |
1219 | <img | 1262 | <img |
1220 | class="object-cover w-full h-full rounded-full" | 1263 | class="object-cover w-full h-full rounded-full" |
1221 | src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1264 | src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1222 | alt="" | 1265 | alt="" |
1223 | loading="lazy" | 1266 | loading="lazy" |
1224 | /> | 1267 | /> |
1225 | <div | 1268 | <div |
1226 | class="absolute inset-0 rounded-full shadow-inner" | 1269 | class="absolute inset-0 rounded-full shadow-inner" |
1227 | aria-hidden="true" | 1270 | aria-hidden="true" |
1228 | ></div> | 1271 | ></div> |
1229 | </div> | 1272 | </div> |
1230 | <div> | 1273 | <div> |
1231 | <p class="font-semibold">Hans Burger</p> | 1274 | <p class="font-semibold">Hans Burger</p> |
1232 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1275 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1233 | 10x Developer | 1276 | 10x Developer |
1234 | </p> | 1277 | </p> |
1235 | </div> | 1278 | </div> |
1236 | </div> | 1279 | </div> |
1237 | </td> | 1280 | </td> |
1238 | <td class="px-4 py-3 text-sm"> | 1281 | <td class="px-4 py-3 text-sm"> |
1239 | $ 863.45 | 1282 | $ 863.45 |
1240 | </td> | 1283 | </td> |
1241 | <td class="px-4 py-3 text-xs"> | 1284 | <td class="px-4 py-3 text-xs"> |
1242 | <span | 1285 | <span |
1243 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1286 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1244 | > | 1287 | > |
1245 | Approved | 1288 | Approved |
1246 | </span> | 1289 | </span> |
1247 | </td> | 1290 | </td> |
1248 | <td class="px-4 py-3 text-sm"> | 1291 | <td class="px-4 py-3 text-sm"> |
1249 | 6/10/2020 | 1292 | 6/10/2020 |
1250 | </td> | 1293 | </td> |
1251 | </tr> | 1294 | </tr> |
1252 | 1295 | ||
1253 | <tr class="text-gray-700 dark:text-gray-400"> | 1296 | <tr class="text-gray-700 dark:text-gray-400"> |
1254 | <td class="px-4 py-3"> | 1297 | <td class="px-4 py-3"> |
1255 | <div class="flex items-center text-sm"> | 1298 | <div class="flex items-center text-sm"> |
1256 | 1299 | ||
1257 | <div | 1300 | <div |
1258 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1301 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1259 | > | 1302 | > |
1260 | <img | 1303 | <img |
1261 | class="object-cover w-full h-full rounded-full" | 1304 | class="object-cover w-full h-full rounded-full" |
1262 | src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&facepad=3&fit=facearea&s=707b9c33066bf8808c934c8ab394dff6" | 1305 | src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&facepad=3&fit=facearea&s=707b9c33066bf8808c934c8ab394dff6" |
1263 | alt="" | 1306 | alt="" |
1264 | loading="lazy" | 1307 | loading="lazy" |
1265 | /> | 1308 | /> |
1266 | <div | 1309 | <div |
1267 | class="absolute inset-0 rounded-full shadow-inner" | 1310 | class="absolute inset-0 rounded-full shadow-inner" |
1268 | aria-hidden="true" | 1311 | aria-hidden="true" |
1269 | ></div> | 1312 | ></div> |
1270 | </div> | 1313 | </div> |
1271 | <div> | 1314 | <div> |
1272 | <p class="font-semibold">Jolina Angelie</p> | 1315 | <p class="font-semibold">Jolina Angelie</p> |
1273 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1316 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1274 | Unemployed | 1317 | Unemployed |
1275 | </p> | 1318 | </p> |
1276 | </div> | 1319 | </div> |
1277 | </div> | 1320 | </div> |
1278 | </td> | 1321 | </td> |
1279 | <td class="px-4 py-3 text-sm"> | 1322 | <td class="px-4 py-3 text-sm"> |
1280 | $ 369.95 | 1323 | $ 369.95 |
1281 | </td> | 1324 | </td> |
1282 | <td class="px-4 py-3 text-xs"> | 1325 | <td class="px-4 py-3 text-xs"> |
1283 | <span | 1326 | <span |
1284 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" | 1327 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" |
1285 | > | 1328 | > |
1286 | Pending | 1329 | Pending |
1287 | </span> | 1330 | </span> |
1288 | </td> | 1331 | </td> |
1289 | <td class="px-4 py-3 text-sm"> | 1332 | <td class="px-4 py-3 text-sm"> |
1290 | 6/10/2020 | 1333 | 6/10/2020 |
1291 | </td> | 1334 | </td> |
1292 | </tr> | 1335 | </tr> |
1293 | 1336 | ||
1294 | <tr class="text-gray-700 dark:text-gray-400"> | 1337 | <tr class="text-gray-700 dark:text-gray-400"> |
1295 | <td class="px-4 py-3"> | 1338 | <td class="px-4 py-3"> |
1296 | <div class="flex items-center text-sm"> | 1339 | <div class="flex items-center text-sm"> |
1297 | 1340 | ||
1298 | <div | 1341 | <div |
1299 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1342 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1300 | > | 1343 | > |
1301 | <img | 1344 | <img |
1302 | class="object-cover w-full h-full rounded-full" | 1345 | class="object-cover w-full h-full rounded-full" |
1303 | src="https://images.unsplash.com/photo-1551069613-1904dbdcda11?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1346 | src="https://images.unsplash.com/photo-1551069613-1904dbdcda11?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1304 | alt="" | 1347 | alt="" |
1305 | loading="lazy" | 1348 | loading="lazy" |
1306 | /> | 1349 | /> |
1307 | <div | 1350 | <div |
1308 | class="absolute inset-0 rounded-full shadow-inner" | 1351 | class="absolute inset-0 rounded-full shadow-inner" |
1309 | aria-hidden="true" | 1352 | aria-hidden="true" |
1310 | ></div> | 1353 | ></div> |
1311 | </div> | 1354 | </div> |
1312 | <div> | 1355 | <div> |
1313 | <p class="font-semibold">Sarah Curry</p> | 1356 | <p class="font-semibold">Sarah Curry</p> |
1314 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1357 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1315 | Designer | 1358 | Designer |
1316 | </p> | 1359 | </p> |
1317 | </div> | 1360 | </div> |
1318 | </div> | 1361 | </div> |
1319 | </td> | 1362 | </td> |
1320 | <td class="px-4 py-3 text-sm"> | 1363 | <td class="px-4 py-3 text-sm"> |
1321 | $ 86.00 | 1364 | $ 86.00 |
1322 | </td> | 1365 | </td> |
1323 | <td class="px-4 py-3 text-xs"> | 1366 | <td class="px-4 py-3 text-xs"> |
1324 | <span | 1367 | <span |
1325 | class="px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-700" | 1368 | class="px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-700" |
1326 | > | 1369 | > |
1327 | Denied | 1370 | Denied |
1328 | </span> | 1371 | </span> |
1329 | </td> | 1372 | </td> |
1330 | <td class="px-4 py-3 text-sm"> | 1373 | <td class="px-4 py-3 text-sm"> |
1331 | 6/10/2020 | 1374 | 6/10/2020 |
1332 | </td> | 1375 | </td> |
1333 | </tr> | 1376 | </tr> |
1334 | 1377 | ||
1335 | <tr class="text-gray-700 dark:text-gray-400"> | 1378 | <tr class="text-gray-700 dark:text-gray-400"> |
1336 | <td class="px-4 py-3"> | 1379 | <td class="px-4 py-3"> |
1337 | <div class="flex items-center text-sm"> | 1380 | <div class="flex items-center text-sm"> |
1338 | 1381 | ||
1339 | <div | 1382 | <div |
1340 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1383 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1341 | > | 1384 | > |
1342 | <img | 1385 | <img |
1343 | class="object-cover w-full h-full rounded-full" | 1386 | class="object-cover w-full h-full rounded-full" |
1344 | src="https://images.unsplash.com/photo-1551006917-3b4c078c47c9?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1387 | src="https://images.unsplash.com/photo-1551006917-3b4c078c47c9?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1345 | alt="" | 1388 | alt="" |
1346 | loading="lazy" | 1389 | loading="lazy" |
1347 | /> | 1390 | /> |
1348 | <div | 1391 | <div |
1349 | class="absolute inset-0 rounded-full shadow-inner" | 1392 | class="absolute inset-0 rounded-full shadow-inner" |
1350 | aria-hidden="true" | 1393 | aria-hidden="true" |
1351 | ></div> | 1394 | ></div> |
1352 | </div> | 1395 | </div> |
1353 | <div> | 1396 | <div> |
1354 | <p class="font-semibold">Rulia Joberts</p> | 1397 | <p class="font-semibold">Rulia Joberts</p> |
1355 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1398 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1356 | Actress | 1399 | Actress |
1357 | </p> | 1400 | </p> |
1358 | </div> | 1401 | </div> |
1359 | </div> | 1402 | </div> |
1360 | </td> | 1403 | </td> |
1361 | <td class="px-4 py-3 text-sm"> | 1404 | <td class="px-4 py-3 text-sm"> |
1362 | $ 1276.45 | 1405 | $ 1276.45 |
1363 | </td> | 1406 | </td> |
1364 | <td class="px-4 py-3 text-xs"> | 1407 | <td class="px-4 py-3 text-xs"> |
1365 | <span | 1408 | <span |
1366 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1409 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1367 | > | 1410 | > |
1368 | Approved | 1411 | Approved |
1369 | </span> | 1412 | </span> |
1370 | </td> | 1413 | </td> |
1371 | <td class="px-4 py-3 text-sm"> | 1414 | <td class="px-4 py-3 text-sm"> |
1372 | 6/10/2020 | 1415 | 6/10/2020 |
1373 | </td> | 1416 | </td> |
1374 | </tr> | 1417 | </tr> |
1375 | 1418 | ||
1376 | <tr class="text-gray-700 dark:text-gray-400"> | 1419 | <tr class="text-gray-700 dark:text-gray-400"> |
1377 | <td class="px-4 py-3"> | 1420 | <td class="px-4 py-3"> |
1378 | <div class="flex items-center text-sm"> | 1421 | <div class="flex items-center text-sm"> |
1379 | 1422 | ||
1380 | <div | 1423 | <div |
1381 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1424 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1382 | > | 1425 | > |
1383 | <img | 1426 | <img |
1384 | class="object-cover w-full h-full rounded-full" | 1427 | class="object-cover w-full h-full rounded-full" |
1385 | src="https://images.unsplash.com/photo-1546456073-6712f79251bb?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1428 | src="https://images.unsplash.com/photo-1546456073-6712f79251bb?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1386 | alt="" | 1429 | alt="" |
1387 | loading="lazy" | 1430 | loading="lazy" |
1388 | /> | 1431 | /> |
1389 | <div | 1432 | <div |
1390 | class="absolute inset-0 rounded-full shadow-inner" | 1433 | class="absolute inset-0 rounded-full shadow-inner" |
1391 | aria-hidden="true" | 1434 | aria-hidden="true" |
1392 | ></div> | 1435 | ></div> |
1393 | </div> | 1436 | </div> |
1394 | <div> | 1437 | <div> |
1395 | <p class="font-semibold">Wenzel Dashington</p> | 1438 | <p class="font-semibold">Wenzel Dashington</p> |
1396 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1439 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1397 | Actor | 1440 | Actor |
1398 | </p> | 1441 | </p> |
1399 | </div> | 1442 | </div> |
1400 | </div> | 1443 | </div> |
1401 | </td> | 1444 | </td> |
1402 | <td class="px-4 py-3 text-sm"> | 1445 | <td class="px-4 py-3 text-sm"> |
1403 | $ 863.45 | 1446 | $ 863.45 |
1404 | </td> | 1447 | </td> |
1405 | <td class="px-4 py-3 text-xs"> | 1448 | <td class="px-4 py-3 text-xs"> |
1406 | <span | 1449 | <span |
1407 | class="px-2 py-1 font-semibold leading-tight text-gray-700 bg-gray-100 rounded-full dark:text-gray-100 dark:bg-gray-700" | 1450 | class="px-2 py-1 font-semibold leading-tight text-gray-700 bg-gray-100 rounded-full dark:text-gray-100 dark:bg-gray-700" |
1408 | > | 1451 | > |
1409 | Expired | 1452 | Expired |
1410 | </span> | 1453 | </span> |
1411 | </td> | 1454 | </td> |
1412 | <td class="px-4 py-3 text-sm"> | 1455 | <td class="px-4 py-3 text-sm"> |
1413 | 6/10/2020 | 1456 | 6/10/2020 |
1414 | </td> | 1457 | </td> |
1415 | </tr> | 1458 | </tr> |
1416 | 1459 | ||
1417 | <tr class="text-gray-700 dark:text-gray-400"> | 1460 | <tr class="text-gray-700 dark:text-gray-400"> |
1418 | <td class="px-4 py-3"> | 1461 | <td class="px-4 py-3"> |
1419 | <div class="flex items-center text-sm"> | 1462 | <div class="flex items-center text-sm"> |
1420 | 1463 | ||
1421 | <div | 1464 | <div |
1422 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1465 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1423 | > | 1466 | > |
1424 | <img | 1467 | <img |
1425 | class="object-cover w-full h-full rounded-full" | 1468 | class="object-cover w-full h-full rounded-full" |
1426 | src="https://images.unsplash.com/photo-1502720705749-871143f0e671?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&s=b8377ca9f985d80264279f277f3a67f5" | 1469 | src="https://images.unsplash.com/photo-1502720705749-871143f0e671?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&s=b8377ca9f985d80264279f277f3a67f5" |
1427 | alt="" | 1470 | alt="" |
1428 | loading="lazy" | 1471 | loading="lazy" |
1429 | /> | 1472 | /> |
1430 | <div | 1473 | <div |
1431 | class="absolute inset-0 rounded-full shadow-inner" | 1474 | class="absolute inset-0 rounded-full shadow-inner" |
1432 | aria-hidden="true" | 1475 | aria-hidden="true" |
1433 | ></div> | 1476 | ></div> |
1434 | </div> | 1477 | </div> |
1435 | <div> | 1478 | <div> |
1436 | <p class="font-semibold">Dave Li</p> | 1479 | <p class="font-semibold">Dave Li</p> |
1437 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1480 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1438 | Influencer | 1481 | Influencer |
1439 | </p> | 1482 | </p> |
1440 | </div> | 1483 | </div> |
1441 | </div> | 1484 | </div> |
1442 | </td> | 1485 | </td> |
1443 | <td class="px-4 py-3 text-sm"> | 1486 | <td class="px-4 py-3 text-sm"> |
1444 | $ 863.45 | 1487 | $ 863.45 |
1445 | </td> | 1488 | </td> |
1446 | <td class="px-4 py-3 text-xs"> | 1489 | <td class="px-4 py-3 text-xs"> |
1447 | <span | 1490 | <span |
1448 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1491 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1449 | > | 1492 | > |
1450 | Approved | 1493 | Approved |
1451 | </span> | 1494 | </span> |
1452 | </td> | 1495 | </td> |
1453 | <td class="px-4 py-3 text-sm"> | 1496 | <td class="px-4 py-3 text-sm"> |
1454 | 6/10/2020 | 1497 | 6/10/2020 |
1455 | </td> | 1498 | </td> |
1456 | </tr> | 1499 | </tr> |
1457 | 1500 | ||
1458 | <tr class="text-gray-700 dark:text-gray-400"> | 1501 | <tr class="text-gray-700 dark:text-gray-400"> |
1459 | <td class="px-4 py-3"> | 1502 | <td class="px-4 py-3"> |
1460 | <div class="flex items-center text-sm"> | 1503 | <div class="flex items-center text-sm"> |
1461 | 1504 | ||
1462 | <div | 1505 | <div |
1463 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1506 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1464 | > | 1507 | > |
1465 | <img | 1508 | <img |
1466 | class="object-cover w-full h-full rounded-full" | 1509 | class="object-cover w-full h-full rounded-full" |
1467 | src="https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1510 | src="https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1468 | alt="" | 1511 | alt="" |
1469 | loading="lazy" | 1512 | loading="lazy" |
1470 | /> | 1513 | /> |
1471 | <div | 1514 | <div |
1472 | class="absolute inset-0 rounded-full shadow-inner" | 1515 | class="absolute inset-0 rounded-full shadow-inner" |
1473 | aria-hidden="true" | 1516 | aria-hidden="true" |
1474 | ></div> | 1517 | ></div> |
1475 | </div> | 1518 | </div> |
1476 | <div> | 1519 | <div> |
1477 | <p class="font-semibold">Maria Ramovic</p> | 1520 | <p class="font-semibold">Maria Ramovic</p> |
1478 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1521 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1479 | Runner | 1522 | Runner |
1480 | </p> | 1523 | </p> |
1481 | </div> | 1524 | </div> |
1482 | </div> | 1525 | </div> |
1483 | </td> | 1526 | </td> |
1484 | <td class="px-4 py-3 text-sm"> | 1527 | <td class="px-4 py-3 text-sm"> |
1485 | $ 863.45 | 1528 | $ 863.45 |
1486 | </td> | 1529 | </td> |
1487 | <td class="px-4 py-3 text-xs"> | 1530 | <td class="px-4 py-3 text-xs"> |
1488 | <span | 1531 | <span |
1489 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1532 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1490 | > | 1533 | > |
1491 | Approved | 1534 | Approved |
1492 | </span> | 1535 | </span> |
1493 | </td> | 1536 | </td> |
1494 | <td class="px-4 py-3 text-sm"> | 1537 | <td class="px-4 py-3 text-sm"> |
1495 | 6/10/2020 | 1538 | 6/10/2020 |
1496 | </td> | 1539 | </td> |
1497 | </tr> | 1540 | </tr> |
1498 | 1541 | ||
1499 | <tr class="text-gray-700 dark:text-gray-400"> | 1542 | <tr class="text-gray-700 dark:text-gray-400"> |
1500 | <td class="px-4 py-3"> | 1543 | <td class="px-4 py-3"> |
1501 | <div class="flex items-center text-sm"> | 1544 | <div class="flex items-center text-sm"> |
1502 | 1545 | ||
1503 | <div | 1546 | <div |
1504 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1547 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1505 | > | 1548 | > |
1506 | <img | 1549 | <img |
1507 | class="object-cover w-full h-full rounded-full" | 1550 | class="object-cover w-full h-full rounded-full" |
1508 | src="https://images.unsplash.com/photo-1566411520896-01e7ca4726af?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1551 | src="https://images.unsplash.com/photo-1566411520896-01e7ca4726af?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1509 | alt="" | 1552 | alt="" |
1510 | loading="lazy" | 1553 | loading="lazy" |
1511 | /> | 1554 | /> |
1512 | <div | 1555 | <div |
1513 | class="absolute inset-0 rounded-full shadow-inner" | 1556 | class="absolute inset-0 rounded-full shadow-inner" |
1514 | aria-hidden="true" | 1557 | aria-hidden="true" |
1515 | ></div> | 1558 | ></div> |
1516 | </div> | 1559 | </div> |
1517 | <div> | 1560 | <div> |
1518 | <p class="font-semibold">Hitney Wouston</p> | 1561 | <p class="font-semibold">Hitney Wouston</p> |
1519 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1562 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1520 | Singer | 1563 | Singer |
1521 | </p> | 1564 | </p> |
1522 | </div> | 1565 | </div> |
1523 | </div> | 1566 | </div> |
1524 | </td> | 1567 | </td> |
1525 | <td class="px-4 py-3 text-sm"> | 1568 | <td class="px-4 py-3 text-sm"> |
1526 | $ 863.45 | 1569 | $ 863.45 |
1527 | </td> | 1570 | </td> |
1528 | <td class="px-4 py-3 text-xs"> | 1571 | <td class="px-4 py-3 text-xs"> |
1529 | <span | 1572 | <span |
1530 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1573 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1531 | > | 1574 | > |
1532 | Approved | 1575 | Approved |
1533 | </span> | 1576 | </span> |
1534 | </td> | 1577 | </td> |
1535 | <td class="px-4 py-3 text-sm"> | 1578 | <td class="px-4 py-3 text-sm"> |
1536 | 6/10/2020 | 1579 | 6/10/2020 |
1537 | </td> | 1580 | </td> |
1538 | </tr> | 1581 | </tr> |
1539 | 1582 | ||
1540 | <tr class="text-gray-700 dark:text-gray-400"> | 1583 | <tr class="text-gray-700 dark:text-gray-400"> |
1541 | <td class="px-4 py-3"> | 1584 | <td class="px-4 py-3"> |
1542 | <div class="flex items-center text-sm"> | 1585 | <div class="flex items-center text-sm"> |
1543 | 1586 | ||
1544 | <div | 1587 | <div |
1545 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1588 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1546 | > | 1589 | > |
1547 | <img | 1590 | <img |
1548 | class="object-cover w-full h-full rounded-full" | 1591 | class="object-cover w-full h-full rounded-full" |
1549 | src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1592 | src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1550 | alt="" | 1593 | alt="" |
1551 | loading="lazy" | 1594 | loading="lazy" |
1552 | /> | 1595 | /> |
1553 | <div | 1596 | <div |
1554 | class="absolute inset-0 rounded-full shadow-inner" | 1597 | class="absolute inset-0 rounded-full shadow-inner" |
1555 | aria-hidden="true" | 1598 | aria-hidden="true" |
1556 | ></div> | 1599 | ></div> |
1557 | </div> | 1600 | </div> |
1558 | <div> | 1601 | <div> |
1559 | <p class="font-semibold">Hans Burger</p> | 1602 | <p class="font-semibold">Hans Burger</p> |
1560 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1603 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1561 | 10x Developer | 1604 | 10x Developer |
1562 | </p> | 1605 | </p> |
1563 | </div> | 1606 | </div> |
1564 | </div> | 1607 | </div> |
1565 | </td> | 1608 | </td> |
1566 | <td class="px-4 py-3 text-sm"> | 1609 | <td class="px-4 py-3 text-sm"> |
1567 | $ 863.45 | 1610 | $ 863.45 |
1568 | </td> | 1611 | </td> |
1569 | <td class="px-4 py-3 text-xs"> | 1612 | <td class="px-4 py-3 text-xs"> |
1570 | <span | 1613 | <span |
1571 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1614 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1572 | > | 1615 | > |
1573 | Approved | 1616 | Approved |
1574 | </span> | 1617 | </span> |
1575 | </td> | 1618 | </td> |
1576 | <td class="px-4 py-3 text-sm"> | 1619 | <td class="px-4 py-3 text-sm"> |
1577 | 6/10/2020 | 1620 | 6/10/2020 |
1578 | </td> | 1621 | </td> |
1579 | </tr> | 1622 | </tr> |
1580 | </tbody> | 1623 | </tbody> |
1581 | </table> | 1624 | </table> |
1582 | </div> | 1625 | </div> |
1583 | <div | 1626 | <div |
1584 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | 1627 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" |
1585 | > | 1628 | > |
1586 | <span class="flex items-center col-span-3"> | 1629 | <span class="flex items-center col-span-3"> |
1587 | Showing 21-30 of 100 | 1630 | Showing 21-30 of 100 |
1588 | </span> | 1631 | </span> |
1589 | <span class="col-span-2"></span> | 1632 | <span class="col-span-2"></span> |
1590 | 1633 | ||
1591 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 1634 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
1592 | <nav aria-label="Table navigation"> | 1635 | <nav aria-label="Table navigation"> |
1593 | <ul class="inline-flex items-center"> | 1636 | <ul class="inline-flex items-center"> |
1594 | <li> | 1637 | <li> |
1595 | <button | 1638 | <button |
1596 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 1639 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
1597 | aria-label="Previous" | 1640 | aria-label="Previous" |
1598 | > | 1641 | > |
1599 | <svg | 1642 | <svg |
1600 | aria-hidden="true" | 1643 | aria-hidden="true" |
1601 | class="w-4 h-4 fill-current" | 1644 | class="w-4 h-4 fill-current" |
1602 | viewBox="0 0 20 20" | 1645 | viewBox="0 0 20 20" |
1603 | > | 1646 | > |
1604 | <path | 1647 | <path |
1605 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | 1648 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" |
1606 | clip-rule="evenodd" | 1649 | clip-rule="evenodd" |
1607 | fill-rule="evenodd" | 1650 | fill-rule="evenodd" |
1608 | ></path> | 1651 | ></path> |
1609 | </svg> | 1652 | </svg> |
1610 | </button> | 1653 | </button> |
1611 | </li> | 1654 | </li> |
1612 | <li> | 1655 | <li> |
1613 | <button | 1656 | <button |
1614 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1657 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1615 | > | 1658 | > |
1616 | 1 | 1659 | 1 |
1617 | </button> | 1660 | </button> |
1618 | </li> | 1661 | </li> |
1619 | <li> | 1662 | <li> |
1620 | <button | 1663 | <button |
1621 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1664 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1622 | > | 1665 | > |
1623 | 2 | 1666 | 2 |
1624 | </button> | 1667 | </button> |
1625 | </li> | 1668 | </li> |
1626 | <li> | 1669 | <li> |
1627 | <button | 1670 | <button |
1628 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | 1671 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" |
1629 | > | 1672 | > |
1630 | 3 | 1673 | 3 |
1631 | </button> | 1674 | </button> |
1632 | </li> | 1675 | </li> |
1633 | <li> | 1676 | <li> |
1634 | <button | 1677 | <button |
1635 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1678 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1636 | > | 1679 | > |
1637 | 4 | 1680 | 4 |
1638 | </button> | 1681 | </button> |
1639 | </li> | 1682 | </li> |
1640 | <li> | 1683 | <li> |
1641 | <span class="px-3 py-1">...</span> | 1684 | <span class="px-3 py-1">...</span> |
1642 | </li> | 1685 | </li> |
1643 | <li> | 1686 | <li> |
1644 | <button | 1687 | <button |
1645 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1688 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1646 | > | 1689 | > |
1647 | 8 | 1690 | 8 |
1648 | </button> | 1691 | </button> |
1649 | </li> | 1692 | </li> |
1650 | <li> | 1693 | <li> |
1651 | <button | 1694 | <button |
1652 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1695 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1653 | > | 1696 | > |
1654 | 9 | 1697 | 9 |
1655 | </button> | 1698 | </button> |
1656 | </li> | 1699 | </li> |
1657 | <li> | 1700 | <li> |
1658 | <button | 1701 | <button |
1659 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 1702 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
1660 | aria-label="Next" | 1703 | aria-label="Next" |
1661 | > | 1704 | > |
1662 | <svg | 1705 | <svg |
1663 | class="w-4 h-4 fill-current" | 1706 | class="w-4 h-4 fill-current" |
1664 | aria-hidden="true" | 1707 | aria-hidden="true" |
1665 | viewBox="0 0 20 20" | 1708 | viewBox="0 0 20 20" |
1666 | > | 1709 | > |
1667 | <path | 1710 | <path |
1668 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | 1711 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" |
1669 | clip-rule="evenodd" | 1712 | clip-rule="evenodd" |
1670 | fill-rule="evenodd" | 1713 | fill-rule="evenodd" |
1671 | ></path> | 1714 | ></path> |
1672 | </svg> | 1715 | </svg> |
1673 | </button> | 1716 | </button> |
1674 | </li> | 1717 | </li> |
1675 | </ul> | 1718 | </ul> |
1676 | </nav> | 1719 | </nav> |
1677 | </span> | 1720 | </span> |
1678 | </div> | 1721 | </div> |
1679 | </div> | 1722 | </div> |
1680 | --> | 1723 | --> |
1681 | <!-- Charts --> | 1724 | <!-- Charts --> |
1682 | <!-- | 1725 | <!-- |
1683 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> | 1726 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> |
1684 | Графики | 1727 | Графики |
1685 | </h2> | 1728 | </h2> |
1686 | <div class="grid gap-6 mb-8 md:grid-cols-2"> | 1729 | <div class="grid gap-6 mb-8 md:grid-cols-2"> |
1687 | <div | 1730 | <div |
1688 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1731 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1689 | > | 1732 | > |
1690 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1733 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1691 | Revenue | 1734 | Revenue |
1692 | </h4> | 1735 | </h4> |
1693 | <canvas id="pie"></canvas> | 1736 | <canvas id="pie"></canvas> |
1694 | <div | 1737 | <div |
1695 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1738 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1696 | > | 1739 | > |
1697 | 1740 | ||
1698 | <div class="flex items-center"> | 1741 | <div class="flex items-center"> |
1699 | <span | 1742 | <span |
1700 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" | 1743 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" |
1701 | ></span> | 1744 | ></span> |
1702 | <span>Shirts</span> | 1745 | <span>Shirts</span> |
1703 | </div> | 1746 | </div> |
1704 | <div class="flex items-center"> | 1747 | <div class="flex items-center"> |
1705 | <span | 1748 | <span |
1706 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1749 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1707 | ></span> | 1750 | ></span> |
1708 | <span>Shoes</span> | 1751 | <span>Shoes</span> |
1709 | </div> | 1752 | </div> |
1710 | <div class="flex items-center"> | 1753 | <div class="flex items-center"> |
1711 | <span | 1754 | <span |
1712 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1755 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1713 | ></span> | 1756 | ></span> |
1714 | <span>Bags</span> | 1757 | <span>Bags</span> |
1715 | </div> | 1758 | </div> |
1716 | </div> | 1759 | </div> |
1717 | </div> | 1760 | </div> |
1718 | <div | 1761 | <div |
1719 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1762 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1720 | > | 1763 | > |
1721 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1764 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1722 | Traffic | 1765 | Traffic |
1723 | </h4> | 1766 | </h4> |
1724 | <canvas id="line"></canvas> | 1767 | <canvas id="line"></canvas> |
1725 | <div | 1768 | <div |
1726 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1769 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1727 | > | 1770 | > |
1728 | 1771 | ||
1729 | <div class="flex items-center"> | 1772 | <div class="flex items-center"> |
1730 | <span | 1773 | <span |
1731 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1774 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1732 | ></span> | 1775 | ></span> |
1733 | <span>Organic</span> | 1776 | <span>Organic</span> |
1734 | </div> | 1777 | </div> |
1735 | <div class="flex items-center"> | 1778 | <div class="flex items-center"> |
1736 | <span | 1779 | <span |
1737 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1780 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1738 | ></span> | 1781 | ></span> |
1739 | <span>Paid</span> | 1782 | <span>Paid</span> |
1740 | </div> | 1783 | </div> |
1741 | </div> | 1784 | </div> |
1742 | </div> | 1785 | </div> |
1743 | </div> | 1786 | </div> |
1744 | --> | 1787 | --> |
1745 | </div> | 1788 | </div> |
1746 | </main> | 1789 | </main> |
1747 | </div> | 1790 | </div> |
1748 | </div> | 1791 | </div> |
1792 | @yield('modal') | ||
1749 | </body> | 1793 | </body> |
1750 | @yield('script') | 1794 | @yield('script') |
1751 | </html> | 1795 | </html> |
1752 | 1796 |
routes/web.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | use App\Http\Controllers\Admin\AdminController; | 3 | use App\Http\Controllers\Admin\AdminController; |
4 | use App\Http\Controllers\Admin\CategoryController; | 4 | use App\Http\Controllers\Admin\CategoryController; |
5 | use App\Http\Controllers\Admin\CategoryEmpController; | 5 | use App\Http\Controllers\Admin\CategoryEmpController; |
6 | use App\Http\Controllers\Admin\EducationController; | 6 | use App\Http\Controllers\Admin\EducationController; |
7 | use App\Http\Controllers\Admin\EmployersController; | 7 | use App\Http\Controllers\Admin\EmployersController; |
8 | use App\Http\Controllers\Admin\InfoBloksController; | 8 | use App\Http\Controllers\Admin\InfoBloksController; |
9 | use App\Http\Controllers\Admin\JobTitlesController; | 9 | use App\Http\Controllers\Admin\JobTitlesController; |
10 | use App\Http\Controllers\Admin\UsersController; | 10 | use App\Http\Controllers\Admin\UsersController; |
11 | use App\Http\Controllers\Admin\WorkersController; | 11 | use App\Http\Controllers\Admin\WorkersController; |
12 | use App\Http\Controllers\Auth\ForgotPasswordController; | 12 | use App\Http\Controllers\Auth\ForgotPasswordController; |
13 | use App\Http\Controllers\Auth\LoginController; | 13 | use App\Http\Controllers\Auth\LoginController; |
14 | use App\Http\Controllers\Auth\RegisterController; | 14 | use App\Http\Controllers\Auth\RegisterController; |
15 | use App\Http\Controllers\CKEditorController; | 15 | use App\Http\Controllers\CKEditorController; |
16 | use App\Models\User; | 16 | use App\Models\User; |
17 | use App\Http\Controllers\MainController; | 17 | use App\Http\Controllers\MainController; |
18 | use App\Http\Controllers\HomeController; | 18 | use App\Http\Controllers\HomeController; |
19 | use Illuminate\Support\Facades\Route; | 19 | use Illuminate\Support\Facades\Route; |
20 | use App\Http\Controllers\Admin\CompanyController; | 20 | use App\Http\Controllers\Admin\CompanyController; |
21 | use App\Http\Controllers\Admin\Ad_EmployersController; | 21 | use App\Http\Controllers\Admin\Ad_EmployersController; |
22 | use App\Http\Controllers\Admin\MsgAnswersController; | 22 | use App\Http\Controllers\Admin\MsgAnswersController; |
23 | use App\Http\Controllers\Admin\GroupsController; | 23 | use App\Http\Controllers\Admin\GroupsController; |
24 | use App\Http\Controllers\PagesController; | 24 | use App\Http\Controllers\PagesController; |
25 | use Illuminate\Support\Facades\Storage; | 25 | use Illuminate\Support\Facades\Storage; |
26 | 26 | ||
27 | 27 | ||
28 | /* | 28 | /* |
29 | |-------------------------------------------------------------------------- | 29 | |-------------------------------------------------------------------------- |
30 | | Web Routes | 30 | | Web Routes |
31 | |-------------------------------------------------------------------------- | 31 | |-------------------------------------------------------------------------- |
32 | | | 32 | | |
33 | | Here is where you can register web routes for your application. These | 33 | | Here is where you can register web routes for your application. These |
34 | | routes are loaded by the RouteServiceProvider within a group which | 34 | | routes are loaded by the RouteServiceProvider within a group which |
35 | | contains the "web" middleware group. Now create something great! | 35 | | contains the "web" middleware group. Now create something great! |
36 | | | 36 | | |
37 | */ | 37 | */ |
38 | /* | 38 | /* |
39 | Route::get('/', function () { | 39 | Route::get('/', function () { |
40 | return view('welcome'); | 40 | return view('welcome'); |
41 | })->name('index'); | 41 | })->name('index'); |
42 | */ | 42 | */ |
43 | Route::get('/', [MainController::class, 'index'])->name('index'); | 43 | Route::get('/', [MainController::class, 'index'])->name('index'); |
44 | 44 | ||
45 | //Роуты авторизации, регистрации, восстановления, аутентификации | 45 | //Роуты авторизации, регистрации, восстановления, аутентификации |
46 | Auth::routes(['verify' => true]); | 46 | Auth::routes(['verify' => true]); |
47 | 47 | ||
48 | // роуты регистрации, авторизации, восстановления пароля, верификации почты | 48 | // роуты регистрации, авторизации, восстановления пароля, верификации почты |
49 | /*Route::group([ | 49 | /*Route::group([ |
50 | 'as' => 'auth.', //имя маршрута, например auth.index | 50 | 'as' => 'auth.', //имя маршрута, например auth.index |
51 | 'prefix' => 'auth', // префикс маршрута, например, auth/index | 51 | 'prefix' => 'auth', // префикс маршрута, например, auth/index |
52 | ], function () { | 52 | ], function () { |
53 | //форма регистрации | 53 | //форма регистрации |
54 | Route::get('register', [RegisterController::class, 'register'])->name('register'); | 54 | Route::get('register', [RegisterController::class, 'register'])->name('register'); |
55 | 55 | ||
56 | //создание пользователя | 56 | //создание пользователя |
57 | Route::post('register', [RegisterController::class, 'create'])->name('create'); | 57 | Route::post('register', [RegisterController::class, 'create'])->name('create'); |
58 | 58 | ||
59 | //форма входа авторизации | 59 | //форма входа авторизации |
60 | Route::get('login', [LoginController::class, 'login'])->name('login'); | 60 | Route::get('login', [LoginController::class, 'login'])->name('login'); |
61 | 61 | ||
62 | //аутентификация | 62 | //аутентификация |
63 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); | 63 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); |
64 | 64 | ||
65 | //выход | 65 | //выход |
66 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); | 66 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); |
67 | 67 | ||
68 | //форма ввода адреса почты | 68 | //форма ввода адреса почты |
69 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); | 69 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); |
70 | 70 | ||
71 | //письмо на почту | 71 | //письмо на почту |
72 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); | 72 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); |
73 | 73 | ||
74 | //форма восстановления пароля | 74 | //форма восстановления пароля |
75 | Route::get('reset-password/token/{token}/email/{email}', | 75 | Route::get('reset-password/token/{token}/email/{email}', |
76 | [ResetPasswordController::class, 'form'] | 76 | [ResetPasswordController::class, 'form'] |
77 | )->name('reset-form'); | 77 | )->name('reset-form'); |
78 | 78 | ||
79 | //восстановление пароля | 79 | //восстановление пароля |
80 | Route::post('reset-password', | 80 | Route::post('reset-password', |
81 | [ResetPasswordController::class, 'reset'] | 81 | [ResetPasswordController::class, 'reset'] |
82 | )->name('reset-password'); | 82 | )->name('reset-password'); |
83 | 83 | ||
84 | //сообщение о необходимости проверки адреса почты | 84 | //сообщение о необходимости проверки адреса почты |
85 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); | 85 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); |
86 | 86 | ||
87 | //подтверждение адреса почты нового пользователя | 87 | //подтверждение адреса почты нового пользователя |
88 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) | 88 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) |
89 | ->where('token', '[a-f0-9]{32}') | 89 | ->where('token', '[a-f0-9]{32}') |
90 | ->where('id', '[0-9]+') | 90 | ->where('id', '[0-9]+') |
91 | ->name('verify-email'); | 91 | ->name('verify-email'); |
92 | });*/ | 92 | });*/ |
93 | 93 | ||
94 | //Личный кабинет пользователя | 94 | //Личный кабинет пользователя |
95 | Route::get('/home', [HomeController::class, 'index'])->name('home'); | 95 | Route::get('/home', [HomeController::class, 'index'])->name('home'); |
96 | 96 | ||
97 | /* | 97 | /* |
98 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { | 98 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { |
99 | $user = User::where('email',$request->input('email'))->first(); | 99 | $user = User::where('email',$request->input('email'))->first(); |
100 | 100 | ||
101 | $user->sendEmailVerificationNotification(); | 101 | $user->sendEmailVerificationNotification(); |
102 | 102 | ||
103 | return 'your response'; | 103 | return 'your response'; |
104 | })->middleware('throttle:6,1')->name('verification.resend'); | 104 | })->middleware('throttle:6,1')->name('verification.resend'); |
105 | */ | 105 | */ |
106 | 106 | ||
107 | // Авторизация, регистрация в админку | 107 | // Авторизация, регистрация в админку |
108 | Route::group([ | 108 | Route::group([ |
109 | 'as' => 'admin.', // имя маршрута, например auth.index | 109 | 'as' => 'admin.', // имя маршрута, например auth.index |
110 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 110 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
111 | 'middleware' => ['guest'], | 111 | 'middleware' => ['guest'], |
112 | ], function () { | 112 | ], function () { |
113 | // Форма регистрации | 113 | // Форма регистрации |
114 | Route::get('register', [AdminController::class, 'register'])->name('register'); | 114 | Route::get('register', [AdminController::class, 'register'])->name('register'); |
115 | 115 | ||
116 | // Создание пользователя | 116 | // Создание пользователя |
117 | Route::post('register', [AdminController::class, 'create'])->name('create'); | 117 | Route::post('register', [AdminController::class, 'create'])->name('create'); |
118 | //Форма входа | 118 | //Форма входа |
119 | Route::get('login', [AdminController::class, 'login'])->name('login'); | 119 | Route::get('login', [AdminController::class, 'login'])->name('login'); |
120 | 120 | ||
121 | // аутентификация | 121 | // аутентификация |
122 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); | 122 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); |
123 | 123 | ||
124 | }); | 124 | }); |
125 | 125 | ||
126 | // Личный кабинет админки | 126 | // Личный кабинет админки |
127 | Route::group([ | 127 | Route::group([ |
128 | 'as' => 'admin.', // имя маршрута, например auth.index | 128 | 'as' => 'admin.', // имя маршрута, например auth.index |
129 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 129 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
130 | 'middleware' => ['auth'], ['admin'], | 130 | 'middleware' => ['auth'], ['admin'], |
131 | ], function() { | 131 | ], function() { |
132 | 132 | ||
133 | // выход | 133 | // выход |
134 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); | 134 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); |
135 | 135 | ||
136 | // кабинет главная страница | 136 | // кабинет главная страница |
137 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); | 137 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); |
138 | 138 | ||
139 | // кабинет профиль админа - форма | 139 | // кабинет профиль админа - форма |
140 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); | 140 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); |
141 | // кабинет профиль админа - сохранение формы | 141 | // кабинет профиль админа - сохранение формы |
142 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); | 142 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); |
143 | 143 | ||
144 | //кабинет сообщения админа | 144 | //кабинет сообщения админа |
145 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); | 145 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); |
146 | 146 | ||
147 | 147 | ||
148 | // кабинет профиль - форма пароли | 148 | // кабинет профиль - форма пароли |
149 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); | 149 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); |
150 | // кабинет профиль - сохранение формы пароля | 150 | // кабинет профиль - сохранение формы пароля |
151 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); | 151 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); |
152 | 152 | ||
153 | 153 | ||
154 | // кабинет профиль пользователя - форма | 154 | // кабинет профиль пользователя - форма |
155 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); | 155 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); |
156 | // кабинет профиль пользователя - сохранение формы | 156 | // кабинет профиль пользователя - сохранение формы |
157 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); | 157 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); |
158 | 158 | ||
159 | // кабинет профиль работодатель - форма | 159 | // кабинет профиль работодатель - форма |
160 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); | 160 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); |
161 | // кабинет профиль работодатель - сохранение формы | 161 | // кабинет профиль работодатель - сохранение формы |
162 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); | 162 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); |
163 | // кабинет удаление профиль работодателя и юзера | 163 | // кабинет удаление профиль работодателя и юзера |
164 | Route::delete('employer-profile/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); | 164 | Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); |
165 | 165 | ||
166 | // кабинет профиль работник - форма | 166 | // кабинет профиль работник - форма |
167 | Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); | 167 | Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); |
168 | // кабинет профиль работник - сохранение формы | 168 | // кабинет профиль работник - сохранение формы |
169 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); | 169 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); |
170 | 170 | ||
171 | 171 | ||
172 | // кабинет настройки сайта - форма | 172 | // кабинет настройки сайта - форма |
173 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); | 173 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); |
174 | // кабинет настройки сайта сохранение формы | 174 | // кабинет настройки сайта сохранение формы |
175 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); | 175 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); |
176 | 176 | ||
177 | // кабинет - пользователи | 177 | // кабинет - пользователи |
178 | Route::get('users', [UsersController::class, 'index'])->name('users'); | 178 | Route::get('users', [UsersController::class, 'index'])->name('users'); |
179 | 179 | ||
180 | // кабинет - пользователи | 180 | // кабинет - пользователи |
181 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); | 181 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); |
182 | 182 | ||
183 | // кабинет - работодатели | 183 | // кабинет - работодатели |
184 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); | 184 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); |
185 | 185 | ||
186 | // кабинет - соискатели | 186 | // кабинет - соискатели |
187 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); | 187 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); |
188 | 188 | ||
189 | // кабинет - вакансии | 189 | // кабинет - вакансии |
190 | Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); | 190 | Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); |
191 | Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers'); | 191 | Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers'); |
192 | Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); | 192 | Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); |
193 | 193 | ||
194 | // кабинет - категории | 194 | // кабинет - категории |
195 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); | 195 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); |
196 | /* | 196 | /* |
197 | * CRUD-операции над Справочником Категории | 197 | * CRUD-операции над Справочником Категории |
198 | */ | 198 | */ |
199 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); | 199 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); |
200 | 200 | ||
201 | // CRUD-операции над справочником Категории для работодателей | 201 | // CRUD-операции над справочником Категории для работодателей |
202 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); | 202 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); |
203 | 203 | ||
204 | // CRUD-операции над справочником Образование | 204 | // CRUD-операции над справочником Образование |
205 | Route::resource('education', EducationController::class, ['except' => ['show']]); | 205 | Route::resource('education', EducationController::class, ['except' => ['show']]); |
206 | 206 | ||
207 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); | 207 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); |
208 | /* | 208 | /* |
209 | * кабинет - CRUD-операции по справочнику должности | 209 | * кабинет - CRUD-операции по справочнику должности |
210 | * | 210 | * |
211 | */ | 211 | */ |
212 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); | 212 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); |
213 | 213 | ||
214 | // кабинет - сообщения (чтение чужих) | 214 | // кабинет - сообщения (чтение чужих) |
215 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); | 215 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); |
216 | // кабинет - просмотр сообщения чужого (чтение) | 216 | // кабинет - просмотр сообщения чужого (чтение) |
217 | Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); | 217 | Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); |
218 | 218 | ||
219 | // кабинет - сообщения (админские) | 219 | // кабинет - сообщения (админские) |
220 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); | 220 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); |
221 | // кабинет - сообщения (админские) | 221 | // кабинет - сообщения (админские) |
222 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); | 222 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); |
223 | // кабинет - sql - конструкция запросов | 223 | // кабинет - sql - конструкция запросов |
224 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); | 224 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); |
225 | 225 | ||
226 | /* | 226 | /* |
227 | * Расписанный подход в описании каждой директорий групп пользователей. | 227 | * Расписанный подход в описании каждой директорий групп пользователей. |
228 | */ | 228 | */ |
229 | // кабинет - группы пользователей | 229 | // кабинет - группы пользователей |
230 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); | 230 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); |
231 | // кабинет - добавление форма группы пользователей | 231 | // кабинет - добавление форма группы пользователей |
232 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); | 232 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); |
233 | // кабинет - сохранение формы группы пользователей | 233 | // кабинет - сохранение формы группы пользователей |
234 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); | 234 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); |
235 | // кабинет - редактирование форма группы пользователей | 235 | // кабинет - редактирование форма группы пользователей |
236 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); | 236 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); |
237 | // кабинет - сохранение редактированной формы группы пользователей | 237 | // кабинет - сохранение редактированной формы группы пользователей |
238 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); | 238 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); |
239 | // кабинет - удаление группы пользователей | 239 | // кабинет - удаление группы пользователей |
240 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); | 240 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); |
241 | 241 | ||
242 | 242 | ||
243 | // кабинет - список админов | 243 | // кабинет - список админов |
244 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); | 244 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); |
245 | 245 | ||
246 | 246 | ||
247 | /////редактор////// кабинет - редактор сайта//////////////////////// | 247 | /////редактор////// кабинет - редактор сайта//////////////////////// |
248 | Route::get('editor-site', function() { | 248 | Route::get('editor-site', function() { |
249 | return view('admin.editor.index'); | 249 | return view('admin.editor.index'); |
250 | })->name('editor-site'); | 250 | })->name('editor-site'); |
251 | 251 | ||
252 | 252 | ||
253 | // кабинет - редактор шапки-футера сайта | 253 | // кабинет - редактор шапки-футера сайта |
254 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); | 254 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); |
255 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); | 255 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); |
256 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); | 256 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); |
257 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); | 257 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); |
258 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); | 258 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); |
259 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); | 259 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); |
260 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); | 260 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); |
261 | 261 | ||
262 | 262 | ||
263 | // кабинет - редактор должности на главной | 263 | // кабинет - редактор должности на главной |
264 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); | 264 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); |
265 | 265 | ||
266 | // кабинет - редактор работодатели на главной | 266 | // кабинет - редактор работодатели на главной |
267 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); | 267 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); |
268 | 268 | ||
269 | 269 | ||
270 | // кабинет - редактор seo-сайта | 270 | // кабинет - редактор seo-сайта |
271 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); | 271 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); |
272 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); | 272 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); |
273 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); | 273 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); |
274 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); | 274 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); |
275 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); | 275 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); |
276 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); | 276 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); |
277 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); | 277 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); |
278 | 278 | ||
279 | 279 | ||
280 | // кабинет - редактор страниц | 280 | // кабинет - редактор страниц |
281 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); | 281 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); |
282 | // кабинет - добавление страницы | 282 | // кабинет - добавление страницы |
283 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); | 283 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); |
284 | // кабинет - сохранение формы страницы | 284 | // кабинет - сохранение формы страницы |
285 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); | 285 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); |
286 | // кабинет - редактирование форма страницы | 286 | // кабинет - редактирование форма страницы |
287 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); | 287 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); |
288 | // кабинет - сохранение редактированной формы страницы | 288 | // кабинет - сохранение редактированной формы страницы |
289 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); | 289 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); |
290 | // кабинет - удаление страницы | 290 | // кабинет - удаление страницы |
291 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); | 291 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); |
292 | 292 | ||
293 | 293 | ||
294 | // кабинет - реклама сайта | 294 | // кабинет - реклама сайта |
295 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); | 295 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); |
296 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); | 296 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); |
297 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); | 297 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); |
298 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); | 298 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); |
299 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); | 299 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); |
300 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); | 300 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); |
301 | //////////////////////////////////////////////////////////////////////// | 301 | //////////////////////////////////////////////////////////////////////// |
302 | 302 | ||
303 | 303 | ||
304 | // кабинет - отзывы о работодателе для модерации | 304 | // кабинет - отзывы о работодателе для модерации |
305 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); | 305 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); |
306 | 306 | ||
307 | // Общая страница статистики | 307 | // Общая страница статистики |
308 | Route::get('statics', function () { | 308 | Route::get('statics', function () { |
309 | return view('admin.static.index'); | 309 | return view('admin.static.index'); |
310 | })->name('statics'); | 310 | })->name('statics'); |
311 | 311 | ||
312 | // кабинет - статистика работников | 312 | // кабинет - статистика работников |
313 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); | 313 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); |
314 | 314 | ||
315 | // кабинет - статистика вакансий работодателя | 315 | // кабинет - статистика вакансий работодателя |
316 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); | 316 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); |
317 | 317 | ||
318 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника | 318 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника |
319 | /* | 319 | /* |
320 | * CRUD-операции над справочником дипломы и документы | 320 | * CRUD-операции над справочником дипломы и документы |
321 | */ | 321 | */ |
322 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); | 322 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); |
323 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); | 323 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); |
324 | 324 | ||
325 | // кабинет - роли пользователя | 325 | // кабинет - роли пользователя |
326 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); | 326 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); |
327 | 327 | ||
328 | Route::get('logs', function() { | 328 | Route::get('logs', function() { |
329 | $files = Storage::files('logs/laravel.log'); | 329 | $files = Storage::files('logs/laravel.log'); |
330 | print_r($files); | 330 | print_r($files); |
331 | })->name('logs'); | 331 | })->name('logs'); |
332 | 332 | ||
333 | }); | 333 | }); |
334 | 334 | ||
335 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); | 335 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); |
336 | 336 | ||
337 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); | 337 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); |
338 | 338 | ||
339 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); | 339 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); |
340 | 340 |