Commit 313a7a805990c406a66597fdada982544d6a4aa9
1 parent
251aff93ae
Exists in
master
and in
1 other branch
Работа с разделом база данных, экспорт в эксель
Showing 20 changed files with 1653 additions and 5 deletions Inline Diff
- app/Http/Controllers/Admin/EmployersController.php
- app/Http/Controllers/Admin/UsersController.php
- app/Http/Controllers/Admin/WorkersController.php
- app/Http/Requests/BaseUserRequest.php
- app/Http/Requests/WorkerRequest.php
- app/Models/BaseUsers.php
- app/Models/User.php
- database/migrations/2023_10_11_085208_create_base_users_table.php
- public/books-25.xlsx
- resources/views/admin/groups/form.blade.php
- resources/views/admin/users/add.blade.php
- resources/views/admin/users/edit.blade.php
- resources/views/admin/users/form.blade.php
- resources/views/admin/users/index.blade.php
- resources/views/admin/users/index_bd.blade.php
- resources/views/admin/users/index_bd_ajax.blade.php
- resources/views/admin/worker/add.blade.php
- resources/views/admin/worker/edit_bd.blade.php
- resources/views/layout/admin.blade.php
- routes/web.php
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\CategoryEmp; |
9 | use App\Models\Employer; | 9 | use App\Models\Employer; |
10 | use App\Models\Static_ad; | 10 | use App\Models\Static_ad; |
11 | use App\Models\User; | 11 | use App\Models\User; |
12 | use Illuminate\Http\Request; | 12 | use Illuminate\Http\Request; |
13 | use Illuminate\Support\Facades\DB; | 13 | use Illuminate\Support\Facades\DB; |
14 | use Illuminate\Support\Facades\Storage; | 14 | use Illuminate\Support\Facades\Storage; |
15 | use Illuminate\Support\Facades\Validator; | 15 | use Illuminate\Support\Facades\Validator; |
16 | 16 | ||
17 | class EmployersController extends Controller | 17 | class EmployersController extends Controller |
18 | { | 18 | { |
19 | public function index(Request $request) { | 19 | public function index(Request $request) { |
20 | //$all_employer = User::where('is_worker', '0')->count(); | 20 | //$all_employer = User::where('is_worker', '0')->count(); |
21 | 21 | ||
22 | if ($request->ajax()) { | 22 | if ($request->ajax()) { |
23 | $user = User::find($request->id); | 23 | $user = User::find($request->id); |
24 | $request->offsetUnset('id'); | 24 | $request->offsetUnset('id'); |
25 | $user->update($request->all()); | 25 | $user->update($request->all()); |
26 | } | 26 | } |
27 | 27 | ||
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') | 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') |
29 | ->where('users.is_worker', '0'); | 29 | ->where('users.is_worker', '0')->Realuser(); |
30 | $all_employer = $users->count(); | 30 | $all_employer = $users->count(); |
31 | 31 | ||
32 | $find_cat = ""; | 32 | $find_cat = ""; |
33 | if (isset($request->category)) { | 33 | if (isset($request->category)) { |
34 | if ($request->category != 'Все категории') { | 34 | if ($request->category != 'Все категории') { |
35 | $users = $users->where('category', '=', $request->category); | 35 | $users = $users->where('category', '=', $request->category); |
36 | $find_cat = $request->category; | 36 | $find_cat = $request->category; |
37 | } | 37 | } |
38 | } | 38 | } |
39 | $find_key = ""; | 39 | $find_key = ""; |
40 | 40 | ||
41 | if (isset($request->find)) { | 41 | if (isset($request->find)) { |
42 | $find_key = $request->find; | 42 | $find_key = $request->find; |
43 | $users = $users->where(function($query) use($find_key) { | 43 | $users = $users->where(function($query) use($find_key) { |
44 | $query->Where('users.name', 'LIKE', "%$find_key%") | 44 | $query->Where('users.name', 'LIKE', "%$find_key%") |
45 | ->orWhere('emp.email', 'LIKE', "%$find_key%") | 45 | ->orWhere('emp.email', 'LIKE', "%$find_key%") |
46 | ->orWhere('emp.telephone', 'LIKE', "%$find_key%"); | 46 | ->orWhere('emp.telephone', 'LIKE', "%$find_key%"); |
47 | }); | 47 | }); |
48 | } | 48 | } |
49 | 49 | ||
50 | //DB::enableQueryLog(); | 50 | //DB::enableQueryLog(); |
51 | $users = $users->paginate(15); | 51 | $users = $users->paginate(15); |
52 | //dd(DB::getQueryLog()); | 52 | //dd(DB::getQueryLog()); |
53 | 53 | ||
54 | $select_category = CategoryEmp::query()->active()->get(); | 54 | $select_category = CategoryEmp::query()->active()->get(); |
55 | 55 | ||
56 | if ($request->ajax()) { | 56 | if ($request->ajax()) { |
57 | return view('admin.employer.index_ajax', compact('users')); | 57 | return view('admin.employer.index_ajax', compact('users')); |
58 | } else { | 58 | } else { |
59 | return view('admin.employer.index', compact('users', 'find_key', 'find_cat', 'all_employer', 'select_category')); | 59 | return view('admin.employer.index', compact('users', 'find_key', 'find_cat', 'all_employer', 'select_category')); |
60 | } | 60 | } |
61 | } | 61 | } |
62 | 62 | ||
63 | public function form_update_employer(Employer $employer) { | 63 | public function form_update_employer(Employer $employer) { |
64 | $select_category = CategoryEmp::query()->active()->get(); | 64 | $select_category = CategoryEmp::query()->active()->get(); |
65 | return view('admin.employer.edit', compact('employer', 'select_category')); | 65 | return view('admin.employer.edit', compact('employer', 'select_category')); |
66 | } | 66 | } |
67 | 67 | ||
68 | public function update_employer(Employer $employer, Request $request) | 68 | public function update_employer(Employer $employer, Request $request) |
69 | { | 69 | { |
70 | $params = $request->all(); | 70 | $params = $request->all(); |
71 | unset($params['logo']); | 71 | unset($params['logo']); |
72 | unset($params['telephone']); | 72 | unset($params['telephone']); |
73 | unset($params['email']); | 73 | unset($params['email']); |
74 | unset($params['address']); | 74 | unset($params['address']); |
75 | unset($params['site']); | 75 | unset($params['site']); |
76 | unset($params['status_hidden']); | 76 | unset($params['status_hidden']); |
77 | unset($params['oficial_status']); | 77 | unset($params['oficial_status']); |
78 | unset($params['social_is']); | 78 | unset($params['social_is']); |
79 | unset($params['sending_is']); | 79 | unset($params['sending_is']); |
80 | unset($params['category']); | 80 | unset($params['category']); |
81 | unset($params['comment_admin']); | 81 | unset($params['comment_admin']); |
82 | 82 | ||
83 | $rules = [ | 83 | $rules = [ |
84 | 'name' => 'required|string|max:255', | 84 | 'name' => 'required|string|max:255', |
85 | ]; | 85 | ]; |
86 | 86 | ||
87 | $messages = [ | 87 | $messages = [ |
88 | 'required' => 'Укажите обязательное поле «:attribute»', | 88 | 'required' => 'Укажите обязательное поле «:attribute»', |
89 | 'confirmed' => 'Пароли не совпадают', | 89 | 'confirmed' => 'Пароли не совпадают', |
90 | 'email' => 'Введите корректный email', | 90 | 'email' => 'Введите корректный email', |
91 | 'min' => [ | 91 | 'min' => [ |
92 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 92 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
93 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 93 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
94 | ], | 94 | ], |
95 | 'max' => [ | 95 | 'max' => [ |
96 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 96 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
97 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 97 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
98 | ], | 98 | ], |
99 | ]; | 99 | ]; |
100 | 100 | ||
101 | $validator = Validator::make($params, $rules, $messages); | 101 | $validator = Validator::make($params, $rules, $messages); |
102 | 102 | ||
103 | if ($validator->fails()) { | 103 | if ($validator->fails()) { |
104 | return back()->withErrors($validator)->withInput(); //->route('admin.register') | 104 | return back()->withErrors($validator)->withInput(); //->route('admin.register') |
105 | 105 | ||
106 | } else { | 106 | } else { |
107 | 107 | ||
108 | //$user = User::find($employer->user_id); | 108 | //$user = User::find($employer->user_id); |
109 | $user_id = $employer->user_id; | 109 | $user_id = $employer->user_id; |
110 | $employer->telephone = $request->telephone; | 110 | $employer->telephone = $request->telephone; |
111 | $employer->email = $request->email; | 111 | $employer->email = $request->email; |
112 | $employer->address = $request->address; | 112 | $employer->address = $request->address; |
113 | $employer->site = $request->site; | 113 | $employer->site = $request->site; |
114 | $employer->text = $request->text; | 114 | $employer->text = $request->text; |
115 | $employer->status_hidden = $request->status_hidden; | 115 | $employer->status_hidden = $request->status_hidden; |
116 | $employer->oficial_status = $request->oficial_status; | 116 | $employer->oficial_status = $request->oficial_status; |
117 | $employer->social_is = $request->social_is; | 117 | $employer->social_is = $request->social_is; |
118 | $employer->sending_is = $request->sending_is; | 118 | $employer->sending_is = $request->sending_is; |
119 | $employer->category = $request->category; | 119 | $employer->category = $request->category; |
120 | $employer->comment_admin = $request->comment_admin; | 120 | $employer->comment_admin = $request->comment_admin; |
121 | 121 | ||
122 | if ($request->has('logo')) { | 122 | if ($request->has('logo')) { |
123 | if (!empty($employer->logo)) { | 123 | if (!empty($employer->logo)) { |
124 | Storage::delete($employer->logo); | 124 | Storage::delete($employer->logo); |
125 | } | 125 | } |
126 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); | 126 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); |
127 | } | 127 | } |
128 | $employer->save(); | 128 | $employer->save(); |
129 | 129 | ||
130 | $user = User::find($user_id); | 130 | $user = User::find($user_id); |
131 | $user->update($params); | 131 | $user->update($params); |
132 | 132 | ||
133 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) | 133 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) |
134 | ->with('success', 'Данные были успешно сохранены'); | 134 | ->with('success', 'Данные были успешно сохранены'); |
135 | } | 135 | } |
136 | } | 136 | } |
137 | 137 | ||
138 | // Удаление работодателя, вакансий и профиля юзера | 138 | // Удаление работодателя, вакансий и профиля юзера |
139 | public function delete_employer(Employer $employer, User $user) { | 139 | public function delete_employer(Employer $employer, User $user) { |
140 | try { | 140 | try { |
141 | if (!empty($employer)) { | 141 | if (!empty($employer)) { |
142 | $employer->ads()->delete(); | 142 | $employer->ads()->delete(); |
143 | if (!empty($employer->logo)) { | 143 | if (!empty($employer->logo)) { |
144 | Storage::delete($employer->logo); | 144 | Storage::delete($employer->logo); |
145 | } | 145 | } |
146 | $employer->delete(); | 146 | $employer->delete(); |
147 | } | 147 | } |
148 | } finally { | 148 | } finally { |
149 | $user->delete(); | 149 | $user->delete(); |
150 | } | 150 | } |
151 | 151 | ||
152 | return redirect()->route('admin.employers')->with('success', 'Данные были удалены о работодателе'); | 152 | return redirect()->route('admin.employers')->with('success', 'Данные были удалены о работодателе'); |
153 | } | 153 | } |
154 | 154 | ||
155 | // кабинет - отзывы о работодателе для модерации | 155 | // кабинет - отзывы о работодателе для модерации |
156 | public function answers(Request $request) { | 156 | public function answers(Request $request) { |
157 | if ($request->ajax()) { | 157 | if ($request->ajax()) { |
158 | $user = Answer::find($request->id); | 158 | $user = Answer::find($request->id); |
159 | $request->offsetUnset('id'); | 159 | $request->offsetUnset('id'); |
160 | $user->update($request->all()); | 160 | $user->update($request->all()); |
161 | } | 161 | } |
162 | 162 | ||
163 | $answers = Answer::query()->orderByDesc('id')->paginate(15); | 163 | $answers = Answer::query()->orderByDesc('id')->paginate(15); |
164 | 164 | ||
165 | if ($request->ajax()) { | 165 | if ($request->ajax()) { |
166 | return view('admin.answers.index_ajax', compact('answers')); | 166 | return view('admin.answers.index_ajax', compact('answers')); |
167 | } else { | 167 | } else { |
168 | return view('admin.answers.index', compact('answers')); | 168 | return view('admin.answers.index', compact('answers')); |
169 | } | 169 | } |
170 | } | 170 | } |
171 | 171 | ||
172 | // кабинет - статистика вакансий работодателя | 172 | // кабинет - статистика вакансий работодателя |
173 | public function static_ads(Request $request) { | 173 | public function static_ads(Request $request) { |
174 | $stat = Static_ad::with('ads'); | 174 | $stat = Static_ad::with('ads'); |
175 | $ads = Ad_employer::query()->active()->OrderBy('id')->get(); | 175 | $ads = Ad_employer::query()->active()->OrderBy('id')->get(); |
176 | $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); | 176 | $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); |
177 | if ($request->ajax()) { | 177 | if ($request->ajax()) { |
178 | if (isset($request->ad_employer_id)) | 178 | if (isset($request->ad_employer_id)) |
179 | if (!$request->ad_employer_id == "0") | 179 | if (!$request->ad_employer_id == "0") |
180 | $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); | 180 | $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); |
181 | if (isset($request->year_month)) { | 181 | if (isset($request->year_month)) { |
182 | if (!$request->year_month == "0") | 182 | if (!$request->year_month == "0") |
183 | $stat = $stat->Where('year_month', '=', $request->year_month); | 183 | $stat = $stat->Where('year_month', '=', $request->year_month); |
184 | } | 184 | } |
185 | } | 185 | } |
186 | 186 | ||
187 | $stat = $stat->OrderByDesc('year_month'); | 187 | $stat = $stat->OrderByDesc('year_month'); |
188 | $stat = $stat->paginate(15); | 188 | $stat = $stat->paginate(15); |
189 | 189 | ||
190 | if ($request->ajax()) | 190 | if ($request->ajax()) |
191 | return view('admin.static.index_ads_ajax', compact('stat')); | 191 | return view('admin.static.index_ads_ajax', compact('stat')); |
192 | else | 192 | else |
193 | return view('admin.static.index_ads', compact('stat', 'ads', 'periods')); | 193 | return view('admin.static.index_ads', compact('stat', 'ads', 'periods')); |
194 | 194 | ||
195 | } | 195 | } |
196 | 196 | ||
197 | 197 | ||
198 | } | 198 | } |
199 | 199 |
app/Http/Controllers/Admin/UsersController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers\Admin; | 3 | namespace App\Http\Controllers\Admin; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Http\Requests\BaseUserRequest; | ||
6 | use App\Models\User; | 7 | use App\Models\User; |
7 | use Illuminate\Http\Request; | 8 | use Illuminate\Http\Request; |
8 | use Illuminate\Support\Facades\Auth; | 9 | use Illuminate\Support\Facades\Auth; |
10 | use PhpOffice\PhpSpreadsheet\Spreadsheet; | ||
11 | use PhpOffice\PhpSpreadsheet\Style\Alignment; | ||
12 | use PhpOffice\PhpSpreadsheet\Style\Border; | ||
13 | use PhpOffice\PhpSpreadsheet\Style\Font; | ||
14 | use PhpOffice\PhpSpreadsheet\Writer\Xlsx; | ||
9 | 15 | ||
10 | class UsersController extends Controller | 16 | class UsersController extends Controller |
11 | { | 17 | { |
12 | public function index(Request $request) { | 18 | public function index(Request $request) { |
13 | $title = 'Админка - Пользователи системы'; | 19 | $title = 'Админка - Пользователи системы'; |
14 | $id_admin = Auth::user()->id; | 20 | $id_admin = Auth::user()->id; |
15 | if ($request->ajax()) { | 21 | if ($request->ajax()) { |
16 | $user = User::find($request->id); | 22 | $user = User::find($request->id); |
17 | $request->offsetUnset('id'); | 23 | $request->offsetUnset('id'); |
18 | $user->update($request->all()); | 24 | $user->update($request->all()); |
19 | } | 25 | } |
20 | $find_key = ""; | 26 | $find_key = ""; |
21 | $users = User::query(); | 27 | $users = User::query(); |
22 | if (isset($request->find)) { | 28 | if (isset($request->find)) { |
23 | $find_key = $request->find; | 29 | $find_key = $request->find; |
24 | $users = $users->where('name', 'LIKE', "%$find_key%") | 30 | $users = $users->where('name', 'LIKE', "%$find_key%") |
25 | ->orWhere('email', 'LIKE', "%$find_key%"); | 31 | ->orWhere('email', 'LIKE', "%$find_key%"); |
26 | } | 32 | } |
27 | $users = $users->paginate(15); | 33 | $users = $users->paginate(15); |
28 | 34 | ||
29 | if ($request->ajax()) { | 35 | if ($request->ajax()) { |
30 | return view('admin.users.index_ajax', compact('users', 'id_admin')); | 36 | return view('admin.users.index_ajax', compact('users', 'id_admin')); |
31 | } else { | 37 | } else { |
32 | return view('admin.users.index', compact('users', 'title', 'id_admin', 'find_key')); | 38 | return view('admin.users.index', compact('users', 'title', 'id_admin', 'find_key')); |
33 | } | 39 | } |
34 | } | 40 | } |
35 | 41 | ||
42 | public function index_bd(Request $request) { | ||
43 | $title = 'Админка - Пользователи базы данных'; | ||
44 | |||
45 | $find_key = ""; | ||
46 | $users = User::query(); | ||
47 | if (isset($request->find)) { | ||
48 | $find_key = $request->find; | ||
49 | $users = $users->where('name', 'LIKE', "%$find_key%") | ||
50 | ->orWhere('email', 'LIKE', "%$find_key%") | ||
51 | ->orWhere('telephone', 'LIKE', "%$find_key%"); | ||
52 | } | ||
53 | |||
54 | $users = $users->Baseuser()->paginate(15); | ||
55 | |||
56 | if ($request->ajax()) { | ||
57 | return view('admin.users.index_bd_ajax', compact('users')); | ||
58 | } else { | ||
59 | return view('admin.users.index_bd', compact('users', 'title', 'find_key')); | ||
60 | } | ||
61 | } | ||
62 | |||
63 | public function add_bd() { | ||
64 | return view('admin.users.add'); | ||
65 | } | ||
66 | |||
67 | public function add_store_bd(BaseUserRequest $request) { | ||
68 | $params = $request->all(); | ||
69 | $user = User::create($params); | ||
70 | return redirect()->route('admin.worker-profile-add', ['user' => $user]); | ||
71 | } | ||
72 | |||
73 | public function edit_bd(User $user) { | ||
74 | return view('admin.users.edit', compact('user')); | ||
75 | } | ||
76 | |||
77 | public function update_bd(BaseUserRequest $request, User $user) { | ||
78 | $params = $request->all(); | ||
79 | $user->update($params); | ||
80 | return redirect()->route('admin.basedata'); | ||
81 | } | ||
82 | |||
83 | public function destroy_bd(User $user) { | ||
84 | $user->delete(); | ||
85 | return redirect()->route('admin.basedata'); | ||
86 | } | ||
87 | |||
36 | public function roles(Request $request) { | 88 | public function roles(Request $request) { |
37 | if ($request->ajax()) { | 89 | if ($request->ajax()) { |
38 | $user = User::find($request->id); | 90 | $user = User::find($request->id); |
39 | $request->offsetUnset('id'); | 91 | $request->offsetUnset('id'); |
40 | $user->update($request->all()); | 92 | $user->update($request->all()); |
41 | } | 93 | } |
42 | 94 | ||
43 | $users = User::query()->paginate(15); | 95 | $users = User::query()->Realuser()->paginate(15); |
44 | 96 | ||
45 | if ($request->ajax()) { | 97 | if ($request->ajax()) { |
46 | return view('admin.users.roles.index_ajax', compact('users')); | 98 | return view('admin.users.roles.index_ajax', compact('users')); |
47 | } else { | 99 | } else { |
48 | return view('admin.users.roles.index', compact('users')); | 100 | return view('admin.users.roles.index', compact('users')); |
49 | } | 101 | } |
50 | } | 102 | } |
103 | |||
104 | public function doc_bd(User $user) { | ||
105 | $id = $user->id; | ||
106 | $spreadsheet = new Spreadsheet(); | ||
107 | $activeWorksheet = $spreadsheet->getActiveSheet(); | ||
108 | $activeWorksheet->setCellValue('A1', 'Отчет по соискателю'); | ||
109 | $activeWorksheet->getStyle('A1')->applyFromArray([ | ||
110 | 'font' => [ | ||
111 | 'name' => 'Arial', | ||
112 | 'bold' => true, | ||
113 | 'italic' => false, | ||
114 | 'underline' => Font::UNDERLINE_DOUBLE, | ||
115 | 'strikethrough' => false, | ||
116 | 'color' => [ | ||
117 | 'rgb' => '808080' | ||
118 | ] | ||
119 | ], | ||
120 | 'borders' => [ | ||
121 | 'allBorders' => [ | ||
122 | 'borderStyle' => Border::BORDER_THIN, | ||
123 | 'color' => [ | ||
124 | 'rgb' => '808080' | ||
125 | ] | ||
126 | ], | ||
127 | ], | ||
128 | 'alignment' => [ | ||
129 | 'horizontal' => Alignment::HORIZONTAL_CENTER, | ||
130 | 'vertical' => Alignment::VERTICAL_CENTER, | ||
131 | 'wrapText' => true, | ||
132 | ] | ||
133 | ]); | ||
134 | |||
135 | $activeWorksheet->setCellValue('A2', "Псевдоним/имя: ".$user->name); | ||
136 | $activeWorksheet->setCellValue('A3', "Фамилия: ".$user->surname); | ||
137 | $activeWorksheet->setCellValue('A4', "Имя: ".$user->name_man); | ||
138 | $activeWorksheet->setCellValue('A5', "Отчество: ".$user->surname2); | ||
139 | $activeWorksheet->setCellValue('A6', "Телефон: ".$user->telephone); | ||
140 | $activeWorksheet->setCellValue('A7', "Емайл: ".$user->email); | ||
141 | |||
142 | if (isset($user->workers[0]->id)) { | ||
143 | $activeWorksheet->setCellValue('A9', "Анкета: "); | ||
144 | $activeWorksheet->setCellValue('A10', "Телефон: " . $user->workers[0]->telephone); | ||
145 | $activeWorksheet->setCellValue('A11', "Емайл: " . $user->workers[0]->email); | ||
146 | } | ||
147 | |||
148 | if (isset($user->jobtitles[0]->id)) { | ||
149 | $activeWorksheet->setCellValue('A12', "Должность: " . $user->jobtitles[0]->name); | ||
150 | } | ||
151 | |||
152 | $writer = new Xlsx($spreadsheet); | ||
153 | |||
154 | header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); | ||
155 | header('Content-Disposition: attachment; filename="user'.$id.'.xlsx"'); | ||
156 | header('Cache-Control: no-cache'); | ||
157 | |||
158 | $writer->save('php://output'); | ||
159 | $writer->save(storage_path("app/public/export/user$id.xlsx")); | ||
160 | |||
161 | //$spreadsheet->disconnectWorksheets(); | ||
162 | return redirect()->route('admin.basedata'); | ||
163 | |||
164 | } | ||
51 | } | 165 | } |
52 | 166 |
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\Http\Requests\WorkerRequest; | ||
6 | use App\Models\Company; | 7 | use App\Models\Company; |
7 | use App\Models\Job_title; | 8 | use App\Models\Job_title; |
8 | use App\Models\Static_worker; | 9 | use App\Models\Static_worker; |
9 | use App\Models\User; | 10 | use App\Models\User; |
10 | use App\Models\Worker; | 11 | use App\Models\Worker; |
12 | use Carbon\Carbon; | ||
11 | use Illuminate\Database\Eloquent\Builder; | 13 | use Illuminate\Database\Eloquent\Builder; |
12 | use Illuminate\Http\Request; | 14 | use Illuminate\Http\Request; |
13 | use Illuminate\Support\Facades\DB; | 15 | use Illuminate\Support\Facades\DB; |
14 | use Illuminate\Support\Facades\Storage; | 16 | use Illuminate\Support\Facades\Storage; |
15 | use Illuminate\Support\Facades\Validator; | 17 | use Illuminate\Support\Facades\Validator; |
16 | 18 | ||
17 | class WorkersController extends Controller | 19 | class WorkersController extends Controller |
18 | { | 20 | { |
19 | public function index(Request $request) { | 21 | public function index(Request $request) { |
20 | if ($request->ajax()) { | 22 | if ($request->ajax()) { |
21 | $user = User::find($request->id); | 23 | $user = User::find($request->id); |
22 | $request->offsetUnset('id'); | 24 | $request->offsetUnset('id'); |
23 | $user->update($request->all()); | 25 | $user->update($request->all()); |
24 | } | 26 | } |
25 | 27 | ||
26 | $status_work = Job_title::query()->active()->orderBy('name')->get(); | 28 | $status_work = Job_title::query()->active()->orderBy('name')->get(); |
27 | $users = User::with('jobtitles')->where('is_worker', '1'); | 29 | $users = User::with('jobtitles')->where('is_worker', '1'); |
28 | 30 | ||
29 | $find_status_work = ""; | 31 | $find_status_work = ""; |
30 | if (isset($request->status_work)) { | 32 | if (isset($request->status_work)) { |
31 | $find_status_work = $request->status_work; | 33 | $find_status_work = $request->status_work; |
32 | //$users = $users->where('position_work', '=', $find_status_work); | 34 | //$users = $users->where('position_work', '=', $find_status_work); |
33 | 35 | ||
34 | /*if ($request->status_work > 0) | 36 | /*if ($request->status_work > 0) |
35 | $users = $users->with(['workers' => function($query) use ($find_status_work){ | 37 | $users = $users->with(['workers' => function($query) use ($find_status_work){ |
36 | $query->where('position_work', $find_status_work); | 38 | $query->where('position_work', $find_status_work); |
37 | }]); | 39 | }]); |
38 | else | 40 | else |
39 | $users = $users->with('workers');*/ | 41 | $users = $users->with('workers');*/ |
40 | 42 | ||
41 | /*$users = $users->where(function($query) use($find_status_work) { | 43 | /*$users = $users->where(function($query) use($find_status_work) { |
42 | $query->with(['workers' => function($query1) use ($find_status_work){ | 44 | $query->with(['workers' => function($query1) use ($find_status_work){ |
43 | $query1->where('position_work', $find_status_work); | 45 | $query1->where('position_work', $find_status_work); |
44 | }]); | 46 | }]); |
45 | });*/ | 47 | });*/ |
46 | if ($request->status_work > 0) { | 48 | if ($request->status_work > 0) { |
47 | $users = $users->with('workers')-> | 49 | $users = $users->with('workers')-> |
48 | whereHas('workers', | 50 | whereHas('workers', |
49 | function (Builder $query) use ($find_status_work) { | 51 | function (Builder $query) use ($find_status_work) { |
50 | $query->where('position_work', $find_status_work); | 52 | $query->where('position_work', $find_status_work); |
51 | } | 53 | } |
52 | ); | 54 | ); |
53 | } else { | 55 | } else { |
54 | $users = $users->with('workers'); | 56 | $users = $users->with('workers'); |
55 | } | 57 | } |
56 | 58 | ||
57 | } else { | 59 | } else { |
58 | $users = $users->with('workers'); | 60 | $users = $users->with('workers'); |
59 | } | 61 | } |
60 | 62 | ||
61 | $find_key = ""; | 63 | $find_key = ""; |
62 | if (isset($request->find)) { | 64 | if (isset($request->find)) { |
63 | $find_key = $request->find; | 65 | $find_key = $request->find; |
64 | $users = $users->where(function($query) use($find_key) { | 66 | $users = $users->where(function($query) use($find_key) { |
65 | $query->Where('name_man', 'LIKE', "%$find_key%") | 67 | $query->Where('name_man', 'LIKE', "%$find_key%") |
66 | ->orWhere('email', 'LIKE', "%$find_key%") | 68 | ->orWhere('email', 'LIKE', "%$find_key%") |
67 | ->orWhere('telephone', 'LIKE', "%$find_key%") | 69 | ->orWhere('telephone', 'LIKE', "%$find_key%") |
68 | ->orWhere('surname', 'LIKE', "%$find_key%") | 70 | ->orWhere('surname', 'LIKE', "%$find_key%") |
69 | ->orWhere('surname2', 'LIKE', "%$find_key%"); | 71 | ->orWhere('surname2', 'LIKE', "%$find_key%"); |
70 | }); | 72 | }); |
71 | } | 73 | } |
72 | 74 | ||
73 | $users = $users->paginate(15); | 75 | $users = $users->Realuser()->paginate(15); |
74 | 76 | ||
75 | /* | 77 | /* |
76 | $Arr = array(); | 78 | $Arr = array(); |
77 | $where = ''; | 79 | $where = ''; |
78 | $find_status_work = ""; | 80 | $find_status_work = ""; |
79 | if (isset($request->status_work)) { | 81 | if (isset($request->status_work)) { |
80 | $find_status_work = $request->status_work; | 82 | $find_status_work = $request->status_work; |
81 | //$users = $users->where('position_work', '=', $find_status_work); | 83 | //$users = $users->where('position_work', '=', $find_status_work); |
82 | $where.= ' and (w.position_work = :uid1)'; | 84 | $where.= ' and (w.position_work = :uid1)'; |
83 | $Arr['uid1'] = $find_status_work; | 85 | $Arr['uid1'] = $find_status_work; |
84 | } | 86 | } |
85 | 87 | ||
86 | $find_key = ""; | 88 | $find_key = ""; |
87 | if (isset($request->find)) { | 89 | if (isset($request->find)) { |
88 | $find_key = $request->find; | 90 | $find_key = $request->find; |
89 | /*$users = $users->where(function($query) use($find_key) { | 91 | /*$users = $users->where(function($query) use($find_key) { |
90 | $query->Where('name_man', 'LIKE', "%$find_key%") | 92 | $query->Where('name_man', 'LIKE', "%$find_key%") |
91 | ->orWhere('email', 'LIKE', "%$find_key%") | 93 | ->orWhere('email', 'LIKE', "%$find_key%") |
92 | ->orWhere('telephone', 'LIKE', "%$find_key%"); | 94 | ->orWhere('telephone', 'LIKE', "%$find_key%"); |
93 | });*/ | 95 | });*/ |
94 | /*$where.= " and ((u.name_man LIKE %:uid2%) or (w.email LIKE %:uid2%) or (w.telephone LIKE %:uid2%))"; | 96 | /*$where.= " and ((u.name_man LIKE %:uid2%) or (w.email LIKE %:uid2%) or (w.telephone LIKE %:uid2%))"; |
95 | $Arr['uid2'] = $find_key; | 97 | $Arr['uid2'] = $find_key; |
96 | } | 98 | } |
97 | 99 | ||
98 | //$users = $users->paginate(15); | 100 | //$users = $users->paginate(15); |
99 | 101 | ||
100 | //DB::enableQueryLog(); | 102 | //DB::enableQueryLog(); |
101 | $users = DB::select('SELECT u.*, w.*, j.* | 103 | $users = DB::select('SELECT u.*, w.*, j.* |
102 | FROM workers w | 104 | FROM workers w |
103 | JOIN users u ON u.id = w.user_id | 105 | JOIN users u ON u.id = w.user_id |
104 | JOIN job_titles j ON j.id = w.position_work | 106 | JOIN job_titles j ON j.id = w.position_work |
105 | Where (u.is_worker = 1) | 107 | Where (u.is_worker = 1) |
106 | '.$where, $Arr); | 108 | '.$where, $Arr); |
107 | //dump(DB::getQueryLog()); | 109 | //dump(DB::getQueryLog()); |
108 | dd($users); | 110 | dd($users); |
109 | */ | 111 | */ |
110 | 112 | ||
111 | if ($request->ajax()) { | 113 | if ($request->ajax()) { |
112 | return view('admin.worker.index_ajax', compact('users')); | 114 | return view('admin.worker.index_ajax', compact('users')); |
113 | } else { | 115 | } else { |
114 | return view('admin.worker.index', compact('users', 'find_key', 'find_status_work', 'status_work')); | 116 | return view('admin.worker.index', compact('users', 'find_key', 'find_status_work', 'status_work')); |
115 | } | 117 | } |
116 | } | 118 | } |
117 | 119 | ||
120 | public function form_add_worker(User $user) { | ||
121 | $job_titles = Job_title::query()->active()->orderBy('name')->get(); | ||
122 | |||
123 | $time_end_anketa = 'Создана только'; | ||
124 | $long_days = Company::find(1)->time_resume; | ||
125 | $time_end_anketa = date("d.m.Y H:i:s", strtotime(Carbon::now() . "+$long_days days")); | ||
126 | |||
127 | return view('admin.worker.add', compact('user', 'job_titles', 'time_end_anketa')); | ||
128 | } | ||
129 | |||
130 | public function form_store_worker(WorkerRequest $request, User $user) { | ||
131 | $params = $request->all(); | ||
132 | $worker = Worker::create($params); | ||
133 | return redirect()->route('admin.basedata'); | ||
134 | } | ||
135 | |||
118 | public function form_edit_worker(Worker $worker) { | 136 | public function form_edit_worker(Worker $worker) { |
119 | $job_titles = Job_title::query()->active()->orderBy('name')->get(); | 137 | $job_titles = Job_title::query()->active()->orderBy('name')->get(); |
120 | 138 | ||
121 | $time_end_anketa = 'Бессрочно'; | 139 | $time_end_anketa = 'Бессрочно'; |
122 | if (!empty($worker->updated_at)) { | 140 | if (!empty($worker->updated_at)) { |
123 | $long_days = Company::find(1)->time_resume; | 141 | $long_days = Company::find(1)->time_resume; |
124 | $time_end_anketa = date("d.m.Y H:i:s", strtotime($worker->updated_at . "+$long_days days")); | 142 | $time_end_anketa = date("d.m.Y H:i:s", strtotime($worker->updated_at . "+$long_days days")); |
125 | } | 143 | } |
126 | return view('admin.worker.edit', compact('worker', 'job_titles', 'time_end_anketa')); | 144 | return view('admin.worker.edit', compact('worker', 'job_titles', 'time_end_anketa')); |
127 | } | 145 | } |
128 | 146 | ||
129 | public function form_update_worker(Request $request, Worker $worker) | 147 | public function form_update_worker(Request $request, Worker $worker) |
130 | { | 148 | { |
131 | $params = $request->all(); | 149 | $params = $request->all(); |
132 | 150 | ||
133 | $rules = [ | 151 | $rules = [ |
134 | 'email' => 'email|string|max:255', | 152 | 'email' => 'email|string|max:255', |
135 | //'photo' => 'mimes:jpeg,jpg,png|max:15000', | 153 | //'photo' => 'mimes:jpeg,jpg,png|max:15000', |
136 | ]; | 154 | ]; |
137 | 155 | ||
138 | $messages = [ | 156 | $messages = [ |
139 | 'required' => 'Укажите обязательное поле «:attribute»', | 157 | 'required' => 'Укажите обязательное поле «:attribute»', |
140 | 'confirmed' => 'Пароли не совпадают', | 158 | 'confirmed' => 'Пароли не совпадают', |
141 | 'email' => 'Введите корректный email', | 159 | 'email' => 'Введите корректный email', |
142 | 'min' => [ | 160 | 'min' => [ |
143 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 161 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
144 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 162 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
145 | ], | 163 | ], |
146 | 'max' => [ | 164 | 'max' => [ |
147 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 165 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
148 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 166 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
149 | ], | 167 | ], |
150 | ]; | 168 | ]; |
151 | 169 | ||
152 | $validator = Validator::make($params, $rules, $messages); | 170 | $validator = Validator::make($params, $rules, $messages); |
153 | 171 | ||
154 | if ($validator->fails()) { | 172 | if ($validator->fails()) { |
155 | return back()->withErrors($validator)->withInput(); | 173 | return back()->withErrors($validator)->withInput(); |
156 | } else { | 174 | } else { |
157 | $user_id = $worker->user_id; | 175 | $user_id = $worker->user_id; |
158 | if ($request->has('photo')) { | 176 | if ($request->has('photo')) { |
159 | if (!empty($worker->photo)) { | 177 | if (!empty($worker->photo)) { |
160 | Storage::delete($worker->photo); | 178 | Storage::delete($worker->photo); |
161 | } | 179 | } |
162 | if (!empty($request->photo)) | 180 | if (!empty($request->photo)) |
163 | $params['photo'] = $request->file('photo')->store("workers/$user_id", 'public'); | 181 | $params['photo'] = $request->file('photo')->store("workers/$user_id", 'public'); |
164 | } | 182 | } |
165 | $worker->update($params); | 183 | $worker->update($params); |
166 | 184 | ||
167 | return redirect()->route('admin.workers'); | 185 | return redirect()->route('admin.workers'); |
168 | } | 186 | } |
169 | } | 187 | } |
170 | 188 | ||
171 | // кабинет - статистика работников | 189 | // кабинет - статистика работников |
172 | public function static_workers(Request $request) { | 190 | public function static_workers(Request $request) { |
173 | $stat = Static_worker::with('users'); | 191 | $stat = Static_worker::with('users'); |
174 | //->join('users', 'users.id', '=', 'static_workers.user_id'); | 192 | //->join('users', 'users.id', '=', 'static_workers.user_id'); |
175 | $users = User::query()->active()->OrderBy('id')->get(); | 193 | $users = User::query()->active()->OrderBy('id')->get(); |
176 | $periods = Static_worker::query()->distinct('year_month')->select('year_month')->get(); | 194 | $periods = Static_worker::query()->distinct('year_month')->select('year_month')->get(); |
177 | if ($request->ajax()) { | 195 | if ($request->ajax()) { |
178 | if (isset($request->user_id)) | 196 | if (isset($request->user_id)) |
179 | if (!$request->user_id == "0") | 197 | if (!$request->user_id == "0") |
180 | $stat = $stat->Where('user_id', '=', $request->user_id); | 198 | $stat = $stat->Where('user_id', '=', $request->user_id); |
181 | if (isset($request->year_month)) { | 199 | if (isset($request->year_month)) { |
182 | if (!$request->year_month == "0") | 200 | if (!$request->year_month == "0") |
183 | $stat = $stat->Where('year_month', '=', $request->year_month); | 201 | $stat = $stat->Where('year_month', '=', $request->year_month); |
184 | } | 202 | } |
185 | } | 203 | } |
186 | 204 | ||
187 | $stat = $stat->OrderByDesc('year_month'); | 205 | $stat = $stat->OrderByDesc('year_month'); |
188 | //->OrderBy('users.name'); | 206 | //->OrderBy('users.name'); |
189 | //OrderBy('users.name')-> | 207 | //OrderBy('users.name')-> |
190 | /*$stat->implode() loadMissing(['users' => function (Builder $query) { | 208 | /*$stat->implode() loadMissing(['users' => function (Builder $query) { |
191 | $query->orderBy('name', 'asc'); | 209 | $query->orderBy('name', 'asc'); |
192 | }]);*/ | 210 | }]);*/ |
193 | 211 | ||
194 | $stat = $stat->paginate(15); | 212 | $stat = $stat->paginate(15); |
195 | 213 | ||
196 | if ($request->ajax()) | 214 | if ($request->ajax()) |
197 | return view('admin.static.index_workers_ajax', compact('stat')); | 215 | return view('admin.static.index_workers_ajax', compact('stat')); |
198 | else | 216 | else |
199 | return view('admin.static.index_workers', compact('stat', 'users', 'periods')); | 217 | return view('admin.static.index_workers', compact('stat', 'users', 'periods')); |
200 | 218 | ||
201 | } | 219 | } |
202 | 220 | ||
203 | } | 221 | } |
204 | 222 |
app/Http/Requests/BaseUserRequest.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Requests; | ||
4 | |||
5 | use Illuminate\Foundation\Http\FormRequest; | ||
6 | |||
7 | class BaseUserRequest 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 | 'surname' => 'required|min:3|max:255', | ||
29 | 'name_man' => 'required|min:3|max:255', | ||
30 | 'email' => 'required|email|min:5', | ||
31 | ]; | ||
32 | } | ||
33 | |||
34 | public function messages() { | ||
35 | return [ | ||
36 | 'required' => 'Поле :attribute обязательно для ввода', | ||
37 | 'min' => [ | ||
38 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | ||
39 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | ||
40 | ], | ||
41 | 'max' => [ | ||
42 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | ||
43 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | ||
44 | ], | ||
45 | 'email' => 'Введите корректный емайл' | ||
46 | |||
47 | ]; | ||
48 | } | ||
49 | } | ||
50 |
app/Http/Requests/WorkerRequest.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Requests; | ||
4 | |||
5 | use Illuminate\Foundation\Http\FormRequest; | ||
6 | |||
7 | class WorkerRequest 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 | 'email' => 'email|string|max:255', | ||
28 | ]; | ||
29 | } | ||
30 | |||
31 | public function messages() { | ||
32 | return [ | ||
33 | 'required' => 'Поле :attribute обязательно для ввода', | ||
34 | 'unique' => 'Поле :attribute должно быть уникальным', | ||
35 | 'mimes' => 'Допускаются файлы только с расширением jpeg,jpg,png', | ||
36 | 'min' => [ | ||
37 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | ||
38 | 'integer' => 'Поле «:attribute» должно быть :min или больше', | ||
39 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | ||
40 | ], | ||
41 | |||
42 | 'max' => [ | ||
43 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | ||
44 | 'integer' => 'Поле «:attribute» должно быть :max или меньше', | ||
45 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | ||
46 | ], | ||
47 | |||
48 | ]; | ||
49 | } | ||
50 | } | ||
51 |
app/Models/BaseUsers.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 BaseUsers extends Model | ||
9 | { | ||
10 | use HasFactory; | ||
11 | } | ||
12 |
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 | 'is_bd', | ||
36 | 'email_verified_at', | 37 | 'email_verified_at', |
37 | 'created_at', | 38 | 'created_at', |
38 | 'updated_at' | 39 | 'updated_at', |
40 | 'birthday' | ||
39 | ]; | 41 | ]; |
40 | 42 | ||
41 | /** | 43 | /** |
42 | * The attributes that should be hidden for serialization. | 44 | * The attributes that should be hidden for serialization. |
43 | * | 45 | * |
44 | * @var array<int, string> | 46 | * @var array<int, string> |
45 | */ | 47 | */ |
46 | protected $hidden = [ | 48 | protected $hidden = [ |
47 | 'password', | 49 | 'password', |
48 | 'remember_token', | 50 | 'remember_token', |
49 | ]; | 51 | ]; |
50 | 52 | ||
51 | /** | 53 | /** |
52 | * The attributes that should be cast. | 54 | * The attributes that should be cast. |
53 | * | 55 | * |
54 | * @var array<string, string> | 56 | * @var array<string, string> |
55 | */ | 57 | */ |
56 | protected $casts = [ | 58 | protected $casts = [ |
57 | 'email_verified_at' => 'datetime', | 59 | 'email_verified_at' => 'datetime', |
58 | ]; | 60 | ]; |
59 | 61 | ||
60 | /* | 62 | /* |
61 | * Связь Пользователей системы с работодателями | 63 | * Связь Пользователей системы с работодателями |
62 | * users - employers | 64 | * users - employers |
63 | */ | 65 | */ |
64 | public function employers() { | 66 | public function employers() { |
65 | return $this->hasMany(Employer::class, 'user_id'); | 67 | return $this->hasMany(Employer::class, 'user_id'); |
66 | } | 68 | } |
67 | 69 | ||
68 | /* | 70 | /* |
69 | * Связь Пользователей системы с работниками | 71 | * Связь Пользователей системы с работниками |
70 | * users - workers | 72 | * users - workers |
71 | */ | 73 | */ |
72 | public function workers() { | 74 | public function workers() { |
73 | return $this->hasMany(Worker::class, 'user_id'); | 75 | return $this->hasMany(Worker::class, 'user_id'); |
74 | } | 76 | } |
75 | 77 | ||
76 | /* | 78 | /* |
77 | * Связь Пользователей системы с работниками | 79 | * Связь Пользователей системы с работниками |
78 | * users - workers | 80 | * users - workers |
79 | */ | 81 | */ |
80 | public function work() { | 82 | public function work() { |
81 | return $this->hasMany(Worker::class, 'user_id')->select('telephone', 'email', 'position_work', 'persent_anketa'); | 83 | return $this->hasMany(Worker::class, 'user_id')->select('telephone', 'email', 'position_work', 'persent_anketa'); |
82 | } | 84 | } |
83 | 85 | ||
84 | /* | 86 | /* |
85 | * Связь Модели Пользователей(Users) с Группами (Group_users) | 87 | * Связь Модели Пользователей(Users) с Группами (Group_users) |
86 | * users - group_users | 88 | * users - group_users |
87 | многие-ко-многим | 89 | многие-ко-многим |
88 | */ | 90 | */ |
89 | public function ingroup() { | 91 | public function ingroup() { |
90 | return $this->belongsToMany(Group_user::class, 'group_works'); | 92 | return $this->belongsToMany(Group_user::class, 'group_works'); |
91 | } | 93 | } |
92 | 94 | ||
93 | /* | 95 | /* |
94 | * Связь Пользователей системы с ссобщениями | 96 | * Связь Пользователей системы с ссобщениями |
95 | * users - messages | 97 | * users - messages |
96 | */ | 98 | */ |
97 | public function messages() { | 99 | public function messages() { |
98 | return $this->hasMany(Message::class); | 100 | return $this->hasMany(Message::class); |
99 | } | 101 | } |
100 | 102 | ||
101 | /* | 103 | /* |
102 | * Связь Пользователей системы с статистика | 104 | * Связь Пользователей системы с статистика |
103 | * users - static_workers | 105 | * users - static_workers |
104 | */ | 106 | */ |
105 | public function static_user() { | 107 | public function static_user() { |
106 | return $this->hasMany(Static_worker::class); | 108 | return $this->hasMany(Static_worker::class); |
107 | } | 109 | } |
108 | 110 | ||
109 | /* | 111 | /* |
110 | * Связь модели Юзеры (users) с моделью Группы пользователей (Group_works) | 112 | * Связь модели Юзеры (users) с моделью Группы пользователей (Group_works) |
111 | один-ко-многим | 113 | один-ко-многим |
112 | */ | 114 | */ |
113 | public function peoples() { | 115 | public function peoples() { |
114 | return $this->hasMany(Group_works::class); | 116 | return $this->hasMany(Group_works::class); |
115 | } | 117 | } |
116 | 118 | ||
117 | /* | 119 | /* |
118 | * Связь Модели Пользователей(Users) с Группами (Group_users) | 120 | * Связь Модели Пользователей(Users) с Группами (Group_users) |
119 | * users - group_users | 121 | * users - group_users |
120 | многие-ко-многим | 122 | многие-ко-многим |
121 | */ | 123 | */ |
122 | public function jobtitles() { | 124 | public function jobtitles() { |
123 | return $this->belongsToMany(Job_title::class, 'Workers', 'user_id', 'position_work'); | 125 | return $this->belongsToMany(Job_title::class, 'Workers', 'user_id', 'position_work'); |
124 | } | 126 | } |
125 | 127 | ||
126 | public function scopeActive($query) { | 128 | public function scopeActive($query) { |
127 | return $query->where('is_remove', '=', '0'); | 129 | return $query->where('is_remove', '=', '0'); |
128 | } | 130 | } |
129 | 131 | ||
132 | public function scopeBaseuser($query) { | ||
133 | return $query->where('is_bd', '=', '1'); | ||
134 | } | ||
135 | |||
136 | public function scopeRealuser($query) { | ||
137 | return $query->where('is_bd', '=', '0'); | ||
138 | } | ||
139 | |||
130 | } | 140 | } |
131 | 141 |
database/migrations/2023_10_11_085208_create_base_users_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('base_users', function (Blueprint $table) { | ||
17 | $table->id(); | ||
18 | $table->timestamps(); | ||
19 | }); | ||
20 | } | ||
21 | |||
22 | /** | ||
23 | * Reverse the migrations. | ||
24 | * | ||
25 | * @return void | ||
26 | */ | ||
27 | public function down() | ||
28 | { | ||
29 | Schema::dropIfExists('base_users'); | ||
30 | } | ||
31 | }; | ||
32 |
public/books-25.xlsx
No preview for this file type
resources/views/admin/groups/form.blade.php
1 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | 1 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> |
2 | <label class="block text-sm"> | 2 | <label class="block text-sm"> |
3 | <span class="text-gray-700 dark:text-gray-400">Имя группы</span> | 3 | <span class="text-gray-700 dark:text-gray-400">Имя группы</span> |
4 | <input name="name_group" id="name_group" | 4 | <input name="name_group" id="name_group" |
5 | 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" | 5 | 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" |
6 | placeholder="Название группы" value="{{ old('name_group') ?? $group->name_group ?? '' }}" | 6 | placeholder="Название группы" value="{{ old('name_group') ?? $group->name_group ?? '' }}" |
7 | /> | 7 | /> |
8 | @error('name_group') | 8 | @error('name_group') |
9 | <span class="text-xs text-red-600 dark:text-red-400"> | 9 | <span class="text-xs text-red-600 dark:text-red-400"> |
10 | {{ $message }} | 10 | {{ $message }} |
11 | </span> | 11 | </span> |
12 | @enderror | 12 | @enderror |
13 | </label><br> | 13 | </label><br> |
14 | <input type="hidden" name="user_id" id="user_id" value="{{ $editor }}"/> | 14 | <input type="hidden" name="user_id" id="user_id" value="{{ $editor }}"/> |
15 | 15 | ||
16 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | 16 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> |
17 | <div> | 17 | <div> |
18 | <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"> | 18 | <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"> |
19 | Сохранить | 19 | Сохранить |
20 | </button> | 20 | </button> |
21 | <a href="{{ route('admin.groups') }}" | ||
22 | 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" | ||
23 | style="display: -webkit-inline-box; height: 30px!important;" | ||
24 | >Назад</a> | ||
21 | </div> | 25 | </div> |
22 | </div> | 26 | </div> |
23 | 27 | ||
24 | <label class="block text-sm"> | 28 | <label class="block text-sm"> |
25 | <span class="text-gray-700 dark:text-gray-400">Пользователи системы</span> | 29 | <span class="text-gray-700 dark:text-gray-400">Пользователи системы</span> |
26 | </label> | 30 | </label> |
27 | <div> | 31 | <div> |
28 | <table class="w-full whitespace-no-wrap" > | 32 | <table class="w-full whitespace-no-wrap" > |
29 | <thead> | 33 | <thead> |
30 | <tr | 34 | <tr |
31 | 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" | 35 | 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" |
32 | > | 36 | > |
33 | <th class="px-4 py-3">№</th> | 37 | <th class="px-4 py-3">№</th> |
34 | <th class="px-4 py-3">Имя пользователя</th> | 38 | <th class="px-4 py-3">Имя пользователя</th> |
39 | <th class="px-4 py-3">Статус пользователя</th> | ||
35 | <th class="px-4 py-3">Добавленные в группу</th> | 40 | <th class="px-4 py-3">Добавленные в группу</th> |
36 | </tr> | 41 | </tr> |
37 | </thead> | 42 | </thead> |
38 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" id="showmore-list"> | 43 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" id="showmore-list"> |
39 | @foreach($users as $user) | 44 | @foreach($users as $user) |
40 | <tr class="text-gray-700 dark:text-gray-400" > | 45 | <tr class="text-gray-700 dark:text-gray-400" > |
41 | <td class="px-4 py-3"> | 46 | <td class="px-4 py-3"> |
42 | {{$user->id}} | 47 | {{$user->id}} |
43 | </td> | 48 | </td> |
44 | <td class="px-4 py-3"> | 49 | <td class="px-4 py-3"> |
45 | {{$user->name}} | 50 | {{$user->name}} |
46 | </td> | 51 | </td> |
52 | <td class="px-4 py-3 text-xs"> | ||
53 | <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"> | ||
54 | @if ($user->is_worker) | ||
55 | Работник | ||
56 | @else | ||
57 | Работодатель | ||
58 | @endif | ||
59 | </span> | ||
60 | @if ($user->admin) | ||
61 | <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"> | ||
62 | Администратор | ||
63 | </span> | ||
64 | @endif | ||
65 | @if ($user->is_bd) | ||
66 | <span 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"> | ||
67 | База данных | ||
68 | </span> | ||
69 | @endif | ||
70 | </td> | ||
47 | <td class="px-4 py-3"> | 71 | <td class="px-4 py-3"> |
48 | <input type="checkbox" id="user{{$user->id}}" name="usergroup[]" value="{{$user->id}}" @isset($group) <?php if ($user->ingroup->contains('id', $group->id)) {?>checked<? }?> @endisset/> | 72 | <input type="checkbox" id="user{{$user->id}}" name="usergroup[]" value="{{$user->id}}" @isset($group) <?php if ($user->ingroup->contains('id', $group->id)) {?>checked<? }?> @endisset/> |
49 | </td> | 73 | </td> |
50 | </tr> | 74 | </tr> |
51 | @endforeach | 75 | @endforeach |
52 | </tbody> | 76 | </tbody> |
53 | </table> | 77 | </table> |
54 | </div> | 78 | </div> |
55 | @if (!$hide) | 79 | @if (!$hide) |
56 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | 80 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> |
57 | <div> | 81 | <div> |
58 | <a id="showmore-triger" data-page="1" data-max="{{ $amt }}" 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 center"> | 82 | <a id="showmore-triger" data-page="1" data-max="{{ $amt }}" 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 center"> |
59 | Погрузить пользователей | 83 | Погрузить пользователей |
60 | </a> | 84 | </a> |
61 | </div> | 85 | </div> |
62 | </div> | 86 | </div> |
63 | @endif | 87 | @endif |
64 | </div> | 88 | </div> |
65 | 89 | ||
66 | 90 |
resources/views/admin/users/add.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Добавление пользователя в базу данных']) | |
2 | |||
3 | @section('content') | ||
4 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> | ||
5 | Добавление пользователя в базу данных | ||
6 | </h4> | ||
7 | <form method="POST" action="{{ route('admin.add-store-basedata') }}"> | ||
8 | @csrf | ||
9 | @include('admin.users.form') | ||
10 | </form> | ||
11 | @endsection | ||
12 |
resources/views/admin/users/edit.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование пользователя в базу данных']) | |
2 | |||
3 | @section('content') | ||
4 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> | ||
5 | Редактирование пользователя в базу данных | ||
6 | </h4> | ||
7 | <form method="POST" action="{{ route('admin.update-basedata', ['user' => $user->id]) }}"> | ||
8 | @csrf | ||
9 | @isset($user) | ||
10 | @method('PUT') | ||
11 | @endisset | ||
12 | |||
13 | @include('admin.users.form') | ||
14 | </form> | ||
15 | @endsection | ||
16 |
resources/views/admin/users/form.blade.php
File was created | 1 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | |
2 | <label class="block text-sm"> | ||
3 | <span class="text-gray-700 dark:text-gray-400">Имя/Псевдоним</span> | ||
4 | <input name="name" id="name" | ||
5 | 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" | ||
6 | placeholder="Имя/Псевдоним" value="{{ old('name') ?? $user->name ?? '' }}" | ||
7 | /> | ||
8 | @error('name') | ||
9 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
10 | {{ $message }} | ||
11 | </span> | ||
12 | @enderror | ||
13 | </label><br> | ||
14 | |||
15 | <label class="block text-sm"> | ||
16 | <span class="text-gray-700 dark:text-gray-400">Фамилия</span> | ||
17 | <input name="surname" id="surname" | ||
18 | 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" | ||
19 | placeholder="Фамилия" value="{{ old('surname') ?? $user->surname ?? '' }}" | ||
20 | /> | ||
21 | @error('surname') | ||
22 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
23 | {{ $message }} | ||
24 | </span> | ||
25 | @enderror | ||
26 | </label><br> | ||
27 | |||
28 | <label class="block text-sm"> | ||
29 | <span class="text-gray-700 dark:text-gray-400">Имя</span> | ||
30 | <input name="name_man" id="name_man" | ||
31 | 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" | ||
32 | placeholder="Имя" value="{{ old('name_man') ?? $user->name_man ?? '' }}" | ||
33 | /> | ||
34 | @error('name_man') | ||
35 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
36 | {{ $message }} | ||
37 | </span> | ||
38 | @enderror | ||
39 | </label><br> | ||
40 | |||
41 | <input type="hidden" name="is_worker" id="is_worker" value="1"/> | ||
42 | <input type="hidden" name="is_bd" id="is_bd" value="1"/> | ||
43 | <input type="hidden" name="admin" id="admin" value="0"/> | ||
44 | <input type="hidden" name="password" id="password" value="1234567890"/> | ||
45 | |||
46 | <label class="block text-sm"> | ||
47 | <span class="text-gray-700 dark:text-gray-400">Отчество</span> | ||
48 | <input name="surname2" id="surname2" | ||
49 | 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" | ||
50 | placeholder="Отчество" value="{{ old('surname2') ?? $user->surname2 ?? '' }}" | ||
51 | /> | ||
52 | @error('surname2') | ||
53 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
54 | {{ $message }} | ||
55 | </span> | ||
56 | @enderror | ||
57 | </label><br> | ||
58 | |||
59 | <label class="block text-sm"> | ||
60 | <span class="text-gray-700 dark:text-gray-400">Email</span> | ||
61 | <input name="email" id="email" | ||
62 | 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" | ||
63 | placeholder="Email" value="{{ old('email') ?? $user->email ?? '' }}" | ||
64 | /> | ||
65 | @error('email') | ||
66 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
67 | {{ $message }} | ||
68 | </span> | ||
69 | @enderror | ||
70 | </label><br> | ||
71 | |||
72 | <label class="block text-sm"> | ||
73 | <span class="text-gray-700 dark:text-gray-400">Телефон</span> | ||
74 | <input name="telephone" id="telephone" | ||
75 | 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" | ||
76 | placeholder="Телефон" value="{{ old('telephone') ?? $user->telephone ?? '' }}" | ||
77 | /> | ||
78 | @error('telephone') | ||
79 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
80 | {{ $message }} | ||
81 | </span> | ||
82 | @enderror | ||
83 | </label><br> | ||
84 | |||
85 | <!--<label class="block text-sm"> | ||
86 | |||
87 | <input type="hidden" name="page_worker" value="0" /> | ||
88 | <input name="page_worker" @php if (isset($user->workers->id)) echo "checked"; @endphp | ||
89 | 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 " | ||
90 | placeholder="" style="float:left; margin-right: 5px" type="checkbox" value="1" | ||
91 | /><p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Анкета </p><br> | ||
92 | |||
93 | </label><br>--> | ||
94 | |||
95 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
96 | <div> | ||
97 | <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"> | ||
98 | Сохранить | ||
99 | </button> | ||
100 | <a href="{{ route('admin.basedata') }}" | ||
101 | 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" | ||
102 | style="display: -webkit-inline-box; height: 30px!important;" | ||
103 | >Назад</a> | ||
104 | </div> | ||
105 | </div> | ||
106 | </div> | ||
107 |
resources/views/admin/users/index.blade.php
1 | @extends('layout.admin', ['title' => $title]) | 1 | @extends('layout.admin', ['title' => $title]) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.check_click', function () { | 6 | $(document).on('click', '.check_click', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var field = this_.attr('data-field'); | 9 | var field = this_.attr('data-field'); |
10 | var ajax_block = $('#ajax_block'); | 10 | var ajax_block = $('#ajax_block'); |
11 | var bool = 0; | 11 | var bool = 0; |
12 | var str_get = ''; | 12 | var str_get = ''; |
13 | 13 | ||
14 | if(this.checked){ | 14 | if(this.checked){ |
15 | bool = 1; | 15 | bool = 1; |
16 | } else { | 16 | } else { |
17 | bool = 0; | 17 | bool = 0; |
18 | } | 18 | } |
19 | console.log(field); | 19 | console.log(field); |
20 | str_get = "id=" + value + "&" + field + "=" + bool; | 20 | str_get = "id=" + value + "&" + field + "=" + bool; |
21 | console.log(str_get); | 21 | console.log(str_get); |
22 | 22 | ||
23 | $.ajax({ | 23 | $.ajax({ |
24 | type: "GET", | 24 | type: "GET", |
25 | url: "{{ url()->full()}}", | 25 | url: "{{ url()->full()}}", |
26 | data: str_get, | 26 | data: str_get, |
27 | success: function (data) { | 27 | success: function (data) { |
28 | console.log('Обновление таблицы пользователей '); | 28 | console.log('Обновление таблицы пользователей '); |
29 | //data = JSON.parse(data); | 29 | //data = JSON.parse(data); |
30 | //console.log(data); | 30 | //console.log(data); |
31 | ajax_block.html(data); | 31 | ajax_block.html(data); |
32 | }, | 32 | }, |
33 | headers: { | 33 | headers: { |
34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
35 | }, | 35 | }, |
36 | error: function (data) { | 36 | error: function (data) { |
37 | console.log('Error: ' + data); | 37 | console.log('Error: ' + data); |
38 | } | 38 | } |
39 | }); | 39 | }); |
40 | }); | 40 | }); |
41 | }); | 41 | }); |
42 | </script> | 42 | </script> |
43 | @endsection | 43 | @endsection |
44 | 44 | ||
45 | @section('search') | 45 | @section('search') |
46 | @include('admin.find') | 46 | @include('admin.find') |
47 | @endsection | 47 | @endsection |
48 | 48 | ||
49 | @section('content') | 49 | @section('content') |
50 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 50 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
51 | <div class="w-full overflow-x-auto"> | 51 | <div class="w-full overflow-x-auto"> |
52 | <table class="w-full whitespace-no-wrap"> | 52 | <table class="w-full whitespace-no-wrap"> |
53 | <thead> | 53 | <thead> |
54 | <tr | 54 | <tr |
55 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 55 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
56 | > | 56 | > |
57 | <th class="px-4 py-3">№</th> | 57 | <th class="px-4 py-3">№</th> |
58 | <th class="px-4 py-3">Имя</th> | 58 | <th class="px-4 py-3">Имя</th> |
59 | <th class="px-4 py-3">Email/логин</th> | 59 | <th class="px-4 py-3">Email/логин</th> |
60 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | 60 | <th class="px-4 py-3">Работодатель/работник/администратор</th> |
61 | <th class="px-4 py-3">Бан</th> | 61 | <th class="px-4 py-3">Бан</th> |
62 | <th class="px-4 py-3">Новый</th> | 62 | <th class="px-4 py-3">Новый</th> |
63 | @if ($id_admin == 1) | 63 | @if ($id_admin == 1) |
64 | <th class="px-4 py-3">Админ</th> | 64 | <th class="px-4 py-3">Админ</th> |
65 | @endif | 65 | @endif |
66 | <th class="px-4 py-3">Дата регистрации</th> | 66 | <th class="px-4 py-3">Дата регистрации</th> |
67 | </tr> | 67 | </tr> |
68 | </thead> | 68 | </thead> |
69 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 69 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
70 | @foreach($users as $user) | 70 | @foreach($users as $user) |
71 | <tr class="text-gray-700 dark:text-gray-400"> | 71 | <tr class="text-gray-700 dark:text-gray-400"> |
72 | <td class="px-4 py-3"> | 72 | <td class="px-4 py-3"> |
73 | {{$user->id}} | 73 | {{$user->id}} |
74 | </td> | 74 | </td> |
75 | <td class="px-4 py-3"> | 75 | <td class="px-4 py-3"> |
76 | <!--<div class="flex items-center text-sm"> | 76 | <!--<div class="flex items-center text-sm"> |
77 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 77 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
78 | <div | 78 | <div |
79 | class="absolute inset-0 rounded-full shadow-inner" | 79 | class="absolute inset-0 rounded-full shadow-inner" |
80 | aria-hidden="true" | 80 | aria-hidden="true" |
81 | ></div> | 81 | ></div> |
82 | </div> | 82 | </div> |
83 | <div> | 83 | <div> |
84 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | 84 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> |
85 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 85 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
86 | Все пользователи сайта | 86 | Все пользователи сайта |
87 | </p> | 87 | </p> |
88 | </div> | 88 | </div> |
89 | </div> | 89 | </div> |
90 | --> | 90 | --> |
91 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}">{{ $user->name }}</a> | 91 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}">{{ $user->name }}</a> |
92 | </td> | 92 | </td> |
93 | <td class="px-4 py-3 text-sm"> | 93 | <td class="px-4 py-3 text-sm"> |
94 | {{ $user->email }} | 94 | {{ $user->email }} |
95 | </td> | 95 | </td> |
96 | <td class="px-4 py-3 text-xs"> | 96 | <td class="px-4 py-3 text-xs"> |
97 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 97 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
98 | @if ($user->is_worker) | 98 | @if ($user->is_worker) |
99 | Работник | 99 | Работник |
100 | @else | 100 | @else |
101 | Работодатель | 101 | Работодатель |
102 | @endif | 102 | @endif |
103 | </span> | 103 | </span> |
104 | @if ($user->admin) | 104 | @if ($user->admin) |
105 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 105 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
106 | Администратор | 106 | Администратор |
107 | </span> | 107 | </span> |
108 | @endif | 108 | @endif |
109 | @if ($user->is_bd) | ||
110 | <span 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"> | ||
111 | База данных | ||
112 | </span> | ||
113 | @endif | ||
109 | </td> | 114 | </td> |
110 | <td class="px-4 py-3 text-sm"> | 115 | <td class="px-4 py-3 text-sm"> |
111 | @if ($user->id > 1) | 116 | @if ($user->id > 1) |
112 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 117 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
113 | @endif | 118 | @endif |
114 | </td> | 119 | </td> |
115 | 120 | ||
116 | <td class="px-4 py-3 text-sm"> | 121 | <td class="px-4 py-3 text-sm"> |
117 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | 122 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> |
118 | </td> | 123 | </td> |
119 | 124 | ||
120 | @if ($id_admin == 1) | 125 | @if ($id_admin == 1) |
121 | <td class="px-4 py-3 text-sm"> | 126 | <td class="px-4 py-3 text-sm"> |
122 | @if ($user->id > 1) | 127 | @if ($user->id > 1) |
123 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> | 128 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> |
124 | @endif | 129 | @endif |
125 | </td> | 130 | </td> |
126 | @endif | 131 | @endif |
127 | 132 | ||
128 | <td class="px-4 py-3 text-sm"> | 133 | <td class="px-4 py-3 text-sm"> |
129 | {{ date('d.m.Y', strtotime($user->created_at)) }} | 134 | {{ date('d.m.Y', strtotime($user->created_at)) }} |
130 | </td> | 135 | </td> |
131 | </tr> | 136 | </tr> |
132 | @endforeach | 137 | @endforeach |
133 | </tbody> | 138 | </tbody> |
134 | </table> | 139 | </table> |
135 | </div> | 140 | </div> |
136 | 141 | ||
137 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 142 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
138 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | 143 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> |
139 | <?=$users->links('admin.pagginate'); ?> | 144 | <?=$users->links('admin.pagginate'); ?> |
140 | </div> | 145 | </div> |
141 | 146 | ||
142 | 147 | ||
143 | <!--<div | 148 | <!--<div |
144 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | 149 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" |
145 | > | 150 | > |
146 | <span class="flex items-center col-span-3"> | 151 | <span class="flex items-center col-span-3"> |
147 | Showing 21-30 of 100 | 152 | Showing 21-30 of 100 |
148 | </span> | 153 | </span> |
149 | <span class="col-span-2"></span> | 154 | <span class="col-span-2"></span> |
150 | 155 | ||
151 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 156 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
152 | <nav aria-label="Table navigation"> | 157 | <nav aria-label="Table navigation"> |
153 | <ul class="inline-flex items-center"> | 158 | <ul class="inline-flex items-center"> |
154 | <li> | 159 | <li> |
155 | <button | 160 | <button |
156 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 161 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
157 | aria-label="Previous" | 162 | aria-label="Previous" |
158 | > | 163 | > |
159 | <svg | 164 | <svg |
160 | aria-hidden="true" | 165 | aria-hidden="true" |
161 | class="w-4 h-4 fill-current" | 166 | class="w-4 h-4 fill-current" |
162 | viewBox="0 0 20 20" | 167 | viewBox="0 0 20 20" |
163 | > | 168 | > |
164 | <path | 169 | <path |
165 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | 170 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" |
166 | clip-rule="evenodd" | 171 | clip-rule="evenodd" |
167 | fill-rule="evenodd" | 172 | fill-rule="evenodd" |
168 | ></path> | 173 | ></path> |
169 | </svg> | 174 | </svg> |
170 | </button> | 175 | </button> |
171 | </li> | 176 | </li> |
172 | <li> | 177 | <li> |
173 | <button | 178 | <button |
174 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 179 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
175 | > | 180 | > |
176 | 1 | 181 | 1 |
177 | </button> | 182 | </button> |
178 | </li> | 183 | </li> |
179 | <li> | 184 | <li> |
180 | <button | 185 | <button |
181 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 186 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
182 | > | 187 | > |
183 | 2 | 188 | 2 |
184 | </button> | 189 | </button> |
185 | </li> | 190 | </li> |
186 | <li> | 191 | <li> |
187 | <button | 192 | <button |
188 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | 193 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" |
189 | > | 194 | > |
190 | 3 | 195 | 3 |
191 | </button> | 196 | </button> |
192 | </li> | 197 | </li> |
193 | <li> | 198 | <li> |
194 | <button | 199 | <button |
195 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 200 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
196 | > | 201 | > |
197 | 4 | 202 | 4 |
198 | </button> | 203 | </button> |
199 | </li> | 204 | </li> |
200 | <li> | 205 | <li> |
201 | <span class="px-3 py-1">...</span> | 206 | <span class="px-3 py-1">...</span> |
202 | </li> | 207 | </li> |
203 | <li> | 208 | <li> |
204 | <button | 209 | <button |
205 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 210 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
206 | > | 211 | > |
207 | 8 | 212 | 8 |
208 | </button> | 213 | </button> |
209 | </li> | 214 | </li> |
210 | <li> | 215 | <li> |
211 | <button | 216 | <button |
212 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 217 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
213 | > | 218 | > |
214 | 9 | 219 | 9 |
215 | </button> | 220 | </button> |
216 | </li> | 221 | </li> |
217 | <li> | 222 | <li> |
218 | <button | 223 | <button |
219 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 224 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
220 | aria-label="Next" | 225 | aria-label="Next" |
221 | > | 226 | > |
222 | <svg | 227 | <svg |
223 | class="w-4 h-4 fill-current" | 228 | class="w-4 h-4 fill-current" |
224 | aria-hidden="true" | 229 | aria-hidden="true" |
225 | viewBox="0 0 20 20" | 230 | viewBox="0 0 20 20" |
226 | > | 231 | > |
227 | <path | 232 | <path |
228 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | 233 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" |
229 | clip-rule="evenodd" | 234 | clip-rule="evenodd" |
230 | fill-rule="evenodd" | 235 | fill-rule="evenodd" |
231 | ></path> | 236 | ></path> |
232 | </svg> | 237 | </svg> |
233 | </button> | 238 | </button> |
234 | </li> | 239 | </li> |
235 | </ul> | 240 | </ul> |
236 | </nav> | 241 | </nav> |
237 | </span> | 242 | </span> |
238 | </div>--> | 243 | </div>--> |
239 | </div> | 244 | </div> |
240 | 245 | ||
241 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | 246 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> |
242 | 247 | ||
243 | 248 | ||
244 | @endsection | 249 | @endsection |
245 | 250 |
resources/views/admin/users/index_bd.blade.php
File was created | 1 | @extends('layout.admin', ['title' => $title]) | |
2 | |||
3 | @section('script') | ||
4 | <script> | ||
5 | $(document).ready(function() { | ||
6 | $(document).on('click', '.check_click', function () { | ||
7 | var this_ = $(this); | ||
8 | var value = this_.val(); | ||
9 | var field = this_.attr('data-field'); | ||
10 | var ajax_block = $('#ajax_block'); | ||
11 | var bool = 0; | ||
12 | var str_get = ''; | ||
13 | |||
14 | if(this.checked){ | ||
15 | bool = 1; | ||
16 | } else { | ||
17 | bool = 0; | ||
18 | } | ||
19 | console.log(field); | ||
20 | str_get = "id=" + value + "&" + field + "=" + bool; | ||
21 | console.log(str_get); | ||
22 | |||
23 | $.ajax({ | ||
24 | type: "GET", | ||
25 | url: "{{ url()->full()}}", | ||
26 | data: str_get, | ||
27 | success: function (data) { | ||
28 | console.log('Обновление таблицы пользователей '); | ||
29 | //data = JSON.parse(data); | ||
30 | //console.log(data); | ||
31 | ajax_block.html(data); | ||
32 | }, | ||
33 | headers: { | ||
34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
35 | }, | ||
36 | error: function (data) { | ||
37 | console.log('Error: ' + data); | ||
38 | } | ||
39 | }); | ||
40 | }); | ||
41 | }); | ||
42 | </script> | ||
43 | @endsection | ||
44 | |||
45 | @section('search') | ||
46 | @include('admin.find') | ||
47 | @endsection | ||
48 | |||
49 | @section('content') | ||
50 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | ||
51 | <div class="w-full overflow-x-auto"> | ||
52 | <a 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" href="{{ route('admin.add-basedata') }}">Добавить пользователя</a><br><br> | ||
53 | <table class="w-full whitespace-no-wrap"> | ||
54 | <thead> | ||
55 | <tr | ||
56 | 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" | ||
57 | > | ||
58 | <th class="px-4 py-3">№</th> | ||
59 | <th class="px-4 py-3">Имя</th> | ||
60 | <th class="px-4 py-3">Email/телефон</th> | ||
61 | <th class="px-4 py-3">Статус</th> | ||
62 | <th class="px-4 py-3">Анкета</th> | ||
63 | <th class="px-4 py-3">Дата регистрации</th> | ||
64 | <th class="px-4 py-3">Изменить</th> | ||
65 | </tr> | ||
66 | </thead> | ||
67 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
68 | @foreach($users as $user) | ||
69 | <tr class="text-gray-700 dark:text-gray-400"> | ||
70 | <td class="px-4 py-3"> | ||
71 | {{$user->id}} | ||
72 | </td> | ||
73 | <td class="px-4 py-3"> | ||
74 | <!--<div class="flex items-center text-sm"> | ||
75 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
76 | <div | ||
77 | class="absolute inset-0 rounded-full shadow-inner" | ||
78 | aria-hidden="true" | ||
79 | ></div> | ||
80 | </div> | ||
81 | <div> | ||
82 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | ||
83 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
84 | Все пользователи сайта | ||
85 | </p> | ||
86 | </div> | ||
87 | </div> | ||
88 | --> | ||
89 | <!--<a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}"></a>--> | ||
90 | |||
91 | {{ $user->name }} | ||
92 | </td> | ||
93 | |||
94 | <td class="px-4 py-3"> | ||
95 | <div class="flex items-center text-sm"> | ||
96 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
97 | <div | ||
98 | class="absolute inset-0 rounded-full shadow-inner" | ||
99 | aria-hidden="true" | ||
100 | ></div> | ||
101 | </div>--> | ||
102 | <div> | ||
103 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | ||
104 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
105 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | ||
106 | </p> | ||
107 | </div> | ||
108 | </div> | ||
109 | </td> | ||
110 | |||
111 | <td class="px-4 py-3 text-xs"> | ||
112 | <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"> | ||
113 | @if ($user->is_worker) | ||
114 | Работник | ||
115 | @else | ||
116 | Работодатель | ||
117 | @endif | ||
118 | </span> | ||
119 | @if ($user->admin) | ||
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"> | ||
121 | Администратор | ||
122 | </span> | ||
123 | @endif | ||
124 | @if ($user->is_bd) | ||
125 | <span 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"> | ||
126 | База данных | ||
127 | </span> | ||
128 | @endif | ||
129 | </td> | ||
130 | |||
131 | <td class="px-4 py-3 text-sm"> | ||
132 | @if (isset($user->workers[0]->id)) | ||
133 | <a href="{{ route('admin.worker-profile-edit', ['worker' => $user->workers[0]->id]) }}">Править</a> | | ||
134 | <a href="{{ route('admin.doc-basedata', ['user' => $user->id]) }}">Скачать</a> | ||
135 | @endif | ||
136 | </td> | ||
137 | |||
138 | <td class="px-4 py-3 text-sm"> | ||
139 | {{ date('d.m.Y', strtotime($user->created_at)) }} | ||
140 | </td> | ||
141 | |||
142 | <td class="px-4 py-3 text-sm_"> | ||
143 | <form action="{{ route('admin.delete-basedata', ['user' => $user->id]) }}" method="POST"> | ||
144 | <a href="{{ route('admin.edit-basedata', ['user' => $user->id]) }}">Изменить</a> | | ||
145 | @csrf | ||
146 | @method('DELETE') | ||
147 | <input class="btn btn-danger" type="submit" value="Удалить"/> | ||
148 | </form> | ||
149 | </td> | ||
150 | </tr> | ||
151 | @endforeach | ||
152 | </tbody> | ||
153 | </table> | ||
154 | </div> | ||
155 | |||
156 | <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"> | ||
157 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
158 | <?=$users->links('admin.pagginate'); ?> | ||
159 | </div> | ||
160 | |||
161 | |||
162 | <!--<div | ||
163 | 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" | ||
164 | > | ||
165 | <span class="flex items-center col-span-3"> | ||
166 | Showing 21-30 of 100 | ||
167 | </span> | ||
168 | <span class="col-span-2"></span> | ||
169 | |||
170 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | ||
171 | <nav aria-label="Table navigation"> | ||
172 | <ul class="inline-flex items-center"> | ||
173 | <li> | ||
174 | <button | ||
175 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | ||
176 | aria-label="Previous" | ||
177 | > | ||
178 | <svg | ||
179 | aria-hidden="true" | ||
180 | class="w-4 h-4 fill-current" | ||
181 | viewBox="0 0 20 20" | ||
182 | > | ||
183 | <path | ||
184 | 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" | ||
185 | clip-rule="evenodd" | ||
186 | fill-rule="evenodd" | ||
187 | ></path> | ||
188 | </svg> | ||
189 | </button> | ||
190 | </li> | ||
191 | <li> | ||
192 | <button | ||
193 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
194 | > | ||
195 | 1 | ||
196 | </button> | ||
197 | </li> | ||
198 | <li> | ||
199 | <button | ||
200 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
201 | > | ||
202 | 2 | ||
203 | </button> | ||
204 | </li> | ||
205 | <li> | ||
206 | <button | ||
207 | 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" | ||
208 | > | ||
209 | 3 | ||
210 | </button> | ||
211 | </li> | ||
212 | <li> | ||
213 | <button | ||
214 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
215 | > | ||
216 | 4 | ||
217 | </button> | ||
218 | </li> | ||
219 | <li> | ||
220 | <span class="px-3 py-1">...</span> | ||
221 | </li> | ||
222 | <li> | ||
223 | <button | ||
224 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
225 | > | ||
226 | 8 | ||
227 | </button> | ||
228 | </li> | ||
229 | <li> | ||
230 | <button | ||
231 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
232 | > | ||
233 | 9 | ||
234 | </button> | ||
235 | </li> | ||
236 | <li> | ||
237 | <button | ||
238 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | ||
239 | aria-label="Next" | ||
240 | > | ||
241 | <svg | ||
242 | class="w-4 h-4 fill-current" | ||
243 | aria-hidden="true" | ||
244 | viewBox="0 0 20 20" | ||
245 | > | ||
246 | <path | ||
247 | 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" | ||
248 | clip-rule="evenodd" | ||
249 | fill-rule="evenodd" | ||
250 | ></path> | ||
251 | </svg> | ||
252 | </button> | ||
253 | </li> | ||
254 | </ul> | ||
255 | </nav> | ||
256 | </span> | ||
257 | </div>--> | ||
258 | </div> | ||
259 | |||
260 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | ||
261 | |||
262 | |||
263 | @endsection | ||
264 |
resources/views/admin/users/index_bd_ajax.blade.php
File was created | 1 | <div class="w-full overflow-x-auto"> | |
2 | <table class="w-full whitespace-no-wrap"> | ||
3 | <thead> | ||
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" | ||
6 | > | ||
7 | <th class="px-4 py-3">№</th> | ||
8 | <th class="px-4 py-3">Имя</th> | ||
9 | <th class="px-4 py-3">Email/логин</th> | ||
10 | <th class="px-4 py-3">Статус</th> | ||
11 | <th class="px-4 py-3">Дата регистрации</th> | ||
12 | </tr> | ||
13 | </thead> | ||
14 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
15 | @foreach($users as $user) | ||
16 | <tr class="text-gray-700 dark:text-gray-400"> | ||
17 | <td class="px-4 py-3"> | ||
18 | {{$user->id}} | ||
19 | </td> | ||
20 | <td class="px-4 py-3"> | ||
21 | <!--<div class="flex items-center text-sm"> | ||
22 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
23 | <div | ||
24 | class="absolute inset-0 rounded-full shadow-inner" | ||
25 | aria-hidden="true" | ||
26 | ></div> | ||
27 | </div> | ||
28 | <div> | ||
29 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | ||
30 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
31 | Все пользователи сайта | ||
32 | </p> | ||
33 | </div> | ||
34 | </div> | ||
35 | --> | ||
36 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}">{{ $user->name }}</a> | ||
37 | </td> | ||
38 | <td class="px-4 py-3"> | ||
39 | <div class="flex items-center text-sm"> | ||
40 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
41 | <div | ||
42 | class="absolute inset-0 rounded-full shadow-inner" | ||
43 | aria-hidden="true" | ||
44 | ></div> | ||
45 | </div>--> | ||
46 | <div> | ||
47 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | ||
48 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
49 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | ||
50 | </p> | ||
51 | </div> | ||
52 | </div> | ||
53 | </td> | ||
54 | <td class="px-4 py-3 text-xs"> | ||
55 | <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"> | ||
56 | @if ($user->is_worker) | ||
57 | Работник | ||
58 | @else | ||
59 | Работодатель | ||
60 | @endif | ||
61 | </span> | ||
62 | @if ($user->admin) | ||
63 | <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"> | ||
64 | Администратор | ||
65 | </span> | ||
66 | @endif | ||
67 | @if ($user->is_bd) | ||
68 | <span 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"> | ||
69 | База данных | ||
70 | </span> | ||
71 | @endif | ||
72 | </td> | ||
73 | |||
74 | <td class="px-4 py-3 text-sm"> | ||
75 | {{ date('d.m.Y', strtotime($user->created_at)) }} | ||
76 | </td> | ||
77 | </tr> | ||
78 | @endforeach | ||
79 | </tbody> | ||
80 | </table> | ||
81 | </div> | ||
82 | |||
83 | <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"> | ||
84 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
85 | <?=$users->links('admin.pagginate'); ?> | ||
86 | </div> | ||
87 |
resources/views/admin/worker/add.blade.php
File was created | 1 | <?php | |
2 | use Illuminate\Support\Facades\Storage; | ||
3 | ?> | ||
4 | @extends('layout.admin', ['title' => 'Админка - Добавление резюме соискателя']) | ||
5 | |||
6 | @section('content') | ||
7 | <form method="POST" action="{{ route('admin.worker-profile-store', ['user' => $user->id]) }}"> | ||
8 | @csrf | ||
9 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | ||
10 | <div class="tabs"> | ||
11 | <input type="hidden" id="user_id" name="user_id" value="{{ $user->id }}"/> | ||
12 | <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked> | ||
13 | <label for="tab-btn-1">Общие настройки</label> | ||
14 | <input type="radio" name="tab-btn" id="tab-btn-2" value=""> | ||
15 | <label for="tab-btn-2">Анкета</label> | ||
16 | <!--<input type="radio" name="tab-btn" id="tab-btn-3" value=""> | ||
17 | <label for="tab-btn-3">Вкладка 3</label>--> | ||
18 | <div id="content-1"> | ||
19 | <label class="block text-sm"> | ||
20 | <span class="text-gray-700 dark:text-gray-400">Должность соискателя</span> | ||
21 | <select name="position_work" id="position_work" 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"> | ||
22 | @foreach($job_titles as $job) | ||
23 | <option value="{{ $job->id }}" | ||
24 | >{{ $job->name }} ({{ $job->id }})</option> | ||
25 | @endforeach | ||
26 | </select> | ||
27 | @error('position_work') | ||
28 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
29 | {{ $message }} | ||
30 | </span> | ||
31 | @enderror | ||
32 | </label><br> | ||
33 | |||
34 | <label class="block text-sm"> | ||
35 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Избранный кандидат </p> | ||
36 | <input type="hidden" name="favorite_user" value="0" /> | ||
37 | <input name="favorite_user" | ||
38 | 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 " | ||
39 | placeholder="" type="checkbox" value="1" | ||
40 | /><br> | ||
41 | |||
42 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Срочный кандидат</p> | ||
43 | <input type="hidden" name="sroch_user" value="0" /> | ||
44 | <input name="sroch_user" id="sroch_user" | ||
45 | 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 " | ||
46 | placeholder="" type="checkbox" value="1" | ||
47 | /><br> | ||
48 | |||
49 | </label> | ||
50 | |||
51 | <label class="block text-sm"> | ||
52 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Анкета действительна до <span style="color:#333">{{ $time_end_anketa }}</span></p> | ||
53 | |||
54 | </label><br> | ||
55 | </div> | ||
56 | <div id="content-2"> | ||
57 | <label class="block text-sm"> | ||
58 | <span class="text-gray-700 dark:text-gray-400">Email</span> | ||
59 | <input name="email" id="email" | ||
60 | 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 | placeholder="Почта" value="{{ old('email') ?? '' }}" | ||
62 | /> | ||
63 | @error('email') | ||
64 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
65 | {{ $message }} | ||
66 | </span> | ||
67 | @enderror | ||
68 | </label><br> | ||
69 | |||
70 | <label class="block text-sm"> | ||
71 | <span class="text-gray-700 dark:text-gray-400">Телефон</span> | ||
72 | <input name="telephone" id="telephone" | ||
73 | 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 | placeholder="Телефон" value="{{ old('telephone') ?? '' }}" | ||
75 | /> | ||
76 | @error('telephone') | ||
77 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
78 | {{ $message }} | ||
79 | </span> | ||
80 | @enderror | ||
81 | </label><br> | ||
82 | |||
83 | <label class="block text-sm"> | ||
84 | <span class="text-gray-700 dark:text-gray-400">Адрес</span> | ||
85 | <input name="address" id="address" | ||
86 | 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" | ||
87 | placeholder="Адрес" value="{{ old('address') ?? '' }}" | ||
88 | /> | ||
89 | @error('address') | ||
90 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
91 | {{ $message }} | ||
92 | </span> | ||
93 | @enderror | ||
94 | </label><br> | ||
95 | |||
96 | <label class="block text-sm"> | ||
97 | <span class="text-gray-700 dark:text-gray-400">Город</span> | ||
98 | <input name="city" id="city" | ||
99 | 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" | ||
100 | placeholder="Город" value="{{ old('city') ?? '' }}" | ||
101 | /> | ||
102 | @error('city') | ||
103 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
104 | {{ $message }} | ||
105 | </span> | ||
106 | @enderror | ||
107 | </label><br> | ||
108 | |||
109 | <label class="block text-sm"> | ||
110 | <span class="text-gray-700 dark:text-gray-400">Согласие на рассылку</span> | ||
111 | <input type="hidden" name="email_data" value="0" /> | ||
112 | <input name="email_data" id="email_data" checked | ||
113 | placeholder="" | ||
114 | type="checkbox" | ||
115 | value="1" | ||
116 | /> | ||
117 | </label> | ||
118 | |||
119 | <label class="block mt-4 text-sm"> | ||
120 | <span class="text-gray-700 dark:text-gray-400">Об соискателе</span> | ||
121 | <textarea name="text" id="text" | ||
122 | 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" | ||
123 | rows="3" | ||
124 | placeholder="О соискателе" | ||
125 | >{{ old('text') ?? '' }}</textarea> | ||
126 | </label> | ||
127 | </div> | ||
128 | <div id="content-3"> | ||
129 | |||
130 | </div> | ||
131 | </div><br> | ||
132 | |||
133 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
134 | <div> | ||
135 | <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"> | ||
136 | Сохранить | ||
137 | </button> | ||
138 | <a href="{{ route('admin.basedata') }}" | ||
139 | 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" | ||
140 | style="display: -webkit-inline-box; height: 30px!important;" | ||
141 | >Назад</a> | ||
142 | </div> | ||
143 | </div> | ||
144 | </div> | ||
145 | </form> | ||
146 | <!-- | ||
147 | <label class="block mt-4 text-sm"> | ||
148 | <span class="text-gray-700 dark:text-gray-400"> | ||
149 | Requested Limit | ||
150 | </span> | ||
151 | <select | ||
152 | 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" | ||
153 | > | ||
154 | <option>$1,000</option> | ||
155 | <option>$5,000</option> | ||
156 | <option>$10,000</option> | ||
157 | <option>$25,000</option> | ||
158 | </select> | ||
159 | </label> | ||
160 | |||
161 | <label class="block mt-4 text-sm"> | ||
162 | <span class="text-gray-700 dark:text-gray-400"> | ||
163 | Multiselect | ||
164 | </span> | ||
165 | <select | ||
166 | 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" | ||
167 | multiple | ||
168 | > | ||
169 | <option>Option 1</option> | ||
170 | <option>Option 2</option> | ||
171 | <option>Option 3</option> | ||
172 | <option>Option 4</option> | ||
173 | <option>Option 5</option> | ||
174 | </select> | ||
175 | </label> | ||
176 | |||
177 | <label class="block mt-4 text-sm"> | ||
178 | <span class="text-gray-700 dark:text-gray-400">Message</span> | ||
179 | <textarea | ||
180 | 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" | ||
181 | rows="3" | ||
182 | placeholder="Enter some long form content." | ||
183 | ></textarea> | ||
184 | </label> | ||
185 | |||
186 | <div class="flex mt-6 text-sm"> | ||
187 | <label class="flex items-center dark:text-gray-400"> | ||
188 | <input | ||
189 | type="checkbox" | ||
190 | class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | ||
191 | /> | ||
192 | <span class="ml-2"> | ||
193 | I agree to the | ||
194 | <span class="underline">privacy policy</span> | ||
195 | </span> | ||
196 | </label> | ||
197 | </div> | ||
198 | </div> | ||
199 | |||
200 | <!-- Validation inputs --> | ||
201 | <!--<h4 | ||
202 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | ||
203 | > | ||
204 | Validation | ||
205 | </h4> | ||
206 | <div | ||
207 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | ||
208 | > | ||
209 | <!-- Invalid input --> | ||
210 | <!--<label class="block text-sm"> | ||
211 | <span class="text-gray-700 dark:text-gray-400"> | ||
212 | Invalid input | ||
213 | </span> | ||
214 | <input | ||
215 | 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" | ||
216 | placeholder="Jane Doe" | ||
217 | /> | ||
218 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
219 | Your password is too short. | ||
220 | </span> | ||
221 | </label> | ||
222 | |||
223 | <!-- Valid input --> | ||
224 | <!--<label class="block mt-4 text-sm"> | ||
225 | <span class="text-gray-700 dark:text-gray-400"> | ||
226 | Valid input | ||
227 | </span> | ||
228 | <input | ||
229 | 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" | ||
230 | placeholder="Jane Doe" | ||
231 | /> | ||
232 | <span class="text-xs text-green-600 dark:text-green-400"> | ||
233 | Your password is strong. | ||
234 | </span> | ||
235 | </label> | ||
236 | |||
237 | <!-- Helper text --> | ||
238 | <!--<label class="block mt-4 text-sm"> | ||
239 | <span class="text-gray-700 dark:text-gray-400"> | ||
240 | Helper text | ||
241 | </span> | ||
242 | <input | ||
243 | 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" | ||
244 | placeholder="Jane Doe" | ||
245 | /> | ||
246 | <span class="text-xs text-gray-600 dark:text-gray-400"> | ||
247 | Your password must be at least 6 characters long. | ||
248 | </span> | ||
249 | </label> | ||
250 | </div> | ||
251 | |||
252 | <!-- Inputs with icons --> | ||
253 | <!--<h4 | ||
254 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | ||
255 | > | ||
256 | Icons | ||
257 | </h4> | ||
258 | <div | ||
259 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | ||
260 | > | ||
261 | <label class="block text-sm"> | ||
262 | <span class="text-gray-700 dark:text-gray-400">Icon left</span> | ||
263 | <!-- focus-within sets the color for the icon when input is focused --> | ||
264 | <!--<div | ||
265 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" | ||
266 | > | ||
267 | <input | ||
268 | 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" | ||
269 | placeholder="Jane Doe" | ||
270 | /> | ||
271 | <div | ||
272 | class="absolute inset-y-0 flex items-center ml-3 pointer-events-none" | ||
273 | > | ||
274 | <svg | ||
275 | class="w-5 h-5" | ||
276 | aria-hidden="true" | ||
277 | fill="none" | ||
278 | stroke-linecap="round" | ||
279 | stroke-linejoin="round" | ||
280 | stroke-width="2" | ||
281 | viewBox="0 0 24 24" | ||
282 | stroke="currentColor" | ||
283 | > | ||
284 | <path | ||
285 | 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" | ||
286 | ></path> | ||
287 | </svg> | ||
288 | </div> | ||
289 | </div> | ||
290 | </label> | ||
291 | |||
292 | <label class="block mt-4 text-sm"> | ||
293 | <span class="text-gray-700 dark:text-gray-400">Icon right</span> | ||
294 | <!-- focus-within sets the color for the icon when input is focused --> | ||
295 | <!--<div | ||
296 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" | ||
297 | > | ||
298 | <input | ||
299 | 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" | ||
300 | placeholder="Jane Doe" | ||
301 | /> | ||
302 | <div | ||
303 | class="absolute inset-y-0 right-0 flex items-center mr-3 pointer-events-none" | ||
304 | > | ||
305 | <svg | ||
306 | class="w-5 h-5" | ||
307 | aria-hidden="true" | ||
308 | fill="none" | ||
309 | stroke-linecap="round" | ||
310 | stroke-linejoin="round" | ||
311 | stroke-width="2" | ||
312 | viewBox="0 0 24 24" | ||
313 | stroke="currentColor" | ||
314 | > | ||
315 | <path | ||
316 | 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" | ||
317 | ></path> | ||
318 | </svg> | ||
319 | </div> | ||
320 | </div> | ||
321 | </label> | ||
322 | </div> | ||
323 | |||
324 | <!-- Inputs with buttons --> | ||
325 | <!--<h4 | ||
326 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | ||
327 | > | ||
328 | Buttons | ||
329 | </h4> | ||
330 | <div | ||
331 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | ||
332 | > | ||
333 | <label class="block text-sm"> | ||
334 | <span class="text-gray-700 dark:text-gray-400"> | ||
335 | Button left | ||
336 | </span> | ||
337 | <div class="relative"> | ||
338 | <input | ||
339 | 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" | ||
340 | placeholder="Jane Doe" | ||
341 | /> | ||
342 | <button | ||
343 | 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" | ||
344 | > | ||
345 | Click | ||
346 | </button> | ||
347 | </div> | ||
348 | </label> | ||
349 | |||
350 | <label class="block mt-4 text-sm"> | ||
351 | <span class="text-gray-700 dark:text-gray-400"> | ||
352 | Button right | ||
353 | </span> | ||
354 | <div | ||
355 | class="relative text-gray-500 focus-within:text-purple-600" | ||
356 | > | ||
357 | <input | ||
358 | 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" | ||
359 | placeholder="Jane Doe" | ||
360 | /> | ||
361 | <button | ||
362 | 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" | ||
363 | > | ||
364 | Click | ||
365 | </button> | ||
366 | </div> | ||
367 | </label> | ||
368 | </div>--> | ||
369 | @endsection | ||
370 |
resources/views/admin/worker/edit_bd.blade.php
File was created | 1 | <?php | |
2 | use Illuminate\Support\Facades\Storage; | ||
3 | ?> | ||
4 | @extends('layout.admin', ['title' => 'Админка - Редактирование соискателя']) | ||
5 | |||
6 | @section('content') | ||
7 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> | ||
8 | Соискатель-пользователь: {{$worker->users->surname}} {{$worker->users->name_man}} {{$worker->users->surname2}} ({{$worker->user_id}})"</a> | ||
9 | </h4> | ||
10 | <form method="POST" action=""> | ||
11 | @csrf | ||
12 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | ||
13 | <div class="tabs"> | ||
14 | <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked> | ||
15 | <label for="tab-btn-1">Общие настройки</label> | ||
16 | <input type="radio" name="tab-btn" id="tab-btn-2" value=""> | ||
17 | <label for="tab-btn-2">Анкета</label> | ||
18 | <!--<input type="radio" name="tab-btn" id="tab-btn-3" value=""> | ||
19 | <label for="tab-btn-3">Вкладка 3</label>--> | ||
20 | <div id="content-1"> | ||
21 | <label class="block text-sm"> | ||
22 | <span class="text-gray-700 dark:text-gray-400">Должность соискателя</span> | ||
23 | <select name="position_work" id="position_work" 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"> | ||
24 | @foreach($job_titles as $job) | ||
25 | <option value="{{ $job->id }}" | ||
26 | @if($worker->position_work == $job->id) | ||
27 | selected | ||
28 | @endif | ||
29 | >{{ $job->name }} ({{ $job->id }})</option> | ||
30 | @endforeach | ||
31 | </select> | ||
32 | @error('position_work') | ||
33 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
34 | {{ $message }} | ||
35 | </span> | ||
36 | @enderror | ||
37 | </label><br> | ||
38 | |||
39 | <label class="block text-sm"> | ||
40 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Избранный кандидат </p> | ||
41 | <input type="hidden" name="favorite_user" value="0" /> | ||
42 | <input name="favorite_user" <? if ($worker->favorite_user) echo "checked";?> | ||
43 | 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 " | ||
44 | placeholder="" type="checkbox" value="1" | ||
45 | /><br> | ||
46 | |||
47 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Срочный кандидат</p> | ||
48 | <input type="hidden" name="sroch_user" value="0" /> | ||
49 | <input name="sroch_user" id="sroch_user" <? if ($worker->sroch_user) echo "checked";?> | ||
50 | 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 " | ||
51 | placeholder="" type="checkbox" value="1" | ||
52 | /><br> | ||
53 | |||
54 | </label> | ||
55 | |||
56 | <label class="block text-sm"> | ||
57 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Анкета действительна до <span style="color:#333">{{ $time_end_anketa }}</span></p> | ||
58 | |||
59 | </label><br> | ||
60 | </div> | ||
61 | <div id="content-2"> | ||
62 | <label class="block text-sm"> | ||
63 | <span class="text-gray-700 dark:text-gray-400">Email</span> | ||
64 | <input name="email" id="email" | ||
65 | 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" | ||
66 | placeholder="Почта" value="{{ old('email') ?? $worker->email ?? '' }}" | ||
67 | /> | ||
68 | @error('email') | ||
69 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
70 | {{ $message }} | ||
71 | </span> | ||
72 | @enderror | ||
73 | </label><br> | ||
74 | |||
75 | <label class="block text-sm"> | ||
76 | <span class="text-gray-700 dark:text-gray-400">Телефон</span> | ||
77 | <input name="telephone" id="telephone" | ||
78 | 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" | ||
79 | placeholder="Телефон" value="{{ old('telephone') ?? $worker->telephone ?? '' }}" | ||
80 | /> | ||
81 | @error('telephone') | ||
82 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
83 | {{ $message }} | ||
84 | </span> | ||
85 | @enderror | ||
86 | </label><br> | ||
87 | |||
88 | <label class="block text-sm"> | ||
89 | <span class="text-gray-700 dark:text-gray-400">Адрес</span> | ||
90 | <input name="address" id="address" | ||
91 | 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" | ||
92 | placeholder="Адрес" value="{{ old('address') ?? $worker->address ?? '' }}" | ||
93 | /> | ||
94 | @error('address') | ||
95 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
96 | {{ $message }} | ||
97 | </span> | ||
98 | @enderror | ||
99 | </label><br> | ||
100 | |||
101 | <label class="block text-sm"> | ||
102 | <span class="text-gray-700 dark:text-gray-400">Город</span> | ||
103 | <input name="city" id="city" | ||
104 | 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" | ||
105 | placeholder="Город" value="{{ old('city') ?? $worker->city ?? '' }}" | ||
106 | /> | ||
107 | @error('city') | ||
108 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
109 | {{ $message }} | ||
110 | </span> | ||
111 | @enderror | ||
112 | </label><br> | ||
113 | |||
114 | <label class="block text-sm"> | ||
115 | <span class="text-gray-700 dark:text-gray-400">Фото</span> | ||
116 | |||
117 | <input name="photo" id="photo" type="file" | ||
118 | 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" | ||
119 | placeholder="Фото" value="" | ||
120 | /> | ||
121 | @isset($worker->photo) | ||
122 | <img src="<?=asset(Storage::url($worker->photo))?>" width="150"/> | ||
123 | @endisset | ||
124 | @error('logo') | ||
125 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
126 | {{ $message }} | ||
127 | </span> | ||
128 | @enderror | ||
129 | </label><br> | ||
130 | |||
131 | <label class="block text-sm"> | ||
132 | <span class="text-gray-700 dark:text-gray-400">Согласие на рассылку</span> | ||
133 | <input type="hidden" name="email_data" value="0" /> | ||
134 | <input name="email_data" id="email_data" @php if ($worker->email_data) echo "checked"; @endphp | ||
135 | placeholder="" | ||
136 | type="checkbox" | ||
137 | value="1" | ||
138 | /> | ||
139 | </label> | ||
140 | |||
141 | <label class="block mt-4 text-sm"> | ||
142 | <span class="text-gray-700 dark:text-gray-400">Об соискателе</span> | ||
143 | <textarea name="text" id="text" | ||
144 | 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" | ||
145 | rows="3" | ||
146 | placeholder="О соискателе" | ||
147 | >{{ old('text') ?? $worker->text ?? '' }}</textarea> | ||
148 | </label> | ||
149 | </div> | ||
150 | <div id="content-3"> | ||
151 | |||
152 | </div> | ||
153 | </div><br> | ||
154 | |||
155 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
156 | <div> | ||
157 | <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"> | ||
158 | Сохранить | ||
159 | </button> | ||
160 | <a href="{{ route('admin.workers') }}" | ||
161 | 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" | ||
162 | style="display: -webkit-inline-box; height: 30px!important;" | ||
163 | >Назад</a> | ||
164 | </div> | ||
165 | </div> | ||
166 | </div> | ||
167 | </form> | ||
168 | <!-- | ||
169 | <label class="block mt-4 text-sm"> | ||
170 | <span class="text-gray-700 dark:text-gray-400"> | ||
171 | Requested Limit | ||
172 | </span> | ||
173 | <select | ||
174 | 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" | ||
175 | > | ||
176 | <option>$1,000</option> | ||
177 | <option>$5,000</option> | ||
178 | <option>$10,000</option> | ||
179 | <option>$25,000</option> | ||
180 | </select> | ||
181 | </label> | ||
182 | |||
183 | <label class="block mt-4 text-sm"> | ||
184 | <span class="text-gray-700 dark:text-gray-400"> | ||
185 | Multiselect | ||
186 | </span> | ||
187 | <select | ||
188 | 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" | ||
189 | multiple | ||
190 | > | ||
191 | <option>Option 1</option> | ||
192 | <option>Option 2</option> | ||
193 | <option>Option 3</option> | ||
194 | <option>Option 4</option> | ||
195 | <option>Option 5</option> | ||
196 | </select> | ||
197 | </label> | ||
198 | |||
199 | <label class="block mt-4 text-sm"> | ||
200 | <span class="text-gray-700 dark:text-gray-400">Message</span> | ||
201 | <textarea | ||
202 | 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" | ||
203 | rows="3" | ||
204 | placeholder="Enter some long form content." | ||
205 | ></textarea> | ||
206 | </label> | ||
207 | |||
208 | <div class="flex mt-6 text-sm"> | ||
209 | <label class="flex items-center dark:text-gray-400"> | ||
210 | <input | ||
211 | type="checkbox" | ||
212 | class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | ||
213 | /> | ||
214 | <span class="ml-2"> | ||
215 | I agree to the | ||
216 | <span class="underline">privacy policy</span> | ||
217 | </span> | ||
218 | </label> | ||
219 | </div> | ||
220 | </div> | ||
221 | |||
222 | <!-- Validation inputs --> | ||
223 | <!--<h4 | ||
224 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | ||
225 | > | ||
226 | Validation | ||
227 | </h4> | ||
228 | <div | ||
229 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | ||
230 | > | ||
231 | <!-- Invalid input --> | ||
232 | <!--<label class="block text-sm"> | ||
233 | <span class="text-gray-700 dark:text-gray-400"> | ||
234 | Invalid input | ||
235 | </span> | ||
236 | <input | ||
237 | 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" | ||
238 | placeholder="Jane Doe" | ||
239 | /> | ||
240 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
241 | Your password is too short. | ||
242 | </span> | ||
243 | </label> | ||
244 | |||
245 | <!-- Valid input --> | ||
246 | <!--<label class="block mt-4 text-sm"> | ||
247 | <span class="text-gray-700 dark:text-gray-400"> | ||
248 | Valid input | ||
249 | </span> | ||
250 | <input | ||
251 | 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" | ||
252 | placeholder="Jane Doe" | ||
253 | /> | ||
254 | <span class="text-xs text-green-600 dark:text-green-400"> | ||
255 | Your password is strong. | ||
256 | </span> | ||
257 | </label> | ||
258 | |||
259 | <!-- Helper text --> | ||
260 | <!--<label class="block mt-4 text-sm"> | ||
261 | <span class="text-gray-700 dark:text-gray-400"> | ||
262 | Helper text | ||
263 | </span> | ||
264 | <input | ||
265 | 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" | ||
266 | placeholder="Jane Doe" | ||
267 | /> | ||
268 | <span class="text-xs text-gray-600 dark:text-gray-400"> | ||
269 | Your password must be at least 6 characters long. | ||
270 | </span> | ||
271 | </label> | ||
272 | </div> | ||
273 | |||
274 | <!-- Inputs with icons --> | ||
275 | <!--<h4 | ||
276 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | ||
277 | > | ||
278 | Icons | ||
279 | </h4> | ||
280 | <div | ||
281 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | ||
282 | > | ||
283 | <label class="block text-sm"> | ||
284 | <span class="text-gray-700 dark:text-gray-400">Icon left</span> | ||
285 | <!-- focus-within sets the color for the icon when input is focused --> | ||
286 | <!--<div | ||
287 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" | ||
288 | > | ||
289 | <input | ||
290 | 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" | ||
291 | placeholder="Jane Doe" | ||
292 | /> | ||
293 | <div | ||
294 | class="absolute inset-y-0 flex items-center ml-3 pointer-events-none" | ||
295 | > | ||
296 | <svg | ||
297 | class="w-5 h-5" | ||
298 | aria-hidden="true" | ||
299 | fill="none" | ||
300 | stroke-linecap="round" | ||
301 | stroke-linejoin="round" | ||
302 | stroke-width="2" | ||
303 | viewBox="0 0 24 24" | ||
304 | stroke="currentColor" | ||
305 | > | ||
306 | <path | ||
307 | 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" | ||
308 | ></path> | ||
309 | </svg> | ||
310 | </div> | ||
311 | </div> | ||
312 | </label> | ||
313 | |||
314 | <label class="block mt-4 text-sm"> | ||
315 | <span class="text-gray-700 dark:text-gray-400">Icon right</span> | ||
316 | <!-- focus-within sets the color for the icon when input is focused --> | ||
317 | <!--<div | ||
318 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" | ||
319 | > | ||
320 | <input | ||
321 | 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" | ||
322 | placeholder="Jane Doe" | ||
323 | /> | ||
324 | <div | ||
325 | class="absolute inset-y-0 right-0 flex items-center mr-3 pointer-events-none" | ||
326 | > | ||
327 | <svg | ||
328 | class="w-5 h-5" | ||
329 | aria-hidden="true" | ||
330 | fill="none" | ||
331 | stroke-linecap="round" | ||
332 | stroke-linejoin="round" | ||
333 | stroke-width="2" | ||
334 | viewBox="0 0 24 24" | ||
335 | stroke="currentColor" | ||
336 | > | ||
337 | <path | ||
338 | 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" | ||
339 | ></path> | ||
340 | </svg> | ||
341 | </div> | ||
342 | </div> | ||
343 | </label> | ||
344 | </div> | ||
345 | |||
346 | <!-- Inputs with buttons --> | ||
347 | <!--<h4 | ||
348 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | ||
349 | > | ||
350 | Buttons | ||
351 | </h4> | ||
352 | <div | ||
353 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | ||
354 | > | ||
355 | <label class="block text-sm"> | ||
356 | <span class="text-gray-700 dark:text-gray-400"> | ||
357 | Button left | ||
358 | </span> | ||
359 | <div class="relative"> | ||
360 | <input | ||
361 | 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" | ||
362 | placeholder="Jane Doe" | ||
363 | /> | ||
364 | <button | ||
365 | 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" | ||
366 | > | ||
367 | Click | ||
368 | </button> | ||
369 | </div> | ||
370 | </label> | ||
371 | |||
372 | <label class="block mt-4 text-sm"> | ||
373 | <span class="text-gray-700 dark:text-gray-400"> | ||
374 | Button right | ||
375 | </span> | ||
376 | <div | ||
377 | class="relative text-gray-500 focus-within:text-purple-600" | ||
378 | > | ||
379 | <input | ||
380 | 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" | ||
381 | placeholder="Jane Doe" | ||
382 | /> | ||
383 | <button | ||
384 | 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" | ||
385 | > | ||
386 | Click | ||
387 | </button> | ||
388 | </div> | ||
389 | </label> | ||
390 | </div>--> | ||
391 | @endsection | ||
392 |
resources/views/layout/admin.blade.php
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html :class="{ 'theme-dark': dark }" x-data="data()" lang="{{ str_replace('_', '-', app()->getLocale()) }}"> | 2 | <html :class="{ 'theme-dark': dark }" x-data="data()" lang="{{ str_replace('_', '-', app()->getLocale()) }}"> |
3 | <head> | 3 | <head> |
4 | <meta charset="UTF-8" /> | 4 | <meta charset="UTF-8" /> |
5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
6 | <title>{{$title}}</title> | 6 | <title>{{$title}}</title> |
7 | <link | 7 | <link |
8 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" | 8 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" |
9 | rel="stylesheet" | 9 | rel="stylesheet" |
10 | /> | 10 | /> |
11 | <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output.css')}}" /> | 11 | <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output.css')}}" /> |
12 | <link rel="stylesheet" href="{{ asset('./assets/css/tabs.css')}}" /> | 12 | <link rel="stylesheet" href="{{ asset('./assets/css/tabs.css')}}" /> |
13 | <script | 13 | <script |
14 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" | 14 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" |
15 | defer | 15 | defer |
16 | ></script> | 16 | ></script> |
17 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> | 17 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> |
18 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> | 18 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> |
19 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> | 19 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> |
20 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> | 20 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> |
21 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> | 21 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> |
22 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> | 22 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> |
23 | </head> | 23 | </head> |
24 | <body> | 24 | <body> |
25 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> | 25 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> |
26 | <!-- Desktop sidebar --> | 26 | <!-- Desktop sidebar --> |
27 | <aside | 27 | <aside |
28 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" | 28 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" |
29 | > | 29 | > |
30 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 30 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
31 | <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 31 | <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
32 | href="{{ route('admin.index') }}"> | 32 | href="{{ route('admin.index') }}"> |
33 | Админка | 33 | Админка |
34 | </a> | 34 | </a> |
35 | <ul class="mt-6"> | 35 | <ul class="mt-6"> |
36 | <li class="relative px-6 py-3"> | 36 | <li class="relative px-6 py-3"> |
37 | <span | 37 | <span |
38 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 38 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
39 | aria-hidden="true" | 39 | aria-hidden="true" |
40 | ></span> | 40 | ></span> |
41 | <!--class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" | 41 | <!--class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" |
42 | --> | 42 | --> |
43 | <a | 43 | <a |
44 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" | 44 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" |
45 | href="{{ route('admin.index') }}" | 45 | href="{{ route('admin.index') }}" |
46 | > | 46 | > |
47 | <svg | 47 | <svg |
48 | class="w-5 h-5" | 48 | class="w-5 h-5" |
49 | aria-hidden="true" | 49 | aria-hidden="true" |
50 | fill="none" | 50 | fill="none" |
51 | stroke-linecap="round" | 51 | stroke-linecap="round" |
52 | stroke-linejoin="round" | 52 | stroke-linejoin="round" |
53 | stroke-width="2" | 53 | stroke-width="2" |
54 | viewBox="0 0 24 24" | 54 | viewBox="0 0 24 24" |
55 | stroke="currentColor" | 55 | stroke="currentColor" |
56 | > | 56 | > |
57 | <path | 57 | <path |
58 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" | 58 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
59 | ></path> | 59 | ></path> |
60 | </svg> | 60 | </svg> |
61 | <span class="ml-4">Главная страница</span> | 61 | <span class="ml-4">Главная страница</span> |
62 | </a> | 62 | </a> |
63 | </li> | 63 | </li> |
64 | </ul> | 64 | </ul> |
65 | <ul> | 65 | <ul> |
66 | @if ($UserId == 1) | 66 | @if ($UserId == 1) |
67 | <li class="relative px-6 py-3"> | 67 | <li class="relative px-6 py-3"> |
68 | <a | 68 | <a |
69 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" | 69 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" |
70 | href="{{ route('admin.users') }}" | 70 | href="{{ route('admin.users') }}" |
71 | > | 71 | > |
72 | <svg | 72 | <svg |
73 | class="w-5 h-5" | 73 | class="w-5 h-5" |
74 | aria-hidden="true" | 74 | aria-hidden="true" |
75 | fill="none" | 75 | fill="none" |
76 | stroke-linecap="round" | 76 | stroke-linecap="round" |
77 | stroke-linejoin="round" | 77 | stroke-linejoin="round" |
78 | stroke-width="2" | 78 | stroke-width="2" |
79 | viewBox="0 0 24 24" | 79 | viewBox="0 0 24 24" |
80 | stroke="currentColor" | 80 | stroke="currentColor" |
81 | > | 81 | > |
82 | <path | 82 | <path |
83 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 83 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
84 | ></path> | 84 | ></path> |
85 | </svg> | 85 | </svg> |
86 | <span class="ml-4">Пользователи</span> | 86 | <span class="ml-4">Пользователи</span> |
87 | </a> | 87 | </a> |
88 | </li> | 88 | </li> |
89 | @endif | 89 | @endif |
90 | <li class="relative px-6 py-3"> | 90 | <li class="relative px-6 py-3"> |
91 | <a | 91 | <a |
92 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" | 92 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" |
93 | > | 93 | > |
94 | <svg | 94 | <svg |
95 | class="w-5 h-5" | 95 | class="w-5 h-5" |
96 | aria-hidden="true" | 96 | aria-hidden="true" |
97 | fill="none" | 97 | fill="none" |
98 | stroke-linecap="round" | 98 | stroke-linecap="round" |
99 | stroke-linejoin="round" | 99 | stroke-linejoin="round" |
100 | stroke-width="2" | 100 | stroke-width="2" |
101 | viewBox="0 0 24 24" | 101 | viewBox="0 0 24 24" |
102 | stroke="currentColor" | 102 | stroke="currentColor" |
103 | > | 103 | > |
104 | <path | 104 | <path |
105 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 105 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
106 | ></path> | 106 | ></path> |
107 | </svg> | 107 | </svg> |
108 | <span class="ml-4">Администраторы</span> | 108 | <span class="ml-4">Администраторы</span> |
109 | </a> | 109 | </a> |
110 | </li> | 110 | </li> |
111 | <li class="relative px-6 py-3"> | 111 | <li class="relative px-6 py-3"> |
112 | <a | 112 | <a |
113 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" | 113 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" |
114 | > | 114 | > |
115 | <svg | 115 | <svg |
116 | class="w-5 h-5" | 116 | class="w-5 h-5" |
117 | aria-hidden="true" | 117 | aria-hidden="true" |
118 | fill="none" | 118 | fill="none" |
119 | stroke-linecap="round" | 119 | stroke-linecap="round" |
120 | stroke-linejoin="round" | 120 | stroke-linejoin="round" |
121 | stroke-width="2" | 121 | stroke-width="2" |
122 | viewBox="0 0 24 24" | 122 | viewBox="0 0 24 24" |
123 | stroke="currentColor" | 123 | stroke="currentColor" |
124 | > | 124 | > |
125 | <path | 125 | <path |
126 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 126 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
127 | ></path> | 127 | ></path> |
128 | </svg> | 128 | </svg> |
129 | <span class="ml-4">Работодатели</span> | 129 | <span class="ml-4">Работодатели</span> |
130 | </a> | 130 | </a> |
131 | </li> | 131 | </li> |
132 | <li class="relative px-6 py-3"> | 132 | <li class="relative px-6 py-3"> |
133 | <a | 133 | <a |
134 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" | 134 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" |
135 | > | 135 | > |
136 | <svg | 136 | <svg |
137 | class="w-5 h-5" | 137 | class="w-5 h-5" |
138 | aria-hidden="true" | 138 | aria-hidden="true" |
139 | fill="none" | 139 | fill="none" |
140 | stroke-linecap="round" | 140 | stroke-linecap="round" |
141 | stroke-linejoin="round" | 141 | stroke-linejoin="round" |
142 | stroke-width="2" | 142 | stroke-width="2" |
143 | viewBox="0 0 24 24" | 143 | viewBox="0 0 24 24" |
144 | stroke="currentColor" | 144 | stroke="currentColor" |
145 | > | 145 | > |
146 | <path | 146 | <path |
147 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 147 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
148 | ></path> | 148 | ></path> |
149 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 149 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
150 | </svg> | 150 | </svg> |
151 | <span class="ml-4">Соискатели</span> | 151 | <span class="ml-4">Соискатели</span> |
152 | </a> | 152 | </a> |
153 | </li> | 153 | </li> |
154 | <li class="relative px-6 py-3"> | 154 | <li class="relative px-6 py-3"> |
155 | <a | 155 | <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 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" | 156 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" |
157 | > | 157 | > |
158 | <svg | 158 | <svg |
159 | class="w-5 h-5" | 159 | class="w-5 h-5" |
160 | aria-hidden="true" | 160 | aria-hidden="true" |
161 | fill="none" | 161 | fill="none" |
162 | stroke-linecap="round" | 162 | stroke-linecap="round" |
163 | stroke-linejoin="round" | 163 | stroke-linejoin="round" |
164 | stroke-width="2" | 164 | stroke-width="2" |
165 | viewBox="0 0 24 24" | 165 | viewBox="0 0 24 24" |
166 | stroke="currentColor" | 166 | stroke="currentColor" |
167 | > | 167 | > |
168 | <path | 168 | <path |
169 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 169 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
170 | ></path> | 170 | ></path> |
171 | </svg> | 171 | </svg> |
172 | <span class="ml-4">Вакансии</span> | 172 | <span class="ml-4">Вакансии</span> |
173 | </a> | 173 | </a> |
174 | </li> | 174 | </li> |
175 | 175 | ||
176 | <li class="relative px-6 py-3"> | 176 | <li class="relative px-6 py-3"> |
177 | <a | 177 | <a |
178 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 178 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
179 | > | 179 | > |
180 | <svg | 180 | <svg |
181 | class="w-5 h-5" | 181 | class="w-5 h-5" |
182 | aria-hidden="true" | 182 | aria-hidden="true" |
183 | fill="none" | 183 | fill="none" |
184 | stroke-linecap="round" | 184 | stroke-linecap="round" |
185 | stroke-linejoin="round" | 185 | stroke-linejoin="round" |
186 | stroke-width="2" | 186 | stroke-width="2" |
187 | viewBox="0 0 24 24" | 187 | viewBox="0 0 24 24" |
188 | stroke="currentColor" | 188 | stroke="currentColor" |
189 | > | 189 | > |
190 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 190 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
191 | </svg> | 191 | </svg> |
192 | <span class="ml-4">Сообщения все</span> | 192 | <span class="ml-4">Сообщения все</span> |
193 | </a> | 193 | </a> |
194 | </li> | 194 | </li> |
195 | |||
196 | <li class="relative px-6 py-3"> | ||
197 | <a | ||
198 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-messages') }}" | ||
199 | > | ||
200 | <svg | ||
201 | class="w-5 h-5" | ||
202 | aria-hidden="true" | ||
203 | fill="none" | ||
204 | stroke-linecap="round" | ||
205 | stroke-linejoin="round" | ||
206 | stroke-width="2" | ||
207 | viewBox="0 0 24 24" | ||
208 | stroke="currentColor" | ||
209 | > | ||
210 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | ||
211 | </svg> | ||
212 | <span class="ml-4">Заявки на рассылку</span> | ||
213 | </a> | ||
214 | </li> | ||
215 | |||
195 | <li class="relative px-6 py-3"> | 216 | <li class="relative px-6 py-3"> |
196 | <a | 217 | <a |
197 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}" | 218 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}" |
198 | > | 219 | > |
199 | <svg | 220 | <svg |
200 | class="w-5 h-5" | 221 | class="w-5 h-5" |
201 | aria-hidden="true" | 222 | aria-hidden="true" |
202 | fill="none" | 223 | fill="none" |
203 | stroke-linecap="round" | 224 | stroke-linecap="round" |
204 | stroke-linejoin="round" | 225 | stroke-linejoin="round" |
205 | stroke-width="2" | 226 | stroke-width="2" |
206 | viewBox="0 0 24 24" | 227 | viewBox="0 0 24 24" |
207 | stroke="currentColor" | 228 | stroke="currentColor" |
208 | > | 229 | > |
209 | <path | 230 | <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" | 231 | 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> | 232 | ></path> |
212 | </svg> | 233 | </svg> |
213 | <span class="ml-4">Группы пользователей</span> | 234 | <span class="ml-4">Группы пользователей</span> |
214 | </a> | 235 | </a> |
215 | </li> | 236 | </li> |
216 | @if ($UserId == 1) | 237 | @if ($UserId == 1) |
217 | <li class="relative px-6 py-3"> | 238 | <li class="relative px-6 py-3"> |
218 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> | 239 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> |
219 | <svg | 240 | <svg |
220 | class="w-5 h-5" | 241 | class="w-5 h-5" |
221 | aria-hidden="true" | 242 | aria-hidden="true" |
222 | fill="none" | 243 | fill="none" |
223 | stroke-linecap="round" | 244 | stroke-linecap="round" |
224 | stroke-linejoin="round" | 245 | stroke-linejoin="round" |
225 | stroke-width="2" | 246 | stroke-width="2" |
226 | viewBox="0 0 24 24" | 247 | viewBox="0 0 24 24" |
227 | stroke="currentColor" | 248 | stroke="currentColor" |
228 | > | 249 | > |
229 | <path | 250 | <path |
230 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 251 | 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" |
231 | ></path> | 252 | ></path> |
232 | </svg> | 253 | </svg> |
233 | <span class="ml-4">Роли пользователей</span> | 254 | <span class="ml-4">Роли пользователей</span> |
234 | </a> | 255 | </a> |
235 | </li> | 256 | </li> |
236 | @endif | 257 | @endif |
237 | <li class="relative px-6 py-3"> | 258 | <li class="relative px-6 py-3"> |
259 | <a | ||
260 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.basedata') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.basedata') }}" | ||
261 | > | ||
262 | <svg | ||
263 | class="w-5 h-5" | ||
264 | aria-hidden="true" | ||
265 | fill="none" | ||
266 | stroke-linecap="round" | ||
267 | stroke-linejoin="round" | ||
268 | stroke-width="2" | ||
269 | viewBox="0 0 24 24" | ||
270 | stroke="currentColor" | ||
271 | > | ||
272 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | ||
273 | </svg> | ||
274 | <span class="ml-4">Базы данных</span> | ||
275 | </a> | ||
276 | </li> | ||
277 | |||
278 | <li class="relative px-6 py-3"> | ||
238 | <a | 279 | <a |
239 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.education.index') }}" | 280 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.education.index') }}" |
240 | > | 281 | > |
241 | <svg | 282 | <svg |
242 | class="w-5 h-5" | 283 | class="w-5 h-5" |
243 | aria-hidden="true" | 284 | aria-hidden="true" |
244 | fill="none" | 285 | fill="none" |
245 | stroke-linecap="round" | 286 | stroke-linecap="round" |
246 | stroke-linejoin="round" | 287 | stroke-linejoin="round" |
247 | stroke-width="2" | 288 | stroke-width="2" |
248 | viewBox="0 0 24 24" | 289 | viewBox="0 0 24 24" |
249 | stroke="currentColor" | 290 | stroke="currentColor" |
250 | > | 291 | > |
251 | <path | 292 | <path |
252 | 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" | 293 | 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" |
253 | ></path> | 294 | ></path> |
254 | </svg> | 295 | </svg> |
255 | <span class="ml-4">Учебн.заведения</span> | 296 | <span class="ml-4">Учебн.заведения</span> |
256 | </a> | 297 | </a> |
257 | </li> | 298 | </li> |
299 | |||
258 | <li class="relative px-6 py-3"> | 300 | <li class="relative px-6 py-3"> |
259 | <a | 301 | <a |
260 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" | 302 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" |
261 | > | 303 | > |
262 | <svg | 304 | <svg |
263 | class="w-5 h-5" | 305 | class="w-5 h-5" |
264 | aria-hidden="true" | 306 | aria-hidden="true" |
265 | fill="none" | 307 | fill="none" |
266 | stroke-linecap="round" | 308 | stroke-linecap="round" |
267 | stroke-linejoin="round" | 309 | stroke-linejoin="round" |
268 | stroke-width="2" | 310 | stroke-width="2" |
269 | viewBox="0 0 24 24" | 311 | viewBox="0 0 24 24" |
270 | stroke="currentColor" | 312 | stroke="currentColor" |
271 | > | 313 | > |
272 | <path | 314 | <path |
273 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 315 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
274 | ></path> | 316 | ></path> |
275 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 317 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
276 | </svg> | 318 | </svg> |
277 | <span class="ml-4">Статистика</span> | 319 | <span class="ml-4">Статистика</span> |
278 | </a> | 320 | </a> |
279 | </li> | 321 | </li> |
280 | <li class="relative px-6 py-3"> | 322 | <li class="relative px-6 py-3"> |
281 | <a | 323 | <a |
282 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.answers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.answers') }}" | 324 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.answers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.answers') }}" |
283 | > | 325 | > |
284 | <svg | 326 | <svg |
285 | class="w-5 h-5" | 327 | class="w-5 h-5" |
286 | aria-hidden="true" | 328 | aria-hidden="true" |
287 | fill="none" | 329 | fill="none" |
288 | stroke-linecap="round" | 330 | stroke-linecap="round" |
289 | stroke-linejoin="round" | 331 | stroke-linejoin="round" |
290 | stroke-width="2" | 332 | stroke-width="2" |
291 | viewBox="0 0 24 24" | 333 | viewBox="0 0 24 24" |
292 | stroke="currentColor" | 334 | stroke="currentColor" |
293 | > | 335 | > |
294 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 336 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
295 | </svg> | 337 | </svg> |
296 | <span class="ml-4">Модерация</span> | 338 | <span class="ml-4">Модерация</span> |
297 | </a> | 339 | </a> |
298 | </li> | 340 | </li> |
299 | <li class="relative px-6 py-3"> | 341 | <li class="relative px-6 py-3"> |
300 | <a | 342 | <a |
301 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.reclames') }}" | 343 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.reclames') }}" |
302 | > | 344 | > |
303 | <svg | 345 | <svg |
304 | class="w-5 h-5" | 346 | class="w-5 h-5" |
305 | aria-hidden="true" | 347 | aria-hidden="true" |
306 | fill="none" | 348 | fill="none" |
307 | stroke-linecap="round" | 349 | stroke-linecap="round" |
308 | stroke-linejoin="round" | 350 | stroke-linejoin="round" |
309 | stroke-width="2" | 351 | stroke-width="2" |
310 | viewBox="0 0 24 24" | 352 | viewBox="0 0 24 24" |
311 | stroke="currentColor" | 353 | stroke="currentColor" |
312 | > | 354 | > |
313 | <path | 355 | <path |
314 | 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" | 356 | 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" |
315 | ></path> | 357 | ></path> |
316 | </svg> | 358 | </svg> |
317 | <span class="ml-4">Реклама</span> | 359 | <span class="ml-4">Реклама</span> |
318 | </a> | 360 | </a> |
319 | </li> | 361 | </li> |
320 | <!-- Справочники --> | 362 | <!-- Справочники --> |
321 | <li class="relative px-6 py-3" x-data="{ open1: false }"> | 363 | <li class="relative px-6 py-3" x-data="{ open1: false }"> |
322 | <button | 364 | <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" | 365 | 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="open1=!open1" | 366 | @click="open1=!open1" |
325 | aria-haspopup="true"> | 367 | aria-haspopup="true"> |
326 | <span class="inline-flex items-center"> | 368 | <span class="inline-flex items-center"> |
327 | <svg | 369 | <svg |
328 | class="w-5 h-5" | 370 | class="w-5 h-5" |
329 | aria-hidden="true" | 371 | aria-hidden="true" |
330 | fill="none" | 372 | fill="none" |
331 | stroke-linecap="round" | 373 | stroke-linecap="round" |
332 | stroke-linejoin="round" | 374 | stroke-linejoin="round" |
333 | stroke-width="2" | 375 | stroke-width="2" |
334 | viewBox="0 0 24 24" | 376 | viewBox="0 0 24 24" |
335 | stroke="currentColor"> | 377 | stroke="currentColor"> |
336 | <path | 378 | <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" | 379 | 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> | 380 | ></path> |
339 | </svg> | 381 | </svg> |
340 | <span class="ml-4">Справочники</span> | 382 | <span class="ml-4">Справочники</span> |
341 | </span> | 383 | </span> |
342 | <svg | 384 | <svg |
343 | class="w-4 h-4" | 385 | class="w-4 h-4" |
344 | aria-hidden="true" | 386 | aria-hidden="true" |
345 | fill="currentColor" | 387 | fill="currentColor" |
346 | viewBox="0 0 20 20" | 388 | viewBox="0 0 20 20" |
347 | > | 389 | > |
348 | <path | 390 | <path |
349 | fill-rule="evenodd" | 391 | 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" | 392 | 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" | 393 | clip-rule="evenodd" |
352 | ></path> | 394 | ></path> |
353 | </svg> | 395 | </svg> |
354 | </button> | 396 | </button> |
355 | <template x-if="open1"> | 397 | <template x-if="open1"> |
356 | <ul | 398 | <ul |
357 | x-transition:enter="transition-all ease-in-out duration-300" | 399 | x-transition:enter="transition-all ease-in-out duration-300" |
358 | x-transition:enter-start="opacity-25 max-h-0" | 400 | x-transition:enter-start="opacity-25 max-h-0" |
359 | x-transition:enter-end="opacity-100 max-h-xl" | 401 | x-transition:enter-end="opacity-100 max-h-xl" |
360 | x-transition:leave="transition-all ease-in-out duration-300" | 402 | x-transition:leave="transition-all ease-in-out duration-300" |
361 | x-transition:leave-start="opacity-100 max-h-xl" | 403 | x-transition:leave-start="opacity-100 max-h-xl" |
362 | x-transition:leave-end="opacity-0 max-h-0" | 404 | 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" | 405 | 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" | 406 | aria-label="submenu" |
365 | > | 407 | > |
366 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> | 408 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> |
367 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> | 409 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> |
368 | </li> | 410 | </li> |
369 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> | 411 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> |
370 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> | 412 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> |
371 | </li> | 413 | </li> |
372 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> | 414 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> |
373 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> | 415 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> |
374 | </li> | 416 | </li> |
375 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> | 417 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> |
376 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> | 418 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> |
377 | </li> | 419 | </li> |
378 | 420 | ||
379 | </ul> | 421 | </ul> |
380 | </template> | 422 | </template> |
381 | </li> | 423 | </li> |
382 | 424 | ||
383 | 425 | ||
384 | <!-- Редактор --> | 426 | <!-- Редактор --> |
385 | <li class="relative px-6 py-3"> | 427 | <li class="relative px-6 py-3"> |
386 | <button | 428 | <button |
387 | 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" | 429 | 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" |
388 | @click="togglePagesMenu" | 430 | @click="togglePagesMenu" |
389 | aria-haspopup="true"> | 431 | aria-haspopup="true"> |
390 | <span class="inline-flex items-center"> | 432 | <span class="inline-flex items-center"> |
391 | <svg | 433 | <svg |
392 | class="w-5 h-5" | 434 | class="w-5 h-5" |
393 | aria-hidden="true" | 435 | aria-hidden="true" |
394 | fill="none" | 436 | fill="none" |
395 | stroke-linecap="round" | 437 | stroke-linecap="round" |
396 | stroke-linejoin="round" | 438 | stroke-linejoin="round" |
397 | stroke-width="2" | 439 | stroke-width="2" |
398 | viewBox="0 0 24 24" | 440 | viewBox="0 0 24 24" |
399 | stroke="currentColor"> | 441 | stroke="currentColor"> |
400 | <path | 442 | <path |
401 | 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" | 443 | 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" |
402 | ></path> | 444 | ></path> |
403 | </svg> | 445 | </svg> |
404 | <span class="ml-4">Редактор</span> | 446 | <span class="ml-4">Редактор</span> |
405 | </span> | 447 | </span> |
406 | <svg | 448 | <svg |
407 | class="w-4 h-4" | 449 | class="w-4 h-4" |
408 | aria-hidden="true" | 450 | aria-hidden="true" |
409 | fill="currentColor" | 451 | fill="currentColor" |
410 | viewBox="0 0 20 20" | 452 | viewBox="0 0 20 20" |
411 | > | 453 | > |
412 | <path | 454 | <path |
413 | fill-rule="evenodd" | 455 | fill-rule="evenodd" |
414 | 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" | 456 | 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" |
415 | clip-rule="evenodd" | 457 | clip-rule="evenodd" |
416 | ></path> | 458 | ></path> |
417 | </svg> | 459 | </svg> |
418 | </button> | 460 | </button> |
419 | <template x-if="isPagesMenuOpen"> | 461 | <template x-if="isPagesMenuOpen"> |
420 | <ul | 462 | <ul |
421 | x-transition:enter="transition-all ease-in-out duration-300" | 463 | x-transition:enter="transition-all ease-in-out duration-300" |
422 | x-transition:enter-start="opacity-25 max-h-0" | 464 | x-transition:enter-start="opacity-25 max-h-0" |
423 | x-transition:enter-end="opacity-100 max-h-xl" | 465 | x-transition:enter-end="opacity-100 max-h-xl" |
424 | x-transition:leave="transition-all ease-in-out duration-300" | 466 | x-transition:leave="transition-all ease-in-out duration-300" |
425 | x-transition:leave-start="opacity-100 max-h-xl" | 467 | x-transition:leave-start="opacity-100 max-h-xl" |
426 | x-transition:leave-end="opacity-0 max-h-0" | 468 | x-transition:leave-end="opacity-0 max-h-0" |
427 | 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" | 469 | 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" |
428 | aria-label="submenu" | 470 | aria-label="submenu" |
429 | > | 471 | > |
430 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> | 472 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> |
431 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 473 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
432 | </li> | 474 | </li> |
433 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> | 475 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> |
434 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 476 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
435 | </li> | 477 | </li> |
436 | 478 | ||
437 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> | 479 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> |
438 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 480 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
439 | </li> | 481 | </li> |
440 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> | 482 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> |
441 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 483 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
442 | </li> | 484 | </li> |
443 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> | 485 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> |
444 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 486 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
445 | </li> | 487 | </li> |
446 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> | 488 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> |
447 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 489 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
448 | </li> | 490 | </li> |
449 | </ul> | 491 | </ul> |
450 | </template> | 492 | </template> |
451 | </li> | 493 | </li> |
452 | 494 | ||
453 | </ul> | 495 | </ul> |
454 | <!--<div class="px-6 my-6"> | 496 | <!--<div class="px-6 my-6"> |
455 | <button | 497 | <button |
456 | 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" | 498 | 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" |
457 | > | 499 | > |
458 | Create account | 500 | Create account |
459 | <span class="ml-2" aria-hidden="true">+</span> | 501 | <span class="ml-2" aria-hidden="true">+</span> |
460 | </button> | 502 | </button> |
461 | </div>--> | 503 | </div>--> |
462 | </div> | 504 | </div> |
463 | </aside> | 505 | </aside> |
464 | <!-- Mobile sidebar --> | 506 | <!-- Mobile sidebar --> |
465 | <!-- Backdrop --> | 507 | <!-- Backdrop --> |
466 | <div | 508 | <div |
467 | x-show="isSideMenuOpen" | 509 | x-show="isSideMenuOpen" |
468 | x-transition:enter="transition ease-in-out duration-150" | 510 | x-transition:enter="transition ease-in-out duration-150" |
469 | x-transition:enter-start="opacity-0" | 511 | x-transition:enter-start="opacity-0" |
470 | x-transition:enter-end="opacity-100" | 512 | x-transition:enter-end="opacity-100" |
471 | x-transition:leave="transition ease-in-out duration-150" | 513 | x-transition:leave="transition ease-in-out duration-150" |
472 | x-transition:leave-start="opacity-100" | 514 | x-transition:leave-start="opacity-100" |
473 | x-transition:leave-end="opacity-0" | 515 | x-transition:leave-end="opacity-0" |
474 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | 516 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" |
475 | ></div> | 517 | ></div> |
476 | <aside | 518 | <aside |
477 | 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" | 519 | 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" |
478 | x-show="isSideMenuOpen" | 520 | x-show="isSideMenuOpen" |
479 | x-transition:enter="transition ease-in-out duration-150" | 521 | x-transition:enter="transition ease-in-out duration-150" |
480 | x-transition:enter-start="opacity-0 transform -translate-x-20" | 522 | x-transition:enter-start="opacity-0 transform -translate-x-20" |
481 | x-transition:enter-end="opacity-100" | 523 | x-transition:enter-end="opacity-100" |
482 | x-transition:leave="transition ease-in-out duration-150" | 524 | x-transition:leave="transition ease-in-out duration-150" |
483 | x-transition:leave-start="opacity-100" | 525 | x-transition:leave-start="opacity-100" |
484 | x-transition:leave-end="opacity-0 transform -translate-x-20" | 526 | x-transition:leave-end="opacity-0 transform -translate-x-20" |
485 | @click.away="closeSideMenu" | 527 | @click.away="closeSideMenu" |
486 | @keydown.escape="closeSideMenu" | 528 | @keydown.escape="closeSideMenu" |
487 | > | 529 | > |
488 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 530 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
489 | <a | 531 | <a |
490 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 532 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
491 | href="{{ route('admin.index') }}" | 533 | href="{{ route('admin.index') }}" |
492 | > | 534 | > |
493 | Админка | 535 | Админка |
494 | </a> | 536 | </a> |
495 | <ul class="mt-6"> | 537 | <ul class="mt-6"> |
496 | <li class="relative px-6 py-3"> | 538 | <li class="relative px-6 py-3"> |
497 | <span | 539 | <span |
498 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 540 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
499 | aria-hidden="true" | 541 | aria-hidden="true" |
500 | ></span> | 542 | ></span> |
501 | <a | 543 | <a |
502 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.index') }}" | 544 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.index') }}" |
503 | > | 545 | > |
504 | <svg | 546 | <svg |
505 | class="w-5 h-5" | 547 | class="w-5 h-5" |
506 | aria-hidden="true" | 548 | aria-hidden="true" |
507 | fill="none" | 549 | fill="none" |
508 | stroke-linecap="round" | 550 | stroke-linecap="round" |
509 | stroke-linejoin="round" | 551 | stroke-linejoin="round" |
510 | stroke-width="2" | 552 | stroke-width="2" |
511 | viewBox="0 0 24 24" | 553 | viewBox="0 0 24 24" |
512 | stroke="currentColor" | 554 | stroke="currentColor" |
513 | > | 555 | > |
514 | <path | 556 | <path |
515 | 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" | 557 | 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" |
516 | ></path> | 558 | ></path> |
517 | </svg> | 559 | </svg> |
518 | <span class="ml-4">Главная страница</span> | 560 | <span class="ml-4">Главная страница</span> |
519 | </a> | 561 | </a> |
520 | </li> | 562 | </li> |
521 | </ul> | 563 | </ul> |
522 | <ul> | 564 | <ul> |
523 | @if ($UserId == 1) | 565 | @if ($UserId == 1) |
524 | <li class="relative px-6 py-3"> | 566 | <li class="relative px-6 py-3"> |
525 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.users') }}"> | 567 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.users') }}"> |
526 | <svg | 568 | <svg |
527 | class="w-5 h-5" | 569 | class="w-5 h-5" |
528 | aria-hidden="true" | 570 | aria-hidden="true" |
529 | fill="none" | 571 | fill="none" |
530 | stroke-linecap="round" | 572 | stroke-linecap="round" |
531 | stroke-linejoin="round" | 573 | stroke-linejoin="round" |
532 | stroke-width="2" | 574 | stroke-width="2" |
533 | viewBox="0 0 24 24" | 575 | viewBox="0 0 24 24" |
534 | stroke="currentColor" | 576 | stroke="currentColor" |
535 | > | 577 | > |
536 | <path | 578 | <path |
537 | 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" | 579 | 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" |
538 | ></path> | 580 | ></path> |
539 | </svg> | 581 | </svg> |
540 | <span class="ml-4">Пользователи</span> | 582 | <span class="ml-4">Пользователи</span> |
541 | </a> | 583 | </a> |
542 | </li> | 584 | </li> |
543 | @endif | 585 | @endif |
544 | <li class="relative px-6 py-3"> | 586 | <li class="relative px-6 py-3"> |
545 | <a | 587 | <a |
546 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" | 588 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" |
547 | > | 589 | > |
548 | <svg | 590 | <svg |
549 | class="w-5 h-5" | 591 | class="w-5 h-5" |
550 | aria-hidden="true" | 592 | aria-hidden="true" |
551 | fill="none" | 593 | fill="none" |
552 | stroke-linecap="round" | 594 | stroke-linecap="round" |
553 | stroke-linejoin="round" | 595 | stroke-linejoin="round" |
554 | stroke-width="2" | 596 | stroke-width="2" |
555 | viewBox="0 0 24 24" | 597 | viewBox="0 0 24 24" |
556 | stroke="currentColor" | 598 | stroke="currentColor" |
557 | > | 599 | > |
558 | <path | 600 | <path |
559 | 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" | 601 | 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" |
560 | ></path> | 602 | ></path> |
561 | </svg> | 603 | </svg> |
562 | <span class="ml-4">Администраторы</span> | 604 | <span class="ml-4">Администраторы</span> |
563 | </a> | 605 | </a> |
564 | </li> | 606 | </li> |
565 | 607 | ||
566 | <li class="relative px-6 py-3"> | 608 | <li class="relative px-6 py-3"> |
567 | <a | 609 | <a |
568 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" | 610 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" |
569 | > | 611 | > |
570 | <svg | 612 | <svg |
571 | class="w-5 h-5" | 613 | class="w-5 h-5" |
572 | aria-hidden="true" | 614 | aria-hidden="true" |
573 | fill="none" | 615 | fill="none" |
574 | stroke-linecap="round" | 616 | stroke-linecap="round" |
575 | stroke-linejoin="round" | 617 | stroke-linejoin="round" |
576 | stroke-width="2" | 618 | stroke-width="2" |
577 | viewBox="0 0 24 24" | 619 | viewBox="0 0 24 24" |
578 | stroke="currentColor" | 620 | stroke="currentColor" |
579 | > | 621 | > |
580 | <path | 622 | <path |
581 | 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" | 623 | 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" |
582 | ></path> | 624 | ></path> |
583 | </svg> | 625 | </svg> |
584 | <span class="ml-4">Работодатели</span> | 626 | <span class="ml-4">Работодатели</span> |
585 | </a> | 627 | </a> |
586 | </li> | 628 | </li> |
587 | <li class="relative px-6 py-3"> | 629 | <li class="relative px-6 py-3"> |
588 | <a | 630 | <a |
589 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" | 631 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" |
590 | > | 632 | > |
591 | <svg | 633 | <svg |
592 | class="w-5 h-5" | 634 | class="w-5 h-5" |
593 | aria-hidden="true" | 635 | aria-hidden="true" |
594 | fill="none" | 636 | fill="none" |
595 | stroke-linecap="round" | 637 | stroke-linecap="round" |
596 | stroke-linejoin="round" | 638 | stroke-linejoin="round" |
597 | stroke-width="2" | 639 | stroke-width="2" |
598 | viewBox="0 0 24 24" | 640 | viewBox="0 0 24 24" |
599 | stroke="currentColor" | 641 | stroke="currentColor" |
600 | > | 642 | > |
601 | <path | 643 | <path |
602 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 644 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
603 | ></path> | 645 | ></path> |
604 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 646 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
605 | </svg> | 647 | </svg> |
606 | <span class="ml-4">Соискатели</span> | 648 | <span class="ml-4">Соискатели</span> |
607 | </a> | 649 | </a> |
608 | </li> | 650 | </li> |
609 | <li class="relative px-6 py-3"> | 651 | <li class="relative px-6 py-3"> |
610 | <a | 652 | <a |
611 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" | 653 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" |
612 | > | 654 | > |
613 | <svg | 655 | <svg |
614 | class="w-5 h-5" | 656 | class="w-5 h-5" |
615 | aria-hidden="true" | 657 | aria-hidden="true" |
616 | fill="none" | 658 | fill="none" |
617 | stroke-linecap="round" | 659 | stroke-linecap="round" |
618 | stroke-linejoin="round" | 660 | stroke-linejoin="round" |
619 | stroke-width="2" | 661 | stroke-width="2" |
620 | viewBox="0 0 24 24" | 662 | viewBox="0 0 24 24" |
621 | stroke="currentColor" | 663 | stroke="currentColor" |
622 | > | 664 | > |
623 | <path | 665 | <path |
624 | 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" | 666 | 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" |
625 | ></path> | 667 | ></path> |
626 | </svg> | 668 | </svg> |
627 | <span class="ml-4">Вакансии</span> | 669 | <span class="ml-4">Вакансии</span> |
628 | </a> | 670 | </a> |
629 | </li> | 671 | </li> |
630 | <li class="relative px-6 py-3"> | 672 | <li class="relative px-6 py-3"> |
631 | <a | 673 | <a |
632 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 674 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
633 | > | 675 | > |
634 | <svg | 676 | <svg |
635 | class="w-5 h-5" | 677 | class="w-5 h-5" |
636 | aria-hidden="true" | 678 | aria-hidden="true" |
637 | fill="none" | 679 | fill="none" |
638 | stroke-linecap="round" | 680 | stroke-linecap="round" |
639 | stroke-linejoin="round" | 681 | stroke-linejoin="round" |
640 | stroke-width="2" | 682 | stroke-width="2" |
641 | viewBox="0 0 24 24" | 683 | viewBox="0 0 24 24" |
642 | stroke="currentColor" | 684 | stroke="currentColor" |
643 | > | 685 | > |
644 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 686 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
645 | </svg> | 687 | </svg> |
646 | <span class="ml-4">Сообщения все</span> | 688 | <span class="ml-4">Сообщения все</span> |
647 | </a> | 689 | </a> |
648 | </li> | 690 | </li> |
691 | |||
649 | <li class="relative px-6 py-3"> | 692 | <li class="relative px-6 py-3"> |
693 | <a | ||
694 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-messages') }}" | ||
695 | > | ||
696 | <svg | ||
697 | class="w-5 h-5" | ||
698 | aria-hidden="true" | ||
699 | fill="none" | ||
700 | stroke-linecap="round" | ||
701 | stroke-linejoin="round" | ||
702 | stroke-width="2" | ||
703 | viewBox="0 0 24 24" | ||
704 | stroke="currentColor" | ||
705 | > | ||
706 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | ||
707 | </svg> | ||
708 | <span class="ml-4">Заявки на рассылку</span> | ||
709 | </a> | ||
710 | </li> | ||
711 | |||
712 | |||
713 | <li class="relative px-6 py-3"> | ||
650 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}"> | 714 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}"> |
651 | <svg | 715 | <svg |
652 | class="w-5 h-5" | 716 | class="w-5 h-5" |
653 | aria-hidden="true" | 717 | aria-hidden="true" |
654 | fill="none" | 718 | fill="none" |
655 | stroke-linecap="round" | 719 | stroke-linecap="round" |
656 | stroke-linejoin="round" | 720 | stroke-linejoin="round" |
657 | stroke-width="2" | 721 | stroke-width="2" |
658 | viewBox="0 0 24 24" | 722 | viewBox="0 0 24 24" |
659 | stroke="currentColor" | 723 | stroke="currentColor" |
660 | > | 724 | > |
661 | <path | 725 | <path |
662 | 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" | 726 | 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" |
663 | ></path> | 727 | ></path> |
664 | </svg> | 728 | </svg> |
665 | <span class="ml-4">Группы пользователей</span> | 729 | <span class="ml-4">Группы пользователей</span> |
666 | </a> | 730 | </a> |
667 | </li> | 731 | </li> |
668 | @if ($UserId == 1) | 732 | @if ($UserId == 1) |
669 | <li class="relative px-6 py-3"> | 733 | <li class="relative px-6 py-3"> |
670 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> | 734 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> |
671 | <svg | 735 | <svg |
672 | class="w-5 h-5" | 736 | class="w-5 h-5" |
673 | aria-hidden="true" | 737 | aria-hidden="true" |
674 | fill="none" | 738 | fill="none" |
675 | stroke-linecap="round" | 739 | stroke-linecap="round" |
676 | stroke-linejoin="round" | 740 | stroke-linejoin="round" |
677 | stroke-width="2" | 741 | stroke-width="2" |
678 | viewBox="0 0 24 24" | 742 | viewBox="0 0 24 24" |
679 | stroke="currentColor" | 743 | stroke="currentColor" |
680 | > | 744 | > |
681 | <path | 745 | <path |
682 | 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" | 746 | 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" |
683 | ></path> | 747 | ></path> |
684 | </svg> | 748 | </svg> |
685 | <span class="ml-4">Роли пользователей</span> | 749 | <span class="ml-4">Роли пользователей</span> |
686 | </a> | 750 | </a> |
687 | </li> | 751 | </li> |
688 | @endif | 752 | @endif |
753 | |||
754 | <li class="relative px-6 py-3"> | ||
755 | <a | ||
756 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.basedata') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.basedata') }}" | ||
757 | > | ||
758 | <svg | ||
759 | class="w-5 h-5" | ||
760 | aria-hidden="true" | ||
761 | fill="none" | ||
762 | stroke-linecap="round" | ||
763 | stroke-linejoin="round" | ||
764 | stroke-width="2" | ||
765 | viewBox="0 0 24 24" | ||
766 | stroke="currentColor" | ||
767 | > | ||
768 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | ||
769 | </svg> | ||
770 | <span class="ml-4">Базы данных</span> | ||
771 | </a> | ||
772 | </li> | ||
773 | |||
689 | <li class="relative px-6 py-3"> | 774 | <li class="relative px-6 py-3"> |
690 | <a | 775 | <a |
691 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.education.index') }}" | 776 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.education.index') }}" |
692 | > | 777 | > |
693 | <svg | 778 | <svg |
694 | class="w-5 h-5" | 779 | class="w-5 h-5" |
695 | aria-hidden="true" | 780 | aria-hidden="true" |
696 | fill="none" | 781 | fill="none" |
697 | stroke-linecap="round" | 782 | stroke-linecap="round" |
698 | stroke-linejoin="round" | 783 | stroke-linejoin="round" |
699 | stroke-width="2" | 784 | stroke-width="2" |
700 | viewBox="0 0 24 24" | 785 | viewBox="0 0 24 24" |
701 | stroke="currentColor" | 786 | stroke="currentColor" |
702 | > | 787 | > |
703 | <path | 788 | <path |
704 | 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" | 789 | 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" |
705 | ></path> | 790 | ></path> |
706 | </svg> | 791 | </svg> |
707 | <span class="ml-4">Учебн.заведения</span> | 792 | <span class="ml-4">Учебн.заведения</span> |
708 | </a> | 793 | </a> |
709 | </li> | 794 | </li> |
710 | <li class="relative px-6 py-3"> | 795 | <li class="relative px-6 py-3"> |
711 | <a | 796 | <a |
712 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" | 797 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" |
713 | > | 798 | > |
714 | <svg | 799 | <svg |
715 | class="w-5 h-5" | 800 | class="w-5 h-5" |
716 | aria-hidden="true" | 801 | aria-hidden="true" |
717 | fill="none" | 802 | fill="none" |
718 | stroke-linecap="round" | 803 | stroke-linecap="round" |
719 | stroke-linejoin="round" | 804 | stroke-linejoin="round" |
720 | stroke-width="2" | 805 | stroke-width="2" |
721 | viewBox="0 0 24 24" | 806 | viewBox="0 0 24 24" |
722 | stroke="currentColor" | 807 | stroke="currentColor" |
723 | > | 808 | > |
724 | <path | 809 | <path |
725 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 810 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
726 | ></path> | 811 | ></path> |
727 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 812 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
728 | </svg> | 813 | </svg> |
729 | <span class="ml-4">Статистика</span> | 814 | <span class="ml-4">Статистика</span> |
730 | </a> | 815 | </a> |
731 | </li> | 816 | </li> |
732 | <li class="relative px-6 py-3"> | 817 | <li class="relative px-6 py-3"> |
733 | <a | 818 | <a |
734 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 819 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
735 | > | 820 | > |
736 | <svg | 821 | <svg |
737 | class="w-5 h-5" | 822 | class="w-5 h-5" |
738 | aria-hidden="true" | 823 | aria-hidden="true" |
739 | fill="none" | 824 | fill="none" |
740 | stroke-linecap="round" | 825 | stroke-linecap="round" |
741 | stroke-linejoin="round" | 826 | stroke-linejoin="round" |
742 | stroke-width="2" | 827 | stroke-width="2" |
743 | viewBox="0 0 24 24" | 828 | viewBox="0 0 24 24" |
744 | stroke="currentColor" | 829 | stroke="currentColor" |
745 | > | 830 | > |
746 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 831 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
747 | </svg> | 832 | </svg> |
748 | <span class="ml-4">Сообщения все</span> | 833 | <span class="ml-4">Сообщения все</span> |
749 | </a> | 834 | </a> |
750 | </li> | 835 | </li> |
751 | <li class="relative px-6 py-3"> | 836 | <li class="relative px-6 py-3"> |
752 | <a | 837 | <a |
753 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.reclames') }}" | 838 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.reclames') }}" |
754 | > | 839 | > |
755 | <svg | 840 | <svg |
756 | class="w-5 h-5" | 841 | class="w-5 h-5" |
757 | aria-hidden="true" | 842 | aria-hidden="true" |
758 | fill="none" | 843 | fill="none" |
759 | stroke-linecap="round" | 844 | stroke-linecap="round" |
760 | stroke-linejoin="round" | 845 | stroke-linejoin="round" |
761 | stroke-width="2" | 846 | stroke-width="2" |
762 | viewBox="0 0 24 24" | 847 | viewBox="0 0 24 24" |
763 | stroke="currentColor" | 848 | stroke="currentColor" |
764 | > | 849 | > |
765 | <path | 850 | <path |
766 | 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" | 851 | 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" |
767 | ></path> | 852 | ></path> |
768 | </svg> | 853 | </svg> |
769 | <span class="ml-4">Реклама</span> | 854 | <span class="ml-4">Реклама</span> |
770 | </a> | 855 | </a> |
771 | </li> | 856 | </li> |
772 | <!-- Справочники --> | 857 | <!-- Справочники --> |
773 | <li class="relative px-6 py-3" x-data="{ open2: false }"> | 858 | <li class="relative px-6 py-3" x-data="{ open2: false }"> |
774 | <button | 859 | <button |
775 | 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" | 860 | 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" |
776 | @click="open2=!open2" | 861 | @click="open2=!open2" |
777 | aria-haspopup="true"> | 862 | aria-haspopup="true"> |
778 | <span class="inline-flex items-center"> | 863 | <span class="inline-flex items-center"> |
779 | <svg | 864 | <svg |
780 | class="w-5 h-5" | 865 | class="w-5 h-5" |
781 | aria-hidden="true" | 866 | aria-hidden="true" |
782 | fill="none" | 867 | fill="none" |
783 | stroke-linecap="round" | 868 | stroke-linecap="round" |
784 | stroke-linejoin="round" | 869 | stroke-linejoin="round" |
785 | stroke-width="2" | 870 | stroke-width="2" |
786 | viewBox="0 0 24 24" | 871 | viewBox="0 0 24 24" |
787 | stroke="currentColor"> | 872 | stroke="currentColor"> |
788 | <path | 873 | <path |
789 | 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" | 874 | 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" |
790 | ></path> | 875 | ></path> |
791 | </svg> | 876 | </svg> |
792 | <span class="ml-4">Справочники</span> | 877 | <span class="ml-4">Справочники</span> |
793 | </span> | 878 | </span> |
794 | <svg | 879 | <svg |
795 | class="w-4 h-4" | 880 | class="w-4 h-4" |
796 | aria-hidden="true" | 881 | aria-hidden="true" |
797 | fill="currentColor" | 882 | fill="currentColor" |
798 | viewBox="0 0 20 20" | 883 | viewBox="0 0 20 20" |
799 | > | 884 | > |
800 | <path | 885 | <path |
801 | fill-rule="evenodd" | 886 | fill-rule="evenodd" |
802 | 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" | 887 | 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" |
803 | clip-rule="evenodd" | 888 | clip-rule="evenodd" |
804 | ></path> | 889 | ></path> |
805 | </svg> | 890 | </svg> |
806 | </button> | 891 | </button> |
807 | <template x-if="open2"> | 892 | <template x-if="open2"> |
808 | <ul | 893 | <ul |
809 | x-transition:enter="transition-all ease-in-out duration-300" | 894 | x-transition:enter="transition-all ease-in-out duration-300" |
810 | x-transition:enter-start="opacity-25 max-h-0" | 895 | x-transition:enter-start="opacity-25 max-h-0" |
811 | x-transition:enter-end="opacity-100 max-h-xl" | 896 | x-transition:enter-end="opacity-100 max-h-xl" |
812 | x-transition:leave="transition-all ease-in-out duration-300" | 897 | x-transition:leave="transition-all ease-in-out duration-300" |
813 | x-transition:leave-start="opacity-100 max-h-xl" | 898 | x-transition:leave-start="opacity-100 max-h-xl" |
814 | x-transition:leave-end="opacity-0 max-h-0" | 899 | x-transition:leave-end="opacity-0 max-h-0" |
815 | 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" | 900 | 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" |
816 | aria-label="submenu" | 901 | aria-label="submenu" |
817 | > | 902 | > |
818 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> | 903 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> |
819 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> | 904 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> |
820 | </li> | 905 | </li> |
821 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> | 906 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> |
822 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> | 907 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> |
823 | </li> | 908 | </li> |
824 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> | 909 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> |
825 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> | 910 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> |
826 | </li> | 911 | </li> |
827 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> | 912 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> |
828 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> | 913 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> |
829 | </li> | 914 | </li> |
830 | 915 | ||
831 | </ul> | 916 | </ul> |
832 | </template> | 917 | </template> |
833 | </li> | 918 | </li> |
834 | 919 | ||
835 | |||
836 | <!-- Редактор --> | 920 | <!-- Редактор --> |
837 | <li class="relative px-6 py-3"> | 921 | <li class="relative px-6 py-3"> |
838 | <button | 922 | <button |
839 | 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" | 923 | 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" |
840 | @click="togglePagesMenu" | 924 | @click="togglePagesMenu" |
841 | aria-haspopup="true" | 925 | aria-haspopup="true" |
842 | > | 926 | > |
843 | <span class="inline-flex items-center"> | 927 | <span class="inline-flex items-center"> |
844 | <svg | 928 | <svg |
845 | class="w-5 h-5" | 929 | class="w-5 h-5" |
846 | aria-hidden="true" | 930 | aria-hidden="true" |
847 | fill="none" | 931 | fill="none" |
848 | stroke-linecap="round" | 932 | stroke-linecap="round" |
849 | stroke-linejoin="round" | 933 | stroke-linejoin="round" |
850 | stroke-width="2" | 934 | stroke-width="2" |
851 | viewBox="0 0 24 24" | 935 | viewBox="0 0 24 24" |
852 | stroke="currentColor" | 936 | stroke="currentColor" |
853 | > | 937 | > |
854 | <path | 938 | <path |
855 | 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" | 939 | 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" |
856 | ></path> | 940 | ></path> |
857 | </svg> | 941 | </svg> |
858 | <span class="ml-4">Редактор</span> | 942 | <span class="ml-4">Редактор</span> |
859 | </span> | 943 | </span> |
860 | <svg | 944 | <svg |
861 | class="w-4 h-4" | 945 | class="w-4 h-4" |
862 | aria-hidden="true" | 946 | aria-hidden="true" |
863 | fill="currentColor" | 947 | fill="currentColor" |
864 | viewBox="0 0 20 20" | 948 | viewBox="0 0 20 20" |
865 | > | 949 | > |
866 | <path | 950 | <path |
867 | fill-rule="evenodd" | 951 | fill-rule="evenodd" |
868 | 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" | 952 | 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" |
869 | clip-rule="evenodd" | 953 | clip-rule="evenodd" |
870 | ></path> | 954 | ></path> |
871 | </svg> | 955 | </svg> |
872 | </button> | 956 | </button> |
873 | <template x-if="isPagesMenuOpen"> | 957 | <template x-if="isPagesMenuOpen"> |
874 | <ul | 958 | <ul |
875 | x-transition:enter="transition-all ease-in-out duration-300" | 959 | x-transition:enter="transition-all ease-in-out duration-300" |
876 | x-transition:enter-start="opacity-25 max-h-0" | 960 | x-transition:enter-start="opacity-25 max-h-0" |
877 | x-transition:enter-end="opacity-100 max-h-xl" | 961 | x-transition:enter-end="opacity-100 max-h-xl" |
878 | x-transition:leave="transition-all ease-in-out duration-300" | 962 | x-transition:leave="transition-all ease-in-out duration-300" |
879 | x-transition:leave-start="opacity-100 max-h-xl" | 963 | x-transition:leave-start="opacity-100 max-h-xl" |
880 | x-transition:leave-end="opacity-0 max-h-0" | 964 | x-transition:leave-end="opacity-0 max-h-0" |
881 | 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" | 965 | 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" |
882 | aria-label="submenu" | 966 | aria-label="submenu" |
883 | > | 967 | > |
884 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> | 968 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> |
885 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 969 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
886 | </li> | 970 | </li> |
887 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> | 971 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> |
888 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 972 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
889 | </li> | 973 | </li> |
890 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> | 974 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> |
891 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 975 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
892 | </li> | 976 | </li> |
893 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> | 977 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> |
894 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 978 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
895 | </li> | 979 | </li> |
896 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> | 980 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> |
897 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 981 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
898 | </li> | 982 | </li> |
899 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> | 983 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> |
900 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 984 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
901 | </li> | 985 | </li> |
902 | 986 | ||
903 | </ul> | 987 | </ul> |
904 | </template> | 988 | </template> |
905 | </li> | 989 | </li> |
906 | </ul> | 990 | </ul> |
907 | <!--<div class="px-6 my-6"> | 991 | <!--<div class="px-6 my-6"> |
908 | <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"> | 992 | <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"> |
909 | Create account | 993 | Create account |
910 | <span class="ml-2" aria-hidden="true">+</span> | 994 | <span class="ml-2" aria-hidden="true">+</span> |
911 | </button> | 995 | </button> |
912 | </div>--> | 996 | </div>--> |
913 | </div> | 997 | </div> |
914 | </aside> | 998 | </aside> |
915 | <div class="flex flex-col flex-1 w-full"> | 999 | <div class="flex flex-col flex-1 w-full"> |
916 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> | 1000 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> |
917 | <div | 1001 | <div |
918 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" | 1002 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" |
919 | > | 1003 | > |
920 | <!-- Mobile hamburger --> | 1004 | <!-- Mobile hamburger --> |
921 | <button | 1005 | <button |
922 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" | 1006 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" |
923 | @click="toggleSideMenu" | 1007 | @click="toggleSideMenu" |
924 | aria-label="Menu" | 1008 | aria-label="Menu" |
925 | > | 1009 | > |
926 | <svg | 1010 | <svg |
927 | class="w-6 h-6" | 1011 | class="w-6 h-6" |
928 | aria-hidden="true" | 1012 | aria-hidden="true" |
929 | fill="currentColor" | 1013 | fill="currentColor" |
930 | viewBox="0 0 20 20" | 1014 | viewBox="0 0 20 20" |
931 | > | 1015 | > |
932 | <path | 1016 | <path |
933 | fill-rule="evenodd" | 1017 | fill-rule="evenodd" |
934 | 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" | 1018 | 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" |
935 | clip-rule="evenodd" | 1019 | clip-rule="evenodd" |
936 | ></path> | 1020 | ></path> |
937 | </svg> | 1021 | </svg> |
938 | </button> | 1022 | </button> |
939 | <!-- Search input --> | 1023 | <!-- Search input --> |
940 | <div class="flex justify-center flex-1 lg:mr-32"> | 1024 | <div class="flex justify-center flex-1 lg:mr-32"> |
941 | <div | 1025 | <div |
942 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" | 1026 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" |
943 | > | 1027 | > |
944 | 1028 | ||
945 | @yield('search') | 1029 | @yield('search') |
946 | </div> | 1030 | </div> |
947 | </div> | 1031 | </div> |
948 | <ul class="flex items-center flex-shrink-0 space-x-6"> | 1032 | <ul class="flex items-center flex-shrink-0 space-x-6"> |
949 | <!-- Theme toggler --> | 1033 | <!-- Theme toggler --> |
950 | <li class="flex"> | 1034 | <li class="flex"> |
951 | <button | 1035 | <button |
952 | class="rounded-md focus:outline-none focus:shadow-outline-purple" | 1036 | class="rounded-md focus:outline-none focus:shadow-outline-purple" |
953 | @click="toggleTheme" | 1037 | @click="toggleTheme" |
954 | aria-label="Toggle color mode" | 1038 | aria-label="Toggle color mode" |
955 | > | 1039 | > |
956 | <template x-if="!dark"> | 1040 | <template x-if="!dark"> |
957 | <svg | 1041 | <svg |
958 | class="w-5 h-5" | 1042 | class="w-5 h-5" |
959 | aria-hidden="true" | 1043 | aria-hidden="true" |
960 | fill="currentColor" | 1044 | fill="currentColor" |
961 | viewBox="0 0 20 20" | 1045 | viewBox="0 0 20 20" |
962 | > | 1046 | > |
963 | <path | 1047 | <path |
964 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" | 1048 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" |
965 | ></path> | 1049 | ></path> |
966 | </svg> | 1050 | </svg> |
967 | </template> | 1051 | </template> |
968 | <template x-if="dark"> | 1052 | <template x-if="dark"> |
969 | <svg | 1053 | <svg |
970 | class="w-5 h-5" | 1054 | class="w-5 h-5" |
971 | aria-hidden="true" | 1055 | aria-hidden="true" |
972 | fill="currentColor" | 1056 | fill="currentColor" |
973 | viewBox="0 0 20 20" | 1057 | viewBox="0 0 20 20" |
974 | > | 1058 | > |
975 | <path | 1059 | <path |
976 | fill-rule="evenodd" | 1060 | fill-rule="evenodd" |
977 | 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" | 1061 | 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" |
978 | clip-rule="evenodd" | 1062 | clip-rule="evenodd" |
979 | ></path> | 1063 | ></path> |
980 | </svg> | 1064 | </svg> |
981 | </template> | 1065 | </template> |
982 | </button> | 1066 | </button> |
983 | </li> | 1067 | </li> |
984 | <!-- Notifications menu --> | 1068 | <!-- Notifications menu --> |
985 | <li class="relative"> | 1069 | <li class="relative"> |
986 | <button | 1070 | <button |
987 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" | 1071 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" |
988 | @click="toggleNotificationsMenu" | 1072 | @click="toggleNotificationsMenu" |
989 | @keydown.escape="closeNotificationsMenu" | 1073 | @keydown.escape="closeNotificationsMenu" |
990 | aria-label="Notifications" | 1074 | aria-label="Notifications" |
991 | aria-haspopup="true" | 1075 | aria-haspopup="true" |
992 | > | 1076 | > |
993 | <svg | 1077 | <svg |
994 | class="w-5 h-5" | 1078 | class="w-5 h-5" |
995 | aria-hidden="true" | 1079 | aria-hidden="true" |
996 | fill="currentColor" | 1080 | fill="currentColor" |
997 | viewBox="0 0 20 20" | 1081 | viewBox="0 0 20 20" |
998 | > | 1082 | > |
999 | <path | 1083 | <path |
1000 | 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" | 1084 | 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" |
1001 | ></path> | 1085 | ></path> |
1002 | </svg> | 1086 | </svg> |
1003 | <!-- Notification badge --> | 1087 | <!-- Notification badge --> |
1004 | <span | 1088 | <span |
1005 | aria-hidden="true" | 1089 | aria-hidden="true" |
1006 | 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" | 1090 | 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" |
1007 | ></span> | 1091 | ></span> |
1008 | </button> | 1092 | </button> |
1009 | <template x-if="isNotificationsMenuOpen"> | 1093 | <template x-if="isNotificationsMenuOpen"> |
1010 | <ul | 1094 | <ul |
1011 | x-transition:leave="transition ease-in duration-150" | 1095 | x-transition:leave="transition ease-in duration-150" |
1012 | x-transition:leave-start="opacity-100" | 1096 | x-transition:leave-start="opacity-100" |
1013 | x-transition:leave-end="opacity-0" | 1097 | x-transition:leave-end="opacity-0" |
1014 | @click.away="closeNotificationsMenu" | 1098 | @click.away="closeNotificationsMenu" |
1015 | @keydown.escape="closeNotificationsMenu" | 1099 | @keydown.escape="closeNotificationsMenu" |
1016 | 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" | 1100 | 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" |
1017 | > | 1101 | > |
1018 | <li class="flex"> | 1102 | <li class="flex"> |
1019 | <a | 1103 | <a |
1020 | 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" | 1104 | 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" |
1021 | href="{{ route('admin.admin-messages') }}" | 1105 | href="{{ route('admin.admin-messages') }}" |
1022 | > | 1106 | > |
1023 | <span>Сообщения</span> | 1107 | <span>Сообщения</span> |
1024 | @if($MsgCount > 0) | 1108 | @if($MsgCount > 0) |
1025 | <span | 1109 | <span |
1026 | 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" | 1110 | 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" |
1027 | > | 1111 | > |
1028 | 1112 | ||
1029 | {{ $MsgCount }} | 1113 | {{ $MsgCount }} |
1030 | </span> | 1114 | </span> |
1031 | @endif | 1115 | @endif |
1032 | </a> | 1116 | </a> |
1033 | </li> | 1117 | </li> |
1034 | <!--<li class="flex"> | 1118 | <!--<li class="flex"> |
1035 | <a | 1119 | <a |
1036 | 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" | 1120 | 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" |
1037 | href="#" | 1121 | href="#" |
1038 | > | 1122 | > |
1039 | <span>Логи</span> | 1123 | <span>Логи</span> |
1040 | </a> | 1124 | </a> |
1041 | </li>--> | 1125 | </li>--> |
1042 | </ul> | 1126 | </ul> |
1043 | </template> | 1127 | </template> |
1044 | </li> | 1128 | </li> |
1045 | <!-- Profile menu --> | 1129 | <!-- Profile menu --> |
1046 | <li class="relative"> | 1130 | <li class="relative"> |
1047 | <button | 1131 | <button |
1048 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" | 1132 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" |
1049 | @click="toggleProfileMenu" | 1133 | @click="toggleProfileMenu" |
1050 | @keydown.escape="closeProfileMenu" | 1134 | @keydown.escape="closeProfileMenu" |
1051 | aria-label="Account" | 1135 | aria-label="Account" |
1052 | aria-haspopup="true" | 1136 | aria-haspopup="true" |
1053 | > | 1137 | > |
1054 | <img | 1138 | <img |
1055 | class="object-cover w-8 h-8 rounded-full" | 1139 | class="object-cover w-8 h-8 rounded-full" |
1056 | src="{{ asset('assets/img/profile.jpg') }}" | 1140 | src="{{ asset('assets/img/profile.jpg') }}" |
1057 | alt="" | 1141 | alt="" |
1058 | aria-hidden="true" | 1142 | aria-hidden="true" |
1059 | /> | 1143 | /> |
1060 | </button> | 1144 | </button> |
1061 | <template x-if="isProfileMenuOpen"> | 1145 | <template x-if="isProfileMenuOpen"> |
1062 | <ul | 1146 | <ul |
1063 | x-transition:leave="transition ease-in duration-150" | 1147 | x-transition:leave="transition ease-in duration-150" |
1064 | x-transition:leave-start="opacity-100" | 1148 | x-transition:leave-start="opacity-100" |
1065 | x-transition:leave-end="opacity-0" | 1149 | x-transition:leave-end="opacity-0" |
1066 | @click.away="closeProfileMenu" | 1150 | @click.away="closeProfileMenu" |
1067 | @keydown.escape="closeProfileMenu" | 1151 | @keydown.escape="closeProfileMenu" |
1068 | 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" | 1152 | 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" |
1069 | aria-label="submenu" | 1153 | aria-label="submenu" |
1070 | > | 1154 | > |
1071 | <li class="flex"> | 1155 | <li class="flex"> |
1072 | <a | 1156 | <a |
1073 | 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" | 1157 | 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" |
1074 | href="{{ route('admin.profile') }}" | 1158 | href="{{ route('admin.profile') }}" |
1075 | > | 1159 | > |
1076 | <svg | 1160 | <svg |
1077 | class="w-4 h-4 mr-3" | 1161 | class="w-4 h-4 mr-3" |
1078 | aria-hidden="true" | 1162 | aria-hidden="true" |
1079 | fill="none" | 1163 | fill="none" |
1080 | stroke-linecap="round" | 1164 | stroke-linecap="round" |
1081 | stroke-linejoin="round" | 1165 | stroke-linejoin="round" |
1082 | stroke-width="2" | 1166 | stroke-width="2" |
1083 | viewBox="0 0 24 24" | 1167 | viewBox="0 0 24 24" |
1084 | stroke="currentColor" | 1168 | stroke="currentColor" |
1085 | > | 1169 | > |
1086 | <path | 1170 | <path |
1087 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" | 1171 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" |
1088 | ></path> | 1172 | ></path> |
1089 | </svg> | 1173 | </svg> |
1090 | <span>Профиль</span> | 1174 | <span>Профиль</span> |
1091 | </a> | 1175 | </a> |
1092 | </li> | 1176 | </li> |
1093 | <li class="flex"> | 1177 | <li class="flex"> |
1094 | <a | 1178 | <a |
1095 | 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" | 1179 | 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" |
1096 | href="{{ route('admin.config') }}" | 1180 | href="{{ route('admin.config') }}" |
1097 | > | 1181 | > |
1098 | <svg | 1182 | <svg |
1099 | class="w-4 h-4 mr-3" | 1183 | class="w-4 h-4 mr-3" |
1100 | aria-hidden="true" | 1184 | aria-hidden="true" |
1101 | fill="none" | 1185 | fill="none" |
1102 | stroke-linecap="round" | 1186 | stroke-linecap="round" |
1103 | stroke-linejoin="round" | 1187 | stroke-linejoin="round" |
1104 | stroke-width="2" | 1188 | stroke-width="2" |
1105 | viewBox="0 0 24 24" | 1189 | viewBox="0 0 24 24" |
1106 | stroke="currentColor" | 1190 | stroke="currentColor" |
1107 | > | 1191 | > |
1108 | <path | 1192 | <path |
1109 | 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" | 1193 | 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" |
1110 | ></path> | 1194 | ></path> |
1111 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> | 1195 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> |
1112 | </svg> | 1196 | </svg> |
1113 | <span>Настройки</span> | 1197 | <span>Настройки</span> |
1114 | </a> | 1198 | </a> |
1115 | </li> | 1199 | </li> |
1116 | <li class="flex"> | 1200 | <li class="flex"> |
1117 | <a | 1201 | <a |
1118 | 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" | 1202 | 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" |
1119 | href="{{ route('admin.logout') }}" | 1203 | href="{{ route('admin.logout') }}" |
1120 | > | 1204 | > |
1121 | <svg | 1205 | <svg |
1122 | class="w-4 h-4 mr-3" | 1206 | class="w-4 h-4 mr-3" |
1123 | aria-hidden="true" | 1207 | aria-hidden="true" |
1124 | fill="none" | 1208 | fill="none" |
1125 | stroke-linecap="round" | 1209 | stroke-linecap="round" |
1126 | stroke-linejoin="round" | 1210 | stroke-linejoin="round" |
1127 | stroke-width="2" | 1211 | stroke-width="2" |
1128 | viewBox="0 0 24 24" | 1212 | viewBox="0 0 24 24" |
1129 | stroke="currentColor" | 1213 | stroke="currentColor" |
1130 | > | 1214 | > |
1131 | <path | 1215 | <path |
1132 | 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" | 1216 | 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" |
1133 | ></path> | 1217 | ></path> |
1134 | </svg> | 1218 | </svg> |
1135 | <span>Выход</span> | 1219 | <span>Выход</span> |
1136 | </a> | 1220 | </a> |
1137 | </li> | 1221 | </li> |
1138 | </ul> | 1222 | </ul> |
1139 | </template> | 1223 | </template> |
1140 | </li> | 1224 | </li> |
1141 | </ul> | 1225 | </ul> |
1142 | </div> | 1226 | </div> |
1143 | </header> | 1227 | </header> |
1144 | <main class="h-full overflow-y-auto"> | 1228 | <main class="h-full overflow-y-auto"> |
1145 | <div class="container px-6 mx-auto grid"> | 1229 | <div class="container px-6 mx-auto grid"> |
1146 | <h2 | 1230 | <h2 |
1147 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" | 1231 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" |
1148 | > | 1232 | > |
1149 | {{$title}} | 1233 | {{$title}} |
1150 | </h2> | 1234 | </h2> |
1151 | <!-- CTA --> | 1235 | <!-- CTA --> |
1152 | <a | 1236 | <a |
1153 | 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" | 1237 | 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" |
1154 | href="{{ route('admin.admin-users') }}" | 1238 | href="{{ route('admin.admin-users') }}" |
1155 | > | 1239 | > |
1156 | <div class="flex items-center"> | 1240 | <div class="flex items-center"> |
1157 | <svg | 1241 | <svg |
1158 | class="w-5 h-5 mr-2" | 1242 | class="w-5 h-5 mr-2" |
1159 | fill="currentColor" | 1243 | fill="currentColor" |
1160 | viewBox="0 0 20 20" | 1244 | viewBox="0 0 20 20" |
1161 | > | 1245 | > |
1162 | <path | 1246 | <path |
1163 | 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" | 1247 | 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" |
1164 | ></path> | 1248 | ></path> |
1165 | </svg> | 1249 | </svg> |
1166 | <span>Контент для админов</span> | 1250 | <span>Контент для админов</span> |
1167 | </div> | 1251 | </div> |
1168 | <span>Список админов →</span> | 1252 | <span>Список админов →</span> |
1169 | </a> | 1253 | </a> |
1170 | 1254 | ||
1171 | @if ($message = Session::get('success')) | 1255 | @if ($message = Session::get('success')) |
1172 | <section> | 1256 | <section> |
1173 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 1257 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
1174 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1258 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
1175 | <span aria-hidden="true">×</span> | 1259 | <span aria-hidden="true">×</span> |
1176 | </button> | 1260 | </button> |
1177 | {{ $message }} | 1261 | {{ $message }} |
1178 | </div> | 1262 | </div> |
1179 | </section> | 1263 | </section> |
1180 | @endif | 1264 | @endif |
1181 | 1265 | ||
1182 | @if ($errors->any()) | 1266 | @if ($errors->any()) |
1183 | <section> | 1267 | <section> |
1184 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 1268 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
1185 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1269 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
1186 | <span aria-hidden="true">×</span> | 1270 | <span aria-hidden="true">×</span> |
1187 | </button> | 1271 | </button> |
1188 | <ul class="mb-0"> | 1272 | <ul class="mb-0"> |
1189 | @foreach ($errors->all() as $error) | 1273 | @foreach ($errors->all() as $error) |
1190 | <li>{{ $error }}</li> | 1274 | <li>{{ $error }}</li> |
1191 | @endforeach | 1275 | @endforeach |
1192 | </ul> | 1276 | </ul> |
1193 | </div> | 1277 | </div> |
1194 | </section> | 1278 | </section> |
1195 | @endif | 1279 | @endif |
1196 | 1280 | ||
1197 | @yield('content') | 1281 | @yield('content') |
1198 | 1282 | ||
1199 | <!-- Cards | 1283 | <!-- Cards |
1200 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 1284 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
1201 | 1285 | ||
1202 | <div | 1286 | <div |
1203 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1287 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1204 | > | 1288 | > |
1205 | <div | 1289 | <div |
1206 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" | 1290 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" |
1207 | > | 1291 | > |
1208 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1292 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1209 | <path | 1293 | <path |
1210 | 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" | 1294 | 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" |
1211 | ></path> | 1295 | ></path> |
1212 | </svg> | 1296 | </svg> |
1213 | </div> | 1297 | </div> |
1214 | <div> | 1298 | <div> |
1215 | <p | 1299 | <p |
1216 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1300 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1217 | > | 1301 | > |
1218 | Total clients | 1302 | Total clients |
1219 | </p> | 1303 | </p> |
1220 | <p | 1304 | <p |
1221 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1305 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1222 | > | 1306 | > |
1223 | 6389 | 1307 | 6389 |
1224 | </p> | 1308 | </p> |
1225 | </div> | 1309 | </div> |
1226 | </div> | 1310 | </div> |
1227 | 1311 | ||
1228 | <div | 1312 | <div |
1229 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1313 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1230 | > | 1314 | > |
1231 | <div | 1315 | <div |
1232 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" | 1316 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" |
1233 | > | 1317 | > |
1234 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1318 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1235 | <path | 1319 | <path |
1236 | fill-rule="evenodd" | 1320 | fill-rule="evenodd" |
1237 | 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" | 1321 | 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" |
1238 | clip-rule="evenodd" | 1322 | clip-rule="evenodd" |
1239 | ></path> | 1323 | ></path> |
1240 | </svg> | 1324 | </svg> |
1241 | </div> | 1325 | </div> |
1242 | <div> | 1326 | <div> |
1243 | <p | 1327 | <p |
1244 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1328 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1245 | > | 1329 | > |
1246 | Account balance | 1330 | Account balance |
1247 | </p> | 1331 | </p> |
1248 | <p | 1332 | <p |
1249 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1333 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1250 | > | 1334 | > |
1251 | $ 46,760.89 | 1335 | $ 46,760.89 |
1252 | </p> | 1336 | </p> |
1253 | </div> | 1337 | </div> |
1254 | </div> | 1338 | </div> |
1255 | 1339 | ||
1256 | <div | 1340 | <div |
1257 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1341 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1258 | > | 1342 | > |
1259 | <div | 1343 | <div |
1260 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" | 1344 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" |
1261 | > | 1345 | > |
1262 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1346 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1263 | <path | 1347 | <path |
1264 | 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" | 1348 | 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" |
1265 | ></path> | 1349 | ></path> |
1266 | </svg> | 1350 | </svg> |
1267 | </div> | 1351 | </div> |
1268 | <div> | 1352 | <div> |
1269 | <p | 1353 | <p |
1270 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1354 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1271 | > | 1355 | > |
1272 | New sales | 1356 | New sales |
1273 | </p> | 1357 | </p> |
1274 | <p | 1358 | <p |
1275 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1359 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1276 | > | 1360 | > |
1277 | 376 | 1361 | 376 |
1278 | </p> | 1362 | </p> |
1279 | </div> | 1363 | </div> |
1280 | </div> | 1364 | </div> |
1281 | 1365 | ||
1282 | <div | 1366 | <div |
1283 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1367 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1284 | > | 1368 | > |
1285 | <div | 1369 | <div |
1286 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" | 1370 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" |
1287 | > | 1371 | > |
1288 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1372 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1289 | <path | 1373 | <path |
1290 | fill-rule="evenodd" | 1374 | fill-rule="evenodd" |
1291 | 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" | 1375 | 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" |
1292 | clip-rule="evenodd" | 1376 | clip-rule="evenodd" |
1293 | ></path> | 1377 | ></path> |
1294 | </svg> | 1378 | </svg> |
1295 | </div> | 1379 | </div> |
1296 | <div> | 1380 | <div> |
1297 | <p | 1381 | <p |
1298 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1382 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1299 | > | 1383 | > |
1300 | Pending contacts | 1384 | Pending contacts |
1301 | </p> | 1385 | </p> |
1302 | <p | 1386 | <p |
1303 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1387 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1304 | > | 1388 | > |
1305 | 35 | 1389 | 35 |
1306 | </p> | 1390 | </p> |
1307 | </div> | 1391 | </div> |
1308 | </div> | 1392 | </div> |
1309 | </div> | 1393 | </div> |
1310 | --> | 1394 | --> |
1311 | <!-- New Table | 1395 | <!-- New Table |
1312 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 1396 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> |
1313 | <div class="w-full overflow-x-auto"> | 1397 | <div class="w-full overflow-x-auto"> |
1314 | <table class="w-full whitespace-no-wrap"> | 1398 | <table class="w-full whitespace-no-wrap"> |
1315 | <thead> | 1399 | <thead> |
1316 | <tr | 1400 | <tr |
1317 | 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" | 1401 | 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" |
1318 | > | 1402 | > |
1319 | <th class="px-4 py-3">Client</th> | 1403 | <th class="px-4 py-3">Client</th> |
1320 | <th class="px-4 py-3">Amount</th> | 1404 | <th class="px-4 py-3">Amount</th> |
1321 | <th class="px-4 py-3">Status</th> | 1405 | <th class="px-4 py-3">Status</th> |
1322 | <th class="px-4 py-3">Date</th> | 1406 | <th class="px-4 py-3">Date</th> |
1323 | </tr> | 1407 | </tr> |
1324 | </thead> | 1408 | </thead> |
1325 | <tbody | 1409 | <tbody |
1326 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" | 1410 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" |
1327 | > | 1411 | > |
1328 | <tr class="text-gray-700 dark:text-gray-400"> | 1412 | <tr class="text-gray-700 dark:text-gray-400"> |
1329 | <td class="px-4 py-3"> | 1413 | <td class="px-4 py-3"> |
1330 | <div class="flex items-center text-sm"> | 1414 | <div class="flex items-center text-sm"> |
1331 | 1415 | ||
1332 | <div | 1416 | <div |
1333 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1417 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1334 | > | 1418 | > |
1335 | <img | 1419 | <img |
1336 | class="object-cover w-full h-full rounded-full" | 1420 | class="object-cover w-full h-full rounded-full" |
1337 | 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" | 1421 | 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" |
1338 | alt="" | 1422 | alt="" |
1339 | loading="lazy" | 1423 | loading="lazy" |
1340 | /> | 1424 | /> |
1341 | <div | 1425 | <div |
1342 | class="absolute inset-0 rounded-full shadow-inner" | 1426 | class="absolute inset-0 rounded-full shadow-inner" |
1343 | aria-hidden="true" | 1427 | aria-hidden="true" |
1344 | ></div> | 1428 | ></div> |
1345 | </div> | 1429 | </div> |
1346 | <div> | 1430 | <div> |
1347 | <p class="font-semibold">Hans Burger</p> | 1431 | <p class="font-semibold">Hans Burger</p> |
1348 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1432 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1349 | 10x Developer | 1433 | 10x Developer |
1350 | </p> | 1434 | </p> |
1351 | </div> | 1435 | </div> |
1352 | </div> | 1436 | </div> |
1353 | </td> | 1437 | </td> |
1354 | <td class="px-4 py-3 text-sm"> | 1438 | <td class="px-4 py-3 text-sm"> |
1355 | $ 863.45 | 1439 | $ 863.45 |
1356 | </td> | 1440 | </td> |
1357 | <td class="px-4 py-3 text-xs"> | 1441 | <td class="px-4 py-3 text-xs"> |
1358 | <span | 1442 | <span |
1359 | 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" | 1443 | 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" |
1360 | > | 1444 | > |
1361 | Approved | 1445 | Approved |
1362 | </span> | 1446 | </span> |
1363 | </td> | 1447 | </td> |
1364 | <td class="px-4 py-3 text-sm"> | 1448 | <td class="px-4 py-3 text-sm"> |
1365 | 6/10/2020 | 1449 | 6/10/2020 |
1366 | </td> | 1450 | </td> |
1367 | </tr> | 1451 | </tr> |
1368 | 1452 | ||
1369 | <tr class="text-gray-700 dark:text-gray-400"> | 1453 | <tr class="text-gray-700 dark:text-gray-400"> |
1370 | <td class="px-4 py-3"> | 1454 | <td class="px-4 py-3"> |
1371 | <div class="flex items-center text-sm"> | 1455 | <div class="flex items-center text-sm"> |
1372 | 1456 | ||
1373 | <div | 1457 | <div |
1374 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1458 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1375 | > | 1459 | > |
1376 | <img | 1460 | <img |
1377 | class="object-cover w-full h-full rounded-full" | 1461 | class="object-cover w-full h-full rounded-full" |
1378 | 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" | 1462 | 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" |
1379 | alt="" | 1463 | alt="" |
1380 | loading="lazy" | 1464 | loading="lazy" |
1381 | /> | 1465 | /> |
1382 | <div | 1466 | <div |
1383 | class="absolute inset-0 rounded-full shadow-inner" | 1467 | class="absolute inset-0 rounded-full shadow-inner" |
1384 | aria-hidden="true" | 1468 | aria-hidden="true" |
1385 | ></div> | 1469 | ></div> |
1386 | </div> | 1470 | </div> |
1387 | <div> | 1471 | <div> |
1388 | <p class="font-semibold">Jolina Angelie</p> | 1472 | <p class="font-semibold">Jolina Angelie</p> |
1389 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1473 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1390 | Unemployed | 1474 | Unemployed |
1391 | </p> | 1475 | </p> |
1392 | </div> | 1476 | </div> |
1393 | </div> | 1477 | </div> |
1394 | </td> | 1478 | </td> |
1395 | <td class="px-4 py-3 text-sm"> | 1479 | <td class="px-4 py-3 text-sm"> |
1396 | $ 369.95 | 1480 | $ 369.95 |
1397 | </td> | 1481 | </td> |
1398 | <td class="px-4 py-3 text-xs"> | 1482 | <td class="px-4 py-3 text-xs"> |
1399 | <span | 1483 | <span |
1400 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" | 1484 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" |
1401 | > | 1485 | > |
1402 | Pending | 1486 | Pending |
1403 | </span> | 1487 | </span> |
1404 | </td> | 1488 | </td> |
1405 | <td class="px-4 py-3 text-sm"> | 1489 | <td class="px-4 py-3 text-sm"> |
1406 | 6/10/2020 | 1490 | 6/10/2020 |
1407 | </td> | 1491 | </td> |
1408 | </tr> | 1492 | </tr> |
1409 | 1493 | ||
1410 | <tr class="text-gray-700 dark:text-gray-400"> | 1494 | <tr class="text-gray-700 dark:text-gray-400"> |
1411 | <td class="px-4 py-3"> | 1495 | <td class="px-4 py-3"> |
1412 | <div class="flex items-center text-sm"> | 1496 | <div class="flex items-center text-sm"> |
1413 | 1497 | ||
1414 | <div | 1498 | <div |
1415 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1499 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1416 | > | 1500 | > |
1417 | <img | 1501 | <img |
1418 | class="object-cover w-full h-full rounded-full" | 1502 | class="object-cover w-full h-full rounded-full" |
1419 | 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" | 1503 | 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" |
1420 | alt="" | 1504 | alt="" |
1421 | loading="lazy" | 1505 | loading="lazy" |
1422 | /> | 1506 | /> |
1423 | <div | 1507 | <div |
1424 | class="absolute inset-0 rounded-full shadow-inner" | 1508 | class="absolute inset-0 rounded-full shadow-inner" |
1425 | aria-hidden="true" | 1509 | aria-hidden="true" |
1426 | ></div> | 1510 | ></div> |
1427 | </div> | 1511 | </div> |
1428 | <div> | 1512 | <div> |
1429 | <p class="font-semibold">Sarah Curry</p> | 1513 | <p class="font-semibold">Sarah Curry</p> |
1430 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1514 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1431 | Designer | 1515 | Designer |
1432 | </p> | 1516 | </p> |
1433 | </div> | 1517 | </div> |
1434 | </div> | 1518 | </div> |
1435 | </td> | 1519 | </td> |
1436 | <td class="px-4 py-3 text-sm"> | 1520 | <td class="px-4 py-3 text-sm"> |
1437 | $ 86.00 | 1521 | $ 86.00 |
1438 | </td> | 1522 | </td> |
1439 | <td class="px-4 py-3 text-xs"> | 1523 | <td class="px-4 py-3 text-xs"> |
1440 | <span | 1524 | <span |
1441 | 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" | 1525 | 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" |
1442 | > | 1526 | > |
1443 | Denied | 1527 | Denied |
1444 | </span> | 1528 | </span> |
1445 | </td> | 1529 | </td> |
1446 | <td class="px-4 py-3 text-sm"> | 1530 | <td class="px-4 py-3 text-sm"> |
1447 | 6/10/2020 | 1531 | 6/10/2020 |
1448 | </td> | 1532 | </td> |
1449 | </tr> | 1533 | </tr> |
1450 | 1534 | ||
1451 | <tr class="text-gray-700 dark:text-gray-400"> | 1535 | <tr class="text-gray-700 dark:text-gray-400"> |
1452 | <td class="px-4 py-3"> | 1536 | <td class="px-4 py-3"> |
1453 | <div class="flex items-center text-sm"> | 1537 | <div class="flex items-center text-sm"> |
1454 | 1538 | ||
1455 | <div | 1539 | <div |
1456 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1540 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1457 | > | 1541 | > |
1458 | <img | 1542 | <img |
1459 | class="object-cover w-full h-full rounded-full" | 1543 | class="object-cover w-full h-full rounded-full" |
1460 | 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" | 1544 | 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" |
1461 | alt="" | 1545 | alt="" |
1462 | loading="lazy" | 1546 | loading="lazy" |
1463 | /> | 1547 | /> |
1464 | <div | 1548 | <div |
1465 | class="absolute inset-0 rounded-full shadow-inner" | 1549 | class="absolute inset-0 rounded-full shadow-inner" |
1466 | aria-hidden="true" | 1550 | aria-hidden="true" |
1467 | ></div> | 1551 | ></div> |
1468 | </div> | 1552 | </div> |
1469 | <div> | 1553 | <div> |
1470 | <p class="font-semibold">Rulia Joberts</p> | 1554 | <p class="font-semibold">Rulia Joberts</p> |
1471 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1555 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1472 | Actress | 1556 | Actress |
1473 | </p> | 1557 | </p> |
1474 | </div> | 1558 | </div> |
1475 | </div> | 1559 | </div> |
1476 | </td> | 1560 | </td> |
1477 | <td class="px-4 py-3 text-sm"> | 1561 | <td class="px-4 py-3 text-sm"> |
1478 | $ 1276.45 | 1562 | $ 1276.45 |
1479 | </td> | 1563 | </td> |
1480 | <td class="px-4 py-3 text-xs"> | 1564 | <td class="px-4 py-3 text-xs"> |
1481 | <span | 1565 | <span |
1482 | 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" | 1566 | 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" |
1483 | > | 1567 | > |
1484 | Approved | 1568 | Approved |
1485 | </span> | 1569 | </span> |
1486 | </td> | 1570 | </td> |
1487 | <td class="px-4 py-3 text-sm"> | 1571 | <td class="px-4 py-3 text-sm"> |
1488 | 6/10/2020 | 1572 | 6/10/2020 |
1489 | </td> | 1573 | </td> |
1490 | </tr> | 1574 | </tr> |
1491 | 1575 | ||
1492 | <tr class="text-gray-700 dark:text-gray-400"> | 1576 | <tr class="text-gray-700 dark:text-gray-400"> |
1493 | <td class="px-4 py-3"> | 1577 | <td class="px-4 py-3"> |
1494 | <div class="flex items-center text-sm"> | 1578 | <div class="flex items-center text-sm"> |
1495 | 1579 | ||
1496 | <div | 1580 | <div |
1497 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1581 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1498 | > | 1582 | > |
1499 | <img | 1583 | <img |
1500 | class="object-cover w-full h-full rounded-full" | 1584 | class="object-cover w-full h-full rounded-full" |
1501 | 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" | 1585 | 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" |
1502 | alt="" | 1586 | alt="" |
1503 | loading="lazy" | 1587 | loading="lazy" |
1504 | /> | 1588 | /> |
1505 | <div | 1589 | <div |
1506 | class="absolute inset-0 rounded-full shadow-inner" | 1590 | class="absolute inset-0 rounded-full shadow-inner" |
1507 | aria-hidden="true" | 1591 | aria-hidden="true" |
1508 | ></div> | 1592 | ></div> |
1509 | </div> | 1593 | </div> |
1510 | <div> | 1594 | <div> |
1511 | <p class="font-semibold">Wenzel Dashington</p> | 1595 | <p class="font-semibold">Wenzel Dashington</p> |
1512 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1596 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1513 | Actor | 1597 | Actor |
1514 | </p> | 1598 | </p> |
1515 | </div> | 1599 | </div> |
1516 | </div> | 1600 | </div> |
1517 | </td> | 1601 | </td> |
1518 | <td class="px-4 py-3 text-sm"> | 1602 | <td class="px-4 py-3 text-sm"> |
1519 | $ 863.45 | 1603 | $ 863.45 |
1520 | </td> | 1604 | </td> |
1521 | <td class="px-4 py-3 text-xs"> | 1605 | <td class="px-4 py-3 text-xs"> |
1522 | <span | 1606 | <span |
1523 | 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" | 1607 | 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" |
1524 | > | 1608 | > |
1525 | Expired | 1609 | Expired |
1526 | </span> | 1610 | </span> |
1527 | </td> | 1611 | </td> |
1528 | <td class="px-4 py-3 text-sm"> | 1612 | <td class="px-4 py-3 text-sm"> |
1529 | 6/10/2020 | 1613 | 6/10/2020 |
1530 | </td> | 1614 | </td> |
1531 | </tr> | 1615 | </tr> |
1532 | 1616 | ||
1533 | <tr class="text-gray-700 dark:text-gray-400"> | 1617 | <tr class="text-gray-700 dark:text-gray-400"> |
1534 | <td class="px-4 py-3"> | 1618 | <td class="px-4 py-3"> |
1535 | <div class="flex items-center text-sm"> | 1619 | <div class="flex items-center text-sm"> |
1536 | 1620 | ||
1537 | <div | 1621 | <div |
1538 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1622 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1539 | > | 1623 | > |
1540 | <img | 1624 | <img |
1541 | class="object-cover w-full h-full rounded-full" | 1625 | class="object-cover w-full h-full rounded-full" |
1542 | 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" | 1626 | 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" |
1543 | alt="" | 1627 | alt="" |
1544 | loading="lazy" | 1628 | loading="lazy" |
1545 | /> | 1629 | /> |
1546 | <div | 1630 | <div |
1547 | class="absolute inset-0 rounded-full shadow-inner" | 1631 | class="absolute inset-0 rounded-full shadow-inner" |
1548 | aria-hidden="true" | 1632 | aria-hidden="true" |
1549 | ></div> | 1633 | ></div> |
1550 | </div> | 1634 | </div> |
1551 | <div> | 1635 | <div> |
1552 | <p class="font-semibold">Dave Li</p> | 1636 | <p class="font-semibold">Dave Li</p> |
1553 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1637 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1554 | Influencer | 1638 | Influencer |
1555 | </p> | 1639 | </p> |
1556 | </div> | 1640 | </div> |
1557 | </div> | 1641 | </div> |
1558 | </td> | 1642 | </td> |
1559 | <td class="px-4 py-3 text-sm"> | 1643 | <td class="px-4 py-3 text-sm"> |
1560 | $ 863.45 | 1644 | $ 863.45 |
1561 | </td> | 1645 | </td> |
1562 | <td class="px-4 py-3 text-xs"> | 1646 | <td class="px-4 py-3 text-xs"> |
1563 | <span | 1647 | <span |
1564 | 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" | 1648 | 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" |
1565 | > | 1649 | > |
1566 | Approved | 1650 | Approved |
1567 | </span> | 1651 | </span> |
1568 | </td> | 1652 | </td> |
1569 | <td class="px-4 py-3 text-sm"> | 1653 | <td class="px-4 py-3 text-sm"> |
1570 | 6/10/2020 | 1654 | 6/10/2020 |
1571 | </td> | 1655 | </td> |
1572 | </tr> | 1656 | </tr> |
1573 | 1657 | ||
1574 | <tr class="text-gray-700 dark:text-gray-400"> | 1658 | <tr class="text-gray-700 dark:text-gray-400"> |
1575 | <td class="px-4 py-3"> | 1659 | <td class="px-4 py-3"> |
1576 | <div class="flex items-center text-sm"> | 1660 | <div class="flex items-center text-sm"> |
1577 | 1661 | ||
1578 | <div | 1662 | <div |
1579 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1663 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1580 | > | 1664 | > |
1581 | <img | 1665 | <img |
1582 | class="object-cover w-full h-full rounded-full" | 1666 | class="object-cover w-full h-full rounded-full" |
1583 | 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" | 1667 | 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" |
1584 | alt="" | 1668 | alt="" |
1585 | loading="lazy" | 1669 | loading="lazy" |
1586 | /> | 1670 | /> |
1587 | <div | 1671 | <div |
1588 | class="absolute inset-0 rounded-full shadow-inner" | 1672 | class="absolute inset-0 rounded-full shadow-inner" |
1589 | aria-hidden="true" | 1673 | aria-hidden="true" |
1590 | ></div> | 1674 | ></div> |
1591 | </div> | 1675 | </div> |
1592 | <div> | 1676 | <div> |
1593 | <p class="font-semibold">Maria Ramovic</p> | 1677 | <p class="font-semibold">Maria Ramovic</p> |
1594 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1678 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1595 | Runner | 1679 | Runner |
1596 | </p> | 1680 | </p> |
1597 | </div> | 1681 | </div> |
1598 | </div> | 1682 | </div> |
1599 | </td> | 1683 | </td> |
1600 | <td class="px-4 py-3 text-sm"> | 1684 | <td class="px-4 py-3 text-sm"> |
1601 | $ 863.45 | 1685 | $ 863.45 |
1602 | </td> | 1686 | </td> |
1603 | <td class="px-4 py-3 text-xs"> | 1687 | <td class="px-4 py-3 text-xs"> |
1604 | <span | 1688 | <span |
1605 | 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" | 1689 | 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" |
1606 | > | 1690 | > |
1607 | Approved | 1691 | Approved |
1608 | </span> | 1692 | </span> |
1609 | </td> | 1693 | </td> |
1610 | <td class="px-4 py-3 text-sm"> | 1694 | <td class="px-4 py-3 text-sm"> |
1611 | 6/10/2020 | 1695 | 6/10/2020 |
1612 | </td> | 1696 | </td> |
1613 | </tr> | 1697 | </tr> |
1614 | 1698 | ||
1615 | <tr class="text-gray-700 dark:text-gray-400"> | 1699 | <tr class="text-gray-700 dark:text-gray-400"> |
1616 | <td class="px-4 py-3"> | 1700 | <td class="px-4 py-3"> |
1617 | <div class="flex items-center text-sm"> | 1701 | <div class="flex items-center text-sm"> |
1618 | 1702 | ||
1619 | <div | 1703 | <div |
1620 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1704 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1621 | > | 1705 | > |
1622 | <img | 1706 | <img |
1623 | class="object-cover w-full h-full rounded-full" | 1707 | class="object-cover w-full h-full rounded-full" |
1624 | 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" | 1708 | 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" |
1625 | alt="" | 1709 | alt="" |
1626 | loading="lazy" | 1710 | loading="lazy" |
1627 | /> | 1711 | /> |
1628 | <div | 1712 | <div |
1629 | class="absolute inset-0 rounded-full shadow-inner" | 1713 | class="absolute inset-0 rounded-full shadow-inner" |
1630 | aria-hidden="true" | 1714 | aria-hidden="true" |
1631 | ></div> | 1715 | ></div> |
1632 | </div> | 1716 | </div> |
1633 | <div> | 1717 | <div> |
1634 | <p class="font-semibold">Hitney Wouston</p> | 1718 | <p class="font-semibold">Hitney Wouston</p> |
1635 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1719 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1636 | Singer | 1720 | Singer |
1637 | </p> | 1721 | </p> |
1638 | </div> | 1722 | </div> |
1639 | </div> | 1723 | </div> |
1640 | </td> | 1724 | </td> |
1641 | <td class="px-4 py-3 text-sm"> | 1725 | <td class="px-4 py-3 text-sm"> |
1642 | $ 863.45 | 1726 | $ 863.45 |
1643 | </td> | 1727 | </td> |
1644 | <td class="px-4 py-3 text-xs"> | 1728 | <td class="px-4 py-3 text-xs"> |
1645 | <span | 1729 | <span |
1646 | 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" | 1730 | 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" |
1647 | > | 1731 | > |
1648 | Approved | 1732 | Approved |
1649 | </span> | 1733 | </span> |
1650 | </td> | 1734 | </td> |
1651 | <td class="px-4 py-3 text-sm"> | 1735 | <td class="px-4 py-3 text-sm"> |
1652 | 6/10/2020 | 1736 | 6/10/2020 |
1653 | </td> | 1737 | </td> |
1654 | </tr> | 1738 | </tr> |
1655 | 1739 | ||
1656 | <tr class="text-gray-700 dark:text-gray-400"> | 1740 | <tr class="text-gray-700 dark:text-gray-400"> |
1657 | <td class="px-4 py-3"> | 1741 | <td class="px-4 py-3"> |
1658 | <div class="flex items-center text-sm"> | 1742 | <div class="flex items-center text-sm"> |
1659 | 1743 | ||
1660 | <div | 1744 | <div |
1661 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1745 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1662 | > | 1746 | > |
1663 | <img | 1747 | <img |
1664 | class="object-cover w-full h-full rounded-full" | 1748 | class="object-cover w-full h-full rounded-full" |
1665 | 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" | 1749 | 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" |
1666 | alt="" | 1750 | alt="" |
1667 | loading="lazy" | 1751 | loading="lazy" |
1668 | /> | 1752 | /> |
1669 | <div | 1753 | <div |
1670 | class="absolute inset-0 rounded-full shadow-inner" | 1754 | class="absolute inset-0 rounded-full shadow-inner" |
1671 | aria-hidden="true" | 1755 | aria-hidden="true" |
1672 | ></div> | 1756 | ></div> |
1673 | </div> | 1757 | </div> |
1674 | <div> | 1758 | <div> |
1675 | <p class="font-semibold">Hans Burger</p> | 1759 | <p class="font-semibold">Hans Burger</p> |
1676 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1760 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1677 | 10x Developer | 1761 | 10x Developer |
1678 | </p> | 1762 | </p> |
1679 | </div> | 1763 | </div> |
1680 | </div> | 1764 | </div> |
1681 | </td> | 1765 | </td> |
1682 | <td class="px-4 py-3 text-sm"> | 1766 | <td class="px-4 py-3 text-sm"> |
1683 | $ 863.45 | 1767 | $ 863.45 |
1684 | </td> | 1768 | </td> |
1685 | <td class="px-4 py-3 text-xs"> | 1769 | <td class="px-4 py-3 text-xs"> |
1686 | <span | 1770 | <span |
1687 | 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" | 1771 | 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" |
1688 | > | 1772 | > |
1689 | Approved | 1773 | Approved |
1690 | </span> | 1774 | </span> |
1691 | </td> | 1775 | </td> |
1692 | <td class="px-4 py-3 text-sm"> | 1776 | <td class="px-4 py-3 text-sm"> |
1693 | 6/10/2020 | 1777 | 6/10/2020 |
1694 | </td> | 1778 | </td> |
1695 | </tr> | 1779 | </tr> |
1696 | </tbody> | 1780 | </tbody> |
1697 | </table> | 1781 | </table> |
1698 | </div> | 1782 | </div> |
1699 | <div | 1783 | <div |
1700 | 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" | 1784 | 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" |
1701 | > | 1785 | > |
1702 | <span class="flex items-center col-span-3"> | 1786 | <span class="flex items-center col-span-3"> |
1703 | Showing 21-30 of 100 | 1787 | Showing 21-30 of 100 |
1704 | </span> | 1788 | </span> |
1705 | <span class="col-span-2"></span> | 1789 | <span class="col-span-2"></span> |
1706 | 1790 | ||
1707 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 1791 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
1708 | <nav aria-label="Table navigation"> | 1792 | <nav aria-label="Table navigation"> |
1709 | <ul class="inline-flex items-center"> | 1793 | <ul class="inline-flex items-center"> |
1710 | <li> | 1794 | <li> |
1711 | <button | 1795 | <button |
1712 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 1796 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
1713 | aria-label="Previous" | 1797 | aria-label="Previous" |
1714 | > | 1798 | > |
1715 | <svg | 1799 | <svg |
1716 | aria-hidden="true" | 1800 | aria-hidden="true" |
1717 | class="w-4 h-4 fill-current" | 1801 | class="w-4 h-4 fill-current" |
1718 | viewBox="0 0 20 20" | 1802 | viewBox="0 0 20 20" |
1719 | > | 1803 | > |
1720 | <path | 1804 | <path |
1721 | 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" | 1805 | 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" |
1722 | clip-rule="evenodd" | 1806 | clip-rule="evenodd" |
1723 | fill-rule="evenodd" | 1807 | fill-rule="evenodd" |
1724 | ></path> | 1808 | ></path> |
1725 | </svg> | 1809 | </svg> |
1726 | </button> | 1810 | </button> |
1727 | </li> | 1811 | </li> |
1728 | <li> | 1812 | <li> |
1729 | <button | 1813 | <button |
1730 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1814 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1731 | > | 1815 | > |
1732 | 1 | 1816 | 1 |
1733 | </button> | 1817 | </button> |
1734 | </li> | 1818 | </li> |
1735 | <li> | 1819 | <li> |
1736 | <button | 1820 | <button |
1737 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1821 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1738 | > | 1822 | > |
1739 | 2 | 1823 | 2 |
1740 | </button> | 1824 | </button> |
1741 | </li> | 1825 | </li> |
1742 | <li> | 1826 | <li> |
1743 | <button | 1827 | <button |
1744 | 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" | 1828 | 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" |
1745 | > | 1829 | > |
1746 | 3 | 1830 | 3 |
1747 | </button> | 1831 | </button> |
1748 | </li> | 1832 | </li> |
1749 | <li> | 1833 | <li> |
1750 | <button | 1834 | <button |
1751 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1835 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1752 | > | 1836 | > |
1753 | 4 | 1837 | 4 |
1754 | </button> | 1838 | </button> |
1755 | </li> | 1839 | </li> |
1756 | <li> | 1840 | <li> |
1757 | <span class="px-3 py-1">...</span> | 1841 | <span class="px-3 py-1">...</span> |
1758 | </li> | 1842 | </li> |
1759 | <li> | 1843 | <li> |
1760 | <button | 1844 | <button |
1761 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1845 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1762 | > | 1846 | > |
1763 | 8 | 1847 | 8 |
1764 | </button> | 1848 | </button> |
1765 | </li> | 1849 | </li> |
1766 | <li> | 1850 | <li> |
1767 | <button | 1851 | <button |
1768 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1852 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1769 | > | 1853 | > |
1770 | 9 | 1854 | 9 |
1771 | </button> | 1855 | </button> |
1772 | </li> | 1856 | </li> |
1773 | <li> | 1857 | <li> |
1774 | <button | 1858 | <button |
1775 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 1859 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
1776 | aria-label="Next" | 1860 | aria-label="Next" |
1777 | > | 1861 | > |
1778 | <svg | 1862 | <svg |
1779 | class="w-4 h-4 fill-current" | 1863 | class="w-4 h-4 fill-current" |
1780 | aria-hidden="true" | 1864 | aria-hidden="true" |
1781 | viewBox="0 0 20 20" | 1865 | viewBox="0 0 20 20" |
1782 | > | 1866 | > |
1783 | <path | 1867 | <path |
1784 | 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" | 1868 | 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" |
1785 | clip-rule="evenodd" | 1869 | clip-rule="evenodd" |
1786 | fill-rule="evenodd" | 1870 | fill-rule="evenodd" |
1787 | ></path> | 1871 | ></path> |
1788 | </svg> | 1872 | </svg> |
1789 | </button> | 1873 | </button> |
1790 | </li> | 1874 | </li> |
1791 | </ul> | 1875 | </ul> |
1792 | </nav> | 1876 | </nav> |
1793 | </span> | 1877 | </span> |
1794 | </div> | 1878 | </div> |
1795 | </div> | 1879 | </div> |
1796 | --> | 1880 | --> |
1797 | <!-- Charts --> | 1881 | <!-- Charts --> |
1798 | <!-- | 1882 | <!-- |
1799 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> | 1883 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> |
1800 | Графики | 1884 | Графики |
1801 | </h2> | 1885 | </h2> |
1802 | <div class="grid gap-6 mb-8 md:grid-cols-2"> | 1886 | <div class="grid gap-6 mb-8 md:grid-cols-2"> |
1803 | <div | 1887 | <div |
1804 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1888 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1805 | > | 1889 | > |
1806 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1890 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1807 | Revenue | 1891 | Revenue |
1808 | </h4> | 1892 | </h4> |
1809 | <canvas id="pie"></canvas> | 1893 | <canvas id="pie"></canvas> |
1810 | <div | 1894 | <div |
1811 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1895 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1812 | > | 1896 | > |
1813 | 1897 | ||
1814 | <div class="flex items-center"> | 1898 | <div class="flex items-center"> |
1815 | <span | 1899 | <span |
1816 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" | 1900 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" |
1817 | ></span> | 1901 | ></span> |
1818 | <span>Shirts</span> | 1902 | <span>Shirts</span> |
1819 | </div> | 1903 | </div> |
1820 | <div class="flex items-center"> | 1904 | <div class="flex items-center"> |
1821 | <span | 1905 | <span |
1822 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1906 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1823 | ></span> | 1907 | ></span> |
1824 | <span>Shoes</span> | 1908 | <span>Shoes</span> |
1825 | </div> | 1909 | </div> |
1826 | <div class="flex items-center"> | 1910 | <div class="flex items-center"> |
1827 | <span | 1911 | <span |
1828 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1912 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1829 | ></span> | 1913 | ></span> |
1830 | <span>Bags</span> | 1914 | <span>Bags</span> |
1831 | </div> | 1915 | </div> |
1832 | </div> | 1916 | </div> |
1833 | </div> | 1917 | </div> |
1834 | <div | 1918 | <div |
1835 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1919 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1836 | > | 1920 | > |
1837 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1921 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1838 | Traffic | 1922 | Traffic |
1839 | </h4> | 1923 | </h4> |
1840 | <canvas id="line"></canvas> | 1924 | <canvas id="line"></canvas> |
1841 | <div | 1925 | <div |
1842 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1926 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1843 | > | 1927 | > |
1844 | 1928 | ||
1845 | <div class="flex items-center"> | 1929 | <div class="flex items-center"> |
1846 | <span | 1930 | <span |
1847 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1931 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1848 | ></span> | 1932 | ></span> |
1849 | <span>Organic</span> | 1933 | <span>Organic</span> |
1850 | </div> | 1934 | </div> |
1851 | <div class="flex items-center"> | 1935 | <div class="flex items-center"> |
1852 | <span | 1936 | <span |
1853 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1937 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1854 | ></span> | 1938 | ></span> |
1855 | <span>Paid</span> | 1939 | <span>Paid</span> |
1856 | </div> | 1940 | </div> |
1857 | </div> | 1941 | </div> |
1858 | </div> | 1942 | </div> |
1859 | </div> | 1943 | </div> |
1860 | --> | 1944 | --> |
1861 | </div> | 1945 | </div> |
1862 | </main> | 1946 | </main> |
1863 | </div> | 1947 | </div> |
1864 | </div> | 1948 | </div> |
1865 | @yield('modal') | 1949 | @yield('modal') |
1866 | </body> | 1950 | </body> |
1867 | @yield('script') | 1951 | @yield('script') |
1868 | </html> | 1952 | </html> |
routes/web.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | use App\Http\Controllers\Admin\AdminController; | 3 | use App\Http\Controllers\Admin\AdminController; |
4 | use App\Http\Controllers\Admin\CategoryController; | 4 | use App\Http\Controllers\Admin\CategoryController; |
5 | use App\Http\Controllers\Admin\CategoryEmpController; | 5 | use App\Http\Controllers\Admin\CategoryEmpController; |
6 | use App\Http\Controllers\Admin\EducationController; | 6 | use App\Http\Controllers\Admin\EducationController; |
7 | use App\Http\Controllers\Admin\EmployersController; | 7 | use App\Http\Controllers\Admin\EmployersController; |
8 | use App\Http\Controllers\Admin\InfoBloksController; | 8 | use App\Http\Controllers\Admin\InfoBloksController; |
9 | use App\Http\Controllers\Admin\JobTitlesController; | 9 | use App\Http\Controllers\Admin\JobTitlesController; |
10 | use App\Http\Controllers\Admin\UsersController; | 10 | use App\Http\Controllers\Admin\UsersController; |
11 | use App\Http\Controllers\Admin\WorkersController; | 11 | use App\Http\Controllers\Admin\WorkersController; |
12 | use App\Http\Controllers\Auth\ForgotPasswordController; | 12 | use App\Http\Controllers\Auth\ForgotPasswordController; |
13 | use App\Http\Controllers\Auth\LoginController; | 13 | use App\Http\Controllers\Auth\LoginController; |
14 | use App\Http\Controllers\Auth\RegisterController; | 14 | use App\Http\Controllers\Auth\RegisterController; |
15 | use App\Http\Controllers\CKEditorController; | 15 | use App\Http\Controllers\CKEditorController; |
16 | use App\Models\User; | 16 | use App\Models\User; |
17 | use App\Http\Controllers\MainController; | 17 | use App\Http\Controllers\MainController; |
18 | use App\Http\Controllers\HomeController; | 18 | use App\Http\Controllers\HomeController; |
19 | use Illuminate\Support\Facades\Route; | 19 | use Illuminate\Support\Facades\Route; |
20 | use App\Http\Controllers\Admin\CompanyController; | 20 | use App\Http\Controllers\Admin\CompanyController; |
21 | use App\Http\Controllers\Admin\Ad_EmployersController; | 21 | use App\Http\Controllers\Admin\Ad_EmployersController; |
22 | use App\Http\Controllers\Admin\MsgAnswersController; | 22 | use App\Http\Controllers\Admin\MsgAnswersController; |
23 | use App\Http\Controllers\Admin\GroupsController; | 23 | use App\Http\Controllers\Admin\GroupsController; |
24 | use App\Http\Controllers\PagesController; | 24 | use App\Http\Controllers\PagesController; |
25 | use Illuminate\Support\Facades\Storage; | 25 | use Illuminate\Support\Facades\Storage; |
26 | 26 | ||
27 | 27 | ||
28 | /* | 28 | /* |
29 | |-------------------------------------------------------------------------- | 29 | |-------------------------------------------------------------------------- |
30 | | Web Routes | 30 | | Web Routes |
31 | |-------------------------------------------------------------------------- | 31 | |-------------------------------------------------------------------------- |
32 | | | 32 | | |
33 | | Here is where you can register web routes for your application. These | 33 | | Here is where you can register web routes for your application. These |
34 | | routes are loaded by the RouteServiceProvider within a group which | 34 | | routes are loaded by the RouteServiceProvider within a group which |
35 | | contains the "web" middleware group. Now create something great! | 35 | | contains the "web" middleware group. Now create something great! |
36 | | | 36 | | |
37 | */ | 37 | */ |
38 | /* | 38 | /* |
39 | Route::get('/', function () { | 39 | Route::get('/', function () { |
40 | return view('welcome'); | 40 | return view('welcome'); |
41 | })->name('index'); | 41 | })->name('index'); |
42 | */ | 42 | */ |
43 | Route::get('/', [MainController::class, 'index'])->name('index'); | 43 | Route::get('/', [MainController::class, 'index'])->name('index'); |
44 | 44 | ||
45 | //Роуты авторизации, регистрации, восстановления, аутентификации | 45 | //Роуты авторизации, регистрации, восстановления, аутентификации |
46 | Auth::routes(['verify' => true]); | 46 | Auth::routes(['verify' => true]); |
47 | 47 | ||
48 | // роуты регистрации, авторизации, восстановления пароля, верификации почты | 48 | // роуты регистрации, авторизации, восстановления пароля, верификации почты |
49 | /*Route::group([ | 49 | /*Route::group([ |
50 | 'as' => 'auth.', //имя маршрута, например auth.index | 50 | 'as' => 'auth.', //имя маршрута, например auth.index |
51 | 'prefix' => 'auth', // префикс маршрута, например, auth/index | 51 | 'prefix' => 'auth', // префикс маршрута, например, auth/index |
52 | ], function () { | 52 | ], function () { |
53 | //форма регистрации | 53 | //форма регистрации |
54 | Route::get('register', [RegisterController::class, 'register'])->name('register'); | 54 | Route::get('register', [RegisterController::class, 'register'])->name('register'); |
55 | 55 | ||
56 | //создание пользователя | 56 | //создание пользователя |
57 | Route::post('register', [RegisterController::class, 'create'])->name('create'); | 57 | Route::post('register', [RegisterController::class, 'create'])->name('create'); |
58 | 58 | ||
59 | //форма входа авторизации | 59 | //форма входа авторизации |
60 | Route::get('login', [LoginController::class, 'login'])->name('login'); | 60 | Route::get('login', [LoginController::class, 'login'])->name('login'); |
61 | 61 | ||
62 | //аутентификация | 62 | //аутентификация |
63 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); | 63 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); |
64 | 64 | ||
65 | //выход | 65 | //выход |
66 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); | 66 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); |
67 | 67 | ||
68 | //форма ввода адреса почты | 68 | //форма ввода адреса почты |
69 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); | 69 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); |
70 | 70 | ||
71 | //письмо на почту | 71 | //письмо на почту |
72 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); | 72 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); |
73 | 73 | ||
74 | //форма восстановления пароля | 74 | //форма восстановления пароля |
75 | Route::get('reset-password/token/{token}/email/{email}', | 75 | Route::get('reset-password/token/{token}/email/{email}', |
76 | [ResetPasswordController::class, 'form'] | 76 | [ResetPasswordController::class, 'form'] |
77 | )->name('reset-form'); | 77 | )->name('reset-form'); |
78 | 78 | ||
79 | //восстановление пароля | 79 | //восстановление пароля |
80 | Route::post('reset-password', | 80 | Route::post('reset-password', |
81 | [ResetPasswordController::class, 'reset'] | 81 | [ResetPasswordController::class, 'reset'] |
82 | )->name('reset-password'); | 82 | )->name('reset-password'); |
83 | 83 | ||
84 | //сообщение о необходимости проверки адреса почты | 84 | //сообщение о необходимости проверки адреса почты |
85 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); | 85 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); |
86 | 86 | ||
87 | //подтверждение адреса почты нового пользователя | 87 | //подтверждение адреса почты нового пользователя |
88 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) | 88 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) |
89 | ->where('token', '[a-f0-9]{32}') | 89 | ->where('token', '[a-f0-9]{32}') |
90 | ->where('id', '[0-9]+') | 90 | ->where('id', '[0-9]+') |
91 | ->name('verify-email'); | 91 | ->name('verify-email'); |
92 | });*/ | 92 | });*/ |
93 | 93 | ||
94 | //Личный кабинет пользователя | 94 | //Личный кабинет пользователя |
95 | Route::get('/home', [HomeController::class, 'index'])->name('home'); | 95 | Route::get('/home', [HomeController::class, 'index'])->name('home'); |
96 | 96 | ||
97 | /* | 97 | /* |
98 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { | 98 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { |
99 | $user = User::where('email',$request->input('email'))->first(); | 99 | $user = User::where('email',$request->input('email'))->first(); |
100 | 100 | ||
101 | $user->sendEmailVerificationNotification(); | 101 | $user->sendEmailVerificationNotification(); |
102 | 102 | ||
103 | return 'your response'; | 103 | return 'your response'; |
104 | })->middleware('throttle:6,1')->name('verification.resend'); | 104 | })->middleware('throttle:6,1')->name('verification.resend'); |
105 | */ | 105 | */ |
106 | 106 | ||
107 | // Авторизация, регистрация в админку | 107 | // Авторизация, регистрация в админку |
108 | Route::group([ | 108 | Route::group([ |
109 | 'as' => 'admin.', // имя маршрута, например auth.index | 109 | 'as' => 'admin.', // имя маршрута, например auth.index |
110 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 110 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
111 | 'middleware' => ['guest'], | 111 | 'middleware' => ['guest'], |
112 | ], function () { | 112 | ], function () { |
113 | // Форма регистрации | 113 | // Форма регистрации |
114 | Route::get('register', [AdminController::class, 'register'])->name('register'); | 114 | Route::get('register', [AdminController::class, 'register'])->name('register'); |
115 | 115 | ||
116 | // Создание пользователя | 116 | // Создание пользователя |
117 | Route::post('register', [AdminController::class, 'create'])->name('create'); | 117 | Route::post('register', [AdminController::class, 'create'])->name('create'); |
118 | //Форма входа | 118 | //Форма входа |
119 | Route::get('login', [AdminController::class, 'login'])->name('login'); | 119 | Route::get('login', [AdminController::class, 'login'])->name('login'); |
120 | 120 | ||
121 | // аутентификация | 121 | // аутентификация |
122 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); | 122 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); |
123 | 123 | ||
124 | }); | 124 | }); |
125 | 125 | ||
126 | // Личный кабинет админки | 126 | // Личный кабинет админки |
127 | Route::group([ | 127 | Route::group([ |
128 | 'as' => 'admin.', // имя маршрута, например auth.index | 128 | 'as' => 'admin.', // имя маршрута, например auth.index |
129 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 129 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
130 | 'middleware' => ['auth'], ['admin'], | 130 | 'middleware' => ['auth'], ['admin'], |
131 | ], function() { | 131 | ], function() { |
132 | 132 | ||
133 | // выход | 133 | // выход |
134 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); | 134 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); |
135 | 135 | ||
136 | // кабинет главная страница | 136 | // кабинет главная страница |
137 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); | 137 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); |
138 | 138 | ||
139 | // кабинет профиль админа - форма | 139 | // кабинет профиль админа - форма |
140 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); | 140 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); |
141 | // кабинет профиль админа - сохранение формы | 141 | // кабинет профиль админа - сохранение формы |
142 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); | 142 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); |
143 | 143 | ||
144 | //кабинет сообщения админа | 144 | //кабинет сообщения админа |
145 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); | 145 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); |
146 | 146 | ||
147 | 147 | ||
148 | // кабинет профиль - форма пароли | 148 | // кабинет профиль - форма пароли |
149 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); | 149 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); |
150 | // кабинет профиль - сохранение формы пароля | 150 | // кабинет профиль - сохранение формы пароля |
151 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); | 151 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); |
152 | 152 | ||
153 | 153 | ||
154 | // кабинет профиль пользователя - форма | 154 | // кабинет профиль пользователя - форма |
155 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); | 155 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); |
156 | // кабинет профиль пользователя - сохранение формы | 156 | // кабинет профиль пользователя - сохранение формы |
157 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); | 157 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); |
158 | 158 | ||
159 | // кабинет профиль работодатель - форма | 159 | // кабинет профиль работодатель - форма |
160 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); | 160 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); |
161 | // кабинет профиль работодатель - сохранение формы | 161 | // кабинет профиль работодатель - сохранение формы |
162 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); | 162 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); |
163 | // кабинет удаление профиль работодателя и юзера | 163 | // кабинет удаление профиль работодателя и юзера |
164 | Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); | 164 | Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); |
165 | 165 | ||
166 | // кабинет профиль работник - форма | 166 | // кабинет профиль работник - форма |
167 | Route::get('worker-profile/add/{user}', [WorkersController::class, 'form_add_worker'])->name('worker-profile-add'); | ||
168 | Route::post('worker-profile/add/{user}', [WorkersController::class, 'form_store_worker'])->name('worker-profile-store'); | ||
167 | Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); | 169 | Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); |
168 | // кабинет профиль работник - сохранение формы | 170 | // кабинет профиль работник - сохранение формы |
169 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); | 171 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); |
170 | 172 | ||
171 | 173 | ||
172 | // кабинет настройки сайта - форма | 174 | // кабинет настройки сайта - форма |
173 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); | 175 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); |
174 | // кабинет настройки сайта сохранение формы | 176 | // кабинет настройки сайта сохранение формы |
175 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); | 177 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); |
176 | 178 | ||
177 | // кабинет - пользователи | 179 | // кабинет - пользователи |
178 | Route::get('users', [UsersController::class, 'index'])->name('users'); | 180 | Route::get('users', [UsersController::class, 'index'])->name('users'); |
179 | 181 | ||
180 | // кабинет - пользователи | 182 | // кабинет - пользователи |
181 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); | 183 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); |
182 | 184 | ||
183 | // кабинет - работодатели | 185 | // кабинет - работодатели |
184 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); | 186 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); |
185 | 187 | ||
186 | // кабинет - соискатели | 188 | // кабинет - соискатели |
187 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); | 189 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); |
188 | 190 | ||
191 | // кабинет - база данных | ||
192 | Route::get('basedata', [UsersController::class, 'index_bd'])->name('basedata'); | ||
193 | Route::get('basedata/add', [UsersController::class, 'add_bd'])->name('add-basedata'); | ||
194 | Route::post('basedata/add', [UsersController::class, 'add_store_bd'])->name('add-store-basedata'); | ||
195 | Route::get('basedata/edit/{user}', [UsersController::class, 'edit_bd'])->name('edit-basedata'); | ||
196 | Route::put('basedata/edit/{user}', [UsersController::class, 'update_bd'])->name('update-basedata'); | ||
197 | Route::delete('basedata/delete/{user}', [UsersController::class, 'destroy_bd'])->name('delete-basedata'); | ||
198 | Route::get('basedata/doc/{user}', [UsersController::class, 'doc_bd'])->name('doc-basedata'); | ||
199 | |||
189 | // кабинет - вакансии | 200 | // кабинет - вакансии |
190 | Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); | 201 | 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'); | 202 | 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'); | 203 | Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); |
193 | 204 | ||
194 | // кабинет - категории | 205 | // кабинет - категории |
195 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); | 206 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); |
196 | /* | 207 | /* |
197 | * CRUD-операции над Справочником Категории | 208 | * CRUD-операции над Справочником Категории |
198 | */ | 209 | */ |
199 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); | 210 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); |
200 | 211 | ||
201 | // CRUD-операции над справочником Категории для работодателей | 212 | // CRUD-операции над справочником Категории для работодателей |
202 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); | 213 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); |
203 | 214 | ||
204 | // CRUD-операции над справочником Образование | 215 | // CRUD-операции над справочником Образование |
205 | Route::resource('education', EducationController::class, ['except' => ['show']]); | 216 | Route::resource('education', EducationController::class, ['except' => ['show']]); |
206 | 217 | ||
207 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); | 218 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); |
208 | /* | 219 | /* |
209 | * кабинет - CRUD-операции по справочнику должности | 220 | * кабинет - CRUD-операции по справочнику должности |
210 | * | 221 | * |
211 | */ | 222 | */ |
212 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); | 223 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); |
213 | 224 | ||
214 | // кабинет - сообщения (чтение чужих) | 225 | // кабинет - сообщения (чтение чужих) |
215 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); | 226 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); |
216 | // кабинет - просмотр сообщения чужого (чтение) | 227 | // кабинет - просмотр сообщения чужого (чтение) |
217 | Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); | 228 | Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); |
218 | 229 | ||
219 | // кабинет - сообщения (админские) | 230 | // кабинет - сообщения (админские) |
220 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); | 231 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); |
221 | // кабинет - сообщения (админские) | 232 | // кабинет - сообщения (админские) |
222 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); | 233 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); |
223 | // кабинет - sql - конструкция запросов | 234 | // кабинет - sql - конструкция запросов |
224 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); | 235 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); |
225 | 236 | ||
226 | /* | 237 | /* |
227 | * Расписанный подход в описании каждой директорий групп пользователей. | 238 | * Расписанный подход в описании каждой директорий групп пользователей. |
228 | */ | 239 | */ |
229 | // кабинет - группы пользователей | 240 | // кабинет - группы пользователей |
230 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); | 241 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); |
231 | // кабинет - добавление форма группы пользователей | 242 | // кабинет - добавление форма группы пользователей |
232 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); | 243 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); |
233 | // кабинет - сохранение формы группы пользователей | 244 | // кабинет - сохранение формы группы пользователей |
234 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); | 245 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); |
235 | // кабинет - редактирование форма группы пользователей | 246 | // кабинет - редактирование форма группы пользователей |
236 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); | 247 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); |
237 | // кабинет - сохранение редактированной формы группы пользователей | 248 | // кабинет - сохранение редактированной формы группы пользователей |
238 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); | 249 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); |
239 | // кабинет - удаление группы пользователей | 250 | // кабинет - удаление группы пользователей |
240 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); | 251 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); |
241 | 252 | ||
242 | 253 | ||
243 | // кабинет - список админов | 254 | // кабинет - список админов |
244 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); | 255 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); |
245 | 256 | ||
246 | 257 | ||
247 | /////редактор////// кабинет - редактор сайта//////////////////////// | 258 | /////редактор////// кабинет - редактор сайта//////////////////////// |
248 | Route::get('editor-site', function() { | 259 | Route::get('editor-site', function() { |
249 | return view('admin.editor.index'); | 260 | return view('admin.editor.index'); |
250 | })->name('editor-site'); | 261 | })->name('editor-site'); |
251 | 262 | ||
252 | 263 | ||
253 | // кабинет - редактор шапки-футера сайта | 264 | // кабинет - редактор шапки-футера сайта |
254 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); | 265 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); |
255 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); | 266 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); |
256 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); | 267 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); |
257 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); | 268 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); |
258 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); | 269 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); |
259 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); | 270 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); |
260 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); | 271 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); |
261 | 272 | ||
262 | 273 | ||
263 | // кабинет - редактор должности на главной | 274 | // кабинет - редактор должности на главной |
264 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); | 275 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); |
265 | 276 | ||
266 | // кабинет - редактор работодатели на главной | 277 | // кабинет - редактор работодатели на главной |
267 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); | 278 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); |
268 | 279 | ||
269 | 280 | ||
270 | // кабинет - редактор seo-сайта | 281 | // кабинет - редактор seo-сайта |
271 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); | 282 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); |
272 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); | 283 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); |
273 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); | 284 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); |
274 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); | 285 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); |
275 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); | 286 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); |
276 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); | 287 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); |
277 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); | 288 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); |
278 | 289 | ||
279 | 290 | ||
280 | // кабинет - редактор страниц | 291 | // кабинет - редактор страниц |
281 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); | 292 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); |
282 | // кабинет - добавление страницы | 293 | // кабинет - добавление страницы |
283 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); | 294 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); |
284 | // кабинет - сохранение формы страницы | 295 | // кабинет - сохранение формы страницы |
285 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); | 296 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); |
286 | // кабинет - редактирование форма страницы | 297 | // кабинет - редактирование форма страницы |
287 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); | 298 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); |
288 | // кабинет - сохранение редактированной формы страницы | 299 | // кабинет - сохранение редактированной формы страницы |
289 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); | 300 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); |
290 | // кабинет - удаление страницы | 301 | // кабинет - удаление страницы |
291 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); | 302 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); |
292 | 303 | ||
293 | 304 | ||
294 | // кабинет - реклама сайта | 305 | // кабинет - реклама сайта |
295 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); | 306 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); |
296 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); | 307 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); |
297 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); | 308 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); |
298 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); | 309 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); |
299 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); | 310 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); |
300 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); | 311 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); |
301 | //////////////////////////////////////////////////////////////////////// | 312 | //////////////////////////////////////////////////////////////////////// |
302 | 313 | ||
303 | 314 | ||
304 | // кабинет - отзывы о работодателе для модерации | 315 | // кабинет - отзывы о работодателе для модерации |
305 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); | 316 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); |
306 | 317 | ||
307 | // Общая страница статистики | 318 | // Общая страница статистики |
308 | Route::get('statics', function () { | 319 | Route::get('statics', function () { |
309 | return view('admin.static.index'); | 320 | return view('admin.static.index'); |
310 | })->name('statics'); | 321 | })->name('statics'); |
311 | 322 | ||
312 | // кабинет - статистика работников | 323 | // кабинет - статистика работников |
313 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); | 324 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); |
314 | 325 | ||
315 | // кабинет - статистика вакансий работодателя | 326 | // кабинет - статистика вакансий работодателя |
316 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); | 327 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); |
317 | 328 | ||
318 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника | 329 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника |
319 | /* | 330 | /* |
320 | * CRUD-операции над справочником дипломы и документы | 331 | * CRUD-операции над справочником дипломы и документы |
321 | */ | 332 | */ |
322 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); | 333 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); |
323 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); | 334 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); |
324 | 335 | ||
325 | // кабинет - роли пользователя | 336 | // кабинет - роли пользователя |
326 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); | 337 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); |
327 | 338 | ||
328 | Route::get('logs', function() { | 339 | Route::get('logs', function() { |
329 | $files = Storage::files('logs/laravel.log'); | 340 | $files = Storage::files('logs/laravel.log'); |
330 | print_r($files); | 341 | print_r($files); |
331 | })->name('logs'); | 342 | })->name('logs'); |
332 | 343 | ||
333 | }); | 344 | }); |
334 | 345 | ||
335 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); | 346 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); |
336 | 347 | ||
337 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); | 348 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); |
338 | 349 | ||
339 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); | 350 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); |
340 | 351 | ||
341 | Route::get('excel/', [PagesController::class, 'excel'])->name('excel'); | 352 | Route::get('excel/', [PagesController::class, 'excel'])->name('excel'); |
342 | 353 |