Commit 2e3ed5c890ffc845df524f5f4d65005d6ee90a9e
Exists in
master
Merge branch 'master' of http://gitlab.nologostudio.ru/alarionov/rekamore-su
Showing 42 changed files Inline Diff
- app/Http/Controllers/Admin/Ad_EmployersController.php
- app/Http/Controllers/Admin/CategoryEmpController.php
- app/Http/Controllers/Admin/EducationController.php
- app/Http/Controllers/Admin/EmployersController.php
- app/Http/Controllers/Admin/GroupsController.php
- app/Http/Controllers/Admin/MsgAnswersController.php
- app/Http/Controllers/Admin/WorkersController.php
- app/Http/Requests/CategoryEmpRequest.php
- app/Http/Requests/EducationRequest.php
- app/Models/Ad_employer.php
- app/Models/CategoryEmp.php
- app/Models/Education.php
- app/Models/User.php
- app/Providers/MyServiceProvider.php
- database/migrations/2023_10_02_130611_alter_table_employers.php
- database/migrations/2023_10_02_130747_create_category_emps_table.php
- database/migrations/2023_10_02_132059_alter_table_ad_employers.php
- database/migrations/2023_10_03_114608_create_education_table.php
- database/migrations/2023_10_03_114801_alter_table_workers.php
- resources/views/admin/ad_employers/edit.blade.php
- resources/views/admin/ad_employers/index.blade.php
- resources/views/admin/category-emp/add.blade.php
- resources/views/admin/category-emp/edit.blade.php
- resources/views/admin/category-emp/form.blade.php
- resources/views/admin/category-emp/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/edit.blade.php
- resources/views/admin/employer/index.blade.php
- resources/views/admin/find_employer.blade.php
- resources/views/admin/find_worker.blade.php
- resources/views/admin/index.blade.php
- resources/views/admin/message/index.blade.php
- resources/views/admin/message/index2.blade.php
- resources/views/admin/message/index_ajax.blade.php
- resources/views/admin/messages.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/Ad_EmployersController.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\Models\Ad_employer; | 6 | use App\Models\Ad_employer; |
7 | use App\Models\Job_title; | ||
7 | use App\Models\User; | 8 | use App\Models\User; |
8 | use Illuminate\Http\Request; | 9 | use Illuminate\Http\Request; |
9 | use Illuminate\Support\Facades\Auth; | 10 | use Illuminate\Support\Facades\Auth; |
11 | use Illuminate\Support\Facades\Validator; | ||
10 | 12 | ||
11 | class Ad_EmployersController extends Controller | 13 | class Ad_EmployersController extends Controller |
12 | { | 14 | { |
13 | /** | 15 | /** |
14 | * Display a listing of the resource. | 16 | * Display a listing of the resource. |
15 | * | 17 | * |
16 | * @return \Illuminate\Http\Response | 18 | * @return \Illuminate\Http\Response |
17 | */ | 19 | */ |
18 | public function index(Request $request) | 20 | public function index(Request $request) |
19 | { | 21 | { |
20 | $title = 'Админка - Вакансии работодателей'; | 22 | $title = 'Админка - Вакансии работодателей'; |
21 | $ad_employers = Ad_employer::where('is_remove', '0')->paginate(15); | 23 | $ad_employers = Ad_employer::with('employer')->with('jobs') |
24 | ->where('is_remove', '0')->paginate(15); | ||
22 | 25 | ||
23 | return view('admin.ad_employers.index', compact('ad_employers', 'title')); | 26 | return view('admin.ad_employers.index', compact('ad_employers', 'title')); |
24 | 27 | ||
25 | } | 28 | } |
26 | 29 | ||
27 | /** | 30 | /** |
28 | * Show the form for creating a new resource. | 31 | * Show the form for creating a new resource. |
29 | * | 32 | * |
30 | * @return \Illuminate\Http\Response | 33 | * @return \Illuminate\Http\Response |
31 | */ | 34 | */ |
32 | public function create() | 35 | public function create() |
33 | { | 36 | { |
34 | // | 37 | // |
35 | } | 38 | } |
36 | 39 | ||
37 | /** | 40 | /** |
38 | * Store a newly created resource in storage. | 41 | * Store a newly created resource in storage. |
39 | * | 42 | * |
40 | * @param \Illuminate\Http\Request $request | 43 | * @param \Illuminate\Http\Request $request |
41 | * @return \Illuminate\Http\Response | 44 | * @return \Illuminate\Http\Response |
42 | */ | 45 | */ |
43 | public function store(Request $request) | 46 | public function store(Request $request) |
44 | { | 47 | { |
45 | // | 48 | // |
46 | } | 49 | } |
47 | 50 | ||
48 | /** | 51 | /** |
49 | * Display the specified resource. | 52 | * Display the specified resource. |
50 | * | 53 | * |
51 | * @param \App\Models\Ad_employer $ad_employer | 54 | * @param \App\Models\Ad_employer $ad_employer |
52 | * @return \Illuminate\Http\Response | 55 | * @return \Illuminate\Http\Response |
53 | */ | 56 | */ |
54 | public function show(Ad_employer $ad_employer) | 57 | public function show(Ad_employer $ad_employer) |
55 | { | 58 | { |
56 | // | 59 | // |
57 | } | 60 | } |
58 | 61 | ||
59 | /** | 62 | /** |
60 | * Show the form for editing the specified resource. | 63 | * Show the form for editing the specified resource. |
61 | * | 64 | * |
62 | * @param \App\Models\Ad_employer $ad_employer | 65 | * @param \App\Models\Ad_employer $ad_employer |
63 | * @return \Illuminate\Http\Response | 66 | * @return \Illuminate\Http\Response |
64 | */ | 67 | */ |
65 | public function edit(Ad_employer $ad_employer) | 68 | public function edit(Ad_employer $ad_employer) |
66 | { | 69 | { |
67 | // | 70 | $sel = Array(); |
71 | $job_titles = Job_title::active()->get(); | ||
72 | |||
73 | foreach ($ad_employer->jobs as $j) { | ||
74 | $sel[] = $j->id; | ||
75 | } | ||
76 | |||
77 | return view('admin.ad_employers.edit', compact('ad_employer', 'job_titles', 'sel')); | ||
68 | } | 78 | } |
69 | 79 | ||
70 | /** | 80 | /** |
71 | * Update the specified resource in storage. | 81 | * Update the specified resource in storage. |
72 | * | 82 | * |
73 | * @param \Illuminate\Http\Request $request | 83 | * @param \Illuminate\Http\Request $request |
74 | * @param \App\Models\Ad_employer $ad_employer | 84 | * @param \App\Models\Ad_employer $ad_employer |
75 | * @return \Illuminate\Http\Response | 85 | * @return \Illuminate\Http\Response |
76 | */ | 86 | */ |
77 | public function update(Request $request, Ad_employer $ad_employer) | 87 | public function update(Request $request, Ad_employer $ad_employer) |
78 | { | 88 | { |
79 | // | 89 | $params = $request->all(); |
90 | unset($params->position_work); | ||
91 | $rules = [ | ||
92 | 'name' => 'required|min:3', | ||
93 | ]; | ||
94 | $messages = [ | ||
95 | 'required' => 'Укажите обязательное поле', | ||
96 | ]; | ||
97 | $validator = Validator::make($params, $rules, $messages); | ||
98 | |||
99 | if ($validator->fails()) { | ||
100 | return redirect()->route('admin.edit-ad-employers', ['ad_employer' => $ad_employer->id]) | ||
101 | ->withErrors($validator); | ||
102 | } else { | ||
103 | $ad_employer->update($params); | ||
104 | $ad_employer->jobs()->sync($request->position_work); | ||
105 | |||
106 | return redirect()->route('admin.ad-employers') | ||
107 | ->with('success', 'Данные были успешно сохранены'); | ||
108 | } | ||
109 | return redirect()->route('admin.ad-employers'); | ||
80 | } | 110 | } |
81 | 111 | ||
82 | /** | 112 | /** |
83 | * Remove the specified resource from storage. | 113 | * Remove the specified resource from storage. |
84 | * | 114 | * |
85 | * @param \App\Models\Ad_employer $ad_employer | 115 | * @param \App\Models\Ad_employer $ad_employer |
86 | * @return \Illuminate\Http\Response | 116 | * @return \Illuminate\Http\Response |
87 | */ | 117 | */ |
88 | public function destroy(Ad_employer $ad_employer) | 118 | public function destroy(Ad_employer $ad_employer) |
89 | { | 119 | { |
90 | // | 120 | // |
91 | } | 121 | } |
92 | } | 122 | } |
93 | 123 |
app/Http/Controllers/Admin/CategoryEmpController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Http\Requests\CategoryEmpRequest; | ||
7 | use App\Models\CategoryEmp; | ||
8 | use Illuminate\Http\Request; | ||
9 | |||
10 | class CategoryEmpController extends Controller | ||
11 | { | ||
12 | /** | ||
13 | * Display a listing of the resource. | ||
14 | * | ||
15 | * @return \Illuminate\Http\Response | ||
16 | */ | ||
17 | public function index() | ||
18 | { | ||
19 | $category = CategoryEmp::query()->active()->paginate(15); | ||
20 | return view('admin.category-emp.index', compact('category')); | ||
21 | } | ||
22 | |||
23 | /** | ||
24 | * Show the form for creating a new resource. | ||
25 | * | ||
26 | * @return \Illuminate\Http\Response | ||
27 | */ | ||
28 | public function create() | ||
29 | { | ||
30 | return view('admin.category-emp.add'); | ||
31 | } | ||
32 | |||
33 | /** | ||
34 | * Store a newly created resource in storage. | ||
35 | * | ||
36 | * @param \Illuminate\Http\Request $request | ||
37 | * @return \Illuminate\Http\Response | ||
38 | */ | ||
39 | public function store(CategoryEmpRequest $request) | ||
40 | { | ||
41 | CategoryEmp::create($request->all()); | ||
42 | return redirect()->route('admin.category-emp.index'); | ||
43 | } | ||
44 | |||
45 | /** | ||
46 | * Display the specified resource. | ||
47 | * | ||
48 | * @param \App\Models\CategoryEmp $categoryEmp | ||
49 | * @return \Illuminate\Http\Response | ||
50 | */ | ||
51 | public function show(CategoryEmp $category_emp) | ||
52 | { | ||
53 | // | ||
54 | } | ||
55 | |||
56 | /** | ||
57 | * Show the form for editing the specified resource. | ||
58 | * | ||
59 | * @param \App\Models\CategoryEmp $categoryEmp | ||
60 | * @return \Illuminate\Http\Response | ||
61 | */ | ||
62 | public function edit(CategoryEmp $category_emp) | ||
63 | { | ||
64 | return view('admin.category-emp.edit', compact('category_emp')); | ||
65 | } | ||
66 | |||
67 | /** | ||
68 | * Update the specified resource in storage. | ||
69 | * | ||
70 | * @param \Illuminate\Http\Request $request | ||
71 | * @param \App\Models\CategoryEmp $categoryEmp | ||
72 | * @return \Illuminate\Http\Response | ||
73 | */ | ||
74 | public function update(CategoryEmpRequest $request, CategoryEmp $category_emp) | ||
75 | { | ||
76 | $category_emp->update($request->all()); | ||
77 | return redirect()->route('admin.category-emp.index'); | ||
78 | } | ||
79 | |||
80 | /** | ||
81 | * Remove the specified resource from storage. | ||
82 | * | ||
83 | * @param \App\Models\CategoryEmp $categoryEmp | ||
84 | * @return \Illuminate\Http\Response | ||
85 | */ | ||
86 | public function destroy(CategoryEmp $category_emp) | ||
87 | { | ||
88 | /*if (Auth::user()->id == 1) { | ||
89 | $category->delete(); | ||
90 | } else {*/ | ||
91 | $category_emp->update(['is_remove' => 1]); | ||
92 | //} | ||
93 | return redirect()->route('admin.category-emp.index'); | ||
94 | } | ||
95 | } | ||
96 |
app/Http/Controllers/Admin/EducationController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Http\Requests\EducationRequest; | ||
7 | use App\Models\Education; | ||
8 | use Illuminate\Http\Request; | ||
9 | |||
10 | class EducationController extends Controller | ||
11 | { | ||
12 | /** | ||
13 | * Display a listing of the resource. | ||
14 | * | ||
15 | * @return \Illuminate\Http\Response | ||
16 | */ | ||
17 | public function index() | ||
18 | { | ||
19 | $education = Education::query()->active()->paginate(15); | ||
20 | return view('admin.education.index', compact('education')); | ||
21 | } | ||
22 | |||
23 | /** | ||
24 | * Show the form for creating a new resource. | ||
25 | * | ||
26 | * @return \Illuminate\Http\Response | ||
27 | */ | ||
28 | public function create() | ||
29 | { | ||
30 | return view('admin.education.add'); | ||
31 | } | ||
32 | |||
33 | /** | ||
34 | * Store a newly created resource in storage. | ||
35 | * | ||
36 | * @param \Illuminate\Http\Request $request | ||
37 | * @return \Illuminate\Http\Response | ||
38 | */ | ||
39 | public function store(EducationRequest $request) | ||
40 | { | ||
41 | Education::create($request->all()); | ||
42 | return redirect()->route('admin.education.index'); | ||
43 | } | ||
44 | |||
45 | /** | ||
46 | * Display the specified resource. | ||
47 | * | ||
48 | * @param \App\Models\Education $education | ||
49 | * @return \Illuminate\Http\Response | ||
50 | */ | ||
51 | public function show(Education $education) | ||
52 | { | ||
53 | // | ||
54 | } | ||
55 | |||
56 | /** | ||
57 | * Show the form for editing the specified resource. | ||
58 | * | ||
59 | * @param \App\Models\Education $education | ||
60 | * @return \Illuminate\Http\Response | ||
61 | */ | ||
62 | public function edit(Education $education) | ||
63 | { | ||
64 | return view('admin.education.edit', compact('education')); | ||
65 | } | ||
66 | |||
67 | /** | ||
68 | * Update the specified resource in storage. | ||
69 | * | ||
70 | * @param \Illuminate\Http\Request $request | ||
71 | * @param \App\Models\Education $education | ||
72 | * @return \Illuminate\Http\Response | ||
73 | */ | ||
74 | public function update(EducationRequest $request, Education $education) | ||
75 | { | ||
76 | $education->update($request->all()); | ||
77 | return redirect()->route('admin.education.index'); | ||
78 | } | ||
79 | |||
80 | /** | ||
81 | * Remove the specified resource from storage. | ||
82 | * | ||
83 | * @param \App\Models\Education $education | ||
84 | * @return \Illuminate\Http\Response | ||
85 | */ | ||
86 | public function destroy(Education $education) | ||
87 | { | ||
88 | $education->update(['is_remove' => 1]); | ||
89 | return redirect()->route('admin.education.index'); | ||
90 | } | ||
91 | } | ||
92 |
app/Http/Controllers/Admin/EmployersController.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\Models\Ad_employer; | 6 | use App\Models\Ad_employer; |
7 | use App\Models\Answer; | 7 | use App\Models\Answer; |
8 | use App\Models\CategoryEmp; | ||
8 | use App\Models\Employer; | 9 | use App\Models\Employer; |
9 | use App\Models\Static_ad; | 10 | use App\Models\Static_ad; |
10 | use App\Models\User; | 11 | use App\Models\User; |
11 | use Illuminate\Http\Request; | 12 | use Illuminate\Http\Request; |
12 | use Illuminate\Support\Facades\DB; | 13 | use Illuminate\Support\Facades\DB; |
13 | use Illuminate\Support\Facades\Storage; | 14 | use Illuminate\Support\Facades\Storage; |
14 | use Illuminate\Support\Facades\Validator; | 15 | use Illuminate\Support\Facades\Validator; |
15 | 16 | ||
16 | class EmployersController extends Controller | 17 | class EmployersController extends Controller |
17 | { | 18 | { |
18 | public function index(Request $request) { | 19 | public function index(Request $request) { |
20 | //$all_employer = User::where('is_worker', '0')->count(); | ||
21 | |||
19 | if ($request->ajax()) { | 22 | if ($request->ajax()) { |
20 | $user = User::find($request->id); | 23 | $user = User::find($request->id); |
21 | $request->offsetUnset('id'); | 24 | $request->offsetUnset('id'); |
22 | $user->update($request->all()); | 25 | $user->update($request->all()); |
23 | } | 26 | } |
24 | 27 | ||
25 | /*$users = User::with('employers')->where('is_worker', '0'); | 28 | $users = User::with('employers')->select(['users.*','users.id as usr_id', 'emp.id as emp_id', 'emp.*'])->join('employers as emp','emp.user_id','users.id') |
26 | $find_key = ""; | ||
27 | if (isset($request->find)) { | ||
28 | $find_key = $request->find; | ||
29 | $users = $users->where(function($query) use($find_key) { | ||
30 | $query->Where('name', 'LIKE', "%$find_key%") | ||
31 | ->orWhere('email', 'LIKE', "%$find_key%") | ||
32 | ->orWhere('telephone', 'LIKE', "%$find_key%"); | ||
33 | }); | ||
34 | }*/ | ||
35 | |||
36 | $users = User::select(['users.*','users.id as usr_id', 'emp.id as emp_id', 'emp.*'])->join('employers as emp','emp.user_id','users.id') | ||
37 | ->where('users.is_worker', '0'); | 29 | ->where('users.is_worker', '0'); |
30 | $all_employer = $users->count(); | ||
31 | |||
32 | $find_cat = ""; | ||
33 | if (isset($request->category)) { | ||
34 | if ($request->category != 'Все категории') { | ||
35 | $users = $users->where('category', '=', $request->category); | ||
36 | $find_cat = $request->category; | ||
37 | } | ||
38 | } | ||
38 | $find_key = ""; | 39 | $find_key = ""; |
40 | |||
39 | if (isset($request->find)) { | 41 | if (isset($request->find)) { |
40 | $find_key = $request->find; | 42 | $find_key = $request->find; |
41 | $users = $users->where(function($query) use($find_key) { | 43 | $users = $users->where(function($query) use($find_key) { |
42 | $query->Where('users.name', 'LIKE', "%$find_key%") | 44 | $query->Where('users.name', 'LIKE', "%$find_key%") |
43 | ->orWhere('emp.email', 'LIKE', "%$find_key%") | 45 | ->orWhere('emp.email', 'LIKE', "%$find_key%") |
44 | ->orWhere('emp.telephone', 'LIKE', "%$find_key%"); | 46 | ->orWhere('emp.telephone', 'LIKE', "%$find_key%"); |
45 | }); | 47 | }); |
46 | } | 48 | } |
47 | 49 | ||
48 | //DB::enableQueryLog(); | 50 | //DB::enableQueryLog(); |
49 | $users = $users->paginate(15); | 51 | $users = $users->paginate(15); |
50 | //dd(DB::getQueryLog()); | 52 | //dd(DB::getQueryLog()); |
51 | 53 | ||
54 | $select_category = CategoryEmp::query()->active()->get(); | ||
55 | |||
52 | if ($request->ajax()) { | 56 | if ($request->ajax()) { |
53 | return view('admin.employer.index_ajax', compact('users')); | 57 | return view('admin.employer.index_ajax', compact('users')); |
54 | } else { | 58 | } else { |
55 | return view('admin.employer.index', compact('users', 'find_key')); | 59 | return view('admin.employer.index', compact('users', 'find_key', 'find_cat', 'all_employer', 'select_category')); |
56 | } | 60 | } |
57 | } | 61 | } |
58 | 62 | ||
59 | public function form_update_employer(Employer $employer) { | 63 | public function form_update_employer(Employer $employer) { |
60 | return view('admin.employer.edit', compact('employer')); | 64 | $select_category = CategoryEmp::query()->active()->get(); |
65 | return view('admin.employer.edit', compact('employer', 'select_category')); | ||
61 | } | 66 | } |
62 | 67 | ||
63 | public function update_employer(Employer $employer, Request $request) | 68 | public function update_employer(Employer $employer, Request $request) |
64 | { | 69 | { |
65 | $params = $request->all(); | 70 | $params = $request->all(); |
66 | unset($params['logo']); | 71 | unset($params['logo']); |
67 | unset($params['telephone']); | 72 | unset($params['telephone']); |
68 | unset($params['email']); | 73 | unset($params['email']); |
69 | unset($params['address']); | 74 | unset($params['address']); |
70 | unset($params['site']); | 75 | unset($params['site']); |
71 | unset($params['status_hidden']); | 76 | unset($params['status_hidden']); |
72 | unset($params['oficial_status']); | 77 | unset($params['oficial_status']); |
73 | unset($params['social_is']); | 78 | unset($params['social_is']); |
74 | unset($params['sending_is']); | 79 | unset($params['sending_is']); |
80 | unset($params['category']); | ||
81 | unset($params['comment_admin']); | ||
75 | 82 | ||
76 | $rules = [ | 83 | $rules = [ |
77 | 'name' => 'required|string|max:255', | 84 | 'name' => 'required|string|max:255', |
78 | ]; | 85 | ]; |
79 | 86 | ||
80 | $messages = [ | 87 | $messages = [ |
81 | 'required' => 'Укажите обязательное поле «:attribute»', | 88 | 'required' => 'Укажите обязательное поле «:attribute»', |
82 | 'confirmed' => 'Пароли не совпадают', | 89 | 'confirmed' => 'Пароли не совпадают', |
83 | 'email' => 'Введите корректный email', | 90 | 'email' => 'Введите корректный email', |
84 | 'min' => [ | 91 | 'min' => [ |
85 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 92 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
86 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 93 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
87 | ], | 94 | ], |
88 | 'max' => [ | 95 | 'max' => [ |
89 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 96 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
90 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 97 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
91 | ], | 98 | ], |
92 | ]; | 99 | ]; |
93 | 100 | ||
94 | $validator = Validator::make($params, $rules, $messages); | 101 | $validator = Validator::make($params, $rules, $messages); |
95 | 102 | ||
96 | if ($validator->fails()) { | 103 | if ($validator->fails()) { |
97 | return back()->withErrors($validator)->withInput(); //->route('admin.register') | 104 | return back()->withErrors($validator)->withInput(); //->route('admin.register') |
98 | 105 | ||
99 | } else { | 106 | } else { |
100 | 107 | ||
101 | //$user = User::find($employer->user_id); | 108 | //$user = User::find($employer->user_id); |
102 | $user_id = $employer->user_id; | 109 | $user_id = $employer->user_id; |
103 | $employer->telephone = $request->telephone; | 110 | $employer->telephone = $request->telephone; |
104 | $employer->email = $request->email; | 111 | $employer->email = $request->email; |
105 | $employer->address = $request->address; | 112 | $employer->address = $request->address; |
106 | $employer->site = $request->site; | 113 | $employer->site = $request->site; |
107 | $employer->text = $request->text; | 114 | $employer->text = $request->text; |
108 | $employer->status_hidden = $request->status_hidden; | 115 | $employer->status_hidden = $request->status_hidden; |
109 | $employer->oficial_status = $request->oficial_status; | 116 | $employer->oficial_status = $request->oficial_status; |
110 | $employer->social_is = $request->social_is; | 117 | $employer->social_is = $request->social_is; |
111 | $employer->sending_is = $request->sending_is; | 118 | $employer->sending_is = $request->sending_is; |
119 | $employer->category = $request->category; | ||
120 | $employer->comment_admin = $request->comment_admin; | ||
112 | 121 | ||
113 | if ($request->has('logo')) { | 122 | if ($request->has('logo')) { |
114 | if (!empty($employer->logo)) { | 123 | if (!empty($employer->logo)) { |
115 | Storage::delete($employer->logo); | 124 | Storage::delete($employer->logo); |
116 | } | 125 | } |
117 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); | 126 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); |
118 | } | 127 | } |
119 | $employer->save(); | 128 | $employer->save(); |
120 | 129 | ||
121 | $user = User::find($user_id); | 130 | $user = User::find($user_id); |
122 | $user->update($params); | 131 | $user->update($params); |
123 | 132 | ||
124 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) | 133 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) |
125 | ->with('success', 'Данные были успешно сохранены'); | 134 | ->with('success', 'Данные были успешно сохранены'); |
126 | } | 135 | } |
127 | } | 136 | } |
128 | 137 | ||
138 | // Удаление работодателя, вакансий и профиля юзера | ||
139 | public function delete_employer(Employer $employer, User $user) { | ||
140 | try { | ||
141 | if (!empty($employer)) { | ||
142 | $employer->ads()->delete(); | ||
143 | if (!empty($employer->logo)) { | ||
144 | Storage::delete($employer->logo); | ||
145 | } | ||
146 | $employer->delete(); | ||
147 | } | ||
148 | } finally { | ||
149 | $user->delete(); | ||
150 | } | ||
151 | |||
152 | return redirect()->route('admin.employers')->with('success', 'Данные были удалены о работодателе'); | ||
153 | } | ||
154 | |||
129 | // кабинет - отзывы о работодателе для модерации | 155 | // кабинет - отзывы о работодателе для модерации |
130 | public function answers(Request $request) { | 156 | public function answers(Request $request) { |
131 | if ($request->ajax()) { | 157 | if ($request->ajax()) { |
132 | $user = Answer::find($request->id); | 158 | $user = Answer::find($request->id); |
133 | $request->offsetUnset('id'); | 159 | $request->offsetUnset('id'); |
134 | $user->update($request->all()); | 160 | $user->update($request->all()); |
135 | } | 161 | } |
136 | 162 | ||
137 | $answers = Answer::query()->orderByDesc('id')->paginate(15); | 163 | $answers = Answer::query()->orderByDesc('id')->paginate(15); |
138 | 164 | ||
139 | if ($request->ajax()) { | 165 | if ($request->ajax()) { |
140 | return view('admin.answers.index_ajax', compact('answers')); | 166 | return view('admin.answers.index_ajax', compact('answers')); |
141 | } else { | 167 | } else { |
142 | return view('admin.answers.index', compact('answers')); | 168 | return view('admin.answers.index', compact('answers')); |
143 | } | 169 | } |
144 | } | 170 | } |
145 | 171 | ||
146 | // кабинет - статистика вакансий работодателя | 172 | // кабинет - статистика вакансий работодателя |
147 | public function static_ads(Request $request) { | 173 | public function static_ads(Request $request) { |
148 | $stat = Static_ad::with('ads'); | 174 | $stat = Static_ad::with('ads'); |
149 | $ads = Ad_employer::query()->active()->OrderBy('id')->get(); | 175 | $ads = Ad_employer::query()->active()->OrderBy('id')->get(); |
150 | $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); | 176 | $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); |
151 | if ($request->ajax()) { | 177 | if ($request->ajax()) { |
152 | if (isset($request->ad_employer_id)) | 178 | if (isset($request->ad_employer_id)) |
153 | if (!$request->ad_employer_id == "0") | 179 | if (!$request->ad_employer_id == "0") |
154 | $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); | 180 | $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); |
155 | if (isset($request->year_month)) { | 181 | if (isset($request->year_month)) { |
156 | if (!$request->year_month == "0") | 182 | if (!$request->year_month == "0") |
157 | $stat = $stat->Where('year_month', '=', $request->year_month); | 183 | $stat = $stat->Where('year_month', '=', $request->year_month); |
158 | } | 184 | } |
159 | } | 185 | } |
160 | 186 | ||
161 | $stat = $stat->OrderByDesc('year_month'); | 187 | $stat = $stat->OrderByDesc('year_month'); |
162 | $stat = $stat->paginate(15); | 188 | $stat = $stat->paginate(15); |
app/Http/Controllers/Admin/GroupsController.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\Models\Group_user; | 6 | use App\Models\Group_user; |
7 | use App\Models\Group_works; | 7 | use App\Models\Group_works; |
8 | use App\Models\User; | 8 | use App\Models\User; |
9 | use Illuminate\Database\Eloquent\Model; | 9 | use Illuminate\Database\Eloquent\Model; |
10 | use Illuminate\Http\Request; | 10 | use Illuminate\Http\Request; |
11 | use Illuminate\Support\Facades\Auth; | 11 | use Illuminate\Support\Facades\Auth; |
12 | use Illuminate\Support\Facades\Validator; | 12 | use Illuminate\Support\Facades\Validator; |
13 | 13 | ||
14 | class GroupsController extends Controller | 14 | class GroupsController extends Controller |
15 | { | 15 | { |
16 | public $limit = 15; | 16 | public $limit = 15; |
17 | 17 | ||
18 | // индексная страница | 18 | // индексная страница |
19 | public function index() { | 19 | public function index() { |
20 | $groups = Group_user::query()->active()->paginate(15); | 20 | $groups = Group_user::with('user')->with('ingroup')->active()->paginate(15); |
21 | return view('admin.groups.index', compact('groups')); | 21 | return view('admin.groups.index', compact('groups')); |
22 | } | 22 | } |
23 | 23 | ||
24 | // форма добавления группы | 24 | // форма добавления группы |
25 | public function add(Request $request) { | 25 | public function add(Request $request) { |
26 | /*$editor = Auth::user()->id; | 26 | /*$editor = Auth::user()->id; |
27 | $users = User::query()->active()->Offset(0)->limit($this->limit)->get(); | 27 | $users = User::query()->active()->Offset(0)->limit($this->limit)->get(); |
28 | return view('admin.groups.add', compact('editor', 'users'));*/ | 28 | return view('admin.groups.add', compact('editor', 'users'));*/ |
29 | $hide = false; | 29 | $hide = false; |
30 | $total = User::query()->active()->count(); | 30 | $total = User::query()->active()->count(); |
31 | $amt = ceil($total / $this->limit); | 31 | $amt = ceil($total / $this->limit); |
32 | if ($this->limit >= $total) $hide = true; | 32 | if ($this->limit >= $total) $hide = true; |
33 | if ($request->ajax()) { | 33 | if ($request->ajax()) { |
34 | $page = intval($request->page); | 34 | $page = intval($request->page); |
35 | $page = (empty($page)) ? 1 : $page; | 35 | $page = (empty($page)) ? 1 : $page; |
36 | $start = ($page != 1) ? $page * $this->limit - $this->limit : 0; | 36 | $start = ($page != 1) ? $page * $this->limit - $this->limit : 0; |
37 | $users = User::query()->active()->Offset($start)->limit($this->limit)->get(); | 37 | $users = User::query()->active()->Offset($start)->limit($this->limit)->get(); |
38 | return view('admin.groups.ajax_add', compact('users', 'amt')); | 38 | return view('admin.groups.ajax_add', compact('users', 'amt')); |
39 | 39 | ||
40 | } else { | 40 | } else { |
41 | $editor = Auth::user()->id; | 41 | $editor = Auth::user()->id; |
42 | $users = User::query()->active()->Offset(0)->limit($this->limit)->get(); | 42 | $users = User::query()->active()->Offset(0)->limit($this->limit)->get(); |
43 | return view('admin.groups.add', compact('editor', 'users', 'amt', 'hide')); | 43 | return view('admin.groups.add', compact('editor', 'users', 'amt', 'hide')); |
44 | } | 44 | } |
45 | } | 45 | } |
46 | 46 | ||
47 | // форма сохранения добавленной группы | 47 | // форма сохранения добавленной группы |
48 | public function store(Request $request) { | 48 | public function store(Request $request) { |
49 | $rules = [ | 49 | $rules = [ |
50 | 'name_group' => 'required|min:3', | 50 | 'name_group' => 'required|min:3', |
51 | ]; | 51 | ]; |
52 | $messages = [ | 52 | $messages = [ |
53 | 'required' => 'Укажите обязательное поле', | 53 | 'required' => 'Укажите обязательное поле', |
54 | ]; | 54 | ]; |
55 | $validator = Validator::make($request->all(), $rules, $messages); | 55 | $validator = Validator::make($request->all(), $rules, $messages); |
56 | 56 | ||
57 | if ($validator->fails()) { | 57 | if ($validator->fails()) { |
58 | return redirect()->route('admin.add-group') | 58 | return redirect()->route('admin.add-group') |
59 | ->withErrors($validator); | 59 | ->withErrors($validator); |
60 | } else { | 60 | } else { |
61 | $id_group = Group_user::create($request->all())->id; | 61 | $id_group = Group_user::create($request->all())->id; |
62 | foreach ($request->usergroup as $user) { | 62 | foreach ($request->usergroup as $user) { |
63 | $people = new Group_works(); | 63 | $people = new Group_works(); |
64 | $people->group_user_id = $id_group; | 64 | $people->group_user_id = $id_group; |
65 | $people->user_id = $user; | 65 | $people->user_id = $user; |
66 | $people->save(); | 66 | $people->save(); |
67 | } | 67 | } |
68 | return redirect()->route('admin.groups') | 68 | return redirect()->route('admin.groups') |
69 | ->with('success', 'Данные были успешно сохранены'); | 69 | ->with('success', 'Данные были успешно сохранены'); |
70 | } | 70 | } |
71 | return redirect()->route('admin.groups'); | 71 | return redirect()->route('admin.groups'); |
72 | } | 72 | } |
73 | 73 | ||
74 | // форма редактирования группы | 74 | // форма редактирования группы |
75 | public function edit(Group_user $group, Request $request) { | 75 | public function edit(Group_user $group, Request $request) { |
76 | //https://snipp.ru/php/loading-scrolling | 76 | //https://snipp.ru/php/loading-scrolling |
77 | $hide = false; | 77 | $hide = false; |
78 | $total = User::query()->active()->count(); | 78 | $total = User::query()->active()->count(); |
79 | $amt = ceil($total / $this->limit); | 79 | $amt = ceil($total / $this->limit); |
80 | if ($this->limit >= $total) $hide = true; | 80 | if ($this->limit >= $total) $hide = true; |
81 | 81 | ||
82 | if ($request->ajax()) { | 82 | if ($request->ajax()) { |
83 | $page = intval($request->page); | 83 | $page = intval($request->page); |
84 | $page = (empty($page)) ? 1 : $page; | 84 | $page = (empty($page)) ? 1 : $page; |
85 | $start = ($page != 1) ? $page * $this->limit - $this->limit : 0; | 85 | $start = ($page != 1) ? $page * $this->limit - $this->limit : 0; |
86 | $users = User::query()->active()->Offset($start)->limit($this->limit)->get(); | 86 | $users = User::query()->active()->Offset($start)->limit($this->limit)->get(); |
87 | return view('admin.groups.ajax', compact('users', 'group', 'amt')); | 87 | return view('admin.groups.ajax', compact('users', 'group', 'amt')); |
88 | 88 | ||
89 | } else { | 89 | } else { |
90 | $editor = Auth::user()->id; | 90 | $editor = Auth::user()->id; |
91 | $users = User::query()->active()->Offset(0)->limit($this->limit)->get(); | 91 | $users = User::query()->active()->Offset(0)->limit($this->limit)->get(); |
92 | return view('admin.groups.edit', compact('editor', 'group', 'users', 'amt', 'hide')); | 92 | return view('admin.groups.edit', compact('editor', 'group', 'users', 'amt', 'hide')); |
93 | } | 93 | } |
94 | } | 94 | } |
95 | 95 | ||
96 | // форма сохранения редактированной группы | 96 | // форма сохранения редактированной группы |
97 | public function update(Group_user $group, Request $request) { | 97 | public function update(Group_user $group, Request $request) { |
98 | $params = $request->all(); | 98 | $params = $request->all(); |
99 | unset($params['usergroup']); | 99 | unset($params['usergroup']); |
100 | $rules = [ | 100 | $rules = [ |
101 | 'name_group' => 'required|min:3', | 101 | 'name_group' => 'required|min:3', |
102 | ]; | 102 | ]; |
103 | $messages = [ | 103 | $messages = [ |
104 | 'required' => 'Укажите обязательное поле', | 104 | 'required' => 'Укажите обязательное поле', |
105 | ]; | 105 | ]; |
106 | $validator = Validator::make($request->all(), $rules, $messages); | 106 | $validator = Validator::make($request->all(), $rules, $messages); |
107 | 107 | ||
108 | if ($validator->fails()) { | 108 | if ($validator->fails()) { |
109 | return redirect()->route('admin.edit-group', ['group' => $group->id]) | 109 | return redirect()->route('admin.edit-group', ['group' => $group->id]) |
110 | ->withErrors($validator); | 110 | ->withErrors($validator); |
111 | } else { | 111 | } else { |
112 | $group->update($request->all()); | 112 | $group->update($request->all()); |
113 | $group->ingroup()->sync($request->usergroup); | 113 | $group->ingroup()->sync($request->usergroup); |
114 | /*if ($request->usergroup->count()) { | 114 | /*if ($request->usergroup->count()) { |
115 | foreach ($request->usergroup as $us) { | 115 | foreach ($request->usergroup as $us) { |
116 | Group_works | 116 | Group_works |
117 | } | 117 | } |
118 | }*/ | 118 | }*/ |
119 | 119 | ||
120 | return redirect()->route('admin.groups') | 120 | return redirect()->route('admin.groups') |
121 | ->with('success', 'Данные были успешно сохранены'); | 121 | ->with('success', 'Данные были успешно сохранены'); |
122 | } | 122 | } |
123 | return redirect()->route('admin.groups'); | 123 | return redirect()->route('admin.groups'); |
124 | } | 124 | } |
125 | 125 | ||
126 | public function destroy(Group_user $group) { | 126 | public function destroy(Group_user $group) { |
127 | $group->update(['is_remove' => 1]); | 127 | $group->update(['is_remove' => 1]); |
128 | 128 | ||
129 | return redirect()->route('admin.groups'); | 129 | return redirect()->route('admin.groups'); |
130 | } | 130 | } |
131 | } | 131 | } |
132 | 132 |
app/Http/Controllers/Admin/MsgAnswersController.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\Models\Message; | 6 | use App\Models\Message; |
7 | use App\Models\User; | 7 | use App\Models\User; |
8 | use Illuminate\Http\Request; | 8 | use Illuminate\Http\Request; |
9 | use Illuminate\Support\Facades\Auth; | 9 | use Illuminate\Support\Facades\Auth; |
10 | use Illuminate\Support\Facades\DB; | 10 | use Illuminate\Support\Facades\DB; |
11 | use Illuminate\Support\Facades\Validator; | 11 | use Illuminate\Support\Facades\Validator; |
12 | 12 | ||
13 | class MsgAnswersController extends Controller | 13 | class MsgAnswersController extends Controller |
14 | { | 14 | { |
15 | public function messages() { | 15 | public function messages() { |
16 | $Msgs = Message::query()->orderByDesc('created_at')->paginate(25); | 16 | $Msgs = Message::with('user_from')->with('user_to')->with('response')->orderByDesc('created_at')->paginate(25); |
17 | 17 | ||
18 | return view('admin.messages', compact('Msgs')); | 18 | return view('admin.messages', compact('Msgs')); |
19 | } | 19 | } |
20 | 20 | ||
21 | public function admin_messages(Request $request) { | 21 | public function admin_messages(Request $request) { |
22 | if ($request->ajax()) { | 22 | if ($request->ajax()) { |
23 | $msg = Message::find($request->id); | 23 | $msg = Message::find($request->id); |
24 | $msg->flag_new = !($request->flag_new); | 24 | $msg->flag_new = !($request->flag_new); |
25 | $msg->save(); | 25 | $msg->save(); |
26 | } | 26 | } |
27 | 27 | ||
28 | $id_admin = Auth::user()->id; | 28 | $id_admin = Auth::user()->id; |
29 | $users = User::query()->OrderBy('name')->get(); | 29 | $users = User::query()->OrderBy('name')->get(); |
30 | 30 | ||
31 | $Msgs = Message::query()->where('user_id', '=', $id_admin) | 31 | $Msgs = Message::with('user_from')->with('user_to')->with('response') |
32 | ->where('user_id', '=', $id_admin) | ||
32 | ->orWhere('to_user_id', '=', $id_admin) | 33 | ->orWhere('to_user_id', '=', $id_admin) |
33 | ->orderByDesc('created_at')->paginate(5); | 34 | ->orderByDesc('created_at')->paginate(5); |
34 | 35 | ||
35 | if ($request->ajax()) | 36 | if ($request->ajax()) |
36 | return view('admin.message.index_ajax', compact('Msgs', 'id_admin', 'users')); | 37 | return view('admin.message.index_ajax', compact('Msgs', 'id_admin', 'users')); |
37 | else | 38 | else |
38 | return view('admin.message.index', compact('Msgs', 'id_admin', 'users')); | 39 | return view('admin.message.index', compact('Msgs', 'id_admin', 'users')); |
39 | } | 40 | } |
40 | 41 | ||
41 | public function messages_sql(Request $request) { | 42 | public function messages_sql(Request $request) { |
42 | $id = Auth::user()->id; | 43 | $id = Auth::user()->id; |
43 | DB::enableQueryLog(); | 44 | DB::enableQueryLog(); |
44 | //$query = DB::select('select * from users where id = :id', ['id' => 1]); | 45 | //$query = DB::select('select * from users where id = :id', ['id' => 1]); |
45 | $query = DB::select(DB::raw('SELECT u1.name as "To-user", u2.name as "From-user", m1.`text`, m1.created_at | 46 | $query = DB::select(DB::raw('SELECT u1.name as "To-user", u2.name as "From-user", m1.`text`, m1.created_at |
46 | FROM messages m1 | 47 | FROM messages m1 |
47 | JOIN (SELECT MAX(id) id FROM messages | 48 | JOIN (SELECT MAX(id) id FROM messages |
48 | GROUP BY LEAST(user_id, to_user_id), | 49 | GROUP BY LEAST(user_id, to_user_id), |
49 | GREATEST(user_id, to_user_id) | 50 | GREATEST(user_id, to_user_id) |
50 | ) m2 USING (id) | 51 | ) m2 USING (id) |
51 | JOIN users u1 ON u1.id = m1.user_id | 52 | JOIN users u1 ON u1.id = m1.user_id |
52 | JOIN users u2 ON u2.id = m1.to_user_id | 53 | JOIN users u2 ON u2.id = m1.to_user_id |
53 | Where ((m1.user_id = :uid) or (m1.to_user_id = :uid2)) | 54 | Where ((m1.user_id = :uid) or (m1.to_user_id = :uid2)) |
54 | '), ['uid' => $id, 'uid2' => $id]); | 55 | '), ['uid' => $id, 'uid2' => $id]); |
55 | //dump(DB::getQueryLog()); | 56 | //dump(DB::getQueryLog()); |
56 | dd($query); | 57 | dd($query); |
57 | return; | 58 | return; |
58 | } | 59 | } |
59 | 60 | ||
60 | public function admin_messages_post(Request $request) { | 61 | public function admin_messages_post(Request $request) { |
61 | $rules = [ | 62 | $rules = [ |
62 | 'title' => 'required|min:3|max:255', | 63 | 'title' => 'required|min:3|max:255', |
63 | 'text' => 'required|min:1' | 64 | 'text' => 'required|min:1' |
64 | ]; | 65 | ]; |
65 | 66 | ||
66 | $messages = [ | 67 | $messages = [ |
67 | 'required' => 'Поле не может быть пустым!', | 68 | 'required' => 'Поле не может быть пустым!', |
68 | ]; | 69 | ]; |
69 | 70 | ||
70 | $validator = Validator::make($request->all(), $rules, $messages); | 71 | $validator = Validator::make($request->all(), $rules, $messages); |
71 | 72 | ||
72 | if ($validator->fails()) { | 73 | if ($validator->fails()) { |
73 | return redirect()->route('admin.admin-messages')->withErrors($validator); | 74 | return redirect()->route('admin.admin-messages')->withErrors($validator); |
74 | } else { | 75 | } else { |
75 | $params = $request->all(); | 76 | $params = $request->all(); |
76 | $id_admin = Auth::user()->id; | 77 | $id_admin = Auth::user()->id; |
77 | if ($request->has('file')) { | 78 | if ($request->has('file')) { |
78 | $params['file'] = $request->file('file')->store("upload/".$id_admin, 'public'); | 79 | $params['file'] = $request->file('file')->store("upload/".$id_admin, 'public'); |
79 | } | 80 | } |
80 | Message::create($params); | 81 | Message::create($params); |
81 | return redirect()->route('admin.admin-messages'); | 82 | return redirect()->route('admin.admin-messages'); |
82 | } | 83 | } |
83 | } | 84 | } |
84 | } | 85 | } |
85 | 86 |
app/Http/Controllers/Admin/WorkersController.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\Models\Company; | 6 | use App\Models\Company; |
7 | use App\Models\Job_title; | 7 | use App\Models\Job_title; |
8 | use App\Models\Static_worker; | 8 | use App\Models\Static_worker; |
9 | use App\Models\User; | 9 | use App\Models\User; |
10 | use App\Models\Worker; | 10 | use App\Models\Worker; |
11 | use Illuminate\Database\Eloquent\Builder; | ||
11 | use Illuminate\Http\Request; | 12 | use Illuminate\Http\Request; |
13 | use Illuminate\Support\Facades\DB; | ||
12 | use Illuminate\Support\Facades\Storage; | 14 | use Illuminate\Support\Facades\Storage; |
13 | use Illuminate\Support\Facades\Validator; | 15 | use Illuminate\Support\Facades\Validator; |
14 | 16 | ||
15 | class WorkersController extends Controller | 17 | class WorkersController extends Controller |
16 | { | 18 | { |
17 | public function index(Request $request) { | 19 | public function index(Request $request) { |
18 | if ($request->ajax()) { | 20 | if ($request->ajax()) { |
19 | $user = User::find($request->id); | 21 | $user = User::find($request->id); |
20 | $request->offsetUnset('id'); | 22 | $request->offsetUnset('id'); |
21 | $user->update($request->all()); | 23 | $user->update($request->all()); |
22 | } | 24 | } |
23 | 25 | ||
24 | $users = User::where('is_worker', '1'); | 26 | $status_work = Job_title::query()->active()->orderBy('name')->get(); |
27 | $users = User::with('jobtitles')->where('is_worker', '1'); | ||
28 | |||
29 | $find_status_work = ""; | ||
30 | if (isset($request->status_work)) { | ||
31 | $find_status_work = $request->status_work; | ||
32 | //$users = $users->where('position_work', '=', $find_status_work); | ||
33 | |||
34 | /*if ($request->status_work > 0) | ||
35 | $users = $users->with(['workers' => function($query) use ($find_status_work){ | ||
36 | $query->where('position_work', $find_status_work); | ||
37 | }]); | ||
38 | else | ||
39 | $users = $users->with('workers');*/ | ||
40 | |||
41 | /*$users = $users->where(function($query) use($find_status_work) { | ||
42 | $query->with(['workers' => function($query1) use ($find_status_work){ | ||
43 | $query1->where('position_work', $find_status_work); | ||
44 | }]); | ||
45 | });*/ | ||
46 | if ($request->status_work > 0) { | ||
47 | $users = $users->with('workers')-> | ||
48 | whereHas('workers', | ||
49 | function (Builder $query) use ($find_status_work) { | ||
50 | $query->where('position_work', $find_status_work); | ||
51 | } | ||
52 | ); | ||
53 | } else { | ||
54 | $users = $users->with('workers'); | ||
55 | } | ||
56 | |||
57 | } else { | ||
58 | $users = $users->with('workers'); | ||
59 | } | ||
60 | |||
25 | $find_key = ""; | 61 | $find_key = ""; |
26 | if (isset($request->find)) { | 62 | if (isset($request->find)) { |
27 | $find_key = $request->find; | 63 | $find_key = $request->find; |
28 | $users = $users->where(function($query) use($find_key) { | 64 | $users = $users->where(function($query) use($find_key) { |
29 | $query->Where('name_man', 'LIKE', "%$find_key%") | 65 | $query->Where('name_man', 'LIKE', "%$find_key%") |
30 | ->orWhere('email', 'LIKE', "%$find_key%") | 66 | ->orWhere('email', 'LIKE', "%$find_key%") |
31 | ->orWhere('telephone', 'LIKE', "%$find_key%"); | 67 | ->orWhere('telephone', 'LIKE', "%$find_key%"); |
32 | }); | 68 | }); |
33 | } | 69 | } |
34 | 70 | ||
35 | $users = $users->paginate(15); | 71 | $users = $users->paginate(15); |
36 | 72 | ||
73 | /* | ||
74 | $Arr = array(); | ||
75 | $where = ''; | ||
76 | $find_status_work = ""; | ||
77 | if (isset($request->status_work)) { | ||
78 | $find_status_work = $request->status_work; | ||
79 | //$users = $users->where('position_work', '=', $find_status_work); | ||
80 | $where.= ' and (w.position_work = :uid1)'; | ||
81 | $Arr['uid1'] = $find_status_work; | ||
82 | } | ||
83 | |||
84 | $find_key = ""; | ||
85 | if (isset($request->find)) { | ||
86 | $find_key = $request->find; | ||
87 | /*$users = $users->where(function($query) use($find_key) { | ||
88 | $query->Where('name_man', 'LIKE', "%$find_key%") | ||
89 | ->orWhere('email', 'LIKE', "%$find_key%") | ||
90 | ->orWhere('telephone', 'LIKE', "%$find_key%"); | ||
91 | });*/ | ||
92 | /*$where.= " and ((u.name_man LIKE %:uid2%) or (w.email LIKE %:uid2%) or (w.telephone LIKE %:uid2%))"; | ||
93 | $Arr['uid2'] = $find_key; | ||
94 | } | ||
95 | |||
96 | //$users = $users->paginate(15); | ||
97 | |||
98 | //DB::enableQueryLog(); | ||
99 | $users = DB::select('SELECT u.*, w.*, j.* | ||
100 | FROM workers w | ||
101 | JOIN users u ON u.id = w.user_id | ||
102 | JOIN job_titles j ON j.id = w.position_work | ||
103 | Where (u.is_worker = 1) | ||
104 | '.$where, $Arr); | ||
105 | //dump(DB::getQueryLog()); | ||
106 | dd($users); | ||
107 | */ | ||
108 | |||
37 | if ($request->ajax()) { | 109 | if ($request->ajax()) { |
38 | return view('admin.worker.index_ajax', compact('users')); | 110 | return view('admin.worker.index_ajax', compact('users')); |
39 | } else { | 111 | } else { |
40 | return view('admin.worker.index', compact('users', 'find_key')); | 112 | return view('admin.worker.index', compact('users', 'find_key', 'find_status_work', 'status_work')); |
41 | } | 113 | } |
42 | } | 114 | } |
43 | 115 | ||
44 | public function form_edit_worker(Worker $worker) { | 116 | public function form_edit_worker(Worker $worker) { |
45 | $job_titles = Job_title::query()->active()->orderBy('name')->get(); | 117 | $job_titles = Job_title::query()->active()->orderBy('name')->get(); |
46 | 118 | ||
47 | $time_end_anketa = 'Бессрочно'; | 119 | $time_end_anketa = 'Бессрочно'; |
48 | if (!empty($worker->updated_at)) { | 120 | if (!empty($worker->updated_at)) { |
49 | $long_days = Company::find(1)->time_resume; | 121 | $long_days = Company::find(1)->time_resume; |
50 | $time_end_anketa = date("d.m.Y H:i:s", strtotime($worker->updated_at . "+$long_days days")); | 122 | $time_end_anketa = date("d.m.Y H:i:s", strtotime($worker->updated_at . "+$long_days days")); |
51 | } | 123 | } |
52 | return view('admin.worker.edit', compact('worker', 'job_titles', 'time_end_anketa')); | 124 | return view('admin.worker.edit', compact('worker', 'job_titles', 'time_end_anketa')); |
53 | } | 125 | } |
54 | 126 | ||
55 | public function form_update_worker(Request $request, Worker $worker) | 127 | public function form_update_worker(Request $request, Worker $worker) |
56 | { | 128 | { |
57 | $params = $request->all(); | 129 | $params = $request->all(); |
58 | 130 | ||
59 | $rules = [ | 131 | $rules = [ |
60 | 'email' => 'email|string|max:255', | 132 | 'email' => 'email|string|max:255', |
61 | //'photo' => 'mimes:jpeg,jpg,png|max:15000', | 133 | //'photo' => 'mimes:jpeg,jpg,png|max:15000', |
62 | ]; | 134 | ]; |
63 | 135 | ||
64 | $messages = [ | 136 | $messages = [ |
65 | 'required' => 'Укажите обязательное поле «:attribute»', | 137 | 'required' => 'Укажите обязательное поле «:attribute»', |
66 | 'confirmed' => 'Пароли не совпадают', | 138 | 'confirmed' => 'Пароли не совпадают', |
67 | 'email' => 'Введите корректный email', | 139 | 'email' => 'Введите корректный email', |
68 | 'min' => [ | 140 | 'min' => [ |
69 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 141 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
70 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 142 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
71 | ], | 143 | ], |
72 | 'max' => [ | 144 | 'max' => [ |
73 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 145 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
74 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 146 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
75 | ], | 147 | ], |
76 | ]; | 148 | ]; |
77 | 149 | ||
78 | $validator = Validator::make($params, $rules, $messages); | 150 | $validator = Validator::make($params, $rules, $messages); |
79 | 151 | ||
80 | if ($validator->fails()) { | 152 | if ($validator->fails()) { |
81 | return back()->withErrors($validator)->withInput(); | 153 | return back()->withErrors($validator)->withInput(); |
82 | } else { | 154 | } else { |
83 | $user_id = $worker->user_id; | 155 | $user_id = $worker->user_id; |
84 | if ($request->has('photo')) { | 156 | if ($request->has('photo')) { |
85 | if (!empty($worker->photo)) { | 157 | if (!empty($worker->photo)) { |
86 | Storage::delete($worker->photo); | 158 | Storage::delete($worker->photo); |
87 | } | 159 | } |
88 | if (!empty($request->photo)) | 160 | if (!empty($request->photo)) |
89 | $params['photo'] = $request->file('photo')->store("workers/$user_id", 'public'); | 161 | $params['photo'] = $request->file('photo')->store("workers/$user_id", 'public'); |
90 | } | 162 | } |
91 | $worker->update($params); | 163 | $worker->update($params); |
92 | 164 | ||
93 | return redirect()->route('admin.workers'); | 165 | return redirect()->route('admin.workers'); |
94 | } | 166 | } |
95 | } | 167 | } |
96 | 168 | ||
97 | // кабинет - статистика работников | 169 | // кабинет - статистика работников |
98 | public function static_workers(Request $request) { | 170 | public function static_workers(Request $request) { |
99 | $stat = Static_worker::with('users'); | 171 | $stat = Static_worker::with('users'); |
100 | //->join('users', 'users.id', '=', 'static_workers.user_id'); | 172 | //->join('users', 'users.id', '=', 'static_workers.user_id'); |
101 | $users = User::query()->active()->OrderBy('id')->get(); | 173 | $users = User::query()->active()->OrderBy('id')->get(); |
102 | $periods = Static_worker::query()->distinct('year_month')->select('year_month')->get(); | 174 | $periods = Static_worker::query()->distinct('year_month')->select('year_month')->get(); |
103 | if ($request->ajax()) { | 175 | if ($request->ajax()) { |
104 | if (isset($request->user_id)) | 176 | if (isset($request->user_id)) |
105 | if (!$request->user_id == "0") | 177 | if (!$request->user_id == "0") |
106 | $stat = $stat->Where('user_id', '=', $request->user_id); | 178 | $stat = $stat->Where('user_id', '=', $request->user_id); |
107 | if (isset($request->year_month)) { | 179 | if (isset($request->year_month)) { |
108 | if (!$request->year_month == "0") | 180 | if (!$request->year_month == "0") |
109 | $stat = $stat->Where('year_month', '=', $request->year_month); | 181 | $stat = $stat->Where('year_month', '=', $request->year_month); |
110 | } | 182 | } |
111 | } | 183 | } |
112 | 184 | ||
113 | $stat = $stat->OrderByDesc('year_month'); | 185 | $stat = $stat->OrderByDesc('year_month'); |
114 | //->OrderBy('users.name'); | 186 | //->OrderBy('users.name'); |
115 | //OrderBy('users.name')-> | 187 | //OrderBy('users.name')-> |
116 | /*$stat->implode() loadMissing(['users' => function (Builder $query) { | 188 | /*$stat->implode() loadMissing(['users' => function (Builder $query) { |
117 | $query->orderBy('name', 'asc'); | 189 | $query->orderBy('name', 'asc'); |
118 | }]);*/ | 190 | }]);*/ |
119 | 191 | ||
120 | $stat = $stat->paginate(15); | 192 | $stat = $stat->paginate(15); |
121 | 193 | ||
122 | if ($request->ajax()) | 194 | if ($request->ajax()) |
123 | return view('admin.static.index_workers_ajax', compact('stat')); | 195 | return view('admin.static.index_workers_ajax', compact('stat')); |
124 | else | 196 | else |
125 | return view('admin.static.index_workers', compact('stat', 'users', 'periods')); | 197 | return view('admin.static.index_workers', compact('stat', 'users', 'periods')); |
126 | 198 | ||
127 | } | 199 | } |
128 | 200 | ||
129 | } | 201 | } |
130 | 202 |
app/Http/Requests/CategoryEmpRequest.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Requests; | ||
4 | |||
5 | use Illuminate\Foundation\Http\FormRequest; | ||
6 | |||
7 | class CategoryEmpRequest extends FormRequest | ||
8 | { | ||
9 | /** | ||
10 | * Determine if the user is authorized to make this request. | ||
11 | * | ||
12 | * @return bool | ||
13 | */ | ||
14 | public function authorize() | ||
15 | { | ||
16 | return true; | ||
17 | } | ||
18 | |||
19 | /** | ||
20 | * Get the validation rules that apply to the request. | ||
21 | * | ||
22 | * @return array<string, mixed> | ||
23 | */ | ||
24 | public function rules() | ||
25 | { | ||
26 | return [ | ||
27 | 'name' => 'required|min:3|max:255', | ||
28 | ]; | ||
29 | } | ||
30 | |||
31 | public function messages() { | ||
32 | return [ | ||
33 | 'required' => 'Поле :attribute обязательно для ввода', | ||
34 | 'min' => [ | ||
35 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | ||
36 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | ||
37 | ], | ||
38 | 'max' => [ | ||
39 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | ||
40 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | ||
41 | ], | ||
42 | |||
43 | ]; | ||
44 | } | ||
45 | } | ||
46 |
app/Http/Requests/EducationRequest.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Requests; | ||
4 | |||
5 | use Illuminate\Foundation\Http\FormRequest; | ||
6 | |||
7 | class EducationRequest extends FormRequest | ||
8 | { | ||
9 | /** | ||
10 | * Determine if the user is authorized to make this request. | ||
11 | * | ||
12 | * @return bool | ||
13 | */ | ||
14 | public function authorize() | ||
15 | { | ||
16 | return true; | ||
17 | } | ||
18 | |||
19 | /** | ||
20 | * Get the validation rules that apply to the request. | ||
21 | * | ||
22 | * @return array<string, mixed> | ||
23 | */ | ||
24 | public function rules() | ||
25 | { | ||
26 | return [ | ||
27 | 'name' => 'required|min:3|max:255', | ||
28 | ]; | ||
29 | } | ||
30 | |||
31 | public function messages() { | ||
32 | return [ | ||
33 | 'required' => 'Поле :attribute обязательно для ввода', | ||
34 | 'min' => [ | ||
35 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | ||
36 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | ||
37 | ], | ||
38 | 'max' => [ | ||
39 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | ||
40 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | ||
41 | ], | ||
42 | |||
43 | ]; | ||
44 | } | ||
45 | } | ||
46 |
app/Models/Ad_employer.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 Ad_employer extends Model | 8 | class Ad_employer extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | 11 | ||
12 | protected $fillable = [ | 12 | protected $fillable = [ |
13 | 'name', | 13 | 'name', |
14 | 'telephone', | 14 | 'telephone', |
15 | 'email', | 15 | 'email', |
16 | 'salary', | 16 | 'salary', |
17 | 'category_id', | 17 | 'category_id', |
18 | 'text', | 18 | 'text', |
19 | 'employer_id', | 19 | 'employer_id', |
20 | 'city', | 20 | 'city', |
21 | 'sort', | 21 | 'sort', |
22 | 'is_remove', | 22 | 'is_remove', |
23 | 'active_is', | 23 | 'active_is', |
24 | 'status', | ||
25 | 'sroch_vacancy', | ||
26 | 'favorite_vacancy' | ||
24 | ]; | 27 | ]; |
25 | /* | 28 | /* |
26 | * Связь таблицы employers с таблицей ad_employers | 29 | * Связь таблицы employers с таблицей ad_employers |
27 | многие-к-одному | 30 | многие-к-одному |
28 | */ | 31 | */ |
29 | public function employer() { | 32 | public function employer() { |
30 | return $this->belongsTo(Employer::class, 'employer_id'); | 33 | return $this->belongsTo(Employer::class, 'employer_id'); |
31 | } | 34 | } |
32 | 35 | ||
33 | /* | 36 | /* |
34 | * Связь модели Вакансии (Ad_employer) с моделью Должности (Job_title) | 37 | * Связь модели Вакансии (Ad_employer) с моделью Должности (Job_title) |
35 | многие-ко-многим | 38 | многие-ко-многим |
36 | */ | 39 | */ |
37 | public function jobs() { | 40 | public function jobs() { |
38 | return $this->belongsToMany(Job_title::class, 'ad_jobs'); | 41 | return $this->belongsToMany(Job_title::class, 'ad_jobs'); |
39 | } | 42 | } |
40 | 43 | ||
41 | /* | 44 | /* |
42 | * Связь модели Вакансия (Ad_employers) с моделью Отклик на Вакансию (Ad_response) | 45 | * Связь модели Вакансия (Ad_employers) с моделью Отклик на Вакансию (Ad_response) |
43 | один-ко-многим | 46 | один-ко-многим |
44 | */ | 47 | */ |
45 | public function response() { | 48 | public function response() { |
46 | return $this->hasMany(ad_response::class); | 49 | return $this->hasMany(ad_response::class); |
47 | } | 50 | } |
48 | 51 | ||
49 | public function scopeActive($query) { | 52 | public function scopeActive($query) { |
50 | return $query->where('is_remove', '=', '0'); | 53 | return $query->where('is_remove', '=', '0'); |
51 | } | 54 | } |
52 | } | 55 | } |
53 | 56 |
app/Models/CategoryEmp.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Models; | ||
4 | |||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | ||
6 | use Illuminate\Database\Eloquent\Model; | ||
7 | |||
8 | class CategoryEmp extends Model | ||
9 | { | ||
10 | use HasFactory; | ||
11 | |||
12 | protected $fillable = [ | ||
13 | 'name', | ||
14 | 'is_remove' | ||
15 | ]; | ||
16 | |||
17 | public function scopeActive($query) { | ||
18 | return $query->where('is_remove', '=', '0'); | ||
19 | } | ||
20 | } | ||
21 |
app/Models/Education.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Models; | ||
4 | |||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | ||
6 | use Illuminate\Database\Eloquent\Model; | ||
7 | |||
8 | class Education extends Model | ||
9 | { | ||
10 | use HasFactory; | ||
11 | |||
12 | protected $fillable = [ | ||
13 | 'name', | ||
14 | 'is_remove' | ||
15 | ]; | ||
16 | |||
17 | public function scopeActive($query) { | ||
18 | return $query->where('is_remove', '=', '0'); | ||
19 | } | ||
20 | } | ||
21 |
app/Models/User.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | // use Illuminate\Contracts\Auth\MustVerifyEmail; | 5 | // use Illuminate\Contracts\Auth\MustVerifyEmail; |
6 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 6 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
7 | use Illuminate\Foundation\Auth\User as Authenticatable; | 7 | use Illuminate\Foundation\Auth\User as Authenticatable; |
8 | use Illuminate\Notifications\Notifiable; | 8 | use Illuminate\Notifications\Notifiable; |
9 | use Laravel\Sanctum\HasApiTokens; | 9 | use Laravel\Sanctum\HasApiTokens; |
10 | 10 | ||
11 | class User extends Authenticatable | 11 | class User extends Authenticatable |
12 | { | 12 | { |
13 | use HasApiTokens, HasFactory, Notifiable; | 13 | use HasApiTokens, HasFactory, Notifiable; |
14 | 14 | ||
15 | /** | 15 | /** |
16 | * The attributes that are mass assignable. | 16 | * The attributes that are mass assignable. |
17 | * | 17 | * |
18 | * @var array<int, string> | 18 | * @var array<int, string> |
19 | */ | 19 | */ |
20 | protected $fillable = [ | 20 | protected $fillable = [ |
21 | 'name', | 21 | 'name', |
22 | 'email', | 22 | 'email', |
23 | 'password', | 23 | 'password', |
24 | 'admin', | 24 | 'admin', |
25 | 'telephone', | 25 | 'telephone', |
26 | 'surname', | 26 | 'surname', |
27 | 'name_man', | 27 | 'name_man', |
28 | 'surname2', | 28 | 'surname2', |
29 | 'is_worker', | 29 | 'is_worker', |
30 | 'is_lookin', | 30 | 'is_lookin', |
31 | 'is_message', | 31 | 'is_message', |
32 | 'is_public', | 32 | 'is_public', |
33 | 'is_remove', | 33 | 'is_remove', |
34 | 'is_ban', | 34 | 'is_ban', |
35 | 'is_new', | 35 | 'is_new', |
36 | 'email_verified_at', | 36 | 'email_verified_at', |
37 | 'created_at', | 37 | 'created_at', |
38 | 'updated_at' | 38 | 'updated_at' |
39 | ]; | 39 | ]; |
40 | 40 | ||
41 | /** | 41 | /** |
42 | * The attributes that should be hidden for serialization. | 42 | * The attributes that should be hidden for serialization. |
43 | * | 43 | * |
44 | * @var array<int, string> | 44 | * @var array<int, string> |
45 | */ | 45 | */ |
46 | protected $hidden = [ | 46 | protected $hidden = [ |
47 | 'password', | 47 | 'password', |
48 | 'remember_token', | 48 | 'remember_token', |
49 | ]; | 49 | ]; |
50 | 50 | ||
51 | /** | 51 | /** |
52 | * The attributes that should be cast. | 52 | * The attributes that should be cast. |
53 | * | 53 | * |
54 | * @var array<string, string> | 54 | * @var array<string, string> |
55 | */ | 55 | */ |
56 | protected $casts = [ | 56 | protected $casts = [ |
57 | 'email_verified_at' => 'datetime', | 57 | 'email_verified_at' => 'datetime', |
58 | ]; | 58 | ]; |
59 | 59 | ||
60 | /* | 60 | /* |
61 | * Связь Пользователей системы с работодателями | 61 | * Связь Пользователей системы с работодателями |
62 | * users - employers | 62 | * users - employers |
63 | */ | 63 | */ |
64 | public function employers() { | 64 | public function employers() { |
65 | return $this->hasMany(Employer::class, 'user_id'); | 65 | return $this->hasMany(Employer::class, 'user_id'); |
66 | } | 66 | } |
67 | 67 | ||
68 | /* | 68 | /* |
69 | * Связь Пользователей системы с работниками | 69 | * Связь Пользователей системы с работниками |
70 | * users - workers | 70 | * users - workers |
71 | */ | 71 | */ |
72 | public function workers() { | 72 | public function workers() { |
73 | return $this->hasMany(Worker::class, 'user_id'); | 73 | return $this->hasMany(Worker::class, 'user_id'); |
74 | } | 74 | } |
75 | 75 | ||
76 | /* | 76 | /* |
77 | * Связь Пользователей системы с работниками | ||
78 | * users - workers | ||
79 | */ | ||
80 | public function work() { | ||
81 | return $this->hasMany(Worker::class, 'user_id')->select('telephone', 'email', 'position_work', 'persent_anketa'); | ||
82 | } | ||
83 | |||
84 | /* | ||
77 | * Связь Модели Пользователей(Users) с Группами (Group_users) | 85 | * Связь Модели Пользователей(Users) с Группами (Group_users) |
78 | * users - group_users | 86 | * users - group_users |
79 | многие-ко-многим | 87 | многие-ко-многим |
80 | */ | 88 | */ |
81 | public function ingroup() { | 89 | public function ingroup() { |
82 | return $this->belongsToMany(Group_user::class, 'group_works'); | 90 | return $this->belongsToMany(Group_user::class, 'group_works'); |
83 | } | 91 | } |
84 | 92 | ||
85 | /* | 93 | /* |
86 | * Связь Пользователей системы с ссобщениями | 94 | * Связь Пользователей системы с ссобщениями |
87 | * users - messages | 95 | * users - messages |
88 | */ | 96 | */ |
89 | public function messages() { | 97 | public function messages() { |
90 | return $this->hasMany(Message::class); | 98 | return $this->hasMany(Message::class); |
91 | } | 99 | } |
92 | 100 | ||
93 | /* | 101 | /* |
94 | * Связь Пользователей системы с статистика | 102 | * Связь Пользователей системы с статистика |
95 | * users - static_workers | 103 | * users - static_workers |
96 | */ | 104 | */ |
97 | public function static_user() { | 105 | public function static_user() { |
98 | return $this->hasMany(Static_worker::class); | 106 | return $this->hasMany(Static_worker::class); |
99 | } | 107 | } |
100 | 108 | ||
101 | /* | 109 | /* |
102 | * Связь модели Юзеры (users) с моделью Группы пользователей (Group_works) | 110 | * Связь модели Юзеры (users) с моделью Группы пользователей (Group_works) |
103 | один-ко-многим | 111 | один-ко-многим |
104 | */ | 112 | */ |
105 | public function peoples() { | 113 | public function peoples() { |
106 | return $this->hasMany(Group_works::class); | 114 | return $this->hasMany(Group_works::class); |
107 | } | 115 | } |
108 | 116 | ||
117 | /* | ||
118 | * Связь Модели Пользователей(Users) с Группами (Group_users) | ||
119 | * users - group_users | ||
120 | многие-ко-многим | ||
121 | */ | ||
122 | public function jobtitles() { | ||
123 | return $this->belongsToMany(Job_title::class, 'Workers', 'user_id', 'position_work'); | ||
124 | } | ||
125 | |||
109 | public function scopeActive($query) { | 126 | public function scopeActive($query) { |
110 | return $query->where('is_remove', '=', '0'); | 127 | return $query->where('is_remove', '=', '0'); |
111 | } | 128 | } |
112 | 129 | ||
113 | } | 130 | } |
114 | 131 |
app/Providers/MyServiceProvider.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Providers; | 3 | namespace App\Providers; |
4 | 4 | ||
5 | use App\Models\Job_title; | 5 | use App\Models\Job_title; |
6 | use Illuminate\Support\Facades\Auth; | 6 | use Illuminate\Support\Facades\Auth; |
7 | use Illuminate\Support\Facades\DB; | 7 | use Illuminate\Support\Facades\DB; |
8 | use Illuminate\Support\Facades\View; | 8 | use Illuminate\Support\Facades\View; |
9 | use Illuminate\Support\ServiceProvider; | 9 | use Illuminate\Support\ServiceProvider; |
10 | 10 | ||
11 | class MyServiceProvider extends ServiceProvider | 11 | class MyServiceProvider extends ServiceProvider |
12 | { | 12 | { |
13 | /** | 13 | /** |
14 | * Register services. | 14 | * Register services. |
15 | * | 15 | * |
16 | * @return void | 16 | * @return void |
17 | */ | 17 | */ |
18 | public function register() | 18 | public function register() |
19 | { | 19 | { |
20 | // | 20 | // |
21 | } | 21 | } |
22 | 22 | ||
23 | /** | 23 | /** |
24 | * Bootstrap services. | 24 | * Bootstrap services. |
25 | * | 25 | * |
26 | * @return void | 26 | * @return void |
27 | */ | 27 | */ |
28 | public function boot() | 28 | public function boot() |
29 | { | 29 | { |
30 | $views = ['admin.job_titles.parent_id']; | 30 | $views = ['admin.job_titles.parent_id']; |
31 | View::composer($views, | 31 | View::composer($views, |
32 | function($view) | 32 | function($view) |
33 | { | 33 | { |
34 | static $items = null; | 34 | static $items = null; |
35 | 35 | ||
36 | if (is_null($items)) { | 36 | if (is_null($items)) { |
37 | $items = Job_title::query()-> | 37 | $items = Job_title::query()-> |
38 | orderByDesc('sort')-> | 38 | orderByDesc('sort')-> |
39 | orderBy('name')-> | 39 | orderBy('name')-> |
40 | active()-> | 40 | active()-> |
41 | get(); | 41 | get(); |
42 | $parent = 0; | 42 | $parent = 0; |
43 | $view->with(['items' => $items, 'parent' => $parent]); | 43 | $view->with(['items' => $items, 'parent' => $parent]); |
44 | } else { | 44 | } else { |
45 | $view->with(['items' => $items]); | 45 | $view->with(['items' => $items]); |
46 | } | 46 | } |
47 | 47 | ||
48 | } | 48 | } |
49 | ); | 49 | ); |
50 | 50 | ||
51 | $views2 = ['layout.admin']; | 51 | $views2 = ['layout.admin', 'admin.index']; |
52 | 52 | ||
53 | View::composer($views2, | 53 | View::composer($views2, |
54 | function($view){ | 54 | function($view){ |
55 | $id = Auth::user()->id; | 55 | $id = Auth::user()->id; |
56 | $query = DB::select(DB::raw('SELECT count(*) as MsgCount | 56 | $query = DB::select(DB::raw('SELECT count(*) as MsgCount |
57 | FROM messages m1 | 57 | FROM messages m1 |
58 | Where ((m1.flag_new = 1) and (m1.to_user_id = :uid)) | 58 | Where ((m1.flag_new = 1) and (m1.to_user_id = :uid)) |
59 | '), ['uid' => $id] | 59 | '), ['uid' => $id] |
60 | ); | 60 | ); |
61 | 61 | ||
62 | $view->with(['MsgCount' => $query[0]->MsgCount]); | 62 | $view->with(['MsgCount' => $query[0]->MsgCount, 'UserId' => $id]); |
63 | } | 63 | } |
64 | ); | 64 | ); |
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 |
database/migrations/2023_10_02_130611_alter_table_employers.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('employers', function (Blueprint $table) { | ||
17 | $table->text('comment_admin')->nullable(); | ||
18 | $table->string('category', 255)->default('Не определен'); | ||
19 | }); | ||
20 | } | ||
21 | |||
22 | /** | ||
23 | * Reverse the migrations. | ||
24 | * | ||
25 | * @return void | ||
26 | */ | ||
27 | public function down() | ||
28 | { | ||
29 | Schema::table('employers', function (Blueprint $table) { | ||
30 | $table->dropColumn('comment_admin'); | ||
31 | $table->dropColumn('category'); | ||
32 | }); | ||
33 | } | ||
34 | }; | ||
35 |
database/migrations/2023_10_02_130747_create_category_emps_table.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::create('category_emps', function (Blueprint $table) { | ||
17 | $table->id(); | ||
18 | $table->string('name', 255)->nullable(false); | ||
19 | $table->boolean('is_remove')->default(false); | ||
20 | $table->timestamps(); | ||
21 | }); | ||
22 | } | ||
23 | |||
24 | /** | ||
25 | * Reverse the migrations. | ||
26 | * | ||
27 | * @return void | ||
28 | */ | ||
29 | public function down() | ||
30 | { | ||
31 | Schema::dropIfExists('category_emps'); | ||
32 | } | ||
33 | }; | ||
34 |
database/migrations/2023_10_02_132059_alter_table_ad_employers.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('ad_employers', function (Blueprint $table) { | ||
17 | $table->boolean('sroch_vacancy')->default(0); | ||
18 | $table->boolean('favorite_vacancy')->default(0); | ||
19 | $table->string('status', 255)->default('Не задан'); | ||
20 | }); | ||
21 | } | ||
22 | |||
23 | /** | ||
24 | * Reverse the migrations. | ||
25 | * | ||
26 | * @return void | ||
27 | */ | ||
28 | public function down() | ||
29 | { | ||
30 | Schema::table('ad_employers', function (Blueprint $table) { | ||
31 | $table->dropColumn('sroch_vacancy'); | ||
32 | $table->dropColumn('favorite_vacancy'); | ||
33 | $table->dropColumn('status'); | ||
34 | }); | ||
35 | } | ||
36 | }; | ||
37 |
database/migrations/2023_10_03_114608_create_education_table.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::create('education', function (Blueprint $table) { | ||
17 | $table->id(); | ||
18 | $table->string('name', 255)->nullable(false); | ||
19 | $table->boolean('is_remove')->default(false); | ||
20 | $table->timestamps(); | ||
21 | }); | ||
22 | } | ||
23 | |||
24 | /** | ||
25 | * Reverse the migrations. | ||
26 | * | ||
27 | * @return void | ||
28 | */ | ||
29 | public function down() | ||
30 | { | ||
31 | Schema::dropIfExists('education'); | ||
32 | } | ||
33 | }; | ||
34 |
database/migrations/2023_10_03_114801_alter_table_workers.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('workers', function (Blueprint $table) { | ||
17 | $table->string('education', 255)->default('Не указано'); | ||
18 | }); | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Reverse the migrations. | ||
23 | * | ||
24 | * @return void | ||
25 | */ | ||
26 | public function down() | ||
27 | { | ||
28 | Schema::table('workers', function (Blueprint $table) { | ||
29 | $table->dropColumn('education'); | ||
30 | }); | ||
31 | } | ||
32 | }; | ||
33 |
resources/views/admin/ad_employers/edit.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование вакансии']) | |
2 | |||
3 | @section('script') | ||
4 | |||
5 | @endsection | ||
6 | |||
7 | @section('content') | ||
8 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> | ||
9 | Редактирование вакансии | ||
10 | </h4> | ||
11 | <form method="POST" action="{{ route('admin.update-ad-employers', ['ad_employer' => $ad_employer->id]) }}"> | ||
12 | @csrf | ||
13 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | ||
14 | <label class="block text-sm"> | ||
15 | <span class="text-gray-700 dark:text-gray-400">Название вакансии</span> | ||
16 | <input name="name" id="name" | ||
17 | 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" | ||
18 | placeholder="Название вакансии" value="{{ old('name') ?? $ad_employer->name ?? '' }}" | ||
19 | /> | ||
20 | @error('name') | ||
21 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
22 | {{ $message }} | ||
23 | </span> | ||
24 | @enderror | ||
25 | </label> | ||
26 | |||
27 | <label class="block mt-4 text-sm"> | ||
28 | <span class="text-gray-700 dark:text-gray-400"> | ||
29 | Категории должности | ||
30 | </span> | ||
31 | <select | ||
32 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | ||
33 | multiple | ||
34 | name="position_work[]" id="position_work" | ||
35 | > | ||
36 | @foreach($job_titles as $job) | ||
37 | <option value="{{$job->id}}" @if (in_array($job->id, $sel)) selected @endif > | ||
38 | {{ $job->name }} ({{$job->id}}) | ||
39 | </option> | ||
40 | @endforeach | ||
41 | </select> | ||
42 | </label> | ||
43 | |||
44 | <label class="block mt-4 text-sm"> | ||
45 | <span class="text-gray-700 dark:text-gray-400"> | ||
46 | Статус вакансии | ||
47 | </span> | ||
48 | <select | ||
49 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | ||
50 | name="status" id="status" | ||
51 | > | ||
52 | <option value="Не задан" @if ($ad_employer->status == "Не задан") selected @endif > | ||
53 | Не задан | ||
54 | </option> | ||
55 | <option value="Открыта" @if ($ad_employer->status == "Открыта") selected @endif > | ||
56 | Открыта | ||
57 | </option> | ||
58 | <option value="Закрыта" @if ($ad_employer->status == "Закрыта") selected @endif > | ||
59 | Закрыта | ||
60 | </option> | ||
61 | </select> | ||
62 | </label><br> | ||
63 | |||
64 | <label class="block text-sm"> | ||
65 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Срочная вакансия</p> | ||
66 | <input type="hidden" name="sroch_vacancy" value="0" /> | ||
67 | <input name="sroch_vacancy" @if ($ad_employer->sroch_vacancy) checked @endif | ||
68 | class="block 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 " | ||
69 | placeholder="" type="checkbox" value="1" | ||
70 | /><br> | ||
71 | |||
72 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Избранная вакансия</p> | ||
73 | <input type="hidden" name="favorite_vacancy" value="0" /> | ||
74 | <input name="favorite_vacancy" id="favorite_vacancy" @if ($ad_employer->favorite_vacancy)checked @endif | ||
75 | class="block 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 " | ||
76 | placeholder="" type="checkbox" value="1" | ||
77 | /><br> | ||
78 | </label> | ||
79 | |||
80 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
81 | <div> | ||
82 | <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"> | ||
83 | Сохранить | ||
84 | </button> | ||
85 | <a href="{{ route('admin.ad-employers') }}" | ||
86 | 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" | ||
87 | style="display: -webkit-inline-box; height: 30px!important;" | ||
88 | >Назад</a> | ||
89 | </div> | ||
90 | </div> | ||
91 | </div> | ||
92 | </form> | ||
93 | @endsection | ||
94 |
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 | <!--<div class="absolute inset-y-0 flex items-center pl-2"> | 7 | |
8 | <svg | ||
9 | class="w-4 h-4" | ||
10 | aria-hidden="true" | ||
11 | fill="currentColor" | ||
12 | viewBox="0 0 20 20" | ||
13 | > | ||
14 | <path | ||
15 | fill-rule="evenodd" | ||
16 | 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" | ||
17 | clip-rule="evenodd" | ||
18 | ></path> | ||
19 | </svg> | ||
20 | </div> | ||
21 | <form action="" method="POST"> | ||
22 | <div style="float:left;"><input | ||
23 | 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" | ||
24 | style="width: 400px" | ||
25 | type="text" | ||
26 | placeholder="Искать компанию или вакансию" | ||
27 | aria-label="Search" | ||
28 | /></div> | ||
29 | <div style="float: left"> | ||
30 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Поиск</button> | ||
31 | </div> | ||
32 | </form>--> | ||
33 | @endsection | 8 | @endsection |
34 | 9 | ||
35 | @section('content') | 10 | @section('content') |
36 | <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"> |
37 | <div class="w-full overflow-x-auto"> | 12 | <div class="w-full overflow-x-auto"> |
38 | <table class="w-full whitespace-no-wrap"> | 13 | <table class="w-full whitespace-no-wrap"> |
39 | <thead> | 14 | <thead> |
40 | <tr | 15 | <tr |
41 | 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" |
42 | > | 17 | > |
43 | <th class="px-4 py-3">№</th> | 18 | <th class="px-4 py-3">№</th> |
44 | <th class="px-4 py-3">Название объявления</th> | 19 | <th class="px-4 py-3">Название объявления</th> |
45 | <th class="px-4 py-3">Название компании</th> | 20 | <th class="px-4 py-3">Название компании</th> |
46 | <th class="px-4 py-3">Вакансии</th> | 21 | <th class="px-4 py-3">Должности</th> |
47 | <th class="px-4 py-3">Город</th> | 22 | <th class="px-4 py-3">Избранные</th> |
48 | <th class="px-4 py-3">З/п</th> | 23 | <th class="px-4 py-3">Срочные</th> |
49 | <th class="px-4 py-3">Дата</th> | 24 | <th class="px-4 py-3">Статус</th> |
25 | <th class="px-4 py-3">Дата создан.</th> | ||
26 | <th class="px-4 py-3">Дата изменен.</th> | ||
27 | <th class="px-4 py-3">Изменить</th> | ||
50 | </tr> | 28 | </tr> |
51 | </thead> | 29 | </thead> |
52 | <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"> |
53 | @foreach($ad_employers as $ad) | 31 | @foreach($ad_employers as $ad) |
54 | <tr class="text-gray-700 dark:text-gray-400"> | 32 | <tr class="text-gray-700 dark:text-gray-400"> |
55 | <td class="px-4 py-3"> | 33 | <td class="px-4 py-3"> |
56 | {{$ad->id}} | 34 | {{$ad->id}} |
57 | </td> | 35 | </td> |
58 | <td class="px-4 py-3"> | 36 | <td class="px-4 py-3"> |
59 | {{$ad->name}} | 37 | {{$ad->name}} |
60 | </td> | 38 | </td> |
61 | <td class="px-4 py-3"> | 39 | <td class="px-4 py-3"> |
62 | {{$ad->employer->name_company}} | 40 | {{$ad->employer->name_company}} |
63 | </td> | 41 | </td> |
64 | <td class="px-4 py-3"> | 42 | <td class="px-4 py-3"> |
65 | <div class="flex items-center text-sm"> | 43 | <div class="flex items-center text-sm"> |
66 | @if ($ad->jobs->count()) | 44 | @if ($ad->jobs->count()) |
67 | <div> | 45 | <div> |
68 | <?php $i = 0;?> | 46 | <?php $i = 0;?> |
69 | @foreach ($ad->jobs as $title) | 47 | @foreach ($ad->jobs as $title) |
70 | <?php if ($i==0) {?> | 48 | <?php if ($i==0) {?> |
71 | <p class="font-semibold">{{$title->name}}</p> | 49 | <p class="font-semibold">{{$title->name}}</p> |
72 | <?php } else {?> | 50 | <?php } else {?> |
73 | <p class="font-semibold">/ {{$title->name}}</p> | 51 | <p class="font-semibold">/ {{$title->name}}</p> |
74 | <?php } | 52 | <?php } |
75 | $i++; | 53 | $i++; |
76 | ?> | 54 | ?> |
77 | @endforeach | 55 | @endforeach |
78 | </div> | 56 | </div> |
79 | @endif | 57 | @endif |
80 | </div> | 58 | </div> |
81 | 59 | ||
82 | </td> | 60 | </td> |
61 | |||
62 | <td class="px-4 py-3 text-sm"> | ||
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"> | ||
65 | Да | ||
66 | </span> | ||
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"> | ||
69 | Нет | ||
70 | </span> | ||
71 | @endif | ||
72 | </td> | ||
73 | |||
83 | <td class="px-4 py-3 text-sm"> | 74 | <td class="px-4 py-3 text-sm"> |
84 | {{ $ad->city }} | 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"> | ||
77 | Да | ||
78 | </span> | ||
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"> | ||
81 | Нет | ||
82 | </span> | ||
83 | @endif | ||
85 | </td> | 84 | </td> |
85 | |||
86 | <td class="px-4 py-3 text-sm"> | 86 | <td class="px-4 py-3 text-sm"> |
resources/views/admin/category-emp/add.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Добавление категории работодателей']) | |
2 | |||
3 | @section('content') | ||
4 | <form method="POST" action="{{ route('admin.category-emp.store') }}"> | ||
5 | @include('admin.category-emp.form') | ||
6 | </form> | ||
7 | @endsection | ||
8 |
resources/views/admin/category-emp/edit.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование категории работодателей']) | |
2 | |||
3 | @section('content') | ||
4 | <form method="POST" action="{{ route('admin.category-emp.update', ['category_emp' => $category_emp->id]) }}"> | ||
5 | @include('admin.category-emp.form') | ||
6 | </form> | ||
7 | @endsection | ||
8 |
resources/views/admin/category-emp/form.blade.php
File was created | 1 | @csrf | |
2 | |||
3 | @isset($category_emp) | ||
4 | @method('PUT') | ||
5 | @endisset | ||
6 | |||
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"> | ||
9 | <span class="text-gray-700 dark:text-gray-400">Имя категории</span> | ||
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" | ||
12 | placeholder="Имя категории" value="{{ old('name') ?? $category_emp->name ?? '' }}" | ||
13 | /> | ||
14 | @error('name') | ||
15 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
16 | {{ $message }} | ||
17 | </span> | ||
18 | @enderror | ||
19 | </label><br> | ||
20 | |||
21 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
22 | <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"> | ||
24 | Сохранить | ||
25 | </button> | ||
26 | <a href="{{ route('admin.category-emp.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" | ||
28 | style="display: -webkit-inline-box; height: 30px!important;" | ||
29 | >Назад</a> | ||
30 | </div> | ||
31 | </div> | ||
32 | </div> | ||
33 |
resources/views/admin/category-emp/index.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Категории работодателей']) | |
2 | |||
3 | @section('script') | ||
4 | |||
5 | @endsection | ||
6 | |||
7 | @section('search') | ||
8 | |||
9 | @endsection | ||
10 | |||
11 | @section('content') | ||
12 | |||
13 | <a href="{{ route('admin.category-emp.create') }}" style="width: 175px" 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 | Добавить категорию | ||
15 | </a> | ||
16 | <br> | ||
17 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | ||
18 | |||
19 | <div class="w-full overflow-x-auto"> | ||
20 | <table class="w-full whitespace-no-wrap"> | ||
21 | <thead> | ||
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" | ||
24 | > | ||
25 | <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> | ||
29 | </tr> | ||
30 | </thead> | ||
31 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
32 | @foreach($category as $cat) | ||
33 | <tr class="text-gray-700 dark:text-gray-400"> | ||
34 | <td class="px-4 py-3"> | ||
35 | {{$cat->id}} | ||
36 | </td> | ||
37 | <td class="px-4 py-3"> | ||
38 | {{$cat->name}} | ||
39 | </td> | ||
40 | <td class="px-4 py-3"> | ||
41 | {{$cat->created_at}} | ||
42 | </td> | ||
43 | <td class="px-4 py-3 text-sm_"> | ||
44 | <form action="{{ route('admin.category-emp.destroy', ['category_emp' => $cat->id]) }}" method="POST"> | ||
45 | <a href="{{ route('admin.category-emp.edit', ['category_emp' => $cat->id]) }}">Изменить</a> | | ||
46 | @csrf | ||
47 | @method('DELETE') | ||
48 | <input class="btn btn-danger" type="submit" value="Удалить"/> | ||
49 | </form> | ||
50 | </td> | ||
51 | </tr> | ||
52 | @endforeach | ||
53 | </tbody> | ||
54 | </table> | ||
55 | </div> | ||
56 | |||
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 | <?=$category->appends($_GET)->links('admin.pagginate'); ?> | ||
59 | </div> | ||
60 | </div> | ||
61 | @endsection | ||
62 |
resources/views/admin/education/add.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Добавление образования']) | |
2 | |||
3 | @section('content') | ||
4 | <form method="POST" action="{{ route('admin.education.store') }}"> | ||
5 | @include('admin.education.form') | ||
6 | </form> | ||
7 | @endsection | ||
8 |
resources/views/admin/education/edit.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование образования']) | |
2 | |||
3 | @section('content') | ||
4 | <form method="POST" action="{{ route('admin.education.update', ['education' => $education->id]) }}"> | ||
5 | @include('admin.education.form') | ||
6 | </form> | ||
7 | @endsection | ||
8 |
resources/views/admin/education/form.blade.php
File was created | 1 | @csrf | |
2 | |||
3 | @isset($education) | ||
4 | @method('PUT') | ||
5 | @endisset | ||
6 | |||
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"> | ||
9 | <span class="text-gray-700 dark:text-gray-400">Имя категории</span> | ||
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" | ||
12 | placeholder="Имя категории" value="{{ old('name') ?? $education->name ?? '' }}" | ||
13 | /> | ||
14 | @error('name') | ||
15 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
16 | {{ $message }} | ||
17 | </span> | ||
18 | @enderror | ||
19 | </label><br> | ||
20 | |||
21 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
22 | <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"> | ||
24 | Сохранить | ||
25 | </button> | ||
26 | <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" | ||
28 | style="display: -webkit-inline-box; height: 30px!important;" | ||
29 | >Назад</a> | ||
30 | </div> | ||
31 | </div> | ||
32 | </div> | ||
33 |
resources/views/admin/education/index.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Справочник образование']) | |
2 | |||
3 | @section('script') | ||
4 | |||
5 | @endsection | ||
6 | |||
7 | @section('search') | ||
8 | |||
9 | @endsection | ||
10 | |||
11 | @section('content') | ||
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"> | ||
14 | Добавить образование | ||
15 | </a> | ||
16 | <br> | ||
17 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | ||
18 | |||
19 | <div class="w-full overflow-x-auto"> | ||
20 | <table class="w-full whitespace-no-wrap"> | ||
21 | <thead> | ||
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" | ||
24 | > | ||
25 | <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> | ||
29 | </tr> | ||
30 | </thead> | ||
31 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
32 | @foreach($education as $cat) | ||
33 | <tr class="text-gray-700 dark:text-gray-400"> | ||
34 | <td class="px-4 py-3"> | ||
35 | {{$cat->id}} | ||
36 | </td> | ||
37 | <td class="px-4 py-3"> | ||
38 | {{$cat->name}} | ||
39 | </td> | ||
40 | <td class="px-4 py-3"> | ||
41 | {{$cat->created_at}} | ||
42 | </td> | ||
43 | <td class="px-4 py-3 text-sm_"> | ||
44 | <form action="{{ route('admin.education.destroy', ['education' => $cat->id]) }}" method="POST"> | ||
45 | <a href="{{ route('admin.education.edit', ['education' => $cat->id]) }}">Изменить</a> | | ||
46 | @csrf | ||
47 | @method('DELETE') | ||
48 | <input class="btn btn-danger" type="submit" value="Удалить"/> | ||
49 | </form> | ||
50 | </td> | ||
51 | </tr> | ||
52 | @endforeach | ||
53 | </tbody> | ||
54 | </table> | ||
55 | </div> | ||
56 | |||
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 | <?=$education->appends($_GET)->links('admin.pagginate'); ?> | ||
59 | </div> | ||
60 | </div> | ||
61 | @endsection | ||
62 |
resources/views/admin/employer/edit.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Редактирование работодателя']) | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование работодателя']) |
2 | 2 | ||
3 | @section('content') | 3 | @section('content') |
4 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> | 4 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> |
5 | Работодатель-пользователь: "{{$employer->users->name_man}} ({{$employer->user_id}})" | 5 | Работодатель-пользователь: "{{$employer->users->name_man}} ({{$employer->user_id}})" |
6 | </h4> | 6 | </h4> |
7 | <form method="POST" action="" enctype="multipart/form-data"> | 7 | <form method="POST" action="" enctype="multipart/form-data"> |
8 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | 8 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> |
9 | @csrf | 9 | @csrf |
10 | <div class="tabs"> | 10 | <div class="tabs"> |
11 | <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked> | 11 | <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked> |
12 | <label for="tab-btn-1">Персональная информация</label> | 12 | <label for="tab-btn-1">Персональная информация</label> |
13 | <input type="radio" name="tab-btn" id="tab-btn-2" value=""> | 13 | <input type="radio" name="tab-btn" id="tab-btn-2" value=""> |
14 | <label for="tab-btn-2">Настройки</label> | 14 | <label for="tab-btn-2">Настройки</label> |
15 | <!--<input type="radio" name="tab-btn" id="tab-btn-3" value=""> | 15 | <!--<input type="radio" name="tab-btn" id="tab-btn-3" value=""> |
16 | <label for="tab-btn-3">Вкладка 3</label>--> | 16 | <label for="tab-btn-3">Вкладка 3</label>--> |
17 | <div id="content-1"> | 17 | <div id="content-1"> |
18 | 18 | ||
19 | <label class="block text-sm"> | 19 | <label class="block text-sm"> |
20 | <span class="text-gray-700 dark:text-gray-400">Имя компании</span> | 20 | <span class="text-gray-700 dark:text-gray-400">Имя компании</span> |
21 | <input name="name" id="name" | 21 | <input name="name" id="name" |
22 | 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" | 22 | 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" |
23 | placeholder="Имя компании" value="{{ old('name') ?? $employer->users->name ?? '' }}" | 23 | placeholder="Имя компании" value="{{ old('name') ?? $employer->users->name ?? '' }}" |
24 | /> | 24 | /> |
25 | @error('name') | 25 | @error('name') |
26 | <span class="text-xs text-red-600 dark:text-red-400"> | 26 | <span class="text-xs text-red-600 dark:text-red-400"> |
27 | {{ $message }} | 27 | {{ $message }} |
28 | </span> | 28 | </span> |
29 | @enderror | 29 | @enderror |
30 | </label><br> | 30 | </label><br> |
31 | 31 | ||
32 | <label class="block text-sm"> | 32 | <label class="block text-sm"> |
33 | <span class="text-gray-700 dark:text-gray-400">Email</span> | 33 | <span class="text-gray-700 dark:text-gray-400">Email</span> |
34 | <input name="email" id="email" | 34 | <input name="email" id="email" disabled |
35 | 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" | 35 | 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" |
36 | placeholder="Почта" value="{{ old('email') ?? $employer->email ?? '' }}" | 36 | placeholder="Почта" value="{{ old('email') ?? $employer->email ?? '' }}" |
37 | /> | 37 | /> |
38 | @error('email') | 38 | @error('email') |
39 | <span class="text-xs text-red-600 dark:text-red-400"> | 39 | <span class="text-xs text-red-600 dark:text-red-400"> |
40 | {{ $message }} | 40 | {{ $message }} |
41 | </span> | 41 | </span> |
42 | @enderror | 42 | @enderror |
43 | </label><br> | 43 | </label><br> |
44 | 44 | ||
45 | <label class="block text-sm"> | 45 | <label class="block text-sm"> |
46 | <span class="text-gray-700 dark:text-gray-400">Телефон</span> | 46 | <span class="text-gray-700 dark:text-gray-400">Телефон</span> |
47 | <input name="telephone" id="telephone" | 47 | <input name="telephone" id="telephone" |
48 | 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" | 48 | 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" |
49 | placeholder="Телефон" value="{{ old('telephone') ?? $employer->telephone ?? '' }}" | 49 | placeholder="Телефон" value="{{ old('telephone') ?? $employer->telephone ?? '' }}" |
50 | /> | 50 | /> |
51 | @error('telephone') | 51 | @error('telephone') |
52 | <span class="text-xs text-red-600 dark:text-red-400"> | 52 | <span class="text-xs text-red-600 dark:text-red-400"> |
53 | {{ $message }} | 53 | {{ $message }} |
54 | </span> | 54 | </span> |
55 | @enderror | 55 | @enderror |
56 | </label><br> | 56 | </label><br> |
57 | 57 | ||
58 | <label class="block text-sm"> | 58 | <label class="block text-sm"> |
59 | <span class="text-gray-700 dark:text-gray-400">Адрес</span> | 59 | <span class="text-gray-700 dark:text-gray-400">Адрес</span> |
60 | <input name="address" id="address" | 60 | <input name="address" id="address" |
61 | 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" | 61 | 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" |
62 | placeholder="Адрес" value="{{ old('address') ?? $employer->address ?? '' }}" | 62 | placeholder="Адрес" value="{{ old('address') ?? $employer->address ?? '' }}" |
63 | /> | 63 | /> |
64 | @error('address') | 64 | @error('address') |
65 | <span class="text-xs text-red-600 dark:text-red-400"> | 65 | <span class="text-xs text-red-600 dark:text-red-400"> |
66 | {{ $message }} | 66 | {{ $message }} |
67 | </span> | 67 | </span> |
68 | @enderror | 68 | @enderror |
69 | </label><br> | 69 | </label><br> |
70 | 70 | ||
71 | <label class="block text-sm"> | 71 | <label class="block text-sm"> |
72 | <span class="text-gray-700 dark:text-gray-400">Сайт</span> | 72 | <span class="text-gray-700 dark:text-gray-400">Сайт</span> |
73 | <input name="site" id="site" | 73 | <input name="site" id="site" |
74 | 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" | 74 | 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" |
75 | placeholder="Сайт" value="{{ old('site') ?? $employer->site ?? '' }}" | 75 | placeholder="Сайт" value="{{ old('site') ?? $employer->site ?? '' }}" |
76 | /> | 76 | /> |
77 | @error('site') | 77 | @error('site') |
78 | <span class="text-xs text-red-600 dark:text-red-400"> | 78 | <span class="text-xs text-red-600 dark:text-red-400"> |
79 | {{ $message }} | 79 | {{ $message }} |
80 | </span> | 80 | </span> |
81 | @enderror | 81 | @enderror |
82 | </label><br> | 82 | </label><br> |
83 | 83 | ||
84 | <label class="block text-sm"> | 84 | <label class="block text-sm"> |
85 | <span class="text-gray-700 dark:text-gray-400">Лого</span> | 85 | <span class="text-gray-700 dark:text-gray-400">Лого</span> |
86 | 86 | ||
87 | <input name="logo" id="logo" type="file" | 87 | <input name="logo" id="logo" type="file" |
88 | 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" | 88 | 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" |
89 | placeholder="Лого" value="" | 89 | placeholder="Лого" value="" |
90 | /> | 90 | /> |
91 | @isset($employer->logo) | 91 | @isset($employer->logo) |
92 | <img src="<?=asset(Storage::url($employer->logo))?>" width="150"/> | 92 | <img src="<?=asset(Storage::url($employer->logo))?>" width="150"/> |
93 | @endisset | 93 | @endisset |
94 | @error('logo') | 94 | @error('logo') |
95 | <span class="text-xs text-red-600 dark:text-red-400"> | 95 | <span class="text-xs text-red-600 dark:text-red-400"> |
96 | {{ $message }} | 96 | {{ $message }} |
97 | </span> | 97 | </span> |
98 | @enderror | 98 | @enderror |
99 | </label><br> | 99 | </label><br> |
100 | 100 | ||
101 | <label class="block mt-4 text-sm"> | 101 | <label class="block mt-4 text-sm"> |
102 | <span class="text-gray-700 dark:text-gray-400">Описание</span> | 102 | <span class="text-gray-700 dark:text-gray-400">Описание</span> |
103 | <textarea name="text" id="text" | 103 | <textarea name="text" id="text" |
104 | 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" | 104 | 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" |
105 | rows="3" | 105 | rows="3" |
106 | placeholder="Описание компании" | 106 | placeholder="Описание компании" |
107 | >{{ old('text') ?? $employer->text ?? '' }}</textarea> | 107 | >{{ old('text') ?? $employer->text ?? '' }}</textarea> |
108 | </label> | 108 | </label> |
109 | 109 | ||
110 | <hr> | ||
111 | |||
112 | <label class="block mt-4 text-sm"> | ||
113 | <span class="text-gray-700 dark:text-gray-400">Категории</span> | ||
114 | |||
115 | <select name="category" id="category" class="form-control"> | ||
116 | @foreach($select_category as $cat) | ||
117 | <option value="{{ $cat->name }}" | ||
118 | @isset($employer) | ||
119 | @if($cat->name == $employer->category) | ||
120 | selected | ||
121 | @endif | ||
122 | @endisset | ||
123 | >{{ $cat->name }}</option> | ||
124 | @endforeach | ||
125 | </select> | ||
126 | |||
127 | @error('category') | ||
128 | <div class="alert alert-danger">{{ $message }}</div> | ||
129 | @enderror | ||
130 | </label> | ||
131 | |||
132 | <label class="block mt-4 text-sm"> | ||
133 | <span class="text-gray-700 dark:text-gray-400">Комментарий админа</span> | ||
134 | <textarea name="comment_admin" id="comment_admin" | ||
135 | 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" | ||
136 | rows="3" | ||
137 | placeholder="Комментарий админа" | ||
138 | >{{ old('comment_admin') ?? $employer->comment_admin ?? '' }}</textarea> | ||
139 | </label> | ||
140 | |||
110 | </div> | 141 | </div> |
111 | <div id="content-2"> | 142 | <div id="content-2"> |
112 | <label class="block text-sm"> | 143 | <label class="block text-sm"> |
113 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> | 144 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> |
114 | Права работодателя: | 145 | Права работодателя: |
115 | </h4> | 146 | </h4> |
116 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Просмотр базы резюме </p> | 147 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Просмотр базы резюме </p> |
117 | <input type="hidden" name="is_lookin" value="0" /> | 148 | <input type="hidden" name="is_lookin" value="0" /> |
118 | <input name="is_lookin" <? if ($employer->users->is_lookin) echo "checked";?> | 149 | <input name="is_lookin" <? if ($employer->users->is_lookin) echo "checked";?> |
119 | class="block 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 " | 150 | class="block 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 " |
120 | placeholder="" type="checkbox" value="1" | 151 | placeholder="" type="checkbox" value="1" |
121 | /><br> | 152 | /><br> |
122 | 153 | ||
123 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Отправка сообщений</p> | 154 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Отправка сообщений</p> |
124 | <input type="hidden" name="is_message" value="0" /> | 155 | <input type="hidden" name="is_message" value="0" /> |
125 | <input name="is_message" id="is_message" <? if ($employer->users->is_message) echo "checked";?> | 156 | <input name="is_message" id="is_message" <? if ($employer->users->is_message) echo "checked";?> |
126 | class="block 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 " | 157 | class="block 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 " |
127 | placeholder="" type="checkbox" value="1" | 158 | placeholder="" type="checkbox" value="1" |
128 | /><br> | 159 | /><br> |
129 | 160 | ||
130 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Публикация вакансий</p> | 161 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Публикация вакансий</p> |
131 | <input type="hidden" name="is_public" value="0" /> | 162 | <input type="hidden" name="is_public" value="0" /> |
132 | <input name="is_public" id="is_public" <? if ($employer->users->is_public) echo "checked";?> | 163 | <input name="is_public" id="is_public" <? if ($employer->users->is_public) echo "checked";?> |
133 | class="block 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 " | 164 | class="block 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 " |
134 | placeholder="" type="checkbox" value="1" | 165 | placeholder="" type="checkbox" value="1" |
135 | /><br> | 166 | /><br> |
136 | 167 | ||
137 | </label> | 168 | </label> |
138 | 169 | ||
139 | <label class="block text-sm"> | 170 | <label class="block text-sm"> |
140 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Работодатель скрыт </p> | 171 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Работодатель скрыт </p> |
141 | <input type="hidden" name="status_hidden" value="0" /> | 172 | <input type="hidden" name="status_hidden" value="0" /> |
142 | <input name="status_hidden" <? if ($employer->status_hidden) echo "checked";?> | 173 | <input name="status_hidden" <? if ($employer->status_hidden) echo "checked";?> |
143 | class="block 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 " | 174 | class="block 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 " |
144 | placeholder="" type="checkbox" value="1" | 175 | placeholder="" type="checkbox" value="1" |
145 | /> | 176 | /> |
146 | </label><br> | 177 | </label><br> |
147 | 178 | ||
148 | <label class="block text-sm"> | 179 | <label class="block text-sm"> |
149 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Компания подтверждена </p> | 180 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Компания подтверждена </p> |
150 | <input type="hidden" name="oficial_status" value="0" /> | 181 | <input type="hidden" name="oficial_status" value="0" /> |
151 | <input name="oficial_status" <? if ($employer->oficial_status) echo "checked";?> | 182 | <input name="oficial_status" <? if ($employer->oficial_status) echo "checked";?> |
152 | class="block 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 " | 183 | class="block 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 " |
153 | placeholder="" type="checkbox" value="1" | 184 | placeholder="" type="checkbox" value="1" |
154 | /> | 185 | /> |
155 | </label><br> | 186 | </label><br> |
156 | 187 | ||
157 | <label class="block text-sm"> | 188 | <label class="block text-sm"> |
158 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Разрешение публикации в соц.сетях </p> | 189 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Разрешение публикации в соц.сетях </p> |
159 | <input type="hidden" name="social_is" value="0" /> | 190 | <input type="hidden" name="social_is" value="0" /> |
160 | <input name="social_is" <? if ($employer->social_is) echo "checked";?> | 191 | <input name="social_is" <? if ($employer->social_is) echo "checked";?> |
161 | class="block 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 " | 192 | class="block 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 " |
162 | placeholder="" type="checkbox" value="1" | 193 | placeholder="" type="checkbox" value="1" |
163 | /> | 194 | /> |
164 | </label><br> | 195 | </label><br> |
165 | 196 | ||
166 | <label class="block text-sm"> | 197 | <label class="block text-sm"> |
167 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Рассылка </p> | 198 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Рассылка </p> |
168 | <input type="hidden" name="sending_is" value="0" /> | 199 | <input type="hidden" name="sending_is" value="0" /> |
169 | <input name="sending_is" <? if ($employer->sending_is) echo "checked";?> | 200 | <input name="sending_is" <? if ($employer->sending_is) echo "checked";?> |
170 | class="block 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 " | 201 | class="block 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 " |
171 | placeholder="" type="checkbox" value="1" | 202 | placeholder="" type="checkbox" value="1" |
172 | /> | 203 | /> |
173 | </label><br> | 204 | </label><br> |
174 | 205 | ||
175 | </div> | 206 | </div> |
176 | <div id="content-3"> | 207 | <div id="content-3"> |
177 | Содержимое 3... | 208 | Содержимое 3... |
178 | </div> | 209 | </div> |
179 | </div> | 210 | </div> |
180 | <br> | 211 | <br> |
181 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | 212 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> |
182 | <div> | 213 | <div> |
183 | <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"> | 214 | <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"> |
184 | Сохранить | 215 | Сохранить |
185 | </button> | 216 | </button> |
186 | <a href="{{ route('admin.employers') }}" | 217 | <a href="{{ route('admin.employers') }}" |
187 | 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" | 218 | 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" |
188 | style="display: -webkit-inline-box; height: 30px!important;" | 219 | style="display: -webkit-inline-box; height: 30px!important;" |
189 | >Назад</a> | 220 | >Назад</a> |
190 | 221 | ||
191 | </div> | 222 | </div> |
192 | <!--<div> | 223 | <!--<div> |
193 | <a href="">Флот</a> | 224 | <a href="">Флот</a> |
194 | </div> | 225 | </div> |
195 | <div> | 226 | <div> |
196 | <a href="">Вакансии</a> | 227 | <a href="">Вакансии</a> |
197 | </div> | 228 | </div> |
198 | <div> | 229 | <div> |
199 | <a href="">Контакты</a> | 230 | <a href="">Контакты</a> |
200 | </div>--> | 231 | </div>--> |
201 | </div> | 232 | </div> |
202 | </div> | 233 | </div> |
203 | </form> | 234 | </form> |
204 | <!-- | 235 | <!-- |
205 | <label class="block mt-4 text-sm"> | 236 | <label class="block mt-4 text-sm"> |
206 | <span class="text-gray-700 dark:text-gray-400"> | 237 | <span class="text-gray-700 dark:text-gray-400"> |
207 | Requested Limit | 238 | Requested Limit |
208 | </span> | 239 | </span> |
209 | <select | 240 | <select |
210 | class="block w-full 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" | 241 | class="block w-full 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" |
211 | > | 242 | > |
212 | <option>$1,000</option> | 243 | <option>$1,000</option> |
213 | <option>$5,000</option> | 244 | <option>$5,000</option> |
214 | <option>$10,000</option> | 245 | <option>$10,000</option> |
215 | <option>$25,000</option> | 246 | <option>$25,000</option> |
216 | </select> | 247 | </select> |
217 | </label> | 248 | </label> |
218 | 249 | ||
219 | <label class="block mt-4 text-sm"> | 250 | <label class="block mt-4 text-sm"> |
220 | <span class="text-gray-700 dark:text-gray-400"> | 251 | <span class="text-gray-700 dark:text-gray-400"> |
221 | Multiselect | 252 | Multiselect |
222 | </span> | 253 | </span> |
223 | <select | 254 | <select |
224 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | 255 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" |
225 | multiple | 256 | multiple |
226 | > | 257 | > |
227 | <option>Option 1</option> | 258 | <option>Option 1</option> |
228 | <option>Option 2</option> | 259 | <option>Option 2</option> |
229 | <option>Option 3</option> | 260 | <option>Option 3</option> |
230 | <option>Option 4</option> | 261 | <option>Option 4</option> |
231 | <option>Option 5</option> | 262 | <option>Option 5</option> |
232 | </select> | 263 | </select> |
233 | </label> | 264 | </label> |
234 | 265 | ||
235 | <label class="block mt-4 text-sm"> | 266 | <label class="block mt-4 text-sm"> |
236 | <span class="text-gray-700 dark:text-gray-400">Message</span> | 267 | <span class="text-gray-700 dark:text-gray-400">Message</span> |
237 | <textarea | 268 | <textarea |
238 | 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" | 269 | 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" |
239 | rows="3" | 270 | rows="3" |
240 | placeholder="Enter some long form content." | 271 | placeholder="Enter some long form content." |
241 | ></textarea> | 272 | ></textarea> |
242 | </label> | 273 | </label> |
243 | 274 | ||
244 | <div class="flex mt-6 text-sm"> | 275 | <div class="flex mt-6 text-sm"> |
245 | <label class="flex items-center dark:text-gray-400"> | 276 | <label class="flex items-center dark:text-gray-400"> |
246 | <input | 277 | <input |
247 | type="checkbox" | 278 | type="checkbox" |
248 | class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | 279 | class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" |
249 | /> | 280 | /> |
250 | <span class="ml-2"> | 281 | <span class="ml-2"> |
251 | I agree to the | 282 | I agree to the |
252 | <span class="underline">privacy policy</span> | 283 | <span class="underline">privacy policy</span> |
253 | </span> | 284 | </span> |
254 | </label> | 285 | </label> |
255 | </div> | 286 | </div> |
256 | </div> | 287 | </div> |
257 | 288 | ||
258 | <!-- Validation inputs --> | 289 | <!-- Validation inputs --> |
259 | <!--<h4 | 290 | <!--<h4 |
260 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | 291 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" |
261 | > | 292 | > |
262 | Validation | 293 | Validation |
263 | </h4> | 294 | </h4> |
264 | <div | 295 | <div |
265 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | 296 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" |
266 | > | 297 | > |
267 | <!-- Invalid input --> | 298 | <!-- Invalid input --> |
268 | <!--<label class="block text-sm"> | 299 | <!--<label class="block text-sm"> |
269 | <span class="text-gray-700 dark:text-gray-400"> | 300 | <span class="text-gray-700 dark:text-gray-400"> |
270 | Invalid input | 301 | Invalid input |
271 | </span> | 302 | </span> |
272 | <input | 303 | <input |
273 | class="block w-full mt-1 text-sm border-red-600 dark:text-gray-300 dark:bg-gray-700 focus:border-red-400 focus:outline-none focus:shadow-outline-red form-input" | 304 | class="block w-full mt-1 text-sm border-red-600 dark:text-gray-300 dark:bg-gray-700 focus:border-red-400 focus:outline-none focus:shadow-outline-red form-input" |
274 | placeholder="Jane Doe" | 305 | placeholder="Jane Doe" |
275 | /> | 306 | /> |
276 | <span class="text-xs text-red-600 dark:text-red-400"> | 307 | <span class="text-xs text-red-600 dark:text-red-400"> |
277 | Your password is too short. | 308 | Your password is too short. |
278 | </span> | 309 | </span> |
279 | </label> | 310 | </label> |
280 | 311 | ||
281 | <!-- Valid input --> | 312 | <!-- Valid input --> |
282 | <!--<label class="block mt-4 text-sm"> | 313 | <!--<label class="block mt-4 text-sm"> |
283 | <span class="text-gray-700 dark:text-gray-400"> | 314 | <span class="text-gray-700 dark:text-gray-400"> |
284 | Valid input | 315 | Valid input |
285 | </span> | 316 | </span> |
286 | <input | 317 | <input |
287 | class="block w-full mt-1 text-sm border-green-600 dark:text-gray-300 dark:bg-gray-700 focus:border-green-400 focus:outline-none focus:shadow-outline-green form-input" | 318 | class="block w-full mt-1 text-sm border-green-600 dark:text-gray-300 dark:bg-gray-700 focus:border-green-400 focus:outline-none focus:shadow-outline-green form-input" |
288 | placeholder="Jane Doe" | 319 | placeholder="Jane Doe" |
289 | /> | 320 | /> |
290 | <span class="text-xs text-green-600 dark:text-green-400"> | 321 | <span class="text-xs text-green-600 dark:text-green-400"> |
291 | Your password is strong. | 322 | Your password is strong. |
292 | </span> | 323 | </span> |
293 | </label> | 324 | </label> |
294 | 325 | ||
295 | <!-- Helper text --> | 326 | <!-- Helper text --> |
296 | <!--<label class="block mt-4 text-sm"> | 327 | <!--<label class="block mt-4 text-sm"> |
297 | <span class="text-gray-700 dark:text-gray-400"> | 328 | <span class="text-gray-700 dark:text-gray-400"> |
298 | Helper text | 329 | Helper text |
299 | </span> | 330 | </span> |
300 | <input | 331 | <input |
301 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" | 332 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" |
302 | placeholder="Jane Doe" | 333 | placeholder="Jane Doe" |
303 | /> | 334 | /> |
304 | <span class="text-xs text-gray-600 dark:text-gray-400"> | 335 | <span class="text-xs text-gray-600 dark:text-gray-400"> |
305 | Your password must be at least 6 characters long. | 336 | Your password must be at least 6 characters long. |
306 | </span> | 337 | </span> |
307 | </label> | 338 | </label> |
308 | </div> | 339 | </div> |
309 | 340 | ||
310 | <!-- Inputs with icons --> | 341 | <!-- Inputs with icons --> |
311 | <!--<h4 | 342 | <!--<h4 |
312 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | 343 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" |
313 | > | 344 | > |
314 | Icons | 345 | Icons |
315 | </h4> | 346 | </h4> |
316 | <div | 347 | <div |
317 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | 348 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" |
318 | > | 349 | > |
319 | <label class="block text-sm"> | 350 | <label class="block text-sm"> |
320 | <span class="text-gray-700 dark:text-gray-400">Icon left</span> | 351 | <span class="text-gray-700 dark:text-gray-400">Icon left</span> |
321 | <!-- focus-within sets the color for the icon when input is focused --> | 352 | <!-- focus-within sets the color for the icon when input is focused --> |
322 | <!--<div | 353 | <!--<div |
323 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" | 354 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" |
324 | > | 355 | > |
325 | <input | 356 | <input |
326 | class="block w-full pl-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" | 357 | class="block w-full pl-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" |
327 | placeholder="Jane Doe" | 358 | placeholder="Jane Doe" |
328 | /> | 359 | /> |
329 | <div | 360 | <div |
330 | class="absolute inset-y-0 flex items-center ml-3 pointer-events-none" | 361 | class="absolute inset-y-0 flex items-center ml-3 pointer-events-none" |
331 | > | 362 | > |
332 | <svg | 363 | <svg |
333 | class="w-5 h-5" | 364 | class="w-5 h-5" |
334 | aria-hidden="true" | 365 | aria-hidden="true" |
335 | fill="none" | 366 | fill="none" |
336 | stroke-linecap="round" | 367 | stroke-linecap="round" |
337 | stroke-linejoin="round" | 368 | stroke-linejoin="round" |
338 | stroke-width="2" | 369 | stroke-width="2" |
339 | viewBox="0 0 24 24" | 370 | viewBox="0 0 24 24" |
340 | stroke="currentColor" | 371 | stroke="currentColor" |
341 | > | 372 | > |
342 | <path | 373 | <path |
343 | d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" | 374 | d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" |
344 | ></path> | 375 | ></path> |
345 | </svg> | 376 | </svg> |
346 | </div> | 377 | </div> |
347 | </div> | 378 | </div> |
348 | </label> | 379 | </label> |
349 | 380 | ||
350 | <label class="block mt-4 text-sm"> | 381 | <label class="block mt-4 text-sm"> |
351 | <span class="text-gray-700 dark:text-gray-400">Icon right</span> | 382 | <span class="text-gray-700 dark:text-gray-400">Icon right</span> |
352 | <!-- focus-within sets the color for the icon when input is focused --> | 383 | <!-- focus-within sets the color for the icon when input is focused --> |
353 | <!--<div | 384 | <!--<div |
354 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" | 385 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" |
355 | > | 386 | > |
356 | <input | 387 | <input |
357 | class="block w-full pr-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" | 388 | class="block w-full pr-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" |
358 | placeholder="Jane Doe" | 389 | placeholder="Jane Doe" |
359 | /> | 390 | /> |
360 | <div | 391 | <div |
361 | class="absolute inset-y-0 right-0 flex items-center mr-3 pointer-events-none" | 392 | class="absolute inset-y-0 right-0 flex items-center mr-3 pointer-events-none" |
362 | > | 393 | > |
363 | <svg | 394 | <svg |
364 | class="w-5 h-5" | 395 | class="w-5 h-5" |
365 | aria-hidden="true" | 396 | aria-hidden="true" |
366 | fill="none" | 397 | fill="none" |
367 | stroke-linecap="round" | 398 | stroke-linecap="round" |
368 | stroke-linejoin="round" | 399 | stroke-linejoin="round" |
369 | stroke-width="2" | 400 | stroke-width="2" |
370 | viewBox="0 0 24 24" | 401 | viewBox="0 0 24 24" |
371 | stroke="currentColor" | 402 | stroke="currentColor" |
372 | > | 403 | > |
373 | <path | 404 | <path |
374 | d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" | 405 | d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" |
375 | ></path> | 406 | ></path> |
376 | </svg> | 407 | </svg> |
377 | </div> | 408 | </div> |
378 | </div> | 409 | </div> |
379 | </label> | 410 | </label> |
380 | </div> | 411 | </div> |
381 | 412 | ||
382 | <!-- Inputs with buttons --> | 413 | <!-- Inputs with buttons --> |
383 | <!--<h4 | 414 | <!--<h4 |
384 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | 415 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" |
385 | > | 416 | > |
386 | Buttons | 417 | Buttons |
387 | </h4> | 418 | </h4> |
388 | <div | 419 | <div |
389 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | 420 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" |
390 | > | 421 | > |
391 | <label class="block text-sm"> | 422 | <label class="block text-sm"> |
392 | <span class="text-gray-700 dark:text-gray-400"> | 423 | <span class="text-gray-700 dark:text-gray-400"> |
393 | Button left | 424 | Button left |
394 | </span> | 425 | </span> |
395 | <div class="relative"> | 426 | <div class="relative"> |
396 | <input | 427 | <input |
397 | class="block w-full pl-20 mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" | 428 | class="block w-full pl-20 mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" |
398 | placeholder="Jane Doe" | 429 | placeholder="Jane Doe" |
399 | /> | 430 | /> |
400 | <button | 431 | <button |
401 | class="absolute inset-y-0 px-4 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-l-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | 432 | class="absolute inset-y-0 px-4 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-l-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" |
402 | > | 433 | > |
403 | Click | 434 | Click |
404 | </button> | 435 | </button> |
405 | </div> | 436 | </div> |
406 | </label> | 437 | </label> |
407 | 438 | ||
408 | <label class="block mt-4 text-sm"> | 439 | <label class="block mt-4 text-sm"> |
409 | <span class="text-gray-700 dark:text-gray-400"> | 440 | <span class="text-gray-700 dark:text-gray-400"> |
410 | Button right | 441 | Button right |
411 | </span> | 442 | </span> |
412 | <div | 443 | <div |
413 | class="relative text-gray-500 focus-within:text-purple-600" | 444 | class="relative text-gray-500 focus-within:text-purple-600" |
414 | > | 445 | > |
415 | <input | 446 | <input |
416 | class="block w-full pr-20 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" | 447 | class="block w-full pr-20 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" |
417 | placeholder="Jane Doe" | 448 | placeholder="Jane Doe" |
418 | /> | 449 | /> |
419 | <button | 450 | <button |
420 | class="absolute inset-y-0 right-0 px-4 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-r-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 451 | class="absolute inset-y-0 right-0 px-4 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-r-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
421 | > | 452 | > |
422 | Click | 453 | Click |
423 | </button> | 454 | </button> |
424 | </div> | 455 | </div> |
425 | </label> | 456 | </label> |
426 | </div>--> | 457 | </div>--> |
427 | @endsection | 458 | @endsection |
428 | 459 |
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 | @endsection | 39 | @endsection |
40 | 40 | ||
41 | @section('search') | 41 | @section('search') |
42 | @include('admin.find') | 42 | @include('admin.find_employer', ['select_category' => $select_category]) |
43 | @endsection | 43 | @endsection |
44 | 44 | ||
45 | @section('content') | 45 | @section('content') |
46 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | ||
47 | |||
48 | <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"> | ||
50 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | ||
51 | <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> | ||
53 | </svg> | ||
54 | </div> | ||
55 | <div> | ||
56 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | ||
57 | Всего работодателей | ||
58 | </p> | ||
59 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | ||
60 | {{ $all_employer }} | ||
61 | </p> | ||
62 | </div> | ||
63 | </div> | ||
64 | </div> | ||
65 | |||
66 | |||
46 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 67 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
47 | <div class="w-full overflow-x-auto"> | 68 | <div class="w-full overflow-x-auto"> |
48 | <table class="w-full whitespace-no-wrap"> | 69 | <table class="w-full whitespace-no-wrap"> |
49 | <thead> | 70 | <thead> |
50 | <tr | 71 | <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" | 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" |
52 | > | 73 | > |
53 | <th class="px-4 py-3">№</th> | 74 | <th class="px-4 py-3">№</th> |
54 | <th class="px-4 py-3">Название компании</th> | 75 | <th class="px-4 py-3">Название компании</th> |
55 | <th class="px-4 py-3">Email/Телефон</th> | 76 | <th class="px-4 py-3">Email/Телефон</th> |
56 | <th class="px-4 py-3">Имя</th> | 77 | <th class="px-4 py-3">Категория</th> |
78 | <th class="px-4 py-3">Комментарий</th> | ||
57 | <th class="px-4 py-3">Дата регистрации</th> | 79 | <th class="px-4 py-3">Дата регистрации</th> |
58 | <th class="px-4 py-3">Изменить</th> | 80 | <th class="px-4 py-3">Редакт.</th> |
59 | <th class="px-4 py-3">Бан</th> | ||
60 | </tr> | 81 | </tr> |
61 | </thead> | 82 | </thead> |
62 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 83 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
63 | @foreach($users as $user) | 84 | @foreach($users as $user) |
64 | <tr class="text-gray-700 dark:text-gray-400"> | 85 | <tr class="text-gray-700 dark:text-gray-400"> |
65 | <td class="px-4 py-3"> | 86 | <td class="px-4 py-3"> |
66 | {{$user->id}} | 87 | {{$user->id}} |
67 | </td> | 88 | </td> |
68 | <td class="px-4 py-3"> | 89 | <td class="px-4 py-3"> |
69 | {{$user->name}} | 90 | {{$user->name}} |
70 | </td> | 91 | </td> |
71 | <td class="px-4 py-3"> | 92 | <td class="px-4 py-3"> |
72 | <div class="flex items-center text-sm"> | 93 | <div class="flex items-center text-sm"> |
73 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 94 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
74 | <div | 95 | <div |
75 | class="absolute inset-0 rounded-full shadow-inner" | 96 | class="absolute inset-0 rounded-full shadow-inner" |
76 | aria-hidden="true" | 97 | aria-hidden="true" |
77 | ></div> | 98 | ></div> |
78 | </div>--> | 99 | </div>--> |
79 | <div> | 100 | <div> |
80 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | 101 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> |
81 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 102 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
82 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | 103 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} |
83 | </p> | 104 | </p> |
84 | </div> | 105 | </div> |
85 | </div> | 106 | </div> |
86 | 107 | ||
87 | </td> | 108 | </td> |
88 | <td class="px-4 py-3 text-sm"> | 109 | <td class="px-4 py-3 text-sm"> |
89 | {{ $user->name_man }} ({{ $user->usr_id }}) | 110 | {{ $user->category }} |
111 | </td> | ||
112 | <td class="px-4 py-3 text-sm"> | ||
113 | {{ $user->comment_admin }} | ||
90 | </td> | 114 | </td> |
91 | <td class="px-4 py-3 text-sm"> | 115 | <td class="px-4 py-3 text-sm"> |
92 | {{ $user->created_at }} | 116 | {{ $user->created_at }} |
93 | </td> | 117 | </td> |
94 | <td class="px-4 py-3 text-sm"> | 118 | <td class="px-4 py-3 text-sm"> |
95 | @if (!empty($user->emp_id)) | 119 | @if (!empty($user->emp_id)) |
96 | <a href="{{ route('admin.employer-profile', ['employer' => $user->emp_id]) }}">Изменить</a> | 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> | | ||
122 | @csrf | ||
123 | @method('DELETE') | ||
124 | <input class="btn btn-danger" type="submit" value="Удалить"/> | ||
125 | </form> | ||
97 | @endif | 126 | @endif |
98 | </td> | 127 | </td> |
99 | <td class="px-4 py-3 text-sm"> | 128 | <!--<td class="px-4 py-3 text-sm"> |
100 | @if ($user->usr_id > 1) | 129 | @if ($user->usr_id > 1) |
101 | <input type="checkbox" class="checkban" value="{{$user->usr_id}}" name="ban_{{$user->usr_id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 130 | <input type="checkbox" class="checkban" value="{{$user->usr_id}}" name="ban_{{$user->usr_id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
102 | @endif | 131 | @endif |
103 | </td> | 132 | </td>--> |
104 | </tr> | 133 | </tr> |
105 | @endforeach | 134 | @endforeach |
106 | </tbody> | 135 | </tbody> |
107 | </table> | 136 | </table> |
108 | </div> | 137 | </div> |
109 | 138 | ||
110 | <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"> | 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"> |
111 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 140 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
112 | </div> | 141 | </div> |
113 | </div> | 142 | </div> |
114 | @endsection | 143 | @endsection |
resources/views/admin/find_employer.blade.php
File was created | 1 | <div class="absolute inset-y-0 flex items-center pl-2"> | |
2 | <svg | ||
3 | class="w-4 h-4" | ||
4 | aria-hidden="true" | ||
5 | fill="currentColor" | ||
6 | viewBox="0 0 20 20" | ||
7 | > | ||
8 | <path | ||
9 | fill-rule="evenodd" | ||
10 | 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" | ||
11 | clip-rule="evenodd" | ||
12 | ></path> | ||
13 | </svg> | ||
14 | </div> | ||
15 | <form action="" method="GET"> | ||
16 | <div style="float:left; margin-right:10px"><input | ||
17 | name="find" id="find" | ||
18 | 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" | ||
19 | style="width: 300px" | ||
20 | type="text" | ||
21 | placeholder="Искать..." | ||
22 | aria-label="Search" | ||
23 | value="{{$find_key}}" | ||
24 | /> | ||
25 | </div> | ||
26 | <div style="float:left; margin-top: -5px;"> | ||
27 | <select | ||
28 | name="category" id="category" | ||
29 | placeholder="Категории" | ||
30 | class="block w-full 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" | ||
31 | > | ||
32 | <option value="Все категории">Все категории</option> | ||
33 | @foreach ($select_category as $cat) | ||
34 | <option value="{{$cat->name}}" @if ($find_cat ==$cat->name) selected @endif>{{$cat->name}}</option> | ||
35 | @endforeach | ||
36 | </select> | ||
37 | </div> | ||
38 | <div style="float: left"> | ||
39 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Искать</button> | ||
40 | </div> | ||
41 | </form> | ||
42 |
resources/views/admin/find_worker.blade.php
File was created | 1 | <div class="absolute inset-y-0 flex items-center pl-2"> | |
2 | <svg | ||
3 | class="w-4 h-4" | ||
4 | aria-hidden="true" | ||
5 | fill="currentColor" | ||
6 | viewBox="0 0 20 20" | ||
7 | > | ||
8 | <path | ||
9 | fill-rule="evenodd" | ||
10 | 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" | ||
11 | clip-rule="evenodd" | ||
12 | ></path> | ||
13 | </svg> | ||
14 | </div> | ||
15 | <form action="" method="GET"> | ||
16 | <div style="float:left; margin-right:10px"><input | ||
17 | name="find" id="find" | ||
18 | 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" | ||
19 | style="width: 250px" | ||
20 | type="text" | ||
21 | placeholder="Искать..." | ||
22 | aria-label="Search" | ||
23 | value="{{$find_key}}" | ||
24 | /> | ||
25 | </div> | ||
26 | <div style="float:left; margin-top: -5px;"> | ||
27 | <select | ||
28 | name="status_work" id="status_worker" | ||
29 | placeholder="Должности" | ||
30 | class="block w-full 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" | ||
31 | > | ||
32 | <option value="0">Все должности</option> | ||
33 | @foreach ($status_work as $cat) | ||
34 | <option value="{{$cat->id}}" @if ($find_status_work ==$cat->id) selected @endif>{{$cat->name}}</option> | ||
35 | @endforeach | ||
36 | </select> | ||
37 | </div> | ||
38 | <div style="float: left"> | ||
39 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Искать</button> | ||
40 | </div> | ||
41 | </form> | ||
42 |
resources/views/admin/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Главная страница']) | 1 | @extends('layout.admin', ['title' => 'Админка - Главная страница']) |
2 | 2 | ||
3 | @section('content') | 3 | @section('content') |
4 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 4 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
5 | 5 | ||
6 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 6 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
7 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> | 7 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> |
8 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 8 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
9 | <path | 9 | <path |
10 | 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> | 10 | 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> |
11 | </svg> | 11 | </svg> |
12 | </div> | 12 | </div> |
13 | <div> | 13 | <div> |
14 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 14 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
15 | Всего пользователей | 15 | Всего пользователей |
16 | </p> | 16 | </p> |
17 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 17 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
18 | {{ $all_user }} | 18 | {{ $all_user }} |
19 | </p> | 19 | </p> |
20 | </div> | 20 | </div> |
21 | </div> | 21 | </div> |
22 | 22 | ||
23 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 23 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
24 | <div class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500"> | 24 | <div class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500"> |
25 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 25 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
26 | <path | 26 | <path |
27 | fill-rule="evenodd" | 27 | fill-rule="evenodd" |
28 | 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" | 28 | 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" |
29 | clip-rule="evenodd" | 29 | clip-rule="evenodd" |
30 | ></path> | 30 | ></path> |
31 | </svg> | 31 | </svg> |
32 | </div> | 32 | </div> |
33 | <div> | 33 | <div> |
34 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 34 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
35 | Работодателей | 35 | Работодателей |
36 | </p> | 36 | </p> |
37 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 37 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
38 | {{ $all_employer }} | 38 | {{ $all_employer }} |
39 | </p> | 39 | </p> |
40 | </div> | 40 | </div> |
41 | </div> | 41 | </div> |
42 | 42 | ||
43 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 43 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
44 | <div class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500"> | 44 | <div class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500"> |
45 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 45 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
46 | <path 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"></path> | 46 | <path 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"></path> |
47 | </svg> | 47 | </svg> |
48 | </div> | 48 | </div> |
49 | <div> | 49 | <div> |
50 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 50 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
51 | Соискателей | 51 | Соискателей |
52 | </p> | 52 | </p> |
53 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 53 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
54 | {{$all_worker}} | 54 | {{$all_worker}} |
55 | </p> | 55 | </p> |
56 | </div> | 56 | </div> |
57 | </div> | 57 | </div> |
58 | 58 | ||
59 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 59 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
60 | <div class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500"> | 60 | <div class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500"> |
61 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 61 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
62 | <path | 62 | <path |
63 | fill-rule="evenodd" | 63 | fill-rule="evenodd" |
64 | 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" | 64 | 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" |
65 | clip-rule="evenodd" | 65 | clip-rule="evenodd" |
66 | ></path> | 66 | ></path> |
67 | </svg> | 67 | </svg> |
68 | </div> | 68 | </div> |
69 | <div> | 69 | <div> |
70 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 70 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
71 | Администраторы | 71 | Администраторы |
72 | </p> | 72 | </p> |
73 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 73 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
74 | {{$all_admin}} | 74 | {{$all_admin}} |
75 | </p> | 75 | </p> |
76 | </div> | 76 | </div> |
77 | </div> | 77 | </div> |
78 | </div> | 78 | </div> |
79 | 79 | ||
80 | <!-- Таблицы --> | 80 | <!-- Таблицы --> |
81 | 81 | ||
82 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 82 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> |
83 | <div class="w-full overflow-x-auto"> | 83 | <div class="w-full overflow-x-auto"> |
84 | <table class="w-full whitespace-no-wrap"> | 84 | <table class="w-full whitespace-no-wrap"> |
85 | <thead> | 85 | <thead> |
86 | <tr | 86 | <tr |
87 | 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" | 87 | 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" |
88 | > | 88 | > |
89 | <th class="px-4 py-3">Название</th> | 89 | <th class="px-4 py-3">Название</th> |
90 | <th class="px-4 py-3">Таблица</th> | 90 | <th class="px-4 py-3">Таблица</th> |
91 | <th class="px-4 py-3">Редактирование</th> | 91 | <th class="px-4 py-3">Редактирование</th> |
92 | <th class="px-4 py-3">Дата</th> | 92 | <th class="px-4 py-3">Дата</th> |
93 | </tr> | 93 | </tr> |
94 | </thead> | 94 | </thead> |
95 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 95 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
96 | <tr class="text-gray-700 dark:text-gray-400"> | 96 | <tr class="text-gray-700 dark:text-gray-400"> |
97 | <td class="px-4 py-3"> | 97 | <td class="px-4 py-3"> |
98 | <div class="flex items-center text-sm"> | 98 | <div class="flex items-center text-sm"> |
99 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 99 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
100 | <div | 100 | <div |
101 | class="absolute inset-0 rounded-full shadow-inner" | 101 | class="absolute inset-0 rounded-full shadow-inner" |
102 | aria-hidden="true" | 102 | aria-hidden="true" |
103 | ></div> | 103 | ></div> |
104 | </div> | 104 | </div> |
105 | <div> | 105 | <div> |
106 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | 106 | <p class="font-semibold"> |
107 | @if ($UserId == 1) | ||
108 | <a href="{{ route('admin.users') }}">Пользователи</a> | ||
109 | @else | ||
110 | Пользователи | ||
111 | @endif | ||
112 | </p> | ||
107 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 113 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
108 | Все пользователи сайта | 114 | Все пользователи сайта. Управление ими. Только для разработчика! |
109 | </p> | 115 | </p> |
110 | </div> | 116 | </div> |
111 | </div> | 117 | </div> |
112 | </td> | 118 | </td> |
113 | <td class="px-4 py-3 text-sm"> | 119 | <td class="px-4 py-3 text-sm"> |
114 | users | 120 | users |
115 | </td> | 121 | </td> |
116 | <td class="px-4 py-3 text-xs"> | 122 | <td class="px-4 py-3 text-xs"> |
117 | <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"> | 123 | <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"> |
118 | Доступно | 124 | Недоступно |
119 | </span> | 125 | </span> |
120 | <!--<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"> | 126 | <!--<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"> |
121 | Недоступно | 127 | Недоступно |
122 | </span>--> | 128 | </span>--> |
123 | </td> | 129 | </td> |
124 | <td class="px-4 py-3 text-sm"> | 130 | <td class="px-4 py-3 text-sm"> |
125 | май 2023 | 131 | май 2023 |
126 | </td> | 132 | </td> |
127 | </tr> | 133 | </tr> |
128 | 134 | ||
129 | <tr class="text-gray-700 dark:text-gray-400"> | 135 | <tr class="text-gray-700 dark:text-gray-400"> |
130 | <td class="px-4 py-3"> | 136 | <td class="px-4 py-3"> |
131 | <div class="flex items-center text-sm"> | 137 | <div class="flex items-center text-sm"> |
132 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 138 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
133 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 139 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
134 | </div> | 140 | </div> |
135 | <div> | 141 | <div> |
136 | <p class="font-semibold"><a href="{{ route('admin.employers') }}">Работодатели</a></p> | 142 | <p class="font-semibold"><a href="{{ route('admin.employers') }}">Работодатели</a></p> |
137 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 143 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
138 | Все работодатели сайта | 144 | Все работодатели сайта |
139 | </p> | 145 | </p> |
140 | </div> | 146 | </div> |
141 | </div> | 147 | </div> |
142 | </td> | 148 | </td> |
143 | <td class="px-4 py-3 text-sm"> | 149 | <td class="px-4 py-3 text-sm"> |
144 | employers | 150 | employers |
145 | </td> | 151 | </td> |
146 | <td class="px-4 py-3 text-xs"> | 152 | <td class="px-4 py-3 text-xs"> |
147 | <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"> | 153 | <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"> |
148 | Доступно | 154 | Доступно |
149 | </span> | 155 | </span> |
150 | </td> | 156 | </td> |
151 | <td class="px-4 py-3 text-sm"> | 157 | <td class="px-4 py-3 text-sm"> |
152 | май 2023 | 158 | май 2023 |
153 | </td> | 159 | </td> |
154 | </tr> | 160 | </tr> |
155 | 161 | ||
156 | <tr class="text-gray-700 dark:text-gray-400"> | 162 | <tr class="text-gray-700 dark:text-gray-400"> |
157 | <td class="px-4 py-3"> | 163 | <td class="px-4 py-3"> |
158 | <div class="flex items-center text-sm"> | 164 | <div class="flex items-center text-sm"> |
159 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 165 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
160 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 166 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
161 | </div> | 167 | </div> |
162 | <div> | 168 | <div> |
163 | <p class="font-semibold"><a href="{{ route('admin.workers') }}">Соискатели</a></p> | 169 | <p class="font-semibold"><a href="{{ route('admin.workers') }}">Соискатели</a></p> |
164 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 170 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
165 | Все работники сайта | 171 | Все работники сайта |
166 | </p> | 172 | </p> |
167 | </div> | 173 | </div> |
168 | </div> | 174 | </div> |
169 | </td> | 175 | </td> |
170 | <td class="px-4 py-3 text-sm"> | 176 | <td class="px-4 py-3 text-sm"> |
171 | workers | 177 | workers |
172 | </td> | 178 | </td> |
173 | <td class="px-4 py-3 text-xs"> | 179 | <td class="px-4 py-3 text-xs"> |
174 | <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"> | 180 | <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"> |
175 | Доступно | 181 | Доступно |
176 | </span> | 182 | </span> |
177 | </td> | 183 | </td> |
178 | <td class="px-4 py-3 text-sm"> | 184 | <td class="px-4 py-3 text-sm"> |
179 | май 2023 | 185 | май 2023 |
180 | </td> | 186 | </td> |
181 | </tr> | 187 | </tr> |
182 | 188 | ||
183 | <tr class="text-gray-700 dark:text-gray-400"> | 189 | <tr class="text-gray-700 dark:text-gray-400"> |
184 | <td class="px-4 py-3"> | 190 | <td class="px-4 py-3"> |
185 | <div class="flex items-center text-sm"> | 191 | <div class="flex items-center text-sm"> |
186 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 192 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
187 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 193 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
188 | </div> | 194 | </div> |
189 | <div> | 195 | <div> |
190 | <p class="font-semibold"><a href="{{ route('admin.ad-employers') }}">Вакансии</a></p> | 196 | <p class="font-semibold"><a href="{{ route('admin.ad-employers') }}">Вакансии</a></p> |
191 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 197 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
192 | Все вакансии сайта | 198 | Все вакансии сайта |
193 | </p> | 199 | </p> |
194 | </div> | 200 | </div> |
195 | </div> | 201 | </div> |
196 | </td> | 202 | </td> |
197 | <td class="px-4 py-3 text-sm"> | 203 | <td class="px-4 py-3 text-sm"> |
198 | ad_employers | 204 | ad_employers |
199 | </td> | 205 | </td> |
200 | <td class="px-4 py-3 text-xs"> | 206 | <td class="px-4 py-3 text-xs"> |
201 | <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"> | 207 | <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"> |
202 | Доступно | 208 | Доступно |
203 | </span> | 209 | </span> |
204 | </td> | 210 | </td> |
205 | <td class="px-4 py-3 text-sm"> | 211 | <td class="px-4 py-3 text-sm"> |
206 | май 2023 | 212 | май 2023 |
207 | </td> | 213 | </td> |
208 | </tr> | 214 | </tr> |
209 | 215 | ||
210 | <tr class="text-gray-700 dark:text-gray-400"> | 216 | <tr class="text-gray-700 dark:text-gray-400"> |
211 | <td class="px-4 py-3"> | 217 | <td class="px-4 py-3"> |
212 | <div class="flex items-center text-sm"> | 218 | <div class="flex items-center text-sm"> |
213 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 219 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
214 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 220 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
215 | </div> | 221 | </div> |
216 | <div> | 222 | <div> |
217 | <p class="font-semibold"><a href="{{ route('admin.categories.index') }}">Категории</a></p> | 223 | <p class="font-semibold"><a href="{{ route('admin.education.index') }}">Справочник образования</a></p> |
224 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
225 | Справочник образование | ||
226 | </p> | ||
227 | </div> | ||
228 | </div> | ||
229 | </td> | ||
230 | <td class="px-4 py-3 text-sm"> | ||
231 | education | ||
232 | </td> | ||
233 | <td class="px-4 py-3 text-xs"> | ||
234 | <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"> | ||
235 | Доступно | ||
236 | </span> | ||
237 | </td> | ||
238 | <td class="px-4 py-3 text-sm"> | ||
239 | октябрь 2023 | ||
240 | </td> | ||
241 | </tr> | ||
242 | |||
243 | <tr class="text-gray-700 dark:text-gray-400"> | ||
244 | <td class="px-4 py-3"> | ||
245 | <div class="flex items-center text-sm"> | ||
246 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
247 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | ||
248 | </div> | ||
249 | <div> | ||
250 | <p class="font-semibold"><a href="{{ route('admin.categories.index') }}">Категории вакансий</a></p> | ||
218 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 251 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
219 | Справочник категории (по умолчанию: река, море, река-море) | 252 | Справочник категории вакансий (по умолчанию: река, море, река-море) |
220 | </p> | 253 | </p> |
221 | </div> | 254 | </div> |
222 | </div> | 255 | </div> |
223 | </td> | 256 | </td> |
224 | <td class="px-4 py-3 text-sm"> | 257 | <td class="px-4 py-3 text-sm"> |
225 | category | 258 | category |
226 | </td> | 259 | </td> |
227 | <td class="px-4 py-3 text-xs"> | 260 | <td class="px-4 py-3 text-xs"> |
228 | <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"> | 261 | <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"> |
229 | Доступно | 262 | Доступно |
230 | </span> | 263 | </span> |
231 | </td> | 264 | </td> |
232 | <td class="px-4 py-3 text-sm"> | 265 | <td class="px-4 py-3 text-sm"> |
233 | май 2023 | 266 | май 2023 |
234 | </td> | 267 | </td> |
235 | </tr> | 268 | </tr> |
236 | 269 | ||
237 | <tr class="text-gray-700 dark:text-gray-400"> | 270 | <tr class="text-gray-700 dark:text-gray-400"> |
238 | <td class="px-4 py-3"> | 271 | <td class="px-4 py-3"> |
239 | <div class="flex items-center text-sm"> | 272 | <div class="flex items-center text-sm"> |
240 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 273 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
241 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 274 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
242 | </div> | 275 | </div> |
243 | <div> | 276 | <div> |
277 | <p class="font-semibold"><a href="{{ route('admin.category-emp.index') }}">Категории работодателей</a></p> | ||
278 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
279 | Справочник категории работодателей <br>(по умолчанию: не определен, оплатили, согласование, не оплачен) | ||
280 | </p> | ||
281 | </div> | ||
282 | </div> | ||
283 | </td> | ||
284 | <td class="px-4 py-3 text-sm"> | ||
285 | category_emps | ||
286 | </td> | ||
287 | <td class="px-4 py-3 text-xs"> | ||
288 | <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"> | ||
289 | Доступно | ||
290 | </span> | ||
291 | </td> | ||
292 | <td class="px-4 py-3 text-sm"> | ||
293 | октябрь 2023 | ||
294 | </td> | ||
295 | </tr> | ||
296 | |||
297 | <tr class="text-gray-700 dark:text-gray-400"> | ||
298 | <td class="px-4 py-3"> | ||
299 | <div class="flex items-center text-sm"> | ||
300 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
301 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | ||
302 | </div> | ||
303 | <div> | ||
244 | <p class="font-semibold"><a href="{{ route('admin.job-titles.index') }}">Должности</a></p> | 304 | <p class="font-semibold"><a href="{{ route('admin.job-titles.index') }}">Должности</a></p> |
245 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 305 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
246 | Справочник должности (все должности проекта) | 306 | Справочник должности (все должности проекта) |
247 | </p> | 307 | </p> |
248 | </div> | 308 | </div> |
249 | </div> | 309 | </div> |
250 | </td> | 310 | </td> |
251 | <td class="px-4 py-3 text-sm"> | 311 | <td class="px-4 py-3 text-sm"> |
252 | job_titles | 312 | job_titles |
253 | </td> | 313 | </td> |
254 | <td class="px-4 py-3 text-xs"> | 314 | <td class="px-4 py-3 text-xs"> |
255 | <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"> | 315 | <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"> |
256 | Доступно | 316 | Доступно |
257 | </span> | 317 | </span> |
258 | </td> | 318 | </td> |
259 | <td class="px-4 py-3 text-sm"> | 319 | <td class="px-4 py-3 text-sm"> |
260 | май 2023 | 320 | май 2023 |
261 | </td> | 321 | </td> |
262 | </tr> | 322 | </tr> |
263 | 323 | ||
264 | <tr class="text-gray-700 dark:text-gray-400"> | 324 | <tr class="text-gray-700 dark:text-gray-400"> |
265 | <td class="px-4 py-3"> | 325 | <td class="px-4 py-3"> |
266 | <div class="flex items-center text-sm"> | 326 | <div class="flex items-center text-sm"> |
267 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 327 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
268 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 328 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
269 | </div> | 329 | </div> |
270 | <div> | 330 | <div> |
271 | <p class="font-semibold"><a href="{{ route('admin.infobloks.index') }}">Документы-Дипломы</a></p> | 331 | <p class="font-semibold"><a href="{{ route('admin.infobloks.index') }}">Документы-Дипломы</a></p> |
272 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 332 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
273 | Справочник документы-дипломы (все блоки-документы необходимые соискателю) | 333 | Справочник документы-дипломы (все блоки-документы необходимые соискателю) |
274 | </p> | 334 | </p> |
275 | </div> | 335 | </div> |
276 | </div> | 336 | </div> |
277 | </td> | 337 | </td> |
278 | <td class="px-4 py-3 text-sm"> | 338 | <td class="px-4 py-3 text-sm"> |
279 | infobloks | 339 | infobloks |
280 | </td> | 340 | </td> |
281 | <td class="px-4 py-3 text-xs"> | 341 | <td class="px-4 py-3 text-xs"> |
282 | <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"> | 342 | <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"> |
283 | Доступно | 343 | Доступно |
284 | </span> | 344 | </span> |
285 | </td> | 345 | </td> |
286 | <td class="px-4 py-3 text-sm"> | 346 | <td class="px-4 py-3 text-sm"> |
287 | сентябрь 2023 | 347 | сентябрь 2023 |
288 | </td> | 348 | </td> |
289 | </tr> | 349 | </tr> |
290 | 350 | ||
291 | <tr class="text-gray-700 dark:text-gray-400"> | 351 | <tr class="text-gray-700 dark:text-gray-400"> |
292 | <td class="px-4 py-3"> | 352 | <td class="px-4 py-3"> |
293 | <div class="flex items-center text-sm"> | 353 | <div class="flex items-center text-sm"> |
294 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 354 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
295 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 355 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
296 | </div> | 356 | </div> |
297 | <div> | 357 | <div> |
298 | <p class="font-semibold"><a href="{{ route('admin.messages') }}">Сообщения</a></p> | 358 | <p class="font-semibold"><a href="{{ route('admin.messages') }}">Сообщения</a></p> |
299 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 359 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
300 | Все сообщения сайта | 360 | Все сообщения сайта |
301 | </p> | 361 | </p> |
302 | </div> | 362 | </div> |
303 | </div> | 363 | </div> |
304 | </td> | 364 | </td> |
305 | <td class="px-4 py-3 text-sm"> | 365 | <td class="px-4 py-3 text-sm"> |
306 | messages | 366 | messages |
307 | </td> | 367 | </td> |
308 | <td class="px-4 py-3 text-xs"> | 368 | <td class="px-4 py-3 text-xs"> |
309 | <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"> | 369 | <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"> |
310 | Недоступно | 370 | Недоступно |
311 | </span> | 371 | </span> |
312 | </td> | 372 | </td> |
313 | <td class="px-4 py-3 text-sm"> | 373 | <td class="px-4 py-3 text-sm"> |
314 | май 2023 | 374 | май 2023 |
315 | </td> | 375 | </td> |
316 | </tr> | 376 | </tr> |
317 | 377 | ||
318 | <tr class="text-gray-700 dark:text-gray-400"> | 378 | <tr class="text-gray-700 dark:text-gray-400"> |
319 | <td class="px-4 py-3"> | 379 | <td class="px-4 py-3"> |
320 | <div class="flex items-center text-sm"> | 380 | <div class="flex items-center text-sm"> |
321 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 381 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
322 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 382 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
323 | </div> | 383 | </div> |
324 | <div> | 384 | <div> |
325 | <p class="font-semibold"><a href="{{ route('admin.groups') }}">Группы пользователей</a></p> | 385 | <p class="font-semibold"><a href="{{ route('admin.groups') }}">Группы пользователей</a></p> |
326 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 386 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
327 | Группировка людей в именованные группы | 387 | Группировка людей в именованные группы |
328 | </p> | 388 | </p> |
329 | </div> | 389 | </div> |
330 | </div> | 390 | </div> |
331 | </td> | 391 | </td> |
332 | <td class="px-4 py-3 text-sm"> | 392 | <td class="px-4 py-3 text-sm"> |
333 | group_users | 393 | group_users |
334 | </td> | 394 | </td> |
335 | <td class="px-4 py-3 text-xs"> | 395 | <td class="px-4 py-3 text-xs"> |
336 | <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"> | 396 | <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"> |
337 | Доступно | 397 | Доступно |
338 | </span> | 398 | </span> |
339 | </td> | 399 | </td> |
340 | <td class="px-4 py-3 text-sm"> | 400 | <td class="px-4 py-3 text-sm"> |
341 | май 2023 | 401 | май 2023 |
342 | </td> | 402 | </td> |
343 | </tr> | 403 | </tr> |
344 | 404 | ||
345 | <tr class="text-gray-700 dark:text-gray-400"> | 405 | <tr class="text-gray-700 dark:text-gray-400"> |
346 | <td class="px-4 py-3"> | 406 | <td class="px-4 py-3"> |
347 | <div class="flex items-center text-sm"> | 407 | <div class="flex items-center text-sm"> |
348 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 408 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
349 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 409 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
350 | </div> | 410 | </div> |
351 | <div> | 411 | <div> |
352 | <p class="font-semibold"><a href="{{ route('admin.roles') }}">Роли пользователей</a></p> | 412 | <p class="font-semibold"> |
413 | @if ($UserId == 1) | ||
414 | <a href="{{ route('admin.roles') }}">Роли пользователей</a> | ||
415 | @else | ||
416 | Роли пользователей | ||
417 | @endif | ||
418 | </p> | ||
353 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 419 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
354 | Роли людей (запреты и доступы) в системе | 420 | Роли людей (запреты и доступы) в системе. Только для разработчика! |
355 | </p> | 421 | </p> |
356 | </div> | 422 | </div> |
357 | </div> | 423 | </div> |
358 | </td> | 424 | </td> |
359 | <td class="px-4 py-3 text-sm"> | 425 | <td class="px-4 py-3 text-sm"> |
360 | users | 426 | users |
361 | </td> | 427 | </td> |
362 | <td class="px-4 py-3 text-xs"> | 428 | <td class="px-4 py-3 text-xs"> |
363 | <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"> | 429 | <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"> |
364 | Доступно | 430 | Недоступно |
365 | </span> | 431 | </span> |
366 | </td> | 432 | </td> |
367 | <td class="px-4 py-3 text-sm"> | 433 | <td class="px-4 py-3 text-sm"> |
368 | сентябрь 2023 | 434 | сентябрь 2023 |
369 | </td> | 435 | </td> |
370 | </tr> | 436 | </tr> |
371 | 437 | ||
372 | <tr class="text-gray-700 dark:text-gray-400"> | 438 | <tr class="text-gray-700 dark:text-gray-400"> |
373 | <td class="px-4 py-3"> | 439 | <td class="px-4 py-3"> |
374 | <div class="flex items-center text-sm"> | 440 | <div class="flex items-center text-sm"> |
375 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 441 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
376 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 442 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
377 | </div> | 443 | </div> |
378 | <div> | 444 | <div> |
379 | <p class="font-semibold"><a href="{{ route('admin.statics') }}">Статистика</a></p> | 445 | <p class="font-semibold"><a href="{{ route('admin.statics') }}">Статистика</a></p> |
380 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 446 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
381 | Статистика соискателей и работодателей | 447 | Статистика соискателей и работодателей |
382 | </p> | 448 | </p> |
383 | </div> | 449 | </div> |
384 | </div> | 450 | </div> |
385 | </td> | 451 | </td> |
386 | <td class="px-4 py-3 text-sm"> | 452 | <td class="px-4 py-3 text-sm"> |
387 | static_workers, static_ads | 453 | static_workers, static_ads |
388 | </td> | 454 | </td> |
389 | <td class="px-4 py-3 text-xs"> | 455 | <td class="px-4 py-3 text-xs"> |
390 | <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"> | 456 | <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"> |
391 | Недоступно | 457 | Недоступно |
392 | </span> | 458 | </span> |
393 | </td> | 459 | </td> |
394 | <td class="px-4 py-3 text-sm"> | 460 | <td class="px-4 py-3 text-sm"> |
395 | сентябрь 2023 | 461 | сентябрь 2023 |
396 | </td> | 462 | </td> |
397 | </tr> | 463 | </tr> |
398 | 464 | ||
399 | <tr class="text-gray-700 dark:text-gray-400"> | 465 | <tr class="text-gray-700 dark:text-gray-400"> |
400 | <td class="px-4 py-3"> | 466 | <td class="px-4 py-3"> |
401 | <div class="flex items-center text-sm"> | 467 | <div class="flex items-center text-sm"> |
402 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 468 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
403 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 469 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
404 | </div> | 470 | </div> |
405 | <div> | 471 | <div> |
406 | <p class="font-semibold"><a href="{{ route('admin.editor-site') }}">Редактор сайта</a></p> | 472 | <p class="font-semibold"><a href="{{ route('admin.editor-site') }}">Редактор сайта</a></p> |
407 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 473 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
408 | Все редакторы системы | 474 | Все редакторы системы |
409 | </p> | 475 | </p> |
410 | </div> | 476 | </div> |
411 | </div> | 477 | </div> |
412 | </td> | 478 | </td> |
413 | <td class="px-4 py-3 text-sm"> | 479 | <td class="px-4 py-3 text-sm"> |
414 | header_footer, job_titles_mains, employers_mains,<br> pages, seo, reclames, companies | 480 | header_footer, job_titles_mains, employers_mains,<br> pages, seo, reclames, companies |
415 | </td> | 481 | </td> |
416 | <td class="px-4 py-3 text-xs"> | 482 | <td class="px-4 py-3 text-xs"> |
417 | <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"> | 483 | <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"> |
418 | Доступно | 484 | Доступно |
419 | </span> | 485 | </span> |
420 | </td> | 486 | </td> |
421 | <td class="px-4 py-3 text-sm"> | 487 | <td class="px-4 py-3 text-sm"> |
422 | сентябрь 2023 | 488 | сентябрь 2023 |
423 | </td> | 489 | </td> |
424 | </tr> | 490 | </tr> |
425 | <tr class="text-gray-700 dark:text-gray-400"> | 491 | <tr class="text-gray-700 dark:text-gray-400"> |
426 | <td class="px-4 py-3"> | 492 | <td class="px-4 py-3"> |
427 | <div class="flex items-center text-sm"> | 493 | <div class="flex items-center text-sm"> |
428 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 494 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
429 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 495 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
430 | </div> | 496 | </div> |
431 | <div> | 497 | <div> |
432 | <p class="font-semibold"><a href="{{ route('admin.answers') }}">Модерация</a></p> | 498 | <p class="font-semibold"><a href="{{ route('admin.answers') }}">Модерация</a></p> |
433 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 499 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
434 | Модерация отзывов о работодателе | 500 | Модерация отзывов о работодателе |
435 | </p> | 501 | </p> |
436 | </div> | 502 | </div> |
437 | </div> | 503 | </div> |
438 | </td> | 504 | </td> |
439 | <td class="px-4 py-3 text-sm"> | 505 | <td class="px-4 py-3 text-sm"> |
440 | answers | 506 | answers |
441 | </td> | 507 | </td> |
442 | <td class="px-4 py-3 text-xs"> | 508 | <td class="px-4 py-3 text-xs"> |
443 | <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"> | 509 | <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"> |
444 | Доступно | 510 | Доступно |
445 | </span> | 511 | </span> |
446 | </td> | 512 | </td> |
447 | <td class="px-4 py-3 text-sm"> | 513 | <td class="px-4 py-3 text-sm"> |
448 | сентябрь 2023 | 514 | сентябрь 2023 |
449 | </td> | 515 | </td> |
450 | </tr> | 516 | </tr> |
451 | 517 | ||
452 | <!--<tr class="text-gray-700 dark:text-gray-400"> | 518 | <!--<tr class="text-gray-700 dark:text-gray-400"> |
453 | <td class="px-4 py-3"> | 519 | <td class="px-4 py-3"> |
454 | <div class="flex items-center text-sm"> | 520 | <div class="flex items-center text-sm"> |
455 | 521 | ||
456 | <div | 522 | <div |
457 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 523 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
458 | > | 524 | > |
459 | <img | 525 | <img |
460 | class="object-cover w-full h-full rounded-full" | 526 | class="object-cover w-full h-full rounded-full" |
461 | 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" | 527 | 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" |
462 | alt="" | 528 | alt="" |
463 | loading="lazy" | 529 | loading="lazy" |
464 | /> | 530 | /> |
465 | <div | 531 | <div |
466 | class="absolute inset-0 rounded-full shadow-inner" | 532 | class="absolute inset-0 rounded-full shadow-inner" |
467 | aria-hidden="true" | 533 | aria-hidden="true" |
468 | ></div> | 534 | ></div> |
469 | </div> | 535 | </div> |
470 | <div> | 536 | <div> |
471 | <p class="font-semibold">Sarah Curry</p> | 537 | <p class="font-semibold">Sarah Curry</p> |
472 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 538 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
473 | Designer | 539 | Designer |
474 | </p> | 540 | </p> |
475 | </div> | 541 | </div> |
476 | </div> | 542 | </div> |
477 | </td> | 543 | </td> |
478 | <td class="px-4 py-3 text-sm"> | 544 | <td class="px-4 py-3 text-sm"> |
479 | $ 86.00 | 545 | $ 86.00 |
480 | </td> | 546 | </td> |
481 | <td class="px-4 py-3 text-xs"> | 547 | <td class="px-4 py-3 text-xs"> |
482 | <span | 548 | <span |
483 | 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" | 549 | 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" |
484 | > | 550 | > |
485 | Denied | 551 | Denied |
486 | </span> | 552 | </span> |
487 | </td> | 553 | </td> |
488 | <td class="px-4 py-3 text-sm"> | 554 | <td class="px-4 py-3 text-sm"> |
489 | 6/10/2020 | 555 | 6/10/2020 |
490 | </td> | 556 | </td> |
491 | </tr> | 557 | </tr> |
492 | 558 | ||
493 | <tr class="text-gray-700 dark:text-gray-400"> | 559 | <tr class="text-gray-700 dark:text-gray-400"> |
494 | <td class="px-4 py-3"> | 560 | <td class="px-4 py-3"> |
495 | <div class="flex items-center text-sm"> | 561 | <div class="flex items-center text-sm"> |
496 | 562 | ||
497 | <div | 563 | <div |
498 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 564 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
499 | > | 565 | > |
500 | <img | 566 | <img |
501 | class="object-cover w-full h-full rounded-full" | 567 | class="object-cover w-full h-full rounded-full" |
502 | 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" | 568 | 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" |
503 | alt="" | 569 | alt="" |
504 | loading="lazy" | 570 | loading="lazy" |
505 | /> | 571 | /> |
506 | <div | 572 | <div |
507 | class="absolute inset-0 rounded-full shadow-inner" | 573 | class="absolute inset-0 rounded-full shadow-inner" |
508 | aria-hidden="true" | 574 | aria-hidden="true" |
509 | ></div> | 575 | ></div> |
510 | </div> | 576 | </div> |
511 | <div> | 577 | <div> |
512 | <p class="font-semibold">Rulia Joberts</p> | 578 | <p class="font-semibold">Rulia Joberts</p> |
513 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 579 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
514 | Actress | 580 | Actress |
515 | </p> | 581 | </p> |
516 | </div> | 582 | </div> |
517 | </div> | 583 | </div> |
518 | </td> | 584 | </td> |
519 | <td class="px-4 py-3 text-sm"> | 585 | <td class="px-4 py-3 text-sm"> |
520 | $ 1276.45 | 586 | $ 1276.45 |
521 | </td> | 587 | </td> |
522 | <td class="px-4 py-3 text-xs"> | 588 | <td class="px-4 py-3 text-xs"> |
523 | <span | 589 | <span |
524 | 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" | 590 | 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" |
525 | > | 591 | > |
526 | Approved | 592 | Approved |
527 | </span> | 593 | </span> |
528 | </td> | 594 | </td> |
529 | <td class="px-4 py-3 text-sm"> | 595 | <td class="px-4 py-3 text-sm"> |
530 | 6/10/2020 | 596 | 6/10/2020 |
531 | </td> | 597 | </td> |
532 | </tr> | 598 | </tr> |
533 | 599 | ||
534 | <tr class="text-gray-700 dark:text-gray-400"> | 600 | <tr class="text-gray-700 dark:text-gray-400"> |
535 | <td class="px-4 py-3"> | 601 | <td class="px-4 py-3"> |
536 | <div class="flex items-center text-sm"> | 602 | <div class="flex items-center text-sm"> |
537 | 603 | ||
538 | <div | 604 | <div |
539 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 605 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
540 | > | 606 | > |
541 | <img | 607 | <img |
542 | class="object-cover w-full h-full rounded-full" | 608 | class="object-cover w-full h-full rounded-full" |
543 | 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" | 609 | 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" |
544 | alt="" | 610 | alt="" |
545 | loading="lazy" | 611 | loading="lazy" |
546 | /> | 612 | /> |
547 | <div | 613 | <div |
548 | class="absolute inset-0 rounded-full shadow-inner" | 614 | class="absolute inset-0 rounded-full shadow-inner" |
549 | aria-hidden="true" | 615 | aria-hidden="true" |
550 | ></div> | 616 | ></div> |
551 | </div> | 617 | </div> |
552 | <div> | 618 | <div> |
553 | <p class="font-semibold">Wenzel Dashington</p> | 619 | <p class="font-semibold">Wenzel Dashington</p> |
554 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 620 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
555 | Actor | 621 | Actor |
556 | </p> | 622 | </p> |
557 | </div> | 623 | </div> |
558 | </div> | 624 | </div> |
559 | </td> | 625 | </td> |
560 | <td class="px-4 py-3 text-sm"> | 626 | <td class="px-4 py-3 text-sm"> |
561 | $ 863.45 | 627 | $ 863.45 |
562 | </td> | 628 | </td> |
563 | <td class="px-4 py-3 text-xs"> | 629 | <td class="px-4 py-3 text-xs"> |
564 | <span | 630 | <span |
565 | 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" | 631 | 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" |
566 | > | 632 | > |
567 | Expired | 633 | Expired |
568 | </span> | 634 | </span> |
569 | </td> | 635 | </td> |
570 | <td class="px-4 py-3 text-sm"> | 636 | <td class="px-4 py-3 text-sm"> |
571 | 6/10/2020 | 637 | 6/10/2020 |
572 | </td> | 638 | </td> |
573 | </tr> | 639 | </tr> |
574 | 640 | ||
575 | <tr class="text-gray-700 dark:text-gray-400"> | 641 | <tr class="text-gray-700 dark:text-gray-400"> |
576 | <td class="px-4 py-3"> | 642 | <td class="px-4 py-3"> |
577 | <div class="flex items-center text-sm"> | 643 | <div class="flex items-center text-sm"> |
578 | 644 | ||
579 | <div | 645 | <div |
580 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 646 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
581 | > | 647 | > |
582 | <img | 648 | <img |
583 | class="object-cover w-full h-full rounded-full" | 649 | class="object-cover w-full h-full rounded-full" |
584 | 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" | 650 | 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" |
585 | alt="" | 651 | alt="" |
586 | loading="lazy" | 652 | loading="lazy" |
587 | /> | 653 | /> |
588 | <div | 654 | <div |
589 | class="absolute inset-0 rounded-full shadow-inner" | 655 | class="absolute inset-0 rounded-full shadow-inner" |
590 | aria-hidden="true" | 656 | aria-hidden="true" |
591 | ></div> | 657 | ></div> |
592 | </div> | 658 | </div> |
593 | <div> | 659 | <div> |
594 | <p class="font-semibold">Dave Li</p> | 660 | <p class="font-semibold">Dave Li</p> |
595 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 661 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
596 | Influencer | 662 | Influencer |
597 | </p> | 663 | </p> |
598 | </div> | 664 | </div> |
599 | </div> | 665 | </div> |
600 | </td> | 666 | </td> |
601 | <td class="px-4 py-3 text-sm"> | 667 | <td class="px-4 py-3 text-sm"> |
602 | $ 863.45 | 668 | $ 863.45 |
603 | </td> | 669 | </td> |
604 | <td class="px-4 py-3 text-xs"> | 670 | <td class="px-4 py-3 text-xs"> |
605 | <span | 671 | <span |
606 | 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" | 672 | 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" |
607 | > | 673 | > |
608 | Approved | 674 | Approved |
609 | </span> | 675 | </span> |
610 | </td> | 676 | </td> |
611 | <td class="px-4 py-3 text-sm"> | 677 | <td class="px-4 py-3 text-sm"> |
612 | 6/10/2020 | 678 | 6/10/2020 |
613 | </td> | 679 | </td> |
614 | </tr> | 680 | </tr> |
615 | 681 | ||
616 | <tr class="text-gray-700 dark:text-gray-400"> | 682 | <tr class="text-gray-700 dark:text-gray-400"> |
617 | <td class="px-4 py-3"> | 683 | <td class="px-4 py-3"> |
618 | <div class="flex items-center text-sm"> | 684 | <div class="flex items-center text-sm"> |
619 | 685 | ||
620 | <div | 686 | <div |
621 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 687 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
622 | > | 688 | > |
623 | <img | 689 | <img |
624 | class="object-cover w-full h-full rounded-full" | 690 | class="object-cover w-full h-full rounded-full" |
625 | 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" | 691 | 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" |
626 | alt="" | 692 | alt="" |
627 | loading="lazy" | 693 | loading="lazy" |
628 | /> | 694 | /> |
629 | <div | 695 | <div |
630 | class="absolute inset-0 rounded-full shadow-inner" | 696 | class="absolute inset-0 rounded-full shadow-inner" |
631 | aria-hidden="true" | 697 | aria-hidden="true" |
632 | ></div> | 698 | ></div> |
633 | </div> | 699 | </div> |
634 | <div> | 700 | <div> |
635 | <p class="font-semibold">Maria Ramovic</p> | 701 | <p class="font-semibold">Maria Ramovic</p> |
636 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 702 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
637 | Runner | 703 | Runner |
638 | </p> | 704 | </p> |
639 | </div> | 705 | </div> |
640 | </div> | 706 | </div> |
641 | </td> | 707 | </td> |
642 | <td class="px-4 py-3 text-sm"> | 708 | <td class="px-4 py-3 text-sm"> |
643 | $ 863.45 | 709 | $ 863.45 |
644 | </td> | 710 | </td> |
645 | <td class="px-4 py-3 text-xs"> | 711 | <td class="px-4 py-3 text-xs"> |
646 | <span | 712 | <span |
647 | 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" | 713 | 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" |
648 | > | 714 | > |
649 | Approved | 715 | Approved |
650 | </span> | 716 | </span> |
651 | </td> | 717 | </td> |
652 | <td class="px-4 py-3 text-sm"> | 718 | <td class="px-4 py-3 text-sm"> |
653 | 6/10/2020 | 719 | 6/10/2020 |
654 | </td> | 720 | </td> |
655 | </tr> | 721 | </tr> |
656 | 722 | ||
657 | <tr class="text-gray-700 dark:text-gray-400"> | 723 | <tr class="text-gray-700 dark:text-gray-400"> |
658 | <td class="px-4 py-3"> | 724 | <td class="px-4 py-3"> |
659 | <div class="flex items-center text-sm"> | 725 | <div class="flex items-center text-sm"> |
660 | 726 | ||
661 | <div | 727 | <div |
662 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 728 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
663 | > | 729 | > |
664 | <img | 730 | <img |
665 | class="object-cover w-full h-full rounded-full" | 731 | class="object-cover w-full h-full rounded-full" |
666 | 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" | 732 | 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" |
667 | alt="" | 733 | alt="" |
668 | loading="lazy" | 734 | loading="lazy" |
669 | /> | 735 | /> |
670 | <div | 736 | <div |
671 | class="absolute inset-0 rounded-full shadow-inner" | 737 | class="absolute inset-0 rounded-full shadow-inner" |
672 | aria-hidden="true" | 738 | aria-hidden="true" |
673 | ></div> | 739 | ></div> |
674 | </div> | 740 | </div> |
675 | <div> | 741 | <div> |
676 | <p class="font-semibold">Hitney Wouston</p> | 742 | <p class="font-semibold">Hitney Wouston</p> |
677 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 743 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
678 | Singer | 744 | Singer |
679 | </p> | 745 | </p> |
680 | </div> | 746 | </div> |
681 | </div> | 747 | </div> |
682 | </td> | 748 | </td> |
683 | <td class="px-4 py-3 text-sm"> | 749 | <td class="px-4 py-3 text-sm"> |
684 | $ 863.45 | 750 | $ 863.45 |
685 | </td> | 751 | </td> |
686 | <td class="px-4 py-3 text-xs"> | 752 | <td class="px-4 py-3 text-xs"> |
687 | <span | 753 | <span |
688 | 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" | 754 | 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" |
689 | > | 755 | > |
690 | Approved | 756 | Approved |
691 | </span> | 757 | </span> |
692 | </td> | 758 | </td> |
693 | <td class="px-4 py-3 text-sm"> | 759 | <td class="px-4 py-3 text-sm"> |
694 | 6/10/2020 | 760 | 6/10/2020 |
695 | </td> | 761 | </td> |
696 | </tr> | 762 | </tr> |
697 | 763 | ||
698 | <tr class="text-gray-700 dark:text-gray-400"> | 764 | <tr class="text-gray-700 dark:text-gray-400"> |
699 | <td class="px-4 py-3"> | 765 | <td class="px-4 py-3"> |
700 | <div class="flex items-center text-sm"> | 766 | <div class="flex items-center text-sm"> |
701 | 767 | ||
702 | <div | 768 | <div |
703 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 769 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
704 | > | 770 | > |
705 | <img | 771 | <img |
706 | class="object-cover w-full h-full rounded-full" | 772 | class="object-cover w-full h-full rounded-full" |
707 | 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" | 773 | 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" |
708 | alt="" | 774 | alt="" |
709 | loading="lazy" | 775 | loading="lazy" |
710 | /> | 776 | /> |
711 | <div | 777 | <div |
712 | class="absolute inset-0 rounded-full shadow-inner" | 778 | class="absolute inset-0 rounded-full shadow-inner" |
713 | aria-hidden="true" | 779 | aria-hidden="true" |
714 | ></div> | 780 | ></div> |
715 | </div> | 781 | </div> |
716 | <div> | 782 | <div> |
717 | <p class="font-semibold">Hans Burger</p> | 783 | <p class="font-semibold">Hans Burger</p> |
718 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 784 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
719 | 10x Developer | 785 | 10x Developer |
720 | </p> | 786 | </p> |
721 | </div> | 787 | </div> |
722 | </div> | 788 | </div> |
723 | </td> | 789 | </td> |
724 | <td class="px-4 py-3 text-sm"> | 790 | <td class="px-4 py-3 text-sm"> |
725 | $ 863.45 | 791 | $ 863.45 |
726 | </td> | 792 | </td> |
727 | <td class="px-4 py-3 text-xs"> | 793 | <td class="px-4 py-3 text-xs"> |
728 | <span | 794 | <span |
729 | 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" | 795 | 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" |
730 | > | 796 | > |
731 | Approved | 797 | Approved |
732 | </span> | 798 | </span> |
733 | </td> | 799 | </td> |
734 | <td class="px-4 py-3 text-sm"> | 800 | <td class="px-4 py-3 text-sm"> |
735 | 6/10/2020 | 801 | 6/10/2020 |
736 | </td> | 802 | </td> |
737 | </tr>--> | 803 | </tr>--> |
738 | </tbody> | 804 | </tbody> |
739 | </table> | 805 | </table> |
740 | </div> | 806 | </div> |
741 | </div> | 807 | </div> |
742 | 808 | ||
743 | 809 | ||
744 | <!-- Charts --> | 810 | <!-- Charts --> |
745 | 811 | ||
746 | <!--<h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> | 812 | <!--<h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> |
747 | Графики | 813 | Графики |
748 | </h2> | 814 | </h2> |
749 | <div class="grid gap-6 mb-8 md:grid-cols-2"> | 815 | <div class="grid gap-6 mb-8 md:grid-cols-2"> |
750 | <div | 816 | <div |
751 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 817 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
752 | > | 818 | > |
753 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 819 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
754 | Revenue | 820 | Revenue |
755 | </h4> | 821 | </h4> |
756 | <canvas id="pie"></canvas> | 822 | <canvas id="pie"></canvas> |
757 | <div | 823 | <div |
758 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 824 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
759 | > | 825 | > |
760 | 826 | ||
761 | <div class="flex items-center"> | 827 | <div class="flex items-center"> |
762 | <span | 828 | <span |
763 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" | 829 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" |
764 | ></span> | 830 | ></span> |
765 | <span>Shirts</span> | 831 | <span>Shirts</span> |
766 | </div> | 832 | </div> |
767 | <div class="flex items-center"> | 833 | <div class="flex items-center"> |
768 | <span | 834 | <span |
769 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 835 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
770 | ></span> | 836 | ></span> |
771 | <span>Shoes</span> | 837 | <span>Shoes</span> |
772 | </div> | 838 | </div> |
773 | <div class="flex items-center"> | 839 | <div class="flex items-center"> |
774 | <span | 840 | <span |
775 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 841 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
776 | ></span> | 842 | ></span> |
777 | <span>Bags</span> | 843 | <span>Bags</span> |
778 | </div> | 844 | </div> |
779 | </div> | 845 | </div> |
780 | </div> | 846 | </div> |
781 | <div | 847 | <div |
782 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 848 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
783 | > | 849 | > |
784 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 850 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
785 | Посещаемость сайта | 851 | Посещаемость сайта |
786 | </h4> | 852 | </h4> |
787 | <canvas id="line"></canvas> | 853 | <canvas id="line"></canvas> |
788 | <div | 854 | <div |
789 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 855 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
790 | > | 856 | > |
791 | 857 | ||
792 | <div class="flex items-center"> | 858 | <div class="flex items-center"> |
793 | <span | 859 | <span |
794 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 860 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
795 | ></span> | 861 | ></span> |
796 | <span>Organic</span> | 862 | <span>Organic</span> |
797 | </div> | 863 | </div> |
798 | <div class="flex items-center"> | 864 | <div class="flex items-center"> |
799 | <span | 865 | <span |
800 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 866 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
801 | ></span> | 867 | ></span> |
802 | <span>Paid</span> | 868 | <span>Paid</span> |
803 | </div> | 869 | </div> |
804 | </div> | 870 | </div> |
805 | </div> | 871 | </div> |
806 | </div>--> | 872 | </div>--> |
807 | 873 | ||
808 | @endsection | 874 | @endsection |
809 | 875 |
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 | 42 | ||
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 (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" @endif> | 64 | @if (isset($msg->user_to->id)) |
65 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) | ||
66 | style="background-color: #403998;" | ||
67 | @endif | ||
68 | @endif> | ||
65 | <td class="px-4 py-3"> | 69 | <td class="px-4 py-3"> |
66 | {{$msg->id}} | 70 | {{$msg->id}} |
67 | </td> | 71 | </td> |
68 | <td class="px-4 py-3"> | 72 | <td class="px-4 py-3"> |
73 | @if (isset($msg->user_from->name)) | ||
69 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) | 74 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) |
75 | @else | ||
76 | Пользователь удален | ||
77 | @endif | ||
70 | </td> | 78 | </td> |
71 | <td class="px-4 py-3"> | 79 | <td class="px-4 py-3"> |
80 | @if (isset($msg->user_to->name)) | ||
72 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) | 81 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) |
82 | @else | ||
83 | Пользователь удален | ||
84 | @endif | ||
73 | </td> | 85 | </td> |
74 | <td class="px-4 py-3"> | 86 | <td class="px-4 py-3"> |
75 | {{$msg->title}} | 87 | {{$msg->title}} |
76 | <div class="flex items-center text-sm"> | 88 | <div class="flex items-center text-sm"> |
77 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> | 89 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> |
78 | </div> | 90 | </div> |
79 | </td> | 91 | </td> |
80 | <td class="px-4 py-3 text-sm"> | 92 | <td class="px-4 py-3 text-sm"> |
81 | {{ $msg->created_at }} | 93 | {{ $msg->created_at }} |
82 | </td> | 94 | </td> |
83 | <td class="px-4 py-3 text-sm"> | 95 | <td class="px-4 py-3 text-sm"> |
84 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) | 96 | @if (isset($msg->user_to->id)) |
97 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) | ||
85 | <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}}"/> |
86 | @endif | 99 | @endif |
100 | @endif | ||
87 | </td> | 101 | </td> |
88 | </tr> | 102 | </tr> |
89 | @endforeach | 103 | @endforeach |
90 | </tbody> | 104 | </tbody> |
91 | </table> | 105 | </table> |
92 | </div> | 106 | </div> |
93 | 107 | ||
94 | <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"> |
95 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> | 109 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> |
96 | </div> | 110 | </div> |
97 | </div><br> | 111 | </div><br> |
98 | 112 | ||
99 | <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"> |
100 | 114 | ||
101 | <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"> |
102 | @csrf | 116 | @csrf |
103 | <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"> |
104 | <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3> | 118 | <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3> |
105 | <hr> | 119 | <hr> |
106 | <label for="ad_employer_id" class="block text-sm"> | 120 | <label for="ad_employer_id" class="block text-sm"> |
107 | <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 }}"/> |
108 | 122 | ||
109 | <span class="text-gray-700 dark:text-gray-400">Кому:</span> | 123 | <span class="text-gray-700 dark:text-gray-400">Кому:</span> |
110 | 124 | ||
111 | <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"> |
112 | @foreach($users as $user) | 126 | @foreach($users as $user) |
113 | <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option> | 127 | <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option> |
114 | @endforeach | 128 | @endforeach |
115 | </select> | 129 | </select> |
116 | </label><br> | 130 | </label><br> |
117 | 131 | ||
118 | <label class="block text-sm"> | 132 | <label class="block text-sm"> |
119 | <span class="text-gray-700 dark:text-gray-400">Заголовок</span> | 133 | <span class="text-gray-700 dark:text-gray-400">Заголовок</span> |
120 | <input name="title" id="title" | 134 | <input name="title" id="title" |
121 | 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" |
122 | placeholder="Заголовок" value="{{ old('title') ?? '' }}" | 136 | placeholder="Заголовок" value="{{ old('title') ?? '' }}" |
123 | /> | 137 | /> |
124 | @error('title') | 138 | @error('title') |
125 | <span class="text-xs text-red-600 dark:text-red-400"> | 139 | <span class="text-xs text-red-600 dark:text-red-400"> |
126 | {{ $message }} | 140 | {{ $message }} |
127 | </span> | 141 | </span> |
128 | @enderror | 142 | @enderror |
129 | </label><br> | 143 | </label><br> |
130 | 144 | ||
131 | <label class="block text-sm"> | 145 | <label class="block text-sm"> |
132 | <span class="text-gray-700 dark:text-gray-400">Текст</span> | 146 | <span class="text-gray-700 dark:text-gray-400">Текст</span> |
133 | <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 |
134 | rows="4">{{ old('text') ?? '' }}</textarea> | 148 | rows="4">{{ old('text') ?? '' }}</textarea> |
135 | @error('text') | 149 | @error('text') |
136 | <span class="text-xs text-red-600 dark:text-red-400"> | 150 | <span class="text-xs text-red-600 dark:text-red-400"> |
137 | {{ $message }} | 151 | {{ $message }} |
138 | </span> | 152 | </span> |
139 | @enderror | 153 | @enderror |
140 | </label><br> | 154 | </label><br> |
141 | 155 | ||
142 | 156 | ||
143 | <label class="block text-sm"> | 157 | <label class="block text-sm"> |
144 | <span class="text-gray-700 dark:text-gray-400">Файл</span> | 158 | <span class="text-gray-700 dark:text-gray-400">Файл</span> |
145 | <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 |
146 | focus:border-purple-400 focus:outline-none focus:shadow-outline-purple | 160 | focus:border-purple-400 focus:outline-none focus:shadow-outline-purple |
147 | dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 161 | dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
148 | id="file" name="file"> | 162 | id="file" name="file"> |
149 | @error('file') | 163 | @error('file') |
150 | <span class="text-xs text-red-600 dark:text-red-400"> | 164 | <span class="text-xs text-red-600 dark:text-red-400"> |
151 | {{ $message }} | 165 | {{ $message }} |
152 | </span> | 166 | </span> |
153 | @enderror | 167 | @enderror |
154 | </label><br> | 168 | </label><br> |
155 | 169 | ||
156 | <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"> |
157 | <div> | 171 | <div> |
158 | <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"> |
159 | Отправить | 173 | Отправить |
160 | </button> | 174 | </button> |
161 | </div> | 175 | </div> |
162 | </div> | 176 | </div> |
163 | </div> | 177 | </div> |
164 | </form> | 178 | </form> |
165 | </div> | 179 | </div> |
166 | @endsection | 180 | @endsection |
167 | 181 |
resources/views/admin/message/index2.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Сообщения адмистратора']) | |
2 | |||
3 | @section('script') | ||
4 | <script> | ||
5 | $(document).ready(function() { | ||
6 | $(document).on('change', '.checkread', function () { | ||
7 | var this_ = $(this); | ||
8 | var value = this_.val(); | ||
9 | var ajax_block = $('#ajax_block'); | ||
10 | var bool = 0; | ||
11 | |||
12 | if(this.checked){ | ||
13 | bool = 1; | ||
14 | } else { | ||
15 | bool = 0; | ||
16 | } | ||
17 | |||
18 | $.ajax({ | ||
19 | type: "GET", | ||
20 | url: "{{ url()->full()}}", | ||
21 | data: "id=" + value + "&flag_new=" + bool, | ||
22 | success: function (data) { | ||
23 | console.log('Обновление таблицы сообщений администратора '); | ||
24 | //data = JSON.parse(data); | ||
25 | //console.log(data); | ||
26 | ajax_block.html(data); | ||
27 | }, | ||
28 | headers: { | ||
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
30 | }, | ||
31 | error: function (data) { | ||
32 | console.log('Error: ' + data); | ||
33 | } | ||
34 | }); | ||
35 | }); | ||
36 | |||
37 | }); | ||
38 | </script> | ||
39 | @endsection | ||
40 | |||
41 | @section('search') | ||
42 | |||
43 | @endsection | ||
44 | |||
45 | @section('content') | ||
46 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | ||
47 | <div class="w-full overflow-x-auto"> | ||
48 | <table class="w-full whitespace-no-wrap"> | ||
49 | <thead> | ||
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" | ||
52 | > | ||
53 | <th class="px-4 py-3">№</th> | ||
54 | <th class="px-4 py-3">От юзера</th> | ||
55 | <th class="px-4 py-3">К юзеру</th> | ||
56 | <th class="px-4 py-3">Текст</th> | ||
57 | <th class="px-4 py-3">Дата</th> | ||
58 | <th class="px-4 py-3">Прочтено</th> | ||
59 | </tr> | ||
60 | </thead> | ||
61 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
62 | @foreach($Msgs as $msg) | ||
63 | <tr class="text-gray-700 dark:text-gray-400" | ||
64 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" @endif> | ||
65 | <td class="px-4 py-3"> | ||
66 | {{$msg->id}} | ||
67 | </td> | ||
68 | <td class="px-4 py-3"> | ||
69 | <!--if (isset($msg->user_from->name)) | ||
70 | $msg->user_from->name ($msg->user_from->id) | ||
71 | else | ||
72 | Пользователь удален | ||
73 | endif--> | ||
74 | </td> | ||
75 | <td class="px-4 py-3"> | ||
76 | <!--if (isset($msg->user_to->name)) | ||
77 | $msg->user_to->name ($msg->user_to->id) | ||
78 | else | ||
79 | Пользователь удален | ||
80 | @endif--> | ||
81 | </td> | ||
82 | <td class="px-4 py-3"> | ||
83 | {{$msg->title}} | ||
84 | <div class="flex items-center text-sm"> | ||
85 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> | ||
86 | </div> | ||
87 | </td> | ||
88 | <td class="px-4 py-3 text-sm"> | ||
89 | {{ $msg->created_at }} | ||
90 | </td> | ||
91 | <td class="px-4 py-3 text-sm"> | ||
92 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) | ||
93 | <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/> | ||
94 | @endif | ||
95 | </td> | ||
96 | </tr> | ||
97 | @endforeach | ||
98 | </tbody> | ||
99 | </table> | ||
100 | </div> | ||
101 | |||
102 | <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"> | ||
103 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> | ||
104 | </div> | ||
105 | </div><br> | ||
106 | |||
107 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2"> | ||
108 | |||
109 | <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data"> | ||
110 | @csrf | ||
111 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | ||
112 | <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3> | ||
113 | <hr> | ||
114 | <label for="ad_employer_id" class="block text-sm"> | ||
115 | <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/> | ||
116 | |||
117 | <span class="text-gray-700 dark:text-gray-400">Кому:</span> | ||
118 | |||
119 | <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"> | ||
120 | @foreach($users as $user) | ||
121 | <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option> | ||
122 | @endforeach | ||
123 | </select> | ||
124 | </label><br> | ||
125 | |||
126 | <label class="block text-sm"> | ||
127 | <span class="text-gray-700 dark:text-gray-400">Заголовок</span> | ||
128 | <input name="title" id="title" | ||
129 | 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" | ||
130 | placeholder="Заголовок" value="{{ old('title') ?? '' }}" | ||
131 | /> | ||
132 | @error('title') | ||
133 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
134 | {{ $message }} | ||
135 | </span> | ||
136 | @enderror | ||
137 | </label><br> | ||
138 | |||
139 | <label class="block text-sm"> | ||
140 | <span class="text-gray-700 dark:text-gray-400">Текст</span> | ||
141 | <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 | ||
142 | rows="4">{{ old('text') ?? '' }}</textarea> | ||
143 | @error('text') | ||
144 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
145 | {{ $message }} | ||
146 | </span> | ||
147 | @enderror | ||
148 | </label><br> | ||
149 | |||
150 | |||
151 | <label class="block text-sm"> | ||
152 | <span class="text-gray-700 dark:text-gray-400">Файл</span> | ||
153 | <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 | ||
154 | focus:border-purple-400 focus:outline-none focus:shadow-outline-purple | ||
155 | dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
156 | id="file" name="file"> | ||
157 | @error('file') | ||
158 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
159 | {{ $message }} | ||
160 | </span> | ||
161 | @enderror | ||
162 | </label><br> | ||
163 | |||
164 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
165 | <div> | ||
166 | <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"> | ||
167 | Отправить | ||
168 | </button> | ||
169 | </div> | ||
170 | </div> | ||
171 | </div> | ||
172 | </form> | ||
173 | </div> | ||
174 | @endsection | ||
175 |
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 (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" @endif> | 18 | @if (isset($msg->user_to->id)) |
19 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" | ||
20 | @endif | ||
21 | @endif> | ||
19 | <td class="px-4 py-3"> | 22 | <td class="px-4 py-3"> |
20 | {{$msg->id}} | 23 | {{$msg->id}} |
21 | </td> | 24 | </td> |
22 | <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))) | ||
23 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) | 27 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) |
28 | @else | ||
29 | Пользователь удален | ||
30 | @endif | ||
24 | </td> | 31 | </td> |
25 | <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))) | ||
26 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) | 34 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) |
35 | @else | ||
36 | Пользователь удален | ||
37 | @endif | ||
27 | </td> | 38 | </td> |
28 | <td class="px-4 py-3"> | 39 | <td class="px-4 py-3"> |
29 | {{$msg->title}} | 40 | {{$msg->title}} |
30 | <div class="flex items-center text-sm"> | 41 | <div class="flex items-center text-sm"> |
31 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> | 42 | <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> |
32 | </div> | 43 | </div> |
33 | </td> | 44 | </td> |
34 | <td class="px-4 py-3 text-sm"> | 45 | <td class="px-4 py-3 text-sm"> |
35 | {{ $msg->created_at }} | 46 | {{ $msg->created_at }} |
36 | </td> | 47 | </td> |
37 | <td class="px-4 py-3 text-sm"> | 48 | <td class="px-4 py-3 text-sm"> |
49 | @if (isset($msg->user_to->id)) | ||
38 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) | 50 | @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) |
39 | <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}}"/> |
40 | @endif | 52 | @endif |
53 | @endif | ||
41 | </td> | 54 | </td> |
42 | </tr> | 55 | </tr> |
43 | @endforeach | 56 | @endforeach |
44 | </tbody> | 57 | </tbody> |
45 | </table> | 58 | </table> |
46 | </div> | 59 | </div> |
47 | 60 | ||
48 | <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"> |
49 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> | 62 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> |
50 | </div> | 63 | </div> |
51 | 64 |
resources/views/admin/messages.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 | <!--<div class="absolute inset-y-0 flex items-center pl-2"> | 7 | <!--<div class="absolute inset-y-0 flex items-center pl-2"> |
8 | <svg | 8 | <svg |
9 | class="w-4 h-4" | 9 | class="w-4 h-4" |
10 | aria-hidden="true" | 10 | aria-hidden="true" |
11 | fill="currentColor" | 11 | fill="currentColor" |
12 | viewBox="0 0 20 20" | 12 | viewBox="0 0 20 20" |
13 | > | 13 | > |
14 | <path | 14 | <path |
15 | fill-rule="evenodd" | 15 | fill-rule="evenodd" |
16 | 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" | 16 | 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" |
17 | clip-rule="evenodd" | 17 | clip-rule="evenodd" |
18 | ></path> | 18 | ></path> |
19 | </svg> | 19 | </svg> |
20 | </div> | 20 | </div> |
21 | <form action="" method="POST"> | 21 | <form action="" method="POST"> |
22 | <div style="float:left;"><input | 22 | <div style="float:left;"><input |
23 | 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" | 23 | 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" |
24 | style="width: 400px" | 24 | style="width: 400px" |
25 | type="text" | 25 | type="text" |
26 | placeholder="Искать компанию или вакансию" | 26 | placeholder="Искать компанию или вакансию" |
27 | aria-label="Search" | 27 | aria-label="Search" |
28 | /></div> | 28 | /></div> |
29 | <div style="float: left"> | 29 | <div style="float: left"> |
30 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Поиск</button> | 30 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Поиск</button> |
31 | </div> | 31 | </div> |
32 | </form>--> | 32 | </form>--> |
33 | @endsection | 33 | @endsection |
34 | 34 | ||
35 | @section('content') | 35 | @section('content') |
36 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 36 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
37 | <div class="w-full overflow-x-auto"> | 37 | <div class="w-full overflow-x-auto"> |
38 | <table class="w-full whitespace-no-wrap"> | 38 | <table class="w-full whitespace-no-wrap"> |
39 | <thead> | 39 | <thead> |
40 | <tr | 40 | <tr |
41 | 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" | 41 | 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" |
42 | > | 42 | > |
43 | <th class="px-4 py-3">№</th> | 43 | <th class="px-4 py-3">№</th> |
44 | <th class="px-4 py-3">От юзера</th> | 44 | <th class="px-4 py-3">От юзера</th> |
45 | <th class="px-4 py-3">К юзеру</th> | 45 | <th class="px-4 py-3">К юзеру</th> |
46 | <th class="px-4 py-3">Заголовок</th> | 46 | <th class="px-4 py-3">Заголовок</th> |
47 | <th class="px-4 py-3">Отклик</th> | 47 | <th class="px-4 py-3">Отклик</th> |
48 | <th class="px-4 py-3">Дата</th> | 48 | <th class="px-4 py-3">Дата</th> |
49 | </tr> | 49 | </tr> |
50 | </thead> | 50 | </thead> |
51 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 51 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
52 | @foreach($Msgs as $msg) | 52 | @foreach($Msgs as $msg) |
53 | <tr class="text-gray-700 dark:text-gray-400"> | 53 | <tr class="text-gray-700 dark:text-gray-400"> |
54 | <td class="px-4 py-3"> | 54 | <td class="px-4 py-3"> |
55 | {{$msg->id}} | 55 | {{$msg->id}} |
56 | </td> | 56 | </td> |
57 | <td class="px-4 py-3"> | 57 | <td class="px-4 py-3"> |
58 | @if (isset($msg->user_from->id)) | ||
58 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) | 59 | {{$msg->user_from->name}} ({{$msg->user_from->id}}) |
60 | @else | ||
61 | Пользователь удален | ||
62 | @endif | ||
59 | </td> | 63 | </td> |
60 | <td class="px-4 py-3"> | 64 | <td class="px-4 py-3"> |
65 | @if (isset($msg->user_to->id)) | ||
61 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) | 66 | {{$msg->user_to->name}} ({{$msg->user_to->id}}) |
67 | @else | ||
68 | Пользователь удален | ||
69 | @endif | ||
62 | </td> | 70 | </td> |
63 | <td class="px-4 py-3"> | 71 | <td class="px-4 py-3"> |
64 | {{$msg->title}} | 72 | {{$msg->title}} |
65 | </td> | 73 | </td> |
66 | <td class="px-4 py-3"> | 74 | <td class="px-4 py-3"> |
67 | <div class="flex items-center text-sm"> | 75 | <div class="flex items-center text-sm"> |
68 | <div> | 76 | <div> |
69 | @if ($msg->response->count()) | 77 | @if ($msg->response->count()) |
70 | Да | 78 | Да |
71 | @else | 79 | @else |
72 | Нет | 80 | Нет |
73 | @endif | 81 | @endif |
74 | </div> | 82 | </div> |
75 | </div> | 83 | </div> |
76 | </td> | 84 | </td> |
77 | <td class="px-4 py-3 text-sm"> | 85 | <td class="px-4 py-3 text-sm"> |
78 | {{ $msg->created_at }} | 86 | {{ $msg->created_at }} |
79 | </td> | 87 | </td> |
80 | </tr> | 88 | </tr> |
81 | @endforeach | 89 | @endforeach |
82 | </tbody> | 90 | </tbody> |
83 | </table> | 91 | </table> |
84 | </div> | 92 | </div> |
85 | 93 | ||
86 | <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"> | 94 | <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"> |
87 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> | 95 | <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> |
88 | </div> | 96 | </div> |
89 | </div> | 97 | </div> |
90 | @endsection | 98 | @endsection |
91 | 99 |
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') | 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 | </tr> | 61 | </tr> |
61 | </thead> | 62 | </thead> |
62 | <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"> |
63 | @foreach($users as $user) | 64 | @foreach($users as $user) |
64 | <tr class="text-gray-700 dark:text-gray-400"> | 65 | <tr class="text-gray-700 dark:text-gray-400"> |
65 | <td class="px-4 py-3"> | 66 | <td class="px-4 py-3"> |
66 | {{$user->id}} | 67 | {{$user->id}} |
67 | </td> | 68 | </td> |
68 | <td class="px-4 py-3"> | 69 | <td class="px-4 py-3"> |
69 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} | 70 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} |
70 | </td> | 71 | </td> |
71 | <td class="px-4 py-3 text-sm"> | 72 | <td class="px-4 py-3 text-sm"> |
72 | <div class="flex items-center text-sm"> | 73 | <div class="flex items-center text-sm"> |
73 | <div> | 74 | <div> |
74 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> | 75 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> |
75 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 76 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
76 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} | 77 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} |
77 | </p> | 78 | </p> |
78 | </div> | 79 | </div> |
79 | </div> | 80 | </div> |
80 | </td> | 81 | </td> |
81 | <td class="px-4 py-3 text-xs"> | 82 | <td class="px-4 py-3 text-xs"> |
82 | @if (!empty($user->workers->persent_anketa)) | 83 | @if (isset($user->workers[0]->persent_anketa)) |
83 | @if ($user->workers->persent_anketa > 40) | 84 | @if ($user->workers[0]->persent_anketa > 40) |
84 | <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"> | 85 | <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"> |
85 | {{$user->workers->persent_anketa}}% | 86 | {{$user->workers[0]->persent_anketa}}% |
86 | </span> | 87 | </span> |
87 | @else | 88 | @else |
88 | <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"> | 89 | <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"> |
89 | {{$user->workers->persent_anketa}}% | 90 | {{$user->workers[0]->persent_anketa}}% |
90 | </span> | 91 | </span> |
91 | @endif | 92 | @endif |
92 | @else | 93 | @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"> | 94 | <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 | 10% | 95 | 0% |
95 | </span> | 96 | </span> |
96 | @endif | 97 | @endif |
97 | </td> | 98 | </td> |
98 | <td class="px-4 py-3 text-sm"> | 99 | <td class="px-4 py-3 text-sm"> |
100 | @if (isset($user->jobtitles[0]->name)) | ||
101 | {{ $user->jobtitles[0]->name }} | ||
102 | @else | ||
103 | Не задана | ||
104 | @endif | ||
105 | </td> | ||
106 | <td class="px-4 py-3 text-sm"> | ||
99 | {{ $user->created_at }} | 107 | {{ $user->created_at }} |
100 | </td> | 108 | </td> |
101 | <td class="px-4 py-3 text-sm"> | 109 | <td class="px-4 py-3 text-sm"> |
102 | @if ($user->id > 1) | 110 | @if ($user->id > 1) |
103 | @if (isset($user->workers[0]->id)) | 111 | @if (isset($user->workers[0]->id)) |
104 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Изменить</a> | 112 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Изменить</a> |
105 | 113 | ||
106 | @endif | 114 | @endif |
107 | @endif | 115 | @endif |
108 | </td> | 116 | </td> |
109 | <td class="px-4 py-3 text-sm"> | 117 | <td class="px-4 py-3 text-sm"> |
110 | @if ($user->id > 1) | 118 | @if ($user->id > 1) |
111 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 119 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
112 | @endif | 120 | @endif |
113 | </td> | 121 | </td> |
114 | </tr> | 122 | </tr> |
115 | @endforeach | 123 | @endforeach |
116 | </tbody> | 124 | </tbody> |
117 | </table> | 125 | </table> |
118 | </div> | 126 | </div> |
119 | 127 | ||
120 | <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"> | 128 | <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"> |
121 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 129 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
122 | </div> | 130 | </div> |
123 | 131 | ||
124 | 132 | ||
125 | <!--<div | 133 | <!--<div |
126 | 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" | 134 | 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" |
127 | > | 135 | > |
128 | <span class="flex items-center col-span-3"> | 136 | <span class="flex items-center col-span-3"> |
129 | Showing 21-30 of 100 | 137 | Showing 21-30 of 100 |
130 | </span> | 138 | </span> |
131 | <span class="col-span-2"></span> | 139 | <span class="col-span-2"></span> |
132 | 140 | ||
133 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 141 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
134 | <nav aria-label="Table navigation"> | 142 | <nav aria-label="Table navigation"> |
135 | <ul class="inline-flex items-center"> | 143 | <ul class="inline-flex items-center"> |
136 | <li> | 144 | <li> |
137 | <button | 145 | <button |
138 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 146 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
139 | aria-label="Previous" | 147 | aria-label="Previous" |
140 | > | 148 | > |
141 | <svg | 149 | <svg |
142 | aria-hidden="true" | 150 | aria-hidden="true" |
143 | class="w-4 h-4 fill-current" | 151 | class="w-4 h-4 fill-current" |
144 | viewBox="0 0 20 20" | 152 | viewBox="0 0 20 20" |
145 | > | 153 | > |
146 | <path | 154 | <path |
147 | 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" | 155 | 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" |
148 | clip-rule="evenodd" | 156 | clip-rule="evenodd" |
149 | fill-rule="evenodd" | 157 | fill-rule="evenodd" |
150 | ></path> | 158 | ></path> |
151 | </svg> | 159 | </svg> |
152 | </button> | 160 | </button> |
153 | </li> | 161 | </li> |
154 | <li> | 162 | <li> |
155 | <button | 163 | <button |
156 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 164 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
157 | > | 165 | > |
158 | 1 | 166 | 1 |
159 | </button> | 167 | </button> |
160 | </li> | 168 | </li> |
161 | <li> | 169 | <li> |
162 | <button | 170 | <button |
163 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 171 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
164 | > | 172 | > |
165 | 2 | 173 | 2 |
166 | </button> | 174 | </button> |
167 | </li> | 175 | </li> |
168 | <li> | 176 | <li> |
169 | <button | 177 | <button |
170 | 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" | 178 | 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" |
171 | > | 179 | > |
172 | 3 | 180 | 3 |
173 | </button> | 181 | </button> |
174 | </li> | 182 | </li> |
175 | <li> | 183 | <li> |
176 | <button | 184 | <button |
177 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 185 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
178 | > | 186 | > |
179 | 4 | 187 | 4 |
180 | </button> | 188 | </button> |
181 | </li> | 189 | </li> |
182 | <li> | 190 | <li> |
183 | <span class="px-3 py-1">...</span> | 191 | <span class="px-3 py-1">...</span> |
184 | </li> | 192 | </li> |
185 | <li> | 193 | <li> |
186 | <button | 194 | <button |
187 | 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" |
188 | > | 196 | > |
189 | 8 | 197 | 8 |
190 | </button> | 198 | </button> |
191 | </li> | 199 | </li> |
192 | <li> | 200 | <li> |
193 | <button | 201 | <button |
194 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 202 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
195 | > | 203 | > |
196 | 9 | 204 | 9 |
197 | </button> | 205 | </button> |
198 | </li> | 206 | </li> |
199 | <li> | 207 | <li> |
200 | <button | 208 | <button |
201 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 209 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
202 | aria-label="Next" | 210 | aria-label="Next" |
203 | > | 211 | > |
204 | <svg | 212 | <svg |
205 | class="w-4 h-4 fill-current" | 213 | class="w-4 h-4 fill-current" |
206 | aria-hidden="true" | 214 | aria-hidden="true" |
207 | viewBox="0 0 20 20" | 215 | viewBox="0 0 20 20" |
208 | > | 216 | > |
209 | <path | 217 | <path |
210 | 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" | 218 | 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" |
211 | clip-rule="evenodd" | 219 | clip-rule="evenodd" |
212 | fill-rule="evenodd" | 220 | fill-rule="evenodd" |
213 | ></path> | 221 | ></path> |
214 | </svg> | 222 | </svg> |
215 | </button> | 223 | </button> |
216 | </li> | 224 | </li> |
217 | </ul> | 225 | </ul> |
218 | </nav> | 226 | </nav> |
219 | </span> | 227 | </span> |
220 | </div>--> | 228 | </div>--> |
221 | </div> | 229 | </div> |
222 | 230 | ||
223 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | 231 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> |
224 | 232 | ||
225 | 233 | ||
226 | @endsection | 234 | @endsection |
227 | 235 |
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 | </tr> | 15 | </tr> |
15 | </thead> | 16 | </thead> |
16 | <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"> |
17 | @foreach($users as $user) | 18 | @foreach($users as $user) |
18 | <tr class="text-gray-700 dark:text-gray-400"> | 19 | <tr class="text-gray-700 dark:text-gray-400"> |
19 | <td class="px-4 py-3"> | 20 | <td class="px-4 py-3"> |
20 | {{$user->id}} | 21 | {{$user->id}} |
21 | </td> | 22 | </td> |
22 | <td class="px-4 py-3"> | 23 | <td class="px-4 py-3"> |
23 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} | 24 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} |
24 | </td> | 25 | </td> |
25 | <td class="px-4 py-3 text-sm"> | 26 | <td class="px-4 py-3 text-sm"> |
26 | <div class="flex items-center text-sm"> | 27 | <div class="flex items-center text-sm"> |
27 | <div> | 28 | <div> |
28 | <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> |
29 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 30 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
30 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} | 31 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} |
31 | </p> | 32 | </p> |
32 | </div> | 33 | </div> |
33 | </div> | 34 | </div> |
34 | </td> | 35 | </td> |
35 | <td class="px-4 py-3 text-xs"> | 36 | <td class="px-4 py-3 text-xs"> |
36 | @if (!empty($user->workers->persent_anketa)) | 37 | @if (isset($user->workers[0]->persent_anketa)) |
37 | @if ($user->workers->persent_anketa > 40) | 38 | @if ($user->workers[0]->persent_anketa > 40) |
38 | <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"> |
39 | {{$user->workers->persent_anketa}}% | 40 | {{$user->workers[0]->persent_anketa}}% |
40 | </span> | 41 | </span> |
41 | @else | 42 | @else |
42 | <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"> |
43 | {{$user->workers->persent_anketa}}% | 44 | {{$user->workers[0]->persent_anketa}}% |
44 | </span> | 45 | </span> |
45 | @endif | 46 | @endif |
46 | @else | 47 | @else |
47 | <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"> |
48 | 10% | 49 | 0% |
49 | </span> | 50 | </span> |
50 | @endif | 51 | @endif |
51 | </td> | 52 | </td> |
52 | <td class="px-4 py-3 text-sm"> | 53 | <td class="px-4 py-3 text-sm"> |
54 | @if (isset($user->jobtitles[0]->name)) | ||
55 | {{ $user->jobtitles[0]->name }} | ||
56 | @else | ||
57 | Не задана | ||
58 | @endif | ||
59 | </td> | ||
60 | <td class="px-4 py-3 text-sm"> | ||
53 | {{ $user->created_at }} | 61 | {{ $user->created_at }} |
54 | </td> | 62 | </td> |
55 | <td class="px-4 py-3 text-sm"> | 63 | <td class="px-4 py-3 text-sm"> |
56 | @if ($user->id > 1) | 64 | @if ($user->id > 1) |
57 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Изменить</a> | 65 | @if (isset($user->workers[0]->id)) |
66 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Изменить</a> | ||
67 | |||
68 | @endif | ||
58 | @endif | 69 | @endif |
59 | </td> | 70 | </td> |
60 | <td class="px-4 py-3 text-sm"> | 71 | <td class="px-4 py-3 text-sm"> |
61 | @if ($user->id > 1) | 72 | @if ($user->id > 1) |
62 | <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" : "" }}/> |
63 | @endif | 74 | @endif |
64 | </td> | 75 | </td> |
65 | </tr> | 76 | </tr> |
66 | @endforeach | 77 | @endforeach |
67 | </tbody> | 78 | </tbody> |
68 | </table> | 79 | </table> |
69 | </div> | 80 | </div> |
70 | 81 | ||
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"> | 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"> |
72 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 83 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
73 | </div> | 84 | </div> |
74 | 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 | <a | 41 | <a |
42 | 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 | 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" |
43 | href="{{ route('admin.index') }}" | 43 | href="{{ route('admin.index') }}" |
44 | > | 44 | > |
45 | <svg | 45 | <svg |
46 | class="w-5 h-5" | 46 | class="w-5 h-5" |
47 | aria-hidden="true" | 47 | aria-hidden="true" |
48 | fill="none" | 48 | fill="none" |
49 | stroke-linecap="round" | 49 | stroke-linecap="round" |
50 | stroke-linejoin="round" | 50 | stroke-linejoin="round" |
51 | stroke-width="2" | 51 | stroke-width="2" |
52 | viewBox="0 0 24 24" | 52 | viewBox="0 0 24 24" |
53 | stroke="currentColor" | 53 | stroke="currentColor" |
54 | > | 54 | > |
55 | <path | 55 | <path |
56 | 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" | 56 | 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" |
57 | ></path> | 57 | ></path> |
58 | </svg> | 58 | </svg> |
59 | <span class="ml-4">Главная страница</span> | 59 | <span class="ml-4">Главная страница</span> |
60 | </a> | 60 | </a> |
61 | </li> | 61 | </li> |
62 | </ul> | 62 | </ul> |
63 | <ul> | 63 | <ul> |
64 | @if ($UserId == 1) | ||
64 | <li class="relative px-6 py-3"> | 65 | <li class="relative px-6 py-3"> |
65 | <a | 66 | <a |
66 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 67 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
67 | href="{{ route('admin.users') }}" | 68 | href="{{ route('admin.users') }}" |
68 | > | 69 | > |
69 | <svg | 70 | <svg |
70 | class="w-5 h-5" | 71 | class="w-5 h-5" |
71 | aria-hidden="true" | 72 | aria-hidden="true" |
72 | fill="none" | 73 | fill="none" |
73 | stroke-linecap="round" | 74 | stroke-linecap="round" |
74 | stroke-linejoin="round" | 75 | stroke-linejoin="round" |
75 | stroke-width="2" | 76 | stroke-width="2" |
76 | viewBox="0 0 24 24" | 77 | viewBox="0 0 24 24" |
77 | stroke="currentColor" | 78 | stroke="currentColor" |
78 | > | 79 | > |
79 | <path | 80 | <path |
80 | 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" | 81 | 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" |
81 | ></path> | 82 | ></path> |
82 | </svg> | 83 | </svg> |
83 | <span class="ml-4">Пользователи</span> | 84 | <span class="ml-4">Пользователи</span> |
84 | </a> | 85 | </a> |
85 | </li> | 86 | </li> |
87 | @endif | ||
86 | <li class="relative px-6 py-3"> | 88 | <li class="relative px-6 py-3"> |
87 | <a | 89 | <a |
88 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 90 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
89 | href="{{ route('admin.employers') }}" | 91 | href="{{ route('admin.employers') }}" |
90 | > | 92 | > |
91 | <svg | 93 | <svg |
92 | class="w-5 h-5" | 94 | class="w-5 h-5" |
93 | aria-hidden="true" | 95 | aria-hidden="true" |
94 | fill="none" | 96 | fill="none" |
95 | stroke-linecap="round" | 97 | stroke-linecap="round" |
96 | stroke-linejoin="round" | 98 | stroke-linejoin="round" |
97 | stroke-width="2" | 99 | stroke-width="2" |
98 | viewBox="0 0 24 24" | 100 | viewBox="0 0 24 24" |
99 | stroke="currentColor" | 101 | stroke="currentColor" |
100 | > | 102 | > |
101 | <path | 103 | <path |
102 | 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" | 104 | 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" |
103 | ></path> | 105 | ></path> |
104 | </svg> | 106 | </svg> |
105 | <span class="ml-4">Работодатели</span> | 107 | <span class="ml-4">Работодатели</span> |
106 | </a> | 108 | </a> |
107 | </li> | 109 | </li> |
108 | <li class="relative px-6 py-3"> | 110 | <li class="relative px-6 py-3"> |
109 | <a | 111 | <a |
110 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 112 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
111 | href="{{ route('admin.workers') }}" | 113 | href="{{ route('admin.workers') }}" |
112 | > | 114 | > |
113 | <svg | 115 | <svg |
114 | class="w-5 h-5" | 116 | class="w-5 h-5" |
115 | aria-hidden="true" | 117 | aria-hidden="true" |
116 | fill="none" | 118 | fill="none" |
117 | stroke-linecap="round" | 119 | stroke-linecap="round" |
118 | stroke-linejoin="round" | 120 | stroke-linejoin="round" |
119 | stroke-width="2" | 121 | stroke-width="2" |
120 | viewBox="0 0 24 24" | 122 | viewBox="0 0 24 24" |
121 | stroke="currentColor" | 123 | stroke="currentColor" |
122 | > | 124 | > |
123 | <path | 125 | <path |
124 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 126 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
125 | ></path> | 127 | ></path> |
126 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 128 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
127 | </svg> | 129 | </svg> |
128 | <span class="ml-4">Соискатели</span> | 130 | <span class="ml-4">Соискатели</span> |
129 | </a> | 131 | </a> |
130 | </li> | 132 | </li> |
131 | <li class="relative px-6 py-3"> | 133 | <li class="relative px-6 py-3"> |
132 | <a | 134 | <a |
133 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 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" |
134 | href="{{ route('admin.ad-employers') }}" | 136 | href="{{ route('admin.ad-employers') }}" |
135 | > | 137 | > |
136 | <svg | 138 | <svg |
137 | class="w-5 h-5" | 139 | class="w-5 h-5" |
138 | aria-hidden="true" | 140 | aria-hidden="true" |
139 | fill="none" | 141 | fill="none" |
140 | stroke-linecap="round" | 142 | stroke-linecap="round" |
141 | stroke-linejoin="round" | 143 | stroke-linejoin="round" |
142 | stroke-width="2" | 144 | stroke-width="2" |
143 | viewBox="0 0 24 24" | 145 | viewBox="0 0 24 24" |
144 | stroke="currentColor" | 146 | stroke="currentColor" |
145 | > | 147 | > |
146 | <path | 148 | <path |
147 | 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 | 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" |
148 | ></path> | 150 | ></path> |
149 | </svg> | 151 | </svg> |
150 | <span class="ml-4">Вакансии</span> | 152 | <span class="ml-4">Вакансии</span> |
151 | </a> | 153 | </a> |
152 | </li> | 154 | </li> |
153 | 155 | ||
154 | <li class="relative px-6 py-3"> | 156 | <li class="relative px-6 py-3"> |
155 | <a | 157 | <a |
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" | 158 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
157 | href="{{ route('admin.messages') }}" | 159 | href="{{ route('admin.messages') }}" |
158 | > | 160 | > |
159 | <svg | 161 | <svg |
160 | class="w-5 h-5" | 162 | class="w-5 h-5" |
161 | aria-hidden="true" | 163 | aria-hidden="true" |
162 | fill="none" | 164 | fill="none" |
163 | stroke-linecap="round" | 165 | stroke-linecap="round" |
164 | stroke-linejoin="round" | 166 | stroke-linejoin="round" |
165 | stroke-width="2" | 167 | stroke-width="2" |
166 | viewBox="0 0 24 24" | 168 | viewBox="0 0 24 24" |
167 | stroke="currentColor" | 169 | stroke="currentColor" |
168 | > | 170 | > |
169 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 171 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
170 | </svg> | 172 | </svg> |
171 | <span class="ml-4">Сообщения</span> | 173 | <span class="ml-4">Сообщения все</span> |
172 | </a> | 174 | </a> |
173 | </li> | 175 | </li> |
174 | <li class="relative px-6 py-3"> | 176 | <li class="relative px-6 py-3"> |
175 | <a | 177 | <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" | 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" |
177 | href="{{ route('admin.groups') }}" | 179 | href="{{ route('admin.groups') }}" |
178 | > | 180 | > |
179 | <svg | 181 | <svg |
180 | class="w-5 h-5" | 182 | class="w-5 h-5" |
181 | aria-hidden="true" | 183 | aria-hidden="true" |
182 | fill="none" | 184 | fill="none" |
183 | stroke-linecap="round" | 185 | stroke-linecap="round" |
184 | stroke-linejoin="round" | 186 | stroke-linejoin="round" |
185 | stroke-width="2" | 187 | stroke-width="2" |
186 | viewBox="0 0 24 24" | 188 | viewBox="0 0 24 24" |
187 | stroke="currentColor" | 189 | stroke="currentColor" |
188 | > | 190 | > |
189 | <path | 191 | <path |
190 | 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" | 192 | 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" |
191 | ></path> | 193 | ></path> |
192 | </svg> | 194 | </svg> |
193 | <span class="ml-4">Группы пользователей</span> | 195 | <span class="ml-4">Группы пользователей</span> |
194 | </a> | 196 | </a> |
195 | </li> | 197 | </li> |
198 | @if ($UserId == 1) | ||
196 | <li class="relative px-6 py-3"> | 199 | <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" | 200 | <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" |
198 | href="{{ route('admin.roles') }}"> | 201 | href="{{ route('admin.roles') }}"> |
199 | <svg | 202 | <svg |
200 | class="w-5 h-5" | 203 | class="w-5 h-5" |
201 | aria-hidden="true" | 204 | aria-hidden="true" |
202 | fill="none" | 205 | fill="none" |
203 | stroke-linecap="round" | 206 | stroke-linecap="round" |
204 | stroke-linejoin="round" | 207 | stroke-linejoin="round" |
205 | stroke-width="2" | 208 | stroke-width="2" |
206 | viewBox="0 0 24 24" | 209 | viewBox="0 0 24 24" |
207 | stroke="currentColor" | 210 | stroke="currentColor" |
208 | > | 211 | > |
209 | <path | 212 | <path |
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" | 213 | 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" |
211 | ></path> | 214 | ></path> |
212 | </svg> | 215 | </svg> |
213 | <span class="ml-4">Роли пользователей</span> | 216 | <span class="ml-4">Роли пользователей</span> |
214 | </a> | 217 | </a> |
215 | </li> | 218 | </li> |
219 | @endif | ||
216 | <li class="relative px-6 py-3"> | 220 | <li class="relative px-6 py-3"> |
217 | <a | 221 | <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" | 222 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
219 | href="{{ route('admin.statics') }}" | 223 | href="{{ route('admin.statics') }}" |
220 | > | 224 | > |
221 | <svg | 225 | <svg |
222 | class="w-5 h-5" | 226 | class="w-5 h-5" |
223 | aria-hidden="true" | 227 | aria-hidden="true" |
224 | fill="none" | 228 | fill="none" |
225 | stroke-linecap="round" | 229 | stroke-linecap="round" |
226 | stroke-linejoin="round" | 230 | stroke-linejoin="round" |
227 | stroke-width="2" | 231 | stroke-width="2" |
228 | viewBox="0 0 24 24" | 232 | viewBox="0 0 24 24" |
229 | stroke="currentColor" | 233 | stroke="currentColor" |
230 | > | 234 | > |
231 | <path | 235 | <path |
232 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 236 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
233 | ></path> | 237 | ></path> |
234 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 238 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
235 | </svg> | 239 | </svg> |
236 | <span class="ml-4">Статистика</span> | 240 | <span class="ml-4">Статистика</span> |
237 | </a> | 241 | </a> |
238 | </li> | 242 | </li> |
239 | <li class="relative px-6 py-3"> | 243 | <li class="relative px-6 py-3"> |
240 | <a | 244 | <a |
241 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 245 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
242 | href="{{ route('admin.answers') }}" | 246 | href="{{ route('admin.answers') }}" |
243 | > | 247 | > |
244 | <svg | 248 | <svg |
245 | class="w-5 h-5" | 249 | class="w-5 h-5" |
246 | aria-hidden="true" | 250 | aria-hidden="true" |
247 | fill="none" | 251 | fill="none" |
248 | stroke-linecap="round" | 252 | stroke-linecap="round" |
249 | stroke-linejoin="round" | 253 | stroke-linejoin="round" |
250 | stroke-width="2" | 254 | stroke-width="2" |
251 | viewBox="0 0 24 24" | 255 | viewBox="0 0 24 24" |
252 | stroke="currentColor" | 256 | stroke="currentColor" |
253 | > | 257 | > |
254 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 258 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
255 | </svg> | 259 | </svg> |
256 | <span class="ml-4">Модерация</span> | 260 | <span class="ml-4">Модерация</span> |
257 | </a> | 261 | </a> |
258 | </li> | 262 | </li> |
259 | <!-- Справочники --> | 263 | <!-- Справочники --> |
260 | <li class="relative px-6 py-3" x-data="{ open1: false }"> | 264 | <li class="relative px-6 py-3" x-data="{ open1: false }"> |
261 | <button | 265 | <button |
262 | 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" | 266 | 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" |
263 | @click="open1=!open1" | 267 | @click="open1=!open1" |
264 | aria-haspopup="true"> | 268 | aria-haspopup="true"> |
265 | <span class="inline-flex items-center"> | 269 | <span class="inline-flex items-center"> |
266 | <svg | 270 | <svg |
267 | class="w-5 h-5" | 271 | class="w-5 h-5" |
268 | aria-hidden="true" | 272 | aria-hidden="true" |
269 | fill="none" | 273 | fill="none" |
270 | stroke-linecap="round" | 274 | stroke-linecap="round" |
271 | stroke-linejoin="round" | 275 | stroke-linejoin="round" |
272 | stroke-width="2" | 276 | stroke-width="2" |
273 | viewBox="0 0 24 24" | 277 | viewBox="0 0 24 24" |
274 | stroke="currentColor"> | 278 | stroke="currentColor"> |
275 | <path | 279 | <path |
276 | 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" | 280 | 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" |
277 | ></path> | 281 | ></path> |
278 | </svg> | 282 | </svg> |
279 | <span class="ml-4">Справочники</span> | 283 | <span class="ml-4">Справочники</span> |
280 | </span> | 284 | </span> |
281 | <svg | 285 | <svg |
282 | class="w-4 h-4" | 286 | class="w-4 h-4" |
283 | aria-hidden="true" | 287 | aria-hidden="true" |
284 | fill="currentColor" | 288 | fill="currentColor" |
285 | viewBox="0 0 20 20" | 289 | viewBox="0 0 20 20" |
286 | > | 290 | > |
287 | <path | 291 | <path |
288 | fill-rule="evenodd" | 292 | fill-rule="evenodd" |
289 | 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" | 293 | 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" |
290 | clip-rule="evenodd" | 294 | clip-rule="evenodd" |
291 | ></path> | 295 | ></path> |
292 | </svg> | 296 | </svg> |
293 | </button> | 297 | </button> |
294 | <template x-if="open1"> | 298 | <template x-if="open1"> |
295 | <ul | 299 | <ul |
296 | x-transition:enter="transition-all ease-in-out duration-300" | 300 | x-transition:enter="transition-all ease-in-out duration-300" |
297 | x-transition:enter-start="opacity-25 max-h-0" | 301 | x-transition:enter-start="opacity-25 max-h-0" |
298 | x-transition:enter-end="opacity-100 max-h-xl" | 302 | x-transition:enter-end="opacity-100 max-h-xl" |
299 | x-transition:leave="transition-all ease-in-out duration-300" | 303 | x-transition:leave="transition-all ease-in-out duration-300" |
300 | x-transition:leave-start="opacity-100 max-h-xl" | 304 | x-transition:leave-start="opacity-100 max-h-xl" |
301 | x-transition:leave-end="opacity-0 max-h-0" | 305 | x-transition:leave-end="opacity-0 max-h-0" |
302 | 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" | 306 | 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" |
303 | aria-label="submenu" | 307 | aria-label="submenu" |
304 | > | 308 | > |
305 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 309 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
306 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> | 310 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> |
307 | </li> | 311 | </li> |
308 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 312 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
309 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории</a> | 313 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> |
314 | </li> | ||
315 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
316 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> | ||
317 | </li> | ||
318 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
319 | <a class="w-full" href="{{ route('admin.education.index') }}">Образование</a> | ||
310 | </li> | 320 | </li> |
311 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 321 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
312 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> | 322 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> |
313 | </li> | 323 | </li> |
314 | 324 | ||
315 | </ul> | 325 | </ul> |
316 | </template> | 326 | </template> |
317 | </li> | 327 | </li> |
318 | 328 | ||
319 | 329 | ||
320 | <!-- Редактор --> | 330 | <!-- Редактор --> |
321 | <li class="relative px-6 py-3"> | 331 | <li class="relative px-6 py-3"> |
322 | <button | 332 | <button |
323 | 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" | 333 | 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" |
324 | @click="togglePagesMenu" | 334 | @click="togglePagesMenu" |
325 | aria-haspopup="true"> | 335 | aria-haspopup="true"> |
326 | <span class="inline-flex items-center"> | 336 | <span class="inline-flex items-center"> |
327 | <svg | 337 | <svg |
328 | class="w-5 h-5" | 338 | class="w-5 h-5" |
329 | aria-hidden="true" | 339 | aria-hidden="true" |
330 | fill="none" | 340 | fill="none" |
331 | stroke-linecap="round" | 341 | stroke-linecap="round" |
332 | stroke-linejoin="round" | 342 | stroke-linejoin="round" |
333 | stroke-width="2" | 343 | stroke-width="2" |
334 | viewBox="0 0 24 24" | 344 | viewBox="0 0 24 24" |
335 | stroke="currentColor"> | 345 | stroke="currentColor"> |
336 | <path | 346 | <path |
337 | 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" | 347 | 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" |
338 | ></path> | 348 | ></path> |
339 | </svg> | 349 | </svg> |
340 | <span class="ml-4">Редактор</span> | 350 | <span class="ml-4">Редактор</span> |
341 | </span> | 351 | </span> |
342 | <svg | 352 | <svg |
343 | class="w-4 h-4" | 353 | class="w-4 h-4" |
344 | aria-hidden="true" | 354 | aria-hidden="true" |
345 | fill="currentColor" | 355 | fill="currentColor" |
346 | viewBox="0 0 20 20" | 356 | viewBox="0 0 20 20" |
347 | > | 357 | > |
348 | <path | 358 | <path |
349 | fill-rule="evenodd" | 359 | fill-rule="evenodd" |
350 | 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" | 360 | 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" |
351 | clip-rule="evenodd" | 361 | clip-rule="evenodd" |
352 | ></path> | 362 | ></path> |
353 | </svg> | 363 | </svg> |
354 | </button> | 364 | </button> |
355 | <template x-if="isPagesMenuOpen"> | 365 | <template x-if="isPagesMenuOpen"> |
356 | <ul | 366 | <ul |
357 | x-transition:enter="transition-all ease-in-out duration-300" | 367 | x-transition:enter="transition-all ease-in-out duration-300" |
358 | x-transition:enter-start="opacity-25 max-h-0" | 368 | x-transition:enter-start="opacity-25 max-h-0" |
359 | x-transition:enter-end="opacity-100 max-h-xl" | 369 | x-transition:enter-end="opacity-100 max-h-xl" |
360 | x-transition:leave="transition-all ease-in-out duration-300" | 370 | x-transition:leave="transition-all ease-in-out duration-300" |
361 | x-transition:leave-start="opacity-100 max-h-xl" | 371 | x-transition:leave-start="opacity-100 max-h-xl" |
362 | x-transition:leave-end="opacity-0 max-h-0" | 372 | x-transition:leave-end="opacity-0 max-h-0" |
363 | 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" | 373 | 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" |
364 | aria-label="submenu" | 374 | aria-label="submenu" |
365 | > | 375 | > |
366 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 376 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
367 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 377 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
368 | </li> | 378 | </li> |
369 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 379 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
370 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 380 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
371 | </li> | 381 | </li> |
372 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 382 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
373 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> | 383 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> |
374 | </li> | 384 | </li> |
375 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 385 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
376 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 386 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
377 | </li> | 387 | </li> |
378 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 388 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
379 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 389 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
380 | </li> | 390 | </li> |
381 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 391 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
382 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 392 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
383 | </li> | 393 | </li> |
384 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 394 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
385 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 395 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
386 | </li> | 396 | </li> |
387 | </ul> | 397 | </ul> |
388 | </template> | 398 | </template> |
389 | </li> | 399 | </li> |
390 | 400 | ||
391 | </ul> | 401 | </ul> |
392 | <!--<div class="px-6 my-6"> | 402 | <!--<div class="px-6 my-6"> |
393 | <button | 403 | <button |
394 | 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" | 404 | 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" |
395 | > | 405 | > |
396 | Create account | 406 | Create account |
397 | <span class="ml-2" aria-hidden="true">+</span> | 407 | <span class="ml-2" aria-hidden="true">+</span> |
398 | </button> | 408 | </button> |
399 | </div>--> | 409 | </div>--> |
400 | </div> | 410 | </div> |
401 | </aside> | 411 | </aside> |
402 | <!-- Mobile sidebar --> | 412 | <!-- Mobile sidebar --> |
403 | <!-- Backdrop --> | 413 | <!-- Backdrop --> |
404 | <div | 414 | <div |
405 | x-show="isSideMenuOpen" | 415 | x-show="isSideMenuOpen" |
406 | x-transition:enter="transition ease-in-out duration-150" | 416 | x-transition:enter="transition ease-in-out duration-150" |
407 | x-transition:enter-start="opacity-0" | 417 | x-transition:enter-start="opacity-0" |
408 | x-transition:enter-end="opacity-100" | 418 | x-transition:enter-end="opacity-100" |
409 | x-transition:leave="transition ease-in-out duration-150" | 419 | x-transition:leave="transition ease-in-out duration-150" |
410 | x-transition:leave-start="opacity-100" | 420 | x-transition:leave-start="opacity-100" |
411 | x-transition:leave-end="opacity-0" | 421 | x-transition:leave-end="opacity-0" |
412 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | 422 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" |
413 | ></div> | 423 | ></div> |
414 | <aside | 424 | <aside |
415 | 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" | 425 | 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" |
416 | x-show="isSideMenuOpen" | 426 | x-show="isSideMenuOpen" |
417 | x-transition:enter="transition ease-in-out duration-150" | 427 | x-transition:enter="transition ease-in-out duration-150" |
418 | x-transition:enter-start="opacity-0 transform -translate-x-20" | 428 | x-transition:enter-start="opacity-0 transform -translate-x-20" |
419 | x-transition:enter-end="opacity-100" | 429 | x-transition:enter-end="opacity-100" |
420 | x-transition:leave="transition ease-in-out duration-150" | 430 | x-transition:leave="transition ease-in-out duration-150" |
421 | x-transition:leave-start="opacity-100" | 431 | x-transition:leave-start="opacity-100" |
422 | x-transition:leave-end="opacity-0 transform -translate-x-20" | 432 | x-transition:leave-end="opacity-0 transform -translate-x-20" |
423 | @click.away="closeSideMenu" | 433 | @click.away="closeSideMenu" |
424 | @keydown.escape="closeSideMenu" | 434 | @keydown.escape="closeSideMenu" |
425 | > | 435 | > |
426 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 436 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
427 | <a | 437 | <a |
428 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 438 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
429 | href="{{ route('admin.index') }}" | 439 | href="{{ route('admin.index') }}" |
430 | > | 440 | > |
431 | Админка | 441 | Админка |
432 | </a> | 442 | </a> |
433 | <ul class="mt-6"> | 443 | <ul class="mt-6"> |
434 | <li class="relative px-6 py-3"> | 444 | <li class="relative px-6 py-3"> |
435 | <span | 445 | <span |
436 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 446 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
437 | aria-hidden="true" | 447 | aria-hidden="true" |
438 | ></span> | 448 | ></span> |
439 | <a | 449 | <a |
440 | 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" | 450 | 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" |
441 | href="{{ route('admin.index') }}" | 451 | href="{{ route('admin.index') }}" |
442 | > | 452 | > |
443 | <svg | 453 | <svg |
444 | class="w-5 h-5" | 454 | class="w-5 h-5" |
445 | aria-hidden="true" | 455 | aria-hidden="true" |
446 | fill="none" | 456 | fill="none" |
447 | stroke-linecap="round" | 457 | stroke-linecap="round" |
448 | stroke-linejoin="round" | 458 | stroke-linejoin="round" |
449 | stroke-width="2" | 459 | stroke-width="2" |
450 | viewBox="0 0 24 24" | 460 | viewBox="0 0 24 24" |
451 | stroke="currentColor" | 461 | stroke="currentColor" |
452 | > | 462 | > |
453 | <path | 463 | <path |
454 | 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" | 464 | 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" |
455 | ></path> | 465 | ></path> |
456 | </svg> | 466 | </svg> |
457 | <span class="ml-4">Главная страница</span> | 467 | <span class="ml-4">Главная страница</span> |
458 | </a> | 468 | </a> |
459 | </li> | 469 | </li> |
460 | </ul> | 470 | </ul> |
461 | <ul> | 471 | <ul> |
472 | @if ($UserId == 1) | ||
462 | <li class="relative px-6 py-3"> | 473 | <li class="relative px-6 py-3"> |
463 | <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" | 474 | <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" |
464 | href="{{ route('admin.users') }}"> | 475 | href="{{ route('admin.users') }}"> |
465 | <svg | 476 | <svg |
466 | class="w-5 h-5" | 477 | class="w-5 h-5" |
467 | aria-hidden="true" | 478 | aria-hidden="true" |
468 | fill="none" | 479 | fill="none" |
469 | stroke-linecap="round" | 480 | stroke-linecap="round" |
470 | stroke-linejoin="round" | 481 | stroke-linejoin="round" |
471 | stroke-width="2" | 482 | stroke-width="2" |
472 | viewBox="0 0 24 24" | 483 | viewBox="0 0 24 24" |
473 | stroke="currentColor" | 484 | stroke="currentColor" |
474 | > | 485 | > |
475 | <path | 486 | <path |
476 | 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" | 487 | 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" |
477 | ></path> | 488 | ></path> |
478 | </svg> | 489 | </svg> |
479 | <span class="ml-4">Пользователи</span> | 490 | <span class="ml-4">Пользователи</span> |
480 | </a> | 491 | </a> |
481 | </li> | 492 | </li> |
493 | @endif | ||
482 | <li class="relative px-6 py-3"> | 494 | <li class="relative px-6 py-3"> |
483 | <a | 495 | <a |
484 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 496 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
485 | href="{{ route('admin.employers') }}" | 497 | href="{{ route('admin.employers') }}" |
486 | > | 498 | > |
487 | <svg | 499 | <svg |
488 | class="w-5 h-5" | 500 | class="w-5 h-5" |
489 | aria-hidden="true" | 501 | aria-hidden="true" |
490 | fill="none" | 502 | fill="none" |
491 | stroke-linecap="round" | 503 | stroke-linecap="round" |
492 | stroke-linejoin="round" | 504 | stroke-linejoin="round" |
493 | stroke-width="2" | 505 | stroke-width="2" |
494 | viewBox="0 0 24 24" | 506 | viewBox="0 0 24 24" |
495 | stroke="currentColor" | 507 | stroke="currentColor" |
496 | > | 508 | > |
497 | <path | 509 | <path |
498 | 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" | 510 | 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" |
499 | ></path> | 511 | ></path> |
500 | </svg> | 512 | </svg> |
501 | <span class="ml-4">Работодатели</span> | 513 | <span class="ml-4">Работодатели</span> |
502 | </a> | 514 | </a> |
503 | </li> | 515 | </li> |
504 | <li class="relative px-6 py-3"> | 516 | <li class="relative px-6 py-3"> |
505 | <a | 517 | <a |
506 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 518 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
507 | href="{{ route('admin.workers') }}" | 519 | href="{{ route('admin.workers') }}" |
508 | > | 520 | > |
509 | <svg | 521 | <svg |
510 | class="w-5 h-5" | 522 | class="w-5 h-5" |
511 | aria-hidden="true" | 523 | aria-hidden="true" |
512 | fill="none" | 524 | fill="none" |
513 | stroke-linecap="round" | 525 | stroke-linecap="round" |
514 | stroke-linejoin="round" | 526 | stroke-linejoin="round" |
515 | stroke-width="2" | 527 | stroke-width="2" |
516 | viewBox="0 0 24 24" | 528 | viewBox="0 0 24 24" |
517 | stroke="currentColor" | 529 | stroke="currentColor" |
518 | > | 530 | > |
519 | <path | 531 | <path |
520 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 532 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
521 | ></path> | 533 | ></path> |
522 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 534 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
523 | </svg> | 535 | </svg> |
524 | <span class="ml-4">Соискатели</span> | 536 | <span class="ml-4">Соискатели</span> |
525 | </a> | 537 | </a> |
526 | </li> | 538 | </li> |
527 | <li class="relative px-6 py-3"> | 539 | <li class="relative px-6 py-3"> |
528 | <a | 540 | <a |
529 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 541 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
530 | href="{{ route('admin.ad-employers') }}" | 542 | href="{{ route('admin.ad-employers') }}" |
531 | > | 543 | > |
532 | <svg | 544 | <svg |
533 | class="w-5 h-5" | 545 | class="w-5 h-5" |
534 | aria-hidden="true" | 546 | aria-hidden="true" |
535 | fill="none" | 547 | fill="none" |
536 | stroke-linecap="round" | 548 | stroke-linecap="round" |
537 | stroke-linejoin="round" | 549 | stroke-linejoin="round" |
538 | stroke-width="2" | 550 | stroke-width="2" |
539 | viewBox="0 0 24 24" | 551 | viewBox="0 0 24 24" |
540 | stroke="currentColor" | 552 | stroke="currentColor" |
541 | > | 553 | > |
542 | <path | 554 | <path |
543 | 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" | 555 | 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" |
544 | ></path> | 556 | ></path> |
545 | </svg> | 557 | </svg> |
546 | <span class="ml-4">Вакансии</span> | 558 | <span class="ml-4">Вакансии</span> |
547 | </a> | 559 | </a> |
548 | </li> | 560 | </li> |
549 | <li class="relative px-6 py-3"> | 561 | <li class="relative px-6 py-3"> |
550 | <a | 562 | <a |
551 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 563 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
552 | href="{{ route('admin.messages') }}" | 564 | href="{{ route('admin.messages') }}" |
553 | > | 565 | > |
554 | <svg | 566 | <svg |
555 | class="w-5 h-5" | 567 | class="w-5 h-5" |
556 | aria-hidden="true" | 568 | aria-hidden="true" |
557 | fill="none" | 569 | fill="none" |
558 | stroke-linecap="round" | 570 | stroke-linecap="round" |
559 | stroke-linejoin="round" | 571 | stroke-linejoin="round" |
560 | stroke-width="2" | 572 | stroke-width="2" |
561 | viewBox="0 0 24 24" | 573 | viewBox="0 0 24 24" |
562 | stroke="currentColor" | 574 | stroke="currentColor" |
563 | > | 575 | > |
564 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 576 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
565 | </svg> | 577 | </svg> |
566 | <span class="ml-4">Сообщения</span> | 578 | <span class="ml-4">Сообщения все</span> |
567 | </a> | 579 | </a> |
568 | </li> | 580 | </li> |
569 | <li class="relative px-6 py-3"> | 581 | <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" | 582 | <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" |
571 | href="{{ route('admin.groups') }}"> | 583 | href="{{ route('admin.groups') }}"> |
572 | <svg | 584 | <svg |
573 | class="w-5 h-5" | 585 | class="w-5 h-5" |
574 | aria-hidden="true" | 586 | aria-hidden="true" |
575 | fill="none" | 587 | fill="none" |
576 | stroke-linecap="round" | 588 | stroke-linecap="round" |
577 | stroke-linejoin="round" | 589 | stroke-linejoin="round" |
578 | stroke-width="2" | 590 | stroke-width="2" |
579 | viewBox="0 0 24 24" | 591 | viewBox="0 0 24 24" |
580 | stroke="currentColor" | 592 | stroke="currentColor" |
581 | > | 593 | > |
582 | <path | 594 | <path |
583 | 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" | 595 | 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" |
584 | ></path> | 596 | ></path> |
585 | </svg> | 597 | </svg> |
586 | <span class="ml-4">Группы пользователей</span> | 598 | <span class="ml-4">Группы пользователей</span> |
587 | </a> | 599 | </a> |
588 | </li> | 600 | </li> |
601 | @if ($UserId == 1) | ||
589 | <li class="relative px-6 py-3"> | 602 | <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" | 603 | <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" |
591 | href="{{ route('admin.roles') }}"> | 604 | href="{{ route('admin.roles') }}"> |
592 | <svg | 605 | <svg |
593 | class="w-5 h-5" | 606 | class="w-5 h-5" |
594 | aria-hidden="true" | 607 | aria-hidden="true" |
595 | fill="none" | 608 | fill="none" |
596 | stroke-linecap="round" | 609 | stroke-linecap="round" |
597 | stroke-linejoin="round" | 610 | stroke-linejoin="round" |
598 | stroke-width="2" | 611 | stroke-width="2" |
599 | viewBox="0 0 24 24" | 612 | viewBox="0 0 24 24" |
600 | stroke="currentColor" | 613 | stroke="currentColor" |
601 | > | 614 | > |
602 | <path | 615 | <path |
603 | 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" | 616 | 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" |
604 | ></path> | 617 | ></path> |
605 | </svg> | 618 | </svg> |
606 | <span class="ml-4">Роли пользователей</span> | 619 | <span class="ml-4">Роли пользователей</span> |
607 | </a> | 620 | </a> |
608 | </li> | 621 | </li> |
622 | @endif | ||
609 | <li class="relative px-6 py-3"> | 623 | <li class="relative px-6 py-3"> |
610 | <a | 624 | <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" | 625 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
612 | href="{{ route('admin.statics') }}" | 626 | href="{{ route('admin.statics') }}" |
613 | > | 627 | > |
614 | <svg | 628 | <svg |
615 | class="w-5 h-5" | 629 | class="w-5 h-5" |
616 | aria-hidden="true" | 630 | aria-hidden="true" |
617 | fill="none" | 631 | fill="none" |
618 | stroke-linecap="round" | 632 | stroke-linecap="round" |
619 | stroke-linejoin="round" | 633 | stroke-linejoin="round" |
620 | stroke-width="2" | 634 | stroke-width="2" |
621 | viewBox="0 0 24 24" | 635 | viewBox="0 0 24 24" |
622 | stroke="currentColor" | 636 | stroke="currentColor" |
623 | > | 637 | > |
624 | <path | 638 | <path |
625 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 639 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
626 | ></path> | 640 | ></path> |
627 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 641 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
628 | </svg> | 642 | </svg> |
629 | <span class="ml-4">Статистика</span> | 643 | <span class="ml-4">Статистика</span> |
630 | </a> | 644 | </a> |
631 | </li> | 645 | </li> |
632 | <li class="relative px-6 py-3"> | 646 | <li class="relative px-6 py-3"> |
633 | <a | 647 | <a |
634 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 648 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
635 | href="{{ route('admin.messages') }}" | 649 | href="{{ route('admin.messages') }}" |
636 | > | 650 | > |
637 | <svg | 651 | <svg |
638 | class="w-5 h-5" | 652 | class="w-5 h-5" |
639 | aria-hidden="true" | 653 | aria-hidden="true" |
640 | fill="none" | 654 | fill="none" |
641 | stroke-linecap="round" | 655 | stroke-linecap="round" |
642 | stroke-linejoin="round" | 656 | stroke-linejoin="round" |
643 | stroke-width="2" | 657 | stroke-width="2" |
644 | viewBox="0 0 24 24" | 658 | viewBox="0 0 24 24" |
645 | stroke="currentColor" | 659 | stroke="currentColor" |
646 | > | 660 | > |
647 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 661 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
648 | </svg> | 662 | </svg> |
649 | <span class="ml-4">Сообщения</span> | 663 | <span class="ml-4">Сообщения</span> |
650 | </a> | 664 | </a> |
651 | </li> | 665 | </li> |
652 | <!-- Справочники --> | 666 | <!-- Справочники --> |
653 | <li class="relative px-6 py-3" x-data="{ open2: false }"> | 667 | <li class="relative px-6 py-3" x-data="{ open2: false }"> |
654 | <button | 668 | <button |
655 | 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" | 669 | 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" |
656 | @click="open2=!open2" | 670 | @click="open2=!open2" |
657 | aria-haspopup="true"> | 671 | aria-haspopup="true"> |
658 | <span class="inline-flex items-center"> | 672 | <span class="inline-flex items-center"> |
659 | <svg | 673 | <svg |
660 | class="w-5 h-5" | 674 | class="w-5 h-5" |
661 | aria-hidden="true" | 675 | aria-hidden="true" |
662 | fill="none" | 676 | fill="none" |
663 | stroke-linecap="round" | 677 | stroke-linecap="round" |
664 | stroke-linejoin="round" | 678 | stroke-linejoin="round" |
665 | stroke-width="2" | 679 | stroke-width="2" |
666 | viewBox="0 0 24 24" | 680 | viewBox="0 0 24 24" |
667 | stroke="currentColor"> | 681 | stroke="currentColor"> |
668 | <path | 682 | <path |
669 | 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" | 683 | 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" |
670 | ></path> | 684 | ></path> |
671 | </svg> | 685 | </svg> |
672 | <span class="ml-4">Справочники</span> | 686 | <span class="ml-4">Справочники</span> |
673 | </span> | 687 | </span> |
674 | <svg | 688 | <svg |
675 | class="w-4 h-4" | 689 | class="w-4 h-4" |
676 | aria-hidden="true" | 690 | aria-hidden="true" |
677 | fill="currentColor" | 691 | fill="currentColor" |
678 | viewBox="0 0 20 20" | 692 | viewBox="0 0 20 20" |
679 | > | 693 | > |
680 | <path | 694 | <path |
681 | fill-rule="evenodd" | 695 | fill-rule="evenodd" |
682 | 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" | 696 | 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" |
683 | clip-rule="evenodd" | 697 | clip-rule="evenodd" |
684 | ></path> | 698 | ></path> |
685 | </svg> | 699 | </svg> |
686 | </button> | 700 | </button> |
687 | <template x-if="open2"> | 701 | <template x-if="open2"> |
688 | <ul | 702 | <ul |
689 | x-transition:enter="transition-all ease-in-out duration-300" | 703 | x-transition:enter="transition-all ease-in-out duration-300" |
690 | x-transition:enter-start="opacity-25 max-h-0" | 704 | x-transition:enter-start="opacity-25 max-h-0" |
691 | x-transition:enter-end="opacity-100 max-h-xl" | 705 | x-transition:enter-end="opacity-100 max-h-xl" |
692 | x-transition:leave="transition-all ease-in-out duration-300" | 706 | x-transition:leave="transition-all ease-in-out duration-300" |
693 | x-transition:leave-start="opacity-100 max-h-xl" | 707 | x-transition:leave-start="opacity-100 max-h-xl" |
694 | x-transition:leave-end="opacity-0 max-h-0" | 708 | x-transition:leave-end="opacity-0 max-h-0" |
695 | 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" | 709 | 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" |
696 | aria-label="submenu" | 710 | aria-label="submenu" |
697 | > | 711 | > |
698 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 712 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
699 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> | 713 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> |
700 | </li> | 714 | </li> |
701 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 715 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
702 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории</a> | 716 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> |
717 | </li> | ||
718 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
719 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> | ||
720 | </li> | ||
721 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
722 | <a class="w-full" href="{{ route('admin.education.index') }}">Образование</a> | ||
703 | </li> | 723 | </li> |
704 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 724 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
705 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> | 725 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> |
706 | </li> | 726 | </li> |
707 | 727 | ||
708 | </ul> | 728 | </ul> |
709 | </template> | 729 | </template> |
710 | </li> | 730 | </li> |
711 | 731 | ||
712 | 732 | ||
713 | <!-- Редактор --> | 733 | <!-- Редактор --> |
714 | <li class="relative px-6 py-3"> | 734 | <li class="relative px-6 py-3"> |
715 | <button | 735 | <button |
716 | 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" | 736 | 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" |
717 | @click="togglePagesMenu" | 737 | @click="togglePagesMenu" |
718 | aria-haspopup="true" | 738 | aria-haspopup="true" |
719 | > | 739 | > |
720 | <span class="inline-flex items-center"> | 740 | <span class="inline-flex items-center"> |
721 | <svg | 741 | <svg |
722 | class="w-5 h-5" | 742 | class="w-5 h-5" |
723 | aria-hidden="true" | 743 | aria-hidden="true" |
724 | fill="none" | 744 | fill="none" |
725 | stroke-linecap="round" | 745 | stroke-linecap="round" |
726 | stroke-linejoin="round" | 746 | stroke-linejoin="round" |
727 | stroke-width="2" | 747 | stroke-width="2" |
728 | viewBox="0 0 24 24" | 748 | viewBox="0 0 24 24" |
729 | stroke="currentColor" | 749 | stroke="currentColor" |
730 | > | 750 | > |
731 | <path | 751 | <path |
732 | 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" | 752 | 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" |
733 | ></path> | 753 | ></path> |
734 | </svg> | 754 | </svg> |
735 | <span class="ml-4">Редактор</span> | 755 | <span class="ml-4">Редактор</span> |
736 | </span> | 756 | </span> |
737 | <svg | 757 | <svg |
738 | class="w-4 h-4" | 758 | class="w-4 h-4" |
739 | aria-hidden="true" | 759 | aria-hidden="true" |
740 | fill="currentColor" | 760 | fill="currentColor" |
741 | viewBox="0 0 20 20" | 761 | viewBox="0 0 20 20" |
742 | > | 762 | > |
743 | <path | 763 | <path |
744 | fill-rule="evenodd" | 764 | fill-rule="evenodd" |
745 | 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" | 765 | 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" |
746 | clip-rule="evenodd" | 766 | clip-rule="evenodd" |
747 | ></path> | 767 | ></path> |
748 | </svg> | 768 | </svg> |
749 | </button> | 769 | </button> |
750 | <template x-if="isPagesMenuOpen"> | 770 | <template x-if="isPagesMenuOpen"> |
751 | <ul | 771 | <ul |
752 | x-transition:enter="transition-all ease-in-out duration-300" | 772 | x-transition:enter="transition-all ease-in-out duration-300" |
753 | x-transition:enter-start="opacity-25 max-h-0" | 773 | x-transition:enter-start="opacity-25 max-h-0" |
754 | x-transition:enter-end="opacity-100 max-h-xl" | 774 | x-transition:enter-end="opacity-100 max-h-xl" |
755 | x-transition:leave="transition-all ease-in-out duration-300" | 775 | x-transition:leave="transition-all ease-in-out duration-300" |
756 | x-transition:leave-start="opacity-100 max-h-xl" | 776 | x-transition:leave-start="opacity-100 max-h-xl" |
757 | x-transition:leave-end="opacity-0 max-h-0" | 777 | x-transition:leave-end="opacity-0 max-h-0" |
758 | 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" | 778 | 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" |
759 | aria-label="submenu" | 779 | aria-label="submenu" |
760 | > | 780 | > |
761 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 781 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
762 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 782 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
763 | </li> | 783 | </li> |
764 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 784 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
765 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 785 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
766 | </li> | 786 | </li> |
767 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 787 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
768 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> | 788 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> |
769 | </li> | 789 | </li> |
770 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 790 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
771 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 791 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
772 | </li> | 792 | </li> |
773 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 793 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
774 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 794 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
775 | </li> | 795 | </li> |
776 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 796 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
777 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 797 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
778 | </li> | 798 | </li> |
779 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 799 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
780 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 800 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
781 | </li> | 801 | </li> |
782 | 802 | ||
783 | </ul> | 803 | </ul> |
784 | </template> | 804 | </template> |
785 | </li> | 805 | </li> |
786 | </ul> | 806 | </ul> |
787 | <!--<div class="px-6 my-6"> | 807 | <!--<div class="px-6 my-6"> |
788 | <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"> | 808 | <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"> |
789 | Create account | 809 | Create account |
790 | <span class="ml-2" aria-hidden="true">+</span> | 810 | <span class="ml-2" aria-hidden="true">+</span> |
791 | </button> | 811 | </button> |
792 | </div>--> | 812 | </div>--> |
793 | </div> | 813 | </div> |
794 | </aside> | 814 | </aside> |
795 | <div class="flex flex-col flex-1 w-full"> | 815 | <div class="flex flex-col flex-1 w-full"> |
796 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> | 816 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> |
797 | <div | 817 | <div |
798 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" | 818 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" |
799 | > | 819 | > |
800 | <!-- Mobile hamburger --> | 820 | <!-- Mobile hamburger --> |
801 | <button | 821 | <button |
802 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" | 822 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" |
803 | @click="toggleSideMenu" | 823 | @click="toggleSideMenu" |
804 | aria-label="Menu" | 824 | aria-label="Menu" |
805 | > | 825 | > |
806 | <svg | 826 | <svg |
807 | class="w-6 h-6" | 827 | class="w-6 h-6" |
808 | aria-hidden="true" | 828 | aria-hidden="true" |
809 | fill="currentColor" | 829 | fill="currentColor" |
810 | viewBox="0 0 20 20" | 830 | viewBox="0 0 20 20" |
811 | > | 831 | > |
812 | <path | 832 | <path |
813 | fill-rule="evenodd" | 833 | fill-rule="evenodd" |
814 | 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" | 834 | 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" |
815 | clip-rule="evenodd" | 835 | clip-rule="evenodd" |
816 | ></path> | 836 | ></path> |
817 | </svg> | 837 | </svg> |
818 | </button> | 838 | </button> |
819 | <!-- Search input --> | 839 | <!-- Search input --> |
820 | <div class="flex justify-center flex-1 lg:mr-32"> | 840 | <div class="flex justify-center flex-1 lg:mr-32"> |
821 | <div | 841 | <div |
822 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" | 842 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" |
823 | > | 843 | > |
824 | 844 | ||
825 | @yield('search') | 845 | @yield('search') |
826 | </div> | 846 | </div> |
827 | </div> | 847 | </div> |
828 | <ul class="flex items-center flex-shrink-0 space-x-6"> | 848 | <ul class="flex items-center flex-shrink-0 space-x-6"> |
829 | <!-- Theme toggler --> | 849 | <!-- Theme toggler --> |
830 | <li class="flex"> | 850 | <li class="flex"> |
831 | <button | 851 | <button |
832 | class="rounded-md focus:outline-none focus:shadow-outline-purple" | 852 | class="rounded-md focus:outline-none focus:shadow-outline-purple" |
833 | @click="toggleTheme" | 853 | @click="toggleTheme" |
834 | aria-label="Toggle color mode" | 854 | aria-label="Toggle color mode" |
835 | > | 855 | > |
836 | <template x-if="!dark"> | 856 | <template x-if="!dark"> |
837 | <svg | 857 | <svg |
838 | class="w-5 h-5" | 858 | class="w-5 h-5" |
839 | aria-hidden="true" | 859 | aria-hidden="true" |
840 | fill="currentColor" | 860 | fill="currentColor" |
841 | viewBox="0 0 20 20" | 861 | viewBox="0 0 20 20" |
842 | > | 862 | > |
843 | <path | 863 | <path |
844 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" | 864 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" |
845 | ></path> | 865 | ></path> |
846 | </svg> | 866 | </svg> |
847 | </template> | 867 | </template> |
848 | <template x-if="dark"> | 868 | <template x-if="dark"> |
849 | <svg | 869 | <svg |
850 | class="w-5 h-5" | 870 | class="w-5 h-5" |
851 | aria-hidden="true" | 871 | aria-hidden="true" |
852 | fill="currentColor" | 872 | fill="currentColor" |
853 | viewBox="0 0 20 20" | 873 | viewBox="0 0 20 20" |
854 | > | 874 | > |
855 | <path | 875 | <path |
856 | fill-rule="evenodd" | 876 | fill-rule="evenodd" |
857 | 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" | 877 | 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" |
858 | clip-rule="evenodd" | 878 | clip-rule="evenodd" |
859 | ></path> | 879 | ></path> |
860 | </svg> | 880 | </svg> |
861 | </template> | 881 | </template> |
862 | </button> | 882 | </button> |
863 | </li> | 883 | </li> |
864 | <!-- Notifications menu --> | 884 | <!-- Notifications menu --> |
865 | <li class="relative"> | 885 | <li class="relative"> |
866 | <button | 886 | <button |
867 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" | 887 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" |
868 | @click="toggleNotificationsMenu" | 888 | @click="toggleNotificationsMenu" |
869 | @keydown.escape="closeNotificationsMenu" | 889 | @keydown.escape="closeNotificationsMenu" |
870 | aria-label="Notifications" | 890 | aria-label="Notifications" |
871 | aria-haspopup="true" | 891 | aria-haspopup="true" |
872 | > | 892 | > |
873 | <svg | 893 | <svg |
874 | class="w-5 h-5" | 894 | class="w-5 h-5" |
875 | aria-hidden="true" | 895 | aria-hidden="true" |
876 | fill="currentColor" | 896 | fill="currentColor" |
877 | viewBox="0 0 20 20" | 897 | viewBox="0 0 20 20" |
878 | > | 898 | > |
879 | <path | 899 | <path |
880 | 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" | 900 | 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" |
881 | ></path> | 901 | ></path> |
882 | </svg> | 902 | </svg> |
883 | <!-- Notification badge --> | 903 | <!-- Notification badge --> |
884 | <span | 904 | <span |
885 | aria-hidden="true" | 905 | aria-hidden="true" |
886 | 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" | 906 | 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" |
887 | ></span> | 907 | ></span> |
888 | </button> | 908 | </button> |
889 | <template x-if="isNotificationsMenuOpen"> | 909 | <template x-if="isNotificationsMenuOpen"> |
890 | <ul | 910 | <ul |
891 | x-transition:leave="transition ease-in duration-150" | 911 | x-transition:leave="transition ease-in duration-150" |
892 | x-transition:leave-start="opacity-100" | 912 | x-transition:leave-start="opacity-100" |
893 | x-transition:leave-end="opacity-0" | 913 | x-transition:leave-end="opacity-0" |
894 | @click.away="closeNotificationsMenu" | 914 | @click.away="closeNotificationsMenu" |
895 | @keydown.escape="closeNotificationsMenu" | 915 | @keydown.escape="closeNotificationsMenu" |
896 | 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" | 916 | 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" |
897 | > | 917 | > |
898 | <li class="flex"> | 918 | <li class="flex"> |
899 | <a | 919 | <a |
900 | 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" | 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" |
901 | href="{{ route('admin.admin-messages') }}" | 921 | href="{{ route('admin.admin-messages') }}" |
902 | > | 922 | > |
903 | <span>Сообщения</span> | 923 | <span>Сообщения</span> |
904 | @if($MsgCount > 0) | 924 | @if($MsgCount > 0) |
905 | <span | 925 | <span |
906 | 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" | 926 | 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" |
907 | > | 927 | > |
908 | 928 | ||
909 | {{ $MsgCount }} | 929 | {{ $MsgCount }} |
910 | </span> | 930 | </span> |
911 | @endif | 931 | @endif |
912 | </a> | 932 | </a> |
913 | </li> | 933 | </li> |
914 | <!--<li class="flex"> | 934 | <!--<li class="flex"> |
915 | <a | 935 | <a |
916 | 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" | 936 | 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" |
917 | href="#" | 937 | href="#" |
918 | > | 938 | > |
919 | <span>Логи</span> | 939 | <span>Логи</span> |
920 | </a> | 940 | </a> |
921 | </li>--> | 941 | </li>--> |
922 | </ul> | 942 | </ul> |
923 | </template> | 943 | </template> |
924 | </li> | 944 | </li> |
925 | <!-- Profile menu --> | 945 | <!-- Profile menu --> |
926 | <li class="relative"> | 946 | <li class="relative"> |
927 | <button | 947 | <button |
928 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" | 948 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" |
929 | @click="toggleProfileMenu" | 949 | @click="toggleProfileMenu" |
930 | @keydown.escape="closeProfileMenu" | 950 | @keydown.escape="closeProfileMenu" |
931 | aria-label="Account" | 951 | aria-label="Account" |
932 | aria-haspopup="true" | 952 | aria-haspopup="true" |
933 | > | 953 | > |
934 | <img | 954 | <img |
935 | class="object-cover w-8 h-8 rounded-full" | 955 | class="object-cover w-8 h-8 rounded-full" |
936 | src="{{ asset('assets/img/profile.jpg') }}" | 956 | src="{{ asset('assets/img/profile.jpg') }}" |
937 | alt="" | 957 | alt="" |
938 | aria-hidden="true" | 958 | aria-hidden="true" |
939 | /> | 959 | /> |
940 | </button> | 960 | </button> |
941 | <template x-if="isProfileMenuOpen"> | 961 | <template x-if="isProfileMenuOpen"> |
942 | <ul | 962 | <ul |
943 | x-transition:leave="transition ease-in duration-150" | 963 | x-transition:leave="transition ease-in duration-150" |
944 | x-transition:leave-start="opacity-100" | 964 | x-transition:leave-start="opacity-100" |
945 | x-transition:leave-end="opacity-0" | 965 | x-transition:leave-end="opacity-0" |
946 | @click.away="closeProfileMenu" | 966 | @click.away="closeProfileMenu" |
947 | @keydown.escape="closeProfileMenu" | 967 | @keydown.escape="closeProfileMenu" |
948 | 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" | 968 | 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" |
949 | aria-label="submenu" | 969 | aria-label="submenu" |
950 | > | 970 | > |
951 | <li class="flex"> | 971 | <li class="flex"> |
952 | <a | 972 | <a |
953 | 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" | 973 | 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" |
954 | href="{{ route('admin.profile') }}" | 974 | href="{{ route('admin.profile') }}" |
955 | > | 975 | > |
956 | <svg | 976 | <svg |
957 | class="w-4 h-4 mr-3" | 977 | class="w-4 h-4 mr-3" |
958 | aria-hidden="true" | 978 | aria-hidden="true" |
959 | fill="none" | 979 | fill="none" |
960 | stroke-linecap="round" | 980 | stroke-linecap="round" |
961 | stroke-linejoin="round" | 981 | stroke-linejoin="round" |
962 | stroke-width="2" | 982 | stroke-width="2" |
963 | viewBox="0 0 24 24" | 983 | viewBox="0 0 24 24" |
964 | stroke="currentColor" | 984 | stroke="currentColor" |
965 | > | 985 | > |
966 | <path | 986 | <path |
967 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" | 987 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" |
968 | ></path> | 988 | ></path> |
969 | </svg> | 989 | </svg> |
970 | <span>Профиль</span> | 990 | <span>Профиль</span> |
971 | </a> | 991 | </a> |
972 | </li> | 992 | </li> |
973 | <li class="flex"> | 993 | <li class="flex"> |
974 | <a | 994 | <a |
975 | 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" | 995 | 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" |
976 | href="{{ route('admin.config') }}" | 996 | href="{{ route('admin.config') }}" |
977 | > | 997 | > |
978 | <svg | 998 | <svg |
979 | class="w-4 h-4 mr-3" | 999 | class="w-4 h-4 mr-3" |
980 | aria-hidden="true" | 1000 | aria-hidden="true" |
981 | fill="none" | 1001 | fill="none" |
982 | stroke-linecap="round" | 1002 | stroke-linecap="round" |
983 | stroke-linejoin="round" | 1003 | stroke-linejoin="round" |
984 | stroke-width="2" | 1004 | stroke-width="2" |
985 | viewBox="0 0 24 24" | 1005 | viewBox="0 0 24 24" |
986 | stroke="currentColor" | 1006 | stroke="currentColor" |
987 | > | 1007 | > |
988 | <path | 1008 | <path |
989 | 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" | 1009 | 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" |
990 | ></path> | 1010 | ></path> |
991 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> | 1011 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> |
992 | </svg> | 1012 | </svg> |
993 | <span>Настройки</span> | 1013 | <span>Настройки</span> |
994 | </a> | 1014 | </a> |
995 | </li> | 1015 | </li> |
996 | <li class="flex"> | 1016 | <li class="flex"> |
997 | <a | 1017 | <a |
998 | 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" | 1018 | 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" |
999 | href="{{ route('admin.logout') }}" | 1019 | href="{{ route('admin.logout') }}" |
1000 | > | 1020 | > |
1001 | <svg | 1021 | <svg |
1002 | class="w-4 h-4 mr-3" | 1022 | class="w-4 h-4 mr-3" |
1003 | aria-hidden="true" | 1023 | aria-hidden="true" |
1004 | fill="none" | 1024 | fill="none" |
1005 | stroke-linecap="round" | 1025 | stroke-linecap="round" |
1006 | stroke-linejoin="round" | 1026 | stroke-linejoin="round" |
1007 | stroke-width="2" | 1027 | stroke-width="2" |
1008 | viewBox="0 0 24 24" | 1028 | viewBox="0 0 24 24" |
1009 | stroke="currentColor" | 1029 | stroke="currentColor" |
1010 | > | 1030 | > |
1011 | <path | 1031 | <path |
1012 | 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" | 1032 | 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" |
1013 | ></path> | 1033 | ></path> |
1014 | </svg> | 1034 | </svg> |
1015 | <span>Выход</span> | 1035 | <span>Выход</span> |
1016 | </a> | 1036 | </a> |
1017 | </li> | 1037 | </li> |
1018 | </ul> | 1038 | </ul> |
1019 | </template> | 1039 | </template> |
1020 | </li> | 1040 | </li> |
1021 | </ul> | 1041 | </ul> |
1022 | </div> | 1042 | </div> |
1023 | </header> | 1043 | </header> |
1024 | <main class="h-full overflow-y-auto"> | 1044 | <main class="h-full overflow-y-auto"> |
1025 | <div class="container px-6 mx-auto grid"> | 1045 | <div class="container px-6 mx-auto grid"> |
1026 | <h2 | 1046 | <h2 |
1027 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" | 1047 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" |
1028 | > | 1048 | > |
1029 | {{$title}} | 1049 | {{$title}} |
1030 | </h2> | 1050 | </h2> |
1031 | <!-- CTA --> | 1051 | <!-- CTA --> |
1032 | <a | 1052 | <a |
1033 | 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" | 1053 | 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" |
1034 | href="{{ route('admin.admin-users') }}" | 1054 | href="{{ route('admin.admin-users') }}" |
1035 | > | 1055 | > |
1036 | <div class="flex items-center"> | 1056 | <div class="flex items-center"> |
1037 | <svg | 1057 | <svg |
1038 | class="w-5 h-5 mr-2" | 1058 | class="w-5 h-5 mr-2" |
1039 | fill="currentColor" | 1059 | fill="currentColor" |
1040 | viewBox="0 0 20 20" | 1060 | viewBox="0 0 20 20" |
1041 | > | 1061 | > |
1042 | <path | 1062 | <path |
1043 | 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" | 1063 | 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" |
1044 | ></path> | 1064 | ></path> |
1045 | </svg> | 1065 | </svg> |
1046 | <span>Контент для админов</span> | 1066 | <span>Контент для админов</span> |
1047 | </div> | 1067 | </div> |
1048 | <span>Список админов →</span> | 1068 | <span>Список админов →</span> |
1049 | </a> | 1069 | </a> |
1050 | 1070 | ||
1051 | @if ($message = Session::get('success')) | 1071 | @if ($message = Session::get('success')) |
1052 | <section> | 1072 | <section> |
1053 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 1073 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
1054 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1074 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
1055 | <span aria-hidden="true">×</span> | 1075 | <span aria-hidden="true">×</span> |
1056 | </button> | 1076 | </button> |
1057 | {{ $message }} | 1077 | {{ $message }} |
1058 | </div> | 1078 | </div> |
1059 | </section> | 1079 | </section> |
1060 | @endif | 1080 | @endif |
1061 | 1081 | ||
1062 | @if ($errors->any()) | 1082 | @if ($errors->any()) |
1063 | <section> | 1083 | <section> |
1064 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 1084 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
1065 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1085 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
1066 | <span aria-hidden="true">×</span> | 1086 | <span aria-hidden="true">×</span> |
1067 | </button> | 1087 | </button> |
1068 | <ul class="mb-0"> | 1088 | <ul class="mb-0"> |
1069 | @foreach ($errors->all() as $error) | 1089 | @foreach ($errors->all() as $error) |
1070 | <li>{{ $error }}</li> | 1090 | <li>{{ $error }}</li> |
1071 | @endforeach | 1091 | @endforeach |
1072 | </ul> | 1092 | </ul> |
1073 | </div> | 1093 | </div> |
1074 | </section> | 1094 | </section> |
1075 | @endif | 1095 | @endif |
1076 | 1096 | ||
1077 | @yield('content') | 1097 | @yield('content') |
1078 | 1098 | ||
1079 | <!-- Cards | 1099 | <!-- Cards |
1080 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 1100 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
1081 | 1101 | ||
1082 | <div | 1102 | <div |
1083 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1103 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1084 | > | 1104 | > |
1085 | <div | 1105 | <div |
1086 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" | 1106 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" |
1087 | > | 1107 | > |
1088 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1108 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1089 | <path | 1109 | <path |
1090 | 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" | 1110 | 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" |
1091 | ></path> | 1111 | ></path> |
1092 | </svg> | 1112 | </svg> |
1093 | </div> | 1113 | </div> |
1094 | <div> | 1114 | <div> |
1095 | <p | 1115 | <p |
1096 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1116 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1097 | > | 1117 | > |
1098 | Total clients | 1118 | Total clients |
1099 | </p> | 1119 | </p> |
1100 | <p | 1120 | <p |
1101 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1121 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1102 | > | 1122 | > |
1103 | 6389 | 1123 | 6389 |
1104 | </p> | 1124 | </p> |
1105 | </div> | 1125 | </div> |
1106 | </div> | 1126 | </div> |
1107 | 1127 | ||
1108 | <div | 1128 | <div |
1109 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1129 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1110 | > | 1130 | > |
1111 | <div | 1131 | <div |
1112 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" | 1132 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" |
1113 | > | 1133 | > |
1114 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1134 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1115 | <path | 1135 | <path |
1116 | fill-rule="evenodd" | 1136 | fill-rule="evenodd" |
1117 | 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" | 1137 | 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" |
1118 | clip-rule="evenodd" | 1138 | clip-rule="evenodd" |
1119 | ></path> | 1139 | ></path> |
1120 | </svg> | 1140 | </svg> |
1121 | </div> | 1141 | </div> |
1122 | <div> | 1142 | <div> |
1123 | <p | 1143 | <p |
1124 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1144 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1125 | > | 1145 | > |
1126 | Account balance | 1146 | Account balance |
1127 | </p> | 1147 | </p> |
1128 | <p | 1148 | <p |
1129 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1149 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1130 | > | 1150 | > |
1131 | $ 46,760.89 | 1151 | $ 46,760.89 |
1132 | </p> | 1152 | </p> |
1133 | </div> | 1153 | </div> |
1134 | </div> | 1154 | </div> |
1135 | 1155 | ||
1136 | <div | 1156 | <div |
1137 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1157 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1138 | > | 1158 | > |
1139 | <div | 1159 | <div |
1140 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" | 1160 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" |
1141 | > | 1161 | > |
1142 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1162 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1143 | <path | 1163 | <path |
1144 | 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" | 1164 | 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" |
1145 | ></path> | 1165 | ></path> |
1146 | </svg> | 1166 | </svg> |
1147 | </div> | 1167 | </div> |
1148 | <div> | 1168 | <div> |
1149 | <p | 1169 | <p |
1150 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1170 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1151 | > | 1171 | > |
1152 | New sales | 1172 | New sales |
1153 | </p> | 1173 | </p> |
1154 | <p | 1174 | <p |
1155 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1175 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1156 | > | 1176 | > |
1157 | 376 | 1177 | 376 |
1158 | </p> | 1178 | </p> |
1159 | </div> | 1179 | </div> |
1160 | </div> | 1180 | </div> |
1161 | 1181 | ||
1162 | <div | 1182 | <div |
1163 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1183 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1164 | > | 1184 | > |
1165 | <div | 1185 | <div |
1166 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" | 1186 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" |
1167 | > | 1187 | > |
1168 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1188 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1169 | <path | 1189 | <path |
1170 | fill-rule="evenodd" | 1190 | fill-rule="evenodd" |
1171 | 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" | 1191 | 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" |
1172 | clip-rule="evenodd" | 1192 | clip-rule="evenodd" |
1173 | ></path> | 1193 | ></path> |
1174 | </svg> | 1194 | </svg> |
1175 | </div> | 1195 | </div> |
1176 | <div> | 1196 | <div> |
1177 | <p | 1197 | <p |
1178 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1198 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1179 | > | 1199 | > |
1180 | Pending contacts | 1200 | Pending contacts |
1181 | </p> | 1201 | </p> |
1182 | <p | 1202 | <p |
1183 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1203 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1184 | > | 1204 | > |
1185 | 35 | 1205 | 35 |
1186 | </p> | 1206 | </p> |
1187 | </div> | 1207 | </div> |
1188 | </div> | 1208 | </div> |
1189 | </div> | 1209 | </div> |
1190 | --> | 1210 | --> |
1191 | <!-- New Table | 1211 | <!-- New Table |
1192 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 1212 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> |
1193 | <div class="w-full overflow-x-auto"> | 1213 | <div class="w-full overflow-x-auto"> |
1194 | <table class="w-full whitespace-no-wrap"> | 1214 | <table class="w-full whitespace-no-wrap"> |
1195 | <thead> | 1215 | <thead> |
1196 | <tr | 1216 | <tr |
1197 | 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" | 1217 | 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" |
1198 | > | 1218 | > |
1199 | <th class="px-4 py-3">Client</th> | 1219 | <th class="px-4 py-3">Client</th> |
1200 | <th class="px-4 py-3">Amount</th> | 1220 | <th class="px-4 py-3">Amount</th> |
1201 | <th class="px-4 py-3">Status</th> | 1221 | <th class="px-4 py-3">Status</th> |
1202 | <th class="px-4 py-3">Date</th> | 1222 | <th class="px-4 py-3">Date</th> |
1203 | </tr> | 1223 | </tr> |
1204 | </thead> | 1224 | </thead> |
1205 | <tbody | 1225 | <tbody |
1206 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" | 1226 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" |
1207 | > | 1227 | > |
1208 | <tr class="text-gray-700 dark:text-gray-400"> | 1228 | <tr class="text-gray-700 dark:text-gray-400"> |
1209 | <td class="px-4 py-3"> | 1229 | <td class="px-4 py-3"> |
1210 | <div class="flex items-center text-sm"> | 1230 | <div class="flex items-center text-sm"> |
1211 | 1231 | ||
1212 | <div | 1232 | <div |
1213 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1233 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1214 | > | 1234 | > |
1215 | <img | 1235 | <img |
1216 | class="object-cover w-full h-full rounded-full" | 1236 | class="object-cover w-full h-full rounded-full" |
1217 | 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" | 1237 | 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" |
1218 | alt="" | 1238 | alt="" |
1219 | loading="lazy" | 1239 | loading="lazy" |
1220 | /> | 1240 | /> |
1221 | <div | 1241 | <div |
1222 | class="absolute inset-0 rounded-full shadow-inner" | 1242 | class="absolute inset-0 rounded-full shadow-inner" |
1223 | aria-hidden="true" | 1243 | aria-hidden="true" |
1224 | ></div> | 1244 | ></div> |
1225 | </div> | 1245 | </div> |
1226 | <div> | 1246 | <div> |
1227 | <p class="font-semibold">Hans Burger</p> | 1247 | <p class="font-semibold">Hans Burger</p> |
1228 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1248 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1229 | 10x Developer | 1249 | 10x Developer |
1230 | </p> | 1250 | </p> |
1231 | </div> | 1251 | </div> |
1232 | </div> | 1252 | </div> |
1233 | </td> | 1253 | </td> |
1234 | <td class="px-4 py-3 text-sm"> | 1254 | <td class="px-4 py-3 text-sm"> |
1235 | $ 863.45 | 1255 | $ 863.45 |
1236 | </td> | 1256 | </td> |
1237 | <td class="px-4 py-3 text-xs"> | 1257 | <td class="px-4 py-3 text-xs"> |
1238 | <span | 1258 | <span |
1239 | 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" | 1259 | 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" |
1240 | > | 1260 | > |
1241 | Approved | 1261 | Approved |
1242 | </span> | 1262 | </span> |
1243 | </td> | 1263 | </td> |
1244 | <td class="px-4 py-3 text-sm"> | 1264 | <td class="px-4 py-3 text-sm"> |
1245 | 6/10/2020 | 1265 | 6/10/2020 |
1246 | </td> | 1266 | </td> |
1247 | </tr> | 1267 | </tr> |
1248 | 1268 | ||
1249 | <tr class="text-gray-700 dark:text-gray-400"> | 1269 | <tr class="text-gray-700 dark:text-gray-400"> |
1250 | <td class="px-4 py-3"> | 1270 | <td class="px-4 py-3"> |
1251 | <div class="flex items-center text-sm"> | 1271 | <div class="flex items-center text-sm"> |
1252 | 1272 | ||
1253 | <div | 1273 | <div |
1254 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1274 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1255 | > | 1275 | > |
1256 | <img | 1276 | <img |
1257 | class="object-cover w-full h-full rounded-full" | 1277 | class="object-cover w-full h-full rounded-full" |
1258 | 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" | 1278 | 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" |
1259 | alt="" | 1279 | alt="" |
1260 | loading="lazy" | 1280 | loading="lazy" |
1261 | /> | 1281 | /> |
1262 | <div | 1282 | <div |
1263 | class="absolute inset-0 rounded-full shadow-inner" | 1283 | class="absolute inset-0 rounded-full shadow-inner" |
1264 | aria-hidden="true" | 1284 | aria-hidden="true" |
1265 | ></div> | 1285 | ></div> |
1266 | </div> | 1286 | </div> |
1267 | <div> | 1287 | <div> |
1268 | <p class="font-semibold">Jolina Angelie</p> | 1288 | <p class="font-semibold">Jolina Angelie</p> |
1269 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1289 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1270 | Unemployed | 1290 | Unemployed |
1271 | </p> | 1291 | </p> |
1272 | </div> | 1292 | </div> |
1273 | </div> | 1293 | </div> |
1274 | </td> | 1294 | </td> |
1275 | <td class="px-4 py-3 text-sm"> | 1295 | <td class="px-4 py-3 text-sm"> |
1276 | $ 369.95 | 1296 | $ 369.95 |
1277 | </td> | 1297 | </td> |
1278 | <td class="px-4 py-3 text-xs"> | 1298 | <td class="px-4 py-3 text-xs"> |
1279 | <span | 1299 | <span |
1280 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" | 1300 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" |
1281 | > | 1301 | > |
1282 | Pending | 1302 | Pending |
1283 | </span> | 1303 | </span> |
1284 | </td> | 1304 | </td> |
1285 | <td class="px-4 py-3 text-sm"> | 1305 | <td class="px-4 py-3 text-sm"> |
1286 | 6/10/2020 | 1306 | 6/10/2020 |
1287 | </td> | 1307 | </td> |
1288 | </tr> | 1308 | </tr> |
1289 | 1309 | ||
1290 | <tr class="text-gray-700 dark:text-gray-400"> | 1310 | <tr class="text-gray-700 dark:text-gray-400"> |
1291 | <td class="px-4 py-3"> | 1311 | <td class="px-4 py-3"> |
1292 | <div class="flex items-center text-sm"> | 1312 | <div class="flex items-center text-sm"> |
1293 | 1313 | ||
1294 | <div | 1314 | <div |
1295 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1315 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1296 | > | 1316 | > |
1297 | <img | 1317 | <img |
1298 | class="object-cover w-full h-full rounded-full" | 1318 | class="object-cover w-full h-full rounded-full" |
1299 | 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" | 1319 | 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" |
1300 | alt="" | 1320 | alt="" |
1301 | loading="lazy" | 1321 | loading="lazy" |
1302 | /> | 1322 | /> |
1303 | <div | 1323 | <div |
1304 | class="absolute inset-0 rounded-full shadow-inner" | 1324 | class="absolute inset-0 rounded-full shadow-inner" |
1305 | aria-hidden="true" | 1325 | aria-hidden="true" |
1306 | ></div> | 1326 | ></div> |
1307 | </div> | 1327 | </div> |
1308 | <div> | 1328 | <div> |
1309 | <p class="font-semibold">Sarah Curry</p> | 1329 | <p class="font-semibold">Sarah Curry</p> |
1310 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1330 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1311 | Designer | 1331 | Designer |
1312 | </p> | 1332 | </p> |
1313 | </div> | 1333 | </div> |
1314 | </div> | 1334 | </div> |
1315 | </td> | 1335 | </td> |
1316 | <td class="px-4 py-3 text-sm"> | 1336 | <td class="px-4 py-3 text-sm"> |
1317 | $ 86.00 | 1337 | $ 86.00 |
1318 | </td> | 1338 | </td> |
1319 | <td class="px-4 py-3 text-xs"> | 1339 | <td class="px-4 py-3 text-xs"> |
1320 | <span | 1340 | <span |
1321 | 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" | 1341 | 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" |
1322 | > | 1342 | > |
1323 | Denied | 1343 | Denied |
1324 | </span> | 1344 | </span> |
1325 | </td> | 1345 | </td> |
1326 | <td class="px-4 py-3 text-sm"> | 1346 | <td class="px-4 py-3 text-sm"> |
1327 | 6/10/2020 | 1347 | 6/10/2020 |
1328 | </td> | 1348 | </td> |
1329 | </tr> | 1349 | </tr> |
1330 | 1350 | ||
1331 | <tr class="text-gray-700 dark:text-gray-400"> | 1351 | <tr class="text-gray-700 dark:text-gray-400"> |
1332 | <td class="px-4 py-3"> | 1352 | <td class="px-4 py-3"> |
1333 | <div class="flex items-center text-sm"> | 1353 | <div class="flex items-center text-sm"> |
1334 | 1354 | ||
1335 | <div | 1355 | <div |
1336 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1356 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1337 | > | 1357 | > |
1338 | <img | 1358 | <img |
1339 | class="object-cover w-full h-full rounded-full" | 1359 | class="object-cover w-full h-full rounded-full" |
1340 | 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" | 1360 | 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" |
1341 | alt="" | 1361 | alt="" |
1342 | loading="lazy" | 1362 | loading="lazy" |
1343 | /> | 1363 | /> |
1344 | <div | 1364 | <div |
1345 | class="absolute inset-0 rounded-full shadow-inner" | 1365 | class="absolute inset-0 rounded-full shadow-inner" |
1346 | aria-hidden="true" | 1366 | aria-hidden="true" |
1347 | ></div> | 1367 | ></div> |
1348 | </div> | 1368 | </div> |
1349 | <div> | 1369 | <div> |
1350 | <p class="font-semibold">Rulia Joberts</p> | 1370 | <p class="font-semibold">Rulia Joberts</p> |
1351 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1371 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1352 | Actress | 1372 | Actress |
1353 | </p> | 1373 | </p> |
1354 | </div> | 1374 | </div> |
1355 | </div> | 1375 | </div> |
1356 | </td> | 1376 | </td> |
1357 | <td class="px-4 py-3 text-sm"> | 1377 | <td class="px-4 py-3 text-sm"> |
1358 | $ 1276.45 | 1378 | $ 1276.45 |
1359 | </td> | 1379 | </td> |
1360 | <td class="px-4 py-3 text-xs"> | 1380 | <td class="px-4 py-3 text-xs"> |
1361 | <span | 1381 | <span |
1362 | 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" | 1382 | 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" |
1363 | > | 1383 | > |
1364 | Approved | 1384 | Approved |
1365 | </span> | 1385 | </span> |
1366 | </td> | 1386 | </td> |
1367 | <td class="px-4 py-3 text-sm"> | 1387 | <td class="px-4 py-3 text-sm"> |
1368 | 6/10/2020 | 1388 | 6/10/2020 |
1369 | </td> | 1389 | </td> |
1370 | </tr> | 1390 | </tr> |
1371 | 1391 | ||
1372 | <tr class="text-gray-700 dark:text-gray-400"> | 1392 | <tr class="text-gray-700 dark:text-gray-400"> |
1373 | <td class="px-4 py-3"> | 1393 | <td class="px-4 py-3"> |
1374 | <div class="flex items-center text-sm"> | 1394 | <div class="flex items-center text-sm"> |
1375 | 1395 | ||
1376 | <div | 1396 | <div |
1377 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1397 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1378 | > | 1398 | > |
1379 | <img | 1399 | <img |
1380 | class="object-cover w-full h-full rounded-full" | 1400 | class="object-cover w-full h-full rounded-full" |
1381 | 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" | 1401 | 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" |
1382 | alt="" | 1402 | alt="" |
1383 | loading="lazy" | 1403 | loading="lazy" |
1384 | /> | 1404 | /> |
1385 | <div | 1405 | <div |
1386 | class="absolute inset-0 rounded-full shadow-inner" | 1406 | class="absolute inset-0 rounded-full shadow-inner" |
1387 | aria-hidden="true" | 1407 | aria-hidden="true" |
1388 | ></div> | 1408 | ></div> |
1389 | </div> | 1409 | </div> |
1390 | <div> | 1410 | <div> |
1391 | <p class="font-semibold">Wenzel Dashington</p> | 1411 | <p class="font-semibold">Wenzel Dashington</p> |
1392 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1412 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1393 | Actor | 1413 | Actor |
1394 | </p> | 1414 | </p> |
1395 | </div> | 1415 | </div> |
1396 | </div> | 1416 | </div> |
1397 | </td> | 1417 | </td> |
1398 | <td class="px-4 py-3 text-sm"> | 1418 | <td class="px-4 py-3 text-sm"> |
1399 | $ 863.45 | 1419 | $ 863.45 |
1400 | </td> | 1420 | </td> |
1401 | <td class="px-4 py-3 text-xs"> | 1421 | <td class="px-4 py-3 text-xs"> |
1402 | <span | 1422 | <span |
1403 | 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" | 1423 | 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" |
1404 | > | 1424 | > |
1405 | Expired | 1425 | Expired |
1406 | </span> | 1426 | </span> |
1407 | </td> | 1427 | </td> |
1408 | <td class="px-4 py-3 text-sm"> | 1428 | <td class="px-4 py-3 text-sm"> |
1409 | 6/10/2020 | 1429 | 6/10/2020 |
1410 | </td> | 1430 | </td> |
1411 | </tr> | 1431 | </tr> |
1412 | 1432 | ||
1413 | <tr class="text-gray-700 dark:text-gray-400"> | 1433 | <tr class="text-gray-700 dark:text-gray-400"> |
1414 | <td class="px-4 py-3"> | 1434 | <td class="px-4 py-3"> |
1415 | <div class="flex items-center text-sm"> | 1435 | <div class="flex items-center text-sm"> |
1416 | 1436 | ||
1417 | <div | 1437 | <div |
1418 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1438 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1419 | > | 1439 | > |
1420 | <img | 1440 | <img |
1421 | class="object-cover w-full h-full rounded-full" | 1441 | class="object-cover w-full h-full rounded-full" |
1422 | 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" | 1442 | 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" |
1423 | alt="" | 1443 | alt="" |
1424 | loading="lazy" | 1444 | loading="lazy" |
1425 | /> | 1445 | /> |
1426 | <div | 1446 | <div |
1427 | class="absolute inset-0 rounded-full shadow-inner" | 1447 | class="absolute inset-0 rounded-full shadow-inner" |
1428 | aria-hidden="true" | 1448 | aria-hidden="true" |
1429 | ></div> | 1449 | ></div> |
1430 | </div> | 1450 | </div> |
1431 | <div> | 1451 | <div> |
1432 | <p class="font-semibold">Dave Li</p> | 1452 | <p class="font-semibold">Dave Li</p> |
1433 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1453 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1434 | Influencer | 1454 | Influencer |
1435 | </p> | 1455 | </p> |
1436 | </div> | 1456 | </div> |
1437 | </div> | 1457 | </div> |
1438 | </td> | 1458 | </td> |
1439 | <td class="px-4 py-3 text-sm"> | 1459 | <td class="px-4 py-3 text-sm"> |
1440 | $ 863.45 | 1460 | $ 863.45 |
1441 | </td> | 1461 | </td> |
1442 | <td class="px-4 py-3 text-xs"> | 1462 | <td class="px-4 py-3 text-xs"> |
1443 | <span | 1463 | <span |
1444 | 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" | 1464 | 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" |
1445 | > | 1465 | > |
1446 | Approved | 1466 | Approved |
1447 | </span> | 1467 | </span> |
1448 | </td> | 1468 | </td> |
1449 | <td class="px-4 py-3 text-sm"> | 1469 | <td class="px-4 py-3 text-sm"> |
1450 | 6/10/2020 | 1470 | 6/10/2020 |
1451 | </td> | 1471 | </td> |
1452 | </tr> | 1472 | </tr> |
1453 | 1473 | ||
1454 | <tr class="text-gray-700 dark:text-gray-400"> | 1474 | <tr class="text-gray-700 dark:text-gray-400"> |
1455 | <td class="px-4 py-3"> | 1475 | <td class="px-4 py-3"> |
1456 | <div class="flex items-center text-sm"> | 1476 | <div class="flex items-center text-sm"> |
1457 | 1477 | ||
1458 | <div | 1478 | <div |
1459 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1479 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1460 | > | 1480 | > |
1461 | <img | 1481 | <img |
1462 | class="object-cover w-full h-full rounded-full" | 1482 | class="object-cover w-full h-full rounded-full" |
1463 | 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" | 1483 | 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" |
1464 | alt="" | 1484 | alt="" |
1465 | loading="lazy" | 1485 | loading="lazy" |
1466 | /> | 1486 | /> |
1467 | <div | 1487 | <div |
1468 | class="absolute inset-0 rounded-full shadow-inner" | 1488 | class="absolute inset-0 rounded-full shadow-inner" |
1469 | aria-hidden="true" | 1489 | aria-hidden="true" |
1470 | ></div> | 1490 | ></div> |
1471 | </div> | 1491 | </div> |
1472 | <div> | 1492 | <div> |
1473 | <p class="font-semibold">Maria Ramovic</p> | 1493 | <p class="font-semibold">Maria Ramovic</p> |
1474 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1494 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1475 | Runner | 1495 | Runner |
1476 | </p> | 1496 | </p> |
1477 | </div> | 1497 | </div> |
1478 | </div> | 1498 | </div> |
1479 | </td> | 1499 | </td> |
1480 | <td class="px-4 py-3 text-sm"> | 1500 | <td class="px-4 py-3 text-sm"> |
1481 | $ 863.45 | 1501 | $ 863.45 |
1482 | </td> | 1502 | </td> |
1483 | <td class="px-4 py-3 text-xs"> | 1503 | <td class="px-4 py-3 text-xs"> |
1484 | <span | 1504 | <span |
1485 | 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" | 1505 | 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" |
1486 | > | 1506 | > |
1487 | Approved | 1507 | Approved |
1488 | </span> | 1508 | </span> |
1489 | </td> | 1509 | </td> |
1490 | <td class="px-4 py-3 text-sm"> | 1510 | <td class="px-4 py-3 text-sm"> |
1491 | 6/10/2020 | 1511 | 6/10/2020 |
1492 | </td> | 1512 | </td> |
1493 | </tr> | 1513 | </tr> |
1494 | 1514 | ||
1495 | <tr class="text-gray-700 dark:text-gray-400"> | 1515 | <tr class="text-gray-700 dark:text-gray-400"> |
1496 | <td class="px-4 py-3"> | 1516 | <td class="px-4 py-3"> |
1497 | <div class="flex items-center text-sm"> | 1517 | <div class="flex items-center text-sm"> |
1498 | 1518 | ||
1499 | <div | 1519 | <div |
1500 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1520 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1501 | > | 1521 | > |
1502 | <img | 1522 | <img |
1503 | class="object-cover w-full h-full rounded-full" | 1523 | class="object-cover w-full h-full rounded-full" |
1504 | 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" | 1524 | 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" |
1505 | alt="" | 1525 | alt="" |
1506 | loading="lazy" | 1526 | loading="lazy" |
1507 | /> | 1527 | /> |
1508 | <div | 1528 | <div |
1509 | class="absolute inset-0 rounded-full shadow-inner" | 1529 | class="absolute inset-0 rounded-full shadow-inner" |
1510 | aria-hidden="true" | 1530 | aria-hidden="true" |
1511 | ></div> | 1531 | ></div> |
1512 | </div> | 1532 | </div> |
1513 | <div> | 1533 | <div> |
1514 | <p class="font-semibold">Hitney Wouston</p> | 1534 | <p class="font-semibold">Hitney Wouston</p> |
1515 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1535 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1516 | Singer | 1536 | Singer |
1517 | </p> | 1537 | </p> |
1518 | </div> | 1538 | </div> |
1519 | </div> | 1539 | </div> |
1520 | </td> | 1540 | </td> |
1521 | <td class="px-4 py-3 text-sm"> | 1541 | <td class="px-4 py-3 text-sm"> |
1522 | $ 863.45 | 1542 | $ 863.45 |
1523 | </td> | 1543 | </td> |
1524 | <td class="px-4 py-3 text-xs"> | 1544 | <td class="px-4 py-3 text-xs"> |
1525 | <span | 1545 | <span |
1526 | 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" | 1546 | 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" |
1527 | > | 1547 | > |
1528 | Approved | 1548 | Approved |
1529 | </span> | 1549 | </span> |
1530 | </td> | 1550 | </td> |
1531 | <td class="px-4 py-3 text-sm"> | 1551 | <td class="px-4 py-3 text-sm"> |
1532 | 6/10/2020 | 1552 | 6/10/2020 |
1533 | </td> | 1553 | </td> |
1534 | </tr> | 1554 | </tr> |
1535 | 1555 | ||
1536 | <tr class="text-gray-700 dark:text-gray-400"> | 1556 | <tr class="text-gray-700 dark:text-gray-400"> |
1537 | <td class="px-4 py-3"> | 1557 | <td class="px-4 py-3"> |
1538 | <div class="flex items-center text-sm"> | 1558 | <div class="flex items-center text-sm"> |
1539 | 1559 | ||
1540 | <div | 1560 | <div |
1541 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1561 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1542 | > | 1562 | > |
1543 | <img | 1563 | <img |
1544 | class="object-cover w-full h-full rounded-full" | 1564 | class="object-cover w-full h-full rounded-full" |
1545 | 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" | 1565 | 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" |
1546 | alt="" | 1566 | alt="" |
1547 | loading="lazy" | 1567 | loading="lazy" |
1548 | /> | 1568 | /> |
1549 | <div | 1569 | <div |
1550 | class="absolute inset-0 rounded-full shadow-inner" | 1570 | class="absolute inset-0 rounded-full shadow-inner" |
1551 | aria-hidden="true" | 1571 | aria-hidden="true" |
1552 | ></div> | 1572 | ></div> |
1553 | </div> | 1573 | </div> |
1554 | <div> | 1574 | <div> |
1555 | <p class="font-semibold">Hans Burger</p> | 1575 | <p class="font-semibold">Hans Burger</p> |
1556 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1576 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1557 | 10x Developer | 1577 | 10x Developer |
1558 | </p> | 1578 | </p> |
1559 | </div> | 1579 | </div> |
1560 | </div> | 1580 | </div> |
1561 | </td> | 1581 | </td> |
1562 | <td class="px-4 py-3 text-sm"> | 1582 | <td class="px-4 py-3 text-sm"> |
1563 | $ 863.45 | 1583 | $ 863.45 |
1564 | </td> | 1584 | </td> |
1565 | <td class="px-4 py-3 text-xs"> | 1585 | <td class="px-4 py-3 text-xs"> |
1566 | <span | 1586 | <span |
1567 | 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" | 1587 | 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" |
1568 | > | 1588 | > |
1569 | Approved | 1589 | Approved |
1570 | </span> | 1590 | </span> |
1571 | </td> | 1591 | </td> |
1572 | <td class="px-4 py-3 text-sm"> | 1592 | <td class="px-4 py-3 text-sm"> |
1573 | 6/10/2020 | 1593 | 6/10/2020 |
1574 | </td> | 1594 | </td> |
1575 | </tr> | 1595 | </tr> |
1576 | </tbody> | 1596 | </tbody> |
1577 | </table> | 1597 | </table> |
1578 | </div> | 1598 | </div> |
1579 | <div | 1599 | <div |
1580 | 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" | 1600 | 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" |
1581 | > | 1601 | > |
1582 | <span class="flex items-center col-span-3"> | 1602 | <span class="flex items-center col-span-3"> |
1583 | Showing 21-30 of 100 | 1603 | Showing 21-30 of 100 |
1584 | </span> | 1604 | </span> |
1585 | <span class="col-span-2"></span> | 1605 | <span class="col-span-2"></span> |
1586 | 1606 | ||
1587 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 1607 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
1588 | <nav aria-label="Table navigation"> | 1608 | <nav aria-label="Table navigation"> |
1589 | <ul class="inline-flex items-center"> | 1609 | <ul class="inline-flex items-center"> |
1590 | <li> | 1610 | <li> |
1591 | <button | 1611 | <button |
1592 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 1612 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
1593 | aria-label="Previous" | 1613 | aria-label="Previous" |
1594 | > | 1614 | > |
1595 | <svg | 1615 | <svg |
1596 | aria-hidden="true" | 1616 | aria-hidden="true" |
1597 | class="w-4 h-4 fill-current" | 1617 | class="w-4 h-4 fill-current" |
1598 | viewBox="0 0 20 20" | 1618 | viewBox="0 0 20 20" |
1599 | > | 1619 | > |
1600 | <path | 1620 | <path |
1601 | 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" | 1621 | 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" |
1602 | clip-rule="evenodd" | 1622 | clip-rule="evenodd" |
1603 | fill-rule="evenodd" | 1623 | fill-rule="evenodd" |
1604 | ></path> | 1624 | ></path> |
1605 | </svg> | 1625 | </svg> |
1606 | </button> | 1626 | </button> |
1607 | </li> | 1627 | </li> |
1608 | <li> | 1628 | <li> |
1609 | <button | 1629 | <button |
1610 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1630 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1611 | > | 1631 | > |
1612 | 1 | 1632 | 1 |
1613 | </button> | 1633 | </button> |
1614 | </li> | 1634 | </li> |
1615 | <li> | 1635 | <li> |
1616 | <button | 1636 | <button |
1617 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1637 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1618 | > | 1638 | > |
1619 | 2 | 1639 | 2 |
1620 | </button> | 1640 | </button> |
1621 | </li> | 1641 | </li> |
1622 | <li> | 1642 | <li> |
1623 | <button | 1643 | <button |
1624 | 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" | 1644 | 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" |
1625 | > | 1645 | > |
1626 | 3 | 1646 | 3 |
1627 | </button> | 1647 | </button> |
1628 | </li> | 1648 | </li> |
1629 | <li> | 1649 | <li> |
1630 | <button | 1650 | <button |
1631 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1651 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1632 | > | 1652 | > |
1633 | 4 | 1653 | 4 |
1634 | </button> | 1654 | </button> |
1635 | </li> | 1655 | </li> |
1636 | <li> | 1656 | <li> |
1637 | <span class="px-3 py-1">...</span> | 1657 | <span class="px-3 py-1">...</span> |
1638 | </li> | 1658 | </li> |
1639 | <li> | 1659 | <li> |
1640 | <button | 1660 | <button |
1641 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1661 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1642 | > | 1662 | > |
1643 | 8 | 1663 | 8 |
1644 | </button> | 1664 | </button> |
1645 | </li> | 1665 | </li> |
1646 | <li> | 1666 | <li> |
1647 | <button | 1667 | <button |
1648 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1668 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1649 | > | 1669 | > |
1650 | 9 | 1670 | 9 |
1651 | </button> | 1671 | </button> |
1652 | </li> | 1672 | </li> |
1653 | <li> | 1673 | <li> |
1654 | <button | 1674 | <button |
1655 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 1675 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
1656 | aria-label="Next" | 1676 | aria-label="Next" |
1657 | > | 1677 | > |
1658 | <svg | 1678 | <svg |
1659 | class="w-4 h-4 fill-current" | 1679 | class="w-4 h-4 fill-current" |
1660 | aria-hidden="true" | 1680 | aria-hidden="true" |
1661 | viewBox="0 0 20 20" | 1681 | viewBox="0 0 20 20" |
1662 | > | 1682 | > |
1663 | <path | 1683 | <path |
1664 | 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" | 1684 | 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" |
1665 | clip-rule="evenodd" | 1685 | clip-rule="evenodd" |
1666 | fill-rule="evenodd" | 1686 | fill-rule="evenodd" |
1667 | ></path> | 1687 | ></path> |
1668 | </svg> | 1688 | </svg> |
1669 | </button> | 1689 | </button> |
1670 | </li> | 1690 | </li> |
1671 | </ul> | 1691 | </ul> |
1672 | </nav> | 1692 | </nav> |
1673 | </span> | 1693 | </span> |
1674 | </div> | 1694 | </div> |
1675 | </div> | 1695 | </div> |
1676 | --> | 1696 | --> |
1677 | <!-- Charts --> | 1697 | <!-- Charts --> |
1678 | <!-- | 1698 | <!-- |
1679 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> | 1699 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> |
1680 | Графики | 1700 | Графики |
1681 | </h2> | 1701 | </h2> |
1682 | <div class="grid gap-6 mb-8 md:grid-cols-2"> | 1702 | <div class="grid gap-6 mb-8 md:grid-cols-2"> |
1683 | <div | 1703 | <div |
1684 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1704 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1685 | > | 1705 | > |
1686 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1706 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1687 | Revenue | 1707 | Revenue |
1688 | </h4> | 1708 | </h4> |
1689 | <canvas id="pie"></canvas> | 1709 | <canvas id="pie"></canvas> |
1690 | <div | 1710 | <div |
1691 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1711 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1692 | > | 1712 | > |
1693 | 1713 | ||
1694 | <div class="flex items-center"> | 1714 | <div class="flex items-center"> |
1695 | <span | 1715 | <span |
1696 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" | 1716 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" |
1697 | ></span> | 1717 | ></span> |
1698 | <span>Shirts</span> | 1718 | <span>Shirts</span> |
1699 | </div> | 1719 | </div> |
1700 | <div class="flex items-center"> | 1720 | <div class="flex items-center"> |
1701 | <span | 1721 | <span |
1702 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1722 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1703 | ></span> | 1723 | ></span> |
1704 | <span>Shoes</span> | 1724 | <span>Shoes</span> |
1705 | </div> | 1725 | </div> |
1706 | <div class="flex items-center"> | 1726 | <div class="flex items-center"> |
1707 | <span | 1727 | <span |
1708 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1728 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1709 | ></span> | 1729 | ></span> |
1710 | <span>Bags</span> | 1730 | <span>Bags</span> |
1711 | </div> | 1731 | </div> |
1712 | </div> | 1732 | </div> |
1713 | </div> | 1733 | </div> |
1714 | <div | 1734 | <div |
1715 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1735 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1716 | > | 1736 | > |
1717 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1737 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1718 | Traffic | 1738 | Traffic |
1719 | </h4> | 1739 | </h4> |
1720 | <canvas id="line"></canvas> | 1740 | <canvas id="line"></canvas> |
1721 | <div | 1741 | <div |
1722 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1742 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1723 | > | 1743 | > |
1724 | 1744 | ||
1725 | <div class="flex items-center"> | 1745 | <div class="flex items-center"> |
1726 | <span | 1746 | <span |
1727 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1747 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1728 | ></span> | 1748 | ></span> |
1729 | <span>Organic</span> | 1749 | <span>Organic</span> |
1730 | </div> | 1750 | </div> |
1731 | <div class="flex items-center"> | 1751 | <div class="flex items-center"> |
1732 | <span | 1752 | <span |
1733 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1753 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1734 | ></span> | 1754 | ></span> |
1735 | <span>Paid</span> | 1755 | <span>Paid</span> |
1736 | </div> | 1756 | </div> |
1737 | </div> | 1757 | </div> |
1738 | </div> | 1758 | </div> |
1739 | </div> | 1759 | </div> |
1740 | --> | 1760 | --> |
1741 | </div> | 1761 | </div> |
1742 | </main> | 1762 | </main> |
1743 | </div> | 1763 | </div> |
1744 | </div> | 1764 | </div> |
1745 | </body> | 1765 | </body> |
1746 | @yield('script') | 1766 | @yield('script') |
1747 | </html> | 1767 | </html> |
1748 | 1768 |
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; | ||
6 | use App\Http\Controllers\Admin\EducationController; | ||
5 | use App\Http\Controllers\Admin\EmployersController; | 7 | use App\Http\Controllers\Admin\EmployersController; |
6 | use App\Http\Controllers\Admin\InfoBloksController; | 8 | use App\Http\Controllers\Admin\InfoBloksController; |
7 | use App\Http\Controllers\Admin\JobTitlesController; | 9 | use App\Http\Controllers\Admin\JobTitlesController; |
8 | use App\Http\Controllers\Admin\UsersController; | 10 | use App\Http\Controllers\Admin\UsersController; |
9 | use App\Http\Controllers\Admin\WorkersController; | 11 | use App\Http\Controllers\Admin\WorkersController; |
10 | use App\Http\Controllers\Auth\ForgotPasswordController; | 12 | use App\Http\Controllers\Auth\ForgotPasswordController; |
11 | use App\Http\Controllers\Auth\LoginController; | 13 | use App\Http\Controllers\Auth\LoginController; |
12 | use App\Http\Controllers\Auth\RegisterController; | 14 | use App\Http\Controllers\Auth\RegisterController; |
13 | use App\Http\Controllers\CKEditorController; | 15 | use App\Http\Controllers\CKEditorController; |
14 | use App\Models\User; | 16 | use App\Models\User; |
15 | use App\Http\Controllers\MainController; | 17 | use App\Http\Controllers\MainController; |
16 | use App\Http\Controllers\HomeController; | 18 | use App\Http\Controllers\HomeController; |
17 | use Illuminate\Support\Facades\Route; | 19 | use Illuminate\Support\Facades\Route; |
18 | use App\Http\Controllers\Admin\CompanyController; | 20 | use App\Http\Controllers\Admin\CompanyController; |
19 | use App\Http\Controllers\Admin\Ad_EmployersController; | 21 | use App\Http\Controllers\Admin\Ad_EmployersController; |
20 | use App\Http\Controllers\Admin\MsgAnswersController; | 22 | use App\Http\Controllers\Admin\MsgAnswersController; |
21 | use App\Http\Controllers\Admin\GroupsController; | 23 | use App\Http\Controllers\Admin\GroupsController; |
22 | use App\Http\Controllers\PagesController; | 24 | use App\Http\Controllers\PagesController; |
23 | use Illuminate\Support\Facades\Storage; | 25 | use Illuminate\Support\Facades\Storage; |
24 | 26 | ||
25 | 27 | ||
26 | /* | 28 | /* |
27 | |-------------------------------------------------------------------------- | 29 | |-------------------------------------------------------------------------- |
28 | | Web Routes | 30 | | Web Routes |
29 | |-------------------------------------------------------------------------- | 31 | |-------------------------------------------------------------------------- |
30 | | | 32 | | |
31 | | 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 |
32 | | routes are loaded by the RouteServiceProvider within a group which | 34 | | routes are loaded by the RouteServiceProvider within a group which |
33 | | contains the "web" middleware group. Now create something great! | 35 | | contains the "web" middleware group. Now create something great! |
34 | | | 36 | | |
35 | */ | 37 | */ |
36 | /* | 38 | /* |
37 | Route::get('/', function () { | 39 | Route::get('/', function () { |
38 | return view('welcome'); | 40 | return view('welcome'); |
39 | })->name('index'); | 41 | })->name('index'); |
40 | */ | 42 | */ |
41 | Route::get('/', [MainController::class, 'index'])->name('index'); | 43 | Route::get('/', [MainController::class, 'index'])->name('index'); |
42 | 44 | ||
43 | //Роуты авторизации, регистрации, восстановления, аутентификации | 45 | //Роуты авторизации, регистрации, восстановления, аутентификации |
44 | Auth::routes(['verify' => true]); | 46 | Auth::routes(['verify' => true]); |
45 | 47 | ||
46 | // роуты регистрации, авторизации, восстановления пароля, верификации почты | 48 | // роуты регистрации, авторизации, восстановления пароля, верификации почты |
47 | /*Route::group([ | 49 | /*Route::group([ |
48 | 'as' => 'auth.', //имя маршрута, например auth.index | 50 | 'as' => 'auth.', //имя маршрута, например auth.index |
49 | 'prefix' => 'auth', // префикс маршрута, например, auth/index | 51 | 'prefix' => 'auth', // префикс маршрута, например, auth/index |
50 | ], function () { | 52 | ], function () { |
51 | //форма регистрации | 53 | //форма регистрации |
52 | Route::get('register', [RegisterController::class, 'register'])->name('register'); | 54 | Route::get('register', [RegisterController::class, 'register'])->name('register'); |
53 | 55 | ||
54 | //создание пользователя | 56 | //создание пользователя |
55 | Route::post('register', [RegisterController::class, 'create'])->name('create'); | 57 | Route::post('register', [RegisterController::class, 'create'])->name('create'); |
56 | 58 | ||
57 | //форма входа авторизации | 59 | //форма входа авторизации |
58 | Route::get('login', [LoginController::class, 'login'])->name('login'); | 60 | Route::get('login', [LoginController::class, 'login'])->name('login'); |
59 | 61 | ||
60 | //аутентификация | 62 | //аутентификация |
61 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); | 63 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); |
62 | 64 | ||
63 | //выход | 65 | //выход |
64 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); | 66 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); |
65 | 67 | ||
66 | //форма ввода адреса почты | 68 | //форма ввода адреса почты |
67 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); | 69 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); |
68 | 70 | ||
69 | //письмо на почту | 71 | //письмо на почту |
70 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); | 72 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); |
71 | 73 | ||
72 | //форма восстановления пароля | 74 | //форма восстановления пароля |
73 | Route::get('reset-password/token/{token}/email/{email}', | 75 | Route::get('reset-password/token/{token}/email/{email}', |
74 | [ResetPasswordController::class, 'form'] | 76 | [ResetPasswordController::class, 'form'] |
75 | )->name('reset-form'); | 77 | )->name('reset-form'); |
76 | 78 | ||
77 | //восстановление пароля | 79 | //восстановление пароля |
78 | Route::post('reset-password', | 80 | Route::post('reset-password', |
79 | [ResetPasswordController::class, 'reset'] | 81 | [ResetPasswordController::class, 'reset'] |
80 | )->name('reset-password'); | 82 | )->name('reset-password'); |
81 | 83 | ||
82 | //сообщение о необходимости проверки адреса почты | 84 | //сообщение о необходимости проверки адреса почты |
83 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); | 85 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); |
84 | 86 | ||
85 | //подтверждение адреса почты нового пользователя | 87 | //подтверждение адреса почты нового пользователя |
86 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) | 88 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) |
87 | ->where('token', '[a-f0-9]{32}') | 89 | ->where('token', '[a-f0-9]{32}') |
88 | ->where('id', '[0-9]+') | 90 | ->where('id', '[0-9]+') |
89 | ->name('verify-email'); | 91 | ->name('verify-email'); |
90 | });*/ | 92 | });*/ |
91 | 93 | ||
92 | //Личный кабинет пользователя | 94 | //Личный кабинет пользователя |
93 | Route::get('/home', [HomeController::class, 'index'])->name('home'); | 95 | Route::get('/home', [HomeController::class, 'index'])->name('home'); |
94 | 96 | ||
95 | /* | 97 | /* |
96 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { | 98 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { |
97 | $user = User::where('email',$request->input('email'))->first(); | 99 | $user = User::where('email',$request->input('email'))->first(); |
98 | 100 | ||
99 | $user->sendEmailVerificationNotification(); | 101 | $user->sendEmailVerificationNotification(); |
100 | 102 | ||
101 | return 'your response'; | 103 | return 'your response'; |
102 | })->middleware('throttle:6,1')->name('verification.resend'); | 104 | })->middleware('throttle:6,1')->name('verification.resend'); |
103 | */ | 105 | */ |
104 | 106 | ||
105 | // Авторизация, регистрация в админку | 107 | // Авторизация, регистрация в админку |
106 | Route::group([ | 108 | Route::group([ |
107 | 'as' => 'admin.', // имя маршрута, например auth.index | 109 | 'as' => 'admin.', // имя маршрута, например auth.index |
108 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 110 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
109 | 'middleware' => ['guest'], | 111 | 'middleware' => ['guest'], |
110 | ], function () { | 112 | ], function () { |
111 | // Форма регистрации | 113 | // Форма регистрации |
112 | Route::get('register', [AdminController::class, 'register'])->name('register'); | 114 | Route::get('register', [AdminController::class, 'register'])->name('register'); |
113 | 115 | ||
114 | // Создание пользователя | 116 | // Создание пользователя |
115 | Route::post('register', [AdminController::class, 'create'])->name('create'); | 117 | Route::post('register', [AdminController::class, 'create'])->name('create'); |
116 | //Форма входа | 118 | //Форма входа |
117 | Route::get('login', [AdminController::class, 'login'])->name('login'); | 119 | Route::get('login', [AdminController::class, 'login'])->name('login'); |
118 | 120 | ||
119 | // аутентификация | 121 | // аутентификация |
120 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); | 122 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); |
121 | 123 | ||
122 | }); | 124 | }); |
123 | 125 | ||
124 | // Личный кабинет админки | 126 | // Личный кабинет админки |
125 | Route::group([ | 127 | Route::group([ |
126 | 'as' => 'admin.', // имя маршрута, например auth.index | 128 | 'as' => 'admin.', // имя маршрута, например auth.index |
127 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 129 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
128 | 'middleware' => ['auth'], ['admin'], | 130 | 'middleware' => ['auth'], ['admin'], |
129 | ], function() { | 131 | ], function() { |
130 | 132 | ||
131 | // выход | 133 | // выход |
132 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); | 134 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); |
133 | 135 | ||
134 | // кабинет главная страница | 136 | // кабинет главная страница |
135 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); | 137 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); |
136 | 138 | ||
137 | // кабинет профиль админа - форма | 139 | // кабинет профиль админа - форма |
138 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); | 140 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); |
139 | // кабинет профиль админа - сохранение формы | 141 | // кабинет профиль админа - сохранение формы |
140 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); | 142 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); |
141 | 143 | ||
142 | //кабинет сообщения админа | 144 | //кабинет сообщения админа |
143 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); | 145 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); |
144 | 146 | ||
145 | 147 | ||
146 | // кабинет профиль - форма пароли | 148 | // кабинет профиль - форма пароли |
147 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); | 149 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); |
148 | // кабинет профиль - сохранение формы пароля | 150 | // кабинет профиль - сохранение формы пароля |
149 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); | 151 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); |
150 | 152 | ||
151 | 153 | ||
152 | // кабинет профиль пользователя - форма | 154 | // кабинет профиль пользователя - форма |
153 | 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'); |
154 | // кабинет профиль пользователя - сохранение формы | 156 | // кабинет профиль пользователя - сохранение формы |
155 | 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'); |
156 | 158 | ||
157 | // кабинет профиль работодатель - форма | 159 | // кабинет профиль работодатель - форма |
158 | 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'); |
159 | // кабинет профиль работодатель - сохранение формы | 161 | // кабинет профиль работодатель - сохранение формы |
160 | 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 | // кабинет удаление профиль работодателя и юзера | ||
164 | Route::delete('employer-profile/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); | ||
161 | 165 | ||
162 | // кабинет профиль работник - форма | 166 | // кабинет профиль работник - форма |
163 | 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'); |
164 | // кабинет профиль работник - сохранение формы | 168 | // кабинет профиль работник - сохранение формы |
165 | 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'); |
166 | 170 | ||
167 | 171 | ||
168 | // кабинет настройки сайта - форма | 172 | // кабинет настройки сайта - форма |
169 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); | 173 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); |
170 | // кабинет настройки сайта сохранение формы | 174 | // кабинет настройки сайта сохранение формы |
171 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); | 175 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); |
172 | 176 | ||
173 | // кабинет - пользователи | 177 | // кабинет - пользователи |
174 | Route::get('users', [UsersController::class, 'index'])->name('users'); | 178 | Route::get('users', [UsersController::class, 'index'])->name('users'); |
175 | 179 | ||
176 | // кабинет - пользователи | 180 | // кабинет - пользователи |
177 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); | 181 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); |
178 | 182 | ||
179 | // кабинет - работодатели | 183 | // кабинет - работодатели |
180 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); | 184 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); |
181 | 185 | ||
182 | // кабинет - соискатели | 186 | // кабинет - соискатели |
183 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); | 187 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); |
184 | 188 | ||
185 | // кабинет - вакансии | 189 | // кабинет - вакансии |
186 | 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'); | ||
192 | Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); | ||
187 | 193 | ||
188 | // кабинет - категории | 194 | // кабинет - категории |
189 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); | 195 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); |
190 | /* | 196 | /* |
191 | * CRUD-операции над Справочником Категории | 197 | * CRUD-операции над Справочником Категории |
192 | */ | 198 | */ |
193 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); | 199 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); |
194 | 200 | ||
201 | // CRUD-операции над справочником Категории для работодателей | ||
202 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); | ||
203 | |||
204 | // CRUD-операции над справочником Образование | ||
205 | Route::resource('education', EducationController::class, ['except' => ['show']]); | ||
195 | 206 | ||
196 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); | 207 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); |
197 | /* | 208 | /* |
198 | * кабинет - CRUD-операции по справочнику должности | 209 | * кабинет - CRUD-операции по справочнику должности |
199 | * | 210 | * |
200 | */ | 211 | */ |
201 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); | 212 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); |
202 | 213 | ||
203 | // кабинет - сообщения (чтение чужих) | 214 | // кабинет - сообщения (чтение чужих) |
204 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); | 215 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); |
205 | // кабинет - сообщения (админские) | 216 | // кабинет - сообщения (админские) |
206 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); | 217 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); |
207 | // кабинет - сообщения (админские) | 218 | // кабинет - сообщения (админские) |
208 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); | 219 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); |
209 | // кабинет - sql - конструкция запросов | 220 | // кабинет - sql - конструкция запросов |
210 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); | 221 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); |
211 | 222 | ||
212 | /* | 223 | /* |
213 | * Расписанный подход в описании каждой директорий групп пользователей. | 224 | * Расписанный подход в описании каждой директорий групп пользователей. |
214 | */ | 225 | */ |
215 | // кабинет - группы пользователей | 226 | // кабинет - группы пользователей |
216 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); | 227 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); |
217 | // кабинет - добавление форма группы пользователей | 228 | // кабинет - добавление форма группы пользователей |
218 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); | 229 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); |
219 | // кабинет - сохранение формы группы пользователей | 230 | // кабинет - сохранение формы группы пользователей |
220 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); | 231 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); |
221 | // кабинет - редактирование форма группы пользователей | 232 | // кабинет - редактирование форма группы пользователей |
222 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); | 233 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); |
223 | // кабинет - сохранение редактированной формы группы пользователей | 234 | // кабинет - сохранение редактированной формы группы пользователей |
224 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); | 235 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); |
225 | // кабинет - удаление группы пользователей | 236 | // кабинет - удаление группы пользователей |
226 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); | 237 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); |
227 | 238 | ||
228 | 239 | ||
229 | // кабинет - список админов | 240 | // кабинет - список админов |
230 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); | 241 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); |
231 | 242 | ||
232 | 243 | ||
233 | /////редактор////// кабинет - редактор сайта//////////////////////// | 244 | /////редактор////// кабинет - редактор сайта//////////////////////// |
234 | Route::get('editor-site', function() { | 245 | Route::get('editor-site', function() { |
235 | return view('admin.editor.index'); | 246 | return view('admin.editor.index'); |
236 | })->name('editor-site'); | 247 | })->name('editor-site'); |
237 | 248 | ||
238 | 249 | ||
239 | // кабинет - редактор шапки-футера сайта | 250 | // кабинет - редактор шапки-футера сайта |
240 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); | 251 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); |
241 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); | 252 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); |
242 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); | 253 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); |
243 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); | 254 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); |
244 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); | 255 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); |
245 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); | 256 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); |
246 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); | 257 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); |
247 | 258 | ||
248 | 259 | ||
249 | // кабинет - редактор должности на главной | 260 | // кабинет - редактор должности на главной |
250 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); | 261 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); |
251 | 262 | ||
252 | // кабинет - редактор работодатели на главной | 263 | // кабинет - редактор работодатели на главной |
253 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); | 264 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); |
254 | 265 | ||
255 | 266 | ||
256 | // кабинет - редактор seo-сайта | 267 | // кабинет - редактор seo-сайта |
257 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); | 268 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); |
258 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); | 269 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); |
259 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); | 270 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); |
260 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); | 271 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); |
261 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); | 272 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); |
262 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); | 273 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); |
263 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); | 274 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); |
264 | 275 | ||
265 | 276 | ||
266 | // кабинет - редактор страниц | 277 | // кабинет - редактор страниц |
267 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); | 278 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); |
268 | // кабинет - добавление страницы | 279 | // кабинет - добавление страницы |
269 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); | 280 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); |
270 | // кабинет - сохранение формы страницы | 281 | // кабинет - сохранение формы страницы |
271 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); | 282 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); |
272 | // кабинет - редактирование форма страницы | 283 | // кабинет - редактирование форма страницы |
273 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); | 284 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); |
274 | // кабинет - сохранение редактированной формы страницы | 285 | // кабинет - сохранение редактированной формы страницы |
275 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); | 286 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); |
276 | // кабинет - удаление страницы | 287 | // кабинет - удаление страницы |
277 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); | 288 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); |
278 | 289 | ||
279 | 290 | ||
280 | // кабинет - реклама сайта | 291 | // кабинет - реклама сайта |
281 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); | 292 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); |
282 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); | 293 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); |
283 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); | 294 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); |
284 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); | 295 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); |
285 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); | 296 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); |
286 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); | 297 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); |
287 | //////////////////////////////////////////////////////////////////////// | 298 | //////////////////////////////////////////////////////////////////////// |
288 | 299 | ||
289 | 300 | ||
290 | // кабинет - отзывы о работодателе для модерации | 301 | // кабинет - отзывы о работодателе для модерации |
291 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); | 302 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); |
292 | 303 | ||
293 | // Общая страница статистики | 304 | // Общая страница статистики |
294 | Route::get('statics', function () { | 305 | Route::get('statics', function () { |
295 | return view('admin.static.index'); | 306 | return view('admin.static.index'); |
296 | })->name('statics'); | 307 | })->name('statics'); |
297 | 308 | ||
298 | // кабинет - статистика работников | 309 | // кабинет - статистика работников |
299 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); | 310 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); |
300 | 311 | ||
301 | // кабинет - статистика вакансий работодателя | 312 | // кабинет - статистика вакансий работодателя |
302 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); | 313 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); |
303 | 314 | ||
304 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника | 315 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника |
305 | /* | 316 | /* |
306 | * CRUD-операции над справочником дипломы и документы | 317 | * CRUD-операции над справочником дипломы и документы |
307 | */ | 318 | */ |
308 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); | 319 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); |
309 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); | 320 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); |
310 | 321 | ||
311 | // кабинет - роли пользователя | 322 | // кабинет - роли пользователя |
312 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); | 323 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); |
313 | 324 | ||
314 | Route::get('logs', function() { | 325 | Route::get('logs', function() { |
315 | $files = Storage::files('logs/laravel.log'); | 326 | $files = Storage::files('logs/laravel.log'); |
316 | print_r($files); | 327 | print_r($files); |
317 | })->name('logs'); | 328 | })->name('logs'); |
318 | 329 | ||
319 | }); | 330 | }); |
320 | 331 | ||
321 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); | 332 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); |
322 | 333 | ||
323 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); | 334 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); |
324 | 335 | ||
325 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); | 336 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); |
326 | 337 |