Commit d6d0f4b3a0dc960cd5b0053e689591fc1b59212a

Authored by Андрей Ларионов
Exists in master

Merge branch 'master' of http://gitlab.nologostudio.ru/alarionov/rekamore-su

X

Showing 10 changed files Inline Diff

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 $id_admin = Auth::user()->id;
152 152
153 if ($request->ajax()) { 153 if ($request->ajax()) {
154 $user = User::find($request->id); 154 $user = User::find($request->id);
155 $request->offsetUnset('id'); 155 $request->offsetUnset('id');
156 $user->update($request->all()); 156 $user->update($request->all());
157 } 157 }
158 158 $find_key = '';
159 $users = User::where('admin', '1')->paginate(15); 159 $users = User::where('admin', '1');
160 if (isset($request->find)) {
161 $find_key = $request->find;
162 $users = $users->where(function($query) use($find_key) {
163 $query->Where('name', 'LIKE', "%$find_key%")
164 ->orWhere('email', 'LIKE', "%$find_key%");
165 });
166 }
167 $users = $users->paginate(15);
160 168
161 if ($request->ajax()) { 169 if ($request->ajax()) {
162 return view('admin.users.index_ajax', compact('users', 'id_admin')); 170 return view('admin.users.index_ajax', compact('users', 'id_admin'));
163 } else { 171 } else {
164 return view('admin.users.index', compact('users', 'title', 'id_admin')); 172 return view('admin.users.index', compact('users', 'title', 'id_admin', 'find_key'));
165 } 173 }
166 } 174 }
167 175
168 //Страница профиль пользователя - форма 176 //Страница профиль пользователя - форма
169 public function profile_user(User $user) { 177 public function profile_user(User $user) {
170 $visible = false; 178 $visible = false;
171 if($user->is_worker) { 179 if($user->is_worker) {
172 $caption = "Карточка работника"; 180 $caption = "Карточка работника";
173 if (isset($user->workers[0]->id)) { 181 if (isset($user->workers[0]->id)) {
174 $link = route('admin.worker-profile', ['worker' => $user->workers[0]->id]); 182 $link = route('admin.worker-profile', ['worker' => $user->workers[0]->id]);
175 //$visible = true; 183 //$visible = true;
176 } else { 184 } else {
177 $link = ""; 185 $link = "";
178 } 186 }
179 187
180 } else { 188 } else {
181 $caption = "Карточка работодателя"; 189 $caption = "Карточка работодателя";
182 if (isset($user->employers[0]->id)) { 190 if (isset($user->employers[0]->id)) {
183 191
184 $link = route('admin.employer-profile', ['employer' => $user->employers[0]->id]); 192 $link = route('admin.employer-profile', ['employer' => $user->employers[0]->id]);
185 //$visible = true; 193 //$visible = true;
186 } else { 194 } else {
187 $link = ""; 195 $link = "";
188 } 196 }
189 } 197 }
190 198
191 return view('admin.users.profile', compact('user', 'visible', 'link', 'caption')); 199 return view('admin.users.profile', compact('user', 'visible', 'link', 'caption'));
192 } 200 }
193 201
194 //Страница профиль пользователя - сохранение формы 202 //Страница профиль пользователя - сохранение формы
195 public function store_profile_user(User $user, Request $request) { 203 public function store_profile_user(User $user, Request $request) {
196 $rules = [ 204 $rules = [
197 'name' => 'required|min:3', 205 'name' => 'required|min:3',
198 ]; 206 ];
199 $messages = [ 207 $messages = [
200 'required' => 'Укажите обязательное поле', 208 'required' => 'Укажите обязательное поле',
201 'email' => 'Это поле должно быть определено, как Email' 209 'email' => 'Это поле должно быть определено, как Email'
202 ]; 210 ];
203 $validator = Validator::make($request->all(), $rules, $messages); 211 $validator = Validator::make($request->all(), $rules, $messages);
204 212
205 if ($validator->fails()) { 213 if ($validator->fails()) {
206 return redirect()->route('admin.user-profile', ['user' => $user->id]) 214 return redirect()->route('admin.user-profile', ['user' => $user->id])
207 ->withErrors($validator); 215 ->withErrors($validator);
208 } else { 216 } else {
209 $user->update($request->all()); 217 $user->update($request->all());
210 return redirect()->route('admin.user-profile', ['user' => $user->id]) 218 return redirect()->route('admin.user-profile', ['user' => $user->id])
211 ->with('success', 'Данные были успешно сохранены'); 219 ->with('success', 'Данные были успешно сохранены');
212 } 220 }
213 return redirect()->route('admin.user-profile', ['user' => $user->id]); 221 return redirect()->route('admin.user-profile', ['user' => $user->id]);
214 } 222 }
215 223
216 // Страница профиль админа - форма 224 // Страница профиль админа - форма
217 public function profile() { 225 public function profile() {
218 $id = Auth::user()->id; 226 $id = Auth::user()->id;
219 $user = User::find($id); 227 $user = User::find($id);
220 228
221 return view('admin.profile', compact('user')); 229 return view('admin.profile', compact('user'));
222 } 230 }
223 231
224 // Страница профиль админа - сохранение формы 232 // Страница профиль админа - сохранение формы
225 public function store_profile(Request $request) { 233 public function store_profile(Request $request) {
226 $id = Auth::user()->id; 234 $id = Auth::user()->id;
227 $user = User::find($id); 235 $user = User::find($id);
228 236
229 $rules = [ 237 $rules = [
230 'name' => 'required|min:3', 238 'name' => 'required|min:3',
231 'email' => 'required|email|min:3', 239 'email' => 'required|email|min:3',
232 ]; 240 ];
233 $messages = [ 241 $messages = [
234 'required' => 'Укажите обязательное поле', 242 'required' => 'Укажите обязательное поле',
235 'email' => 'Это поле должно быть определено, как Email' 243 'email' => 'Это поле должно быть определено, как Email'
236 ]; 244 ];
237 $validator = Validator::make($request->all(), $rules, $messages); 245 $validator = Validator::make($request->all(), $rules, $messages);
238 246
239 if ($validator->fails()) { 247 if ($validator->fails()) {
240 return redirect()->route('admin.profile') 248 return redirect()->route('admin.profile')
241 ->withErrors($validator); 249 ->withErrors($validator);
242 } else { 250 } else {
243 $user->update($request->all()); 251 $user->update($request->all());
244 return redirect()->route('admin.profile') 252 return redirect()->route('admin.profile')
245 ->with('success', 'Данные были успешно сохранены'); 253 ->with('success', 'Данные были успешно сохранены');
246 } 254 }
247 return redirect()->route('admin.profile'); 255 return redirect()->route('admin.profile');
248 } 256 }
249 257
250 // Форма смены пароля администоратора 258 // Форма смены пароля администоратора
251 public function profile_password() { 259 public function profile_password() {
252 $id = Auth::user()->id; 260 $id = Auth::user()->id;
253 $user = User::find($id); 261 $user = User::find($id);
254 $username = $user->name; 262 $username = $user->name;
255 263
256 return view('admin.password', compact('username')); 264 return view('admin.password', compact('username'));
257 } 265 }
258 266
259 // Сохранение формы смены пароля администоратора 267 // Сохранение формы смены пароля администоратора
260 public function profile_password_new(Request $request) { 268 public function profile_password_new(Request $request) {
261 269
262 $rules = [ 270 $rules = [
263 'old_password' => 'required|min:6', //|current_password:api', 271 'old_password' => 'required|min:6', //|current_password:api',
264 'password' => 'required|min:6|confirmed', 272 'password' => 'required|min:6|confirmed',
265 ]; 273 ];
266 $messages = [ 274 $messages = [
267 'required' => 'Укажите обязательное поле', 275 'required' => 'Укажите обязательное поле',
268 'confirmed' => 'Пароли не совпадают' 276 'confirmed' => 'Пароли не совпадают'
269 ]; 277 ];
270 278
271 $validator = Validator::make($request->all(), $rules, $messages); 279 $validator = Validator::make($request->all(), $rules, $messages);
272 280
273 if (! Hash::check($request->old_password, $request->user()->password)) { 281 if (! Hash::check($request->old_password, $request->user()->password)) {
274 return back()->withErrors([ 282 return back()->withErrors([
275 'old_password' => ['Неверный предыдущий пароль'] 283 'old_password' => ['Неверный предыдущий пароль']
276 ]); 284 ]);
277 } 285 }
278 286
279 if ($validator->fails()) { 287 if ($validator->fails()) {
280 return redirect()->route('admin.password') 288 return redirect()->route('admin.password')
281 ->withErrors($validator); 289 ->withErrors($validator);
282 } else { 290 } else {
283 $params = $request->all(); 291 $params = $request->all();
284 // устанавливаем новый пароль для пользователя 292 // устанавливаем новый пароль для пользователя
285 User::where('id', Auth::id()) 293 User::where('id', Auth::id())
286 ->update(['password' => Hash::make($request->password)]); 294 ->update(['password' => Hash::make($request->password)]);
287 session()->flash('success', 'Успешно изменен пароль!'); 295 session()->flash('success', 'Успешно изменен пароль!');
288 296
289 return redirect()->route('admin.password'); 297 return redirect()->route('admin.password');
290 } 298 }
291 } 299 }
292 300
293 // Страница конфигурация сайта - форма 301 // Страница конфигурация сайта - форма
294 public function config_form() { 302 public function config_form() {
295 $config = Company::find(1); 303 $config = Company::find(1);
296 return view('admin.config', compact('config')); 304 return view('admin.config', compact('config'));
297 } 305 }
298 306
299 // Страница конфигурация сайта - сохранение формы 307 // Страница конфигурация сайта - сохранение формы
300 public function store_config(CompanyRequest $request) { 308 public function store_config(CompanyRequest $request) {
301 $config = Company::find(1); 309 $config = Company::find(1);
302 310
303 $params = $request->all(); 311 $params = $request->all();
304 unset($params['logo']); 312 unset($params['logo']);
305 unset($params['image']); 313 unset($params['image']);
306 314
307 if ($request->has('logo')) { 315 if ($request->has('logo')) {
308 Storage::delete($config->logo); 316 Storage::delete($config->logo);
309 $params['logo'] = $request->file('logo')->store('config', 'public'); 317 $params['logo'] = $request->file('logo')->store('config', 'public');
310 } 318 }
311 319
312 if ($request->has('image')) { 320 if ($request->has('image')) {
313 Storage::delete($config->image); 321 Storage::delete($config->image);
314 $params['image'] = $request->file('image')->store('config', 'public'); 322 $params['image'] = $request->file('image')->store('config', 'public');
315 } 323 }
316 324
317 if (is_null($config)) { 325 if (is_null($config)) {
318 Company::create($params); 326 Company::create($params);
319 } else { 327 } else {
320 $config->update($params); 328 $config->update($params);
321 } 329 }
322 330
323 return redirect()->route('admin.config'); 331 return redirect()->route('admin.config');
324 } 332 }
325 333
326 334
327 } 335 }
328 336
app/Http/Controllers/Admin/EmployersController.php
1 <?php 1 <?php
2 2
3 namespace App\Http\Controllers\Admin; 3 namespace App\Http\Controllers\Admin;
4 4
5 use App\Http\Controllers\Controller; 5 use App\Http\Controllers\Controller;
6 use App\Models\Ad_employer; 6 use App\Models\Ad_employer;
7 use App\Models\Answer; 7 use App\Models\Answer;
8 use App\Models\Employer; 8 use App\Models\Employer;
9 use App\Models\Static_ad; 9 use App\Models\Static_ad;
10 use App\Models\User; 10 use App\Models\User;
11 use Illuminate\Http\Request; 11 use Illuminate\Http\Request;
12 use Illuminate\Support\Facades\DB;
12 use Illuminate\Support\Facades\Storage; 13 use Illuminate\Support\Facades\Storage;
13 use Illuminate\Support\Facades\Validator; 14 use Illuminate\Support\Facades\Validator;
14 15
15 class EmployersController extends Controller 16 class EmployersController extends Controller
16 { 17 {
17 public function index(Request $request) { 18 public function index(Request $request) {
18 if ($request->ajax()) { 19 if ($request->ajax()) {
19 $user = User::find($request->id); 20 $user = User::find($request->id);
20 $request->offsetUnset('id'); 21 $request->offsetUnset('id');
21 $user->update($request->all()); 22 $user->update($request->all());
22 } 23 }
23 24
24 $users = User::where('is_worker', '0'); 25 /*$users = User::with('employers')->where('is_worker', '0');
25 $find_key = ""; 26 $find_key = "";
26 if (isset($request->find)) { 27 if (isset($request->find)) {
27 $find_key = $request->find; 28 $find_key = $request->find;
28 $users = $users->where(function($query) use($find_key) { 29 $users = $users->where(function($query) use($find_key) {
29 $query->Where('name', 'LIKE', "%$find_key%") 30 $query->Where('name', 'LIKE', "%$find_key%")
30 ->orWhere('email', 'LIKE', "%$find_key%") 31 ->orWhere('email', 'LIKE', "%$find_key%")
31 ->orWhere('telephone', 'LIKE', "%$find_key%"); 32 ->orWhere('telephone', 'LIKE', "%$find_key%");
32 }); 33 });
34 }*/
35
36 $users = User::select(['users.*', 'emp.id as emp_id', 'emp.*'])->join('employers as emp','emp.user_id','users.id')
37 ->where('users.is_worker', '0');
38 $find_key = "";
39 if (isset($request->find)) {
40 $find_key = $request->find;
41 $users = $users->where(function($query) use($find_key) {
42 $query->Where('users.name', 'LIKE', "%$find_key%")
43 ->orWhere('emp.email', 'LIKE', "%$find_key%")
44 ->orWhere('emp.telephone', 'LIKE', "%$find_key%");
45 });
33 } 46 }
47
48 //DB::enableQueryLog();
34 $users = $users->paginate(15); 49 $users = $users->paginate(15);
50 //dd(DB::getQueryLog());
35 51
36 if ($request->ajax()) { 52 if ($request->ajax()) {
37 return view('admin.employer.index_ajax', compact('users')); 53 return view('admin.employer.index_ajax', compact('users'));
38 } else { 54 } else {
39 return view('admin.employer.index', compact('users', 'find_key')); 55 return view('admin.employer.index', compact('users', 'find_key'));
40 } 56 }
41 } 57 }
42 58
43 public function form_update_employer(Employer $employer) { 59 public function form_update_employer(Employer $employer) {
44 return view('admin.employer.edit', compact('employer')); 60 return view('admin.employer.edit', compact('employer'));
45 } 61 }
46 62
47 public function update_employer(Employer $employer, Request $request) 63 public function update_employer(Employer $employer, Request $request)
48 { 64 {
49 $params = $request->all(); 65 $params = $request->all();
50 unset($params['logo']); 66 unset($params['logo']);
51 unset($params['telephone']); 67 unset($params['telephone']);
52 unset($params['email']); 68 unset($params['email']);
53 unset($params['address']); 69 unset($params['address']);
54 unset($params['site']); 70 unset($params['site']);
71 unset($params['status_hidden']);
72 unset($params['oficial_status']);
73 unset($params['social_is']);
74 unset($params['sending_is']);
55 75
56 $rules = [ 76 $rules = [
57 'name' => 'required|string|max:255', 77 'name' => 'required|string|max:255',
58 ]; 78 ];
59 79
60 $messages = [ 80 $messages = [
61 'required' => 'Укажите обязательное поле «:attribute»', 81 'required' => 'Укажите обязательное поле «:attribute»',
62 'confirmed' => 'Пароли не совпадают', 82 'confirmed' => 'Пароли не совпадают',
63 'email' => 'Введите корректный email', 83 'email' => 'Введите корректный email',
64 'min' => [ 84 'min' => [
65 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 85 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
66 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 86 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
67 ], 87 ],
68 'max' => [ 88 'max' => [
69 'string' => 'Поле «:attribute» должно быть не больше :max символов', 89 'string' => 'Поле «:attribute» должно быть не больше :max символов',
70 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 90 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
71 ], 91 ],
72 ]; 92 ];
73 93
74 $validator = Validator::make($params, $rules, $messages); 94 $validator = Validator::make($params, $rules, $messages);
75 95
76 if ($validator->fails()) { 96 if ($validator->fails()) {
77 return back()->withErrors($validator)->withInput(); //->route('admin.register') 97 return back()->withErrors($validator)->withInput(); //->route('admin.register')
78 98
79 } else { 99 } else {
80 100
81 //$user = User::find($employer->user_id); 101 //$user = User::find($employer->user_id);
82 $user_id = $employer->user_id; 102 $user_id = $employer->user_id;
83 $employer->telephone = $request->telephone; 103 $employer->telephone = $request->telephone;
84 $employer->email = $request->email; 104 $employer->email = $request->email;
85 $employer->address = $request->address; 105 $employer->address = $request->address;
86 $employer->site = $request->site; 106 $employer->site = $request->site;
87 $employer->text = $request->text; 107 $employer->text = $request->text;
108 $employer->status_hidden = $request->status_hidden;
109 $employer->oficial_status = $request->oficial_status;
110 $employer->social_is = $request->social_is;
111 $employer->sending_is = $request->sending_is;
88 112
89 if ($request->has('logo')) { 113 if ($request->has('logo')) {
90 if (!empty($employer->logo)) { 114 if (!empty($employer->logo)) {
91 Storage::delete($employer->logo); 115 Storage::delete($employer->logo);
92 } 116 }
93 $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); 117 $employer->logo = $request->file('logo')->store("employer/$user_id", 'public');
94 } 118 }
95 $employer->save(); 119 $employer->save();
96 120
97 $user = User::find($user_id); 121 $user = User::find($user_id);
98 $user->update($params); 122 $user->update($params);
99 123
100 return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) 124 return redirect()->route('admin.employer-profile', ['employer' => $employer->id])
101 ->with('success', 'Данные были успешно сохранены'); 125 ->with('success', 'Данные были успешно сохранены');
102 } 126 }
103 } 127 }
104 128
105 // кабинет - отзывы о работодателе для модерации 129 // кабинет - отзывы о работодателе для модерации
106 public function answers(Request $request) { 130 public function answers(Request $request) {
107 if ($request->ajax()) { 131 if ($request->ajax()) {
108 $user = Answer::find($request->id); 132 $user = Answer::find($request->id);
109 $request->offsetUnset('id'); 133 $request->offsetUnset('id');
110 $user->update($request->all()); 134 $user->update($request->all());
111 } 135 }
112 136
113 $answers = Answer::query()->orderByDesc('id')->paginate(15); 137 $answers = Answer::query()->orderByDesc('id')->paginate(15);
114 138
115 if ($request->ajax()) { 139 if ($request->ajax()) {
116 return view('admin.answers.index_ajax', compact('answers')); 140 return view('admin.answers.index_ajax', compact('answers'));
117 } else { 141 } else {
118 return view('admin.answers.index', compact('answers')); 142 return view('admin.answers.index', compact('answers'));
119 } 143 }
120 } 144 }
121 145
122 // кабинет - статистика вакансий работодателя 146 // кабинет - статистика вакансий работодателя
123 public function static_ads(Request $request) { 147 public function static_ads(Request $request) {
124 $stat = Static_ad::with('ads'); 148 $stat = Static_ad::with('ads');
125 $ads = Ad_employer::query()->active()->OrderBy('id')->get(); 149 $ads = Ad_employer::query()->active()->OrderBy('id')->get();
126 $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); 150 $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get();
127 if ($request->ajax()) { 151 if ($request->ajax()) {
128 if (isset($request->ad_employer_id)) 152 if (isset($request->ad_employer_id))
129 if (!$request->ad_employer_id == "0") 153 if (!$request->ad_employer_id == "0")
130 $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); 154 $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id);
131 if (isset($request->year_month)) { 155 if (isset($request->year_month)) {
132 if (!$request->year_month == "0") 156 if (!$request->year_month == "0")
133 $stat = $stat->Where('year_month', '=', $request->year_month); 157 $stat = $stat->Where('year_month', '=', $request->year_month);
134 } 158 }
135 } 159 }
136 160
137 $stat = $stat->OrderByDesc('year_month'); 161 $stat = $stat->OrderByDesc('year_month');
138 $stat = $stat->paginate(15); 162 $stat = $stat->paginate(15);
139 163
140 if ($request->ajax()) 164 if ($request->ajax())
141 return view('admin.static.index_ads_ajax', compact('stat')); 165 return view('admin.static.index_ads_ajax', compact('stat'));
142 else 166 else
143 return view('admin.static.index_ads', compact('stat', 'ads', 'periods')); 167 return view('admin.static.index_ads', compact('stat', 'ads', 'periods'));
144 168
145 } 169 }
146 170
147 171
148 } 172 }
149 173
app/Http/Controllers/Admin/MsgAnswersController.php
1 <?php 1 <?php
2 2
3 namespace App\Http\Controllers\Admin; 3 namespace App\Http\Controllers\Admin;
4 4
5 use App\Http\Controllers\Controller; 5 use App\Http\Controllers\Controller;
6 use App\Models\Message; 6 use App\Models\Message;
7 use App\Models\User; 7 use App\Models\User;
8 use Illuminate\Http\Request; 8 use Illuminate\Http\Request;
9 use Illuminate\Support\Facades\Auth; 9 use Illuminate\Support\Facades\Auth;
10 use Illuminate\Support\Facades\DB; 10 use Illuminate\Support\Facades\DB;
11 use Illuminate\Support\Facades\Validator; 11 use Illuminate\Support\Facades\Validator;
12 12
13 class MsgAnswersController extends Controller 13 class MsgAnswersController extends Controller
14 { 14 {
15 public function messages() { 15 public function messages() {
16 $Msgs = Message::query()->orderByDesc('created_at')->paginate(25); 16 $Msgs = Message::query()->orderByDesc('created_at')->paginate(25);
17 17
18 return view('admin.messages', compact('Msgs')); 18 return view('admin.messages', compact('Msgs'));
19 } 19 }
20 20
21 public function admin_messages(Request $request) { 21 public function admin_messages(Request $request) {
22 if ($request->ajax()) {
23 $msg = Message::find($request->id);
24 $msg->flag_new = !($request->flag_new);
25 $msg->save();
26 }
27
22 $id_admin = Auth::user()->id; 28 $id_admin = Auth::user()->id;
23 $users = User::query()->OrderBy('name')->get(); 29 $users = User::query()->OrderBy('name')->get();
24 30
25 $Msgs = Message::query()->where('user_id', '=', $id_admin) 31 $Msgs = Message::query()->where('user_id', '=', $id_admin)
26 ->orWhere('to_user_id', '=', $id_admin) 32 ->orWhere('to_user_id', '=', $id_admin)
27 ->orderByDesc('created_at')->paginate(5); 33 ->orderByDesc('created_at')->paginate(5);
28 34
29 return view('admin.message.index', compact('Msgs', 'id_admin', 'users')); 35 if ($request->ajax())
36 return view('admin.message.index_ajax', compact('Msgs', 'id_admin', 'users'));
37 else
38 return view('admin.message.index', compact('Msgs', 'id_admin', 'users'));
30 } 39 }
31 40
32 public function messages_sql(Request $request) { 41 public function messages_sql(Request $request) {
33 $id = Auth::user()->id; 42 $id = Auth::user()->id;
34 DB::enableQueryLog(); 43 DB::enableQueryLog();
35 //$query = DB::select('select * from users where id = :id', ['id' => 1]); 44 //$query = DB::select('select * from users where id = :id', ['id' => 1]);
36 $query = DB::select(DB::raw('SELECT u1.name as "To-user", u2.name as "From-user", m1.`text`, m1.created_at 45 $query = DB::select(DB::raw('SELECT u1.name as "To-user", u2.name as "From-user", m1.`text`, m1.created_at
37 FROM messages m1 46 FROM messages m1
38 JOIN (SELECT MAX(id) id FROM messages 47 JOIN (SELECT MAX(id) id FROM messages
39 GROUP BY LEAST(user_id, to_user_id), 48 GROUP BY LEAST(user_id, to_user_id),
40 GREATEST(user_id, to_user_id) 49 GREATEST(user_id, to_user_id)
41 ) m2 USING (id) 50 ) m2 USING (id)
42 JOIN users u1 ON u1.id = m1.user_id 51 JOIN users u1 ON u1.id = m1.user_id
43 JOIN users u2 ON u2.id = m1.to_user_id 52 JOIN users u2 ON u2.id = m1.to_user_id
44 Where ((m1.user_id = :uid) or (m1.to_user_id = :uid2)) 53 Where ((m1.user_id = :uid) or (m1.to_user_id = :uid2))
45 '), ['uid' => $id, 'uid2' => $id]); 54 '), ['uid' => $id, 'uid2' => $id]);
46 //dump(DB::getQueryLog()); 55 //dump(DB::getQueryLog());
47 dd($query); 56 dd($query);
48 return; 57 return;
49 } 58 }
50 59
51 public function admin_messages_post(Request $request) { 60 public function admin_messages_post(Request $request) {
52 $rules = [ 61 $rules = [
53 'title' => 'required|min:3|max:255', 62 'title' => 'required|min:3|max:255',
54 'text' => 'required|min:1' 63 'text' => 'required|min:1'
55 ]; 64 ];
56 65
57 $messages = [ 66 $messages = [
58 'required' => 'Поле не может быть пустым!', 67 'required' => 'Поле не может быть пустым!',
59 ]; 68 ];
60 69
61 $validator = Validator::make($request->all(), $rules, $messages); 70 $validator = Validator::make($request->all(), $rules, $messages);
62 71
63 if ($validator->fails()) { 72 if ($validator->fails()) {
64 return redirect()->route('admin.admin-messages')->withErrors($validator); 73 return redirect()->route('admin.admin-messages')->withErrors($validator);
65 } else { 74 } else {
66 $params = $request->all(); 75 $params = $request->all();
67 $id_admin = Auth::user()->id; 76 $id_admin = Auth::user()->id;
68 if ($request->has('file')) { 77 if ($request->has('file')) {
69 $params['file'] = $request->file('file')->store("upload/".$id_admin, 'public'); 78 $params['file'] = $request->file('file')->store("upload/".$id_admin, 'public');
70 } 79 }
71 Message::create($params); 80 Message::create($params);
72 return redirect()->route('admin.admin-messages'); 81 return redirect()->route('admin.admin-messages');
73 } 82 }
74 } 83 }
75 } 84 }
76 85
app/Providers/MyServiceProvider.php
1 <?php 1 <?php
2 2
3 namespace App\Providers; 3 namespace App\Providers;
4 4
5 use App\Models\Job_title; 5 use App\Models\Job_title;
6 use Illuminate\Support\Facades\Auth;
7 use Illuminate\Support\Facades\DB;
6 use Illuminate\Support\Facades\View; 8 use Illuminate\Support\Facades\View;
7 use Illuminate\Support\ServiceProvider; 9 use Illuminate\Support\ServiceProvider;
8 10
9 class MyServiceProvider extends ServiceProvider 11 class MyServiceProvider extends ServiceProvider
10 { 12 {
11 /** 13 /**
12 * Register services. 14 * Register services.
13 * 15 *
14 * @return void 16 * @return void
15 */ 17 */
16 public function register() 18 public function register()
17 { 19 {
18 // 20 //
19 } 21 }
20 22
21 /** 23 /**
22 * Bootstrap services. 24 * Bootstrap services.
23 * 25 *
24 * @return void 26 * @return void
25 */ 27 */
26 public function boot() 28 public function boot()
27 { 29 {
28 $views = ['admin.job_titles.parent_id']; 30 $views = ['admin.job_titles.parent_id'];
29 View::composer($views, 31 View::composer($views,
30 function($view) 32 function($view)
31 { 33 {
32 static $items = null; 34 static $items = null;
33 35
34 if (is_null($items)) { 36 if (is_null($items)) {
35 $items = Job_title::query()-> 37 $items = Job_title::query()->
36 orderByDesc('sort')-> 38 orderByDesc('sort')->
37 orderBy('name')-> 39 orderBy('name')->
38 active()-> 40 active()->
39 get(); 41 get();
40 $parent = 0; 42 $parent = 0;
41 $view->with(['items' => $items, 'parent' => $parent]); 43 $view->with(['items' => $items, 'parent' => $parent]);
42 } else { 44 } else {
43 $view->with(['items' => $items]); 45 $view->with(['items' => $items]);
44 } 46 }
45 47
46 } 48 }
47 ); 49 );
50
51 $views2 = ['layout.admin'];
52
53 View::composer($views2,
54 function($view){
55 $id = Auth::user()->id;
56 $query = DB::select(DB::raw('SELECT count(*) as MsgCount
57 FROM messages m1
58 Where ((m1.flag_new = 1) and (m1.to_user_id = :uid))
59 '), ['uid' => $id]
60 );
61
62 $view->with(['MsgCount' => $query[0]->MsgCount]);
63 }
64 );
48 } 65 }
49 } 66 }
50 67
public/assets/css/tabs.css
File was created 1 .tabs {
2 font-size: 0;
3 }
4
5 .tabs>input[type="radio"] {
6 display: none;
7 }
8
9 .tabs>div {
10 /* скрыть контент по умолчанию */
11 display: none;
12 border: 1px solid #e0e0e0;
13 padding: 10px 15px;
14 font-size: 16px;
15 }
16
17 /* отобразить контент, связанный с вабранной радиокнопкой (input type="radio") */
18 #tab-btn-1:checked~#content-1,
19 #tab-btn-2:checked~#content-2,
20 #tab-btn-3:checked~#content-3 {
21 display: block;
22 }
23
24 .tabs>label {
25 display: inline-block;
26 text-align: center;
27 vertical-align: middle;
28 user-select: none;
29 background-color: #f5f5f5;
30 border: 1px solid #e0e0e0;
31 padding: 2px 8px;
32 font-size: 16px;
33 line-height: 1.5;
34 transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out;
35 cursor: pointer;
36 position: relative;
37 top: 1px;
38 }
39
40 .tabs>label:not(:first-of-type) {
41 border-left: none;
42 }
43
44 .tabs>input[type="radio"]:checked+label {
45 background-color: #fff;
46 border-bottom: 1px solid #fff;
47 }
48
resources/views/admin/employer/edit.blade.php
1 @extends('layout.admin', ['title' => 'Админка - Редактирование работодателя']) 1 @extends('layout.admin', ['title' => 'Админка - Редактирование работодателя'])
2 2
3 @section('content') 3 @section('content')
4 <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> 4 <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300">
5 Работодатель-пользователь: "{{$employer->users->name_man}} ({{$employer->user_id}})" 5 Работодатель-пользователь: "{{$employer->users->name_man}} ({{$employer->user_id}})"
6 </h4> 6 </h4>
7 <form method="POST" action="" enctype="multipart/form-data"> 7 <form method="POST" action="" enctype="multipart/form-data">
8 @csrf
9 <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> 8 <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800">
10 <label class="block text-sm"> 9 @csrf
11 <span class="text-gray-700 dark:text-gray-400">Имя компании</span> 10 <div class="tabs">
12 <input name="name" id="name" 11 <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked>
13 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 12 <label for="tab-btn-1">Персональная информация</label>
14 placeholder="Имя компании" value="{{ old('name') ?? $employer->users->name ?? '' }}" 13 <input type="radio" name="tab-btn" id="tab-btn-2" value="">
15 /> 14 <label for="tab-btn-2">Настройки</label>
16 @error('name') 15 <!--<input type="radio" name="tab-btn" id="tab-btn-3" value="">
17 <span class="text-xs text-red-600 dark:text-red-400"> 16 <label for="tab-btn-3">Вкладка 3</label>-->
18 {{ $message }} 17 <div id="content-1">
19 </span> 18
20 @enderror 19 <label class="block text-sm">
21 </label><br> 20 <span class="text-gray-700 dark:text-gray-400">Имя компании</span>
21 <input name="name" id="name"
22 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
23 placeholder="Имя компании" value="{{ old('name') ?? $employer->users->name ?? '' }}"
24 />
25 @error('name')
26 <span class="text-xs text-red-600 dark:text-red-400">
27 {{ $message }}
28 </span>
29 @enderror
30 </label><br>
22 31
23 <label class="block text-sm"> 32 <label class="block text-sm">
24 <span class="text-gray-700 dark:text-gray-400">Email</span> 33 <span class="text-gray-700 dark:text-gray-400">Email</span>
25 <input name="email" id="email" 34 <input name="email" id="email"
26 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 35 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
27 placeholder="Почта" value="{{ old('email') ?? $employer->email ?? '' }}" 36 placeholder="Почта" value="{{ old('email') ?? $employer->email ?? '' }}"
28 /> 37 />
29 @error('email') 38 @error('email')
30 <span class="text-xs text-red-600 dark:text-red-400"> 39 <span class="text-xs text-red-600 dark:text-red-400">
31 {{ $message }} 40 {{ $message }}
32 </span> 41 </span>
33 @enderror 42 @enderror
34 </label><br> 43 </label><br>
35 44
36 <label class="block text-sm"> 45 <label class="block text-sm">
37 <span class="text-gray-700 dark:text-gray-400">Телефон</span> 46 <span class="text-gray-700 dark:text-gray-400">Телефон</span>
38 <input name="telephone" id="telephone" 47 <input name="telephone" id="telephone"
39 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 48 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
40 placeholder="Телефон" value="{{ old('telephone') ?? $employer->telephone ?? '' }}" 49 placeholder="Телефон" value="{{ old('telephone') ?? $employer->telephone ?? '' }}"
41 /> 50 />
42 @error('telephone') 51 @error('telephone')
43 <span class="text-xs text-red-600 dark:text-red-400"> 52 <span class="text-xs text-red-600 dark:text-red-400">
44 {{ $message }} 53 {{ $message }}
45 </span> 54 </span>
46 @enderror 55 @enderror
47 </label><br> 56 </label><br>
48 57
49 <label class="block text-sm"> 58 <label class="block text-sm">
50 <span class="text-gray-700 dark:text-gray-400">Адрес</span> 59 <span class="text-gray-700 dark:text-gray-400">Адрес</span>
51 <input name="address" id="address" 60 <input name="address" id="address"
52 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 61 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
53 placeholder="Адрес" value="{{ old('address') ?? $employer->address ?? '' }}" 62 placeholder="Адрес" value="{{ old('address') ?? $employer->address ?? '' }}"
54 /> 63 />
55 @error('address') 64 @error('address')
56 <span class="text-xs text-red-600 dark:text-red-400"> 65 <span class="text-xs text-red-600 dark:text-red-400">
57 {{ $message }} 66 {{ $message }}
58 </span> 67 </span>
59 @enderror 68 @enderror
60 </label><br> 69 </label><br>
61 70
62 <label class="block text-sm"> 71 <label class="block text-sm">
63 <span class="text-gray-700 dark:text-gray-400">Сайт</span> 72 <span class="text-gray-700 dark:text-gray-400">Сайт</span>
64 <input name="site" id="site" 73 <input name="site" id="site"
65 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 74 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
66 placeholder="Сайт" value="{{ old('site') ?? $employer->site ?? '' }}" 75 placeholder="Сайт" value="{{ old('site') ?? $employer->site ?? '' }}"
67 /> 76 />
68 @error('site') 77 @error('site')
69 <span class="text-xs text-red-600 dark:text-red-400"> 78 <span class="text-xs text-red-600 dark:text-red-400">
70 {{ $message }} 79 {{ $message }}
71 </span> 80 </span>
72 @enderror 81 @enderror
73 </label><br> 82 </label><br>
74 83
75 <label class="block text-sm"> 84 <label class="block text-sm">
76 <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> 85 <span class="text-gray-700 dark:text-gray-400">Лого</span>
77 Права работодателя:
78 </h4>
79 <p style="float:left; margin-right: 10px">Просмотр базы резюме </p>
80 <input type="hidden" name="is_lookin" value="0" />
81 <input name="is_lookin" <? if ($employer->users->is_lookin) echo "checked";?>
82 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray "
83 placeholder="" type="checkbox" value="1"
84 /><br>
85 86
86 <p style="float:left; margin-right: 10px">Отправка сообщений</p> 87 <input name="logo" id="logo" type="file"
87 <input type="hidden" name="is_message" value="0" /> 88 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
88 <input name="is_message" id="is_message" <? if ($employer->users->is_message) echo "checked";?> 89 placeholder="Лого" value=""
89 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " 90 />
90 placeholder="" type="checkbox" value="1" 91 @isset($employer->logo)
91 /><br> 92 <img src="<?=asset(Storage::url($employer->logo))?>" width="150"/>
93 @endisset
94 @error('logo')
95 <span class="text-xs text-red-600 dark:text-red-400">
96 {{ $message }}
97 </span>
98 @enderror
99 </label><br>
92 100
93 <p style="float:left; margin-right: 10px">Публикация вакансий</p> 101 <label class="block mt-4 text-sm">
94 <input type="hidden" name="is_public" value="0" /> 102 <span class="text-gray-700 dark:text-gray-400">Описание</span>
95 <input name="is_public" id="is_public" <? if ($employer->users->is_public) echo "checked";?> 103 <textarea name="text" id="text"
96 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " 104 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
97 placeholder="" type="checkbox" value="1" 105 rows="3"
98 /><br> 106 placeholder="Описание компании"
107 >{{ old('text') ?? $employer->text ?? '' }}</textarea>
108 </label>
99 109
100 </label> 110 </div>
111 <div id="content-2">
112 <label class="block text-sm">
113 <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300">
114 Права работодателя:
115 </h4>
116 <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Просмотр базы резюме </p>
117 <input type="hidden" name="is_lookin" value="0" />
118 <input name="is_lookin" <? if ($employer->users->is_lookin) echo "checked";?>
119 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray "
120 placeholder="" type="checkbox" value="1"
121 /><br>
101 122
102 <label class="block text-sm"> 123 <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Отправка сообщений</p>
103 <span class="text-gray-700 dark:text-gray-400">Лого</span> 124 <input type="hidden" name="is_message" value="0" />
125 <input name="is_message" id="is_message" <? if ($employer->users->is_message) echo "checked";?>
126 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray "
127 placeholder="" type="checkbox" value="1"
128 /><br>
104 129
105 <input name="logo" id="logo" type="file" 130 <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Публикация вакансий</p>
106 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 131 <input type="hidden" name="is_public" value="0" />
107 placeholder="Лого" value="" 132 <input name="is_public" id="is_public" <? if ($employer->users->is_public) echo "checked";?>
108 /> 133 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray "
109 @isset($employer->logo) 134 placeholder="" type="checkbox" value="1"
110 <img src="<?=asset(Storage::url($employer->logo))?>" width="150"/> 135 /><br>
111 @endisset 136
112 @error('logo') 137 </label>
113 <span class="text-xs text-red-600 dark:text-red-400"> 138
114 {{ $message }} 139 <label class="block text-sm">
115 </span> 140 <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Работодатель скрыт </p>
116 @enderror 141 <input type="hidden" name="status_hidden" value="0" />
117 </label><br> 142 <input name="status_hidden" <? if ($employer->status_hidden) echo "checked";?>
143 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray "
144 placeholder="" type="checkbox" value="1"
145 />
146 </label><br>
147
148 <label class="block text-sm">
149 <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Компания подтверждена </p>
150 <input type="hidden" name="oficial_status" value="0" />
151 <input name="oficial_status" <? if ($employer->oficial_status) echo "checked";?>
152 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray "
153 placeholder="" type="checkbox" value="1"
154 />
155 </label><br>
118 156
119 <label class="block mt-4 text-sm"> 157 <label class="block text-sm">
120 <span class="text-gray-700 dark:text-gray-400">Описание</span> 158 <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Разрешение публикации в соц.сетях </p>
121 <textarea name="text" id="text" 159 <input type="hidden" name="social_is" value="0" />
122 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" 160 <input name="social_is" <? if ($employer->social_is) echo "checked";?>
123 rows="3" 161 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray "
124 placeholder="Описание компании" 162 placeholder="" type="checkbox" value="1"
125 >{{ old('text') ?? $employer->text ?? '' }}</textarea> 163 />
126 </label> 164 </label><br>
127 165
166 <label class="block text-sm">
167 <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Рассылка </p>
168 <input type="hidden" name="sending_is" value="0" />
169 <input name="sending_is" <? if ($employer->sending_is) echo "checked";?>
170 class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray "
171 placeholder="" type="checkbox" value="1"
172 />
173 </label><br>
128 174
129 <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4">
130 <div>
131 <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple">
132 Сохранить
133 </button>
134 </div>
135 <div>
136 <a href="">Флот</a>
137 </div>
138 <div>
139 <a href="">Вакансии</a>
140 </div>
141 <div>
142 <a href="">Контакты</a>
143 </div>
144 </div> 175 </div>
176 <div id="content-3">
177 Содержимое 3...
178 </div>
179 </div>
180 <br>
181 <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4">
182 <div>
183 <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple">
184 Сохранить
185 </button>
186 </div>
187 <!--<div>
188 <a href="">Флот</a>
189 </div>
190 <div>
191 <a href="">Вакансии</a>
192 </div>
193 <div>
194 <a href="">Контакты</a>
195 </div>-->
196 </div>
145 </div> 197 </div>
146 </form> 198 </form>
147 <!-- 199 <!--
148 <label class="block mt-4 text-sm"> 200 <label class="block mt-4 text-sm">
149 <span class="text-gray-700 dark:text-gray-400"> 201 <span class="text-gray-700 dark:text-gray-400">
150 Requested Limit 202 Requested Limit
151 </span> 203 </span>
152 <select 204 <select
153 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" 205 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
154 > 206 >
155 <option>$1,000</option> 207 <option>$1,000</option>
156 <option>$5,000</option> 208 <option>$5,000</option>
157 <option>$10,000</option> 209 <option>$10,000</option>
158 <option>$25,000</option> 210 <option>$25,000</option>
159 </select> 211 </select>
160 </label> 212 </label>
161 213
162 <label class="block mt-4 text-sm"> 214 <label class="block mt-4 text-sm">
163 <span class="text-gray-700 dark:text-gray-400"> 215 <span class="text-gray-700 dark:text-gray-400">
164 Multiselect 216 Multiselect
165 </span> 217 </span>
166 <select 218 <select
167 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" 219 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
168 multiple 220 multiple
169 > 221 >
170 <option>Option 1</option> 222 <option>Option 1</option>
171 <option>Option 2</option> 223 <option>Option 2</option>
172 <option>Option 3</option> 224 <option>Option 3</option>
173 <option>Option 4</option> 225 <option>Option 4</option>
174 <option>Option 5</option> 226 <option>Option 5</option>
175 </select> 227 </select>
176 </label> 228 </label>
177 229
178 <label class="block mt-4 text-sm"> 230 <label class="block mt-4 text-sm">
179 <span class="text-gray-700 dark:text-gray-400">Message</span> 231 <span class="text-gray-700 dark:text-gray-400">Message</span>
180 <textarea 232 <textarea
181 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" 233 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
182 rows="3" 234 rows="3"
183 placeholder="Enter some long form content." 235 placeholder="Enter some long form content."
184 ></textarea> 236 ></textarea>
185 </label> 237 </label>
186 238
187 <div class="flex mt-6 text-sm"> 239 <div class="flex mt-6 text-sm">
188 <label class="flex items-center dark:text-gray-400"> 240 <label class="flex items-center dark:text-gray-400">
189 <input 241 <input
190 type="checkbox" 242 type="checkbox"
191 class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" 243 class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
192 /> 244 />
193 <span class="ml-2"> 245 <span class="ml-2">
194 I agree to the 246 I agree to the
195 <span class="underline">privacy policy</span> 247 <span class="underline">privacy policy</span>
196 </span> 248 </span>
197 </label> 249 </label>
198 </div> 250 </div>
199 </div> 251 </div>
200 252
201 <!-- Validation inputs --> 253 <!-- Validation inputs -->
202 <!--<h4 254 <!--<h4
203 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" 255 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"
204 > 256 >
205 Validation 257 Validation
206 </h4> 258 </h4>
207 <div 259 <div
208 class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" 260 class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"
209 > 261 >
210 <!-- Invalid input --> 262 <!-- Invalid input -->
211 <!--<label class="block text-sm"> 263 <!--<label class="block text-sm">
212 <span class="text-gray-700 dark:text-gray-400"> 264 <span class="text-gray-700 dark:text-gray-400">
213 Invalid input 265 Invalid input
214 </span> 266 </span>
215 <input 267 <input
216 class="block w-full mt-1 text-sm border-red-600 dark:text-gray-300 dark:bg-gray-700 focus:border-red-400 focus:outline-none focus:shadow-outline-red form-input" 268 class="block w-full mt-1 text-sm border-red-600 dark:text-gray-300 dark:bg-gray-700 focus:border-red-400 focus:outline-none focus:shadow-outline-red form-input"
217 placeholder="Jane Doe" 269 placeholder="Jane Doe"
218 /> 270 />
219 <span class="text-xs text-red-600 dark:text-red-400"> 271 <span class="text-xs text-red-600 dark:text-red-400">
220 Your password is too short. 272 Your password is too short.
221 </span> 273 </span>
222 </label> 274 </label>
223 275
224 <!-- Valid input --> 276 <!-- Valid input -->
225 <!--<label class="block mt-4 text-sm"> 277 <!--<label class="block mt-4 text-sm">
226 <span class="text-gray-700 dark:text-gray-400"> 278 <span class="text-gray-700 dark:text-gray-400">
227 Valid input 279 Valid input
228 </span> 280 </span>
229 <input 281 <input
230 class="block w-full mt-1 text-sm border-green-600 dark:text-gray-300 dark:bg-gray-700 focus:border-green-400 focus:outline-none focus:shadow-outline-green form-input" 282 class="block w-full mt-1 text-sm border-green-600 dark:text-gray-300 dark:bg-gray-700 focus:border-green-400 focus:outline-none focus:shadow-outline-green form-input"
231 placeholder="Jane Doe" 283 placeholder="Jane Doe"
232 /> 284 />
233 <span class="text-xs text-green-600 dark:text-green-400"> 285 <span class="text-xs text-green-600 dark:text-green-400">
234 Your password is strong. 286 Your password is strong.
235 </span> 287 </span>
236 </label> 288 </label>
237 289
238 <!-- Helper text --> 290 <!-- Helper text -->
239 <!--<label class="block mt-4 text-sm"> 291 <!--<label class="block mt-4 text-sm">
240 <span class="text-gray-700 dark:text-gray-400"> 292 <span class="text-gray-700 dark:text-gray-400">
241 Helper text 293 Helper text
242 </span> 294 </span>
243 <input 295 <input
244 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" 296 class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
245 placeholder="Jane Doe" 297 placeholder="Jane Doe"
246 /> 298 />
247 <span class="text-xs text-gray-600 dark:text-gray-400"> 299 <span class="text-xs text-gray-600 dark:text-gray-400">
248 Your password must be at least 6 characters long. 300 Your password must be at least 6 characters long.
249 </span> 301 </span>
250 </label> 302 </label>
251 </div> 303 </div>
252 304
253 <!-- Inputs with icons --> 305 <!-- Inputs with icons -->
254 <!--<h4 306 <!--<h4
255 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" 307 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"
256 > 308 >
257 Icons 309 Icons
258 </h4> 310 </h4>
259 <div 311 <div
260 class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" 312 class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"
261 > 313 >
262 <label class="block text-sm"> 314 <label class="block text-sm">
263 <span class="text-gray-700 dark:text-gray-400">Icon left</span> 315 <span class="text-gray-700 dark:text-gray-400">Icon left</span>
264 <!-- focus-within sets the color for the icon when input is focused --> 316 <!-- focus-within sets the color for the icon when input is focused -->
265 <!--<div 317 <!--<div
266 class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" 318 class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400"
267 > 319 >
268 <input 320 <input
269 class="block w-full pl-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" 321 class="block w-full pl-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
270 placeholder="Jane Doe" 322 placeholder="Jane Doe"
271 /> 323 />
272 <div 324 <div
273 class="absolute inset-y-0 flex items-center ml-3 pointer-events-none" 325 class="absolute inset-y-0 flex items-center ml-3 pointer-events-none"
274 > 326 >
275 <svg 327 <svg
276 class="w-5 h-5" 328 class="w-5 h-5"
277 aria-hidden="true" 329 aria-hidden="true"
278 fill="none" 330 fill="none"
279 stroke-linecap="round" 331 stroke-linecap="round"
280 stroke-linejoin="round" 332 stroke-linejoin="round"
281 stroke-width="2" 333 stroke-width="2"
282 viewBox="0 0 24 24" 334 viewBox="0 0 24 24"
283 stroke="currentColor" 335 stroke="currentColor"
284 > 336 >
285 <path 337 <path
286 d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" 338 d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
287 ></path> 339 ></path>
288 </svg> 340 </svg>
289 </div> 341 </div>
290 </div> 342 </div>
291 </label> 343 </label>
292 344
293 <label class="block mt-4 text-sm"> 345 <label class="block mt-4 text-sm">
294 <span class="text-gray-700 dark:text-gray-400">Icon right</span> 346 <span class="text-gray-700 dark:text-gray-400">Icon right</span>
295 <!-- focus-within sets the color for the icon when input is focused --> 347 <!-- focus-within sets the color for the icon when input is focused -->
296 <!--<div 348 <!--<div
297 class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" 349 class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400"
298 > 350 >
299 <input 351 <input
300 class="block w-full pr-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" 352 class="block w-full pr-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
301 placeholder="Jane Doe" 353 placeholder="Jane Doe"
302 /> 354 />
303 <div 355 <div
304 class="absolute inset-y-0 right-0 flex items-center mr-3 pointer-events-none" 356 class="absolute inset-y-0 right-0 flex items-center mr-3 pointer-events-none"
305 > 357 >
306 <svg 358 <svg
307 class="w-5 h-5" 359 class="w-5 h-5"
308 aria-hidden="true" 360 aria-hidden="true"
309 fill="none" 361 fill="none"
310 stroke-linecap="round" 362 stroke-linecap="round"
311 stroke-linejoin="round" 363 stroke-linejoin="round"
312 stroke-width="2" 364 stroke-width="2"
313 viewBox="0 0 24 24" 365 viewBox="0 0 24 24"
314 stroke="currentColor" 366 stroke="currentColor"
315 > 367 >
316 <path 368 <path
317 d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" 369 d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
318 ></path> 370 ></path>
319 </svg> 371 </svg>
320 </div> 372 </div>
321 </div> 373 </div>
322 </label> 374 </label>
323 </div> 375 </div>
324 376
325 <!-- Inputs with buttons --> 377 <!-- Inputs with buttons -->
326 <!--<h4 378 <!--<h4
327 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" 379 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"
328 > 380 >
329 Buttons 381 Buttons
330 </h4> 382 </h4>
331 <div 383 <div
332 class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" 384 class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"
333 > 385 >
334 <label class="block text-sm"> 386 <label class="block text-sm">
335 <span class="text-gray-700 dark:text-gray-400"> 387 <span class="text-gray-700 dark:text-gray-400">
336 Button left 388 Button left
337 </span> 389 </span>
338 <div class="relative"> 390 <div class="relative">
339 <input 391 <input
340 class="block w-full pl-20 mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" 392 class="block w-full pl-20 mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
341 placeholder="Jane Doe" 393 placeholder="Jane Doe"
342 /> 394 />
343 <button 395 <button
344 class="absolute inset-y-0 px-4 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-l-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" 396 class="absolute inset-y-0 px-4 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-l-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
345 > 397 >
346 Click 398 Click
347 </button> 399 </button>
resources/views/admin/employer/index.blade.php
1 @extends('layout.admin', ['title' => 'Админка - Работодатели']) 1 @extends('layout.admin', ['title' => 'Админка - Работодатели'])
2 2
3 @section('script') 3 @section('script')
4 <script> 4 <script>
5 $(document).ready(function() { 5 $(document).ready(function() {
6 $(document).on('click', '.checkban', function () { 6 $(document).on('click', '.checkban', function () {
7 var this_ = $(this); 7 var this_ = $(this);
8 var value = this_.val(); 8 var value = this_.val();
9 var ajax_block = $('#ajax_block'); 9 var ajax_block = $('#ajax_block');
10 var bool = 0; 10 var bool = 0;
11 11
12 if(this.checked){ 12 if(this.checked){
13 bool = 1; 13 bool = 1;
14 } else { 14 } else {
15 bool = 0; 15 bool = 0;
16 } 16 }
17 17
18 $.ajax({ 18 $.ajax({
19 type: "GET", 19 type: "GET",
20 url: "{{ url()->full()}}", 20 url: "{{ url()->full()}}",
21 data: "id=" + value + "&is_ban=" + bool, 21 data: "id=" + value + "&is_ban=" + bool,
22 success: function (data) { 22 success: function (data) {
23 console.log('Обновление таблицы пользователей '); 23 console.log('Обновление таблицы пользователей ');
24 //data = JSON.parse(data); 24 //data = JSON.parse(data);
25 //console.log(data); 25 //console.log(data);
26 ajax_block.html(data); 26 ajax_block.html(data);
27 }, 27 },
28 headers: { 28 headers: {
29 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 29 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
30 }, 30 },
31 error: function (data) { 31 error: function (data) {
32 console.log('Error: ' + data); 32 console.log('Error: ' + data);
33 } 33 }
34 }); 34 });
35 }); 35 });
36 36
37 }); 37 });
38 </script> 38 </script>
39 @endsection 39 @endsection
40 40
41 @section('search') 41 @section('search')
42 @include('admin.find') 42 @include('admin.find')
43 @endsection 43 @endsection
44 44
45 @section('content') 45 @section('content')
46 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> 46 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block">
47 <div class="w-full overflow-x-auto"> 47 <div class="w-full overflow-x-auto">
48 <table class="w-full whitespace-no-wrap"> 48 <table class="w-full whitespace-no-wrap">
49 <thead> 49 <thead>
50 <tr 50 <tr
51 class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" 51 class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800"
52 > 52 >
53 <th class="px-4 py-3">№</th> 53 <th class="px-4 py-3">№</th>
54 <th class="px-4 py-3">Название компании</th> 54 <th class="px-4 py-3">Название компании</th>
55 <th class="px-4 py-3">Email/Телефон</th> 55 <th class="px-4 py-3">Email/Телефон</th>
56 <th class="px-4 py-3">Имя</th> 56 <th class="px-4 py-3">Имя</th>
57 <th class="px-4 py-3">Дата регистрации</th> 57 <th class="px-4 py-3">Дата регистрации</th>
58 <th class="px-4 py-3">Изменить</th> 58 <th class="px-4 py-3">Изменить</th>
59 <th class="px-4 py-3">Бан</th> 59 <th class="px-4 py-3">Бан</th>
60 </tr> 60 </tr>
61 </thead> 61 </thead>
62 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> 62 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800">
63 @foreach($users as $user) 63 @foreach($users as $user)
64 <tr class="text-gray-700 dark:text-gray-400"> 64 <tr class="text-gray-700 dark:text-gray-400">
65 <td class="px-4 py-3"> 65 <td class="px-4 py-3">
66 {{$user->id}} 66 {{$user->id}}
67 </td> 67 </td>
68 <td class="px-4 py-3"> 68 <td class="px-4 py-3">
69 {{$user->name}} 69 {{$user->name}}
70 </td> 70 </td>
71 <td class="px-4 py-3"> 71 <td class="px-4 py-3">
72 <div class="flex items-center text-sm"> 72 <div class="flex items-center text-sm">
73 <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> 73 <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block">
74 <div 74 <div
75 class="absolute inset-0 rounded-full shadow-inner" 75 class="absolute inset-0 rounded-full shadow-inner"
76 aria-hidden="true" 76 aria-hidden="true"
77 ></div> 77 ></div>
78 </div>--> 78 </div>-->
79 <div> 79 <div>
80 <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> 80 <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p>
81 <p class="text-xs text-gray-600 dark:text-gray-400"> 81 <p class="text-xs text-gray-600 dark:text-gray-400">
82 {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} 82 {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }}
83 </p> 83 </p>
84 </div> 84 </div>
85 </div> 85 </div>
86 86
87 </td> 87 </td>
88 <td class="px-4 py-3 text-sm"> 88 <td class="px-4 py-3 text-sm">
89 {{ $user->name_man }} 89 {{ $user->name_man }} ({{ $user->emp_id }})
90 </td> 90 </td>
91 <td class="px-4 py-3 text-sm"> 91 <td class="px-4 py-3 text-sm">
92 {{ $user->created_at }} 92 {{ $user->created_at }}
93 </td> 93 </td>
94 <td class="px-4 py-3 text-sm"> 94 <td class="px-4 py-3 text-sm">
95 @if ($user->id > 1) 95 @if (!empty($user->emp_id))
96 <a href="{{ route('admin.user-profile', ['user' => $user->id]) }}">Изменить</a> 96 <a href="{{ route('admin.employer-profile', ['employer' => $user->emp_id]) }}">Изменить</a>
97 @endif 97 @endif
98 </td> 98 </td>
99 <td class="px-4 py-3 text-sm"> 99 <td class="px-4 py-3 text-sm">
100 @if ($user->id > 1) 100 @if ($user->id > 1)
101 <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> 101 <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/>
102 @endif 102 @endif
103 </td> 103 </td>
104 </tr> 104 </tr>
105 @endforeach 105 @endforeach
106 </tbody> 106 </tbody>
107 </table> 107 </table>
108 </div> 108 </div>
109 109
110 <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> 110 <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800">
111 <?=$users->appends($_GET)->links('admin.pagginate'); ?> 111 <?=$users->appends($_GET)->links('admin.pagginate'); ?>
112 </div> 112 </div>
113 </div> 113 </div>
114 @endsection 114 @endsection
115 115
resources/views/admin/message/index.blade.php
1 @extends('layout.admin', ['title' => 'Админка - Сообщения адмистратора']) 1 @extends('layout.admin', ['title' => 'Админка - Сообщения адмистратора'])
2 2
3 @section('script') 3 @section('script')
4 <script>
5 $(document).ready(function() {
6 $(document).on('change', '.checkread', function () {
7 var this_ = $(this);
8 var value = this_.val();
9 var ajax_block = $('#ajax_block');
10 var bool = 0;
11
12 if(this.checked){
13 bool = 1;
14 } else {
15 bool = 0;
16 }
17
18 $.ajax({
19 type: "GET",
20 url: "{{ url()->full()}}",
21 data: "id=" + value + "&flag_new=" + bool,
22 success: function (data) {
23 console.log('Обновление таблицы сообщений администратора ');
24 //data = JSON.parse(data);
25 //console.log(data);
26 ajax_block.html(data);
27 },
28 headers: {
29 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
30 },
31 error: function (data) {
32 console.log('Error: ' + data);
33 }
34 });
35 });
36
37 });
38 </script>
4 @endsection 39 @endsection
5 40
6 @section('search') 41 @section('search')
7 <!--<div class="absolute inset-y-0 flex items-center pl-2"> 42
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 43 @endsection
34 44
35 @section('content') 45 @section('content')
36 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> 46 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block">
37 <div class="w-full overflow-x-auto"> 47 <div class="w-full overflow-x-auto">
38 <table class="w-full whitespace-no-wrap"> 48 <table class="w-full whitespace-no-wrap">
39 <thead> 49 <thead>
40 <tr 50 <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" 51 class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800"
42 > 52 >
43 <th class="px-4 py-3">№</th> 53 <th class="px-4 py-3">№</th>
44 <th class="px-4 py-3">От юзера</th> 54 <th class="px-4 py-3">От юзера</th>
45 <th class="px-4 py-3">К юзеру</th> 55 <th class="px-4 py-3">К юзеру</th>
46 <th class="px-4 py-3">Текст</th> 56 <th class="px-4 py-3">Текст</th>
47 <th class="px-4 py-3">Дата</th> 57 <th class="px-4 py-3">Дата</th>
58 <th class="px-4 py-3">Прочтено</th>
48 </tr> 59 </tr>
49 </thead> 60 </thead>
50 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> 61 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800">
51 @foreach($Msgs as $msg) 62 @foreach($Msgs as $msg)
52 <tr class="text-gray-700 dark:text-gray-400"> 63 <tr class="text-gray-700 dark:text-gray-400"
64 @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" @endif>
53 <td class="px-4 py-3"> 65 <td class="px-4 py-3">
54 {{$msg->id}} 66 {{$msg->id}}
55 </td> 67 </td>
56 <td class="px-4 py-3"> 68 <td class="px-4 py-3">
57 {{$msg->user_from->name}} ({{$msg->user_from->id}}) 69 {{$msg->user_from->name}} ({{$msg->user_from->id}})
58 </td> 70 </td>
59 <td class="px-4 py-3"> 71 <td class="px-4 py-3">
60 {{$msg->user_to->name}} ({{$msg->user_to->id}}) 72 {{$msg->user_to->name}} ({{$msg->user_to->id}})
61 </td> 73 </td>
62 <td class="px-4 py-3"> 74 <td class="px-4 py-3">
63 {{$msg->title}} 75 {{$msg->title}}
64 <div class="flex items-center text-sm"> 76 <div class="flex items-center text-sm">
65 <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> 77 <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea>
66 </div> 78 </div>
67 </td> 79 </td>
68 <td class="px-4 py-3 text-sm"> 80 <td class="px-4 py-3 text-sm">
69 {{ $msg->created_at }} 81 {{ $msg->created_at }}
70 </td> 82 </td>
83 <td class="px-4 py-3 text-sm">
84 @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1))
85 <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/>
86 @endif
87 </td>
71 </tr> 88 </tr>
72 @endforeach 89 @endforeach
73 </tbody> 90 </tbody>
74 </table> 91 </table>
75 </div> 92 </div>
76 93
77 <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> 94 <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800">
78 <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> 95 <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?>
79 </div> 96 </div>
80 </div><br> 97 </div><br>
81 98
82 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2"> 99 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2">
83 100
84 <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data"> 101 <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data">
85 @csrf 102 @csrf
86 <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> 103 <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800">
87 <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3> 104 <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3>
88 <hr> 105 <hr>
89 <label for="ad_employer_id" class="block text-sm"> 106 <label for="ad_employer_id" class="block text-sm">
90 <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/> 107 <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/>
91 108
92 <span class="text-gray-700 dark:text-gray-400">Кому:</span> 109 <span class="text-gray-700 dark:text-gray-400">Кому:</span>
93 110
94 <select name="to_user_id" id="to_user_id" class="block change_js mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"> 111 <select name="to_user_id" id="to_user_id" class="block change_js mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray">
95 @foreach($users as $user) 112 @foreach($users as $user)
96 <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option> 113 <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option>
97 @endforeach 114 @endforeach
98 </select> 115 </select>
99 </label><br> 116 </label><br>
100 117
101 <label class="block text-sm"> 118 <label class="block text-sm">
102 <span class="text-gray-700 dark:text-gray-400">Заголовок</span> 119 <span class="text-gray-700 dark:text-gray-400">Заголовок</span>
103 <input name="title" id="title" 120 <input name="title" id="title"
104 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 121 class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
105 placeholder="Заголовок" value="{{ old('title') ?? '' }}" 122 placeholder="Заголовок" value="{{ old('title') ?? '' }}"
106 /> 123 />
107 @error('title') 124 @error('title')
108 <span class="text-xs text-red-600 dark:text-red-400"> 125 <span class="text-xs text-red-600 dark:text-red-400">
109 {{ $message }} 126 {{ $message }}
110 </span> 127 </span>
111 @enderror 128 @enderror
112 </label><br> 129 </label><br>
113 130
114 <label class="block text-sm"> 131 <label class="block text-sm">
115 <span class="text-gray-700 dark:text-gray-400">Текст</span> 132 <span class="text-gray-700 dark:text-gray-400">Текст</span>
116 <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" name="text" placeholder="Текст" required 133 <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" name="text" placeholder="Текст" required
117 rows="4">{{ old('text') ?? '' }}</textarea> 134 rows="4">{{ old('text') ?? '' }}</textarea>
118 @error('text') 135 @error('text')
119 <span class="text-xs text-red-600 dark:text-red-400"> 136 <span class="text-xs text-red-600 dark:text-red-400">
120 {{ $message }} 137 {{ $message }}
121 </span> 138 </span>
122 @enderror 139 @enderror
123 </label><br> 140 </label><br>
124 141
125 142
resources/views/admin/message/index_ajax.blade.php
File was created 1 <div class="w-full overflow-x-auto">
2 <table class="w-full whitespace-no-wrap">
3 <thead>
4 <tr
5 class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800"
6 >
7 <th class="px-4 py-3">№</th>
8 <th class="px-4 py-3">От юзера</th>
9 <th class="px-4 py-3">К юзеру</th>
10 <th class="px-4 py-3">Текст</th>
11 <th class="px-4 py-3">Дата</th>
12 <th class="px-4 py-3">Прочтено</th>
13 </tr>
14 </thead>
15 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800">
16 @foreach($Msgs as $msg)
17 <tr class="text-gray-700 dark:text-gray-400"
18 @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" @endif>
19 <td class="px-4 py-3">
20 {{$msg->id}}
21 </td>
22 <td class="px-4 py-3">
23 {{$msg->user_from->name}} ({{$msg->user_from->id}})
24 </td>
25 <td class="px-4 py-3">
26 {{$msg->user_to->name}} ({{$msg->user_to->id}})
27 </td>
28 <td class="px-4 py-3">
29 {{$msg->title}}
30 <div class="flex items-center text-sm">
31 <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea>
32 </div>
33 </td>
34 <td class="px-4 py-3 text-sm">
35 {{ $msg->created_at }}
36 </td>
37 <td class="px-4 py-3 text-sm">
38 @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1))
39 <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/>
40 @endif
41 </td>
42 </tr>
43 @endforeach
44 </tbody>
45 </table>
46 </div>
47
48 <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800">
49 <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?>
50 </div>
51
resources/views/layout/admin.blade.php
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html :class="{ 'theme-dark': dark }" x-data="data()" lang="{{ str_replace('_', '-', app()->getLocale()) }}"> 2 <html :class="{ 'theme-dark': dark }" x-data="data()" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
3 <head> 3 <head>
4 <meta charset="UTF-8" /> 4 <meta charset="UTF-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6 <title>{{$title}}</title> 6 <title>{{$title}}</title>
7 <link 7 <link
8 href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" 8 href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap"
9 rel="stylesheet" 9 rel="stylesheet"
10 /> 10 />
11 <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output.css')}}" /> 11 <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output.css')}}" />
12 <link rel="stylesheet" href="{{ asset('./assets/css/tabs.css')}}" />
12 <script 13 <script
13 src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" 14 src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js"
14 defer 15 defer
15 ></script> 16 ></script>
16 <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> 17 <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"/> 18 <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> 19 <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> 20 <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> 21 <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script>
21 <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> 22 <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script>
22 </head> 23 </head>
23 <body> 24 <body>
24 <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> 25 <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }">
25 <!-- Desktop sidebar --> 26 <!-- Desktop sidebar -->
26 <aside 27 <aside
27 class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" 28 class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0"
28 > 29 >
29 <div class="py-4 text-gray-500 dark:text-gray-400"> 30 <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" 31 <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200"
31 href="{{ route('admin.index') }}"> 32 href="{{ route('admin.index') }}">
32 Админка 33 Админка
33 </a> 34 </a>
34 <ul class="mt-6"> 35 <ul class="mt-6">
35 <li class="relative px-6 py-3"> 36 <li class="relative px-6 py-3">
36 <span 37 <span
37 class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" 38 class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg"
38 aria-hidden="true" 39 aria-hidden="true"
39 ></span> 40 ></span>
40 <a 41 <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" 42 class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100"
42 href="{{ route('admin.index') }}" 43 href="{{ route('admin.index') }}"
43 > 44 >
44 <svg 45 <svg
45 class="w-5 h-5" 46 class="w-5 h-5"
46 aria-hidden="true" 47 aria-hidden="true"
47 fill="none" 48 fill="none"
48 stroke-linecap="round" 49 stroke-linecap="round"
49 stroke-linejoin="round" 50 stroke-linejoin="round"
50 stroke-width="2" 51 stroke-width="2"
51 viewBox="0 0 24 24" 52 viewBox="0 0 24 24"
52 stroke="currentColor" 53 stroke="currentColor"
53 > 54 >
54 <path 55 <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" 56 d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"
56 ></path> 57 ></path>
57 </svg> 58 </svg>
58 <span class="ml-4">Главная страница</span> 59 <span class="ml-4">Главная страница</span>
59 </a> 60 </a>
60 </li> 61 </li>
61 </ul> 62 </ul>
62 <ul> 63 <ul>
63 <li class="relative px-6 py-3"> 64 <li class="relative px-6 py-3">
64 <a 65 <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" 66 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
66 href="{{ route('admin.users') }}" 67 href="{{ route('admin.users') }}"
67 > 68 >
68 <svg 69 <svg
69 class="w-5 h-5" 70 class="w-5 h-5"
70 aria-hidden="true" 71 aria-hidden="true"
71 fill="none" 72 fill="none"
72 stroke-linecap="round" 73 stroke-linecap="round"
73 stroke-linejoin="round" 74 stroke-linejoin="round"
74 stroke-width="2" 75 stroke-width="2"
75 viewBox="0 0 24 24" 76 viewBox="0 0 24 24"
76 stroke="currentColor" 77 stroke="currentColor"
77 > 78 >
78 <path 79 <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" 80 d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"
80 ></path> 81 ></path>
81 </svg> 82 </svg>
82 <span class="ml-4">Пользователи</span> 83 <span class="ml-4">Пользователи</span>
83 </a> 84 </a>
84 </li> 85 </li>
85 <li class="relative px-6 py-3"> 86 <li class="relative px-6 py-3">
86 <a 87 <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" 88 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
88 href="{{ route('admin.employers') }}" 89 href="{{ route('admin.employers') }}"
89 > 90 >
90 <svg 91 <svg
91 class="w-5 h-5" 92 class="w-5 h-5"
92 aria-hidden="true" 93 aria-hidden="true"
93 fill="none" 94 fill="none"
94 stroke-linecap="round" 95 stroke-linecap="round"
95 stroke-linejoin="round" 96 stroke-linejoin="round"
96 stroke-width="2" 97 stroke-width="2"
97 viewBox="0 0 24 24" 98 viewBox="0 0 24 24"
98 stroke="currentColor" 99 stroke="currentColor"
99 > 100 >
100 <path 101 <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" 102 d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"
102 ></path> 103 ></path>
103 </svg> 104 </svg>
104 <span class="ml-4">Работодатели</span> 105 <span class="ml-4">Работодатели</span>
105 </a> 106 </a>
106 </li> 107 </li>
107 <li class="relative px-6 py-3"> 108 <li class="relative px-6 py-3">
108 <a 109 <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" 110 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
110 href="{{ route('admin.workers') }}" 111 href="{{ route('admin.workers') }}"
111 > 112 >
112 <svg 113 <svg
113 class="w-5 h-5" 114 class="w-5 h-5"
114 aria-hidden="true" 115 aria-hidden="true"
115 fill="none" 116 fill="none"
116 stroke-linecap="round" 117 stroke-linecap="round"
117 stroke-linejoin="round" 118 stroke-linejoin="round"
118 stroke-width="2" 119 stroke-width="2"
119 viewBox="0 0 24 24" 120 viewBox="0 0 24 24"
120 stroke="currentColor" 121 stroke="currentColor"
121 > 122 >
122 <path 123 <path
123 d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" 124 d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z"
124 ></path> 125 ></path>
125 <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> 126 <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path>
126 </svg> 127 </svg>
127 <span class="ml-4">Соискатели</span> 128 <span class="ml-4">Соискатели</span>
128 </a> 129 </a>
129 </li> 130 </li>
130 <li class="relative px-6 py-3"> 131 <li class="relative px-6 py-3">
131 <a 132 <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" 133 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
133 href="{{ route('admin.ad-employers') }}" 134 href="{{ route('admin.ad-employers') }}"
134 > 135 >
135 <svg 136 <svg
136 class="w-5 h-5" 137 class="w-5 h-5"
137 aria-hidden="true" 138 aria-hidden="true"
138 fill="none" 139 fill="none"
139 stroke-linecap="round" 140 stroke-linecap="round"
140 stroke-linejoin="round" 141 stroke-linejoin="round"
141 stroke-width="2" 142 stroke-width="2"
142 viewBox="0 0 24 24" 143 viewBox="0 0 24 24"
143 stroke="currentColor" 144 stroke="currentColor"
144 > 145 >
145 <path 146 <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" 147 d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"
147 ></path> 148 ></path>
148 </svg> 149 </svg>
149 <span class="ml-4">Вакансии</span> 150 <span class="ml-4">Вакансии</span>
150 </a> 151 </a>
151 </li> 152 </li>
152 153
153 <li class="relative px-6 py-3"> 154 <li class="relative px-6 py-3">
154 <a 155 <a
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" 156 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
156 href="{{ route('admin.messages') }}" 157 href="{{ route('admin.messages') }}"
157 > 158 >
158 <svg 159 <svg
159 class="w-5 h-5" 160 class="w-5 h-5"
160 aria-hidden="true" 161 aria-hidden="true"
161 fill="none" 162 fill="none"
162 stroke-linecap="round" 163 stroke-linecap="round"
163 stroke-linejoin="round" 164 stroke-linejoin="round"
164 stroke-width="2" 165 stroke-width="2"
165 viewBox="0 0 24 24" 166 viewBox="0 0 24 24"
166 stroke="currentColor" 167 stroke="currentColor"
167 > 168 >
168 <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> 169 <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path>
169 </svg> 170 </svg>
170 <span class="ml-4">Сообщения</span> 171 <span class="ml-4">Сообщения</span>
171 </a> 172 </a>
172 </li> 173 </li>
173 <li class="relative px-6 py-3"> 174 <li class="relative px-6 py-3">
174 <a 175 <a
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" 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"
176 href="{{ route('admin.groups') }}" 177 href="{{ route('admin.groups') }}"
177 > 178 >
178 <svg 179 <svg
179 class="w-5 h-5" 180 class="w-5 h-5"
180 aria-hidden="true" 181 aria-hidden="true"
181 fill="none" 182 fill="none"
182 stroke-linecap="round" 183 stroke-linecap="round"
183 stroke-linejoin="round" 184 stroke-linejoin="round"
184 stroke-width="2" 185 stroke-width="2"
185 viewBox="0 0 24 24" 186 viewBox="0 0 24 24"
186 stroke="currentColor" 187 stroke="currentColor"
187 > 188 >
188 <path 189 <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 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> 191 ></path>
191 </svg> 192 </svg>
192 <span class="ml-4">Группы пользователей</span> 193 <span class="ml-4">Группы пользователей</span>
193 </a> 194 </a>
194 </li> 195 </li>
195 <li class="relative px-6 py-3"> 196 <li class="relative px-6 py-3">
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" 197 <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
197 href="{{ route('admin.roles') }}"> 198 href="{{ route('admin.roles') }}">
198 <svg 199 <svg
199 class="w-5 h-5" 200 class="w-5 h-5"
200 aria-hidden="true" 201 aria-hidden="true"
201 fill="none" 202 fill="none"
202 stroke-linecap="round" 203 stroke-linecap="round"
203 stroke-linejoin="round" 204 stroke-linejoin="round"
204 stroke-width="2" 205 stroke-width="2"
205 viewBox="0 0 24 24" 206 viewBox="0 0 24 24"
206 stroke="currentColor" 207 stroke="currentColor"
207 > 208 >
208 <path 209 <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 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> 211 ></path>
211 </svg> 212 </svg>
212 <span class="ml-4">Роли пользователей</span> 213 <span class="ml-4">Роли пользователей</span>
213 </a> 214 </a>
214 </li> 215 </li>
215 <li class="relative px-6 py-3"> 216 <li class="relative px-6 py-3">
216 <a 217 <a
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" 218 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
218 href="{{ route('admin.statics') }}" 219 href="{{ route('admin.statics') }}"
219 > 220 >
220 <svg 221 <svg
221 class="w-5 h-5" 222 class="w-5 h-5"
222 aria-hidden="true" 223 aria-hidden="true"
223 fill="none" 224 fill="none"
224 stroke-linecap="round" 225 stroke-linecap="round"
225 stroke-linejoin="round" 226 stroke-linejoin="round"
226 stroke-width="2" 227 stroke-width="2"
227 viewBox="0 0 24 24" 228 viewBox="0 0 24 24"
228 stroke="currentColor" 229 stroke="currentColor"
229 > 230 >
230 <path 231 <path
231 d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" 232 d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z"
232 ></path> 233 ></path>
233 <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> 234 <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path>
234 </svg> 235 </svg>
235 <span class="ml-4">Статистика</span> 236 <span class="ml-4">Статистика</span>
236 </a> 237 </a>
237 </li> 238 </li>
238 <li class="relative px-6 py-3"> 239 <li class="relative px-6 py-3">
239 <a 240 <a
240 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" 241 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
241 href="{{ route('admin.answers') }}" 242 href="{{ route('admin.answers') }}"
242 > 243 >
243 <svg 244 <svg
244 class="w-5 h-5" 245 class="w-5 h-5"
245 aria-hidden="true" 246 aria-hidden="true"
246 fill="none" 247 fill="none"
247 stroke-linecap="round" 248 stroke-linecap="round"
248 stroke-linejoin="round" 249 stroke-linejoin="round"
249 stroke-width="2" 250 stroke-width="2"
250 viewBox="0 0 24 24" 251 viewBox="0 0 24 24"
251 stroke="currentColor" 252 stroke="currentColor"
252 > 253 >
253 <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> 254 <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path>
254 </svg> 255 </svg>
255 <span class="ml-4">Модерация</span> 256 <span class="ml-4">Модерация</span>
256 </a> 257 </a>
257 </li> 258 </li>
258 <!-- Справочники --> 259 <!-- Справочники -->
259 <li class="relative px-6 py-3" x-data="{ open1: false }"> 260 <li class="relative px-6 py-3" x-data="{ open1: false }">
260 <button 261 <button
261 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" 262 class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
262 @click="open1=!open1" 263 @click="open1=!open1"
263 aria-haspopup="true"> 264 aria-haspopup="true">
264 <span class="inline-flex items-center"> 265 <span class="inline-flex items-center">
265 <svg 266 <svg
266 class="w-5 h-5" 267 class="w-5 h-5"
267 aria-hidden="true" 268 aria-hidden="true"
268 fill="none" 269 fill="none"
269 stroke-linecap="round" 270 stroke-linecap="round"
270 stroke-linejoin="round" 271 stroke-linejoin="round"
271 stroke-width="2" 272 stroke-width="2"
272 viewBox="0 0 24 24" 273 viewBox="0 0 24 24"
273 stroke="currentColor"> 274 stroke="currentColor">
274 <path 275 <path
275 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" 276 d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"
276 ></path> 277 ></path>
277 </svg> 278 </svg>
278 <span class="ml-4">Справочники</span> 279 <span class="ml-4">Справочники</span>
279 </span> 280 </span>
280 <svg 281 <svg
281 class="w-4 h-4" 282 class="w-4 h-4"
282 aria-hidden="true" 283 aria-hidden="true"
283 fill="currentColor" 284 fill="currentColor"
284 viewBox="0 0 20 20" 285 viewBox="0 0 20 20"
285 > 286 >
286 <path 287 <path
287 fill-rule="evenodd" 288 fill-rule="evenodd"
288 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" 289 d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
289 clip-rule="evenodd" 290 clip-rule="evenodd"
290 ></path> 291 ></path>
291 </svg> 292 </svg>
292 </button> 293 </button>
293 <template x-if="open1"> 294 <template x-if="open1">
294 <ul 295 <ul
295 x-transition:enter="transition-all ease-in-out duration-300" 296 x-transition:enter="transition-all ease-in-out duration-300"
296 x-transition:enter-start="opacity-25 max-h-0" 297 x-transition:enter-start="opacity-25 max-h-0"
297 x-transition:enter-end="opacity-100 max-h-xl" 298 x-transition:enter-end="opacity-100 max-h-xl"
298 x-transition:leave="transition-all ease-in-out duration-300" 299 x-transition:leave="transition-all ease-in-out duration-300"
299 x-transition:leave-start="opacity-100 max-h-xl" 300 x-transition:leave-start="opacity-100 max-h-xl"
300 x-transition:leave-end="opacity-0 max-h-0" 301 x-transition:leave-end="opacity-0 max-h-0"
301 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" 302 class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900"
302 aria-label="submenu" 303 aria-label="submenu"
303 > 304 >
304 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 305 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
305 <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> 306 <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a>
306 </li> 307 </li>
307 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 308 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
308 <a class="w-full" href="{{ route('admin.categories.index') }}">Категории</a> 309 <a class="w-full" href="{{ route('admin.categories.index') }}">Категории</a>
309 </li> 310 </li>
310 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 311 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
311 <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> 312 <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a>
312 </li> 313 </li>
313 314
314 </ul> 315 </ul>
315 </template> 316 </template>
316 </li> 317 </li>
317 318
318 319
319 <!-- Редактор --> 320 <!-- Редактор -->
320 <li class="relative px-6 py-3"> 321 <li class="relative px-6 py-3">
321 <button 322 <button
322 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" 323 class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
323 @click="togglePagesMenu" 324 @click="togglePagesMenu"
324 aria-haspopup="true"> 325 aria-haspopup="true">
325 <span class="inline-flex items-center"> 326 <span class="inline-flex items-center">
326 <svg 327 <svg
327 class="w-5 h-5" 328 class="w-5 h-5"
328 aria-hidden="true" 329 aria-hidden="true"
329 fill="none" 330 fill="none"
330 stroke-linecap="round" 331 stroke-linecap="round"
331 stroke-linejoin="round" 332 stroke-linejoin="round"
332 stroke-width="2" 333 stroke-width="2"
333 viewBox="0 0 24 24" 334 viewBox="0 0 24 24"
334 stroke="currentColor"> 335 stroke="currentColor">
335 <path 336 <path
336 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" 337 d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"
337 ></path> 338 ></path>
338 </svg> 339 </svg>
339 <span class="ml-4">Редактор</span> 340 <span class="ml-4">Редактор</span>
340 </span> 341 </span>
341 <svg 342 <svg
342 class="w-4 h-4" 343 class="w-4 h-4"
343 aria-hidden="true" 344 aria-hidden="true"
344 fill="currentColor" 345 fill="currentColor"
345 viewBox="0 0 20 20" 346 viewBox="0 0 20 20"
346 > 347 >
347 <path 348 <path
348 fill-rule="evenodd" 349 fill-rule="evenodd"
349 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" 350 d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
350 clip-rule="evenodd" 351 clip-rule="evenodd"
351 ></path> 352 ></path>
352 </svg> 353 </svg>
353 </button> 354 </button>
354 <template x-if="isPagesMenuOpen"> 355 <template x-if="isPagesMenuOpen">
355 <ul 356 <ul
356 x-transition:enter="transition-all ease-in-out duration-300" 357 x-transition:enter="transition-all ease-in-out duration-300"
357 x-transition:enter-start="opacity-25 max-h-0" 358 x-transition:enter-start="opacity-25 max-h-0"
358 x-transition:enter-end="opacity-100 max-h-xl" 359 x-transition:enter-end="opacity-100 max-h-xl"
359 x-transition:leave="transition-all ease-in-out duration-300" 360 x-transition:leave="transition-all ease-in-out duration-300"
360 x-transition:leave-start="opacity-100 max-h-xl" 361 x-transition:leave-start="opacity-100 max-h-xl"
361 x-transition:leave-end="opacity-0 max-h-0" 362 x-transition:leave-end="opacity-0 max-h-0"
362 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" 363 class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900"
363 aria-label="submenu" 364 aria-label="submenu"
364 > 365 >
365 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 366 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
366 <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> 367 <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a>
367 </li> 368 </li>
368 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 369 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
369 <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> 370 <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a>
370 </li> 371 </li>
371 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 372 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
372 <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> 373 <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a>
373 </li> 374 </li>
374 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 375 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
375 <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> 376 <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a>
376 </li> 377 </li>
377 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 378 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
378 <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> 379 <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a>
379 </li> 380 </li>
380 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 381 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
381 <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> 382 <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a>
382 </li> 383 </li>
383 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 384 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
384 <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> 385 <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a>
385 </li> 386 </li>
386 </ul> 387 </ul>
387 </template> 388 </template>
388 </li> 389 </li>
389 390
390 </ul> 391 </ul>
391 <!--<div class="px-6 my-6"> 392 <!--<div class="px-6 my-6">
392 <button 393 <button
393 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" 394 class="flex items-center justify-between w-full px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"
394 > 395 >
395 Create account 396 Create account
396 <span class="ml-2" aria-hidden="true">+</span> 397 <span class="ml-2" aria-hidden="true">+</span>
397 </button> 398 </button>
398 </div>--> 399 </div>-->
399 </div> 400 </div>
400 </aside> 401 </aside>
401 <!-- Mobile sidebar --> 402 <!-- Mobile sidebar -->
402 <!-- Backdrop --> 403 <!-- Backdrop -->
403 <div 404 <div
404 x-show="isSideMenuOpen" 405 x-show="isSideMenuOpen"
405 x-transition:enter="transition ease-in-out duration-150" 406 x-transition:enter="transition ease-in-out duration-150"
406 x-transition:enter-start="opacity-0" 407 x-transition:enter-start="opacity-0"
407 x-transition:enter-end="opacity-100" 408 x-transition:enter-end="opacity-100"
408 x-transition:leave="transition ease-in-out duration-150" 409 x-transition:leave="transition ease-in-out duration-150"
409 x-transition:leave-start="opacity-100" 410 x-transition:leave-start="opacity-100"
410 x-transition:leave-end="opacity-0" 411 x-transition:leave-end="opacity-0"
411 class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" 412 class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center"
412 ></div> 413 ></div>
413 <aside 414 <aside
414 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" 415 class="fixed inset-y-0 z-20 flex-shrink-0 w-64 mt-16 overflow-y-auto bg-white dark:bg-gray-800 md:hidden"
415 x-show="isSideMenuOpen" 416 x-show="isSideMenuOpen"
416 x-transition:enter="transition ease-in-out duration-150" 417 x-transition:enter="transition ease-in-out duration-150"
417 x-transition:enter-start="opacity-0 transform -translate-x-20" 418 x-transition:enter-start="opacity-0 transform -translate-x-20"
418 x-transition:enter-end="opacity-100" 419 x-transition:enter-end="opacity-100"
419 x-transition:leave="transition ease-in-out duration-150" 420 x-transition:leave="transition ease-in-out duration-150"
420 x-transition:leave-start="opacity-100" 421 x-transition:leave-start="opacity-100"
421 x-transition:leave-end="opacity-0 transform -translate-x-20" 422 x-transition:leave-end="opacity-0 transform -translate-x-20"
422 @click.away="closeSideMenu" 423 @click.away="closeSideMenu"
423 @keydown.escape="closeSideMenu" 424 @keydown.escape="closeSideMenu"
424 > 425 >
425 <div class="py-4 text-gray-500 dark:text-gray-400"> 426 <div class="py-4 text-gray-500 dark:text-gray-400">
426 <a 427 <a
427 class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" 428 class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200"
428 href="{{ route('admin.index') }}" 429 href="{{ route('admin.index') }}"
429 > 430 >
430 Админка 431 Админка
431 </a> 432 </a>
432 <ul class="mt-6"> 433 <ul class="mt-6">
433 <li class="relative px-6 py-3"> 434 <li class="relative px-6 py-3">
434 <span 435 <span
435 class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" 436 class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg"
436 aria-hidden="true" 437 aria-hidden="true"
437 ></span> 438 ></span>
438 <a 439 <a
439 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" 440 class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100"
440 href="{{ route('admin.index') }}" 441 href="{{ route('admin.index') }}"
441 > 442 >
442 <svg 443 <svg
443 class="w-5 h-5" 444 class="w-5 h-5"
444 aria-hidden="true" 445 aria-hidden="true"
445 fill="none" 446 fill="none"
446 stroke-linecap="round" 447 stroke-linecap="round"
447 stroke-linejoin="round" 448 stroke-linejoin="round"
448 stroke-width="2" 449 stroke-width="2"
449 viewBox="0 0 24 24" 450 viewBox="0 0 24 24"
450 stroke="currentColor" 451 stroke="currentColor"
451 > 452 >
452 <path 453 <path
453 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" 454 d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"
454 ></path> 455 ></path>
455 </svg> 456 </svg>
456 <span class="ml-4">Главная страница</span> 457 <span class="ml-4">Главная страница</span>
457 </a> 458 </a>
458 </li> 459 </li>
459 </ul> 460 </ul>
460 <ul> 461 <ul>
461 <li class="relative px-6 py-3"> 462 <li class="relative px-6 py-3">
462 <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" 463 <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
463 href="{{ route('admin.users') }}"> 464 href="{{ route('admin.users') }}">
464 <svg 465 <svg
465 class="w-5 h-5" 466 class="w-5 h-5"
466 aria-hidden="true" 467 aria-hidden="true"
467 fill="none" 468 fill="none"
468 stroke-linecap="round" 469 stroke-linecap="round"
469 stroke-linejoin="round" 470 stroke-linejoin="round"
470 stroke-width="2" 471 stroke-width="2"
471 viewBox="0 0 24 24" 472 viewBox="0 0 24 24"
472 stroke="currentColor" 473 stroke="currentColor"
473 > 474 >
474 <path 475 <path
475 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" 476 d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"
476 ></path> 477 ></path>
477 </svg> 478 </svg>
478 <span class="ml-4">Пользователи</span> 479 <span class="ml-4">Пользователи</span>
479 </a> 480 </a>
480 </li> 481 </li>
481 <li class="relative px-6 py-3"> 482 <li class="relative px-6 py-3">
482 <a 483 <a
483 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" 484 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
484 href="{{ route('admin.employers') }}" 485 href="{{ route('admin.employers') }}"
485 > 486 >
486 <svg 487 <svg
487 class="w-5 h-5" 488 class="w-5 h-5"
488 aria-hidden="true" 489 aria-hidden="true"
489 fill="none" 490 fill="none"
490 stroke-linecap="round" 491 stroke-linecap="round"
491 stroke-linejoin="round" 492 stroke-linejoin="round"
492 stroke-width="2" 493 stroke-width="2"
493 viewBox="0 0 24 24" 494 viewBox="0 0 24 24"
494 stroke="currentColor" 495 stroke="currentColor"
495 > 496 >
496 <path 497 <path
497 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" 498 d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"
498 ></path> 499 ></path>
499 </svg> 500 </svg>
500 <span class="ml-4">Работодатели</span> 501 <span class="ml-4">Работодатели</span>
501 </a> 502 </a>
502 </li> 503 </li>
503 <li class="relative px-6 py-3"> 504 <li class="relative px-6 py-3">
504 <a 505 <a
505 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" 506 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
506 href="{{ route('admin.workers') }}" 507 href="{{ route('admin.workers') }}"
507 > 508 >
508 <svg 509 <svg
509 class="w-5 h-5" 510 class="w-5 h-5"
510 aria-hidden="true" 511 aria-hidden="true"
511 fill="none" 512 fill="none"
512 stroke-linecap="round" 513 stroke-linecap="round"
513 stroke-linejoin="round" 514 stroke-linejoin="round"
514 stroke-width="2" 515 stroke-width="2"
515 viewBox="0 0 24 24" 516 viewBox="0 0 24 24"
516 stroke="currentColor" 517 stroke="currentColor"
517 > 518 >
518 <path 519 <path
519 d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" 520 d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z"
520 ></path> 521 ></path>
521 <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> 522 <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path>
522 </svg> 523 </svg>
523 <span class="ml-4">Соискатели</span> 524 <span class="ml-4">Соискатели</span>
524 </a> 525 </a>
525 </li> 526 </li>
526 <li class="relative px-6 py-3"> 527 <li class="relative px-6 py-3">
527 <a 528 <a
528 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" 529 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
529 href="{{ route('admin.ad-employers') }}" 530 href="{{ route('admin.ad-employers') }}"
530 > 531 >
531 <svg 532 <svg
532 class="w-5 h-5" 533 class="w-5 h-5"
533 aria-hidden="true" 534 aria-hidden="true"
534 fill="none" 535 fill="none"
535 stroke-linecap="round" 536 stroke-linecap="round"
536 stroke-linejoin="round" 537 stroke-linejoin="round"
537 stroke-width="2" 538 stroke-width="2"
538 viewBox="0 0 24 24" 539 viewBox="0 0 24 24"
539 stroke="currentColor" 540 stroke="currentColor"
540 > 541 >
541 <path 542 <path
542 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" 543 d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"
543 ></path> 544 ></path>
544 </svg> 545 </svg>
545 <span class="ml-4">Вакансии</span> 546 <span class="ml-4">Вакансии</span>
546 </a> 547 </a>
547 </li> 548 </li>
548 <li class="relative px-6 py-3"> 549 <li class="relative px-6 py-3">
549 <a 550 <a
550 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" 551 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
551 href="{{ route('admin.messages') }}" 552 href="{{ route('admin.messages') }}"
552 > 553 >
553 <svg 554 <svg
554 class="w-5 h-5" 555 class="w-5 h-5"
555 aria-hidden="true" 556 aria-hidden="true"
556 fill="none" 557 fill="none"
557 stroke-linecap="round" 558 stroke-linecap="round"
558 stroke-linejoin="round" 559 stroke-linejoin="round"
559 stroke-width="2" 560 stroke-width="2"
560 viewBox="0 0 24 24" 561 viewBox="0 0 24 24"
561 stroke="currentColor" 562 stroke="currentColor"
562 > 563 >
563 <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> 564 <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path>
564 </svg> 565 </svg>
565 <span class="ml-4">Сообщения</span> 566 <span class="ml-4">Сообщения</span>
566 </a> 567 </a>
567 </li> 568 </li>
568 <li class="relative px-6 py-3"> 569 <li class="relative px-6 py-3">
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" 570 <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
570 href="{{ route('admin.groups') }}"> 571 href="{{ route('admin.groups') }}">
571 <svg 572 <svg
572 class="w-5 h-5" 573 class="w-5 h-5"
573 aria-hidden="true" 574 aria-hidden="true"
574 fill="none" 575 fill="none"
575 stroke-linecap="round" 576 stroke-linecap="round"
576 stroke-linejoin="round" 577 stroke-linejoin="round"
577 stroke-width="2" 578 stroke-width="2"
578 viewBox="0 0 24 24" 579 viewBox="0 0 24 24"
579 stroke="currentColor" 580 stroke="currentColor"
580 > 581 >
581 <path 582 <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 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> 584 ></path>
584 </svg> 585 </svg>
585 <span class="ml-4">Группы пользователей</span> 586 <span class="ml-4">Группы пользователей</span>
586 </a> 587 </a>
587 </li> 588 </li>
588 <li class="relative px-6 py-3"> 589 <li class="relative px-6 py-3">
589 <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" 590 <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
590 href="{{ route('admin.roles') }}"> 591 href="{{ route('admin.roles') }}">
591 <svg 592 <svg
592 class="w-5 h-5" 593 class="w-5 h-5"
593 aria-hidden="true" 594 aria-hidden="true"
594 fill="none" 595 fill="none"
595 stroke-linecap="round" 596 stroke-linecap="round"
596 stroke-linejoin="round" 597 stroke-linejoin="round"
597 stroke-width="2" 598 stroke-width="2"
598 viewBox="0 0 24 24" 599 viewBox="0 0 24 24"
599 stroke="currentColor" 600 stroke="currentColor"
600 > 601 >
601 <path 602 <path
602 d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" 603 d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"
603 ></path> 604 ></path>
604 </svg> 605 </svg>
605 <span class="ml-4">Роли пользователей</span> 606 <span class="ml-4">Роли пользователей</span>
606 </a> 607 </a>
607 </li> 608 </li>
608 <li class="relative px-6 py-3"> 609 <li class="relative px-6 py-3">
609 <a 610 <a
610 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" 611 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
611 href="{{ route('admin.statics') }}" 612 href="{{ route('admin.statics') }}"
612 > 613 >
613 <svg 614 <svg
614 class="w-5 h-5" 615 class="w-5 h-5"
615 aria-hidden="true" 616 aria-hidden="true"
616 fill="none" 617 fill="none"
617 stroke-linecap="round" 618 stroke-linecap="round"
618 stroke-linejoin="round" 619 stroke-linejoin="round"
619 stroke-width="2" 620 stroke-width="2"
620 viewBox="0 0 24 24" 621 viewBox="0 0 24 24"
621 stroke="currentColor" 622 stroke="currentColor"
622 > 623 >
623 <path 624 <path
624 d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" 625 d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z"
625 ></path> 626 ></path>
626 <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> 627 <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path>
627 </svg> 628 </svg>
628 <span class="ml-4">Статистика</span> 629 <span class="ml-4">Статистика</span>
629 </a> 630 </a>
630 </li> 631 </li>
631 <li class="relative px-6 py-3"> 632 <li class="relative px-6 py-3">
632 <a 633 <a
633 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" 634 class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
634 href="{{ route('admin.messages') }}" 635 href="{{ route('admin.messages') }}"
635 > 636 >
636 <svg 637 <svg
637 class="w-5 h-5" 638 class="w-5 h-5"
638 aria-hidden="true" 639 aria-hidden="true"
639 fill="none" 640 fill="none"
640 stroke-linecap="round" 641 stroke-linecap="round"
641 stroke-linejoin="round" 642 stroke-linejoin="round"
642 stroke-width="2" 643 stroke-width="2"
643 viewBox="0 0 24 24" 644 viewBox="0 0 24 24"
644 stroke="currentColor" 645 stroke="currentColor"
645 > 646 >
646 <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> 647 <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path>
647 </svg> 648 </svg>
648 <span class="ml-4">Сообщения</span> 649 <span class="ml-4">Сообщения</span>
649 </a> 650 </a>
650 </li> 651 </li>
651 <!-- Справочники --> 652 <!-- Справочники -->
652 <li class="relative px-6 py-3" x-data="{ open2: false }"> 653 <li class="relative px-6 py-3" x-data="{ open2: false }">
653 <button 654 <button
654 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" 655 class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
655 @click="open2=!open2" 656 @click="open2=!open2"
656 aria-haspopup="true"> 657 aria-haspopup="true">
657 <span class="inline-flex items-center"> 658 <span class="inline-flex items-center">
658 <svg 659 <svg
659 class="w-5 h-5" 660 class="w-5 h-5"
660 aria-hidden="true" 661 aria-hidden="true"
661 fill="none" 662 fill="none"
662 stroke-linecap="round" 663 stroke-linecap="round"
663 stroke-linejoin="round" 664 stroke-linejoin="round"
664 stroke-width="2" 665 stroke-width="2"
665 viewBox="0 0 24 24" 666 viewBox="0 0 24 24"
666 stroke="currentColor"> 667 stroke="currentColor">
667 <path 668 <path
668 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" 669 d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"
669 ></path> 670 ></path>
670 </svg> 671 </svg>
671 <span class="ml-4">Справочники</span> 672 <span class="ml-4">Справочники</span>
672 </span> 673 </span>
673 <svg 674 <svg
674 class="w-4 h-4" 675 class="w-4 h-4"
675 aria-hidden="true" 676 aria-hidden="true"
676 fill="currentColor" 677 fill="currentColor"
677 viewBox="0 0 20 20" 678 viewBox="0 0 20 20"
678 > 679 >
679 <path 680 <path
680 fill-rule="evenodd" 681 fill-rule="evenodd"
681 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" 682 d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
682 clip-rule="evenodd" 683 clip-rule="evenodd"
683 ></path> 684 ></path>
684 </svg> 685 </svg>
685 </button> 686 </button>
686 <template x-if="open2"> 687 <template x-if="open2">
687 <ul 688 <ul
688 x-transition:enter="transition-all ease-in-out duration-300" 689 x-transition:enter="transition-all ease-in-out duration-300"
689 x-transition:enter-start="opacity-25 max-h-0" 690 x-transition:enter-start="opacity-25 max-h-0"
690 x-transition:enter-end="opacity-100 max-h-xl" 691 x-transition:enter-end="opacity-100 max-h-xl"
691 x-transition:leave="transition-all ease-in-out duration-300" 692 x-transition:leave="transition-all ease-in-out duration-300"
692 x-transition:leave-start="opacity-100 max-h-xl" 693 x-transition:leave-start="opacity-100 max-h-xl"
693 x-transition:leave-end="opacity-0 max-h-0" 694 x-transition:leave-end="opacity-0 max-h-0"
694 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" 695 class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900"
695 aria-label="submenu" 696 aria-label="submenu"
696 > 697 >
697 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 698 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
698 <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> 699 <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a>
699 </li> 700 </li>
700 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 701 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
701 <a class="w-full" href="{{ route('admin.categories.index') }}">Категории</a> 702 <a class="w-full" href="{{ route('admin.categories.index') }}">Категории</a>
702 </li> 703 </li>
703 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 704 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
704 <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> 705 <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a>
705 </li> 706 </li>
706 707
707 </ul> 708 </ul>
708 </template> 709 </template>
709 </li> 710 </li>
710 711
711 712
712 <!-- Редактор --> 713 <!-- Редактор -->
713 <li class="relative px-6 py-3"> 714 <li class="relative px-6 py-3">
714 <button 715 <button
715 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" 716 class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"
716 @click="togglePagesMenu" 717 @click="togglePagesMenu"
717 aria-haspopup="true" 718 aria-haspopup="true"
718 > 719 >
719 <span class="inline-flex items-center"> 720 <span class="inline-flex items-center">
720 <svg 721 <svg
721 class="w-5 h-5" 722 class="w-5 h-5"
722 aria-hidden="true" 723 aria-hidden="true"
723 fill="none" 724 fill="none"
724 stroke-linecap="round" 725 stroke-linecap="round"
725 stroke-linejoin="round" 726 stroke-linejoin="round"
726 stroke-width="2" 727 stroke-width="2"
727 viewBox="0 0 24 24" 728 viewBox="0 0 24 24"
728 stroke="currentColor" 729 stroke="currentColor"
729 > 730 >
730 <path 731 <path
731 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" 732 d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"
732 ></path> 733 ></path>
733 </svg> 734 </svg>
734 <span class="ml-4">Редактор</span> 735 <span class="ml-4">Редактор</span>
735 </span> 736 </span>
736 <svg 737 <svg
737 class="w-4 h-4" 738 class="w-4 h-4"
738 aria-hidden="true" 739 aria-hidden="true"
739 fill="currentColor" 740 fill="currentColor"
740 viewBox="0 0 20 20" 741 viewBox="0 0 20 20"
741 > 742 >
742 <path 743 <path
743 fill-rule="evenodd" 744 fill-rule="evenodd"
744 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" 745 d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
745 clip-rule="evenodd" 746 clip-rule="evenodd"
746 ></path> 747 ></path>
747 </svg> 748 </svg>
748 </button> 749 </button>
749 <template x-if="isPagesMenuOpen"> 750 <template x-if="isPagesMenuOpen">
750 <ul 751 <ul
751 x-transition:enter="transition-all ease-in-out duration-300" 752 x-transition:enter="transition-all ease-in-out duration-300"
752 x-transition:enter-start="opacity-25 max-h-0" 753 x-transition:enter-start="opacity-25 max-h-0"
753 x-transition:enter-end="opacity-100 max-h-xl" 754 x-transition:enter-end="opacity-100 max-h-xl"
754 x-transition:leave="transition-all ease-in-out duration-300" 755 x-transition:leave="transition-all ease-in-out duration-300"
755 x-transition:leave-start="opacity-100 max-h-xl" 756 x-transition:leave-start="opacity-100 max-h-xl"
756 x-transition:leave-end="opacity-0 max-h-0" 757 x-transition:leave-end="opacity-0 max-h-0"
757 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" 758 class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900"
758 aria-label="submenu" 759 aria-label="submenu"
759 > 760 >
760 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 761 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
761 <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> 762 <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a>
762 </li> 763 </li>
763 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 764 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
764 <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> 765 <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a>
765 </li> 766 </li>
766 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 767 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
767 <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a> 768 <a class="w-full" href="{{ route('admin.reclames') }}">Реклама</a>
768 </li> 769 </li>
769 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 770 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
770 <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> 771 <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a>
771 </li> 772 </li>
772 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 773 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
773 <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> 774 <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a>
774 </li> 775 </li>
775 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 776 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
776 <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> 777 <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a>
777 </li> 778 </li>
778 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200"> 779 <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200">
779 <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> 780 <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a>
780 </li> 781 </li>
781 782
782 </ul> 783 </ul>
783 </template> 784 </template>
784 </li> 785 </li>
785 </ul> 786 </ul>
786 <!--<div class="px-6 my-6"> 787 <!--<div class="px-6 my-6">
787 <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"> 788 <button class="flex items-center justify-between px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple">
788 Create account 789 Create account
789 <span class="ml-2" aria-hidden="true">+</span> 790 <span class="ml-2" aria-hidden="true">+</span>
790 </button> 791 </button>
791 </div>--> 792 </div>-->
792 </div> 793 </div>
793 </aside> 794 </aside>
794 <div class="flex flex-col flex-1 w-full"> 795 <div class="flex flex-col flex-1 w-full">
795 <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> 796 <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800">
796 <div 797 <div
797 class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" 798 class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300"
798 > 799 >
799 <!-- Mobile hamburger --> 800 <!-- Mobile hamburger -->
800 <button 801 <button
801 class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" 802 class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple"
802 @click="toggleSideMenu" 803 @click="toggleSideMenu"
803 aria-label="Menu" 804 aria-label="Menu"
804 > 805 >
805 <svg 806 <svg
806 class="w-6 h-6" 807 class="w-6 h-6"
807 aria-hidden="true" 808 aria-hidden="true"
808 fill="currentColor" 809 fill="currentColor"
809 viewBox="0 0 20 20" 810 viewBox="0 0 20 20"
810 > 811 >
811 <path 812 <path
812 fill-rule="evenodd" 813 fill-rule="evenodd"
813 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" 814 d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"
814 clip-rule="evenodd" 815 clip-rule="evenodd"
815 ></path> 816 ></path>
816 </svg> 817 </svg>
817 </button> 818 </button>
818 <!-- Search input --> 819 <!-- Search input -->
819 <div class="flex justify-center flex-1 lg:mr-32"> 820 <div class="flex justify-center flex-1 lg:mr-32">
820 <div 821 <div
821 class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" 822 class="relative w-full max-w-xl mr-6 focus-within:text-purple-500"
822 > 823 >
823 824
824 @yield('search') 825 @yield('search')
825 </div> 826 </div>
826 </div> 827 </div>
827 <ul class="flex items-center flex-shrink-0 space-x-6"> 828 <ul class="flex items-center flex-shrink-0 space-x-6">
828 <!-- Theme toggler --> 829 <!-- Theme toggler -->
829 <li class="flex"> 830 <li class="flex">
830 <button 831 <button
831 class="rounded-md focus:outline-none focus:shadow-outline-purple" 832 class="rounded-md focus:outline-none focus:shadow-outline-purple"
832 @click="toggleTheme" 833 @click="toggleTheme"
833 aria-label="Toggle color mode" 834 aria-label="Toggle color mode"
834 > 835 >
835 <template x-if="!dark"> 836 <template x-if="!dark">
836 <svg 837 <svg
837 class="w-5 h-5" 838 class="w-5 h-5"
838 aria-hidden="true" 839 aria-hidden="true"
839 fill="currentColor" 840 fill="currentColor"
840 viewBox="0 0 20 20" 841 viewBox="0 0 20 20"
841 > 842 >
842 <path 843 <path
843 d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" 844 d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"
844 ></path> 845 ></path>
845 </svg> 846 </svg>
846 </template> 847 </template>
847 <template x-if="dark"> 848 <template x-if="dark">
848 <svg 849 <svg
849 class="w-5 h-5" 850 class="w-5 h-5"
850 aria-hidden="true" 851 aria-hidden="true"
851 fill="currentColor" 852 fill="currentColor"
852 viewBox="0 0 20 20" 853 viewBox="0 0 20 20"
853 > 854 >
854 <path 855 <path
855 fill-rule="evenodd" 856 fill-rule="evenodd"
856 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" 857 d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
857 clip-rule="evenodd" 858 clip-rule="evenodd"
858 ></path> 859 ></path>
859 </svg> 860 </svg>
860 </template> 861 </template>
861 </button> 862 </button>
862 </li> 863 </li>
863 <!-- Notifications menu --> 864 <!-- Notifications menu -->
864 <li class="relative"> 865 <li class="relative">
865 <button 866 <button
866 class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" 867 class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple"
867 @click="toggleNotificationsMenu" 868 @click="toggleNotificationsMenu"
868 @keydown.escape="closeNotificationsMenu" 869 @keydown.escape="closeNotificationsMenu"
869 aria-label="Notifications" 870 aria-label="Notifications"
870 aria-haspopup="true" 871 aria-haspopup="true"
871 > 872 >
872 <svg 873 <svg
873 class="w-5 h-5" 874 class="w-5 h-5"
874 aria-hidden="true" 875 aria-hidden="true"
875 fill="currentColor" 876 fill="currentColor"
876 viewBox="0 0 20 20" 877 viewBox="0 0 20 20"
877 > 878 >
878 <path 879 <path
879 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" 880 d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z"
880 ></path> 881 ></path>
881 </svg> 882 </svg>
882 <!-- Notification badge --> 883 <!-- Notification badge -->
883 <span 884 <span
884 aria-hidden="true" 885 aria-hidden="true"
885 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" 886 class="absolute top-0 right-0 inline-block w-3 h-3 transform translate-x-1 -translate-y-1 bg-red-600 border-2 border-white rounded-full dark:border-gray-800"
886 ></span> 887 ></span>
887 </button> 888 </button>
888 <template x-if="isNotificationsMenuOpen"> 889 <template x-if="isNotificationsMenuOpen">
889 <ul 890 <ul
890 x-transition:leave="transition ease-in duration-150" 891 x-transition:leave="transition ease-in duration-150"
891 x-transition:leave-start="opacity-100" 892 x-transition:leave-start="opacity-100"
892 x-transition:leave-end="opacity-0" 893 x-transition:leave-end="opacity-0"
893 @click.away="closeNotificationsMenu" 894 @click.away="closeNotificationsMenu"
894 @keydown.escape="closeNotificationsMenu" 895 @keydown.escape="closeNotificationsMenu"
895 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" 896 class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:text-gray-300 dark:border-gray-700 dark:bg-gray-700"
896 > 897 >
897 <li class="flex"> 898 <li class="flex">
898 <a 899 <a
899 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" 900 class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200"
900 href="{{ route('admin.admin-messages') }}" 901 href="{{ route('admin.admin-messages') }}"
901 > 902 >
902 <span>Сообщения</span> 903 <span>Сообщения</span>
904 @if($MsgCount > 0)
903 <span 905 <span
904 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" 906 class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600"
905 > 907 >
906 13 908
907 </span> 909 {{ $MsgCount }}
910 </span>
911 @endif
908 </a> 912 </a>
909 </li> 913 </li>
910 <!--<li class="flex"> 914 <!--<li class="flex">
911 <a 915 <a
912 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" 916 class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200"
913 href="#" 917 href="#"
914 > 918 >
915 <span>Логи</span> 919 <span>Логи</span>
916 </a> 920 </a>
917 </li>--> 921 </li>-->
918 </ul> 922 </ul>
919 </template> 923 </template>
920 </li> 924 </li>
921 <!-- Profile menu --> 925 <!-- Profile menu -->
922 <li class="relative"> 926 <li class="relative">
923 <button 927 <button
924 class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" 928 class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none"
925 @click="toggleProfileMenu" 929 @click="toggleProfileMenu"
926 @keydown.escape="closeProfileMenu" 930 @keydown.escape="closeProfileMenu"
927 aria-label="Account" 931 aria-label="Account"
928 aria-haspopup="true" 932 aria-haspopup="true"
929 > 933 >
930 <img 934 <img
931 class="object-cover w-8 h-8 rounded-full" 935 class="object-cover w-8 h-8 rounded-full"
932 src="{{ asset('assets/img/profile.jpg') }}" 936 src="{{ asset('assets/img/profile.jpg') }}"
933 alt="" 937 alt=""
934 aria-hidden="true" 938 aria-hidden="true"
935 /> 939 />
936 </button> 940 </button>
937 <template x-if="isProfileMenuOpen"> 941 <template x-if="isProfileMenuOpen">
938 <ul 942 <ul
939 x-transition:leave="transition ease-in duration-150" 943 x-transition:leave="transition ease-in duration-150"
940 x-transition:leave-start="opacity-100" 944 x-transition:leave-start="opacity-100"
941 x-transition:leave-end="opacity-0" 945 x-transition:leave-end="opacity-0"
942 @click.away="closeProfileMenu" 946 @click.away="closeProfileMenu"
943 @keydown.escape="closeProfileMenu" 947 @keydown.escape="closeProfileMenu"
944 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" 948 class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:border-gray-700 dark:text-gray-300 dark:bg-gray-700"
945 aria-label="submenu" 949 aria-label="submenu"
946 > 950 >
947 <li class="flex"> 951 <li class="flex">
948 <a 952 <a
949 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" 953 class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200"
950 href="{{ route('admin.profile') }}" 954 href="{{ route('admin.profile') }}"
951 > 955 >
952 <svg 956 <svg
953 class="w-4 h-4 mr-3" 957 class="w-4 h-4 mr-3"
954 aria-hidden="true" 958 aria-hidden="true"
955 fill="none" 959 fill="none"
956 stroke-linecap="round" 960 stroke-linecap="round"
957 stroke-linejoin="round" 961 stroke-linejoin="round"
958 stroke-width="2" 962 stroke-width="2"
959 viewBox="0 0 24 24" 963 viewBox="0 0 24 24"
960 stroke="currentColor" 964 stroke="currentColor"
961 > 965 >
962 <path 966 <path
963 d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" 967 d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"
964 ></path> 968 ></path>
965 </svg> 969 </svg>
966 <span>Профиль</span> 970 <span>Профиль</span>
967 </a> 971 </a>
968 </li> 972 </li>
969 <li class="flex"> 973 <li class="flex">
970 <a 974 <a
971 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" 975 class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200"
972 href="{{ route('admin.config') }}" 976 href="{{ route('admin.config') }}"
973 > 977 >
974 <svg 978 <svg
975 class="w-4 h-4 mr-3" 979 class="w-4 h-4 mr-3"
976 aria-hidden="true" 980 aria-hidden="true"
977 fill="none" 981 fill="none"
978 stroke-linecap="round" 982 stroke-linecap="round"
979 stroke-linejoin="round" 983 stroke-linejoin="round"
980 stroke-width="2" 984 stroke-width="2"
981 viewBox="0 0 24 24" 985 viewBox="0 0 24 24"
982 stroke="currentColor" 986 stroke="currentColor"
983 > 987 >
984 <path 988 <path
985 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" 989 d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"
986 ></path> 990 ></path>
987 <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> 991 <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
988 </svg> 992 </svg>
989 <span>Настройки</span> 993 <span>Настройки</span>
990 </a> 994 </a>
991 </li> 995 </li>
992 <li class="flex"> 996 <li class="flex">
993 <a 997 <a
994 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" 998 class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200"
995 href="{{ route('admin.logout') }}" 999 href="{{ route('admin.logout') }}"
996 > 1000 >
997 <svg 1001 <svg
998 class="w-4 h-4 mr-3" 1002 class="w-4 h-4 mr-3"
999 aria-hidden="true" 1003 aria-hidden="true"
1000 fill="none" 1004 fill="none"
1001 stroke-linecap="round" 1005 stroke-linecap="round"
1002 stroke-linejoin="round" 1006 stroke-linejoin="round"
1003 stroke-width="2" 1007 stroke-width="2"
1004 viewBox="0 0 24 24" 1008 viewBox="0 0 24 24"
1005 stroke="currentColor" 1009 stroke="currentColor"
1006 > 1010 >
1007 <path 1011 <path
1008 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" 1012 d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"
1009 ></path> 1013 ></path>
1010 </svg> 1014 </svg>
1011 <span>Выход</span> 1015 <span>Выход</span>
1012 </a> 1016 </a>
1013 </li> 1017 </li>
1014 </ul> 1018 </ul>
1015 </template> 1019 </template>
1016 </li> 1020 </li>
1017 </ul> 1021 </ul>
1018 </div> 1022 </div>
1019 </header> 1023 </header>
1020 <main class="h-full overflow-y-auto"> 1024 <main class="h-full overflow-y-auto">
1021 <div class="container px-6 mx-auto grid"> 1025 <div class="container px-6 mx-auto grid">
1022 <h2 1026 <h2
1023 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" 1027 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"
1024 > 1028 >
1025 {{$title}} 1029 {{$title}}
1026 </h2> 1030 </h2>
1027 <!-- CTA --> 1031 <!-- CTA -->
1028 <a 1032 <a
1029 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" 1033 class="flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple"
1030 href="{{ route('admin.admin-users') }}" 1034 href="{{ route('admin.admin-users') }}"
1031 > 1035 >
1032 <div class="flex items-center"> 1036 <div class="flex items-center">
1033 <svg 1037 <svg
1034 class="w-5 h-5 mr-2" 1038 class="w-5 h-5 mr-2"
1035 fill="currentColor" 1039 fill="currentColor"
1036 viewBox="0 0 20 20" 1040 viewBox="0 0 20 20"
1037 > 1041 >
1038 <path 1042 <path
1039 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" 1043 d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"
1040 ></path> 1044 ></path>
1041 </svg> 1045 </svg>
1042 <span>Вход в админку только для пользователей-админов</span> 1046 <span>Вход в админку только для пользователей-админов</span>
1043 </div> 1047 </div>
1044 <span>Список админов &RightArrow;</span> 1048 <span>Список админов &RightArrow;</span>
1045 </a> 1049 </a>
1046 1050
1047 @if ($message = Session::get('success')) 1051 @if ($message = Session::get('success'))
1048 <section> 1052 <section>
1049 <div class="alert alert-success alert-dismissible mt-0" role="alert"> 1053 <div class="alert alert-success alert-dismissible mt-0" role="alert">
1050 <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> 1054 <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть">
1051 <span aria-hidden="true">&times;</span> 1055 <span aria-hidden="true">&times;</span>
1052 </button> 1056 </button>
1053 {{ $message }} 1057 {{ $message }}
1054 </div> 1058 </div>
1055 </section> 1059 </section>
1056 @endif 1060 @endif
1057 1061
1058 @if ($errors->any()) 1062 @if ($errors->any())
1059 <section> 1063 <section>
1060 <div class="alert alert-danger alert-dismissible mt-4" role="alert"> 1064 <div class="alert alert-danger alert-dismissible mt-4" role="alert">
1061 <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> 1065 <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть">
1062 <span aria-hidden="true">&times;</span> 1066 <span aria-hidden="true">&times;</span>
1063 </button> 1067 </button>
1064 <ul class="mb-0"> 1068 <ul class="mb-0">
1065 @foreach ($errors->all() as $error) 1069 @foreach ($errors->all() as $error)
1066 <li>{{ $error }}</li> 1070 <li>{{ $error }}</li>
1067 @endforeach 1071 @endforeach
1068 </ul> 1072 </ul>
1069 </div> 1073 </div>
1070 </section> 1074 </section>
1071 @endif 1075 @endif
1072 1076
1073 @yield('content') 1077 @yield('content')
1074 1078
1075 <!-- Cards 1079 <!-- Cards
1076 <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> 1080 <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4">
1077 1081
1078 <div 1082 <div
1079 class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" 1083 class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"
1080 > 1084 >
1081 <div 1085 <div
1082 class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" 1086 class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"
1083 > 1087 >
1084 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> 1088 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
1085 <path 1089 <path
1086 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" 1090 d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"
1087 ></path> 1091 ></path>
1088 </svg> 1092 </svg>
1089 </div> 1093 </div>
1090 <div> 1094 <div>
1091 <p 1095 <p
1092 class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" 1096 class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"
1093 > 1097 >
1094 Total clients 1098 Total clients
1095 </p> 1099 </p>
1096 <p 1100 <p
1097 class="text-lg font-semibold text-gray-700 dark:text-gray-200" 1101 class="text-lg font-semibold text-gray-700 dark:text-gray-200"
1098 > 1102 >
1099 6389 1103 6389
1100 </p> 1104 </p>
1101 </div> 1105 </div>
1102 </div> 1106 </div>
1103 1107
1104 <div 1108 <div
1105 class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" 1109 class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"
1106 > 1110 >
1107 <div 1111 <div
1108 class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" 1112 class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500"
1109 > 1113 >
1110 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> 1114 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
1111 <path 1115 <path
1112 fill-rule="evenodd" 1116 fill-rule="evenodd"
1113 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" 1117 d="M4 4a2 2 0 00-2 2v4a2 2 0 002 2V6h10a2 2 0 00-2-2H4zm2 6a2 2 0 012-2h8a2 2 0 012 2v4a2 2 0 01-2 2H8a2 2 0 01-2-2v-4zm6 4a2 2 0 100-4 2 2 0 000 4z"
1114 clip-rule="evenodd" 1118 clip-rule="evenodd"
1115 ></path> 1119 ></path>
1116 </svg> 1120 </svg>
1117 </div> 1121 </div>
1118 <div> 1122 <div>
1119 <p 1123 <p
1120 class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" 1124 class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"
1121 > 1125 >
1122 Account balance 1126 Account balance
1123 </p> 1127 </p>
1124 <p 1128 <p
1125 class="text-lg font-semibold text-gray-700 dark:text-gray-200" 1129 class="text-lg font-semibold text-gray-700 dark:text-gray-200"
1126 > 1130 >
1127 $ 46,760.89 1131 $ 46,760.89
1128 </p> 1132 </p>
1129 </div> 1133 </div>
1130 </div> 1134 </div>
1131 1135
1132 <div 1136 <div
1133 class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" 1137 class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"
1134 > 1138 >
1135 <div 1139 <div
1136 class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" 1140 class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500"
1137 > 1141 >
1138 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> 1142 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
1139 <path 1143 <path
1140 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" 1144 d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"
1141 ></path> 1145 ></path>
1142 </svg> 1146 </svg>
1143 </div> 1147 </div>
1144 <div> 1148 <div>
1145 <p 1149 <p
1146 class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" 1150 class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"
1147 > 1151 >
1148 New sales 1152 New sales
1149 </p> 1153 </p>
1150 <p 1154 <p
1151 class="text-lg font-semibold text-gray-700 dark:text-gray-200" 1155 class="text-lg font-semibold text-gray-700 dark:text-gray-200"
1152 > 1156 >
1153 376 1157 376
1154 </p> 1158 </p>
1155 </div> 1159 </div>
1156 </div> 1160 </div>
1157 1161
1158 <div 1162 <div
1159 class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" 1163 class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"
1160 > 1164 >
1161 <div 1165 <div
1162 class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" 1166 class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500"
1163 > 1167 >
1164 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> 1168 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
1165 <path 1169 <path
1166 fill-rule="evenodd" 1170 fill-rule="evenodd"
1167 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" 1171 d="M18 5v8a2 2 0 01-2 2h-5l-5 4v-4H4a2 2 0 01-2-2V5a2 2 0 012-2h12a2 2 0 012 2zM7 8H5v2h2V8zm2 0h2v2H9V8zm6 0h-2v2h2V8z"
1168 clip-rule="evenodd" 1172 clip-rule="evenodd"
1169 ></path> 1173 ></path>
1170 </svg> 1174 </svg>
1171 </div> 1175 </div>
1172 <div> 1176 <div>
1173 <p 1177 <p
1174 class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" 1178 class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"
1175 > 1179 >
1176 Pending contacts 1180 Pending contacts
1177 </p> 1181 </p>
1178 <p 1182 <p
1179 class="text-lg font-semibold text-gray-700 dark:text-gray-200" 1183 class="text-lg font-semibold text-gray-700 dark:text-gray-200"
1180 > 1184 >
1181 35 1185 35
1182 </p> 1186 </p>
1183 </div> 1187 </div>
1184 </div> 1188 </div>
1185 </div> 1189 </div>
1186 --> 1190 -->
1187 <!-- New Table 1191 <!-- New Table
1188 <div class="w-full overflow-hidden rounded-lg shadow-xs"> 1192 <div class="w-full overflow-hidden rounded-lg shadow-xs">
1189 <div class="w-full overflow-x-auto"> 1193 <div class="w-full overflow-x-auto">
1190 <table class="w-full whitespace-no-wrap"> 1194 <table class="w-full whitespace-no-wrap">
1191 <thead> 1195 <thead>
1192 <tr 1196 <tr
1193 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" 1197 class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800"
1194 > 1198 >
1195 <th class="px-4 py-3">Client</th> 1199 <th class="px-4 py-3">Client</th>
1196 <th class="px-4 py-3">Amount</th> 1200 <th class="px-4 py-3">Amount</th>
1197 <th class="px-4 py-3">Status</th> 1201 <th class="px-4 py-3">Status</th>
1198 <th class="px-4 py-3">Date</th> 1202 <th class="px-4 py-3">Date</th>
1199 </tr> 1203 </tr>
1200 </thead> 1204 </thead>
1201 <tbody 1205 <tbody
1202 class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" 1206 class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"
1203 > 1207 >
1204 <tr class="text-gray-700 dark:text-gray-400"> 1208 <tr class="text-gray-700 dark:text-gray-400">
1205 <td class="px-4 py-3"> 1209 <td class="px-4 py-3">
1206 <div class="flex items-center text-sm"> 1210 <div class="flex items-center text-sm">
1207 1211
1208 <div 1212 <div
1209 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1213 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1210 > 1214 >
1211 <img 1215 <img
1212 class="object-cover w-full h-full rounded-full" 1216 class="object-cover w-full h-full rounded-full"
1213 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" 1217 src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ"
1214 alt="" 1218 alt=""
1215 loading="lazy" 1219 loading="lazy"
1216 /> 1220 />
1217 <div 1221 <div
1218 class="absolute inset-0 rounded-full shadow-inner" 1222 class="absolute inset-0 rounded-full shadow-inner"
1219 aria-hidden="true" 1223 aria-hidden="true"
1220 ></div> 1224 ></div>
1221 </div> 1225 </div>
1222 <div> 1226 <div>
1223 <p class="font-semibold">Hans Burger</p> 1227 <p class="font-semibold">Hans Burger</p>
1224 <p class="text-xs text-gray-600 dark:text-gray-400"> 1228 <p class="text-xs text-gray-600 dark:text-gray-400">
1225 10x Developer 1229 10x Developer
1226 </p> 1230 </p>
1227 </div> 1231 </div>
1228 </div> 1232 </div>
1229 </td> 1233 </td>
1230 <td class="px-4 py-3 text-sm"> 1234 <td class="px-4 py-3 text-sm">
1231 $ 863.45 1235 $ 863.45
1232 </td> 1236 </td>
1233 <td class="px-4 py-3 text-xs"> 1237 <td class="px-4 py-3 text-xs">
1234 <span 1238 <span
1235 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" 1239 class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"
1236 > 1240 >
1237 Approved 1241 Approved
1238 </span> 1242 </span>
1239 </td> 1243 </td>
1240 <td class="px-4 py-3 text-sm"> 1244 <td class="px-4 py-3 text-sm">
1241 6/10/2020 1245 6/10/2020
1242 </td> 1246 </td>
1243 </tr> 1247 </tr>
1244 1248
1245 <tr class="text-gray-700 dark:text-gray-400"> 1249 <tr class="text-gray-700 dark:text-gray-400">
1246 <td class="px-4 py-3"> 1250 <td class="px-4 py-3">
1247 <div class="flex items-center text-sm"> 1251 <div class="flex items-center text-sm">
1248 1252
1249 <div 1253 <div
1250 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1254 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1251 > 1255 >
1252 <img 1256 <img
1253 class="object-cover w-full h-full rounded-full" 1257 class="object-cover w-full h-full rounded-full"
1254 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" 1258 src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&facepad=3&fit=facearea&s=707b9c33066bf8808c934c8ab394dff6"
1255 alt="" 1259 alt=""
1256 loading="lazy" 1260 loading="lazy"
1257 /> 1261 />
1258 <div 1262 <div
1259 class="absolute inset-0 rounded-full shadow-inner" 1263 class="absolute inset-0 rounded-full shadow-inner"
1260 aria-hidden="true" 1264 aria-hidden="true"
1261 ></div> 1265 ></div>
1262 </div> 1266 </div>
1263 <div> 1267 <div>
1264 <p class="font-semibold">Jolina Angelie</p> 1268 <p class="font-semibold">Jolina Angelie</p>
1265 <p class="text-xs text-gray-600 dark:text-gray-400"> 1269 <p class="text-xs text-gray-600 dark:text-gray-400">
1266 Unemployed 1270 Unemployed
1267 </p> 1271 </p>
1268 </div> 1272 </div>
1269 </div> 1273 </div>
1270 </td> 1274 </td>
1271 <td class="px-4 py-3 text-sm"> 1275 <td class="px-4 py-3 text-sm">
1272 $ 369.95 1276 $ 369.95
1273 </td> 1277 </td>
1274 <td class="px-4 py-3 text-xs"> 1278 <td class="px-4 py-3 text-xs">
1275 <span 1279 <span
1276 class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" 1280 class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"
1277 > 1281 >
1278 Pending 1282 Pending
1279 </span> 1283 </span>
1280 </td> 1284 </td>
1281 <td class="px-4 py-3 text-sm"> 1285 <td class="px-4 py-3 text-sm">
1282 6/10/2020 1286 6/10/2020
1283 </td> 1287 </td>
1284 </tr> 1288 </tr>
1285 1289
1286 <tr class="text-gray-700 dark:text-gray-400"> 1290 <tr class="text-gray-700 dark:text-gray-400">
1287 <td class="px-4 py-3"> 1291 <td class="px-4 py-3">
1288 <div class="flex items-center text-sm"> 1292 <div class="flex items-center text-sm">
1289 1293
1290 <div 1294 <div
1291 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1295 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1292 > 1296 >
1293 <img 1297 <img
1294 class="object-cover w-full h-full rounded-full" 1298 class="object-cover w-full h-full rounded-full"
1295 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" 1299 src="https://images.unsplash.com/photo-1551069613-1904dbdcda11?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ"
1296 alt="" 1300 alt=""
1297 loading="lazy" 1301 loading="lazy"
1298 /> 1302 />
1299 <div 1303 <div
1300 class="absolute inset-0 rounded-full shadow-inner" 1304 class="absolute inset-0 rounded-full shadow-inner"
1301 aria-hidden="true" 1305 aria-hidden="true"
1302 ></div> 1306 ></div>
1303 </div> 1307 </div>
1304 <div> 1308 <div>
1305 <p class="font-semibold">Sarah Curry</p> 1309 <p class="font-semibold">Sarah Curry</p>
1306 <p class="text-xs text-gray-600 dark:text-gray-400"> 1310 <p class="text-xs text-gray-600 dark:text-gray-400">
1307 Designer 1311 Designer
1308 </p> 1312 </p>
1309 </div> 1313 </div>
1310 </div> 1314 </div>
1311 </td> 1315 </td>
1312 <td class="px-4 py-3 text-sm"> 1316 <td class="px-4 py-3 text-sm">
1313 $ 86.00 1317 $ 86.00
1314 </td> 1318 </td>
1315 <td class="px-4 py-3 text-xs"> 1319 <td class="px-4 py-3 text-xs">
1316 <span 1320 <span
1317 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" 1321 class="px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-700"
1318 > 1322 >
1319 Denied 1323 Denied
1320 </span> 1324 </span>
1321 </td> 1325 </td>
1322 <td class="px-4 py-3 text-sm"> 1326 <td class="px-4 py-3 text-sm">
1323 6/10/2020 1327 6/10/2020
1324 </td> 1328 </td>
1325 </tr> 1329 </tr>
1326 1330
1327 <tr class="text-gray-700 dark:text-gray-400"> 1331 <tr class="text-gray-700 dark:text-gray-400">
1328 <td class="px-4 py-3"> 1332 <td class="px-4 py-3">
1329 <div class="flex items-center text-sm"> 1333 <div class="flex items-center text-sm">
1330 1334
1331 <div 1335 <div
1332 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1336 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1333 > 1337 >
1334 <img 1338 <img
1335 class="object-cover w-full h-full rounded-full" 1339 class="object-cover w-full h-full rounded-full"
1336 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" 1340 src="https://images.unsplash.com/photo-1551006917-3b4c078c47c9?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ"
1337 alt="" 1341 alt=""
1338 loading="lazy" 1342 loading="lazy"
1339 /> 1343 />
1340 <div 1344 <div
1341 class="absolute inset-0 rounded-full shadow-inner" 1345 class="absolute inset-0 rounded-full shadow-inner"
1342 aria-hidden="true" 1346 aria-hidden="true"
1343 ></div> 1347 ></div>
1344 </div> 1348 </div>
1345 <div> 1349 <div>
1346 <p class="font-semibold">Rulia Joberts</p> 1350 <p class="font-semibold">Rulia Joberts</p>
1347 <p class="text-xs text-gray-600 dark:text-gray-400"> 1351 <p class="text-xs text-gray-600 dark:text-gray-400">
1348 Actress 1352 Actress
1349 </p> 1353 </p>
1350 </div> 1354 </div>
1351 </div> 1355 </div>
1352 </td> 1356 </td>
1353 <td class="px-4 py-3 text-sm"> 1357 <td class="px-4 py-3 text-sm">
1354 $ 1276.45 1358 $ 1276.45
1355 </td> 1359 </td>
1356 <td class="px-4 py-3 text-xs"> 1360 <td class="px-4 py-3 text-xs">
1357 <span 1361 <span
1358 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" 1362 class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"
1359 > 1363 >
1360 Approved 1364 Approved
1361 </span> 1365 </span>
1362 </td> 1366 </td>
1363 <td class="px-4 py-3 text-sm"> 1367 <td class="px-4 py-3 text-sm">
1364 6/10/2020 1368 6/10/2020
1365 </td> 1369 </td>
1366 </tr> 1370 </tr>
1367 1371
1368 <tr class="text-gray-700 dark:text-gray-400"> 1372 <tr class="text-gray-700 dark:text-gray-400">
1369 <td class="px-4 py-3"> 1373 <td class="px-4 py-3">
1370 <div class="flex items-center text-sm"> 1374 <div class="flex items-center text-sm">
1371 1375
1372 <div 1376 <div
1373 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1377 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1374 > 1378 >
1375 <img 1379 <img
1376 class="object-cover w-full h-full rounded-full" 1380 class="object-cover w-full h-full rounded-full"
1377 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" 1381 src="https://images.unsplash.com/photo-1546456073-6712f79251bb?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ"
1378 alt="" 1382 alt=""
1379 loading="lazy" 1383 loading="lazy"
1380 /> 1384 />
1381 <div 1385 <div
1382 class="absolute inset-0 rounded-full shadow-inner" 1386 class="absolute inset-0 rounded-full shadow-inner"
1383 aria-hidden="true" 1387 aria-hidden="true"
1384 ></div> 1388 ></div>
1385 </div> 1389 </div>
1386 <div> 1390 <div>
1387 <p class="font-semibold">Wenzel Dashington</p> 1391 <p class="font-semibold">Wenzel Dashington</p>
1388 <p class="text-xs text-gray-600 dark:text-gray-400"> 1392 <p class="text-xs text-gray-600 dark:text-gray-400">
1389 Actor 1393 Actor
1390 </p> 1394 </p>
1391 </div> 1395 </div>
1392 </div> 1396 </div>
1393 </td> 1397 </td>
1394 <td class="px-4 py-3 text-sm"> 1398 <td class="px-4 py-3 text-sm">
1395 $ 863.45 1399 $ 863.45
1396 </td> 1400 </td>
1397 <td class="px-4 py-3 text-xs"> 1401 <td class="px-4 py-3 text-xs">
1398 <span 1402 <span
1399 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" 1403 class="px-2 py-1 font-semibold leading-tight text-gray-700 bg-gray-100 rounded-full dark:text-gray-100 dark:bg-gray-700"
1400 > 1404 >
1401 Expired 1405 Expired
1402 </span> 1406 </span>
1403 </td> 1407 </td>
1404 <td class="px-4 py-3 text-sm"> 1408 <td class="px-4 py-3 text-sm">
1405 6/10/2020 1409 6/10/2020
1406 </td> 1410 </td>
1407 </tr> 1411 </tr>
1408 1412
1409 <tr class="text-gray-700 dark:text-gray-400"> 1413 <tr class="text-gray-700 dark:text-gray-400">
1410 <td class="px-4 py-3"> 1414 <td class="px-4 py-3">
1411 <div class="flex items-center text-sm"> 1415 <div class="flex items-center text-sm">
1412 1416
1413 <div 1417 <div
1414 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1418 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1415 > 1419 >
1416 <img 1420 <img
1417 class="object-cover w-full h-full rounded-full" 1421 class="object-cover w-full h-full rounded-full"
1418 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" 1422 src="https://images.unsplash.com/photo-1502720705749-871143f0e671?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&s=b8377ca9f985d80264279f277f3a67f5"
1419 alt="" 1423 alt=""
1420 loading="lazy" 1424 loading="lazy"
1421 /> 1425 />
1422 <div 1426 <div
1423 class="absolute inset-0 rounded-full shadow-inner" 1427 class="absolute inset-0 rounded-full shadow-inner"
1424 aria-hidden="true" 1428 aria-hidden="true"
1425 ></div> 1429 ></div>
1426 </div> 1430 </div>
1427 <div> 1431 <div>
1428 <p class="font-semibold">Dave Li</p> 1432 <p class="font-semibold">Dave Li</p>
1429 <p class="text-xs text-gray-600 dark:text-gray-400"> 1433 <p class="text-xs text-gray-600 dark:text-gray-400">
1430 Influencer 1434 Influencer
1431 </p> 1435 </p>
1432 </div> 1436 </div>
1433 </div> 1437 </div>
1434 </td> 1438 </td>
1435 <td class="px-4 py-3 text-sm"> 1439 <td class="px-4 py-3 text-sm">
1436 $ 863.45 1440 $ 863.45
1437 </td> 1441 </td>
1438 <td class="px-4 py-3 text-xs"> 1442 <td class="px-4 py-3 text-xs">
1439 <span 1443 <span
1440 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" 1444 class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"
1441 > 1445 >
1442 Approved 1446 Approved
1443 </span> 1447 </span>
1444 </td> 1448 </td>
1445 <td class="px-4 py-3 text-sm"> 1449 <td class="px-4 py-3 text-sm">
1446 6/10/2020 1450 6/10/2020
1447 </td> 1451 </td>
1448 </tr> 1452 </tr>
1449 1453
1450 <tr class="text-gray-700 dark:text-gray-400"> 1454 <tr class="text-gray-700 dark:text-gray-400">
1451 <td class="px-4 py-3"> 1455 <td class="px-4 py-3">
1452 <div class="flex items-center text-sm"> 1456 <div class="flex items-center text-sm">
1453 1457
1454 <div 1458 <div
1455 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1459 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1456 > 1460 >
1457 <img 1461 <img
1458 class="object-cover w-full h-full rounded-full" 1462 class="object-cover w-full h-full rounded-full"
1459 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" 1463 src="https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ"
1460 alt="" 1464 alt=""
1461 loading="lazy" 1465 loading="lazy"
1462 /> 1466 />
1463 <div 1467 <div
1464 class="absolute inset-0 rounded-full shadow-inner" 1468 class="absolute inset-0 rounded-full shadow-inner"
1465 aria-hidden="true" 1469 aria-hidden="true"
1466 ></div> 1470 ></div>
1467 </div> 1471 </div>
1468 <div> 1472 <div>
1469 <p class="font-semibold">Maria Ramovic</p> 1473 <p class="font-semibold">Maria Ramovic</p>
1470 <p class="text-xs text-gray-600 dark:text-gray-400"> 1474 <p class="text-xs text-gray-600 dark:text-gray-400">
1471 Runner 1475 Runner
1472 </p> 1476 </p>
1473 </div> 1477 </div>
1474 </div> 1478 </div>
1475 </td> 1479 </td>
1476 <td class="px-4 py-3 text-sm"> 1480 <td class="px-4 py-3 text-sm">
1477 $ 863.45 1481 $ 863.45
1478 </td> 1482 </td>
1479 <td class="px-4 py-3 text-xs"> 1483 <td class="px-4 py-3 text-xs">
1480 <span 1484 <span
1481 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" 1485 class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"
1482 > 1486 >
1483 Approved 1487 Approved
1484 </span> 1488 </span>
1485 </td> 1489 </td>
1486 <td class="px-4 py-3 text-sm"> 1490 <td class="px-4 py-3 text-sm">
1487 6/10/2020 1491 6/10/2020
1488 </td> 1492 </td>
1489 </tr> 1493 </tr>
1490 1494
1491 <tr class="text-gray-700 dark:text-gray-400"> 1495 <tr class="text-gray-700 dark:text-gray-400">
1492 <td class="px-4 py-3"> 1496 <td class="px-4 py-3">
1493 <div class="flex items-center text-sm"> 1497 <div class="flex items-center text-sm">
1494 1498
1495 <div 1499 <div
1496 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1500 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1497 > 1501 >
1498 <img 1502 <img
1499 class="object-cover w-full h-full rounded-full" 1503 class="object-cover w-full h-full rounded-full"
1500 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" 1504 src="https://images.unsplash.com/photo-1566411520896-01e7ca4726af?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ"
1501 alt="" 1505 alt=""
1502 loading="lazy" 1506 loading="lazy"
1503 /> 1507 />
1504 <div 1508 <div
1505 class="absolute inset-0 rounded-full shadow-inner" 1509 class="absolute inset-0 rounded-full shadow-inner"
1506 aria-hidden="true" 1510 aria-hidden="true"
1507 ></div> 1511 ></div>
1508 </div> 1512 </div>
1509 <div> 1513 <div>
1510 <p class="font-semibold">Hitney Wouston</p> 1514 <p class="font-semibold">Hitney Wouston</p>
1511 <p class="text-xs text-gray-600 dark:text-gray-400"> 1515 <p class="text-xs text-gray-600 dark:text-gray-400">
1512 Singer 1516 Singer
1513 </p> 1517 </p>
1514 </div> 1518 </div>
1515 </div> 1519 </div>
1516 </td> 1520 </td>
1517 <td class="px-4 py-3 text-sm"> 1521 <td class="px-4 py-3 text-sm">
1518 $ 863.45 1522 $ 863.45
1519 </td> 1523 </td>
1520 <td class="px-4 py-3 text-xs"> 1524 <td class="px-4 py-3 text-xs">
1521 <span 1525 <span
1522 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" 1526 class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"
1523 > 1527 >
1524 Approved 1528 Approved
1525 </span> 1529 </span>
1526 </td> 1530 </td>
1527 <td class="px-4 py-3 text-sm"> 1531 <td class="px-4 py-3 text-sm">
1528 6/10/2020 1532 6/10/2020
1529 </td> 1533 </td>
1530 </tr> 1534 </tr>
1531 1535
1532 <tr class="text-gray-700 dark:text-gray-400"> 1536 <tr class="text-gray-700 dark:text-gray-400">
1533 <td class="px-4 py-3"> 1537 <td class="px-4 py-3">
1534 <div class="flex items-center text-sm"> 1538 <div class="flex items-center text-sm">
1535 1539
1536 <div 1540 <div
1537 class="relative hidden w-8 h-8 mr-3 rounded-full md:block" 1541 class="relative hidden w-8 h-8 mr-3 rounded-full md:block"
1538 > 1542 >
1539 <img 1543 <img
1540 class="object-cover w-full h-full rounded-full" 1544 class="object-cover w-full h-full rounded-full"
1541 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" 1545 src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ"
1542 alt="" 1546 alt=""
1543 loading="lazy" 1547 loading="lazy"
1544 /> 1548 />
1545 <div 1549 <div
1546 class="absolute inset-0 rounded-full shadow-inner" 1550 class="absolute inset-0 rounded-full shadow-inner"
1547 aria-hidden="true" 1551 aria-hidden="true"
1548 ></div> 1552 ></div>
1549 </div> 1553 </div>
1550 <div> 1554 <div>
1551 <p class="font-semibold">Hans Burger</p> 1555 <p class="font-semibold">Hans Burger</p>
1552 <p class="text-xs text-gray-600 dark:text-gray-400"> 1556 <p class="text-xs text-gray-600 dark:text-gray-400">
1553 10x Developer 1557 10x Developer
1554 </p> 1558 </p>
1555 </div> 1559 </div>
1556 </div> 1560 </div>
1557 </td> 1561 </td>
1558 <td class="px-4 py-3 text-sm"> 1562 <td class="px-4 py-3 text-sm">
1559 $ 863.45 1563 $ 863.45
1560 </td> 1564 </td>
1561 <td class="px-4 py-3 text-xs"> 1565 <td class="px-4 py-3 text-xs">
1562 <span 1566 <span
1563 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" 1567 class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"
1564 > 1568 >
1565 Approved 1569 Approved
1566 </span> 1570 </span>
1567 </td> 1571 </td>
1568 <td class="px-4 py-3 text-sm"> 1572 <td class="px-4 py-3 text-sm">
1569 6/10/2020 1573 6/10/2020
1570 </td> 1574 </td>
1571 </tr> 1575 </tr>
1572 </tbody> 1576 </tbody>
1573 </table> 1577 </table>
1574 </div> 1578 </div>
1575 <div 1579 <div
1576 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" 1580 class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"
1577 > 1581 >
1578 <span class="flex items-center col-span-3"> 1582 <span class="flex items-center col-span-3">
1579 Showing 21-30 of 100 1583 Showing 21-30 of 100
1580 </span> 1584 </span>
1581 <span class="col-span-2"></span> 1585 <span class="col-span-2"></span>
1582 1586
1583 <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> 1587 <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end">
1584 <nav aria-label="Table navigation"> 1588 <nav aria-label="Table navigation">
1585 <ul class="inline-flex items-center"> 1589 <ul class="inline-flex items-center">
1586 <li> 1590 <li>
1587 <button 1591 <button
1588 class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" 1592 class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple"
1589 aria-label="Previous" 1593 aria-label="Previous"
1590 > 1594 >
1591 <svg 1595 <svg
1592 aria-hidden="true" 1596 aria-hidden="true"
1593 class="w-4 h-4 fill-current" 1597 class="w-4 h-4 fill-current"
1594 viewBox="0 0 20 20" 1598 viewBox="0 0 20 20"
1595 > 1599 >
1596 <path 1600 <path
1597 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" 1601 d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
1598 clip-rule="evenodd" 1602 clip-rule="evenodd"
1599 fill-rule="evenodd" 1603 fill-rule="evenodd"
1600 ></path> 1604 ></path>
1601 </svg> 1605 </svg>
1602 </button> 1606 </button>
1603 </li> 1607 </li>
1604 <li> 1608 <li>
1605 <button 1609 <button
1606 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" 1610 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple"
1607 > 1611 >
1608 1 1612 1
1609 </button> 1613 </button>
1610 </li> 1614 </li>
1611 <li> 1615 <li>
1612 <button 1616 <button
1613 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" 1617 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple"
1614 > 1618 >
1615 2 1619 2
1616 </button> 1620 </button>
1617 </li> 1621 </li>
1618 <li> 1622 <li>
1619 <button 1623 <button
1620 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" 1624 class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple"
1621 > 1625 >
1622 3 1626 3
1623 </button> 1627 </button>
1624 </li> 1628 </li>
1625 <li> 1629 <li>
1626 <button 1630 <button
1627 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" 1631 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple"
1628 > 1632 >
1629 4 1633 4
1630 </button> 1634 </button>
1631 </li> 1635 </li>
1632 <li> 1636 <li>
1633 <span class="px-3 py-1">...</span> 1637 <span class="px-3 py-1">...</span>
1634 </li> 1638 </li>
1635 <li> 1639 <li>
1636 <button 1640 <button
1637 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" 1641 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple"
1638 > 1642 >
1639 8 1643 8
1640 </button> 1644 </button>
1641 </li> 1645 </li>
1642 <li> 1646 <li>
1643 <button 1647 <button
1644 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" 1648 class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple"
1645 > 1649 >
1646 9 1650 9
1647 </button> 1651 </button>
1648 </li> 1652 </li>
1649 <li> 1653 <li>
1650 <button 1654 <button
1651 class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" 1655 class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple"
1652 aria-label="Next" 1656 aria-label="Next"
1653 > 1657 >
1654 <svg 1658 <svg
1655 class="w-4 h-4 fill-current" 1659 class="w-4 h-4 fill-current"
1656 aria-hidden="true" 1660 aria-hidden="true"
1657 viewBox="0 0 20 20" 1661 viewBox="0 0 20 20"
1658 > 1662 >
1659 <path 1663 <path
1660 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" 1664 d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
1661 clip-rule="evenodd" 1665 clip-rule="evenodd"
1662 fill-rule="evenodd" 1666 fill-rule="evenodd"
1663 ></path> 1667 ></path>
1664 </svg> 1668 </svg>
1665 </button> 1669 </button>
1666 </li> 1670 </li>
1667 </ul> 1671 </ul>
1668 </nav> 1672 </nav>
1669 </span> 1673 </span>
1670 </div> 1674 </div>
1671 </div> 1675 </div>
1672 --> 1676 -->
1673 <!-- Charts --> 1677 <!-- Charts -->
1674 <!-- 1678 <!--
1675 <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> 1679 <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200">
1676 Графики 1680 Графики
1677 </h2> 1681 </h2>
1678 <div class="grid gap-6 mb-8 md:grid-cols-2"> 1682 <div class="grid gap-6 mb-8 md:grid-cols-2">
1679 <div 1683 <div
1680 class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" 1684 class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"
1681 > 1685 >
1682 <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> 1686 <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300">
1683 Revenue 1687 Revenue
1684 </h4> 1688 </h4>
1685 <canvas id="pie"></canvas> 1689 <canvas id="pie"></canvas>
1686 <div 1690 <div
1687 class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" 1691 class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400"
1688 > 1692 >
1689 1693
1690 <div class="flex items-center"> 1694 <div class="flex items-center">
1691 <span 1695 <span
1692 class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" 1696 class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full"
1693 ></span> 1697 ></span>
1694 <span>Shirts</span> 1698 <span>Shirts</span>
1695 </div> 1699 </div>
1696 <div class="flex items-center"> 1700 <div class="flex items-center">
1697 <span 1701 <span
1698 class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" 1702 class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full"
1699 ></span> 1703 ></span>
1700 <span>Shoes</span> 1704 <span>Shoes</span>
1701 </div> 1705 </div>
1702 <div class="flex items-center"> 1706 <div class="flex items-center">
1703 <span 1707 <span
1704 class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" 1708 class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full"
1705 ></span> 1709 ></span>
1706 <span>Bags</span> 1710 <span>Bags</span>
1707 </div> 1711 </div>
1708 </div> 1712 </div>
1709 </div> 1713 </div>
1710 <div 1714 <div
1711 class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" 1715 class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"
1712 > 1716 >
1713 <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> 1717 <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300">
1714 Traffic 1718 Traffic
1715 </h4> 1719 </h4>
1716 <canvas id="line"></canvas> 1720 <canvas id="line"></canvas>
1717 <div 1721 <div
1718 class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" 1722 class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400"
1719 > 1723 >
1720 1724
1721 <div class="flex items-center"> 1725 <div class="flex items-center">
1722 <span 1726 <span
1723 class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" 1727 class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full"
1724 ></span> 1728 ></span>
1725 <span>Organic</span> 1729 <span>Organic</span>
1726 </div> 1730 </div>
1727 <div class="flex items-center"> 1731 <div class="flex items-center">
1728 <span 1732 <span
1729 class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" 1733 class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full"
1730 ></span> 1734 ></span>
1731 <span>Paid</span> 1735 <span>Paid</span>
1732 </div> 1736 </div>
1733 </div> 1737 </div>
1734 </div> 1738 </div>
1735 </div> 1739 </div>
1736 --> 1740 -->
1737 </div> 1741 </div>
1738 </main> 1742 </main>
1739 </div> 1743 </div>
1740 </div> 1744 </div>
1741 </body> 1745 </body>
1742 @yield('script') 1746 @yield('script')
1743 </html> 1747 </html>
1744 1748