Commit bb2fb443df87d6bf5b48028cd49c1f0e78c45768
1 parent
f64f4890ff
Exists in
master
and in
1 other branch
Архитектурное дополнение БД, моделей, контроллеров и вьюшек
Showing 20 changed files with 798 additions and 330 deletions Inline Diff
- app/Http/Controllers/Admin/Ad_EmployersController.php
- app/Http/Controllers/Admin/AdminController.php
- app/Http/Controllers/Admin/CompanyController.php
- app/Http/Controllers/Admin/EmployersController.php
- app/Http/Controllers/Admin/UsersController.php
- app/Http/Controllers/Admin/WorkersController.php
- app/Models/Ad_employer.php
- public/assets/js/init-alpine.js
- resources/views/admin/ad_employers/index.blade.php
- resources/views/admin/category/index.blade.php
- resources/views/admin/employer/index.blade.php
- resources/views/admin/employer/index_ajax.blade.php
- resources/views/admin/index.blade.php
- resources/views/admin/static/index.blade.php
- resources/views/admin/users/index.blade.php
- resources/views/admin/users/index_ajax.blade.php
- resources/views/admin/worker/index.blade.php
- resources/views/admin/worker/index_ajax.blade.php
- resources/views/layout/admin.blade.php
- routes/web.php
app/Http/Controllers/Admin/Ad_EmployersController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\Ad_employer; | ||
7 | use App\Models\User; | ||
8 | use Illuminate\Http\Request; | ||
9 | use Illuminate\Support\Facades\Auth; | ||
10 | |||
11 | class Ad_EmployersController extends Controller | ||
12 | { | ||
13 | /** | ||
14 | * Display a listing of the resource. | ||
15 | * | ||
16 | * @return \Illuminate\Http\Response | ||
17 | */ | ||
18 | public function index(Request $request) | ||
19 | { | ||
20 | $title = 'Админка - Вакансии работодателей'; | ||
21 | $ad_employers = Ad_employer::where('is_remove', '0')->paginate(15); | ||
22 | |||
23 | return view('admin.ad_employers.index', compact('ad_employers', 'title')); | ||
24 | |||
25 | } | ||
26 | |||
27 | /** | ||
28 | * Show the form for creating a new resource. | ||
29 | * | ||
30 | * @return \Illuminate\Http\Response | ||
31 | */ | ||
32 | public function create() | ||
33 | { | ||
34 | // | ||
35 | } | ||
36 | |||
37 | /** | ||
38 | * Store a newly created resource in storage. | ||
39 | * | ||
40 | * @param \Illuminate\Http\Request $request | ||
41 | * @return \Illuminate\Http\Response | ||
42 | */ | ||
43 | public function store(Request $request) | ||
44 | { | ||
45 | // | ||
46 | } | ||
47 | |||
48 | /** | ||
49 | * Display the specified resource. | ||
50 | * | ||
51 | * @param \App\Models\Ad_employer $ad_employer | ||
52 | * @return \Illuminate\Http\Response | ||
53 | */ | ||
54 | public function show(Ad_employer $ad_employer) | ||
55 | { | ||
56 | // | ||
57 | } | ||
58 | |||
59 | /** | ||
60 | * Show the form for editing the specified resource. | ||
61 | * | ||
62 | * @param \App\Models\Ad_employer $ad_employer | ||
63 | * @return \Illuminate\Http\Response | ||
64 | */ | ||
65 | public function edit(Ad_employer $ad_employer) | ||
66 | { | ||
67 | // | ||
68 | } | ||
69 | |||
70 | /** | ||
71 | * Update the specified resource in storage. | ||
72 | * | ||
73 | * @param \Illuminate\Http\Request $request | ||
74 | * @param \App\Models\Ad_employer $ad_employer | ||
75 | * @return \Illuminate\Http\Response | ||
76 | */ | ||
77 | public function update(Request $request, Ad_employer $ad_employer) | ||
78 | { | ||
79 | // | ||
80 | } | ||
81 | |||
82 | /** | ||
83 | * Remove the specified resource from storage. | ||
84 | * | ||
85 | * @param \App\Models\Ad_employer $ad_employer | ||
86 | * @return \Illuminate\Http\Response | ||
87 | */ | ||
88 | public function destroy(Ad_employer $ad_employer) | ||
89 | { | ||
90 | // | ||
91 | } | ||
92 | } | ||
93 |
app/Http/Controllers/Admin/AdminController.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\CompanyRequest; | 6 | use App\Http\Requests\CompanyRequest; |
7 | use App\Models\Company; | 7 | use App\Models\Company; |
8 | use App\Models\Employer; | 8 | use App\Models\Employer; |
9 | use App\Models\User; | 9 | use App\Models\User; |
10 | use Illuminate\Http\Request; | 10 | use Illuminate\Http\Request; |
11 | use Illuminate\Support\Facades\Auth; | 11 | use Illuminate\Support\Facades\Auth; |
12 | use Illuminate\Support\Facades\Hash; | 12 | use Illuminate\Support\Facades\Hash; |
13 | use Illuminate\Support\Facades\Storage; | 13 | use Illuminate\Support\Facades\Storage; |
14 | use Illuminate\Support\Facades\Validator; | 14 | use Illuminate\Support\Facades\Validator; |
15 | 15 | ||
16 | class AdminController extends Controller | 16 | class AdminController extends Controller |
17 | { | 17 | { |
18 | /** | 18 | /** |
19 | * Handle the incoming request. | 19 | * Handle the incoming request. |
20 | * | 20 | * |
21 | * @param \Illuminate\Http\Request $request | 21 | * @param \Illuminate\Http\Request $request |
22 | * @return \Illuminate\Http\Response | 22 | * @return \Illuminate\Http\Response |
23 | */ | 23 | */ |
24 | public function __invoke(Request $request) | 24 | public function __invoke(Request $request) |
25 | { | 25 | { |
26 | // | 26 | // |
27 | } | 27 | } |
28 | 28 | ||
29 | public function register() { | 29 | public function register() { |
30 | return view('admin.register'); | 30 | return view('admin.register'); |
31 | } | 31 | } |
32 | 32 | ||
33 | public function create(Request $request) { | 33 | public function create(Request $request) { |
34 | 34 | ||
35 | $rules = [ | 35 | $rules = [ |
36 | 'name' => 'required|string|max:255', | 36 | 'name' => 'required|string|max:255', |
37 | 'email' => 'required|string|email|max:255|unique:users', | 37 | 'email' => 'required|string|email|max:255|unique:users', |
38 | 'password' => 'required|string|min:8|confirmed', | 38 | 'password' => 'required|string|min:8|confirmed', |
39 | ]; | 39 | ]; |
40 | 40 | ||
41 | $messages = [ | 41 | $messages = [ |
42 | 'required' => 'Укажите обязательное поле «:attribute»', | 42 | 'required' => 'Укажите обязательное поле «:attribute»', |
43 | 'confirmed' => 'Пароли не совпадают', | 43 | 'confirmed' => 'Пароли не совпадают', |
44 | 'email' => 'Введите корректный email', | 44 | 'email' => 'Введите корректный email', |
45 | 'min' => [ | 45 | 'min' => [ |
46 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 46 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
47 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 47 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
48 | ], | 48 | ], |
49 | 'max' => [ | 49 | 'max' => [ |
50 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 50 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
51 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 51 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
52 | ], | 52 | ], |
53 | ]; | 53 | ]; |
54 | 54 | ||
55 | $validator = Validator::make($request->all(), $rules, $messages); | 55 | $validator = Validator::make($request->all(), $rules, $messages); |
56 | 56 | ||
57 | if ($validator->fails()) { | 57 | if ($validator->fails()) { |
58 | return back()->withErrors($validator)->withInput(); //->route('admin.register') | 58 | return back()->withErrors($validator)->withInput(); //->route('admin.register') |
59 | 59 | ||
60 | } else { | 60 | } else { |
61 | $params = $request->all(); | 61 | $params = $request->all(); |
62 | 62 | ||
63 | User::create([ | 63 | User::create([ |
64 | 'name' => $request->name, | 64 | 'name' => $request->name, |
65 | 'email' => $request->email, | 65 | 'email' => $request->email, |
66 | 'password' => Hash::make($request->password), | 66 | 'password' => Hash::make($request->password), |
67 | ]); | 67 | ]); |
68 | return redirect() | 68 | return redirect() |
69 | ->route('admin.login') | 69 | ->route('admin.login') |
70 | ->with('success', 'Вы успешно зарегистрировались'); | 70 | ->with('success', 'Вы успешно зарегистрировались'); |
71 | } | 71 | } |
72 | } | 72 | } |
73 | 73 | ||
74 | public function login() { | 74 | public function login() { |
75 | return view('admin.login'); | 75 | return view('admin.login'); |
76 | } | 76 | } |
77 | 77 | ||
78 | // Аутентификация | 78 | // Аутентификация |
79 | public function autenticate(Request $request) { | 79 | public function autenticate(Request $request) { |
80 | //$request->validate( | 80 | //$request->validate( |
81 | $rules = [ | 81 | $rules = [ |
82 | 'email' => 'required|string|email', | 82 | 'email' => 'required|string|email', |
83 | 'password' => 'required|string', | 83 | 'password' => 'required|string', |
84 | ]; | 84 | ]; |
85 | 85 | ||
86 | $messages = [ | 86 | $messages = [ |
87 | 'required' => 'Укажите обязательное поле «:attribute»', | 87 | 'required' => 'Укажите обязательное поле «:attribute»', |
88 | 'email' => 'Введите корректный email', | 88 | 'email' => 'Введите корректный email', |
89 | 'min' => [ | 89 | 'min' => [ |
90 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 90 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
91 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 91 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
92 | ], | 92 | ], |
93 | 'max' => [ | 93 | 'max' => [ |
94 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 94 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
95 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 95 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
96 | ], | 96 | ], |
97 | ]; | 97 | ]; |
98 | 98 | ||
99 | 99 | ||
100 | $validator = Validator::make($request->all(), $rules, $messages); | 100 | $validator = Validator::make($request->all(), $rules, $messages); |
101 | 101 | ||
102 | if ($validator->fails()) { | 102 | if ($validator->fails()) { |
103 | return back()->withErrors($validator)->withInput(); | 103 | return back()->withErrors($validator)->withInput(); |
104 | 104 | ||
105 | } else { | 105 | } else { |
106 | 106 | ||
107 | $credentials = $request->only('email', 'password'); | 107 | $credentials = $request->only('email', 'password'); |
108 | 108 | ||
109 | if (Auth::attempt($credentials, $request->has('remember'))) { | 109 | if (Auth::attempt($credentials, $request->has('remember'))) { |
110 | 110 | ||
111 | if (is_null(Auth::user()->email_verified_at)) { | 111 | if (is_null(Auth::user()->email_verified_at)) { |
112 | Auth::logout(); | 112 | Auth::logout(); |
113 | return back()->withErrors('Адрес почты не подтвержден')->withInput(); | 113 | return back()->withErrors('Адрес почты не подтвержден')->withInput(); |
114 | } | 114 | } |
115 | 115 | ||
116 | if (!Auth::user()->admin) { | 116 | if (!Auth::user()->admin) { |
117 | Auth::logout(); | 117 | Auth::logout(); |
118 | return //redirect()->route('admin.login') | 118 | return //redirect()->route('admin.login') |
119 | back()->withErrors('Вы не являетесь админом!')->withInput();; | 119 | back()->withErrors('Вы не являетесь админом!')->withInput();; |
120 | 120 | ||
121 | } | 121 | } |
122 | 122 | ||
123 | return redirect() | 123 | return redirect() |
124 | ->route('admin.index') | 124 | ->route('admin.index') |
125 | ->with('success', 'Вы вошли в личный кабинет.'); | 125 | ->with('success', 'Вы вошли в личный кабинет.'); |
126 | } | 126 | } |
127 | } | 127 | } |
128 | 128 | ||
129 | return redirect() | 129 | return redirect() |
130 | ->route('admin.login') | 130 | ->route('admin.login') |
131 | ->withErrors('Неверный логин или пароль!')->withInput(); | 131 | ->withErrors('Неверный логин или пароль!')->withInput(); |
132 | 132 | ||
133 | } | 133 | } |
134 | 134 | ||
135 | public function logout() { | 135 | public function logout() { |
136 | Auth::logout(); | 136 | Auth::logout(); |
137 | return redirect()->route('index') | 137 | return redirect()->route('index') |
138 | ->with('success', 'Вы вышли из личного кабинета'); | 138 | ->with('success', 'Вы вышли из личного кабинета'); |
139 | } | 139 | } |
140 | 140 | ||
141 | public function index() { | 141 | public function index() { |
142 | $all_user = User::query()->count(); | 142 | $all_user = User::query()->count(); |
143 | $all_employer = User::where('is_worker', '0')->count(); | 143 | $all_employer = User::where('is_worker', '0')->count(); |
144 | $all_worker = User::where('is_worker', '1')->count(); | 144 | $all_worker = User::where('is_worker', '1')->count(); |
145 | $all_admin = User::where('admin', '1')->count(); | 145 | $all_admin = User::where('admin', '1')->count(); |
146 | return view('admin.index', compact('all_employer', 'all_user', 'all_worker', 'all_admin')); | 146 | return view('admin.index', compact('all_employer', 'all_user', 'all_worker', 'all_admin')); |
147 | } | 147 | } |
148 | 148 | ||
149 | public function index_admin(Request $request) { | 149 | public function index_admin(Request $request) { |
150 | $title = 'Админка - Администраторы системы'; | 150 | $title = 'Админка - Администраторы системы'; |
151 | $id_admin = Auth::user()->id; | ||
151 | 152 | ||
152 | if ($request->ajax()) { | 153 | if ($request->ajax()) { |
153 | $user = User::find($request->id); | 154 | $user = User::find($request->id); |
154 | $request->offsetUnset('id'); | 155 | $request->offsetUnset('id'); |
155 | $user->update($request->all()); | 156 | $user->update($request->all()); |
156 | } | 157 | } |
157 | 158 | ||
158 | $users = User::where('admin', '1')->paginate(15); | 159 | $users = User::where('admin', '1')->paginate(15); |
159 | 160 | ||
160 | if ($request->ajax()) { | 161 | if ($request->ajax()) { |
161 | return view('admin.users.index_ajax', compact('users')); | 162 | return view('admin.users.index_ajax', compact('users', 'id_admin')); |
162 | } else { | 163 | } else { |
163 | return view('admin.users.index', compact('users', 'title')); | 164 | return view('admin.users.index', compact('users', 'title', 'id_admin')); |
164 | } | 165 | } |
165 | } | 166 | } |
166 | 167 | ||
167 | //Страница профиль пользователя - форма | 168 | //Страница профиль пользователя - форма |
168 | public function profile_user(User $user) { | 169 | public function profile_user(User $user) { |
169 | $visible = false; | 170 | $visible = false; |
170 | if($user->is_worker) { | 171 | if($user->is_worker) { |
171 | $caption = "Карточка работника"; | 172 | $caption = "Карточка работника"; |
172 | if (isset($user->workers[0]->id)) { | 173 | if (isset($user->workers[0]->id)) { |
173 | $link = route('admin.worker-profile', ['worker' => $user->workers[0]->id]); | 174 | $link = route('admin.worker-profile', ['worker' => $user->workers[0]->id]); |
174 | $visible = true; | 175 | //$visible = true; |
175 | } else { | 176 | } else { |
176 | $link = ""; | 177 | $link = ""; |
177 | } | 178 | } |
178 | 179 | ||
179 | } else { | 180 | } else { |
180 | $caption = "Карточка работодателя"; | 181 | $caption = "Карточка работодателя"; |
181 | if (isset($user->employers[0]->id)) { | 182 | if (isset($user->employers[0]->id)) { |
182 | 183 | ||
183 | $link = route('admin.employer-profile', ['employer' => $user->employers[0]->id]); | 184 | $link = route('admin.employer-profile', ['employer' => $user->employers[0]->id]); |
184 | $visible = true; | 185 | //$visible = true; |
185 | } else { | 186 | } else { |
186 | $link = ""; | 187 | $link = ""; |
187 | } | 188 | } |
188 | } | 189 | } |
189 | 190 | ||
190 | return view('admin.users.profile', compact('user', 'visible', 'link', 'caption')); | 191 | return view('admin.users.profile', compact('user', 'visible', 'link', 'caption')); |
191 | } | 192 | } |
192 | 193 | ||
193 | //Страница профиль пользователя - сохранение формы | 194 | //Страница профиль пользователя - сохранение формы |
194 | public function store_profile_user(User $user, Request $request) { | 195 | public function store_profile_user(User $user, Request $request) { |
195 | $rules = [ | 196 | $rules = [ |
196 | 'name' => 'required|min:3', | 197 | 'name' => 'required|min:3', |
197 | ]; | 198 | ]; |
198 | $messages = [ | 199 | $messages = [ |
199 | 'required' => 'Укажите обязательное поле', | 200 | 'required' => 'Укажите обязательное поле', |
200 | 'email' => 'Это поле должно быть определено, как Email' | 201 | 'email' => 'Это поле должно быть определено, как Email' |
201 | ]; | 202 | ]; |
202 | $validator = Validator::make($request->all(), $rules, $messages); | 203 | $validator = Validator::make($request->all(), $rules, $messages); |
203 | 204 | ||
204 | if ($validator->fails()) { | 205 | if ($validator->fails()) { |
205 | return redirect()->route('admin.user-profile', ['user' => $user->id]) | 206 | return redirect()->route('admin.user-profile', ['user' => $user->id]) |
206 | ->withErrors($validator); | 207 | ->withErrors($validator); |
207 | } else { | 208 | } else { |
208 | $user->update($request->all()); | 209 | $user->update($request->all()); |
209 | return redirect()->route('admin.user-profile', ['user' => $user->id]) | 210 | return redirect()->route('admin.user-profile', ['user' => $user->id]) |
210 | ->with('success', 'Данные были успешно сохранены'); | 211 | ->with('success', 'Данные были успешно сохранены'); |
211 | } | 212 | } |
212 | return redirect()->route('admin.user-profile', ['user' => $user->id]); | 213 | return redirect()->route('admin.user-profile', ['user' => $user->id]); |
213 | } | 214 | } |
214 | 215 | ||
215 | // Страница профиль админа - форма | 216 | // Страница профиль админа - форма |
216 | public function profile() { | 217 | public function profile() { |
217 | $id = Auth::user()->id; | 218 | $id = Auth::user()->id; |
218 | $user = User::find($id); | 219 | $user = User::find($id); |
219 | 220 | ||
220 | return view('admin.profile', compact('user')); | 221 | return view('admin.profile', compact('user')); |
221 | } | 222 | } |
222 | 223 | ||
223 | // Страница профиль админа - сохранение формы | 224 | // Страница профиль админа - сохранение формы |
224 | public function store_profile(Request $request) { | 225 | public function store_profile(Request $request) { |
225 | $id = Auth::user()->id; | 226 | $id = Auth::user()->id; |
226 | $user = User::find($id); | 227 | $user = User::find($id); |
227 | 228 | ||
228 | $rules = [ | 229 | $rules = [ |
229 | 'name' => 'required|min:3', | 230 | 'name' => 'required|min:3', |
230 | 'email' => 'required|email|min:3', | 231 | 'email' => 'required|email|min:3', |
231 | ]; | 232 | ]; |
232 | $messages = [ | 233 | $messages = [ |
233 | 'required' => 'Укажите обязательное поле', | 234 | 'required' => 'Укажите обязательное поле', |
234 | 'email' => 'Это поле должно быть определено, как Email' | 235 | 'email' => 'Это поле должно быть определено, как Email' |
235 | ]; | 236 | ]; |
236 | $validator = Validator::make($request->all(), $rules, $messages); | 237 | $validator = Validator::make($request->all(), $rules, $messages); |
237 | 238 | ||
238 | if ($validator->fails()) { | 239 | if ($validator->fails()) { |
239 | return redirect()->route('admin.profile') | 240 | return redirect()->route('admin.profile') |
240 | ->withErrors($validator); | 241 | ->withErrors($validator); |
241 | } else { | 242 | } else { |
242 | $user->update($request->all()); | 243 | $user->update($request->all()); |
243 | return redirect()->route('admin.profile') | 244 | return redirect()->route('admin.profile') |
244 | ->with('success', 'Данные были успешно сохранены'); | 245 | ->with('success', 'Данные были успешно сохранены'); |
245 | } | 246 | } |
246 | return redirect()->route('admin.profile'); | 247 | return redirect()->route('admin.profile'); |
247 | } | 248 | } |
248 | 249 | ||
249 | // Форма смены пароля администоратора | 250 | // Форма смены пароля администоратора |
250 | public function profile_password() { | 251 | public function profile_password() { |
251 | $id = Auth::user()->id; | 252 | $id = Auth::user()->id; |
252 | $user = User::find($id); | 253 | $user = User::find($id); |
253 | $username = $user->name; | 254 | $username = $user->name; |
254 | 255 | ||
255 | return view('admin.password', compact('username')); | 256 | return view('admin.password', compact('username')); |
256 | } | 257 | } |
257 | 258 | ||
258 | // Сохранение формы смены пароля администоратора | 259 | // Сохранение формы смены пароля администоратора |
259 | public function profile_password_new(Request $request) { | 260 | public function profile_password_new(Request $request) { |
260 | 261 | ||
261 | $rules = [ | 262 | $rules = [ |
262 | 'old_password' => 'required|min:6', //|current_password:api', | 263 | 'old_password' => 'required|min:6', //|current_password:api', |
263 | 'password' => 'required|min:6|confirmed', | 264 | 'password' => 'required|min:6|confirmed', |
264 | ]; | 265 | ]; |
265 | $messages = [ | 266 | $messages = [ |
266 | 'required' => 'Укажите обязательное поле', | 267 | 'required' => 'Укажите обязательное поле', |
267 | 'confirmed' => 'Пароли не совпадают' | 268 | 'confirmed' => 'Пароли не совпадают' |
268 | ]; | 269 | ]; |
269 | 270 | ||
270 | $validator = Validator::make($request->all(), $rules, $messages); | 271 | $validator = Validator::make($request->all(), $rules, $messages); |
271 | 272 | ||
272 | if (! Hash::check($request->old_password, $request->user()->password)) { | 273 | if (! Hash::check($request->old_password, $request->user()->password)) { |
273 | return back()->withErrors([ | 274 | return back()->withErrors([ |
274 | 'old_password' => ['Неверный предыдущий пароль'] | 275 | 'old_password' => ['Неверный предыдущий пароль'] |
275 | ]); | 276 | ]); |
276 | } | 277 | } |
277 | 278 | ||
278 | if ($validator->fails()) { | 279 | if ($validator->fails()) { |
279 | return redirect()->route('admin.password') | 280 | return redirect()->route('admin.password') |
280 | ->withErrors($validator); | 281 | ->withErrors($validator); |
281 | } else { | 282 | } else { |
282 | $params = $request->all(); | 283 | $params = $request->all(); |
283 | // устанавливаем новый пароль для пользователя | 284 | // устанавливаем новый пароль для пользователя |
284 | User::where('id', Auth::id()) | 285 | User::where('id', Auth::id()) |
285 | ->update(['password' => Hash::make($request->password)]); | 286 | ->update(['password' => Hash::make($request->password)]); |
286 | session()->flash('success', 'Успешно изменен пароль!'); | 287 | session()->flash('success', 'Успешно изменен пароль!'); |
287 | 288 | ||
288 | return redirect()->route('admin.password'); | 289 | return redirect()->route('admin.password'); |
289 | } | 290 | } |
290 | } | 291 | } |
291 | 292 | ||
292 | // Страница конфигурация сайта - форма | 293 | // Страница конфигурация сайта - форма |
293 | public function config_form() { | 294 | public function config_form() { |
294 | $config = Company::find(1); | 295 | $config = Company::find(1); |
295 | return view('admin.config', compact('config')); | 296 | return view('admin.config', compact('config')); |
296 | } | 297 | } |
297 | 298 | ||
298 | // Страница конфигурация сайта - сохранение формы | 299 | // Страница конфигурация сайта - сохранение формы |
299 | public function store_config(CompanyRequest $request) { | 300 | public function store_config(CompanyRequest $request) { |
300 | $config = Company::find(1); | 301 | $config = Company::find(1); |
301 | 302 | ||
302 | $params = $request->all(); | 303 | $params = $request->all(); |
303 | unset($params['logo']); | 304 | unset($params['logo']); |
304 | unset($params['image']); | 305 | unset($params['image']); |
305 | 306 | ||
306 | if ($request->has('logo')) { | 307 | if ($request->has('logo')) { |
307 | Storage::delete($config->logo); | 308 | Storage::delete($config->logo); |
308 | $params['logo'] = $request->file('logo')->store('config', 'public'); | 309 | $params['logo'] = $request->file('logo')->store('config', 'public'); |
309 | } | 310 | } |
310 | 311 | ||
311 | if ($request->has('image')) { | 312 | if ($request->has('image')) { |
312 | Storage::delete($config->image); | 313 | Storage::delete($config->image); |
313 | $params['image'] = $request->file('image')->store('config', 'public'); | 314 | $params['image'] = $request->file('image')->store('config', 'public'); |
314 | } | 315 | } |
315 | 316 | ||
316 | if (is_null($config)) { | 317 | if (is_null($config)) { |
317 | Company::create($params); | 318 | Company::create($params); |
318 | } else { | 319 | } else { |
319 | $config->update($params); | 320 | $config->update($params); |
320 | } | 321 | } |
321 | 322 | ||
322 | return redirect()->route('admin.config'); | 323 | return redirect()->route('admin.config'); |
323 | } | 324 | } |
324 | 325 | ||
325 | // кабинет - редактор сайта | ||
326 | public function editor() { | ||
327 | return; | ||
328 | } | ||
329 | |||
330 | // кабинет - редактор шапки-футера сайта | ||
331 | public function editblocks() { | ||
332 | return; | ||
333 | } | ||
334 | |||
335 | // кабинет - редактор должности на главной | ||
336 | public function job_titles_main() { | ||
337 | return; | ||
338 | } | ||
339 | |||
340 | // кабинет - редактор работодатели на главной | ||
341 | public function employers_main() { | ||
342 | return; | ||
343 | } | ||
344 | |||
345 | // кабинет - редактор seo-сайта | ||
346 | public function editor_seo() { | ||
347 | return; | ||
348 | } | ||
349 | 326 | ||
350 | // кабинет - редактор страниц | ||
351 | public function editor_pages() { | ||
352 | return; | ||
353 | } | ||
354 | |||
355 | // кабинет - реклама сайта | ||
356 | public function reclames() { | ||
357 | return; | ||
358 | } | ||
359 | } | 327 | } |
app/Http/Controllers/Admin/CompanyController.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 Illuminate\Http\Request; | 6 | use Illuminate\Http\Request; |
7 | 7 | ||
8 | class CompanyController extends Controller | 8 | class CompanyController extends Controller |
9 | { | 9 | { |
10 | // | 10 | // кабинет - редактор сайта |
11 | public function editor() { | ||
12 | return; | ||
13 | } | ||
14 | |||
15 | // кабинет - редактор шапки-футера сайта | ||
16 | public function editblocks() { | ||
17 | return; | ||
18 | } | ||
19 | |||
20 | // кабинет - редактор должности на главной | ||
21 | public function job_titles_main() { | ||
22 | return; | ||
23 | } | ||
24 | |||
25 | // кабинет - редактор работодатели на главной | ||
26 | public function employers_main() { | ||
27 | return; | ||
28 | } | ||
29 | |||
30 | // кабинет - редактор seo-сайта | ||
31 | public function editor_seo() { | ||
32 | return; | ||
33 | } | ||
34 | |||
35 | // кабинет - редактор страниц | ||
36 | public function editor_pages() { | ||
37 | return; | ||
38 | } | ||
39 | |||
40 | // кабинет - реклама сайта | ||
41 | public function reclames() { | ||
42 | return; | ||
43 | } | ||
11 | } | 44 | } |
12 | 45 |
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\Employer; | 6 | use App\Models\Employer; |
7 | use App\Models\User; | 7 | use App\Models\User; |
8 | use Illuminate\Http\Request; | 8 | use Illuminate\Http\Request; |
9 | use Illuminate\Support\Facades\Storage; | 9 | use Illuminate\Support\Facades\Storage; |
10 | use Illuminate\Support\Facades\Validator; | 10 | use Illuminate\Support\Facades\Validator; |
11 | 11 | ||
12 | class EmployersController extends Controller | 12 | class EmployersController extends Controller |
13 | { | 13 | { |
14 | public function index(Request $request) { | 14 | public function index(Request $request) { |
15 | if ($request->ajax()) { | 15 | if ($request->ajax()) { |
16 | $user = User::find($request->id); | 16 | $user = User::find($request->id); |
17 | $request->offsetUnset('id'); | 17 | $request->offsetUnset('id'); |
18 | $user->update($request->all()); | 18 | $user->update($request->all()); |
19 | } | 19 | } |
20 | 20 | ||
21 | $users = User::where('is_worker', '0')->paginate(15); | 21 | $users = User::where('is_worker', '0')->paginate(15); |
22 | if ($request->ajax()) { | 22 | if ($request->ajax()) { |
23 | return view('admin.employer.index_ajax', compact('users')); | 23 | return view('admin.employer.index_ajax', compact('users')); |
24 | } else { | 24 | } else { |
25 | return view('admin.employer.index', compact('users')); | 25 | return view('admin.employer.index', compact('users')); |
26 | } | 26 | } |
27 | } | 27 | } |
28 | 28 | ||
29 | public function form_update_employer(Employer $employer) { | 29 | public function form_update_employer(Employer $employer) { |
30 | return view('admin.employer.edit', compact('employer')); | 30 | return view('admin.employer.edit', compact('employer')); |
31 | } | 31 | } |
32 | 32 | ||
33 | public function update_employer(Employer $employer, Request $request) | 33 | public function update_employer(Employer $employer, Request $request) |
34 | { | 34 | { |
35 | $params = $request->all(); | 35 | $params = $request->all(); |
36 | unset($params['logo']); | 36 | unset($params['logo']); |
37 | unset($params['telephone']); | 37 | unset($params['telephone']); |
38 | unset($params['email']); | 38 | unset($params['email']); |
39 | unset($params['address']); | 39 | unset($params['address']); |
40 | unset($params['site']); | 40 | unset($params['site']); |
41 | 41 | ||
42 | $rules = [ | 42 | $rules = [ |
43 | 'name' => 'required|string|max:255', | 43 | 'name' => 'required|string|max:255', |
44 | ]; | 44 | ]; |
45 | 45 | ||
46 | $messages = [ | 46 | $messages = [ |
47 | 'required' => 'Укажите обязательное поле «:attribute»', | 47 | 'required' => 'Укажите обязательное поле «:attribute»', |
48 | 'confirmed' => 'Пароли не совпадают', | 48 | 'confirmed' => 'Пароли не совпадают', |
49 | 'email' => 'Введите корректный email', | 49 | 'email' => 'Введите корректный email', |
50 | 'min' => [ | 50 | 'min' => [ |
51 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 51 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
52 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 52 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
53 | ], | 53 | ], |
54 | 'max' => [ | 54 | 'max' => [ |
55 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 55 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
56 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 56 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
57 | ], | 57 | ], |
58 | ]; | 58 | ]; |
59 | 59 | ||
60 | $validator = Validator::make($params, $rules, $messages); | 60 | $validator = Validator::make($params, $rules, $messages); |
61 | 61 | ||
62 | if ($validator->fails()) { | 62 | if ($validator->fails()) { |
63 | return back()->withErrors($validator)->withInput(); //->route('admin.register') | 63 | return back()->withErrors($validator)->withInput(); //->route('admin.register') |
64 | 64 | ||
65 | } else { | 65 | } else { |
66 | 66 | ||
67 | //$user = User::find($employer->user_id); | 67 | //$user = User::find($employer->user_id); |
68 | $user_id = $employer->user_id; | 68 | $user_id = $employer->user_id; |
69 | $employer->telephone = $request->telephone; | 69 | $employer->telephone = $request->telephone; |
70 | $employer->email = $request->email; | 70 | $employer->email = $request->email; |
71 | $employer->address = $request->address; | 71 | $employer->address = $request->address; |
72 | $employer->site = $request->site; | 72 | $employer->site = $request->site; |
73 | $employer->text = $request->text; | 73 | $employer->text = $request->text; |
74 | 74 | ||
75 | if ($request->has('logo')) { | 75 | if ($request->has('logo')) { |
76 | if (!empty($employer->logo)) { | 76 | if (!empty($employer->logo)) { |
77 | Storage::delete($employer->logo); | 77 | Storage::delete($employer->logo); |
78 | } | 78 | } |
79 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); | 79 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); |
80 | } | 80 | } |
81 | $employer->save(); | 81 | $employer->save(); |
82 | 82 | ||
83 | $user = User::find($user_id); | 83 | $user = User::find($user_id); |
84 | $user->update($params); | 84 | $user->update($params); |
85 | 85 | ||
86 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) | 86 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) |
87 | ->with('success', 'Данные были успешно сохранены'); | 87 | ->with('success', 'Данные были успешно сохранены'); |
88 | } | 88 | } |
89 | } | 89 | } |
90 | |||
91 | // кабинет - отзывы о работодателе для модерации | ||
92 | public function answers() { | ||
93 | return; | ||
94 | } | ||
95 | |||
96 | // кабинет - статистика вакансий работодателя | ||
97 | public function static_ads() { | ||
98 | return; | ||
99 | } | ||
100 | |||
101 | |||
90 | } | 102 | } |
91 | 103 |
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\Models\User; | 6 | use App\Models\User; |
7 | use Illuminate\Http\Request; | 7 | use Illuminate\Http\Request; |
8 | use Illuminate\Support\Facades\Auth; | ||
8 | 9 | ||
9 | class UsersController extends Controller | 10 | class UsersController extends Controller |
10 | { | 11 | { |
11 | public function index(Request $request) { | 12 | public function index(Request $request) { |
12 | $title = 'Админка - Пользователи системы'; | 13 | $title = 'Админка - Пользователи системы'; |
13 | 14 | $id_admin = Auth::user()->id; | |
14 | if ($request->ajax()) { | 15 | if ($request->ajax()) { |
15 | $user = User::find($request->id); | 16 | $user = User::find($request->id); |
16 | $request->offsetUnset('id'); | 17 | $request->offsetUnset('id'); |
17 | $user->update($request->all()); | 18 | $user->update($request->all()); |
18 | } | 19 | } |
19 | 20 | ||
20 | $users = User::query()->paginate(15); | 21 | $users = User::query()->paginate(15); |
21 | 22 | ||
22 | if ($request->ajax()) { | 23 | if ($request->ajax()) { |
23 | return view('admin.users.index_ajax', compact('users')); | 24 | return view('admin.users.index_ajax', compact('users', 'id_admin')); |
24 | } else { | 25 | } else { |
25 | return view('admin.users.index', compact('users', 'title')); | 26 | return view('admin.users.index', compact('users', 'title', 'id_admin')); |
26 | } | 27 | } |
27 | } | 28 | } |
28 | 29 | ||
30 | public function roles() { | ||
31 | return; | ||
32 | } | ||
29 | } | 33 | } |
30 | 34 |
app/Http/Controllers/Admin/WorkersController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers\Admin; | 3 | namespace App\Http\Controllers\Admin; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Models\User; | 6 | use App\Models\User; |
7 | use App\Models\Worker; | 7 | use App\Models\Worker; |
8 | use Illuminate\Http\Request; | 8 | use Illuminate\Http\Request; |
9 | 9 | ||
10 | class WorkersController extends Controller | 10 | class WorkersController extends Controller |
11 | { | 11 | { |
12 | public function index(Request $request) { | 12 | public function index(Request $request) { |
13 | if ($request->ajax()) { | 13 | if ($request->ajax()) { |
14 | $user = User::find($request->id); | 14 | $user = User::find($request->id); |
15 | $request->offsetUnset('id'); | 15 | $request->offsetUnset('id'); |
16 | $user->update($request->all()); | 16 | $user->update($request->all()); |
17 | } | 17 | } |
18 | 18 | ||
19 | $users = User::where('is_worker', '1')->paginate(15); | 19 | $users = User::where('is_worker', '1')->paginate(15); |
20 | 20 | ||
21 | if ($request->ajax()) { | 21 | if ($request->ajax()) { |
22 | return view('admin.worker.index_ajax', compact('users')); | 22 | return view('admin.worker.index_ajax', compact('users')); |
23 | } else { | 23 | } else { |
24 | return view('admin.worker.index', compact('users')); | 24 | return view('admin.worker.index', compact('users')); |
25 | } | 25 | } |
26 | } | 26 | } |
27 | 27 | ||
28 | public function form_update_worker(Worker $worker) { | 28 | public function form_update_worker(Worker $worker) { |
29 | return view('admin.worker.edit'); | 29 | return view('admin.worker.edit'); |
30 | } | 30 | } |
31 | |||
32 | // кабинет - статистика работников | ||
33 | public function static_workers() { | ||
34 | return; | ||
35 | } | ||
36 | |||
37 | // кабинет - справочник - блоки информации для резюме работника | ||
38 | public function infobloks() { | ||
39 | return; | ||
40 | } | ||
31 | } | 41 | } |
32 | 42 |
app/Models/Ad_employer.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Ad_employer extends Model | 8 | class Ad_employer extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | |||
12 | /* | ||
13 | * Связь таблицы employers с таблицей ad_employers | ||
14 | */ | ||
15 | public function employer() { | ||
16 | return $this->belongsTo(Employer::class, 'employer_id'); | ||
17 | } | ||
11 | } | 18 | } |
12 | 19 |
public/assets/js/init-alpine.js
1 | function data() { | 1 | function data() { |
2 | function getThemeFromLocalStorage() { | 2 | function getThemeFromLocalStorage() { |
3 | // if user already changed the theme, use it | 3 | // if user already changed the theme, use it |
4 | if (window.localStorage.getItem('dark')) { | 4 | if (window.localStorage.getItem('dark')) { |
5 | return JSON.parse(window.localStorage.getItem('dark')) | 5 | return JSON.parse(window.localStorage.getItem('dark')) |
6 | } | 6 | } |
7 | 7 | ||
8 | // else return their preferences | 8 | // else return their preferences |
9 | return ( | 9 | return ( |
10 | !!window.matchMedia && | 10 | !!window.matchMedia && |
11 | window.matchMedia('(prefers-color-scheme: dark)').matches | 11 | window.matchMedia('(prefers-color-scheme: dark)').matches |
12 | ) | 12 | ) |
13 | } | 13 | } |
14 | 14 | ||
15 | function setThemeToLocalStorage(value) { | 15 | function setThemeToLocalStorage(value) { |
16 | window.localStorage.setItem('dark', value) | 16 | window.localStorage.setItem('dark', value) |
17 | } | 17 | } |
18 | 18 | ||
19 | return { | 19 | return { |
20 | dark: getThemeFromLocalStorage(), | 20 | dark: getThemeFromLocalStorage(), |
21 | toggleTheme() { | 21 | toggleTheme() { |
22 | this.dark = !this.dark | 22 | this.dark = !this.dark |
23 | setThemeToLocalStorage(this.dark) | 23 | setThemeToLocalStorage(this.dark) |
24 | }, | 24 | }, |
25 | isSideMenuOpen: false, | 25 | isSideMenuOpen: false, |
26 | toggleSideMenu() { | 26 | toggleSideMenu() { |
27 | this.isSideMenuOpen = !this.isSideMenuOpen | 27 | this.isSideMenuOpen = !this.isSideMenuOpen |
28 | }, | 28 | }, |
29 | closeSideMenu() { | 29 | closeSideMenu() { |
30 | this.isSideMenuOpen = false | 30 | this.isSideMenuOpen = false |
31 | }, | 31 | }, |
32 | isNotificationsMenuOpen: false, | 32 | isNotificationsMenuOpen: false, |
33 | toggleNotificationsMenu() { | 33 | toggleNotificationsMenu() { |
34 | this.isNotificationsMenuOpen = !this.isNotificationsMenuOpen | 34 | this.isNotificationsMenuOpen = !this.isNotificationsMenuOpen |
35 | }, | 35 | }, |
36 | closeNotificationsMenu() { | 36 | closeNotificationsMenu() { |
37 | this.isNotificationsMenuOpen = false | 37 | this.isNotificationsMenuOpen = false |
38 | }, | 38 | }, |
39 | isProfileMenuOpen: false, | 39 | isProfileMenuOpen: false, |
40 | toggleProfileMenu() { | 40 | toggleProfileMenu() { |
41 | this.isProfileMenuOpen = !this.isProfileMenuOpen | 41 | this.isProfileMenuOpen = !this.isProfileMenuOpen |
42 | }, | 42 | }, |
43 | closeProfileMenu() { | 43 | closeProfileMenu() { |
44 | this.isProfileMenuOpen = false | 44 | this.isProfileMenuOpen = false |
45 | }, | 45 | }, |
46 | isPagesMenuOpen: false, | 46 | isPagesMenuOpen: false, |
47 | togglePagesMenu() { | 47 | togglePagesMenu() { |
48 | this.isPagesMenuOpen = !this.isPagesMenuOpen | 48 | this.isPagesMenuOpen = !this.isPagesMenuOpen |
49 | }, | 49 | }, |
50 | open1: false, | ||
51 | open1() { | ||
52 | this.open1 = !this.open1 | ||
53 | }, | ||
50 | // Modal | 54 | // Modal |
51 | isModalOpen: false, | 55 | isModalOpen: false, |
52 | trapCleanup: null, | 56 | trapCleanup: null, |
53 | openModal() { | 57 | openModal() { |
54 | this.isModalOpen = true | 58 | this.isModalOpen = true |
55 | this.trapCleanup = focusTrap(document.querySelector('#modal')) | 59 | this.trapCleanup = focusTrap(document.querySelector('#modal')) |
56 | }, | 60 | }, |
57 | closeModal() { | 61 | closeModal() { |
58 | this.isModalOpen = false | 62 | this.isModalOpen = false |
59 | this.trapCleanup() | 63 | this.trapCleanup() |
60 | }, | 64 | }, |
61 | } | 65 | } |
62 | } | 66 | } |
63 | 67 |
resources/views/admin/ad_employers/index.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Работодатели']) | |
2 | |||
3 | @section('script') | ||
4 | @endsection | ||
5 | |||
6 | @section('search') | ||
7 | <div class="absolute inset-y-0 flex items-center pl-2"> | ||
8 | <svg | ||
9 | class="w-4 h-4" | ||
10 | aria-hidden="true" | ||
11 | fill="currentColor" | ||
12 | viewBox="0 0 20 20" | ||
13 | > | ||
14 | <path | ||
15 | fill-rule="evenodd" | ||
16 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" | ||
17 | clip-rule="evenodd" | ||
18 | ></path> | ||
19 | </svg> | ||
20 | </div> | ||
21 | <form action="" method="POST"> | ||
22 | <div style="float:left;"><input | ||
23 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" | ||
24 | style="width: 400px" | ||
25 | type="text" | ||
26 | placeholder="Искать..." | ||
27 | aria-label="Search" | ||
28 | /></div> | ||
29 | <div style="float: left"> | ||
30 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Искать</button> | ||
31 | </div> | ||
32 | </form> | ||
33 | @endsection | ||
34 | |||
35 | @section('content') | ||
36 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | ||
37 | <div class="w-full overflow-x-auto"> | ||
38 | <table class="w-full whitespace-no-wrap"> | ||
39 | <thead> | ||
40 | <tr | ||
41 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | ||
42 | > | ||
43 | <th class="px-4 py-3">№</th> | ||
44 | <th class="px-4 py-3">Название компании</th> | ||
45 | <th class="px-4 py-3">Вакансии</th> | ||
46 | <th class="px-4 py-3">Город</th> | ||
47 | <th class="px-4 py-3">Дата</th> | ||
48 | </tr> | ||
49 | </thead> | ||
50 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
51 | @foreach($ad_employers as $ad) | ||
52 | <tr class="text-gray-700 dark:text-gray-400"> | ||
53 | <td class="px-4 py-3"> | ||
54 | {{$ad->id}} | ||
55 | </td> | ||
56 | <td class="px-4 py-3"> | ||
57 | {{$ad->employers->name_company}} | ||
58 | </td> | ||
59 | <td class="px-4 py-3"> | ||
60 | <div class="flex items-center text-sm"> | ||
61 | <div> | ||
62 | |||
63 | <p class="font-semibold"></p> | ||
64 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
65 | </p> | ||
66 | |||
67 | </div> | ||
68 | </div> | ||
69 | |||
70 | </td> | ||
71 | <td class="px-4 py-3 text-sm"> | ||
72 | {{ $ad->city }} | ||
73 | </td> | ||
74 | <td class="px-4 py-3 text-sm"> | ||
75 | {{ $ad->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 | <?=$ad->appends($_GET)->links('admin.pagginate'); ?> | ||
85 | </div> | ||
86 | </div> | ||
87 | @endsection | ||
88 |
resources/views/admin/category/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Категории']) | 1 | @extends('layout.admin', ['title' => 'Админка - Категории']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.checkban', function () { | 6 | $(document).on('click', '.checkban', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var ajax_block = $('#ajax_block'); | 9 | var ajax_block = $('#ajax_block'); |
10 | var bool = 0; | 10 | var bool = 0; |
11 | 11 | ||
12 | if(this.checked){ | 12 | if(this.checked){ |
13 | bool = 1; | 13 | bool = 1; |
14 | } else { | 14 | } else { |
15 | bool = 0; | 15 | bool = 0; |
16 | } | 16 | } |
17 | 17 | ||
18 | $.ajax({ | 18 | $.ajax({ |
19 | type: "GET", | 19 | type: "GET", |
20 | url: "{{ url()->full()}}", | 20 | url: "{{ url()->full()}}", |
21 | data: "id=" + value + "&is_ban=" + bool, | 21 | data: "id=" + value + "&is_ban=" + bool, |
22 | success: function (data) { | 22 | success: function (data) { |
23 | console.log('Обновление таблицы пользователей '); | 23 | console.log('Обновление таблицы пользователей '); |
24 | //data = JSON.parse(data); | 24 | //data = JSON.parse(data); |
25 | console.log(data); | 25 | console.log(data); |
26 | ajax_block.html(data); | 26 | ajax_block.html(data); |
27 | }, | 27 | }, |
28 | headers: { | 28 | headers: { |
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
30 | }, | 30 | }, |
31 | error: function (data) { | 31 | error: function (data) { |
32 | console.log('Error: ' + data); | 32 | console.log('Error: ' + data); |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }); | 35 | }); |
36 | 36 | ||
37 | }); | 37 | }); |
38 | </script> | 38 | </script> |
39 | @endsection | 39 | @endsection |
40 | 40 | ||
41 | @section('search') | ||
42 | <div class="absolute inset-y-0 flex items-center pl-2"> | ||
43 | <svg | ||
44 | class="w-4 h-4" | ||
45 | aria-hidden="true" | ||
46 | fill="currentColor" | ||
47 | viewBox="0 0 20 20" | ||
48 | > | ||
49 | <path | ||
50 | fill-rule="evenodd" | ||
51 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" | ||
52 | clip-rule="evenodd" | ||
53 | ></path> | ||
54 | </svg> | ||
55 | </div> | ||
56 | <form action="" method="POST"> | ||
57 | <div style="float:left;"><input | ||
58 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" | ||
59 | style="width: 400px" | ||
60 | type="text" | ||
61 | placeholder="Искать..." | ||
62 | aria-label="Search" | ||
63 | /></div> | ||
64 | <div style="float: left"> | ||
65 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Искать</button> | ||
66 | </div> | ||
67 | </form> | ||
68 | @endsection | ||
69 | |||
41 | @section('content') | 70 | @section('content') |
42 | 71 | ||
43 | <a href="{{ route('admin.categories.create') }}" style="width: 210px" class="px-5 py-3 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"> | 72 | <a href="{{ route('admin.categories.create') }}" style="width: 210px" class="px-5 py-3 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"> |
44 | Добавить категорию | 73 | Добавить категорию |
45 | </a> | 74 | </a> |
46 | <br> | 75 | <br> |
47 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 76 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
48 | 77 | ||
49 | <div class="w-full overflow-x-auto"> | 78 | <div class="w-full overflow-x-auto"> |
50 | <table class="w-full whitespace-no-wrap"> | 79 | <table class="w-full whitespace-no-wrap"> |
51 | <thead> | 80 | <thead> |
52 | <tr | 81 | <tr |
53 | 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" | 82 | 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" |
54 | > | 83 | > |
55 | <th class="px-4 py-3">№</th> | 84 | <th class="px-4 py-3">№</th> |
56 | <th class="px-4 py-3">Название категории</th> | 85 | <th class="px-4 py-3">Название категории</th> |
57 | <th class="px-4 py-3">Дата создания</th> | 86 | <th class="px-4 py-3">Дата создания</th> |
58 | <th class="px-4 py-3">Редактировать</th> | 87 | <th class="px-4 py-3">Редактировать</th> |
59 | </tr> | 88 | </tr> |
60 | </thead> | 89 | </thead> |
61 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 90 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
62 | @foreach($category as $cat) | 91 | @foreach($category as $cat) |
63 | <tr class="text-gray-700 dark:text-gray-400"> | 92 | <tr class="text-gray-700 dark:text-gray-400"> |
64 | <td class="px-4 py-3"> | 93 | <td class="px-4 py-3"> |
65 | {{$cat->id}} | 94 | {{$cat->id}} |
66 | </td> | 95 | </td> |
67 | <td class="px-4 py-3"> | 96 | <td class="px-4 py-3"> |
68 | {{$cat->name}} | 97 | {{$cat->name}} |
69 | </td> | 98 | </td> |
70 | <td class="px-4 py-3"> | 99 | <td class="px-4 py-3"> |
71 | {{$cat->created_at}} | 100 | {{$cat->created_at}} |
72 | </td> | 101 | </td> |
73 | <td class="px-4 py-3 text-sm"> | 102 | <td class="px-4 py-3 text-sm"> |
74 | <form action="{{ route('admin.categories.destroy', ['category' => $cat->id]) }}" method="POST"> | 103 | <form action="{{ route('admin.categories.destroy', ['category' => $cat->id]) }}" method="POST"> |
75 | <a href="{{ route('admin.categories.edit', ['category' => $cat->id]) }}">Изменить</a> | | 104 | <a href="{{ route('admin.categories.edit', ['category' => $cat->id]) }}">Изменить</a> | |
76 | @csrf | 105 | @csrf |
77 | @method('DELETE') | 106 | @method('DELETE') |
78 | <input class=" btn-danger" type="submit" value="Удалить"> | 107 | <input class=" btn-danger" type="submit" value="Удалить"> |
79 | </form> | 108 | </form> |
80 | </td> | 109 | </td> |
81 | </tr> | 110 | </tr> |
82 | @endforeach | 111 | @endforeach |
83 | </tbody> | 112 | </tbody> |
84 | </table> | 113 | </table> |
85 | </div> | 114 | </div> |
86 | 115 | ||
87 | <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"> | 116 | <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"> |
88 | <?=$category->appends($_GET)->links('admin.pagginate'); ?> | 117 | <?=$category->appends($_GET)->links('admin.pagginate'); ?> |
89 | </div> | 118 | </div> |
90 | </div> | 119 | </div> |
91 | @endsection | 120 | @endsection |
92 | 121 |
resources/views/admin/employer/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Работодатели']) | 1 | @extends('layout.admin', ['title' => 'Админка - Работодатели']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.checkban', function () { | 6 | $(document).on('click', '.checkban', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var ajax_block = $('#ajax_block'); | 9 | var ajax_block = $('#ajax_block'); |
10 | var bool = 0; | 10 | var bool = 0; |
11 | 11 | ||
12 | if(this.checked){ | 12 | if(this.checked){ |
13 | bool = 1; | 13 | bool = 1; |
14 | } else { | 14 | } else { |
15 | bool = 0; | 15 | bool = 0; |
16 | } | 16 | } |
17 | 17 | ||
18 | $.ajax({ | 18 | $.ajax({ |
19 | type: "GET", | 19 | type: "GET", |
20 | url: "{{ url()->full()}}", | 20 | url: "{{ url()->full()}}", |
21 | data: "id=" + value + "&is_ban=" + bool, | 21 | data: "id=" + value + "&is_ban=" + bool, |
22 | success: function (data) { | 22 | success: function (data) { |
23 | console.log('Обновление таблицы пользователей '); | 23 | console.log('Обновление таблицы пользователей '); |
24 | //data = JSON.parse(data); | 24 | //data = JSON.parse(data); |
25 | console.log(data); | 25 | //console.log(data); |
26 | ajax_block.html(data); | 26 | ajax_block.html(data); |
27 | }, | 27 | }, |
28 | headers: { | 28 | headers: { |
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
30 | }, | 30 | }, |
31 | error: function (data) { | 31 | error: function (data) { |
32 | console.log('Error: ' + data); | 32 | console.log('Error: ' + data); |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }); | 35 | }); |
36 | 36 | ||
37 | }); | 37 | }); |
38 | </script> | 38 | </script> |
39 | @endsection | 39 | @endsection |
40 | 40 | ||
41 | @section('search') | ||
42 | <div class="absolute inset-y-0 flex items-center pl-2"> | ||
43 | <svg | ||
44 | class="w-4 h-4" | ||
45 | aria-hidden="true" | ||
46 | fill="currentColor" | ||
47 | viewBox="0 0 20 20" | ||
48 | > | ||
49 | <path | ||
50 | fill-rule="evenodd" | ||
51 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" | ||
52 | clip-rule="evenodd" | ||
53 | ></path> | ||
54 | </svg> | ||
55 | </div> | ||
56 | <form action="" method="POST"> | ||
57 | <div style="float:left;"><input | ||
58 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" | ||
59 | style="width: 400px" | ||
60 | type="text" | ||
61 | placeholder="Искать..." | ||
62 | aria-label="Search" | ||
63 | /></div> | ||
64 | <div style="float: left"> | ||
65 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Искать</button> | ||
66 | </div> | ||
67 | </form> | ||
68 | @endsection | ||
69 | |||
41 | @section('content') | 70 | @section('content') |
42 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 71 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
43 | <div class="w-full overflow-x-auto"> | 72 | <div class="w-full overflow-x-auto"> |
44 | <table class="w-full whitespace-no-wrap"> | 73 | <table class="w-full whitespace-no-wrap"> |
45 | <thead> | 74 | <thead> |
46 | <tr | 75 | <tr |
47 | 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" | 76 | 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" |
48 | > | 77 | > |
49 | <th class="px-4 py-3">№</th> | 78 | <th class="px-4 py-3">№</th> |
50 | <th class="px-4 py-3">Название компании</th> | 79 | <th class="px-4 py-3">Название компании</th> |
51 | <th class="px-4 py-3">Email/Телефон</th> | 80 | <th class="px-4 py-3">Email/Телефон</th> |
52 | <th class="px-4 py-3">Имя</th> | 81 | <th class="px-4 py-3">Имя</th> |
53 | <th class="px-4 py-3">Дата регистрации</th> | 82 | <th class="px-4 py-3">Дата регистрации</th> |
54 | <th class="px-4 py-3">Изменить</th> | 83 | <th class="px-4 py-3">Изменить</th> |
55 | <th class="px-4 py-3">Бан</th> | 84 | <th class="px-4 py-3">Бан</th> |
56 | </tr> | 85 | </tr> |
57 | </thead> | 86 | </thead> |
58 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 87 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
59 | @foreach($users as $user) | 88 | @foreach($users as $user) |
60 | <tr class="text-gray-700 dark:text-gray-400"> | 89 | <tr class="text-gray-700 dark:text-gray-400"> |
61 | <td class="px-4 py-3"> | 90 | <td class="px-4 py-3"> |
62 | {{$user->id}} | 91 | {{$user->id}} |
63 | </td> | 92 | </td> |
64 | <td class="px-4 py-3"> | 93 | <td class="px-4 py-3"> |
65 | {{$user->name}} | 94 | {{$user->name}} |
66 | </td> | 95 | </td> |
67 | <td class="px-4 py-3"> | 96 | <td class="px-4 py-3"> |
68 | <div class="flex items-center text-sm"> | 97 | <div class="flex items-center text-sm"> |
69 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 98 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
70 | <div | 99 | <div |
71 | class="absolute inset-0 rounded-full shadow-inner" | 100 | class="absolute inset-0 rounded-full shadow-inner" |
72 | aria-hidden="true" | 101 | aria-hidden="true" |
73 | ></div> | 102 | ></div> |
74 | </div>--> | 103 | </div>--> |
75 | <div> | 104 | <div> |
76 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | 105 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> |
77 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 106 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
78 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | 107 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} |
79 | </p> | 108 | </p> |
80 | </div> | 109 | </div> |
81 | </div> | 110 | </div> |
82 | 111 | ||
83 | </td> | 112 | </td> |
84 | <td class="px-4 py-3 text-sm"> | 113 | <td class="px-4 py-3 text-sm"> |
85 | {{ $user->name_man }} | 114 | {{ $user->name_man }} |
86 | </td> | 115 | </td> |
87 | <td class="px-4 py-3 text-sm"> | 116 | <td class="px-4 py-3 text-sm"> |
88 | {{ $user->created_at }} | 117 | {{ $user->created_at }} |
89 | </td> | 118 | </td> |
90 | <td class="px-4 py-3 text-sm"> | 119 | <td class="px-4 py-3 text-sm"> |
91 | @if ($user->id > 1) | 120 | @if ($user->id > 1) |
92 | <a href="{{ route('admin.user-profile', ['user' => $user->id]) }}">Изменить</a> | 121 | <a href="{{ route('admin.user-profile', ['user' => $user->id]) }}">Изменить</a> |
93 | @endif | 122 | @endif |
94 | </td> | 123 | </td> |
95 | <td class="px-4 py-3 text-sm"> | 124 | <td class="px-4 py-3 text-sm"> |
96 | @if ($user->id > 1) | 125 | @if ($user->id > 1) |
97 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 126 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
98 | @endif | 127 | @endif |
99 | </td> | 128 | </td> |
100 | </tr> | 129 | </tr> |
101 | @endforeach | 130 | @endforeach |
102 | </tbody> | 131 | </tbody> |
103 | </table> | 132 | </table> |
104 | </div> | 133 | </div> |
105 | 134 | ||
106 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 135 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
107 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 136 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
108 | </div> | 137 | </div> |
109 | </div> | 138 | </div> |
110 | @endsection | 139 | @endsection |
111 | 140 |
resources/views/admin/employer/index_ajax.blade.php
1 | <div class="w-full overflow-x-auto"> | 1 | <div class="w-full overflow-x-auto"> |
2 | <table class="w-full whitespace-no-wrap"> | 2 | <table class="w-full whitespace-no-wrap"> |
3 | <thead> | 3 | <thead> |
4 | <tr | 4 | <tr |
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
6 | > | 6 | > |
7 | <th class="px-4 py-3">№</th> | 7 | <th class="px-4 py-3">№</th> |
8 | <th class="px-4 py-3">Название компании</th> | 8 | <th class="px-4 py-3">Название компании</th> |
9 | <th class="px-4 py-3">Email/Телефон</th> | 9 | <th class="px-4 py-3">Email/Телефон</th> |
10 | <th class="px-4 py-3">Имя</th> | 10 | <th class="px-4 py-3">Имя</th> |
11 | <th class="px-4 py-3">Дата регистрации</th> | 11 | <th class="px-4 py-3">Дата регистрации</th> |
12 | <th class="px-4 py-3">Изменить</th> | 12 | <th class="px-4 py-3">Изменить</th> |
13 | <th class="px-4 py-3">Блокировать</th> | 13 | <th class="px-4 py-3">Бан</th> |
14 | </tr> | 14 | </tr> |
15 | </thead> | 15 | </thead> |
16 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 16 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
17 | @foreach($users as $user) | 17 | @foreach($users as $user) |
18 | <tr class="text-gray-700 dark:text-gray-400"> | 18 | <tr class="text-gray-700 dark:text-gray-400"> |
19 | <td class="px-4 py-3"> | 19 | <td class="px-4 py-3"> |
20 | {{$user->id}} | 20 | {{$user->id}} |
21 | </td> | 21 | </td> |
22 | <td class="px-4 py-3"> | 22 | <td class="px-4 py-3"> |
23 | {{$user->name}} | 23 | {{$user->name}} |
24 | </td> | 24 | </td> |
25 | <td class="px-4 py-3"> | 25 | <td class="px-4 py-3"> |
26 | <div class="flex items-center text-sm"> | 26 | <div class="flex items-center text-sm"> |
27 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 27 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
28 | <div | 28 | <div |
29 | class="absolute inset-0 rounded-full shadow-inner" | 29 | class="absolute inset-0 rounded-full shadow-inner" |
30 | aria-hidden="true" | 30 | aria-hidden="true" |
31 | ></div> | 31 | ></div> |
32 | </div>--> | 32 | </div>--> |
33 | <div> | 33 | <div> |
34 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | 34 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> |
35 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 35 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
36 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | 36 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} |
37 | </p> | 37 | </p> |
38 | </div> | 38 | </div> |
39 | </div> | 39 | </div> |
40 | 40 | ||
41 | </td> | 41 | </td> |
42 | <td class="px-4 py-3 text-sm"> | 42 | <td class="px-4 py-3 text-sm"> |
43 | {{ $user->name_man }} | 43 | {{ $user->name_man }} |
44 | </td> | 44 | </td> |
45 | <td class="px-4 py-3 text-sm"> | 45 | <td class="px-4 py-3 text-sm"> |
46 | {{ $user->created_at }} | 46 | {{ $user->created_at }} |
47 | </td> | 47 | </td> |
48 | <td class="px-4 py-3 text-sm"> | 48 | <td class="px-4 py-3 text-sm"> |
49 | <a href="">Изменить</a> | 49 | @if ($user->id > 1) |
50 | <a href="{{ route('admin.user-profile', ['user' => $user->id]) }}">Изменить</a> | ||
51 | @endif | ||
50 | </td> | 52 | </td> |
51 | <td class="px-4 py-3 text-sm"> | 53 | <td class="px-4 py-3 text-sm"> |
52 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 54 | @if ($user->id > 1) |
55 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | ||
56 | @endif | ||
53 | </td> | 57 | </td> |
54 | </tr> | 58 | </tr> |
55 | @endforeach | 59 | @endforeach |
56 | </tbody> | 60 | </tbody> |
57 | </table> | 61 | </table> |
58 | </div> | 62 | </div> |
59 | 63 | ||
60 | <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"> | 64 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
61 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | 65 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> |
62 | <?=$users->links('admin.pagginate'); ?> | 66 | <?=$users->links('admin.pagginate'); ?> |
63 | </div> | 67 | </div> |
64 | 68 | ||
65 | 69 |
resources/views/admin/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Главная страница']) | 1 | @extends('layout.admin', ['title' => 'Админка - Главная страница']) |
2 | 2 | ||
3 | @section('content') | 3 | @section('content') |
4 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 4 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
5 | 5 | ||
6 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 6 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
7 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> | 7 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> |
8 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 8 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
9 | <path | 9 | <path |
10 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> | 10 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> |
11 | </svg> | 11 | </svg> |
12 | </div> | 12 | </div> |
13 | <div> | 13 | <div> |
14 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 14 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
15 | Всего пользователей | 15 | Всего пользователей |
16 | </p> | 16 | </p> |
17 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 17 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
18 | {{ $all_user }} | 18 | {{ $all_user }} |
19 | </p> | 19 | </p> |
20 | </div> | 20 | </div> |
21 | </div> | 21 | </div> |
22 | 22 | ||
23 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 23 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
24 | <div class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500"> | 24 | <div class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500"> |
25 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 25 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
26 | <path | 26 | <path |
27 | fill-rule="evenodd" | 27 | fill-rule="evenodd" |
28 | d="M4 4a2 2 0 00-2 2v4a2 2 0 002 2V6h10a2 2 0 00-2-2H4zm2 6a2 2 0 012-2h8a2 2 0 012 2v4a2 2 0 01-2 2H8a2 2 0 01-2-2v-4zm6 4a2 2 0 100-4 2 2 0 000 4z" | 28 | d="M4 4a2 2 0 00-2 2v4a2 2 0 002 2V6h10a2 2 0 00-2-2H4zm2 6a2 2 0 012-2h8a2 2 0 012 2v4a2 2 0 01-2 2H8a2 2 0 01-2-2v-4zm6 4a2 2 0 100-4 2 2 0 000 4z" |
29 | clip-rule="evenodd" | 29 | clip-rule="evenodd" |
30 | ></path> | 30 | ></path> |
31 | </svg> | 31 | </svg> |
32 | </div> | 32 | </div> |
33 | <div> | 33 | <div> |
34 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 34 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
35 | Работодателей | 35 | Работодателей |
36 | </p> | 36 | </p> |
37 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 37 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
38 | {{ $all_employer }} | 38 | {{ $all_employer }} |
39 | </p> | 39 | </p> |
40 | </div> | 40 | </div> |
41 | </div> | 41 | </div> |
42 | 42 | ||
43 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 43 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
44 | <div class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500"> | 44 | <div class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500"> |
45 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 45 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
46 | <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path> | 46 | <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path> |
47 | </svg> | 47 | </svg> |
48 | </div> | 48 | </div> |
49 | <div> | 49 | <div> |
50 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 50 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
51 | Соискателей | 51 | Соискателей |
52 | </p> | 52 | </p> |
53 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 53 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
54 | {{$all_worker}} | 54 | {{$all_worker}} |
55 | </p> | 55 | </p> |
56 | </div> | 56 | </div> |
57 | </div> | 57 | </div> |
58 | 58 | ||
59 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 59 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
60 | <div class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500"> | 60 | <div class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500"> |
61 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 61 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
62 | <path | 62 | <path |
63 | fill-rule="evenodd" | 63 | fill-rule="evenodd" |
64 | d="M18 5v8a2 2 0 01-2 2h-5l-5 4v-4H4a2 2 0 01-2-2V5a2 2 0 012-2h12a2 2 0 012 2zM7 8H5v2h2V8zm2 0h2v2H9V8zm6 0h-2v2h2V8z" | 64 | d="M18 5v8a2 2 0 01-2 2h-5l-5 4v-4H4a2 2 0 01-2-2V5a2 2 0 012-2h12a2 2 0 012 2zM7 8H5v2h2V8zm2 0h2v2H9V8zm6 0h-2v2h2V8z" |
65 | clip-rule="evenodd" | 65 | clip-rule="evenodd" |
66 | ></path> | 66 | ></path> |
67 | </svg> | 67 | </svg> |
68 | </div> | 68 | </div> |
69 | <div> | 69 | <div> |
70 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 70 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
71 | Администраторы | 71 | Администраторы |
72 | </p> | 72 | </p> |
73 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 73 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
74 | {{$all_admin}} | 74 | {{$all_admin}} |
75 | </p> | 75 | </p> |
76 | </div> | 76 | </div> |
77 | </div> | 77 | </div> |
78 | </div> | 78 | </div> |
79 | 79 | ||
80 | <!-- Таблицы --> | 80 | <!-- Таблицы --> |
81 | 81 | ||
82 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 82 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> |
83 | <div class="w-full overflow-x-auto"> | 83 | <div class="w-full overflow-x-auto"> |
84 | <table class="w-full whitespace-no-wrap"> | 84 | <table class="w-full whitespace-no-wrap"> |
85 | <thead> | 85 | <thead> |
86 | <tr | 86 | <tr |
87 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 87 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
88 | > | 88 | > |
89 | <th class="px-4 py-3">Название</th> | 89 | <th class="px-4 py-3">Название</th> |
90 | <th class="px-4 py-3">Таблица</th> | 90 | <th class="px-4 py-3">Таблица</th> |
91 | <th class="px-4 py-3">Редактирование</th> | 91 | <th class="px-4 py-3">Редактирование</th> |
92 | <th class="px-4 py-3">Дата</th> | 92 | <th class="px-4 py-3">Дата</th> |
93 | </tr> | 93 | </tr> |
94 | </thead> | 94 | </thead> |
95 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 95 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
96 | <tr class="text-gray-700 dark:text-gray-400"> | 96 | <tr class="text-gray-700 dark:text-gray-400"> |
97 | <td class="px-4 py-3"> | 97 | <td class="px-4 py-3"> |
98 | <div class="flex items-center text-sm"> | 98 | <div class="flex items-center text-sm"> |
99 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 99 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
100 | <div | 100 | <div |
101 | class="absolute inset-0 rounded-full shadow-inner" | 101 | class="absolute inset-0 rounded-full shadow-inner" |
102 | aria-hidden="true" | 102 | aria-hidden="true" |
103 | ></div> | 103 | ></div> |
104 | </div> | 104 | </div> |
105 | <div> | 105 | <div> |
106 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | 106 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> |
107 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 107 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
108 | Все пользователи сайта | 108 | Все пользователи сайта |
109 | </p> | 109 | </p> |
110 | </div> | 110 | </div> |
111 | </div> | 111 | </div> |
112 | </td> | 112 | </td> |
113 | <td class="px-4 py-3 text-sm"> | 113 | <td class="px-4 py-3 text-sm"> |
114 | users | 114 | users |
115 | </td> | 115 | </td> |
116 | <td class="px-4 py-3 text-xs"> | 116 | <td class="px-4 py-3 text-xs"> |
117 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 117 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
118 | Доступно | 118 | Доступно |
119 | </span> | 119 | </span> |
120 | <!--<span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 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 | Недоступно | 121 | Недоступно |
122 | </span>--> | 122 | </span>--> |
123 | </td> | 123 | </td> |
124 | <td class="px-4 py-3 text-sm"> | 124 | <td class="px-4 py-3 text-sm"> |
125 | май 2023 | 125 | май 2023 |
126 | </td> | 126 | </td> |
127 | </tr> | 127 | </tr> |
128 | 128 | ||
129 | <tr class="text-gray-700 dark:text-gray-400"> | 129 | <tr class="text-gray-700 dark:text-gray-400"> |
130 | <td class="px-4 py-3"> | 130 | <td class="px-4 py-3"> |
131 | <div class="flex items-center text-sm"> | 131 | <div class="flex items-center text-sm"> |
132 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 132 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
133 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 133 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
134 | </div> | 134 | </div> |
135 | <div> | 135 | <div> |
136 | <p class="font-semibold"><a href="{{ route('admin.employers') }}">Работодатели</a></p> | 136 | <p class="font-semibold"><a href="{{ route('admin.employers') }}">Работодатели</a></p> |
137 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 137 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
138 | Все работодатели сайта | 138 | Все работодатели сайта |
139 | </p> | 139 | </p> |
140 | </div> | 140 | </div> |
141 | </div> | 141 | </div> |
142 | </td> | 142 | </td> |
143 | <td class="px-4 py-3 text-sm"> | 143 | <td class="px-4 py-3 text-sm"> |
144 | employers | 144 | employers |
145 | </td> | 145 | </td> |
146 | <td class="px-4 py-3 text-xs"> | 146 | <td class="px-4 py-3 text-xs"> |
147 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 147 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
148 | Доступно | 148 | Доступно |
149 | </span> | 149 | </span> |
150 | </td> | 150 | </td> |
151 | <td class="px-4 py-3 text-sm"> | 151 | <td class="px-4 py-3 text-sm"> |
152 | май 2023 | 152 | май 2023 |
153 | </td> | 153 | </td> |
154 | </tr> | 154 | </tr> |
155 | 155 | ||
156 | <tr class="text-gray-700 dark:text-gray-400"> | 156 | <tr class="text-gray-700 dark:text-gray-400"> |
157 | <td class="px-4 py-3"> | 157 | <td class="px-4 py-3"> |
158 | <div class="flex items-center text-sm"> | 158 | <div class="flex items-center text-sm"> |
159 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 159 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
160 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 160 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
161 | </div> | 161 | </div> |
162 | <div> | 162 | <div> |
163 | <p class="font-semibold"><a href="{{ route('admin.workers') }}">Соискатели</a></p> | 163 | <p class="font-semibold"><a href="{{ route('admin.workers') }}">Соискатели</a></p> |
164 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 164 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
165 | Все работники сайта | 165 | Все работники сайта |
166 | </p> | 166 | </p> |
167 | </div> | 167 | </div> |
168 | </div> | 168 | </div> |
169 | </td> | 169 | </td> |
170 | <td class="px-4 py-3 text-sm"> | 170 | <td class="px-4 py-3 text-sm"> |
171 | workers | 171 | workers |
172 | </td> | 172 | </td> |
173 | <td class="px-4 py-3 text-xs"> | 173 | <td class="px-4 py-3 text-xs"> |
174 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 174 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
175 | Доступно | 175 | Доступно |
176 | </span> | 176 | </span> |
177 | </td> | 177 | </td> |
178 | <td class="px-4 py-3 text-sm"> | 178 | <td class="px-4 py-3 text-sm"> |
179 | май 2023 | 179 | май 2023 |
180 | </td> | 180 | </td> |
181 | </tr> | 181 | </tr> |
182 | 182 | ||
183 | <tr class="text-gray-700 dark:text-gray-400"> | 183 | <tr class="text-gray-700 dark:text-gray-400"> |
184 | <td class="px-4 py-3"> | 184 | <td class="px-4 py-3"> |
185 | <div class="flex items-center text-sm"> | 185 | <div class="flex items-center text-sm"> |
186 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 186 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
187 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 187 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
188 | </div> | 188 | </div> |
189 | <div> | 189 | <div> |
190 | <p class="font-semibold"><a href="{{ route('admin.ad-employers') }}">Вакансии</a></p> | 190 | <p class="font-semibold"><a href="{{ route('admin.ad-employers') }}">Вакансии</a></p> |
191 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 191 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
192 | Все вакансии сайта | 192 | Все вакансии сайта |
193 | </p> | 193 | </p> |
194 | </div> | 194 | </div> |
195 | </div> | 195 | </div> |
196 | </td> | 196 | </td> |
197 | <td class="px-4 py-3 text-sm"> | 197 | <td class="px-4 py-3 text-sm"> |
198 | ad_employers | 198 | ad_employers |
199 | </td> | 199 | </td> |
200 | <td class="px-4 py-3 text-xs"> | 200 | <td class="px-4 py-3 text-xs"> |
201 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 201 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
202 | Доступно | 202 | Доступно |
203 | </span> | 203 | </span> |
204 | </td> | 204 | </td> |
205 | <td class="px-4 py-3 text-sm"> | 205 | <td class="px-4 py-3 text-sm"> |
206 | май 2023 | 206 | май 2023 |
207 | </td> | 207 | </td> |
208 | </tr> | 208 | </tr> |
209 | 209 | ||
210 | <tr class="text-gray-700 dark:text-gray-400"> | 210 | <tr class="text-gray-700 dark:text-gray-400"> |
211 | <td class="px-4 py-3"> | 211 | <td class="px-4 py-3"> |
212 | <div class="flex items-center text-sm"> | 212 | <div class="flex items-center text-sm"> |
213 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 213 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
214 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 214 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
215 | </div> | 215 | </div> |
216 | <div> | 216 | <div> |
217 | <p class="font-semibold"><a href="{{ route('admin.categories.index') }}">Категории</a></p> | 217 | <p class="font-semibold"><a href="{{ route('admin.categories.index') }}">Категории</a></p> |
218 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 218 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
219 | Справочник категории (по умолчанию: река, море, река-море) | 219 | Справочник категории (по умолчанию: река, море, река-море) |
220 | </p> | 220 | </p> |
221 | </div> | 221 | </div> |
222 | </div> | 222 | </div> |
223 | </td> | 223 | </td> |
224 | <td class="px-4 py-3 text-sm"> | 224 | <td class="px-4 py-3 text-sm"> |
225 | category | 225 | category |
226 | </td> | 226 | </td> |
227 | <td class="px-4 py-3 text-xs"> | 227 | <td class="px-4 py-3 text-xs"> |
228 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 228 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
229 | Доступно | 229 | Доступно |
230 | </span> | 230 | </span> |
231 | </td> | 231 | </td> |
232 | <td class="px-4 py-3 text-sm"> | 232 | <td class="px-4 py-3 text-sm"> |
233 | май 2023 | 233 | май 2023 |
234 | </td> | 234 | </td> |
235 | </tr> | 235 | </tr> |
236 | 236 | ||
237 | <tr class="text-gray-700 dark:text-gray-400"> | 237 | <tr class="text-gray-700 dark:text-gray-400"> |
238 | <td class="px-4 py-3"> | 238 | <td class="px-4 py-3"> |
239 | <div class="flex items-center text-sm"> | 239 | <div class="flex items-center text-sm"> |
240 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 240 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
241 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 241 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
242 | </div> | 242 | </div> |
243 | <div> | 243 | <div> |
244 | <p class="font-semibold"><a href="{{ route('admin.job-titles') }}">Должности</a></p> | 244 | <p class="font-semibold"><a href="{{ route('admin.job-titles') }}">Должности</a></p> |
245 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 245 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
246 | Все должности | 246 | Справочник должности (все должности проекта) |
247 | </p> | 247 | </p> |
248 | </div> | 248 | </div> |
249 | </div> | 249 | </div> |
250 | </td> | 250 | </td> |
251 | <td class="px-4 py-3 text-sm"> | 251 | <td class="px-4 py-3 text-sm"> |
252 | job_titles | 252 | job_titles |
253 | </td> | 253 | </td> |
254 | <td class="px-4 py-3 text-xs"> | 254 | <td class="px-4 py-3 text-xs"> |
255 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 255 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
256 | Доступно | 256 | Доступно |
257 | </span> | 257 | </span> |
258 | </td> | 258 | </td> |
259 | <td class="px-4 py-3 text-sm"> | 259 | <td class="px-4 py-3 text-sm"> |
260 | май 2023 | 260 | май 2023 |
261 | </td> | 261 | </td> |
262 | </tr> | 262 | </tr> |
263 | 263 | ||
264 | <tr class="text-gray-700 dark:text-gray-400"> | 264 | <tr class="text-gray-700 dark:text-gray-400"> |
265 | <td class="px-4 py-3"> | 265 | <td class="px-4 py-3"> |
266 | <div class="flex items-center text-sm"> | 266 | <div class="flex items-center text-sm"> |
267 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 267 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
268 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 268 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
269 | </div> | 269 | </div> |
270 | <div> | 270 | <div> |
271 | <p class="font-semibold"><a href="{{ route('admin.infobloks') }}">Документы-Дипломы</a></p> | ||
272 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
273 | Справочник документы-дипломы (все блоки-документы необходимые соискателю) | ||
274 | </p> | ||
275 | </div> | ||
276 | </div> | ||
277 | </td> | ||
278 | <td class="px-4 py-3 text-sm"> | ||
279 | infobloks | ||
280 | </td> | ||
281 | <td class="px-4 py-3 text-xs"> | ||
282 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | ||
283 | Доступно | ||
284 | </span> | ||
285 | </td> | ||
286 | <td class="px-4 py-3 text-sm"> | ||
287 | сентябрь 2023 | ||
288 | </td> | ||
289 | </tr> | ||
290 | |||
291 | <tr class="text-gray-700 dark:text-gray-400"> | ||
292 | <td class="px-4 py-3"> | ||
293 | <div class="flex items-center text-sm"> | ||
294 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
295 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | ||
296 | </div> | ||
297 | <div> | ||
271 | <p class="font-semibold"><a href="{{ route('admin.messages') }}">Сообщения</a></p> | 298 | <p class="font-semibold"><a href="{{ route('admin.messages') }}">Сообщения</a></p> |
272 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 299 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
273 | Все сообщения сайта | 300 | Все сообщения сайта |
274 | </p> | 301 | </p> |
275 | </div> | 302 | </div> |
276 | </div> | 303 | </div> |
277 | </td> | 304 | </td> |
278 | <td class="px-4 py-3 text-sm"> | 305 | <td class="px-4 py-3 text-sm"> |
279 | messages | 306 | messages |
280 | </td> | 307 | </td> |
281 | <td class="px-4 py-3 text-xs"> | 308 | <td class="px-4 py-3 text-xs"> |
282 | <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"> | 309 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
283 | Недоступно | 310 | Недоступно |
284 | </span> | 311 | </span> |
285 | </td> | 312 | </td> |
286 | <td class="px-4 py-3 text-sm"> | 313 | <td class="px-4 py-3 text-sm"> |
287 | май 2023 | 314 | май 2023 |
288 | </td> | 315 | </td> |
289 | </tr> | 316 | </tr> |
290 | 317 | ||
291 | <tr class="text-gray-700 dark:text-gray-400"> | 318 | <tr class="text-gray-700 dark:text-gray-400"> |
292 | <td class="px-4 py-3"> | 319 | <td class="px-4 py-3"> |
293 | <div class="flex items-center text-sm"> | 320 | <div class="flex items-center text-sm"> |
294 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 321 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
295 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | 322 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> |
296 | </div> | 323 | </div> |
297 | <div> | 324 | <div> |
298 | <p class="font-semibold"><a href="{{ route('admin.groups') }}">Группы пользователей</a></p> | 325 | <p class="font-semibold"><a href="{{ route('admin.groups') }}">Группы пользователей</a></p> |
299 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 326 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
300 | Группировка людей в именованные группы | 327 | Группировка людей в именованные группы |
301 | </p> | 328 | </p> |
302 | </div> | 329 | </div> |
303 | </div> | 330 | </div> |
304 | </td> | 331 | </td> |
305 | <td class="px-4 py-3 text-sm"> | 332 | <td class="px-4 py-3 text-sm"> |
306 | group_users | 333 | group_users |
307 | </td> | 334 | </td> |
308 | <td class="px-4 py-3 text-xs"> | 335 | <td class="px-4 py-3 text-xs"> |
309 | <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"> | 336 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
310 | Доступно | 337 | Доступно |
311 | </span> | 338 | </span> |
312 | </td> | 339 | </td> |
313 | <td class="px-4 py-3 text-sm"> | 340 | <td class="px-4 py-3 text-sm"> |
314 | май 2023 | 341 | май 2023 |
315 | </td> | 342 | </td> |
316 | </tr> | 343 | </tr> |
317 | 344 | ||
345 | <tr class="text-gray-700 dark:text-gray-400"> | ||
346 | <td class="px-4 py-3"> | ||
347 | <div class="flex items-center text-sm"> | ||
348 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
349 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | ||
350 | </div> | ||
351 | <div> | ||
352 | <p class="font-semibold"><a href="{{ route('admin.roles') }}">Роли пользователей</a></p> | ||
353 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
354 | Роли людей (запреты и доступы) в системе | ||
355 | </p> | ||
356 | </div> | ||
357 | </div> | ||
358 | </td> | ||
359 | <td class="px-4 py-3 text-sm"> | ||
360 | users | ||
361 | </td> | ||
362 | <td class="px-4 py-3 text-xs"> | ||
363 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | ||
364 | Доступно | ||
365 | </span> | ||
366 | </td> | ||
367 | <td class="px-4 py-3 text-sm"> | ||
368 | сентябрь 2023 | ||
369 | </td> | ||
370 | </tr> | ||
318 | 371 | ||
372 | <tr class="text-gray-700 dark:text-gray-400"> | ||
373 | <td class="px-4 py-3"> | ||
374 | <div class="flex items-center text-sm"> | ||
375 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
376 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | ||
377 | </div> | ||
378 | <div> | ||
379 | <p class="font-semibold"><a href="{{ route('admin.statics') }}">Статистика</a></p> | ||
380 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
381 | Статистика соискателей и работодателей | ||
382 | </p> | ||
383 | </div> | ||
384 | </div> | ||
385 | </td> | ||
386 | <td class="px-4 py-3 text-sm"> | ||
387 | static_workers, static_ads | ||
388 | </td> | ||
389 | <td class="px-4 py-3 text-xs"> | ||
390 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | ||
391 | Недоступно | ||
392 | </span> | ||
393 | </td> | ||
394 | <td class="px-4 py-3 text-sm"> | ||
395 | сентябрь 2023 | ||
396 | </td> | ||
397 | </tr> | ||
398 | |||
399 | <tr class="text-gray-700 dark:text-gray-400"> | ||
400 | <td class="px-4 py-3"> | ||
401 | <div class="flex items-center text-sm"> | ||
402 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
403 | <div class="absolute inset-0 rounded-full shadow-inner" aria-hidden="true"></div> | ||
404 | </div> | ||
405 | <div> | ||
406 | <p class="font-semibold"><a href="{{ route('admin.editor-site') }}">Редактор сайта</a></p> | ||
407 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
408 | Все редакторы системы | ||
409 | </p> | ||
410 | </div> | ||
411 | </div> | ||
412 | </td> | ||
413 | <td class="px-4 py-3 text-sm"> | ||
414 | header_footer, job_titles_mains, employers_mains,<br> pages, seo, reclames, companies | ||
415 | </td> | ||
416 | <td class="px-4 py-3 text-xs"> | ||
417 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | ||
418 | Доступно | ||
419 | </span> | ||
420 | </td> | ||
421 | <td class="px-4 py-3 text-sm"> | ||
422 | сентябрь 2023 | ||
423 | </td> | ||
424 | </tr> | ||
319 | 425 | ||
320 | <!--<tr class="text-gray-700 dark:text-gray-400"> | 426 | <!--<tr class="text-gray-700 dark:text-gray-400"> |
321 | <td class="px-4 py-3"> | 427 | <td class="px-4 py-3"> |
322 | <div class="flex items-center text-sm"> | 428 | <div class="flex items-center text-sm"> |
323 | 429 | ||
324 | <div | 430 | <div |
325 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 431 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
326 | > | 432 | > |
327 | <img | 433 | <img |
328 | class="object-cover w-full h-full rounded-full" | 434 | class="object-cover w-full h-full rounded-full" |
329 | 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" | 435 | 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" |
330 | alt="" | 436 | alt="" |
331 | loading="lazy" | 437 | loading="lazy" |
332 | /> | 438 | /> |
333 | <div | 439 | <div |
334 | class="absolute inset-0 rounded-full shadow-inner" | 440 | class="absolute inset-0 rounded-full shadow-inner" |
335 | aria-hidden="true" | 441 | aria-hidden="true" |
336 | ></div> | 442 | ></div> |
337 | </div> | 443 | </div> |
338 | <div> | 444 | <div> |
339 | <p class="font-semibold">Sarah Curry</p> | 445 | <p class="font-semibold">Sarah Curry</p> |
340 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 446 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
341 | Designer | 447 | Designer |
342 | </p> | 448 | </p> |
343 | </div> | 449 | </div> |
344 | </div> | 450 | </div> |
345 | </td> | 451 | </td> |
346 | <td class="px-4 py-3 text-sm"> | 452 | <td class="px-4 py-3 text-sm"> |
347 | $ 86.00 | 453 | $ 86.00 |
348 | </td> | 454 | </td> |
349 | <td class="px-4 py-3 text-xs"> | 455 | <td class="px-4 py-3 text-xs"> |
350 | <span | 456 | <span |
351 | 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" | 457 | 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" |
352 | > | 458 | > |
353 | Denied | 459 | Denied |
354 | </span> | 460 | </span> |
355 | </td> | 461 | </td> |
356 | <td class="px-4 py-3 text-sm"> | 462 | <td class="px-4 py-3 text-sm"> |
357 | 6/10/2020 | 463 | 6/10/2020 |
358 | </td> | 464 | </td> |
359 | </tr> | 465 | </tr> |
360 | 466 | ||
361 | <tr class="text-gray-700 dark:text-gray-400"> | 467 | <tr class="text-gray-700 dark:text-gray-400"> |
362 | <td class="px-4 py-3"> | 468 | <td class="px-4 py-3"> |
363 | <div class="flex items-center text-sm"> | 469 | <div class="flex items-center text-sm"> |
364 | 470 | ||
365 | <div | 471 | <div |
366 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 472 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
367 | > | 473 | > |
368 | <img | 474 | <img |
369 | class="object-cover w-full h-full rounded-full" | 475 | class="object-cover w-full h-full rounded-full" |
370 | 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" | 476 | 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" |
371 | alt="" | 477 | alt="" |
372 | loading="lazy" | 478 | loading="lazy" |
373 | /> | 479 | /> |
374 | <div | 480 | <div |
375 | class="absolute inset-0 rounded-full shadow-inner" | 481 | class="absolute inset-0 rounded-full shadow-inner" |
376 | aria-hidden="true" | 482 | aria-hidden="true" |
377 | ></div> | 483 | ></div> |
378 | </div> | 484 | </div> |
379 | <div> | 485 | <div> |
380 | <p class="font-semibold">Rulia Joberts</p> | 486 | <p class="font-semibold">Rulia Joberts</p> |
381 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 487 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
382 | Actress | 488 | Actress |
383 | </p> | 489 | </p> |
384 | </div> | 490 | </div> |
385 | </div> | 491 | </div> |
386 | </td> | 492 | </td> |
387 | <td class="px-4 py-3 text-sm"> | 493 | <td class="px-4 py-3 text-sm"> |
388 | $ 1276.45 | 494 | $ 1276.45 |
389 | </td> | 495 | </td> |
390 | <td class="px-4 py-3 text-xs"> | 496 | <td class="px-4 py-3 text-xs"> |
391 | <span | 497 | <span |
392 | 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" | 498 | 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" |
393 | > | 499 | > |
394 | Approved | 500 | Approved |
395 | </span> | 501 | </span> |
396 | </td> | 502 | </td> |
397 | <td class="px-4 py-3 text-sm"> | 503 | <td class="px-4 py-3 text-sm"> |
398 | 6/10/2020 | 504 | 6/10/2020 |
399 | </td> | 505 | </td> |
400 | </tr> | 506 | </tr> |
401 | 507 | ||
402 | <tr class="text-gray-700 dark:text-gray-400"> | 508 | <tr class="text-gray-700 dark:text-gray-400"> |
403 | <td class="px-4 py-3"> | 509 | <td class="px-4 py-3"> |
404 | <div class="flex items-center text-sm"> | 510 | <div class="flex items-center text-sm"> |
405 | 511 | ||
406 | <div | 512 | <div |
407 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 513 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
408 | > | 514 | > |
409 | <img | 515 | <img |
410 | class="object-cover w-full h-full rounded-full" | 516 | class="object-cover w-full h-full rounded-full" |
411 | 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" | 517 | 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" |
412 | alt="" | 518 | alt="" |
413 | loading="lazy" | 519 | loading="lazy" |
414 | /> | 520 | /> |
415 | <div | 521 | <div |
416 | class="absolute inset-0 rounded-full shadow-inner" | 522 | class="absolute inset-0 rounded-full shadow-inner" |
417 | aria-hidden="true" | 523 | aria-hidden="true" |
418 | ></div> | 524 | ></div> |
419 | </div> | 525 | </div> |
420 | <div> | 526 | <div> |
421 | <p class="font-semibold">Wenzel Dashington</p> | 527 | <p class="font-semibold">Wenzel Dashington</p> |
422 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 528 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
423 | Actor | 529 | Actor |
424 | </p> | 530 | </p> |
425 | </div> | 531 | </div> |
426 | </div> | 532 | </div> |
427 | </td> | 533 | </td> |
428 | <td class="px-4 py-3 text-sm"> | 534 | <td class="px-4 py-3 text-sm"> |
429 | $ 863.45 | 535 | $ 863.45 |
430 | </td> | 536 | </td> |
431 | <td class="px-4 py-3 text-xs"> | 537 | <td class="px-4 py-3 text-xs"> |
432 | <span | 538 | <span |
433 | 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" | 539 | 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" |
434 | > | 540 | > |
435 | Expired | 541 | Expired |
436 | </span> | 542 | </span> |
437 | </td> | 543 | </td> |
438 | <td class="px-4 py-3 text-sm"> | 544 | <td class="px-4 py-3 text-sm"> |
439 | 6/10/2020 | 545 | 6/10/2020 |
440 | </td> | 546 | </td> |
441 | </tr> | 547 | </tr> |
442 | 548 | ||
443 | <tr class="text-gray-700 dark:text-gray-400"> | 549 | <tr class="text-gray-700 dark:text-gray-400"> |
444 | <td class="px-4 py-3"> | 550 | <td class="px-4 py-3"> |
445 | <div class="flex items-center text-sm"> | 551 | <div class="flex items-center text-sm"> |
446 | 552 | ||
447 | <div | 553 | <div |
448 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 554 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
449 | > | 555 | > |
450 | <img | 556 | <img |
451 | class="object-cover w-full h-full rounded-full" | 557 | class="object-cover w-full h-full rounded-full" |
452 | 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" | 558 | 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" |
453 | alt="" | 559 | alt="" |
454 | loading="lazy" | 560 | loading="lazy" |
455 | /> | 561 | /> |
456 | <div | 562 | <div |
457 | class="absolute inset-0 rounded-full shadow-inner" | 563 | class="absolute inset-0 rounded-full shadow-inner" |
458 | aria-hidden="true" | 564 | aria-hidden="true" |
459 | ></div> | 565 | ></div> |
460 | </div> | 566 | </div> |
461 | <div> | 567 | <div> |
462 | <p class="font-semibold">Dave Li</p> | 568 | <p class="font-semibold">Dave Li</p> |
463 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 569 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
464 | Influencer | 570 | Influencer |
465 | </p> | 571 | </p> |
466 | </div> | 572 | </div> |
467 | </div> | 573 | </div> |
468 | </td> | 574 | </td> |
469 | <td class="px-4 py-3 text-sm"> | 575 | <td class="px-4 py-3 text-sm"> |
470 | $ 863.45 | 576 | $ 863.45 |
471 | </td> | 577 | </td> |
472 | <td class="px-4 py-3 text-xs"> | 578 | <td class="px-4 py-3 text-xs"> |
473 | <span | 579 | <span |
474 | 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" | 580 | 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" |
475 | > | 581 | > |
476 | Approved | 582 | Approved |
477 | </span> | 583 | </span> |
478 | </td> | 584 | </td> |
479 | <td class="px-4 py-3 text-sm"> | 585 | <td class="px-4 py-3 text-sm"> |
480 | 6/10/2020 | 586 | 6/10/2020 |
481 | </td> | 587 | </td> |
482 | </tr> | 588 | </tr> |
483 | 589 | ||
484 | <tr class="text-gray-700 dark:text-gray-400"> | 590 | <tr class="text-gray-700 dark:text-gray-400"> |
485 | <td class="px-4 py-3"> | 591 | <td class="px-4 py-3"> |
486 | <div class="flex items-center text-sm"> | 592 | <div class="flex items-center text-sm"> |
487 | 593 | ||
488 | <div | 594 | <div |
489 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 595 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
490 | > | 596 | > |
491 | <img | 597 | <img |
492 | class="object-cover w-full h-full rounded-full" | 598 | class="object-cover w-full h-full rounded-full" |
493 | 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" | 599 | 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" |
494 | alt="" | 600 | alt="" |
495 | loading="lazy" | 601 | loading="lazy" |
496 | /> | 602 | /> |
497 | <div | 603 | <div |
498 | class="absolute inset-0 rounded-full shadow-inner" | 604 | class="absolute inset-0 rounded-full shadow-inner" |
499 | aria-hidden="true" | 605 | aria-hidden="true" |
500 | ></div> | 606 | ></div> |
501 | </div> | 607 | </div> |
502 | <div> | 608 | <div> |
503 | <p class="font-semibold">Maria Ramovic</p> | 609 | <p class="font-semibold">Maria Ramovic</p> |
504 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 610 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
505 | Runner | 611 | Runner |
506 | </p> | 612 | </p> |
507 | </div> | 613 | </div> |
508 | </div> | 614 | </div> |
509 | </td> | 615 | </td> |
510 | <td class="px-4 py-3 text-sm"> | 616 | <td class="px-4 py-3 text-sm"> |
511 | $ 863.45 | 617 | $ 863.45 |
512 | </td> | 618 | </td> |
513 | <td class="px-4 py-3 text-xs"> | 619 | <td class="px-4 py-3 text-xs"> |
514 | <span | 620 | <span |
515 | 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" | 621 | 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" |
516 | > | 622 | > |
517 | Approved | 623 | Approved |
518 | </span> | 624 | </span> |
519 | </td> | 625 | </td> |
520 | <td class="px-4 py-3 text-sm"> | 626 | <td class="px-4 py-3 text-sm"> |
521 | 6/10/2020 | 627 | 6/10/2020 |
522 | </td> | 628 | </td> |
523 | </tr> | 629 | </tr> |
524 | 630 | ||
525 | <tr class="text-gray-700 dark:text-gray-400"> | 631 | <tr class="text-gray-700 dark:text-gray-400"> |
526 | <td class="px-4 py-3"> | 632 | <td class="px-4 py-3"> |
527 | <div class="flex items-center text-sm"> | 633 | <div class="flex items-center text-sm"> |
528 | 634 | ||
529 | <div | 635 | <div |
530 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 636 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
531 | > | 637 | > |
532 | <img | 638 | <img |
533 | class="object-cover w-full h-full rounded-full" | 639 | class="object-cover w-full h-full rounded-full" |
534 | 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" | 640 | 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" |
535 | alt="" | 641 | alt="" |
536 | loading="lazy" | 642 | loading="lazy" |
537 | /> | 643 | /> |
538 | <div | 644 | <div |
539 | class="absolute inset-0 rounded-full shadow-inner" | 645 | class="absolute inset-0 rounded-full shadow-inner" |
540 | aria-hidden="true" | 646 | aria-hidden="true" |
541 | ></div> | 647 | ></div> |
542 | </div> | 648 | </div> |
543 | <div> | 649 | <div> |
544 | <p class="font-semibold">Hitney Wouston</p> | 650 | <p class="font-semibold">Hitney Wouston</p> |
545 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 651 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
546 | Singer | 652 | Singer |
547 | </p> | 653 | </p> |
548 | </div> | 654 | </div> |
549 | </div> | 655 | </div> |
550 | </td> | 656 | </td> |
551 | <td class="px-4 py-3 text-sm"> | 657 | <td class="px-4 py-3 text-sm"> |
552 | $ 863.45 | 658 | $ 863.45 |
553 | </td> | 659 | </td> |
554 | <td class="px-4 py-3 text-xs"> | 660 | <td class="px-4 py-3 text-xs"> |
555 | <span | 661 | <span |
556 | 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" | 662 | 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" |
557 | > | 663 | > |
558 | Approved | 664 | Approved |
559 | </span> | 665 | </span> |
560 | </td> | 666 | </td> |
561 | <td class="px-4 py-3 text-sm"> | 667 | <td class="px-4 py-3 text-sm"> |
562 | 6/10/2020 | 668 | 6/10/2020 |
563 | </td> | 669 | </td> |
564 | </tr> | 670 | </tr> |
565 | 671 | ||
566 | <tr class="text-gray-700 dark:text-gray-400"> | 672 | <tr class="text-gray-700 dark:text-gray-400"> |
567 | <td class="px-4 py-3"> | 673 | <td class="px-4 py-3"> |
568 | <div class="flex items-center text-sm"> | 674 | <div class="flex items-center text-sm"> |
569 | 675 | ||
570 | <div | 676 | <div |
571 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 677 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
572 | > | 678 | > |
573 | <img | 679 | <img |
574 | class="object-cover w-full h-full rounded-full" | 680 | class="object-cover w-full h-full rounded-full" |
575 | 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" | 681 | 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" |
576 | alt="" | 682 | alt="" |
577 | loading="lazy" | 683 | loading="lazy" |
578 | /> | 684 | /> |
579 | <div | 685 | <div |
580 | class="absolute inset-0 rounded-full shadow-inner" | 686 | class="absolute inset-0 rounded-full shadow-inner" |
581 | aria-hidden="true" | 687 | aria-hidden="true" |
582 | ></div> | 688 | ></div> |
583 | </div> | 689 | </div> |
584 | <div> | 690 | <div> |
585 | <p class="font-semibold">Hans Burger</p> | 691 | <p class="font-semibold">Hans Burger</p> |
586 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 692 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
587 | 10x Developer | 693 | 10x Developer |
588 | </p> | 694 | </p> |
589 | </div> | 695 | </div> |
590 | </div> | 696 | </div> |
591 | </td> | 697 | </td> |
592 | <td class="px-4 py-3 text-sm"> | 698 | <td class="px-4 py-3 text-sm"> |
593 | $ 863.45 | 699 | $ 863.45 |
594 | </td> | 700 | </td> |
595 | <td class="px-4 py-3 text-xs"> | 701 | <td class="px-4 py-3 text-xs"> |
596 | <span | 702 | <span |
597 | 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" | 703 | 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" |
598 | > | 704 | > |
599 | Approved | 705 | Approved |
600 | </span> | 706 | </span> |
601 | </td> | 707 | </td> |
602 | <td class="px-4 py-3 text-sm"> | 708 | <td class="px-4 py-3 text-sm"> |
603 | 6/10/2020 | 709 | 6/10/2020 |
604 | </td> | 710 | </td> |
605 | </tr>--> | 711 | </tr>--> |
606 | </tbody> | 712 | </tbody> |
607 | </table> | 713 | </table> |
608 | </div> | 714 | </div> |
609 | </div> | 715 | </div> |
610 | 716 | ||
611 | 717 | ||
612 | <!-- Charts --> | 718 | <!-- Charts --> |
613 | 719 | ||
614 | <!--<h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> | 720 | <!--<h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> |
615 | Графики | 721 | Графики |
616 | </h2> | 722 | </h2> |
617 | <div class="grid gap-6 mb-8 md:grid-cols-2"> | 723 | <div class="grid gap-6 mb-8 md:grid-cols-2"> |
618 | <div | 724 | <div |
619 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 725 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
620 | > | 726 | > |
621 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 727 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
622 | Revenue | 728 | Revenue |
623 | </h4> | 729 | </h4> |
624 | <canvas id="pie"></canvas> | 730 | <canvas id="pie"></canvas> |
625 | <div | 731 | <div |
626 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 732 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
627 | > | 733 | > |
628 | 734 | ||
629 | <div class="flex items-center"> | 735 | <div class="flex items-center"> |
630 | <span | 736 | <span |
631 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" | 737 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" |
632 | ></span> | 738 | ></span> |
633 | <span>Shirts</span> | 739 | <span>Shirts</span> |
634 | </div> | 740 | </div> |
635 | <div class="flex items-center"> | 741 | <div class="flex items-center"> |
636 | <span | 742 | <span |
637 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 743 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
638 | ></span> | 744 | ></span> |
639 | <span>Shoes</span> | 745 | <span>Shoes</span> |
640 | </div> | 746 | </div> |
641 | <div class="flex items-center"> | 747 | <div class="flex items-center"> |
642 | <span | 748 | <span |
643 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 749 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
644 | ></span> | 750 | ></span> |
645 | <span>Bags</span> | 751 | <span>Bags</span> |
646 | </div> | 752 | </div> |
647 | </div> | 753 | </div> |
648 | </div> | 754 | </div> |
649 | <div | 755 | <div |
650 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 756 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
651 | > | 757 | > |
652 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 758 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
653 | Посещаемость сайта | 759 | Посещаемость сайта |
654 | </h4> | 760 | </h4> |
655 | <canvas id="line"></canvas> | 761 | <canvas id="line"></canvas> |
656 | <div | 762 | <div |
657 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 763 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
658 | > | 764 | > |
659 | 765 | ||
660 | <div class="flex items-center"> | 766 | <div class="flex items-center"> |
661 | <span | 767 | <span |
662 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 768 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
663 | ></span> | 769 | ></span> |
664 | <span>Organic</span> | 770 | <span>Organic</span> |
665 | </div> | 771 | </div> |
666 | <div class="flex items-center"> | 772 | <div class="flex items-center"> |
667 | <span | 773 | <span |
668 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 774 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
669 | ></span> | 775 | ></span> |
670 | <span>Paid</span> | 776 | <span>Paid</span> |
671 | </div> | 777 | </div> |
672 | </div> | 778 | </div> |
673 | </div> | 779 | </div> |
674 | </div>--> | 780 | </div>--> |
675 | 781 | ||
676 | @endsection | 782 | @endsection |
677 | 783 |
resources/views/admin/static/index.blade.php
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', '.checkban', 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 ajax_block = $('#ajax_block'); | 10 | var ajax_block = $('#ajax_block'); |
10 | var bool = 0; | 11 | var bool = 0; |
12 | var str_get = ''; | ||
11 | 13 | ||
12 | if(this.checked){ | 14 | if(this.checked){ |
13 | bool = 1; | 15 | bool = 1; |
14 | } else { | 16 | } else { |
15 | bool = 0; | 17 | bool = 0; |
16 | } | 18 | } |
19 | console.log(field); | ||
20 | str_get = "id=" + value + "&" + field + "=" + bool; | ||
21 | console.log(str_get); | ||
17 | 22 | ||
18 | $.ajax({ | 23 | $.ajax({ |
19 | type: "GET", | 24 | type: "GET", |
20 | url: "{{ url()->full()}}", | 25 | url: "{{ url()->full()}}", |
21 | data: "id=" + value + "&is_ban=" + bool, | 26 | data: str_get, |
22 | success: function (data) { | 27 | success: function (data) { |
23 | console.log('Обновление таблицы пользователей '); | 28 | console.log('Обновление таблицы пользователей '); |
24 | //data = JSON.parse(data); | 29 | //data = JSON.parse(data); |
25 | console.log(data); | 30 | //console.log(data); |
26 | ajax_block.html(data); | ||
27 | }, | ||
28 | headers: { | ||
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
30 | }, | ||
31 | error: function (data) { | ||
32 | console.log('Error: ' + data); | ||
33 | } | ||
34 | }); | ||
35 | }); | ||
36 | |||
37 | $(document).on('click', '.checknew', function () { | ||
38 | var this_ = $(this); | ||
39 | var value = this_.val(); | ||
40 | var ajax_block = $('#ajax_block'); | ||
41 | var bool = 0; | ||
42 | |||
43 | if(this.checked){ | ||
44 | bool = 1; | ||
45 | } else { | ||
46 | bool = 0; | ||
47 | } | ||
48 | |||
49 | $.ajax({ | ||
50 | type: "GET", | ||
51 | url: "{{ url()->full()}}", | ||
52 | data: "id=" + value + "&is_new=" + bool, | ||
53 | success: function (data) { | ||
54 | console.log('Обновление таблицы пользователей '); | ||
55 | //data = JSON.parse(data); | ||
56 | console.log(data); | ||
57 | ajax_block.html(data); | 31 | ajax_block.html(data); |
58 | }, | 32 | }, |
59 | headers: { | 33 | headers: { |
60 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
61 | }, | 35 | }, |
62 | error: function (data) { | 36 | error: function (data) { |
63 | console.log('Error: ' + data); | 37 | console.log('Error: ' + data); |
64 | } | 38 | } |
65 | }); | 39 | }); |
66 | }); | 40 | }); |
67 | }); | 41 | }); |
68 | </script> | 42 | </script> |
69 | @endsection | 43 | @endsection |
70 | 44 | ||
45 | @section('search') | ||
46 | <div class="absolute inset-y-0 flex items-center pl-2"> | ||
47 | <svg | ||
48 | class="w-4 h-4" | ||
49 | aria-hidden="true" | ||
50 | fill="currentColor" | ||
51 | viewBox="0 0 20 20" | ||
52 | > | ||
53 | <path | ||
54 | fill-rule="evenodd" | ||
55 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" | ||
56 | clip-rule="evenodd" | ||
57 | ></path> | ||
58 | </svg> | ||
59 | </div> | ||
60 | <form action="" method="POST"> | ||
61 | <div style="float:left;"><input | ||
62 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" | ||
63 | style="width: 400px" | ||
64 | type="text" | ||
65 | placeholder="Искать..." | ||
66 | aria-label="Search" | ||
67 | /></div> | ||
68 | <div style="float: left"> | ||
69 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Искать</button> | ||
70 | </div> | ||
71 | </form> | ||
72 | @endsection | ||
73 | |||
71 | @section('content') | 74 | @section('content') |
72 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 75 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
73 | <div class="w-full overflow-x-auto"> | 76 | <div class="w-full overflow-x-auto"> |
74 | <table class="w-full whitespace-no-wrap"> | 77 | <table class="w-full whitespace-no-wrap"> |
75 | <thead> | 78 | <thead> |
76 | <tr | 79 | <tr |
77 | 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" | 80 | 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" |
78 | > | 81 | > |
79 | <th class="px-4 py-3">№</th> | 82 | <th class="px-4 py-3">№</th> |
80 | <th class="px-4 py-3">Имя</th> | 83 | <th class="px-4 py-3">Имя</th> |
81 | <th class="px-4 py-3">Email/логин</th> | 84 | <th class="px-4 py-3">Email/логин</th> |
82 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | 85 | <th class="px-4 py-3">Работодатель/работник/администратор</th> |
83 | <th class="px-4 py-3">Бан</th> | 86 | <th class="px-4 py-3">Бан</th> |
84 | <th class="px-4 py-3">Новый</th> | 87 | <th class="px-4 py-3">Новый</th> |
88 | @if ($id_admin == 1) | ||
89 | <th class="px-4 py-3">Админ</th> | ||
90 | @endif | ||
85 | <th class="px-4 py-3">Дата регистрации</th> | 91 | <th class="px-4 py-3">Дата регистрации</th> |
86 | </tr> | 92 | </tr> |
87 | </thead> | 93 | </thead> |
88 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 94 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
89 | @foreach($users as $user) | 95 | @foreach($users as $user) |
90 | <tr class="text-gray-700 dark:text-gray-400"> | 96 | <tr class="text-gray-700 dark:text-gray-400"> |
91 | <td class="px-4 py-3"> | 97 | <td class="px-4 py-3"> |
92 | {{$user->id}} | 98 | {{$user->id}} |
93 | </td> | 99 | </td> |
94 | <td class="px-4 py-3"> | 100 | <td class="px-4 py-3"> |
95 | <!--<div class="flex items-center text-sm"> | 101 | <!--<div class="flex items-center text-sm"> |
96 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | 102 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> |
97 | <div | 103 | <div |
98 | class="absolute inset-0 rounded-full shadow-inner" | 104 | class="absolute inset-0 rounded-full shadow-inner" |
99 | aria-hidden="true" | 105 | aria-hidden="true" |
100 | ></div> | 106 | ></div> |
101 | </div> | 107 | </div> |
102 | <div> | 108 | <div> |
103 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | 109 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> |
104 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 110 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
105 | Все пользователи сайта | 111 | Все пользователи сайта |
106 | </p> | 112 | </p> |
107 | </div> | 113 | </div> |
108 | </div> | 114 | </div> |
109 | --> | 115 | --> |
110 | {{ $user->name }} | 116 | {{ $user->name }} |
111 | </td> | 117 | </td> |
112 | <td class="px-4 py-3 text-sm"> | 118 | <td class="px-4 py-3 text-sm"> |
113 | {{ $user->email }} | 119 | {{ $user->email }} |
114 | </td> | 120 | </td> |
115 | <td class="px-4 py-3 text-xs"> | 121 | <td class="px-4 py-3 text-xs"> |
116 | <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"> | 122 | <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"> |
117 | @if ($user->is_worker) | 123 | @if ($user->is_worker) |
118 | Работник | 124 | Работник |
119 | @else | 125 | @else |
120 | Работодатель | 126 | Работодатель |
121 | @endif | 127 | @endif |
122 | </span> | 128 | </span> |
123 | @if ($user->admin) | 129 | @if ($user->admin) |
124 | <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"> | 130 | <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"> |
125 | Администратор | 131 | Администратор |
126 | </span> | 132 | </span> |
127 | @endif | 133 | @endif |
128 | </td> | 134 | </td> |
129 | <td class="px-4 py-3 text-sm"> | 135 | <td class="px-4 py-3 text-sm"> |
130 | @if ($user->id > 1) | 136 | @if ($user->id > 1) |
131 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 137 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
132 | @endif | 138 | @endif |
133 | </td> | 139 | </td> |
140 | |||
134 | <td class="px-4 py-3 text-sm"> | 141 | <td class="px-4 py-3 text-sm"> |
135 | <input type="checkbox" class="checknew" value="{{$user->id}}" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | 142 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> |
136 | </td> | 143 | </td> |
144 | |||
145 | @if ($id_admin == 1) | ||
146 | <td class="px-4 py-3 text-sm"> | ||
147 | @if ($user->id > 1) | ||
148 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> | ||
149 | @endif | ||
150 | </td> | ||
151 | @endif | ||
152 | |||
137 | <td class="px-4 py-3 text-sm"> | 153 | <td class="px-4 py-3 text-sm"> |
138 | {{ $user->created_at }} | 154 | {{ $user->created_at }} |
139 | </td> | 155 | </td> |
140 | </tr> | 156 | </tr> |
141 | @endforeach | 157 | @endforeach |
142 | </tbody> | 158 | </tbody> |
143 | </table> | 159 | </table> |
144 | </div> | 160 | </div> |
145 | 161 | ||
146 | <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"> | 162 | <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"> |
147 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | 163 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> |
148 | <?=$users->links('admin.pagginate'); ?> | 164 | <?=$users->links('admin.pagginate'); ?> |
149 | </div> | 165 | </div> |
150 | 166 | ||
151 | 167 | ||
152 | <!--<div | 168 | <!--<div |
153 | 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" | 169 | 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" |
154 | > | 170 | > |
155 | <span class="flex items-center col-span-3"> | 171 | <span class="flex items-center col-span-3"> |
156 | Showing 21-30 of 100 | 172 | Showing 21-30 of 100 |
157 | </span> | 173 | </span> |
158 | <span class="col-span-2"></span> | 174 | <span class="col-span-2"></span> |
159 | 175 | ||
160 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 176 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
161 | <nav aria-label="Table navigation"> | 177 | <nav aria-label="Table navigation"> |
162 | <ul class="inline-flex items-center"> | 178 | <ul class="inline-flex items-center"> |
163 | <li> | 179 | <li> |
164 | <button | 180 | <button |
165 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 181 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
166 | aria-label="Previous" | 182 | aria-label="Previous" |
167 | > | 183 | > |
168 | <svg | 184 | <svg |
169 | aria-hidden="true" | 185 | aria-hidden="true" |
170 | class="w-4 h-4 fill-current" | 186 | class="w-4 h-4 fill-current" |
171 | viewBox="0 0 20 20" | 187 | viewBox="0 0 20 20" |
172 | > | 188 | > |
173 | <path | 189 | <path |
174 | 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" | 190 | 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" |
175 | clip-rule="evenodd" | 191 | clip-rule="evenodd" |
176 | fill-rule="evenodd" | 192 | fill-rule="evenodd" |
177 | ></path> | 193 | ></path> |
178 | </svg> | 194 | </svg> |
179 | </button> | 195 | </button> |
180 | </li> | 196 | </li> |
181 | <li> | 197 | <li> |
182 | <button | 198 | <button |
183 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 199 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
184 | > | 200 | > |
185 | 1 | 201 | 1 |
186 | </button> | 202 | </button> |
187 | </li> | 203 | </li> |
188 | <li> | 204 | <li> |
189 | <button | 205 | <button |
190 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 206 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
191 | > | 207 | > |
192 | 2 | 208 | 2 |
193 | </button> | 209 | </button> |
194 | </li> | 210 | </li> |
195 | <li> | 211 | <li> |
196 | <button | 212 | <button |
197 | 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" | 213 | 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" |
198 | > | 214 | > |
199 | 3 | 215 | 3 |
200 | </button> | 216 | </button> |
201 | </li> | 217 | </li> |
202 | <li> | 218 | <li> |
203 | <button | 219 | <button |
204 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 220 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
205 | > | 221 | > |
206 | 4 | 222 | 4 |
207 | </button> | 223 | </button> |
208 | </li> | 224 | </li> |
209 | <li> | 225 | <li> |
210 | <span class="px-3 py-1">...</span> | 226 | <span class="px-3 py-1">...</span> |
211 | </li> | 227 | </li> |
212 | <li> | 228 | <li> |
213 | <button | 229 | <button |
214 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 230 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
215 | > | 231 | > |
216 | 8 | 232 | 8 |
217 | </button> | 233 | </button> |
218 | </li> | 234 | </li> |
219 | <li> | 235 | <li> |
220 | <button | 236 | <button |
221 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 237 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
222 | > | 238 | > |
223 | 9 | 239 | 9 |
resources/views/admin/users/index_ajax.blade.php
1 | <div class="w-full overflow-x-auto"> | 1 | <div class="w-full overflow-x-auto"> |
2 | <table class="w-full whitespace-no-wrap"> | 2 | <table class="w-full whitespace-no-wrap"> |
3 | <thead> | 3 | <thead> |
4 | <tr | 4 | <tr |
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
6 | > | 6 | > |
7 | <th class="px-4 py-3">№</th> | 7 | <th class="px-4 py-3">№</th> |
8 | <th class="px-4 py-3">Имя</th> | 8 | <th class="px-4 py-3">Имя</th> |
9 | <th class="px-4 py-3">Email/логин</th> | 9 | <th class="px-4 py-3">Email/логин</th> |
10 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | 10 | <th class="px-4 py-3">Работодатель/работник/администратор</th> |
11 | <th class="px-4 py-3">Заблокированный</th> | 11 | <th class="px-4 py-3">Бан</th> |
12 | <th class="px-4 py-3">Новый</th> | 12 | <th class="px-4 py-3">Новый</th> |
13 | @if ($id_admin == 1) | ||
14 | <th class="px-4 py-3">Админ</th> | ||
15 | @endif | ||
13 | <th class="px-4 py-3">Дата регистрации</th> | 16 | <th class="px-4 py-3">Дата регистрации</th> |
14 | </tr> | 17 | </tr> |
15 | </thead> | 18 | </thead> |
16 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 19 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
17 | @foreach($users as $user) | 20 | @foreach($users as $user) |
18 | <tr class="text-gray-700 dark:text-gray-400"> | 21 | <tr class="text-gray-700 dark:text-gray-400"> |
19 | <td class="px-4 py-3"> | 22 | <td class="px-4 py-3"> |
20 | {{$user->id}} | 23 | {{$user->id}} |
21 | </td> | 24 | </td> |
22 | <td class="px-4 py-3"> | 25 | <td class="px-4 py-3"> |
23 | {{ $user->name }} | 26 | {{ $user->name }} |
24 | </td> | 27 | </td> |
25 | <td class="px-4 py-3 text-sm"> | 28 | <td class="px-4 py-3 text-sm"> |
26 | {{ $user->email }} | 29 | {{ $user->email }} |
27 | </td> | 30 | </td> |
28 | <td class="px-4 py-3 text-xs"> | 31 | <td class="px-4 py-3 text-xs"> |
29 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 32 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
30 | @if ($user->is_worker) | 33 | @if ($user->is_worker) |
31 | Работник | 34 | Работник |
32 | @else | 35 | @else |
33 | Работодатель | 36 | Работодатель |
34 | @endif | 37 | @endif |
35 | </span> | 38 | </span> |
36 | @if ($user->admin) | 39 | @if ($user->admin) |
37 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 40 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
38 | Администратор | 41 | Администратор |
39 | </span> | 42 | </span> |
40 | @endif | 43 | @endif |
41 | </td> | 44 | </td> |
42 | <td class="px-4 py-3 text-sm"> | 45 | <td class="px-4 py-3 text-sm"> |
43 | @if ($user->id > 1) | 46 | @if ($user->id > 1) |
44 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 47 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
45 | @endif | 48 | @endif |
46 | </td> | 49 | </td> |
47 | <td class="px-4 py-3 text-sm"> | 50 | <td class="px-4 py-3 text-sm"> |
48 | <input type="checkbox" class="checknew" value="{{$user->id}}" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | 51 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> |
49 | </td> | 52 | </td> |
53 | |||
54 | @if ($id_admin == 1) | ||
55 | <td class="px-4 py-3 text-sm"> | ||
56 | @if ($user->id > 1) | ||
57 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> | ||
58 | @endif | ||
59 | </td> | ||
60 | @endif | ||
61 | |||
50 | <td class="px-4 py-3 text-sm"> | 62 | <td class="px-4 py-3 text-sm"> |
51 | {{ $user->created_at }} | 63 | {{ $user->created_at }} |
52 | </td> | 64 | </td> |
53 | </tr> | 65 | </tr> |
54 | @endforeach | 66 | @endforeach |
55 | </tbody> | 67 | </tbody> |
56 | </table> | 68 | </table> |
57 | </div> | 69 | </div> |
58 | 70 | ||
59 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 71 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
60 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | 72 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> |
61 | <?=$users->links('admin.pagginate'); ?> | 73 | <?=$users->links('admin.pagginate'); ?> |
62 | </div> | 74 | </div> |
63 | 75 |
resources/views/admin/worker/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Работники']) | 1 | @extends('layout.admin', ['title' => 'Админка - Работники']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.checkban', function () { | 6 | $(document).on('click', '.checkban', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var ajax_block = $('#ajax_block'); | 9 | var ajax_block = $('#ajax_block'); |
10 | var bool = 0; | 10 | var bool = 0; |
11 | 11 | ||
12 | if(this.checked){ | 12 | if(this.checked){ |
13 | bool = 1; | 13 | bool = 1; |
14 | } else { | 14 | } else { |
15 | bool = 0; | 15 | bool = 0; |
16 | } | 16 | } |
17 | 17 | ||
18 | $.ajax({ | 18 | $.ajax({ |
19 | type: "GET", | 19 | type: "GET", |
20 | url: "{{ url()->full()}}", | 20 | url: "{{ url()->full()}}", |
21 | data: "id=" + value + "&is_ban=" + bool, | 21 | data: "id=" + value + "&is_ban=" + bool, |
22 | success: function (data) { | 22 | success: function (data) { |
23 | console.log('Обновление таблицы пользователей '); | 23 | console.log('Обновление таблицы работников '); |
24 | //data = JSON.parse(data); | 24 | //data = JSON.parse(data); |
25 | console.log(data); | 25 | console.log(data); |
26 | ajax_block.html(data); | 26 | ajax_block.html(data); |
27 | }, | 27 | }, |
28 | headers: { | 28 | headers: { |
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
30 | }, | 30 | }, |
31 | error: function (data) { | 31 | error: function (data) { |
32 | console.log('Error: ' + data); | 32 | console.log('Error: ' + data); |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }); | 35 | }); |
36 | 36 | ||
37 | }); | 37 | }); |
38 | </script> | 38 | </script> |
39 | @endsection | 39 | @endsection |
40 | 40 | ||
41 | @section('search') | ||
42 | <div class="absolute inset-y-0 flex items-center pl-2"> | ||
43 | <svg | ||
44 | class="w-4 h-4" | ||
45 | aria-hidden="true" | ||
46 | fill="currentColor" | ||
47 | viewBox="0 0 20 20" | ||
48 | > | ||
49 | <path | ||
50 | fill-rule="evenodd" | ||
51 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" | ||
52 | clip-rule="evenodd" | ||
53 | ></path> | ||
54 | </svg> | ||
55 | </div> | ||
56 | <form action="" method="POST"> | ||
57 | <div style="float:left;"><input | ||
58 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" | ||
59 | style="width: 400px" | ||
60 | type="text" | ||
61 | placeholder="Искать..." | ||
62 | aria-label="Search" | ||
63 | /></div> | ||
64 | <div style="float: left"> | ||
65 | <button type="submit" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple">Искать</button> | ||
66 | </div> | ||
67 | </form> | ||
68 | @endsection | ||
69 | |||
41 | @section('content') | 70 | @section('content') |
42 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 71 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
43 | <div class="w-full overflow-x-auto"> | 72 | <div class="w-full overflow-x-auto"> |
44 | <table class="w-full whitespace-no-wrap"> | 73 | <table class="w-full whitespace-no-wrap"> |
45 | <thead> | 74 | <thead> |
46 | <tr | 75 | <tr |
47 | 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" | 76 | 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" |
48 | > | 77 | > |
49 | <th class="px-4 py-3">№</th> | 78 | <th class="px-4 py-3">№</th> |
50 | <th class="px-4 py-3">Имя</th> | 79 | <th class="px-4 py-3">Имя</th> |
51 | <th class="px-4 py-3">Email/Телефон</th> | 80 | <th class="px-4 py-3">Email/Телефон</th> |
52 | <th class="px-4 py-3">% заполнения анкеты</th> | 81 | <th class="px-4 py-3">% заполнения анкеты</th> |
53 | <th class="px-4 py-3">Дата регистрации</th> | 82 | <th class="px-4 py-3">Дата регистрации</th> |
54 | <th class="px-4 py-3">Изменить</th> | 83 | <th class="px-4 py-3">Изменить</th> |
55 | <th class="px-4 py-3">Бан</th> | 84 | <th class="px-4 py-3">Бан</th> |
56 | </tr> | 85 | </tr> |
57 | </thead> | 86 | </thead> |
58 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 87 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
59 | @foreach($users as $user) | 88 | @foreach($users as $user) |
60 | <tr class="text-gray-700 dark:text-gray-400"> | 89 | <tr class="text-gray-700 dark:text-gray-400"> |
61 | <td class="px-4 py-3"> | 90 | <td class="px-4 py-3"> |
62 | {{$user->id}} | 91 | {{$user->id}} |
63 | </td> | 92 | </td> |
64 | <td class="px-4 py-3"> | 93 | <td class="px-4 py-3"> |
65 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} | 94 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} |
66 | </td> | 95 | </td> |
67 | <td class="px-4 py-3 text-sm"> | 96 | <td class="px-4 py-3 text-sm"> |
68 | <div class="flex items-center text-sm"> | 97 | <div class="flex items-center text-sm"> |
69 | <div> | 98 | <div> |
70 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> | 99 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> |
71 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 100 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
72 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} | 101 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} |
73 | </p> | 102 | </p> |
74 | </div> | 103 | </div> |
75 | </div> | 104 | </div> |
76 | </td> | 105 | </td> |
77 | <td class="px-4 py-3 text-xs"> | 106 | <td class="px-4 py-3 text-xs"> |
78 | @if (!empty($user->workers->persent_anketa)) | 107 | @if (!empty($user->workers->persent_anketa)) |
79 | @if ($user->workers->persent_anketa > 40) | 108 | @if ($user->workers->persent_anketa > 40) |
80 | <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"> | 109 | <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"> |
81 | {{$user->workers->persent_anketa}}% | 110 | {{$user->workers->persent_anketa}}% |
82 | </span> | 111 | </span> |
83 | @else | 112 | @else |
84 | <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"> | 113 | <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"> |
85 | {{$user->workers->persent_anketa}}% | 114 | {{$user->workers->persent_anketa}}% |
86 | </span> | 115 | </span> |
87 | @endif | 116 | @endif |
88 | @else | 117 | @else |
89 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 118 | <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"> |
90 | 10% | 119 | 10% |
91 | </span> | 120 | </span> |
92 | @endif | 121 | @endif |
93 | </td> | 122 | </td> |
94 | <td class="px-4 py-3 text-sm"> | 123 | <td class="px-4 py-3 text-sm"> |
95 | {{ $user->created_at }} | 124 | {{ $user->created_at }} |
96 | </td> | 125 | </td> |
97 | <td class="px-4 py-3 text-sm"> | 126 | <td class="px-4 py-3 text-sm"> |
98 | @if ($user->id > 1) | 127 | @if ($user->id > 1) |
99 | <a href="{{ route('admin.user-profile', ['user' => $user->id]) }}">Изменить</a> | 128 | <a href="{{ route('admin.user-profile', ['user' => $user->id]) }}">Изменить</a> |
100 | @endif | 129 | @endif |
101 | </td> | 130 | </td> |
102 | <td class="px-4 py-3 text-sm"> | 131 | <td class="px-4 py-3 text-sm"> |
103 | @if ($user->id > 1) | 132 | @if ($user->id > 1) |
104 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 133 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
105 | @endif | 134 | @endif |
106 | </td> | 135 | </td> |
107 | </tr> | 136 | </tr> |
108 | @endforeach | 137 | @endforeach |
109 | </tbody> | 138 | </tbody> |
110 | </table> | 139 | </table> |
111 | </div> | 140 | </div> |
112 | 141 | ||
113 | <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"> |
114 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 143 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
115 | </div> | 144 | </div> |
116 | 145 | ||
117 | 146 | ||
118 | <!--<div | 147 | <!--<div |
119 | 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" | 148 | 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" |
120 | > | 149 | > |
121 | <span class="flex items-center col-span-3"> | 150 | <span class="flex items-center col-span-3"> |
122 | Showing 21-30 of 100 | 151 | Showing 21-30 of 100 |
123 | </span> | 152 | </span> |
124 | <span class="col-span-2"></span> | 153 | <span class="col-span-2"></span> |
125 | 154 | ||
126 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 155 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
127 | <nav aria-label="Table navigation"> | 156 | <nav aria-label="Table navigation"> |
128 | <ul class="inline-flex items-center"> | 157 | <ul class="inline-flex items-center"> |
129 | <li> | 158 | <li> |
130 | <button | 159 | <button |
131 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 160 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
132 | aria-label="Previous" | 161 | aria-label="Previous" |
133 | > | 162 | > |
134 | <svg | 163 | <svg |
135 | aria-hidden="true" | 164 | aria-hidden="true" |
136 | class="w-4 h-4 fill-current" | 165 | class="w-4 h-4 fill-current" |
137 | viewBox="0 0 20 20" | 166 | viewBox="0 0 20 20" |
138 | > | 167 | > |
139 | <path | 168 | <path |
140 | 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" | 169 | 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" |
141 | clip-rule="evenodd" | 170 | clip-rule="evenodd" |
142 | fill-rule="evenodd" | 171 | fill-rule="evenodd" |
143 | ></path> | 172 | ></path> |
144 | </svg> | 173 | </svg> |
145 | </button> | 174 | </button> |
146 | </li> | 175 | </li> |
147 | <li> | 176 | <li> |
148 | <button | 177 | <button |
149 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 178 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
150 | > | 179 | > |
151 | 1 | 180 | 1 |
152 | </button> | 181 | </button> |
153 | </li> | 182 | </li> |
154 | <li> | 183 | <li> |
155 | <button | 184 | <button |
156 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 185 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
157 | > | 186 | > |
158 | 2 | 187 | 2 |
159 | </button> | 188 | </button> |
160 | </li> | 189 | </li> |
161 | <li> | 190 | <li> |
162 | <button | 191 | <button |
163 | 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" | 192 | 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" |
164 | > | 193 | > |
165 | 3 | 194 | 3 |
166 | </button> | 195 | </button> |
167 | </li> | 196 | </li> |
168 | <li> | 197 | <li> |
169 | <button | 198 | <button |
170 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 199 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
171 | > | 200 | > |
172 | 4 | 201 | 4 |
173 | </button> | 202 | </button> |
174 | </li> | 203 | </li> |
175 | <li> | 204 | <li> |
176 | <span class="px-3 py-1">...</span> | 205 | <span class="px-3 py-1">...</span> |
177 | </li> | 206 | </li> |
178 | <li> | 207 | <li> |
179 | <button | 208 | <button |
180 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 209 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
181 | > | 210 | > |
182 | 8 | 211 | 8 |
183 | </button> | 212 | </button> |
184 | </li> | 213 | </li> |
185 | <li> | 214 | <li> |
186 | <button | 215 | <button |
187 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 216 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
188 | > | 217 | > |
189 | 9 | 218 | 9 |
190 | </button> | 219 | </button> |
191 | </li> | 220 | </li> |
192 | <li> | 221 | <li> |
193 | <button | 222 | <button |
194 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 223 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
195 | aria-label="Next" | 224 | aria-label="Next" |
196 | > | 225 | > |
197 | <svg | 226 | <svg |
198 | class="w-4 h-4 fill-current" | 227 | class="w-4 h-4 fill-current" |
199 | aria-hidden="true" | 228 | aria-hidden="true" |
200 | viewBox="0 0 20 20" | 229 | viewBox="0 0 20 20" |
201 | > | 230 | > |
202 | <path | 231 | <path |
203 | 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" | 232 | 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" |
204 | clip-rule="evenodd" | 233 | clip-rule="evenodd" |
205 | fill-rule="evenodd" | 234 | fill-rule="evenodd" |
206 | ></path> | 235 | ></path> |
207 | </svg> | 236 | </svg> |
208 | </button> | 237 | </button> |
209 | </li> | 238 | </li> |
210 | </ul> | 239 | </ul> |
211 | </nav> | 240 | </nav> |
212 | </span> | 241 | </span> |
213 | </div>--> | 242 | </div>--> |
214 | </div> | 243 | </div> |
215 | 244 | ||
216 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | 245 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> |
217 | 246 | ||
218 | 247 | ||
219 | @endsection | 248 | @endsection |
220 | 249 |
resources/views/admin/worker/index_ajax.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Работники']) | 1 | <div class="w-full overflow-x-auto"> |
2 | 2 | <table class="w-full whitespace-no-wrap"> | |
3 | @section('content') | 3 | <thead> |
4 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 4 | <tr |
5 | <div class="w-full overflow-x-auto"> | 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 | <table class="w-full whitespace-no-wrap"> | ||
7 | <thead> | ||
8 | <tr | ||
9 | 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" | ||
10 | > | ||
11 | <th class="px-4 py-3">№</th> | ||
12 | <th class="px-4 py-3">Имя</th> | ||
13 | <th class="px-4 py-3">Email/логин</th> | ||
14 | <th class="px-4 py-3">Работодатель/работник</th> | ||
15 | <th class="px-4 py-3">Дата регистрации</th> | ||
16 | </tr> | ||
17 | </thead> | ||
18 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
19 | @foreach($users as $user) | ||
20 | <tr class="text-gray-700 dark:text-gray-400"> | ||
21 | <td class="px-4 py-3"> | ||
22 | {{$user->id}} | ||
23 | </td> | ||
24 | <td class="px-4 py-3"> | ||
25 | <!--<div class="flex items-center text-sm"> | ||
26 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
27 | <div | ||
28 | class="absolute inset-0 rounded-full shadow-inner" | ||
29 | aria-hidden="true" | ||
30 | ></div> | ||
31 | </div> | ||
32 | <div> | ||
33 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | ||
34 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
35 | Все пользователи сайта | ||
36 | </p> | ||
37 | </div> | ||
38 | </div> | ||
39 | --> | ||
40 | {{ $user->name }} | ||
41 | </td> | ||
42 | <td class="px-4 py-3 text-sm"> | ||
43 | {{ $user->email }} | ||
44 | </td> | ||
45 | <td class="px-4 py-3 text-xs"> | ||
46 | <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"> | ||
47 | @if ($user->is_worker) | ||
48 | Работник | ||
49 | @else | ||
50 | Работодатель | ||
51 | @endif | ||
52 | </span> | ||
53 | @if ($user->admin) | ||
54 | <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"> | ||
55 | Администратор | ||
56 | </span> | ||
57 | @endif | ||
58 | </td> | ||
59 | <td class="px-4 py-3 text-sm"> | ||
60 | {{ $user->created_at }} | ||
61 | </td> | ||
62 | </tr> | ||
63 | @endforeach | ||
64 | </tbody> | ||
65 | </table> | ||
66 | </div> | ||
67 | |||
68 | <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"> | ||
69 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
70 | </div> | ||
71 | |||
72 | |||
73 | <!--<div | ||
74 | 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" | ||
75 | > | 6 | > |
76 | <span class="flex items-center col-span-3"> | 7 | <th class="px-4 py-3">№</th> |
77 | Showing 21-30 of 100 | 8 | <th class="px-4 py-3">Имя</th> |
78 | </span> | 9 | <th class="px-4 py-3">Email/Телефон</th> |
79 | <span class="col-span-2"></span> | 10 | <th class="px-4 py-3">% заполнения анкеты</th> |
80 | 11 | <th class="px-4 py-3">Дата регистрации</th> | |
81 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 12 | <th class="px-4 py-3">Изменить</th> |
82 | <nav aria-label="Table navigation"> | 13 | <th class="px-4 py-3">Бан</th> |
83 | <ul class="inline-flex items-center"> | 14 | </tr> |
84 | <li> | 15 | </thead> |
85 | <button | 16 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
86 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 17 | @foreach($users as $user) |
87 | aria-label="Previous" | 18 | <tr class="text-gray-700 dark:text-gray-400"> |
88 | > | 19 | <td class="px-4 py-3"> |
89 | <svg | 20 | {{$user->id}} |
90 | aria-hidden="true" | 21 | </td> |
91 | class="w-4 h-4 fill-current" | 22 | <td class="px-4 py-3"> |
92 | viewBox="0 0 20 20" | 23 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} |
93 | > | 24 | </td> |
94 | <path | 25 | <td class="px-4 py-3 text-sm"> |
95 | 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" | 26 | <div class="flex items-center text-sm"> |
96 | clip-rule="evenodd" | 27 | <div> |
97 | fill-rule="evenodd" | 28 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> |
98 | ></path> | 29 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
99 | </svg> | 30 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} |
100 | </button> | 31 | </p> |
101 | </li> | 32 | </div> |
102 | <li> | 33 | </div> |
103 | <button | 34 | </td> |
104 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 35 | <td class="px-4 py-3 text-xs"> |
105 | > | 36 | @if (!empty($user->workers->persent_anketa)) |
106 | 1 | 37 | @if ($user->workers->persent_anketa > 40) |
107 | </button> | 38 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
108 | </li> | 39 | {{$user->workers->persent_anketa}}% |
109 | <li> | 40 | </span> |
110 | <button | 41 | @else |
111 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 42 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
112 | > | 43 | {{$user->workers->persent_anketa}}% |
113 | 2 | 44 | </span> |
114 | </button> | 45 | @endif |
115 | </li> | 46 | @else |
116 | <li> | 47 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
117 | <button | 48 | 10% |
118 | 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" | 49 | </span> |
119 | > | 50 | @endif |
120 | 3 | 51 | </td> |
121 | </button> | 52 | <td class="px-4 py-3 text-sm"> |
122 | </li> | 53 | {{ $user->created_at }} |
123 | <li> | 54 | </td> |
124 | <button | 55 | <td class="px-4 py-3 text-sm"> |
125 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 56 | @if ($user->id > 1) |
126 | > | 57 | <a href="{{ route('admin.user-profile', ['user' => $user->id]) }}">Изменить</a> |
127 | 4 | 58 | @endif |
128 | </button> | 59 | </td> |
129 | </li> | 60 | <td class="px-4 py-3 text-sm"> |
130 | <li> | 61 | @if ($user->id > 1) |
131 | <span class="px-3 py-1">...</span> | 62 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
132 | </li> | 63 | @endif |
133 | <li> | 64 | </td> |
134 | <button | 65 | </tr> |
135 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 66 | @endforeach |
136 | > | 67 | </tbody> |
137 | 8 | 68 | </table> |
138 | </button> | 69 | </div> |
139 | </li> | ||
140 | <li> | ||
141 | <button | ||
142 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
143 | > | ||
144 | 9 | ||
145 | </button> | ||
146 | </li> | ||
147 | <li> | ||
148 | <button | ||
149 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | ||
150 | aria-label="Next" | ||
151 | > | ||
152 | <svg | ||
153 | class="w-4 h-4 fill-current" | ||
154 | aria-hidden="true" | ||
155 | viewBox="0 0 20 20" | ||
156 | > | ||
157 | <path | ||
158 | 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" | ||
159 | clip-rule="evenodd" | ||
160 | fill-rule="evenodd" | ||
161 | ></path> | ||
162 | </svg> | ||
163 | </button> | ||
164 | </li> | ||
165 | </ul> | ||
166 | </nav> | ||
167 | </span> | ||
168 | </div>--> | ||
169 | </div> | ||
170 | |||
171 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | ||
172 | |||
173 | 70 | ||
174 | @endsection | 71 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
72 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
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 | <script | 12 | <script |
13 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" | 13 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" |
14 | defer | 14 | defer |
15 | ></script> | 15 | ></script> |
16 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> | 16 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> |
17 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> | 17 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> |
18 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> | 18 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> |
19 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> | 19 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> |
20 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> | 20 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> |
21 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> | 21 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> |
22 | </head> | 22 | </head> |
23 | <body> | 23 | <body> |
24 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> | 24 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> |
25 | <!-- Desktop sidebar --> | 25 | <!-- Desktop sidebar --> |
26 | <aside | 26 | <aside |
27 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" | 27 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" |
28 | > | 28 | > |
29 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 29 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
30 | <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 30 | <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
31 | href="{{ route('admin.index') }}"> | 31 | href="{{ route('admin.index') }}"> |
32 | Админка | 32 | Админка |
33 | </a> | 33 | </a> |
34 | <ul class="mt-6"> | 34 | <ul class="mt-6"> |
35 | <li class="relative px-6 py-3"> | 35 | <li class="relative px-6 py-3"> |
36 | <span | 36 | <span |
37 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 37 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
38 | aria-hidden="true" | 38 | aria-hidden="true" |
39 | ></span> | 39 | ></span> |
40 | <a | 40 | <a |
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 | href="{{ route('admin.index') }}" | 42 | href="{{ route('admin.index') }}" |
43 | > | 43 | > |
44 | <svg | 44 | <svg |
45 | class="w-5 h-5" | 45 | class="w-5 h-5" |
46 | aria-hidden="true" | 46 | aria-hidden="true" |
47 | fill="none" | 47 | fill="none" |
48 | stroke-linecap="round" | 48 | stroke-linecap="round" |
49 | stroke-linejoin="round" | 49 | stroke-linejoin="round" |
50 | stroke-width="2" | 50 | stroke-width="2" |
51 | viewBox="0 0 24 24" | 51 | viewBox="0 0 24 24" |
52 | stroke="currentColor" | 52 | stroke="currentColor" |
53 | > | 53 | > |
54 | <path | 54 | <path |
55 | 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" | 55 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
56 | ></path> | 56 | ></path> |
57 | </svg> | 57 | </svg> |
58 | <span class="ml-4">Главная страница</span> | 58 | <span class="ml-4">Главная страница</span> |
59 | </a> | 59 | </a> |
60 | </li> | 60 | </li> |
61 | </ul> | 61 | </ul> |
62 | <ul> | 62 | <ul> |
63 | <li class="relative px-6 py-3"> | 63 | <li class="relative px-6 py-3"> |
64 | <a | 64 | <a |
65 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 65 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
66 | href="{{ route('admin.users') }}" | 66 | href="{{ route('admin.users') }}" |
67 | > | 67 | > |
68 | <svg | 68 | <svg |
69 | class="w-5 h-5" | 69 | class="w-5 h-5" |
70 | aria-hidden="true" | 70 | aria-hidden="true" |
71 | fill="none" | 71 | fill="none" |
72 | stroke-linecap="round" | 72 | stroke-linecap="round" |
73 | stroke-linejoin="round" | 73 | stroke-linejoin="round" |
74 | stroke-width="2" | 74 | stroke-width="2" |
75 | viewBox="0 0 24 24" | 75 | viewBox="0 0 24 24" |
76 | stroke="currentColor" | 76 | stroke="currentColor" |
77 | > | 77 | > |
78 | <path | 78 | <path |
79 | 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" | 79 | 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" |
80 | ></path> | 80 | ></path> |
81 | </svg> | 81 | </svg> |
82 | <span class="ml-4">Пользователи</span> | 82 | <span class="ml-4">Пользователи</span> |
83 | </a> | 83 | </a> |
84 | </li> | 84 | </li> |
85 | <li class="relative px-6 py-3"> | 85 | <li class="relative px-6 py-3"> |
86 | <a | 86 | <a |
87 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 87 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
88 | href="{{ route('admin.employers') }}" | 88 | href="{{ route('admin.employers') }}" |
89 | > | 89 | > |
90 | <svg | 90 | <svg |
91 | class="w-5 h-5" | 91 | class="w-5 h-5" |
92 | aria-hidden="true" | 92 | aria-hidden="true" |
93 | fill="none" | 93 | fill="none" |
94 | stroke-linecap="round" | 94 | stroke-linecap="round" |
95 | stroke-linejoin="round" | 95 | stroke-linejoin="round" |
96 | stroke-width="2" | 96 | stroke-width="2" |
97 | viewBox="0 0 24 24" | 97 | viewBox="0 0 24 24" |
98 | stroke="currentColor" | 98 | stroke="currentColor" |
99 | > | 99 | > |
100 | <path | 100 | <path |
101 | 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" | 101 | 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" |
102 | ></path> | 102 | ></path> |
103 | </svg> | 103 | </svg> |
104 | <span class="ml-4">Работодатели</span> | 104 | <span class="ml-4">Работодатели</span> |
105 | </a> | 105 | </a> |
106 | </li> | 106 | </li> |
107 | <li class="relative px-6 py-3"> | 107 | <li class="relative px-6 py-3"> |
108 | <a | 108 | <a |
109 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 109 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
110 | href="{{ route('admin.workers') }}" | 110 | href="{{ route('admin.workers') }}" |
111 | > | 111 | > |
112 | <svg | 112 | <svg |
113 | class="w-5 h-5" | 113 | class="w-5 h-5" |
114 | aria-hidden="true" | 114 | aria-hidden="true" |
115 | fill="none" | 115 | fill="none" |
116 | stroke-linecap="round" | 116 | stroke-linecap="round" |
117 | stroke-linejoin="round" | 117 | stroke-linejoin="round" |
118 | stroke-width="2" | 118 | stroke-width="2" |
119 | viewBox="0 0 24 24" | 119 | viewBox="0 0 24 24" |
120 | stroke="currentColor" | 120 | stroke="currentColor" |
121 | > | 121 | > |
122 | <path | 122 | <path |
123 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 123 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
124 | ></path> | 124 | ></path> |
125 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 125 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
126 | </svg> | 126 | </svg> |
127 | <span class="ml-4">Соискатели</span> | 127 | <span class="ml-4">Соискатели</span> |
128 | </a> | 128 | </a> |
129 | </li> | 129 | </li> |
130 | <li class="relative px-6 py-3"> | 130 | <li class="relative px-6 py-3"> |
131 | <a | 131 | <a |
132 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 132 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
133 | href="{{ route('admin.ad-employers') }}" | 133 | href="{{ route('admin.ad-employers') }}" |
134 | > | 134 | > |
135 | <svg | 135 | <svg |
136 | class="w-5 h-5" | 136 | class="w-5 h-5" |
137 | aria-hidden="true" | 137 | aria-hidden="true" |
138 | fill="none" | 138 | fill="none" |
139 | stroke-linecap="round" | 139 | stroke-linecap="round" |
140 | stroke-linejoin="round" | 140 | stroke-linejoin="round" |
141 | stroke-width="2" | 141 | stroke-width="2" |
142 | viewBox="0 0 24 24" | 142 | viewBox="0 0 24 24" |
143 | stroke="currentColor" | 143 | stroke="currentColor" |
144 | > | 144 | > |
145 | <path | 145 | <path |
146 | 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" | 146 | 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" |
147 | ></path> | 147 | ></path> |
148 | </svg> | 148 | </svg> |
149 | <span class="ml-4">Вакансии</span> | 149 | <span class="ml-4">Вакансии</span> |
150 | </a> | 150 | </a> |
151 | </li> | 151 | </li> |
152 | |||
152 | <li class="relative px-6 py-3"> | 153 | <li class="relative px-6 py-3"> |
153 | <a | 154 | <a |
154 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 155 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
155 | href="{{ route('admin.categories.index') }}" | 156 | href="{{ route('admin.messages') }}" |
156 | > | 157 | > |
157 | <svg | 158 | <svg |
158 | class="w-5 h-5" | 159 | class="w-5 h-5" |
159 | aria-hidden="true" | 160 | aria-hidden="true" |
160 | fill="none" | 161 | fill="none" |
161 | stroke-linecap="round" | 162 | stroke-linecap="round" |
162 | stroke-linejoin="round" | 163 | stroke-linejoin="round" |
163 | stroke-width="2" | 164 | stroke-width="2" |
164 | viewBox="0 0 24 24" | 165 | viewBox="0 0 24 24" |
165 | stroke="currentColor" | 166 | stroke="currentColor" |
166 | > | 167 | > |
167 | <path | 168 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
168 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" | ||
169 | ></path> | ||
170 | </svg> | 169 | </svg> |
171 | <span class="ml-4">Категории</span> | 170 | <span class="ml-4">Сообщения</span> |
172 | </a> | 171 | </a> |
173 | </li> | 172 | </li> |
174 | <li class="relative px-6 py-3"> | 173 | <li class="relative px-6 py-3"> |
175 | <a | 174 | <a |
176 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 175 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
177 | href="{{ route('admin.job-titles') }}" | 176 | href="{{ route('admin.groups') }}" |
178 | > | 177 | > |
179 | <svg | 178 | <svg |
180 | class="w-5 h-5" | 179 | class="w-5 h-5" |
181 | aria-hidden="true" | 180 | aria-hidden="true" |
182 | fill="none" | 181 | fill="none" |
183 | stroke-linecap="round" | 182 | stroke-linecap="round" |
184 | stroke-linejoin="round" | 183 | stroke-linejoin="round" |
185 | stroke-width="2" | 184 | stroke-width="2" |
186 | viewBox="0 0 24 24" | 185 | viewBox="0 0 24 24" |
187 | stroke="currentColor" | 186 | stroke="currentColor" |
188 | > | 187 | > |
189 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 188 | <path |
189 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | ||
190 | ></path> | ||
190 | </svg> | 191 | </svg> |
191 | <span class="ml-4">Должности</span> | 192 | <span class="ml-4">Группы пользователей</span> |
192 | </a> | 193 | </a> |
193 | </li> | 194 | </li> |
194 | <li class="relative px-6 py-3"> | 195 | <li class="relative px-6 py-3"> |
195 | <a | 196 | <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" |
196 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 197 | href="{{ route('admin.roles') }}"> |
197 | href="{{ route('admin.messages') }}" | ||
198 | > | ||
199 | <svg | 198 | <svg |
200 | class="w-5 h-5" | 199 | class="w-5 h-5" |
201 | aria-hidden="true" | 200 | aria-hidden="true" |
202 | fill="none" | 201 | fill="none" |
203 | stroke-linecap="round" | 202 | stroke-linecap="round" |
204 | stroke-linejoin="round" | 203 | stroke-linejoin="round" |
205 | stroke-width="2" | 204 | stroke-width="2" |
206 | viewBox="0 0 24 24" | 205 | viewBox="0 0 24 24" |
207 | stroke="currentColor" | 206 | stroke="currentColor" |
208 | > | 207 | > |
209 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 208 | <path |
209 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | ||
210 | ></path> | ||
210 | </svg> | 211 | </svg> |
211 | <span class="ml-4">Сообщения</span> | 212 | <span class="ml-4">Роли пользователей</span> |
212 | </a> | 213 | </a> |
213 | </li> | 214 | </li> |
214 | <li class="relative px-6 py-3"> | 215 | <li class="relative px-6 py-3"> |
215 | <a | 216 | <a |
216 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 217 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
217 | href="{{ route('admin.groups') }}" | 218 | href="{{ route('admin.statics') }}" |
218 | > | 219 | > |
219 | <svg | 220 | <svg |
220 | class="w-5 h-5" | 221 | class="w-5 h-5" |
221 | aria-hidden="true" | 222 | aria-hidden="true" |
222 | fill="none" | 223 | fill="none" |
223 | stroke-linecap="round" | 224 | stroke-linecap="round" |
224 | stroke-linejoin="round" | 225 | stroke-linejoin="round" |
225 | stroke-width="2" | 226 | stroke-width="2" |
226 | viewBox="0 0 24 24" | 227 | viewBox="0 0 24 24" |
227 | stroke="currentColor" | 228 | stroke="currentColor" |
228 | > | 229 | > |
229 | <path | 230 | <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" | 231 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
231 | ></path> | 232 | ></path> |
233 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | ||
232 | </svg> | 234 | </svg> |
233 | <span class="ml-4">Группы пользователей</span> | 235 | <span class="ml-4">Статистика</span> |
234 | </a> | 236 | </a> |
235 | </li> | 237 | </li> |
238 | <!-- Справочники --> | ||
239 | <li class="relative px-6 py-3" x-data="{ open1: false }"> | ||
240 | <button | ||
241 | 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" | ||
242 | @click="open1=!open1" | ||
243 | aria-haspopup="true"> | ||
244 | <span class="inline-flex items-center"> | ||
245 | <svg | ||
246 | class="w-5 h-5" | ||
247 | aria-hidden="true" | ||
248 | fill="none" | ||
249 | stroke-linecap="round" | ||
250 | stroke-linejoin="round" | ||
251 | stroke-width="2" | ||
252 | viewBox="0 0 24 24" | ||
253 | stroke="currentColor"> | ||
254 | <path | ||
255 | 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" | ||
256 | ></path> | ||
257 | </svg> | ||
258 | <span class="ml-4">Справочники</span> | ||
259 | </span> | ||
260 | <svg | ||
261 | class="w-4 h-4" | ||
262 | aria-hidden="true" | ||
263 | fill="currentColor" | ||
264 | viewBox="0 0 20 20" | ||
265 | > | ||
266 | <path | ||
267 | fill-rule="evenodd" | ||
268 | 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" | ||
269 | clip-rule="evenodd" | ||
270 | ></path> | ||
271 | </svg> | ||
272 | </button> | ||
273 | <template x-if="open1"> | ||
274 | <ul | ||
275 | x-transition:enter="transition-all ease-in-out duration-300" | ||
276 | x-transition:enter-start="opacity-25 max-h-0" | ||
277 | x-transition:enter-end="opacity-100 max-h-xl" | ||
278 | x-transition:leave="transition-all ease-in-out duration-300" | ||
279 | x-transition:leave-start="opacity-100 max-h-xl" | ||
280 | x-transition:leave-end="opacity-0 max-h-0" | ||
281 | 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" | ||
282 | aria-label="submenu" | ||
283 | > | ||
284 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
285 | <a class="w-full" href="{{ route('admin.job-titles') }}">Должности</a> | ||
286 | </li> | ||
287 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
288 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории</a> | ||
289 | </li> | ||
290 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
291 | <a class="w-full" href="{{ route('admin.infobloks') }}">Блоки-Дипломы</a> | ||
292 | </li> | ||
293 | |||
294 | </ul> | ||
295 | </template> | ||
296 | </li> | ||
297 | |||
298 | |||
299 | <!-- Редактор --> | ||
236 | <li class="relative px-6 py-3"> | 300 | <li class="relative px-6 py-3"> |
237 | <button | 301 | <button |
238 | 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" | 302 | 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" |
239 | @click="togglePagesMenu" | 303 | @click="togglePagesMenu" |
240 | aria-haspopup="true" | 304 | aria-haspopup="true"> |
241 | > | ||
242 | <span class="inline-flex items-center"> | 305 | <span class="inline-flex items-center"> |
243 | <svg | 306 | <svg |
244 | class="w-5 h-5" | 307 | class="w-5 h-5" |
245 | aria-hidden="true" | 308 | aria-hidden="true" |
246 | fill="none" | 309 | fill="none" |
247 | stroke-linecap="round" | 310 | stroke-linecap="round" |
248 | stroke-linejoin="round" | 311 | stroke-linejoin="round" |
249 | stroke-width="2" | 312 | stroke-width="2" |
250 | viewBox="0 0 24 24" | 313 | viewBox="0 0 24 24" |
251 | stroke="currentColor" | 314 | stroke="currentColor"> |
252 | > | ||
253 | <path | 315 | <path |
254 | 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" | 316 | 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" |
255 | ></path> | 317 | ></path> |
256 | </svg> | 318 | </svg> |
257 | <span class="ml-4">Редактор</span> | 319 | <span class="ml-4">Редактор</span> |
258 | </span> | 320 | </span> |
259 | <svg | 321 | <svg |
260 | class="w-4 h-4" | 322 | class="w-4 h-4" |
261 | aria-hidden="true" | 323 | aria-hidden="true" |
262 | fill="currentColor" | 324 | fill="currentColor" |
263 | viewBox="0 0 20 20" | 325 | viewBox="0 0 20 20" |
264 | > | 326 | > |
265 | <path | 327 | <path |
266 | fill-rule="evenodd" | 328 | fill-rule="evenodd" |
267 | 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" | 329 | 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" |
268 | clip-rule="evenodd" | 330 | clip-rule="evenodd" |
269 | ></path> | 331 | ></path> |
270 | </svg> | 332 | </svg> |
271 | </button> | 333 | </button> |
272 | <template x-if="isPagesMenuOpen"> | 334 | <template x-if="isPagesMenuOpen"> |
273 | <ul | 335 | <ul |
274 | x-transition:enter="transition-all ease-in-out duration-300" | 336 | x-transition:enter="transition-all ease-in-out duration-300" |
275 | x-transition:enter-start="opacity-25 max-h-0" | 337 | x-transition:enter-start="opacity-25 max-h-0" |
276 | x-transition:enter-end="opacity-100 max-h-xl" | 338 | x-transition:enter-end="opacity-100 max-h-xl" |
277 | x-transition:leave="transition-all ease-in-out duration-300" | 339 | x-transition:leave="transition-all ease-in-out duration-300" |
278 | x-transition:leave-start="opacity-100 max-h-xl" | 340 | x-transition:leave-start="opacity-100 max-h-xl" |
279 | x-transition:leave-end="opacity-0 max-h-0" | 341 | x-transition:leave-end="opacity-0 max-h-0" |
280 | 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" | 342 | 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" |
281 | aria-label="submenu" | 343 | aria-label="submenu" |
282 | > | 344 | > |
283 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 345 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
284 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 346 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
285 | </li> | 347 | </li> |
286 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 348 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
287 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 349 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
288 | </li> | 350 | </li> |
289 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 351 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
290 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> | 352 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> |
291 | </li> | 353 | </li> |
292 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 354 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
293 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 355 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
294 | </li> | 356 | </li> |
295 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 357 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
296 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 358 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
297 | </li> | 359 | </li> |
298 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 360 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
299 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 361 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
300 | </li> | 362 | </li> |
301 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 363 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
302 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 364 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
303 | </li> | 365 | </li> |
304 | </ul> | 366 | </ul> |
305 | </template> | 367 | </template> |
306 | </li> | 368 | </li> |
369 | |||
307 | </ul> | 370 | </ul> |
308 | <!--<div class="px-6 my-6"> | 371 | <!--<div class="px-6 my-6"> |
309 | <button | 372 | <button |
310 | 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" | 373 | 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" |
311 | > | 374 | > |
312 | Create account | 375 | Create account |
313 | <span class="ml-2" aria-hidden="true">+</span> | 376 | <span class="ml-2" aria-hidden="true">+</span> |
314 | </button> | 377 | </button> |
315 | </div>--> | 378 | </div>--> |
316 | </div> | 379 | </div> |
317 | </aside> | 380 | </aside> |
318 | <!-- Mobile sidebar --> | 381 | <!-- Mobile sidebar --> |
319 | <!-- Backdrop --> | 382 | <!-- Backdrop --> |
320 | <div | 383 | <div |
321 | x-show="isSideMenuOpen" | 384 | x-show="isSideMenuOpen" |
322 | x-transition:enter="transition ease-in-out duration-150" | 385 | x-transition:enter="transition ease-in-out duration-150" |
323 | x-transition:enter-start="opacity-0" | 386 | x-transition:enter-start="opacity-0" |
324 | x-transition:enter-end="opacity-100" | 387 | x-transition:enter-end="opacity-100" |
325 | x-transition:leave="transition ease-in-out duration-150" | 388 | x-transition:leave="transition ease-in-out duration-150" |
326 | x-transition:leave-start="opacity-100" | 389 | x-transition:leave-start="opacity-100" |
327 | x-transition:leave-end="opacity-0" | 390 | x-transition:leave-end="opacity-0" |
328 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | 391 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" |
329 | ></div> | 392 | ></div> |
330 | <aside | 393 | <aside |
331 | 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" | 394 | 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" |
332 | x-show="isSideMenuOpen" | 395 | x-show="isSideMenuOpen" |
333 | x-transition:enter="transition ease-in-out duration-150" | 396 | x-transition:enter="transition ease-in-out duration-150" |
334 | x-transition:enter-start="opacity-0 transform -translate-x-20" | 397 | x-transition:enter-start="opacity-0 transform -translate-x-20" |
335 | x-transition:enter-end="opacity-100" | 398 | x-transition:enter-end="opacity-100" |
336 | x-transition:leave="transition ease-in-out duration-150" | 399 | x-transition:leave="transition ease-in-out duration-150" |
337 | x-transition:leave-start="opacity-100" | 400 | x-transition:leave-start="opacity-100" |
338 | x-transition:leave-end="opacity-0 transform -translate-x-20" | 401 | x-transition:leave-end="opacity-0 transform -translate-x-20" |
339 | @click.away="closeSideMenu" | 402 | @click.away="closeSideMenu" |
340 | @keydown.escape="closeSideMenu" | 403 | @keydown.escape="closeSideMenu" |
341 | > | 404 | > |
342 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 405 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
343 | <a | 406 | <a |
344 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 407 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
345 | href="{{ route('admin.index') }}" | 408 | href="{{ route('admin.index') }}" |
346 | > | 409 | > |
347 | Админка | 410 | Админка |
348 | </a> | 411 | </a> |
349 | <ul class="mt-6"> | 412 | <ul class="mt-6"> |
350 | <li class="relative px-6 py-3"> | 413 | <li class="relative px-6 py-3"> |
351 | <span | 414 | <span |
352 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 415 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
353 | aria-hidden="true" | 416 | aria-hidden="true" |
354 | ></span> | 417 | ></span> |
355 | <a | 418 | <a |
356 | 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" | 419 | 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" |
357 | href="{{ route('admin.index') }}" | 420 | href="{{ route('admin.index') }}" |
358 | > | 421 | > |
359 | <svg | 422 | <svg |
360 | class="w-5 h-5" | 423 | class="w-5 h-5" |
361 | aria-hidden="true" | 424 | aria-hidden="true" |
362 | fill="none" | 425 | fill="none" |
363 | stroke-linecap="round" | 426 | stroke-linecap="round" |
364 | stroke-linejoin="round" | 427 | stroke-linejoin="round" |
365 | stroke-width="2" | 428 | stroke-width="2" |
366 | viewBox="0 0 24 24" | 429 | viewBox="0 0 24 24" |
367 | stroke="currentColor" | 430 | stroke="currentColor" |
368 | > | 431 | > |
369 | <path | 432 | <path |
370 | 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" | 433 | 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" |
371 | ></path> | 434 | ></path> |
372 | </svg> | 435 | </svg> |
373 | <span class="ml-4">Главная страница</span> | 436 | <span class="ml-4">Главная страница</span> |
374 | </a> | 437 | </a> |
375 | </li> | 438 | </li> |
376 | </ul> | 439 | </ul> |
377 | <ul> | 440 | <ul> |
378 | <li class="relative px-6 py-3"> | 441 | <li class="relative px-6 py-3"> |
379 | <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" | 442 | <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" |
380 | href="{{ route('admin.users') }}"> | 443 | href="{{ route('admin.users') }}"> |
381 | <svg | 444 | <svg |
382 | class="w-5 h-5" | 445 | class="w-5 h-5" |
383 | aria-hidden="true" | 446 | aria-hidden="true" |
384 | fill="none" | 447 | fill="none" |
385 | stroke-linecap="round" | 448 | stroke-linecap="round" |
386 | stroke-linejoin="round" | 449 | stroke-linejoin="round" |
387 | stroke-width="2" | 450 | stroke-width="2" |
388 | viewBox="0 0 24 24" | 451 | viewBox="0 0 24 24" |
389 | stroke="currentColor" | 452 | stroke="currentColor" |
390 | > | 453 | > |
391 | <path | 454 | <path |
392 | 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" | 455 | 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" |
393 | ></path> | 456 | ></path> |
394 | </svg> | 457 | </svg> |
395 | <span class="ml-4">Пользователи</span> | 458 | <span class="ml-4">Пользователи</span> |
396 | </a> | 459 | </a> |
397 | </li> | 460 | </li> |
398 | <li class="relative px-6 py-3"> | 461 | <li class="relative px-6 py-3"> |
399 | <a | 462 | <a |
400 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 463 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
401 | href="{{ route('admin.employers') }}" | 464 | href="{{ route('admin.employers') }}" |
402 | > | 465 | > |
403 | <svg | 466 | <svg |
404 | class="w-5 h-5" | 467 | class="w-5 h-5" |
405 | aria-hidden="true" | 468 | aria-hidden="true" |
406 | fill="none" | 469 | fill="none" |
407 | stroke-linecap="round" | 470 | stroke-linecap="round" |
408 | stroke-linejoin="round" | 471 | stroke-linejoin="round" |
409 | stroke-width="2" | 472 | stroke-width="2" |
410 | viewBox="0 0 24 24" | 473 | viewBox="0 0 24 24" |
411 | stroke="currentColor" | 474 | stroke="currentColor" |
412 | > | 475 | > |
413 | <path | 476 | <path |
414 | 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" | 477 | 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" |
415 | ></path> | 478 | ></path> |
416 | </svg> | 479 | </svg> |
417 | <span class="ml-4">Работодатели</span> | 480 | <span class="ml-4">Работодатели</span> |
418 | </a> | 481 | </a> |
419 | </li> | 482 | </li> |
420 | <li class="relative px-6 py-3"> | 483 | <li class="relative px-6 py-3"> |
421 | <a | 484 | <a |
422 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 485 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
423 | href="{{ route('admin.workers') }}" | 486 | href="{{ route('admin.workers') }}" |
424 | > | 487 | > |
425 | <svg | 488 | <svg |
426 | class="w-5 h-5" | 489 | class="w-5 h-5" |
427 | aria-hidden="true" | 490 | aria-hidden="true" |
428 | fill="none" | 491 | fill="none" |
429 | stroke-linecap="round" | 492 | stroke-linecap="round" |
430 | stroke-linejoin="round" | 493 | stroke-linejoin="round" |
431 | stroke-width="2" | 494 | stroke-width="2" |
432 | viewBox="0 0 24 24" | 495 | viewBox="0 0 24 24" |
433 | stroke="currentColor" | 496 | stroke="currentColor" |
434 | > | 497 | > |
435 | <path | 498 | <path |
436 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 499 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
437 | ></path> | 500 | ></path> |
438 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 501 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
439 | </svg> | 502 | </svg> |
440 | <span class="ml-4">Соискатели</span> | 503 | <span class="ml-4">Соискатели</span> |
441 | </a> | 504 | </a> |
442 | </li> | 505 | </li> |
443 | <li class="relative px-6 py-3"> | 506 | <li class="relative px-6 py-3"> |
444 | <a | 507 | <a |
445 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 508 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
446 | href="{{ route('admin.ad-employers') }}" | 509 | href="{{ route('admin.ad-employers') }}" |
447 | > | 510 | > |
448 | <svg | 511 | <svg |
449 | class="w-5 h-5" | 512 | class="w-5 h-5" |
450 | aria-hidden="true" | 513 | aria-hidden="true" |
451 | fill="none" | 514 | fill="none" |
452 | stroke-linecap="round" | 515 | stroke-linecap="round" |
453 | stroke-linejoin="round" | 516 | stroke-linejoin="round" |
454 | stroke-width="2" | 517 | stroke-width="2" |
455 | viewBox="0 0 24 24" | 518 | viewBox="0 0 24 24" |
456 | stroke="currentColor" | 519 | stroke="currentColor" |
457 | > | 520 | > |
458 | <path | 521 | <path |
459 | 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" | 522 | 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" |
460 | ></path> | 523 | ></path> |
461 | </svg> | 524 | </svg> |
462 | <span class="ml-4">Вакансии</span> | 525 | <span class="ml-4">Вакансии</span> |
463 | </a> | 526 | </a> |
464 | </li> | 527 | </li> |
465 | <li class="relative px-6 py-3"> | 528 | <li class="relative px-6 py-3"> |
466 | <a | 529 | <a |
467 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 530 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
468 | href="{{ route('admin.categories.index') }}" | 531 | href="{{ route('admin.messages') }}" |
469 | > | 532 | > |
470 | <svg | 533 | <svg |
471 | class="w-5 h-5" | 534 | class="w-5 h-5" |
472 | aria-hidden="true" | 535 | aria-hidden="true" |
473 | fill="none" | 536 | fill="none" |
474 | stroke-linecap="round" | 537 | stroke-linecap="round" |
475 | stroke-linejoin="round" | 538 | stroke-linejoin="round" |
476 | stroke-width="2" | 539 | stroke-width="2" |
477 | viewBox="0 0 24 24" | 540 | viewBox="0 0 24 24" |
478 | stroke="currentColor" | 541 | stroke="currentColor" |
479 | > | 542 | > |
480 | <path | 543 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
481 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" | ||
482 | ></path> | ||
483 | </svg> | 544 | </svg> |
484 | <span class="ml-4">Категории</span> | 545 | <span class="ml-4">Сообщения</span> |
485 | </a> | 546 | </a> |
486 | </li> | 547 | </li> |
487 | <li class="relative px-6 py-3"> | 548 | <li class="relative px-6 py-3"> |
488 | <a | 549 | <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" |
489 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 550 | href="{{ route('admin.groups') }}"> |
490 | href="{{ route('admin.job-titles') }}" | ||
491 | > | ||
492 | <svg | 551 | <svg |
493 | class="w-5 h-5" | 552 | class="w-5 h-5" |
494 | aria-hidden="true" | 553 | aria-hidden="true" |
495 | fill="none" | 554 | fill="none" |
496 | stroke-linecap="round" | 555 | stroke-linecap="round" |
497 | stroke-linejoin="round" | 556 | stroke-linejoin="round" |
498 | stroke-width="2" | 557 | stroke-width="2" |
499 | viewBox="0 0 24 24" | 558 | viewBox="0 0 24 24" |
500 | stroke="currentColor" | 559 | stroke="currentColor" |
501 | > | 560 | > |
502 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 561 | <path |
562 | 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" | ||
563 | ></path> | ||
503 | </svg> | 564 | </svg> |
504 | <span class="ml-4">Должности</span> | 565 | <span class="ml-4">Группы пользователей</span> |
505 | </a> | 566 | </a> |
506 | </li> | 567 | </li> |
507 | <li class="relative px-6 py-3"> | 568 | <li class="relative px-6 py-3"> |
508 | <a | 569 | <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" |
509 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 570 | href="{{ route('admin.roles') }}"> |
510 | href="{{ route('admin.messages') }}" | ||
511 | > | ||
512 | <svg | 571 | <svg |
513 | class="w-5 h-5" | 572 | class="w-5 h-5" |
514 | aria-hidden="true" | 573 | aria-hidden="true" |
515 | fill="none" | 574 | fill="none" |
516 | stroke-linecap="round" | 575 | stroke-linecap="round" |
517 | stroke-linejoin="round" | 576 | stroke-linejoin="round" |
518 | stroke-width="2" | 577 | stroke-width="2" |
519 | viewBox="0 0 24 24" | 578 | viewBox="0 0 24 24" |
520 | stroke="currentColor" | 579 | stroke="currentColor" |
521 | > | 580 | > |
522 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 581 | <path |
582 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | ||
583 | ></path> | ||
523 | </svg> | 584 | </svg> |
524 | <span class="ml-4">Сообщения</span> | 585 | <span class="ml-4">Роли пользователей</span> |
525 | </a> | 586 | </a> |
526 | </li> | 587 | </li> |
527 | <li class="relative px-6 py-3"> | 588 | <li class="relative px-6 py-3"> |
528 | <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" | 589 | <a |
529 | href="{{ route('admin.groups') }}"> | 590 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
591 | href="{{ route('admin.statics') }}" | ||
592 | > | ||
530 | <svg | 593 | <svg |
531 | class="w-5 h-5" | 594 | class="w-5 h-5" |
532 | aria-hidden="true" | 595 | aria-hidden="true" |
533 | fill="none" | 596 | fill="none" |
534 | stroke-linecap="round" | 597 | stroke-linecap="round" |
535 | stroke-linejoin="round" | 598 | stroke-linejoin="round" |
536 | stroke-width="2" | 599 | stroke-width="2" |
537 | viewBox="0 0 24 24" | 600 | viewBox="0 0 24 24" |
538 | stroke="currentColor" | 601 | stroke="currentColor" |
539 | > | 602 | > |
540 | <path | 603 | <path |
541 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 604 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
542 | ></path> | 605 | ></path> |
606 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | ||
543 | </svg> | 607 | </svg> |
544 | <span class="ml-4">Группы пользователей</span> | 608 | <span class="ml-4">Статистика</span> |
545 | </a> | 609 | </a> |
546 | </li> | 610 | </li> |
611 | <!-- Справочники --> | ||
612 | <li class="relative px-6 py-3" x-data="{ open2: false }"> | ||
613 | <button | ||
614 | 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" | ||
615 | @click="open2=!open2" | ||
616 | aria-haspopup="true"> | ||
617 | <span class="inline-flex items-center"> | ||
618 | <svg | ||
619 | class="w-5 h-5" | ||
620 | aria-hidden="true" | ||
621 | fill="none" | ||
622 | stroke-linecap="round" | ||
623 | stroke-linejoin="round" | ||
624 | stroke-width="2" | ||
625 | viewBox="0 0 24 24" | ||
626 | stroke="currentColor"> | ||
627 | <path | ||
628 | 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" | ||
629 | ></path> | ||
630 | </svg> | ||
631 | <span class="ml-4">Справочники</span> | ||
632 | </span> | ||
633 | <svg | ||
634 | class="w-4 h-4" | ||
635 | aria-hidden="true" | ||
636 | fill="currentColor" | ||
637 | viewBox="0 0 20 20" | ||
638 | > | ||
639 | <path | ||
640 | fill-rule="evenodd" | ||
641 | 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" | ||
642 | clip-rule="evenodd" | ||
643 | ></path> | ||
644 | </svg> | ||
645 | </button> | ||
646 | <template x-if="open2"> | ||
647 | <ul | ||
648 | x-transition:enter="transition-all ease-in-out duration-300" | ||
649 | x-transition:enter-start="opacity-25 max-h-0" | ||
650 | x-transition:enter-end="opacity-100 max-h-xl" | ||
651 | x-transition:leave="transition-all ease-in-out duration-300" | ||
652 | x-transition:leave-start="opacity-100 max-h-xl" | ||
653 | x-transition:leave-end="opacity-0 max-h-0" | ||
654 | 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" | ||
655 | aria-label="submenu" | ||
656 | > | ||
657 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
658 | <a class="w-full" href="{{ route('admin.job-titles') }}">Должности</a> | ||
659 | </li> | ||
660 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
661 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории</a> | ||
662 | </li> | ||
663 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | ||
664 | <a class="w-full" href="{{ route('admin.infobloks') }}">Блоки-Дипломы</a> | ||
665 | </li> | ||
666 | |||
667 | </ul> | ||
668 | </template> | ||
669 | </li> | ||
670 | |||
671 | |||
672 | <!-- Редактор --> | ||
547 | <li class="relative px-6 py-3"> | 673 | <li class="relative px-6 py-3"> |
548 | <button | 674 | <button |
549 | 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" | 675 | 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" |
550 | @click="togglePagesMenu" | 676 | @click="togglePagesMenu" |
551 | aria-haspopup="true" | 677 | aria-haspopup="true" |
552 | > | 678 | > |
553 | <span class="inline-flex items-center"> | 679 | <span class="inline-flex items-center"> |
554 | <svg | 680 | <svg |
555 | class="w-5 h-5" | 681 | class="w-5 h-5" |
556 | aria-hidden="true" | 682 | aria-hidden="true" |
557 | fill="none" | 683 | fill="none" |
558 | stroke-linecap="round" | 684 | stroke-linecap="round" |
559 | stroke-linejoin="round" | 685 | stroke-linejoin="round" |
560 | stroke-width="2" | 686 | stroke-width="2" |
561 | viewBox="0 0 24 24" | 687 | viewBox="0 0 24 24" |
562 | stroke="currentColor" | 688 | stroke="currentColor" |
563 | > | 689 | > |
564 | <path | 690 | <path |
565 | 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" | 691 | 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" |
566 | ></path> | 692 | ></path> |
567 | </svg> | 693 | </svg> |
568 | <span class="ml-4">Редактор</span> | 694 | <span class="ml-4">Редактор</span> |
569 | </span> | 695 | </span> |
570 | <svg | 696 | <svg |
571 | class="w-4 h-4" | 697 | class="w-4 h-4" |
572 | aria-hidden="true" | 698 | aria-hidden="true" |
573 | fill="currentColor" | 699 | fill="currentColor" |
574 | viewBox="0 0 20 20" | 700 | viewBox="0 0 20 20" |
575 | > | 701 | > |
576 | <path | 702 | <path |
577 | fill-rule="evenodd" | 703 | fill-rule="evenodd" |
578 | 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" | 704 | 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" |
579 | clip-rule="evenodd" | 705 | clip-rule="evenodd" |
580 | ></path> | 706 | ></path> |
581 | </svg> | 707 | </svg> |
582 | </button> | 708 | </button> |
583 | <template x-if="isPagesMenuOpen"> | 709 | <template x-if="isPagesMenuOpen"> |
584 | <ul | 710 | <ul |
585 | x-transition:enter="transition-all ease-in-out duration-300" | 711 | x-transition:enter="transition-all ease-in-out duration-300" |
586 | x-transition:enter-start="opacity-25 max-h-0" | 712 | x-transition:enter-start="opacity-25 max-h-0" |
587 | x-transition:enter-end="opacity-100 max-h-xl" | 713 | x-transition:enter-end="opacity-100 max-h-xl" |
588 | x-transition:leave="transition-all ease-in-out duration-300" | 714 | x-transition:leave="transition-all ease-in-out duration-300" |
589 | x-transition:leave-start="opacity-100 max-h-xl" | 715 | x-transition:leave-start="opacity-100 max-h-xl" |
590 | x-transition:leave-end="opacity-0 max-h-0" | 716 | x-transition:leave-end="opacity-0 max-h-0" |
591 | 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" | 717 | 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" |
592 | aria-label="submenu" | 718 | aria-label="submenu" |
593 | > | 719 | > |
594 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 720 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
595 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 721 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
596 | </li> | 722 | </li> |
597 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 723 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
598 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 724 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
599 | </li> | 725 | </li> |
600 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 726 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
601 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> | 727 | <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> |
602 | </li> | 728 | </li> |
603 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 729 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
604 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 730 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
605 | </li> | 731 | </li> |
606 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 732 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
607 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 733 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
608 | </li> | 734 | </li> |
609 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 735 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
610 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 736 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
611 | </li> | 737 | </li> |
612 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> | 738 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> |
613 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 739 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
614 | </li> | 740 | </li> |
615 | 741 | ||
616 | </ul> | 742 | </ul> |
617 | </template> | 743 | </template> |
618 | </li> | 744 | </li> |
619 | </ul> | 745 | </ul> |
620 | <!--<div class="px-6 my-6"> | 746 | <!--<div class="px-6 my-6"> |
621 | <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"> | 747 | <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"> |
622 | Create account | 748 | Create account |
623 | <span class="ml-2" aria-hidden="true">+</span> | 749 | <span class="ml-2" aria-hidden="true">+</span> |
624 | </button> | 750 | </button> |
625 | </div>--> | 751 | </div>--> |
626 | </div> | 752 | </div> |
627 | </aside> | 753 | </aside> |
628 | <div class="flex flex-col flex-1 w-full"> | 754 | <div class="flex flex-col flex-1 w-full"> |
629 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> | 755 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> |
630 | <div | 756 | <div |
631 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" | 757 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" |
632 | > | 758 | > |
633 | <!-- Mobile hamburger --> | 759 | <!-- Mobile hamburger --> |
634 | <button | 760 | <button |
635 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" | 761 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" |
636 | @click="toggleSideMenu" | 762 | @click="toggleSideMenu" |
637 | aria-label="Menu" | 763 | aria-label="Menu" |
638 | > | 764 | > |
639 | <svg | 765 | <svg |
640 | class="w-6 h-6" | 766 | class="w-6 h-6" |
641 | aria-hidden="true" | 767 | aria-hidden="true" |
642 | fill="currentColor" | 768 | fill="currentColor" |
643 | viewBox="0 0 20 20" | 769 | viewBox="0 0 20 20" |
644 | > | 770 | > |
645 | <path | 771 | <path |
646 | fill-rule="evenodd" | 772 | fill-rule="evenodd" |
647 | 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" | 773 | 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" |
648 | clip-rule="evenodd" | 774 | clip-rule="evenodd" |
649 | ></path> | 775 | ></path> |
650 | </svg> | 776 | </svg> |
651 | </button> | 777 | </button> |
652 | <!-- Search input --> | 778 | <!-- Search input --> |
653 | <div class="flex justify-center flex-1 lg:mr-32"> | 779 | <div class="flex justify-center flex-1 lg:mr-32"> |
654 | <div | 780 | <div |
655 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" | 781 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" |
656 | > | 782 | > |
657 | <div class="absolute inset-y-0 flex items-center pl-2"> | 783 | |
658 | <svg | 784 | @yield('search') |
659 | class="w-4 h-4" | ||
660 | aria-hidden="true" | ||
661 | fill="currentColor" | ||
662 | viewBox="0 0 20 20" | ||
663 | > | ||
664 | <path | ||
665 | fill-rule="evenodd" | ||
666 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" | ||
667 | clip-rule="evenodd" | ||
668 | ></path> | ||
669 | </svg> | ||
670 | </div> | ||
671 | <input | ||
672 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" | ||
673 | type="text" | ||
674 | placeholder="Искать..." | ||
675 | aria-label="Search" | ||
676 | /> | ||
677 | </div> | 785 | </div> |
678 | </div> | 786 | </div> |
679 | <ul class="flex items-center flex-shrink-0 space-x-6"> | 787 | <ul class="flex items-center flex-shrink-0 space-x-6"> |
680 | <!-- Theme toggler --> | 788 | <!-- Theme toggler --> |
681 | <li class="flex"> | 789 | <li class="flex"> |
682 | <button | 790 | <button |
683 | class="rounded-md focus:outline-none focus:shadow-outline-purple" | 791 | class="rounded-md focus:outline-none focus:shadow-outline-purple" |
684 | @click="toggleTheme" | 792 | @click="toggleTheme" |
685 | aria-label="Toggle color mode" | 793 | aria-label="Toggle color mode" |
686 | > | 794 | > |
687 | <template x-if="!dark"> | 795 | <template x-if="!dark"> |
688 | <svg | 796 | <svg |
689 | class="w-5 h-5" | 797 | class="w-5 h-5" |
690 | aria-hidden="true" | 798 | aria-hidden="true" |
691 | fill="currentColor" | 799 | fill="currentColor" |
692 | viewBox="0 0 20 20" | 800 | viewBox="0 0 20 20" |
693 | > | 801 | > |
694 | <path | 802 | <path |
695 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" | 803 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" |
696 | ></path> | 804 | ></path> |
697 | </svg> | 805 | </svg> |
698 | </template> | 806 | </template> |
699 | <template x-if="dark"> | 807 | <template x-if="dark"> |
700 | <svg | 808 | <svg |
701 | class="w-5 h-5" | 809 | class="w-5 h-5" |
702 | aria-hidden="true" | 810 | aria-hidden="true" |
703 | fill="currentColor" | 811 | fill="currentColor" |
704 | viewBox="0 0 20 20" | 812 | viewBox="0 0 20 20" |
705 | > | 813 | > |
706 | <path | 814 | <path |
707 | fill-rule="evenodd" | 815 | fill-rule="evenodd" |
708 | 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" | 816 | 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" |
709 | clip-rule="evenodd" | 817 | clip-rule="evenodd" |
710 | ></path> | 818 | ></path> |
711 | </svg> | 819 | </svg> |
712 | </template> | 820 | </template> |
713 | </button> | 821 | </button> |
714 | </li> | 822 | </li> |
715 | <!-- Notifications menu --> | 823 | <!-- Notifications menu --> |
716 | <li class="relative"> | 824 | <li class="relative"> |
717 | <button | 825 | <button |
718 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" | 826 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" |
719 | @click="toggleNotificationsMenu" | 827 | @click="toggleNotificationsMenu" |
720 | @keydown.escape="closeNotificationsMenu" | 828 | @keydown.escape="closeNotificationsMenu" |
721 | aria-label="Notifications" | 829 | aria-label="Notifications" |
722 | aria-haspopup="true" | 830 | aria-haspopup="true" |
723 | > | 831 | > |
724 | <svg | 832 | <svg |
725 | class="w-5 h-5" | 833 | class="w-5 h-5" |
726 | aria-hidden="true" | 834 | aria-hidden="true" |
727 | fill="currentColor" | 835 | fill="currentColor" |
728 | viewBox="0 0 20 20" | 836 | viewBox="0 0 20 20" |
729 | > | 837 | > |
730 | <path | 838 | <path |
731 | 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" | 839 | 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" |
732 | ></path> | 840 | ></path> |
733 | </svg> | 841 | </svg> |
734 | <!-- Notification badge --> | 842 | <!-- Notification badge --> |
735 | <span | 843 | <span |
736 | aria-hidden="true" | 844 | aria-hidden="true" |
737 | 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" | 845 | 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" |
738 | ></span> | 846 | ></span> |
739 | </button> | 847 | </button> |
740 | <template x-if="isNotificationsMenuOpen"> | 848 | <template x-if="isNotificationsMenuOpen"> |
741 | <ul | 849 | <ul |
742 | x-transition:leave="transition ease-in duration-150" | 850 | x-transition:leave="transition ease-in duration-150" |
743 | x-transition:leave-start="opacity-100" | 851 | x-transition:leave-start="opacity-100" |
744 | x-transition:leave-end="opacity-0" | 852 | x-transition:leave-end="opacity-0" |
745 | @click.away="closeNotificationsMenu" | 853 | @click.away="closeNotificationsMenu" |
746 | @keydown.escape="closeNotificationsMenu" | 854 | @keydown.escape="closeNotificationsMenu" |
747 | 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" | 855 | 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" |
748 | > | 856 | > |
749 | <li class="flex"> | 857 | <li class="flex"> |
750 | <a | 858 | <a |
751 | 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" | 859 | 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" |
752 | href="#" | 860 | href="#" |
753 | > | 861 | > |
754 | <span>Сообщения</span> | 862 | <span>Сообщения</span> |
755 | <span | 863 | <span |
756 | 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" | 864 | 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" |
757 | > | 865 | > |
758 | 13 | 866 | 13 |
759 | </span> | 867 | </span> |
760 | </a> | 868 | </a> |
761 | </li> | 869 | </li> |
762 | <li class="flex"> | 870 | <li class="flex"> |
763 | <a | 871 | <a |
764 | 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" | 872 | 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" |
765 | href="#" | 873 | href="#" |
766 | > | 874 | > |
767 | <span>Логи</span> | 875 | <span>Логи</span> |
768 | </a> | 876 | </a> |
769 | </li> | 877 | </li> |
770 | </ul> | 878 | </ul> |
771 | </template> | 879 | </template> |
772 | </li> | 880 | </li> |
773 | <!-- Profile menu --> | 881 | <!-- Profile menu --> |
774 | <li class="relative"> | 882 | <li class="relative"> |
775 | <button | 883 | <button |
776 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" | 884 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" |
777 | @click="toggleProfileMenu" | 885 | @click="toggleProfileMenu" |
778 | @keydown.escape="closeProfileMenu" | 886 | @keydown.escape="closeProfileMenu" |
779 | aria-label="Account" | 887 | aria-label="Account" |
780 | aria-haspopup="true" | 888 | aria-haspopup="true" |
781 | > | 889 | > |
782 | <img | 890 | <img |
783 | class="object-cover w-8 h-8 rounded-full" | 891 | class="object-cover w-8 h-8 rounded-full" |
784 | src="{{ asset('assets/img/profile.jpg') }}" | 892 | src="{{ asset('assets/img/profile.jpg') }}" |
785 | alt="" | 893 | alt="" |
786 | aria-hidden="true" | 894 | aria-hidden="true" |
787 | /> | 895 | /> |
788 | </button> | 896 | </button> |
789 | <template x-if="isProfileMenuOpen"> | 897 | <template x-if="isProfileMenuOpen"> |
790 | <ul | 898 | <ul |
791 | x-transition:leave="transition ease-in duration-150" | 899 | x-transition:leave="transition ease-in duration-150" |
792 | x-transition:leave-start="opacity-100" | 900 | x-transition:leave-start="opacity-100" |
793 | x-transition:leave-end="opacity-0" | 901 | x-transition:leave-end="opacity-0" |
794 | @click.away="closeProfileMenu" | 902 | @click.away="closeProfileMenu" |
795 | @keydown.escape="closeProfileMenu" | 903 | @keydown.escape="closeProfileMenu" |
796 | 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" | 904 | 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" |
797 | aria-label="submenu" | 905 | aria-label="submenu" |
798 | > | 906 | > |
799 | <li class="flex"> | 907 | <li class="flex"> |
800 | <a | 908 | <a |
801 | 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" | 909 | 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" |
802 | href="{{ route('admin.profile') }}" | 910 | href="{{ route('admin.profile') }}" |
803 | > | 911 | > |
804 | <svg | 912 | <svg |
805 | class="w-4 h-4 mr-3" | 913 | class="w-4 h-4 mr-3" |
806 | aria-hidden="true" | 914 | aria-hidden="true" |
807 | fill="none" | 915 | fill="none" |
808 | stroke-linecap="round" | 916 | stroke-linecap="round" |
809 | stroke-linejoin="round" | 917 | stroke-linejoin="round" |
810 | stroke-width="2" | 918 | stroke-width="2" |
811 | viewBox="0 0 24 24" | 919 | viewBox="0 0 24 24" |
812 | stroke="currentColor" | 920 | stroke="currentColor" |
813 | > | 921 | > |
814 | <path | 922 | <path |
815 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" | 923 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" |
816 | ></path> | 924 | ></path> |
817 | </svg> | 925 | </svg> |
818 | <span>Профиль</span> | 926 | <span>Профиль</span> |
819 | </a> | 927 | </a> |
820 | </li> | 928 | </li> |
821 | <li class="flex"> | 929 | <li class="flex"> |
822 | <a | 930 | <a |
823 | 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" | 931 | 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" |
824 | href="{{ route('admin.config') }}" | 932 | href="{{ route('admin.config') }}" |
825 | > | 933 | > |
826 | <svg | 934 | <svg |
827 | class="w-4 h-4 mr-3" | 935 | class="w-4 h-4 mr-3" |
828 | aria-hidden="true" | 936 | aria-hidden="true" |
829 | fill="none" | 937 | fill="none" |
830 | stroke-linecap="round" | 938 | stroke-linecap="round" |
831 | stroke-linejoin="round" | 939 | stroke-linejoin="round" |
832 | stroke-width="2" | 940 | stroke-width="2" |
833 | viewBox="0 0 24 24" | 941 | viewBox="0 0 24 24" |
834 | stroke="currentColor" | 942 | stroke="currentColor" |
835 | > | 943 | > |
836 | <path | 944 | <path |
837 | 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" | 945 | 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" |
838 | ></path> | 946 | ></path> |
839 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> | 947 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> |
840 | </svg> | 948 | </svg> |
841 | <span>Настройки</span> | 949 | <span>Настройки</span> |
842 | </a> | 950 | </a> |
843 | </li> | 951 | </li> |
844 | <li class="flex"> | 952 | <li class="flex"> |
845 | <a | 953 | <a |
846 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 954 | 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" |
847 | href="{{ route('admin.logout') }}" | 955 | href="{{ route('admin.logout') }}" |
848 | > | 956 | > |
849 | <svg | 957 | <svg |
850 | class="w-4 h-4 mr-3" | 958 | class="w-4 h-4 mr-3" |
851 | aria-hidden="true" | 959 | aria-hidden="true" |
852 | fill="none" | 960 | fill="none" |
853 | stroke-linecap="round" | 961 | stroke-linecap="round" |
854 | stroke-linejoin="round" | 962 | stroke-linejoin="round" |
855 | stroke-width="2" | 963 | stroke-width="2" |
856 | viewBox="0 0 24 24" | 964 | viewBox="0 0 24 24" |
857 | stroke="currentColor" | 965 | stroke="currentColor" |
858 | > | 966 | > |
859 | <path | 967 | <path |
860 | 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" | 968 | 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" |
861 | ></path> | 969 | ></path> |
862 | </svg> | 970 | </svg> |
863 | <span>Выход</span> | 971 | <span>Выход</span> |
864 | </a> | 972 | </a> |
865 | </li> | 973 | </li> |
866 | </ul> | 974 | </ul> |
867 | </template> | 975 | </template> |
868 | </li> | 976 | </li> |
869 | </ul> | 977 | </ul> |
870 | </div> | 978 | </div> |
871 | </header> | 979 | </header> |
872 | <main class="h-full overflow-y-auto"> | 980 | <main class="h-full overflow-y-auto"> |
873 | <div class="container px-6 mx-auto grid"> | 981 | <div class="container px-6 mx-auto grid"> |
874 | <h2 | 982 | <h2 |
875 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" | 983 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" |
876 | > | 984 | > |
877 | {{$title}} | 985 | {{$title}} |
878 | </h2> | 986 | </h2> |
879 | <!-- CTA --> | 987 | <!-- CTA --> |
880 | <a | 988 | <a |
881 | 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" | 989 | 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" |
882 | href="{{ route('admin.admin-users') }}" | 990 | href="{{ route('admin.admin-users') }}" |
883 | > | 991 | > |
884 | <div class="flex items-center"> | 992 | <div class="flex items-center"> |
885 | <svg | 993 | <svg |
886 | class="w-5 h-5 mr-2" | 994 | class="w-5 h-5 mr-2" |
887 | fill="currentColor" | 995 | fill="currentColor" |
888 | viewBox="0 0 20 20" | 996 | viewBox="0 0 20 20" |
889 | > | 997 | > |
890 | <path | 998 | <path |
891 | 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" | 999 | 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" |
892 | ></path> | 1000 | ></path> |
893 | </svg> | 1001 | </svg> |
894 | <span>Вход в админку только для пользователей-админов</span> | 1002 | <span>Вход в админку только для пользователей-админов</span> |
895 | </div> | 1003 | </div> |
896 | <span>Список админов →</span> | 1004 | <span>Список админов →</span> |
897 | </a> | 1005 | </a> |
898 | 1006 | ||
899 | @if ($message = Session::get('success')) | 1007 | @if ($message = Session::get('success')) |
900 | <section> | 1008 | <section> |
901 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 1009 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
902 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1010 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
903 | <span aria-hidden="true">×</span> | 1011 | <span aria-hidden="true">×</span> |
904 | </button> | 1012 | </button> |
905 | {{ $message }} | 1013 | {{ $message }} |
906 | </div> | 1014 | </div> |
907 | </section> | 1015 | </section> |
908 | @endif | 1016 | @endif |
909 | 1017 | ||
910 | @if ($errors->any()) | 1018 | @if ($errors->any()) |
911 | <section> | 1019 | <section> |
912 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 1020 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
913 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1021 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
914 | <span aria-hidden="true">×</span> | 1022 | <span aria-hidden="true">×</span> |
915 | </button> | 1023 | </button> |
916 | <ul class="mb-0"> | 1024 | <ul class="mb-0"> |
917 | @foreach ($errors->all() as $error) | 1025 | @foreach ($errors->all() as $error) |
918 | <li>{{ $error }}</li> | 1026 | <li>{{ $error }}</li> |
919 | @endforeach | 1027 | @endforeach |
920 | </ul> | 1028 | </ul> |
921 | </div> | 1029 | </div> |
922 | </section> | 1030 | </section> |
923 | @endif | 1031 | @endif |
924 | 1032 | ||
925 | @yield('content') | 1033 | @yield('content') |
926 | 1034 | ||
927 | <!-- Cards | 1035 | <!-- Cards |
928 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 1036 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
929 | 1037 | ||
930 | <div | 1038 | <div |
931 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1039 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
932 | > | 1040 | > |
933 | <div | 1041 | <div |
934 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" | 1042 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" |
935 | > | 1043 | > |
936 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1044 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
937 | <path | 1045 | <path |
938 | 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" | 1046 | 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" |
939 | ></path> | 1047 | ></path> |
940 | </svg> | 1048 | </svg> |
941 | </div> | 1049 | </div> |
942 | <div> | 1050 | <div> |
943 | <p | 1051 | <p |
944 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1052 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
945 | > | 1053 | > |
946 | Total clients | 1054 | Total clients |
947 | </p> | 1055 | </p> |
948 | <p | 1056 | <p |
949 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1057 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
950 | > | 1058 | > |
951 | 6389 | 1059 | 6389 |
952 | </p> | 1060 | </p> |
953 | </div> | 1061 | </div> |
954 | </div> | 1062 | </div> |
955 | 1063 | ||
956 | <div | 1064 | <div |
957 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1065 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
958 | > | 1066 | > |
959 | <div | 1067 | <div |
960 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" | 1068 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" |
961 | > | 1069 | > |
962 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1070 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
963 | <path | 1071 | <path |
964 | fill-rule="evenodd" | 1072 | fill-rule="evenodd" |
965 | 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" | 1073 | 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" |
966 | clip-rule="evenodd" | 1074 | clip-rule="evenodd" |
967 | ></path> | 1075 | ></path> |
968 | </svg> | 1076 | </svg> |
969 | </div> | 1077 | </div> |
970 | <div> | 1078 | <div> |
971 | <p | 1079 | <p |
972 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1080 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
973 | > | 1081 | > |
974 | Account balance | 1082 | Account balance |
975 | </p> | 1083 | </p> |
976 | <p | 1084 | <p |
977 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1085 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
978 | > | 1086 | > |
979 | $ 46,760.89 | 1087 | $ 46,760.89 |
980 | </p> | 1088 | </p> |
981 | </div> | 1089 | </div> |
982 | </div> | 1090 | </div> |
983 | 1091 | ||
984 | <div | 1092 | <div |
985 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1093 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
986 | > | 1094 | > |
987 | <div | 1095 | <div |
988 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" | 1096 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" |
989 | > | 1097 | > |
990 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1098 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
991 | <path | 1099 | <path |
992 | 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" | 1100 | 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" |
993 | ></path> | 1101 | ></path> |
994 | </svg> | 1102 | </svg> |
995 | </div> | 1103 | </div> |
996 | <div> | 1104 | <div> |
997 | <p | 1105 | <p |
998 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1106 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
999 | > | 1107 | > |
1000 | New sales | 1108 | New sales |
1001 | </p> | 1109 | </p> |
1002 | <p | 1110 | <p |
1003 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1111 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1004 | > | 1112 | > |
1005 | 376 | 1113 | 376 |
1006 | </p> | 1114 | </p> |
1007 | </div> | 1115 | </div> |
1008 | </div> | 1116 | </div> |
1009 | 1117 | ||
1010 | <div | 1118 | <div |
1011 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1119 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1012 | > | 1120 | > |
1013 | <div | 1121 | <div |
1014 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" | 1122 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" |
1015 | > | 1123 | > |
1016 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1124 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1017 | <path | 1125 | <path |
1018 | fill-rule="evenodd" | 1126 | fill-rule="evenodd" |
1019 | 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" | 1127 | 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" |
1020 | clip-rule="evenodd" | 1128 | clip-rule="evenodd" |
1021 | ></path> | 1129 | ></path> |
1022 | </svg> | 1130 | </svg> |
1023 | </div> | 1131 | </div> |
1024 | <div> | 1132 | <div> |
1025 | <p | 1133 | <p |
1026 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1134 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1027 | > | 1135 | > |
1028 | Pending contacts | 1136 | Pending contacts |
1029 | </p> | 1137 | </p> |
1030 | <p | 1138 | <p |
1031 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1139 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1032 | > | 1140 | > |
1033 | 35 | 1141 | 35 |
1034 | </p> | 1142 | </p> |
1035 | </div> | 1143 | </div> |
1036 | </div> | 1144 | </div> |
1037 | </div> | 1145 | </div> |
1038 | --> | 1146 | --> |
1039 | <!-- New Table | 1147 | <!-- New Table |
1040 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 1148 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> |
1041 | <div class="w-full overflow-x-auto"> | 1149 | <div class="w-full overflow-x-auto"> |
1042 | <table class="w-full whitespace-no-wrap"> | 1150 | <table class="w-full whitespace-no-wrap"> |
1043 | <thead> | 1151 | <thead> |
1044 | <tr | 1152 | <tr |
1045 | 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" | 1153 | 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" |
1046 | > | 1154 | > |
1047 | <th class="px-4 py-3">Client</th> | 1155 | <th class="px-4 py-3">Client</th> |
1048 | <th class="px-4 py-3">Amount</th> | 1156 | <th class="px-4 py-3">Amount</th> |
1049 | <th class="px-4 py-3">Status</th> | 1157 | <th class="px-4 py-3">Status</th> |
1050 | <th class="px-4 py-3">Date</th> | 1158 | <th class="px-4 py-3">Date</th> |
1051 | </tr> | 1159 | </tr> |
1052 | </thead> | 1160 | </thead> |
1053 | <tbody | 1161 | <tbody |
1054 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" | 1162 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" |
1055 | > | 1163 | > |
1056 | <tr class="text-gray-700 dark:text-gray-400"> | 1164 | <tr class="text-gray-700 dark:text-gray-400"> |
1057 | <td class="px-4 py-3"> | 1165 | <td class="px-4 py-3"> |
1058 | <div class="flex items-center text-sm"> | 1166 | <div class="flex items-center text-sm"> |
1059 | 1167 | ||
1060 | <div | 1168 | <div |
1061 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1169 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1062 | > | 1170 | > |
1063 | <img | 1171 | <img |
1064 | class="object-cover w-full h-full rounded-full" | 1172 | class="object-cover w-full h-full rounded-full" |
1065 | 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" | 1173 | 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" |
1066 | alt="" | 1174 | alt="" |
1067 | loading="lazy" | 1175 | loading="lazy" |
1068 | /> | 1176 | /> |
1069 | <div | 1177 | <div |
1070 | class="absolute inset-0 rounded-full shadow-inner" | 1178 | class="absolute inset-0 rounded-full shadow-inner" |
1071 | aria-hidden="true" | 1179 | aria-hidden="true" |
1072 | ></div> | 1180 | ></div> |
1073 | </div> | 1181 | </div> |
1074 | <div> | 1182 | <div> |
1075 | <p class="font-semibold">Hans Burger</p> | 1183 | <p class="font-semibold">Hans Burger</p> |
1076 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1184 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1077 | 10x Developer | 1185 | 10x Developer |
1078 | </p> | 1186 | </p> |
1079 | </div> | 1187 | </div> |
1080 | </div> | 1188 | </div> |
1081 | </td> | 1189 | </td> |
1082 | <td class="px-4 py-3 text-sm"> | 1190 | <td class="px-4 py-3 text-sm"> |
1083 | $ 863.45 | 1191 | $ 863.45 |
1084 | </td> | 1192 | </td> |
1085 | <td class="px-4 py-3 text-xs"> | 1193 | <td class="px-4 py-3 text-xs"> |
1086 | <span | 1194 | <span |
1087 | 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" | 1195 | 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" |
1088 | > | 1196 | > |
1089 | Approved | 1197 | Approved |
1090 | </span> | 1198 | </span> |
1091 | </td> | 1199 | </td> |
1092 | <td class="px-4 py-3 text-sm"> | 1200 | <td class="px-4 py-3 text-sm"> |
1093 | 6/10/2020 | 1201 | 6/10/2020 |
1094 | </td> | 1202 | </td> |
1095 | </tr> | 1203 | </tr> |
1096 | 1204 | ||
1097 | <tr class="text-gray-700 dark:text-gray-400"> | 1205 | <tr class="text-gray-700 dark:text-gray-400"> |
1098 | <td class="px-4 py-3"> | 1206 | <td class="px-4 py-3"> |
1099 | <div class="flex items-center text-sm"> | 1207 | <div class="flex items-center text-sm"> |
1100 | 1208 | ||
1101 | <div | 1209 | <div |
1102 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1210 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1103 | > | 1211 | > |
1104 | <img | 1212 | <img |
1105 | class="object-cover w-full h-full rounded-full" | 1213 | class="object-cover w-full h-full rounded-full" |
1106 | 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" | 1214 | 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" |
1107 | alt="" | 1215 | alt="" |
1108 | loading="lazy" | 1216 | loading="lazy" |
1109 | /> | 1217 | /> |
1110 | <div | 1218 | <div |
1111 | class="absolute inset-0 rounded-full shadow-inner" | 1219 | class="absolute inset-0 rounded-full shadow-inner" |
1112 | aria-hidden="true" | 1220 | aria-hidden="true" |
1113 | ></div> | 1221 | ></div> |
1114 | </div> | 1222 | </div> |
1115 | <div> | 1223 | <div> |
1116 | <p class="font-semibold">Jolina Angelie</p> | 1224 | <p class="font-semibold">Jolina Angelie</p> |
1117 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1225 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1118 | Unemployed | 1226 | Unemployed |
1119 | </p> | 1227 | </p> |
1120 | </div> | 1228 | </div> |
1121 | </div> | 1229 | </div> |
1122 | </td> | 1230 | </td> |
1123 | <td class="px-4 py-3 text-sm"> | 1231 | <td class="px-4 py-3 text-sm"> |
1124 | $ 369.95 | 1232 | $ 369.95 |
1125 | </td> | 1233 | </td> |
1126 | <td class="px-4 py-3 text-xs"> | 1234 | <td class="px-4 py-3 text-xs"> |
1127 | <span | 1235 | <span |
1128 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" | 1236 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" |
1129 | > | 1237 | > |
1130 | Pending | 1238 | Pending |
1131 | </span> | 1239 | </span> |
1132 | </td> | 1240 | </td> |
1133 | <td class="px-4 py-3 text-sm"> | 1241 | <td class="px-4 py-3 text-sm"> |
1134 | 6/10/2020 | 1242 | 6/10/2020 |
1135 | </td> | 1243 | </td> |
1136 | </tr> | 1244 | </tr> |
1137 | 1245 | ||
1138 | <tr class="text-gray-700 dark:text-gray-400"> | 1246 | <tr class="text-gray-700 dark:text-gray-400"> |
1139 | <td class="px-4 py-3"> | 1247 | <td class="px-4 py-3"> |
1140 | <div class="flex items-center text-sm"> | 1248 | <div class="flex items-center text-sm"> |
1141 | 1249 | ||
1142 | <div | 1250 | <div |
1143 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1251 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1144 | > | 1252 | > |
1145 | <img | 1253 | <img |
1146 | class="object-cover w-full h-full rounded-full" | 1254 | class="object-cover w-full h-full rounded-full" |
1147 | 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" | 1255 | 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" |
1148 | alt="" | 1256 | alt="" |
1149 | loading="lazy" | 1257 | loading="lazy" |
1150 | /> | 1258 | /> |
1151 | <div | 1259 | <div |
1152 | class="absolute inset-0 rounded-full shadow-inner" | 1260 | class="absolute inset-0 rounded-full shadow-inner" |
1153 | aria-hidden="true" | 1261 | aria-hidden="true" |
1154 | ></div> | 1262 | ></div> |
1155 | </div> | 1263 | </div> |
1156 | <div> | 1264 | <div> |
1157 | <p class="font-semibold">Sarah Curry</p> | 1265 | <p class="font-semibold">Sarah Curry</p> |
1158 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1266 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1159 | Designer | 1267 | Designer |
1160 | </p> | 1268 | </p> |
1161 | </div> | 1269 | </div> |
1162 | </div> | 1270 | </div> |
1163 | </td> | 1271 | </td> |
1164 | <td class="px-4 py-3 text-sm"> | 1272 | <td class="px-4 py-3 text-sm"> |
1165 | $ 86.00 | 1273 | $ 86.00 |
1166 | </td> | 1274 | </td> |
1167 | <td class="px-4 py-3 text-xs"> | 1275 | <td class="px-4 py-3 text-xs"> |
1168 | <span | 1276 | <span |
1169 | 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" | 1277 | 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" |
1170 | > | 1278 | > |
1171 | Denied | 1279 | Denied |
1172 | </span> | 1280 | </span> |
1173 | </td> | 1281 | </td> |
1174 | <td class="px-4 py-3 text-sm"> | 1282 | <td class="px-4 py-3 text-sm"> |
1175 | 6/10/2020 | 1283 | 6/10/2020 |
1176 | </td> | 1284 | </td> |
1177 | </tr> | 1285 | </tr> |
1178 | 1286 | ||
1179 | <tr class="text-gray-700 dark:text-gray-400"> | 1287 | <tr class="text-gray-700 dark:text-gray-400"> |
1180 | <td class="px-4 py-3"> | 1288 | <td class="px-4 py-3"> |
1181 | <div class="flex items-center text-sm"> | 1289 | <div class="flex items-center text-sm"> |
1182 | 1290 | ||
1183 | <div | 1291 | <div |
1184 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1292 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1185 | > | 1293 | > |
1186 | <img | 1294 | <img |
1187 | class="object-cover w-full h-full rounded-full" | 1295 | class="object-cover w-full h-full rounded-full" |
1188 | 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" | 1296 | 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" |
1189 | alt="" | 1297 | alt="" |
1190 | loading="lazy" | 1298 | loading="lazy" |
1191 | /> | 1299 | /> |
1192 | <div | 1300 | <div |
1193 | class="absolute inset-0 rounded-full shadow-inner" | 1301 | class="absolute inset-0 rounded-full shadow-inner" |
1194 | aria-hidden="true" | 1302 | aria-hidden="true" |
1195 | ></div> | 1303 | ></div> |
1196 | </div> | 1304 | </div> |
1197 | <div> | 1305 | <div> |
1198 | <p class="font-semibold">Rulia Joberts</p> | 1306 | <p class="font-semibold">Rulia Joberts</p> |
1199 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1307 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1200 | Actress | 1308 | Actress |
1201 | </p> | 1309 | </p> |
1202 | </div> | 1310 | </div> |
1203 | </div> | 1311 | </div> |
1204 | </td> | 1312 | </td> |
1205 | <td class="px-4 py-3 text-sm"> | 1313 | <td class="px-4 py-3 text-sm"> |
1206 | $ 1276.45 | 1314 | $ 1276.45 |
1207 | </td> | 1315 | </td> |
1208 | <td class="px-4 py-3 text-xs"> | 1316 | <td class="px-4 py-3 text-xs"> |
1209 | <span | 1317 | <span |
1210 | 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" | 1318 | 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" |
1211 | > | 1319 | > |
1212 | Approved | 1320 | Approved |
1213 | </span> | 1321 | </span> |
1214 | </td> | 1322 | </td> |
1215 | <td class="px-4 py-3 text-sm"> | 1323 | <td class="px-4 py-3 text-sm"> |
1216 | 6/10/2020 | 1324 | 6/10/2020 |
1217 | </td> | 1325 | </td> |
1218 | </tr> | 1326 | </tr> |
1219 | 1327 | ||
1220 | <tr class="text-gray-700 dark:text-gray-400"> | 1328 | <tr class="text-gray-700 dark:text-gray-400"> |
1221 | <td class="px-4 py-3"> | 1329 | <td class="px-4 py-3"> |
1222 | <div class="flex items-center text-sm"> | 1330 | <div class="flex items-center text-sm"> |
1223 | 1331 | ||
1224 | <div | 1332 | <div |
1225 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1333 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1226 | > | 1334 | > |
1227 | <img | 1335 | <img |
1228 | class="object-cover w-full h-full rounded-full" | 1336 | class="object-cover w-full h-full rounded-full" |
1229 | 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" | 1337 | 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" |
1230 | alt="" | 1338 | alt="" |
1231 | loading="lazy" | 1339 | loading="lazy" |
1232 | /> | 1340 | /> |
1233 | <div | 1341 | <div |
1234 | class="absolute inset-0 rounded-full shadow-inner" | 1342 | class="absolute inset-0 rounded-full shadow-inner" |
1235 | aria-hidden="true" | 1343 | aria-hidden="true" |
1236 | ></div> | 1344 | ></div> |
1237 | </div> | 1345 | </div> |
1238 | <div> | 1346 | <div> |
1239 | <p class="font-semibold">Wenzel Dashington</p> | 1347 | <p class="font-semibold">Wenzel Dashington</p> |
1240 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1348 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1241 | Actor | 1349 | Actor |
1242 | </p> | 1350 | </p> |
1243 | </div> | 1351 | </div> |
1244 | </div> | 1352 | </div> |
1245 | </td> | 1353 | </td> |
1246 | <td class="px-4 py-3 text-sm"> | 1354 | <td class="px-4 py-3 text-sm"> |
1247 | $ 863.45 | 1355 | $ 863.45 |
1248 | </td> | 1356 | </td> |
1249 | <td class="px-4 py-3 text-xs"> | 1357 | <td class="px-4 py-3 text-xs"> |
1250 | <span | 1358 | <span |
1251 | 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" | 1359 | 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" |
1252 | > | 1360 | > |
1253 | Expired | 1361 | Expired |
1254 | </span> | 1362 | </span> |
1255 | </td> | 1363 | </td> |
1256 | <td class="px-4 py-3 text-sm"> | 1364 | <td class="px-4 py-3 text-sm"> |
1257 | 6/10/2020 | 1365 | 6/10/2020 |
1258 | </td> | 1366 | </td> |
1259 | </tr> | 1367 | </tr> |
1260 | 1368 | ||
1261 | <tr class="text-gray-700 dark:text-gray-400"> | 1369 | <tr class="text-gray-700 dark:text-gray-400"> |
1262 | <td class="px-4 py-3"> | 1370 | <td class="px-4 py-3"> |
1263 | <div class="flex items-center text-sm"> | 1371 | <div class="flex items-center text-sm"> |
1264 | 1372 | ||
1265 | <div | 1373 | <div |
1266 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1374 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1267 | > | 1375 | > |
1268 | <img | 1376 | <img |
1269 | class="object-cover w-full h-full rounded-full" | 1377 | class="object-cover w-full h-full rounded-full" |
1270 | 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" | 1378 | 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" |
1271 | alt="" | 1379 | alt="" |
1272 | loading="lazy" | 1380 | loading="lazy" |
1273 | /> | 1381 | /> |
1274 | <div | 1382 | <div |
1275 | class="absolute inset-0 rounded-full shadow-inner" | 1383 | class="absolute inset-0 rounded-full shadow-inner" |
1276 | aria-hidden="true" | 1384 | aria-hidden="true" |
1277 | ></div> | 1385 | ></div> |
1278 | </div> | 1386 | </div> |
1279 | <div> | 1387 | <div> |
1280 | <p class="font-semibold">Dave Li</p> | 1388 | <p class="font-semibold">Dave Li</p> |
1281 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1389 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1282 | Influencer | 1390 | Influencer |
1283 | </p> | 1391 | </p> |
1284 | </div> | 1392 | </div> |
1285 | </div> | 1393 | </div> |
1286 | </td> | 1394 | </td> |
1287 | <td class="px-4 py-3 text-sm"> | 1395 | <td class="px-4 py-3 text-sm"> |
1288 | $ 863.45 | 1396 | $ 863.45 |
1289 | </td> | 1397 | </td> |
1290 | <td class="px-4 py-3 text-xs"> | 1398 | <td class="px-4 py-3 text-xs"> |
1291 | <span | 1399 | <span |
1292 | 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" | 1400 | 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" |
1293 | > | 1401 | > |
1294 | Approved | 1402 | Approved |
1295 | </span> | 1403 | </span> |
1296 | </td> | 1404 | </td> |
1297 | <td class="px-4 py-3 text-sm"> | 1405 | <td class="px-4 py-3 text-sm"> |
1298 | 6/10/2020 | 1406 | 6/10/2020 |
1299 | </td> | 1407 | </td> |
1300 | </tr> | 1408 | </tr> |
1301 | 1409 | ||
1302 | <tr class="text-gray-700 dark:text-gray-400"> | 1410 | <tr class="text-gray-700 dark:text-gray-400"> |
1303 | <td class="px-4 py-3"> | 1411 | <td class="px-4 py-3"> |
1304 | <div class="flex items-center text-sm"> | 1412 | <div class="flex items-center text-sm"> |
1305 | 1413 | ||
1306 | <div | 1414 | <div |
1307 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1415 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1308 | > | 1416 | > |
1309 | <img | 1417 | <img |
1310 | class="object-cover w-full h-full rounded-full" | 1418 | class="object-cover w-full h-full rounded-full" |
1311 | 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" | 1419 | 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" |
1312 | alt="" | 1420 | alt="" |
1313 | loading="lazy" | 1421 | loading="lazy" |
1314 | /> | 1422 | /> |
1315 | <div | 1423 | <div |
1316 | class="absolute inset-0 rounded-full shadow-inner" | 1424 | class="absolute inset-0 rounded-full shadow-inner" |
1317 | aria-hidden="true" | 1425 | aria-hidden="true" |
1318 | ></div> | 1426 | ></div> |
1319 | </div> | 1427 | </div> |
1320 | <div> | 1428 | <div> |
1321 | <p class="font-semibold">Maria Ramovic</p> | 1429 | <p class="font-semibold">Maria Ramovic</p> |
1322 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1430 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1323 | Runner | 1431 | Runner |
1324 | </p> | 1432 | </p> |
1325 | </div> | 1433 | </div> |
1326 | </div> | 1434 | </div> |
1327 | </td> | 1435 | </td> |
1328 | <td class="px-4 py-3 text-sm"> | 1436 | <td class="px-4 py-3 text-sm"> |
1329 | $ 863.45 | 1437 | $ 863.45 |
1330 | </td> | 1438 | </td> |
1331 | <td class="px-4 py-3 text-xs"> | 1439 | <td class="px-4 py-3 text-xs"> |
1332 | <span | 1440 | <span |
1333 | 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" | 1441 | 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" |
1334 | > | 1442 | > |
1335 | Approved | 1443 | Approved |
1336 | </span> | 1444 | </span> |
1337 | </td> | 1445 | </td> |
1338 | <td class="px-4 py-3 text-sm"> | 1446 | <td class="px-4 py-3 text-sm"> |
1339 | 6/10/2020 | 1447 | 6/10/2020 |
1340 | </td> | 1448 | </td> |
1341 | </tr> | 1449 | </tr> |
1342 | 1450 | ||
1343 | <tr class="text-gray-700 dark:text-gray-400"> | 1451 | <tr class="text-gray-700 dark:text-gray-400"> |
1344 | <td class="px-4 py-3"> | 1452 | <td class="px-4 py-3"> |
1345 | <div class="flex items-center text-sm"> | 1453 | <div class="flex items-center text-sm"> |
1346 | 1454 | ||
1347 | <div | 1455 | <div |
1348 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1456 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1349 | > | 1457 | > |
1350 | <img | 1458 | <img |
1351 | class="object-cover w-full h-full rounded-full" | 1459 | class="object-cover w-full h-full rounded-full" |
1352 | 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" | 1460 | 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" |
1353 | alt="" | 1461 | alt="" |
1354 | loading="lazy" | 1462 | loading="lazy" |
1355 | /> | 1463 | /> |
1356 | <div | 1464 | <div |
1357 | class="absolute inset-0 rounded-full shadow-inner" | 1465 | class="absolute inset-0 rounded-full shadow-inner" |
1358 | aria-hidden="true" | 1466 | aria-hidden="true" |
1359 | ></div> | 1467 | ></div> |
1360 | </div> | 1468 | </div> |
1361 | <div> | 1469 | <div> |
1362 | <p class="font-semibold">Hitney Wouston</p> | 1470 | <p class="font-semibold">Hitney Wouston</p> |
1363 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1471 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1364 | Singer | 1472 | Singer |
1365 | </p> | 1473 | </p> |
1366 | </div> | 1474 | </div> |
1367 | </div> | 1475 | </div> |
1368 | </td> | 1476 | </td> |
1369 | <td class="px-4 py-3 text-sm"> | 1477 | <td class="px-4 py-3 text-sm"> |
1370 | $ 863.45 | 1478 | $ 863.45 |
1371 | </td> | 1479 | </td> |
1372 | <td class="px-4 py-3 text-xs"> | 1480 | <td class="px-4 py-3 text-xs"> |
1373 | <span | 1481 | <span |
1374 | 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" | 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" |
1375 | > | 1483 | > |
1376 | Approved | 1484 | Approved |
1377 | </span> | 1485 | </span> |
1378 | </td> | 1486 | </td> |
1379 | <td class="px-4 py-3 text-sm"> | 1487 | <td class="px-4 py-3 text-sm"> |
1380 | 6/10/2020 | 1488 | 6/10/2020 |
1381 | </td> | 1489 | </td> |
1382 | </tr> | 1490 | </tr> |
1383 | 1491 | ||
1384 | <tr class="text-gray-700 dark:text-gray-400"> | 1492 | <tr class="text-gray-700 dark:text-gray-400"> |
1385 | <td class="px-4 py-3"> | 1493 | <td class="px-4 py-3"> |
1386 | <div class="flex items-center text-sm"> | 1494 | <div class="flex items-center text-sm"> |
1387 | 1495 | ||
1388 | <div | 1496 | <div |
1389 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1497 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1390 | > | 1498 | > |
1391 | <img | 1499 | <img |
1392 | class="object-cover w-full h-full rounded-full" | 1500 | class="object-cover w-full h-full rounded-full" |
1393 | 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" | 1501 | 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" |
1394 | alt="" | 1502 | alt="" |
1395 | loading="lazy" | 1503 | loading="lazy" |
1396 | /> | 1504 | /> |
1397 | <div | 1505 | <div |
1398 | class="absolute inset-0 rounded-full shadow-inner" | 1506 | class="absolute inset-0 rounded-full shadow-inner" |
1399 | aria-hidden="true" | 1507 | aria-hidden="true" |
1400 | ></div> | 1508 | ></div> |
1401 | </div> | 1509 | </div> |
1402 | <div> | 1510 | <div> |
1403 | <p class="font-semibold">Hans Burger</p> | 1511 | <p class="font-semibold">Hans Burger</p> |
1404 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1512 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1405 | 10x Developer | 1513 | 10x Developer |
1406 | </p> | 1514 | </p> |
1407 | </div> | 1515 | </div> |
1408 | </div> | 1516 | </div> |
1409 | </td> | 1517 | </td> |
1410 | <td class="px-4 py-3 text-sm"> | 1518 | <td class="px-4 py-3 text-sm"> |
1411 | $ 863.45 | 1519 | $ 863.45 |
1412 | </td> | 1520 | </td> |
1413 | <td class="px-4 py-3 text-xs"> | 1521 | <td class="px-4 py-3 text-xs"> |
1414 | <span | 1522 | <span |
1415 | 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" | 1523 | 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" |
1416 | > | 1524 | > |
1417 | Approved | 1525 | Approved |
1418 | </span> | 1526 | </span> |
1419 | </td> | 1527 | </td> |
1420 | <td class="px-4 py-3 text-sm"> | 1528 | <td class="px-4 py-3 text-sm"> |
1421 | 6/10/2020 | 1529 | 6/10/2020 |
1422 | </td> | 1530 | </td> |
1423 | </tr> | 1531 | </tr> |
1424 | </tbody> | 1532 | </tbody> |
1425 | </table> | 1533 | </table> |
1426 | </div> | 1534 | </div> |
1427 | <div | 1535 | <div |
1428 | 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" | 1536 | 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" |
1429 | > | 1537 | > |
1430 | <span class="flex items-center col-span-3"> | 1538 | <span class="flex items-center col-span-3"> |
1431 | Showing 21-30 of 100 | 1539 | Showing 21-30 of 100 |
1432 | </span> | 1540 | </span> |
1433 | <span class="col-span-2"></span> | 1541 | <span class="col-span-2"></span> |
1434 | 1542 | ||
1435 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 1543 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
1436 | <nav aria-label="Table navigation"> | 1544 | <nav aria-label="Table navigation"> |
1437 | <ul class="inline-flex items-center"> | 1545 | <ul class="inline-flex items-center"> |
1438 | <li> | 1546 | <li> |
1439 | <button | 1547 | <button |
1440 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 1548 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
1441 | aria-label="Previous" | 1549 | aria-label="Previous" |
1442 | > | 1550 | > |
1443 | <svg | 1551 | <svg |
1444 | aria-hidden="true" | 1552 | aria-hidden="true" |
1445 | class="w-4 h-4 fill-current" | 1553 | class="w-4 h-4 fill-current" |
1446 | viewBox="0 0 20 20" | 1554 | viewBox="0 0 20 20" |
1447 | > | 1555 | > |
1448 | <path | 1556 | <path |
1449 | 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" | 1557 | 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" |
1450 | clip-rule="evenodd" | 1558 | clip-rule="evenodd" |
1451 | fill-rule="evenodd" | 1559 | fill-rule="evenodd" |
1452 | ></path> | 1560 | ></path> |
1453 | </svg> | 1561 | </svg> |
1454 | </button> | 1562 | </button> |
1455 | </li> | 1563 | </li> |
1456 | <li> | 1564 | <li> |
1457 | <button | 1565 | <button |
1458 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1566 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1459 | > | 1567 | > |
1460 | 1 | 1568 | 1 |
1461 | </button> | 1569 | </button> |
1462 | </li> | 1570 | </li> |
1463 | <li> | 1571 | <li> |
1464 | <button | 1572 | <button |
1465 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1573 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1466 | > | 1574 | > |
1467 | 2 | 1575 | 2 |
1468 | </button> | 1576 | </button> |
1469 | </li> | 1577 | </li> |
1470 | <li> | 1578 | <li> |
1471 | <button | 1579 | <button |
1472 | 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" | 1580 | 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" |
1473 | > | 1581 | > |
1474 | 3 | 1582 | 3 |
1475 | </button> | 1583 | </button> |
1476 | </li> | 1584 | </li> |
1477 | <li> | 1585 | <li> |
1478 | <button | 1586 | <button |
1479 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1587 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1480 | > | 1588 | > |
1481 | 4 | 1589 | 4 |
1482 | </button> | 1590 | </button> |
1483 | </li> | 1591 | </li> |
1484 | <li> | 1592 | <li> |
1485 | <span class="px-3 py-1">...</span> | 1593 | <span class="px-3 py-1">...</span> |
1486 | </li> | 1594 | </li> |
1487 | <li> | 1595 | <li> |
1488 | <button | 1596 | <button |
1489 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1597 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1490 | > | 1598 | > |
1491 | 8 | 1599 | 8 |
1492 | </button> | 1600 | </button> |
1493 | </li> | 1601 | </li> |
1494 | <li> | 1602 | <li> |
1495 | <button | 1603 | <button |
1496 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1604 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1497 | > | 1605 | > |
1498 | 9 | 1606 | 9 |
1499 | </button> | 1607 | </button> |
1500 | </li> | 1608 | </li> |
1501 | <li> | 1609 | <li> |
1502 | <button | 1610 | <button |
1503 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 1611 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
1504 | aria-label="Next" | 1612 | aria-label="Next" |
1505 | > | 1613 | > |
1506 | <svg | 1614 | <svg |
1507 | class="w-4 h-4 fill-current" | 1615 | class="w-4 h-4 fill-current" |
1508 | aria-hidden="true" | 1616 | aria-hidden="true" |
1509 | viewBox="0 0 20 20" | 1617 | viewBox="0 0 20 20" |
1510 | > | 1618 | > |
1511 | <path | 1619 | <path |
1512 | 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" | 1620 | 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" |
1513 | clip-rule="evenodd" | 1621 | clip-rule="evenodd" |
1514 | fill-rule="evenodd" | 1622 | fill-rule="evenodd" |
1515 | ></path> | 1623 | ></path> |
1516 | </svg> | 1624 | </svg> |
1517 | </button> | 1625 | </button> |
1518 | </li> | 1626 | </li> |
1519 | </ul> | 1627 | </ul> |
1520 | </nav> | 1628 | </nav> |
1521 | </span> | 1629 | </span> |
1522 | </div> | 1630 | </div> |
1523 | </div> | 1631 | </div> |
1524 | --> | 1632 | --> |
1525 | <!-- Charts --> | 1633 | <!-- Charts --> |
1526 | <!-- | 1634 | <!-- |
1527 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> | 1635 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> |
1528 | Графики | 1636 | Графики |
1529 | </h2> | 1637 | </h2> |
1530 | <div class="grid gap-6 mb-8 md:grid-cols-2"> | 1638 | <div class="grid gap-6 mb-8 md:grid-cols-2"> |
1531 | <div | 1639 | <div |
1532 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1640 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1533 | > | 1641 | > |
1534 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1642 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1535 | Revenue | 1643 | Revenue |
1536 | </h4> | 1644 | </h4> |
1537 | <canvas id="pie"></canvas> | 1645 | <canvas id="pie"></canvas> |
1538 | <div | 1646 | <div |
1539 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1647 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1540 | > | 1648 | > |
1541 | 1649 | ||
1542 | <div class="flex items-center"> | 1650 | <div class="flex items-center"> |
1543 | <span | 1651 | <span |
1544 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" | 1652 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" |
1545 | ></span> | 1653 | ></span> |
1546 | <span>Shirts</span> | 1654 | <span>Shirts</span> |
1547 | </div> | 1655 | </div> |
1548 | <div class="flex items-center"> | 1656 | <div class="flex items-center"> |
1549 | <span | 1657 | <span |
1550 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1658 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1551 | ></span> | 1659 | ></span> |
1552 | <span>Shoes</span> | 1660 | <span>Shoes</span> |
1553 | </div> | 1661 | </div> |
1554 | <div class="flex items-center"> | 1662 | <div class="flex items-center"> |
1555 | <span | 1663 | <span |
1556 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1664 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1557 | ></span> | 1665 | ></span> |
1558 | <span>Bags</span> | 1666 | <span>Bags</span> |
1559 | </div> | 1667 | </div> |
1560 | </div> | 1668 | </div> |
1561 | </div> | 1669 | </div> |
1562 | <div | 1670 | <div |
1563 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1671 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1564 | > | 1672 | > |
1565 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1673 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1566 | Traffic | 1674 | Traffic |
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\EmployersController; | 5 | use App\Http\Controllers\Admin\EmployersController; |
6 | use App\Http\Controllers\Admin\UsersController; | 6 | use App\Http\Controllers\Admin\UsersController; |
7 | use App\Http\Controllers\Admin\WorkersController; | 7 | use App\Http\Controllers\Admin\WorkersController; |
8 | use App\Http\Controllers\Auth\LoginController; | 8 | use App\Http\Controllers\Auth\LoginController; |
9 | use App\Http\Controllers\Auth\RegisterController; | 9 | use App\Http\Controllers\Auth\RegisterController; |
10 | use App\Models\User; | 10 | use App\Models\User; |
11 | use App\Http\Controllers\MainController; | 11 | use App\Http\Controllers\MainController; |
12 | use App\Http\Controllers\HomeController; | 12 | use App\Http\Controllers\HomeController; |
13 | use Illuminate\Support\Facades\Route; | 13 | use Illuminate\Support\Facades\Route; |
14 | use App\Http\Controllers\Admin\CompanyController; | ||
15 | use App\Http\Controllers\Admin\Ad_EmployersController; | ||
16 | |||
14 | 17 | ||
15 | /* | 18 | /* |
16 | |-------------------------------------------------------------------------- | 19 | |-------------------------------------------------------------------------- |
17 | | Web Routes | 20 | | Web Routes |
18 | |-------------------------------------------------------------------------- | 21 | |-------------------------------------------------------------------------- |
19 | | | 22 | | |
20 | | Here is where you can register web routes for your application. These | 23 | | Here is where you can register web routes for your application. These |
21 | | routes are loaded by the RouteServiceProvider within a group which | 24 | | routes are loaded by the RouteServiceProvider within a group which |
22 | | contains the "web" middleware group. Now create something great! | 25 | | contains the "web" middleware group. Now create something great! |
23 | | | 26 | | |
24 | */ | 27 | */ |
25 | /* | 28 | /* |
26 | Route::get('/', function () { | 29 | Route::get('/', function () { |
27 | return view('welcome'); | 30 | return view('welcome'); |
28 | })->name('index'); | 31 | })->name('index'); |
29 | */ | 32 | */ |
30 | Route::get('/', [MainController::class, 'index'])->name('index'); | 33 | Route::get('/', [MainController::class, 'index'])->name('index'); |
31 | 34 | ||
32 | //Роуты авторизации, регистрации, восстановления, аутентификации | 35 | //Роуты авторизации, регистрации, восстановления, аутентификации |
33 | Auth::routes(['verify' => true]); | 36 | Auth::routes(['verify' => true]); |
34 | //Личный кабинет пользователя | 37 | //Личный кабинет пользователя |
35 | Route::get('/home', [HomeController::class, 'index'])->name('home'); | 38 | Route::get('/home', [HomeController::class, 'index'])->name('home'); |
36 | 39 | ||
37 | /* | 40 | /* |
38 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { | 41 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { |
39 | $user = User::where('email',$request->input('email'))->first(); | 42 | $user = User::where('email',$request->input('email'))->first(); |
40 | 43 | ||
41 | $user->sendEmailVerificationNotification(); | 44 | $user->sendEmailVerificationNotification(); |
42 | 45 | ||
43 | return 'your response'; | 46 | return 'your response'; |
44 | })->middleware('throttle:6,1')->name('verification.resend'); | 47 | })->middleware('throttle:6,1')->name('verification.resend'); |
45 | */ | 48 | */ |
46 | 49 | ||
47 | // Авторизация, регистрация в админку | 50 | // Авторизация, регистрация в админку |
48 | Route::group([ | 51 | Route::group([ |
49 | 'as' => 'admin.', // имя маршрута, например auth.index | 52 | 'as' => 'admin.', // имя маршрута, например auth.index |
50 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 53 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
51 | 'middleware' => ['guest'], | 54 | 'middleware' => ['guest'], |
52 | ], function () { | 55 | ], function () { |
53 | // Форма регистрации | 56 | // Форма регистрации |
54 | Route::get('register', [AdminController::class, 'register'])->name('register'); | 57 | Route::get('register', [AdminController::class, 'register'])->name('register'); |
55 | 58 | ||
56 | // Создание пользователя | 59 | // Создание пользователя |
57 | Route::post('register', [AdminController::class, 'create'])->name('create'); | 60 | Route::post('register', [AdminController::class, 'create'])->name('create'); |
58 | //Форма входа | 61 | //Форма входа |
59 | Route::get('login', [AdminController::class, 'login'])->name('login'); | 62 | Route::get('login', [AdminController::class, 'login'])->name('login'); |
60 | 63 | ||
61 | // аутентификация | 64 | // аутентификация |
62 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); | 65 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); |
63 | 66 | ||
64 | }); | 67 | }); |
65 | 68 | ||
66 | // Личный кабинет админки | 69 | // Личный кабинет админки |
67 | Route::group([ | 70 | Route::group([ |
68 | 'as' => 'admin.', // имя маршрута, например auth.index | 71 | 'as' => 'admin.', // имя маршрута, например auth.index |
69 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 72 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
70 | 'middleware' => ['auth'], ['admin'], | 73 | 'middleware' => ['auth'], ['admin'], |
71 | ], function() { | 74 | ], function() { |
72 | 75 | ||
73 | // выход | 76 | // выход |
74 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); | 77 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); |
75 | 78 | ||
76 | // кабинет главная страница | 79 | // кабинет главная страница |
77 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); | 80 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); |
78 | 81 | ||
79 | // кабинет профиль админа - форма | 82 | // кабинет профиль админа - форма |
80 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); | 83 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); |
81 | // кабинет профиль админа - сохранение формы | 84 | // кабинет профиль админа - сохранение формы |
82 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); | 85 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); |
83 | 86 | ||
84 | // кабинет профиль - форма пароли | 87 | // кабинет профиль - форма пароли |
85 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); | 88 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); |
86 | // кабинет профиль - сохранение формы пароля | 89 | // кабинет профиль - сохранение формы пароля |
87 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); | 90 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); |
88 | 91 | ||
89 | 92 | ||
90 | // кабинет профиль пользователя - форма | 93 | // кабинет профиль пользователя - форма |
91 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); | 94 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); |
92 | // кабинет профиль пользователя - сохранение формы | 95 | // кабинет профиль пользователя - сохранение формы |
93 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); | 96 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); |
94 | 97 | ||
95 | // кабинет профиль работодатель - форма | 98 | // кабинет профиль работодатель - форма |
96 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); | 99 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); |
97 | // кабинет профиль работодатель - сохранение формы | 100 | // кабинет профиль работодатель - сохранение формы |
98 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); | 101 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); |
99 | 102 | ||
100 | // кабинет профиль работник - форма | 103 | // кабинет профиль работник - форма |
101 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile'); | 104 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile'); |
102 | 105 | ||
103 | // кабинет настройки сайта - форма | 106 | // кабинет настройки сайта - форма |
104 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); | 107 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); |
105 | // кабинет настройки сайта сохранение формы | 108 | // кабинет настройки сайта сохранение формы |
106 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); | 109 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); |
107 | 110 | ||
108 | // кабинет - пользователи | 111 | // кабинет - пользователи |
109 | Route::get('users', [UsersController::class, 'index'])->name('users'); | 112 | Route::get('users', [UsersController::class, 'index'])->name('users'); |
110 | 113 | ||
111 | // кабинет - пользователи | 114 | // кабинет - пользователи |
112 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); | 115 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); |
113 | 116 | ||
114 | // кабинет - работодатели | 117 | // кабинет - работодатели |
115 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); | 118 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); |
116 | 119 | ||
117 | // кабинет - соискатели | 120 | // кабинет - соискатели |
118 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); | 121 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); |
119 | 122 | ||
120 | // кабинет - вакансии | 123 | // кабинет - вакансии |
121 | Route::get('ad-employers', [AdminController::class, 'index'])->name('ad-employers'); | 124 | Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); |
122 | 125 | ||
123 | // кабинет - категории | 126 | // кабинет - категории |
124 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); | 127 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); |
125 | /* | 128 | /* |
126 | * CRUD-операции над настройками Компании | 129 | * CRUD-операции над настройками Компании |
127 | */ | 130 | */ |
128 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); | 131 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); |
129 | 132 | ||
130 | 133 | ||
131 | // кабинет - должности | 134 | // кабинет - должности |
132 | Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); | 135 | Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); |
133 | 136 | ||
134 | // кабинет - сообщения | 137 | // кабинет - сообщения |
135 | Route::get('messages', [AdminController::class, 'index'])->name('messages'); | 138 | Route::get('messages', [AdminController::class, 'index'])->name('messages'); |
136 | 139 | ||
137 | // кабинет - группы пользователей | 140 | // кабинет - группы пользователей |
138 | Route::get('groups', [AdminController::class, 'index'])->name('groups'); | 141 | Route::get('groups', [AdminController::class, 'index'])->name('groups'); |
139 | 142 | ||
140 | // кабинет - список админов | 143 | // кабинет - список админов |
141 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); | 144 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); |
142 | 145 | ||
143 | /////редактор////// кабинет - редактор сайта | 146 | /////редактор////// кабинет - редактор сайта//////////////////////// |
144 | Route::get('editor-site', [AdminController::class, 'editor'])->name('editor-site'); | 147 | Route::get('editor-site', [CompanyController::class, 'editor'])->name('editor-site'); |
145 | 148 | ||
146 | // кабинет - редактор шапки-футера сайта | 149 | // кабинет - редактор шапки-футера сайта |
147 | Route::get('edit-blocks', [AdminController::class, 'editblocks'])->name('edit-blocks'); | 150 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); |
148 | 151 | ||
149 | // кабинет - редактор должности на главной | 152 | // кабинет - редактор должности на главной |
150 | Route::get('job-titles-main', [AdminController::class, 'job_titles_main'])->name('job-titles-main'); | 153 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); |
151 | 154 | ||
152 | // кабинет - редактор работодатели на главной | 155 | // кабинет - редактор работодатели на главной |
153 | Route::get('employers-main', [AdminController::class, 'employers_main'])->name('employers-main'); | 156 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); |
154 | 157 | ||
155 | // кабинет - редактор seo-сайта | 158 | // кабинет - редактор seo-сайта |
156 | Route::get('editor-seo', [AdminController::class, 'editor_seo'])->name('editor-seo'); | 159 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); |
157 | 160 | ||
158 | // кабинет - редактор страниц | 161 | // кабинет - редактор страниц |
159 | Route::get('editor-pages', [AdminController::class, 'editor_pages'])->name('editor-pages'); | 162 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); |
160 | 163 | ||
161 | // кабинет - реклама сайта | 164 | // кабинет - реклама сайта |
162 | Route::get('reclames', [AdminController::class, 'reclames'])->name('reclames'); | 165 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); |
166 | //////////////////////////////////////////////////////////////////////// | ||
167 | |||
168 | // кабинет - отзывы о работодателе для модерации | ||
169 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); | ||
163 | 170 | ||
171 | // Общая страница статистики | ||
172 | Route::get('statics', function () { | ||
173 | return view('admin.static.index'); | ||
174 | })->name('statics'); | ||
164 | 175 | ||
176 | // кабинет - статистика работников | ||
177 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); | ||
165 | 178 | ||
179 | // кабинет - статистика вакансий работодателя | ||
180 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); | ||
166 | 181 | ||
182 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника | ||
183 | Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); | ||
167 | 184 | ||
185 | // кабинет - роли пользователя | ||
186 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); | ||
168 | 187 | ||
169 | }); | 188 | }); |
170 | 189 |