Commit 80e6ce32abdb9d0b9a3eddd22b7c9203912d6ab2
Exists in
master
Merge branch 'master' of http://gitlab.nologostudio.ru/alarionov/rekamore-su
Showing 14 changed files Inline Diff
- app/Http/Controllers/Admin/EmployersController.php
- app/Http/Controllers/Admin/UsersController.php
- app/Models/ContentRoles.php
- app/Providers/MyServiceProvider.php
- database/migrations/2023_11_20_062736_alter_users_table.php
- database/migrations/2023_11_20_064430_create_content_roles_table.php
- database/migrations/2023_11_20_070121_alter_content_roles_table.php
- resources/views/admin/content/roles_index.blade.php
- resources/views/admin/content/roles_index_ajax.blade.php
- resources/views/admin/employer/index.blade.php
- resources/views/admin/users/index.blade.php
- resources/views/admin/users/index_ajax.blade.php
- resources/views/layout/admin.blade.php
- routes/web.php
app/Http/Controllers/Admin/EmployersController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers\Admin; | 3 | namespace App\Http\Controllers\Admin; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Models\Ad_employer; | 6 | use App\Models\Ad_employer; |
7 | use App\Models\Answer; | 7 | use App\Models\Answer; |
8 | use App\Models\CategoryEmp; | 8 | use App\Models\CategoryEmp; |
9 | use App\Models\Employer; | 9 | use App\Models\Employer; |
10 | use App\Models\Static_ad; | 10 | use App\Models\Static_ad; |
11 | use App\Models\User; | 11 | use App\Models\User; |
12 | use Illuminate\Http\Request; | 12 | use Illuminate\Http\Request; |
13 | use Illuminate\Support\Facades\DB; | 13 | use Illuminate\Support\Facades\DB; |
14 | use Illuminate\Support\Facades\Storage; | 14 | use Illuminate\Support\Facades\Storage; |
15 | use Illuminate\Support\Facades\Validator; | 15 | use Illuminate\Support\Facades\Validator; |
16 | 16 | ||
17 | class EmployersController extends Controller | 17 | class EmployersController extends Controller |
18 | { | 18 | { |
19 | public function index(Request $request) { | 19 | public function index(Request $request) { |
20 | //$all_employer = User::where('is_worker', '0')->count(); | 20 | //$all_employer = User::where('is_worker', '0')->count(); |
21 | $all_public = -1; | 21 | $all_public = -1; |
22 | $all_status = -1; | 22 | $all_status = -1; |
23 | if ($request->ajax()) { | 23 | if ($request->ajax()) { |
24 | $user = User::find($request->id); | 24 | $user = User::find($request->id); |
25 | $request->offsetUnset('id'); | 25 | $request->offsetUnset('id'); |
26 | $user->update($request->all()); | 26 | $user->update($request->all()); |
27 | } | 27 | } |
28 | 28 | ||
29 | $users = User::with('employers')->select(['users.*','users.id as usr_id', 'emp.id as emp_id', 'emp.code as code_id', 'emp.logo as emp_logo', 'emp.*']) | 29 | $users = User::with('employers')->select(['users.*','users.id as usr_id', 'emp.id as emp_id', 'emp.code as code_id', 'emp.logo as emp_logo', 'emp.*']) |
30 | ->join('employers as emp','emp.user_id','users.id') | 30 | ->join('employers as emp','emp.user_id','users.id') |
31 | ->where('users.is_worker', '0')->Realuser(); //->Notadmin(); | 31 | ->where('users.is_worker', '0')->Realuser(); //->Notadmin(); |
32 | $all_employer = $users->count(); | 32 | $all_employer = $users->count(); |
33 | 33 | ||
34 | $all_public = Employer::where('status_hidden', '=', '0')-> | 34 | $all_public = Employer::where('status_hidden', '=', '0')-> |
35 | count(); | 35 | count(); |
36 | 36 | ||
37 | $all_status = Employer::where(function($query) { | 37 | $all_status = Employer::where(function($query) { |
38 | $query->Where('category', '=', 'Не оплачен') | 38 | $query->Where('category', '=', 'Не оплачен') |
39 | ->orWhere('category', '=', 'Не определен') | 39 | ->orWhere('category', '=', 'Не определен') |
40 | ->orWhere('category', '=', 'Согласование'); | 40 | ->orWhere('category', '=', 'Согласование'); |
41 | })->count(); | 41 | })->count(); |
42 | 42 | ||
43 | $find_cat = ""; | 43 | $find_cat = ""; |
44 | if (isset($request->category)) { | 44 | if (isset($request->category)) { |
45 | if ($request->category != 'Все категории') { | 45 | if ($request->category != 'Все категории') { |
46 | $users = $users->where('category', '=', $request->category); | 46 | $users = $users->where('category', '=', $request->category); |
47 | $find_cat = $request->category; | 47 | $find_cat = $request->category; |
48 | } | 48 | } |
49 | } | 49 | } |
50 | $find_key = ""; | 50 | $find_key = ""; |
51 | 51 | ||
52 | if (isset($request->find)) { | 52 | if (isset($request->find)) { |
53 | $find_key = $request->find; | 53 | $find_key = $request->find; |
54 | $users = $users->where(function($query) use($find_key) { | 54 | $users = $users->where(function($query) use($find_key) { |
55 | $query->Where('users.name', 'LIKE', "%$find_key%") | 55 | $query->Where('users.name', 'LIKE', "%$find_key%") |
56 | ->orWhere('emp.email', 'LIKE', "%$find_key%") | 56 | ->orWhere('emp.email', 'LIKE', "%$find_key%") |
57 | ->orWhere('emp.telephone', 'LIKE', "%$find_key%"); | 57 | ->orWhere('emp.telephone', 'LIKE', "%$find_key%"); |
58 | }); | 58 | }); |
59 | } | 59 | } |
60 | 60 | ||
61 | //DB::enableQueryLog(); | 61 | //DB::enableQueryLog(); |
62 | $all_current = $users->count(); | ||
62 | $users = $users->paginate(15); | 63 | $users = $users->paginate(15); |
63 | //dd(DB::getQueryLog()); | 64 | //dd(DB::getQueryLog()); |
64 | 65 | ||
65 | $select_category = CategoryEmp::query()->active()->get(); | 66 | $select_category = CategoryEmp::query()->active()->get(); |
66 | 67 | ||
67 | if ($request->ajax()) { | 68 | if ($request->ajax()) { |
68 | return view('admin.employer.index_ajax', compact('users')); | 69 | return view('admin.employer.index_ajax', compact('users')); |
69 | } else { | 70 | } else { |
70 | return view('admin.employer.index', compact('users', | 71 | return view('admin.employer.index', compact('users', |
71 | 'find_key', | 72 | 'find_key', |
72 | 'find_cat', | 73 | 'find_cat', |
73 | 'all_employer', | 74 | 'all_employer', |
74 | 'all_public', | 75 | 'all_public', |
75 | 'all_status', | 76 | 'all_status', |
77 | 'all_current', | ||
76 | 'select_category')); | 78 | 'select_category')); |
77 | } | 79 | } |
78 | } | 80 | } |
79 | 81 | ||
80 | public function comment_read(Employer $employer) { | 82 | public function comment_read(Employer $employer) { |
81 | return view('admin.employer.comment', compact('employer')); | 83 | return view('admin.employer.comment', compact('employer')); |
82 | } | 84 | } |
83 | 85 | ||
84 | public function form_update_employer(Employer $employer) { | 86 | public function form_update_employer(Employer $employer) { |
85 | $select_category = CategoryEmp::query()->active()->get(); | 87 | $select_category = CategoryEmp::query()->active()->get(); |
86 | return view('admin.employer.edit', compact('employer', 'select_category')); | 88 | return view('admin.employer.edit', compact('employer', 'select_category')); |
87 | } | 89 | } |
88 | 90 | ||
89 | public function update_employer(Employer $employer, Request $request) | 91 | public function update_employer(Employer $employer, Request $request) |
90 | { | 92 | { |
91 | $params = $request->all(); | 93 | $params = $request->all(); |
92 | unset($params['logo']); | 94 | unset($params['logo']); |
93 | unset($params['telephone']); | 95 | unset($params['telephone']); |
94 | unset($params['email']); | 96 | unset($params['email']); |
95 | unset($params['address']); | 97 | unset($params['address']); |
96 | unset($params['site']); | 98 | unset($params['site']); |
97 | unset($params['status_hidden']); | 99 | unset($params['status_hidden']); |
98 | unset($params['oficial_status']); | 100 | unset($params['oficial_status']); |
99 | unset($params['social_is']); | 101 | unset($params['social_is']); |
100 | unset($params['sending_is']); | 102 | unset($params['sending_is']); |
101 | unset($params['category']); | 103 | unset($params['category']); |
102 | unset($params['comment_admin']); | 104 | unset($params['comment_admin']); |
103 | 105 | ||
104 | $rules = [ | 106 | $rules = [ |
105 | 'name' => 'required|string|max:255', | 107 | 'name' => 'required|string|max:255', |
106 | ]; | 108 | ]; |
107 | 109 | ||
108 | $messages = [ | 110 | $messages = [ |
109 | 'required' => 'Укажите обязательное поле «:attribute»', | 111 | 'required' => 'Укажите обязательное поле «:attribute»', |
110 | 'confirmed' => 'Пароли не совпадают', | 112 | 'confirmed' => 'Пароли не совпадают', |
111 | 'email' => 'Введите корректный email', | 113 | 'email' => 'Введите корректный email', |
112 | 'min' => [ | 114 | 'min' => [ |
113 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 115 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
114 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 116 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
115 | ], | 117 | ], |
116 | 'max' => [ | 118 | 'max' => [ |
117 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 119 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
118 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 120 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
119 | ], | 121 | ], |
120 | ]; | 122 | ]; |
121 | 123 | ||
122 | $validator = Validator::make($params, $rules, $messages); | 124 | $validator = Validator::make($params, $rules, $messages); |
123 | 125 | ||
124 | if ($validator->fails()) { | 126 | if ($validator->fails()) { |
125 | return back()->withErrors($validator)->withInput(); //->route('admin.register') | 127 | return back()->withErrors($validator)->withInput(); //->route('admin.register') |
126 | 128 | ||
127 | } else { | 129 | } else { |
128 | 130 | ||
129 | //$user = User::find($employer->user_id); | 131 | //$user = User::find($employer->user_id); |
130 | $user_id = $employer->user_id; | 132 | $user_id = $employer->user_id; |
131 | $employer->telephone = $request->telephone; | 133 | $employer->telephone = $request->telephone; |
132 | $employer->email = $request->email; | 134 | $employer->email = $request->email; |
133 | $employer->address = $request->address; | 135 | $employer->address = $request->address; |
134 | $employer->site = $request->site; | 136 | $employer->site = $request->site; |
135 | $employer->text = $request->text; | 137 | $employer->text = $request->text; |
136 | $employer->status_hidden = $request->status_hidden; | 138 | $employer->status_hidden = $request->status_hidden; |
137 | $employer->oficial_status = $request->oficial_status; | 139 | $employer->oficial_status = $request->oficial_status; |
138 | $employer->social_is = $request->social_is; | 140 | $employer->social_is = $request->social_is; |
139 | $employer->sending_is = $request->sending_is; | 141 | $employer->sending_is = $request->sending_is; |
140 | $employer->category = $request->category; | 142 | $employer->category = $request->category; |
141 | $employer->comment_admin = $request->comment_admin; | 143 | $employer->comment_admin = $request->comment_admin; |
142 | 144 | ||
143 | if ($request->has('logo')) { | 145 | if ($request->has('logo')) { |
144 | if (!empty($employer->logo)) { | 146 | if (!empty($employer->logo)) { |
145 | Storage::delete($employer->logo); | 147 | Storage::delete($employer->logo); |
146 | } | 148 | } |
147 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); | 149 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); |
148 | } | 150 | } |
149 | $employer->save(); | 151 | $employer->save(); |
150 | 152 | ||
151 | $user = User::find($user_id); | 153 | $user = User::find($user_id); |
152 | $user->update($params); | 154 | $user->update($params); |
153 | 155 | ||
154 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) | 156 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) |
155 | ->with('success', 'Данные были успешно сохранены'); | 157 | ->with('success', 'Данные были успешно сохранены'); |
156 | } | 158 | } |
157 | } | 159 | } |
158 | 160 | ||
159 | // Удаление работодателя, вакансий и профиля юзера | 161 | // Удаление работодателя, вакансий и профиля юзера |
160 | public function delete_employer(Employer $employer, User $user) { | 162 | public function delete_employer(Employer $employer, User $user) { |
161 | try { | 163 | try { |
162 | if (!empty($employer)) { | 164 | if (!empty($employer)) { |
163 | if (!empty($employer->logo)) { | 165 | if (!empty($employer->logo)) { |
164 | Storage::delete($employer->logo); | 166 | Storage::delete($employer->logo); |
165 | } | 167 | } |
166 | 168 | ||
167 | foreach($employer->ads as $ad) { | 169 | foreach($employer->ads as $ad) { |
168 | $ads = Ad_employer::find($ad->id); | 170 | $ads = Ad_employer::find($ad->id); |
169 | $ads->employer_id = 2; | 171 | $ads->employer_id = 2; |
170 | $ads->is_remove = 1; | 172 | $ads->is_remove = 1; |
171 | $ads->save(); | 173 | $ads->save(); |
172 | } | 174 | } |
173 | 175 | ||
174 | $employer->delete(); | 176 | $employer->delete(); |
175 | } | 177 | } |
176 | } finally { | 178 | } finally { |
177 | $user->delete(); | 179 | $user->delete(); |
178 | } | 180 | } |
179 | 181 | ||
180 | return redirect()->route('admin.employers')->with('success', 'Данные были удалены о работодателе'); | 182 | return redirect()->route('admin.employers')->with('success', 'Данные были удалены о работодателе'); |
181 | } | 183 | } |
182 | 184 | ||
183 | // кабинет - отзывы о работодателе для модерации | 185 | // кабинет - отзывы о работодателе для модерации |
184 | public function answers(Request $request) { | 186 | public function answers(Request $request) { |
185 | if ($request->ajax()) { | 187 | if ($request->ajax()) { |
186 | $user = Answer::find($request->id); | 188 | $user = Answer::find($request->id); |
187 | $request->offsetUnset('id'); | 189 | $request->offsetUnset('id'); |
188 | $user->update($request->all()); | 190 | $user->update($request->all()); |
189 | } | 191 | } |
190 | 192 | ||
191 | $answers = Answer::query()->orderByDesc('id')->paginate(15); | 193 | $answers = Answer::query()->orderByDesc('id')->paginate(15); |
192 | 194 | ||
193 | if ($request->ajax()) { | 195 | if ($request->ajax()) { |
194 | return view('admin.answers.index_ajax', compact('answers')); | 196 | return view('admin.answers.index_ajax', compact('answers')); |
195 | } else { | 197 | } else { |
196 | return view('admin.answers.index', compact('answers')); | 198 | return view('admin.answers.index', compact('answers')); |
197 | } | 199 | } |
198 | } | 200 | } |
199 | 201 | ||
200 | // кабинет - статистика вакансий работодателя | 202 | // кабинет - статистика вакансий работодателя |
201 | public function static_ads(Request $request) { | 203 | public function static_ads(Request $request) { |
202 | $stat = Static_ad::with('ads'); | 204 | $stat = Static_ad::with('ads'); |
203 | $ads = Ad_employer::query()->active()->OrderBy('id')->get(); | 205 | $ads = Ad_employer::query()->active()->OrderBy('id')->get(); |
204 | $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); | 206 | $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); |
205 | if ($request->ajax()) { | 207 | if ($request->ajax()) { |
206 | if (isset($request->ad_employer_id)) | 208 | if (isset($request->ad_employer_id)) |
207 | if (!$request->ad_employer_id == "0") | 209 | if (!$request->ad_employer_id == "0") |
208 | $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); | 210 | $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); |
209 | if (isset($request->year_month)) { | 211 | if (isset($request->year_month)) { |
210 | if (!$request->year_month == "0") | 212 | if (!$request->year_month == "0") |
211 | $stat = $stat->Where('year_month', '=', $request->year_month); | 213 | $stat = $stat->Where('year_month', '=', $request->year_month); |
212 | } | 214 | } |
213 | } | 215 | } |
214 | 216 | ||
215 | $stat = $stat->OrderByDesc('year_month'); | 217 | $stat = $stat->OrderByDesc('year_month'); |
216 | $stat = $stat->paginate(15); | 218 | $stat = $stat->paginate(15); |
217 | 219 | ||
218 | if ($request->ajax()) | 220 | if ($request->ajax()) |
219 | return view('admin.static.index_ads_ajax', compact('stat')); | 221 | return view('admin.static.index_ads_ajax', compact('stat')); |
220 | else | 222 | else |
221 | return view('admin.static.index_ads', compact('stat', 'ads', 'periods')); | 223 | return view('admin.static.index_ads', compact('stat', 'ads', 'periods')); |
222 | 224 | ||
223 | } | 225 | } |
224 | 226 | ||
225 | 227 | ||
226 | } | 228 | } |
227 | 229 |
app/Http/Controllers/Admin/UsersController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers\Admin; | 3 | namespace App\Http\Controllers\Admin; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Http\Requests\BaseUserRequest; | 6 | use App\Http\Requests\BaseUserRequest; |
7 | use App\Models\ContentRoles; | ||
7 | use App\Models\Job_title; | 8 | use App\Models\Job_title; |
8 | use App\Models\User; | 9 | use App\Models\User; |
9 | use App\Models\Worker; | 10 | use App\Models\Worker; |
10 | use Illuminate\Http\Request; | 11 | use Illuminate\Http\Request; |
11 | use Illuminate\Support\Facades\Auth; | 12 | use Illuminate\Support\Facades\Auth; |
12 | use Illuminate\Support\Facades\Storage; | 13 | use Illuminate\Support\Facades\Storage; |
13 | use PhpOffice\PhpSpreadsheet\Spreadsheet; | 14 | use PhpOffice\PhpSpreadsheet\Spreadsheet; |
14 | use PhpOffice\PhpSpreadsheet\Style\Alignment; | 15 | use PhpOffice\PhpSpreadsheet\Style\Alignment; |
15 | use PhpOffice\PhpSpreadsheet\Style\Border; | 16 | use PhpOffice\PhpSpreadsheet\Style\Border; |
16 | use PhpOffice\PhpSpreadsheet\Style\Font; | 17 | use PhpOffice\PhpSpreadsheet\Style\Font; |
17 | use PhpOffice\PhpSpreadsheet\Writer\Xlsx; | 18 | use PhpOffice\PhpSpreadsheet\Writer\Xlsx; |
18 | 19 | ||
19 | class UsersController extends Controller | 20 | class UsersController extends Controller |
20 | { | 21 | { |
21 | public function index(Request $request) { | 22 | public function index(Request $request) { |
22 | $title = 'Админка - Пользователи системы'; | 23 | $title = 'Админка - Пользователи системы'; |
23 | $id_admin = Auth::user()->id; | 24 | $id_admin = Auth::user()->id; |
24 | if ($request->ajax()) { | 25 | if ($request->ajax()) { |
25 | $user = User::find($request->id); | 26 | $user = User::find($request->id); |
26 | $request->offsetUnset('id'); | 27 | $request->offsetUnset('id'); |
27 | $user->update($request->all()); | 28 | $user->update($request->all()); |
28 | } | 29 | } |
29 | $find_key = ""; | 30 | $find_key = ""; |
30 | $users = User::query(); | 31 | $users = User::query(); |
31 | if (isset($request->find)) { | 32 | if (isset($request->find)) { |
32 | $find_key = $request->find; | 33 | $find_key = $request->find; |
33 | $users = $users->where('name', 'LIKE', "%$find_key%") | 34 | $users = $users->where('name', 'LIKE', "%$find_key%") |
34 | ->orWhere('email', 'LIKE', "%$find_key%"); | 35 | ->orWhere('email', 'LIKE', "%$find_key%"); |
35 | } | 36 | } |
36 | $users = $users->paginate(15); | 37 | $users = $users->paginate(15); |
37 | 38 | ||
38 | if ($request->ajax()) { | 39 | if ($request->ajax()) { |
39 | return view('admin.users.index_ajax', compact('users', 'id_admin')); | 40 | return view('admin.users.index_ajax', compact('users', 'id_admin')); |
40 | } else { | 41 | } else { |
41 | return view('admin.users.index', compact('users', 'title', 'id_admin', 'find_key')); | 42 | return view('admin.users.index', compact('users', 'title', 'id_admin', 'find_key')); |
42 | } | 43 | } |
43 | } | 44 | } |
44 | 45 | ||
45 | public function index_bd(Request $request) { | 46 | public function index_bd(Request $request) { |
46 | $title = 'Админка - Пользователи базы данных'; | 47 | $title = 'Админка - Пользователи базы данных'; |
47 | 48 | ||
48 | $find_key = ""; | 49 | $find_key = ""; |
49 | $users = User::query(); | 50 | $users = User::query(); |
50 | if (isset($request->find)) { | 51 | if (isset($request->find)) { |
51 | $find_key = $request->find; | 52 | $find_key = $request->find; |
52 | $users = $users->where('name', 'LIKE', "%$find_key%") | 53 | $users = $users->where('name', 'LIKE', "%$find_key%") |
53 | ->orWhere('email', 'LIKE', "%$find_key%") | 54 | ->orWhere('email', 'LIKE', "%$find_key%") |
54 | ->orWhere('telephone', 'LIKE', "%$find_key%"); | 55 | ->orWhere('telephone', 'LIKE', "%$find_key%"); |
55 | } | 56 | } |
56 | 57 | ||
57 | $users = $users->Baseuser()->paginate(15); | 58 | $users = $users->Baseuser()->paginate(15); |
58 | 59 | ||
59 | if ($request->ajax()) { | 60 | if ($request->ajax()) { |
60 | return view('admin.users.index_bd_ajax', compact('users')); | 61 | return view('admin.users.index_bd_ajax', compact('users')); |
61 | } else { | 62 | } else { |
62 | return view('admin.users.index_bd', compact('users', 'title', 'find_key')); | 63 | return view('admin.users.index_bd', compact('users', 'title', 'find_key')); |
63 | } | 64 | } |
64 | } | 65 | } |
65 | 66 | ||
66 | public function add_bd() { | 67 | public function add_bd() { |
67 | $list_job_titles = Job_title::query()->active()->orderBy('name', 'asc')->get(); | 68 | $list_job_titles = Job_title::query()->active()->orderBy('name', 'asc')->get(); |
68 | return view('admin.users.add', compact('list_job_titles')); | 69 | return view('admin.users.add', compact('list_job_titles')); |
69 | } | 70 | } |
70 | 71 | ||
71 | public function add_store_bd(BaseUserRequest $request) { | 72 | public function add_store_bd(BaseUserRequest $request) { |
72 | $params = $request->all(); | 73 | $params = $request->all(); |
73 | $position_work = $request->position_work; | 74 | $position_work = $request->position_work; |
74 | 75 | ||
75 | if ($request->has('file')) { | 76 | if ($request->has('file')) { |
76 | $params['file'] = $request->file('file')->store('basedata', 'public'); | 77 | $params['file'] = $request->file('file')->store('basedata', 'public'); |
77 | } | 78 | } |
78 | 79 | ||
79 | if (isset($request->name)) { | 80 | if (isset($request->name)) { |
80 | $params['name'] = $request->surname." ".$request->name_man." ".$request->surname2; | 81 | $params['name'] = $request->surname." ".$request->name_man." ".$request->surname2; |
81 | } | 82 | } |
82 | 83 | ||
83 | $user = User::create($params); | 84 | $user = User::create($params); |
84 | $user_id = $user->id; | 85 | $user_id = $user->id; |
85 | $worker = new Worker(); | 86 | $worker = new Worker(); |
86 | $worker->position_work = $position_work; | 87 | $worker->position_work = $position_work; |
87 | $worker->user_id = $user_id; | 88 | $worker->user_id = $user_id; |
88 | $worker->save(); | 89 | $worker->save(); |
89 | 90 | ||
90 | return redirect()->route('admin.basedata'); | 91 | return redirect()->route('admin.basedata'); |
91 | } | 92 | } |
92 | 93 | ||
93 | public function edit_bd(User $user) { | 94 | public function edit_bd(User $user) { |
94 | $list_job_titles = Job_title::query()->active()->orderBy('name', 'asc')->get(); | 95 | $list_job_titles = Job_title::query()->active()->orderBy('name', 'asc')->get(); |
95 | return view('admin.users.edit', compact('user', 'list_job_titles')); | 96 | return view('admin.users.edit', compact('user', 'list_job_titles')); |
96 | } | 97 | } |
97 | 98 | ||
98 | public function update_bd(BaseUserRequest $request, User $user) { | 99 | public function update_bd(BaseUserRequest $request, User $user) { |
99 | $params = $request->all(); | 100 | $params = $request->all(); |
100 | $position_work = $request->position_work; | 101 | $position_work = $request->position_work; |
101 | 102 | ||
102 | if ($request->has('file')) { | 103 | if ($request->has('file')) { |
103 | if (!empty($user->file)) Storage::delete($user->file); | 104 | if (!empty($user->file)) Storage::delete($user->file); |
104 | $params['file'] = $request->file('file')->store('basedata', 'public'); | 105 | $params['file'] = $request->file('file')->store('basedata', 'public'); |
105 | } else { | 106 | } else { |
106 | if (!empty($user->image)) $params['file'] = $user->file; | 107 | if (!empty($user->image)) $params['file'] = $user->file; |
107 | } | 108 | } |
108 | 109 | ||
109 | if (isset($request->name)) { | 110 | if (isset($request->name)) { |
110 | $params['name'] = $request->surname." ".$request->name_man." ".$request->surname2; | 111 | $params['name'] = $request->surname." ".$request->name_man." ".$request->surname2; |
111 | } | 112 | } |
112 | 113 | ||
113 | $user->update($params); | 114 | $user->update($params); |
114 | if (isset($user->workers[0]->id)) { | 115 | if (isset($user->workers[0]->id)) { |
115 | $worker = Worker::find($user->workers[0]->id); | 116 | $worker = Worker::find($user->workers[0]->id); |
116 | $worker->position_work = $position_work; | 117 | $worker->position_work = $position_work; |
117 | $worker->save(); | 118 | $worker->save(); |
118 | } else { | 119 | } else { |
119 | $worker = new Worker(); | 120 | $worker = new Worker(); |
120 | $worker->user_id = $user->id; | 121 | $worker->user_id = $user->id; |
121 | $worker->position_work = $position_work; | 122 | $worker->position_work = $position_work; |
122 | $worker->save(); | 123 | $worker->save(); |
123 | } | 124 | } |
124 | 125 | ||
125 | return redirect()->route('admin.basedata'); | 126 | return redirect()->route('admin.basedata'); |
126 | } | 127 | } |
127 | 128 | ||
128 | public function destroy_bd(User $user) { | 129 | public function destroy_bd(User $user) { |
129 | $user->delete(); | 130 | $user->delete(); |
130 | return redirect()->route('admin.basedata'); | 131 | return redirect()->route('admin.basedata'); |
131 | } | 132 | } |
132 | 133 | ||
133 | public function roles(Request $request) { | 134 | public function roles(Request $request) { |
134 | if ($request->ajax()) { | 135 | if ($request->ajax()) { |
135 | $user = User::find($request->id); | 136 | $user = User::find($request->id); |
136 | $request->offsetUnset('id'); | 137 | $request->offsetUnset('id'); |
137 | $user->update($request->all()); | 138 | $user->update($request->all()); |
138 | } | 139 | } |
139 | 140 | ||
140 | $users = User::query()->Realuser()->paginate(15); | 141 | $users = User::query()->Realuser()->paginate(15); |
141 | 142 | ||
142 | if ($request->ajax()) { | 143 | if ($request->ajax()) { |
143 | return view('admin.users.roles.index_ajax', compact('users')); | 144 | return view('admin.users.roles.index_ajax', compact('users')); |
144 | } else { | 145 | } else { |
145 | return view('admin.users.roles.index', compact('users')); | 146 | return view('admin.users.roles.index', compact('users')); |
146 | } | 147 | } |
147 | } | 148 | } |
148 | 149 | ||
150 | public function admin_roles(Request $request) { | ||
151 | |||
152 | if ($request->ajax()) { | ||
153 | $content_roles = ContentRoles::find($request->id); | ||
154 | $request->offsetUnset($request->id); | ||
155 | $content_roles->update($request->all()); | ||
156 | } | ||
157 | $roles = ContentRoles::query()->OrderBy('name')->paginate(25); | ||
158 | |||
159 | |||
160 | if ($request->ajax()) { | ||
161 | return view('admin.content.roles_index_ajax', compact('roles')); | ||
162 | } else { | ||
163 | return view('admin.content.roles_index', compact('roles')); | ||
164 | } | ||
165 | } | ||
166 | |||
149 | public function doc_bd(User $user) { | 167 | public function doc_bd(User $user) { |
150 | $id = $user->id; | 168 | $id = $user->id; |
151 | $spreadsheet = new Spreadsheet(); | 169 | $spreadsheet = new Spreadsheet(); |
152 | $activeWorksheet = $spreadsheet->getActiveSheet(); | 170 | $activeWorksheet = $spreadsheet->getActiveSheet(); |
153 | $activeWorksheet->setCellValue('A1', 'Отчет по соискателю'); | 171 | $activeWorksheet->setCellValue('A1', 'Отчет по соискателю'); |
154 | $activeWorksheet->getStyle('A1')->applyFromArray([ | 172 | $activeWorksheet->getStyle('A1')->applyFromArray([ |
155 | 'font' => [ | 173 | 'font' => [ |
156 | 'name' => 'Arial', | 174 | 'name' => 'Arial', |
157 | 'bold' => true, | 175 | 'bold' => true, |
158 | 'italic' => false, | 176 | 'italic' => false, |
159 | 'underline' => Font::UNDERLINE_DOUBLE, | 177 | 'underline' => Font::UNDERLINE_DOUBLE, |
160 | 'strikethrough' => false, | 178 | 'strikethrough' => false, |
161 | 'color' => [ | 179 | 'color' => [ |
162 | 'rgb' => '808080' | 180 | 'rgb' => '808080' |
163 | ] | 181 | ] |
164 | ], | 182 | ], |
165 | 'borders' => [ | 183 | 'borders' => [ |
166 | 'allBorders' => [ | 184 | 'allBorders' => [ |
167 | 'borderStyle' => Border::BORDER_THIN, | 185 | 'borderStyle' => Border::BORDER_THIN, |
168 | 'color' => [ | 186 | 'color' => [ |
169 | 'rgb' => '808080' | 187 | 'rgb' => '808080' |
170 | ] | 188 | ] |
171 | ], | 189 | ], |
172 | 'outline' => array( | 190 | 'outline' => array( |
173 | 'style' => Border::BORDER_THIN, | 191 | 'style' => Border::BORDER_THIN, |
174 | 'color' => array('rgb' => '000000') | 192 | 'color' => array('rgb' => '000000') |
175 | ), | 193 | ), |
176 | ], | 194 | ], |
177 | 195 | ||
178 | 'alignment' => [ | 196 | 'alignment' => [ |
179 | 'horizontal' => Alignment::HORIZONTAL_CENTER, | 197 | 'horizontal' => Alignment::HORIZONTAL_CENTER, |
180 | 'vertical' => Alignment::VERTICAL_CENTER, | 198 | 'vertical' => Alignment::VERTICAL_CENTER, |
181 | 'wrapText' => true, | 199 | 'wrapText' => true, |
182 | ] | 200 | ] |
183 | ]); | 201 | ]); |
184 | 202 | ||
185 | $activeWorksheet->setCellValue('A2', "Псевдоним/имя: ".$user->name); | 203 | $activeWorksheet->setCellValue('A2', "Псевдоним/имя: ".$user->name); |
186 | $activeWorksheet->setCellValue('A3', "Фамилия: ".$user->surname); | 204 | $activeWorksheet->setCellValue('A3', "Фамилия: ".$user->surname); |
187 | $activeWorksheet->setCellValue('A4', "Имя: ".$user->name_man); | 205 | $activeWorksheet->setCellValue('A4', "Имя: ".$user->name_man); |
188 | $activeWorksheet->setCellValue('A5', "Отчество: ".$user->surname2); | 206 | $activeWorksheet->setCellValue('A5', "Отчество: ".$user->surname2); |
189 | $activeWorksheet->setCellValue('A6', "Телефон: ".$user->telephone); | 207 | $activeWorksheet->setCellValue('A6', "Телефон: ".$user->telephone); |
190 | $activeWorksheet->setCellValue('A7', "Емайл: ".$user->email); | 208 | $activeWorksheet->setCellValue('A7', "Емайл: ".$user->email); |
191 | 209 | ||
192 | if (isset($user->workers[0]->id)) { | 210 | if (isset($user->workers[0]->id)) { |
193 | $activeWorksheet->setCellValue('A9', "Анкета: "); | 211 | $activeWorksheet->setCellValue('A9', "Анкета: "); |
194 | $activeWorksheet->setCellValue('A10', "Телефон: " . $user->workers[0]->telephone); | 212 | $activeWorksheet->setCellValue('A10', "Телефон: " . $user->workers[0]->telephone); |
195 | $activeWorksheet->setCellValue('A11', "Емайл: " . $user->workers[0]->email); | 213 | $activeWorksheet->setCellValue('A11', "Емайл: " . $user->workers[0]->email); |
196 | } | 214 | } |
197 | 215 | ||
198 | if (isset($user->jobtitles[0]->id)) { | 216 | if (isset($user->jobtitles[0]->id)) { |
199 | $activeWorksheet->setCellValue('A12', "Должность: " . $user->jobtitles[0]->name); | 217 | $activeWorksheet->setCellValue('A12', "Должность: " . $user->jobtitles[0]->name); |
200 | } | 218 | } |
201 | $activeWorksheet->getColumnDimension("A")->setWidth(100); | 219 | $activeWorksheet->getColumnDimension("A")->setWidth(100); |
202 | $writer = new Xlsx($spreadsheet); | 220 | $writer = new Xlsx($spreadsheet); |
203 | 221 | ||
204 | header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); | 222 | header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); |
205 | header('Content-Disposition: attachment; filename="user'.$id.'.xlsx"'); | 223 | header('Content-Disposition: attachment; filename="user'.$id.'.xlsx"'); |
206 | header('Cache-Control: no-cache'); | 224 | header('Cache-Control: no-cache'); |
207 | 225 | ||
208 | $writer->save('php://output'); | 226 | $writer->save('php://output'); |
209 | $writer->save(storage_path("app/public/export/user$id.xlsx")); | 227 | $writer->save(storage_path("app/public/export/user$id.xlsx")); |
210 | 228 | ||
211 | //$spreadsheet->disconnectWorksheets(); | 229 | //$spreadsheet->disconnectWorksheets(); |
212 | return redirect()->route('admin.basedata'); | 230 | return redirect()->route('admin.basedata'); |
213 | 231 | ||
214 | } | 232 | } |
215 | } | 233 | } |
216 | 234 |
app/Models/ContentRoles.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Models; | ||
4 | |||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | ||
6 | use Illuminate\Database\Eloquent\Model; | ||
7 | |||
8 | class ContentRoles extends Model | ||
9 | { | ||
10 | use HasFactory; | ||
11 | } | ||
12 |
app/Providers/MyServiceProvider.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Providers; | 3 | namespace App\Providers; |
4 | 4 | ||
5 | use App\Models\ContentRoles; | ||
5 | use App\Models\Job_title; | 6 | use App\Models\Job_title; |
6 | use Illuminate\Support\Facades\Auth; | 7 | use Illuminate\Support\Facades\Auth; |
7 | use Illuminate\Support\Facades\DB; | 8 | use Illuminate\Support\Facades\DB; |
8 | use Illuminate\Support\Facades\View; | 9 | use Illuminate\Support\Facades\View; |
9 | use Illuminate\Support\ServiceProvider; | 10 | use Illuminate\Support\ServiceProvider; |
10 | 11 | ||
11 | class MyServiceProvider extends ServiceProvider | 12 | class MyServiceProvider extends ServiceProvider |
12 | { | 13 | { |
13 | /** | 14 | /** |
14 | * Register services. | 15 | * Register services. |
15 | * | 16 | * |
16 | * @return void | 17 | * @return void |
17 | */ | 18 | */ |
18 | public function register() | 19 | public function register() |
19 | { | 20 | { |
20 | // | 21 | // |
21 | } | 22 | } |
22 | 23 | ||
23 | /** | 24 | /** |
24 | * Bootstrap services. | 25 | * Bootstrap services. |
25 | * | 26 | * |
26 | * @return void | 27 | * @return void |
27 | */ | 28 | */ |
28 | public function boot() | 29 | public function boot() |
29 | { | 30 | { |
30 | $views = ['admin.job_titles.parent_id']; | 31 | $views = ['admin.job_titles.parent_id']; |
31 | View::composer($views, | 32 | View::composer($views, |
32 | function($view) | 33 | function($view) |
33 | { | 34 | { |
34 | static $items = null; | 35 | static $items = null; |
35 | 36 | ||
36 | if (is_null($items)) { | 37 | if (is_null($items)) { |
37 | $items = Job_title::query()-> | 38 | $items = Job_title::query()-> |
38 | orderByDesc('sort')-> | 39 | orderByDesc('sort')-> |
39 | orderBy('name')-> | 40 | orderBy('name')-> |
40 | active()-> | 41 | active()-> |
41 | get(); | 42 | get(); |
42 | $parent = 0; | 43 | $parent = 0; |
43 | $view->with(['items' => $items, 'parent' => $parent]); | 44 | $view->with(['items' => $items, 'parent' => $parent]); |
44 | } else { | 45 | } else { |
45 | $view->with(['items' => $items]); | 46 | $view->with(['items' => $items]); |
46 | } | 47 | } |
47 | 48 | ||
48 | } | 49 | } |
49 | ); | 50 | ); |
50 | 51 | ||
51 | $views2 = ['layout.admin', 'admin.index']; | 52 | $views2 = ['layout.admin', 'admin.index']; |
52 | 53 | ||
53 | View::composer($views2, | 54 | View::composer($views2, |
54 | function($view){ | 55 | function($view){ |
55 | $id = Auth::user()->id; | 56 | $id = Auth::user()->id; |
57 | $is_manager = Auth::user()->is_manager; | ||
58 | $admin = Auth::user()->admin; | ||
59 | |||
60 | $contents = ContentRoles::query()->get(); | ||
61 | |||
56 | $query = DB::select(DB::raw('SELECT count(*) as MsgCount | 62 | $query = DB::select(DB::raw('SELECT count(*) as MsgCount |
57 | FROM messages m1 | 63 | FROM messages m1 |
58 | Where ((m1.flag_new = 1) and (m1.to_user_id = :uid)) | 64 | Where ((m1.flag_new = 1) and (m1.to_user_id = :uid)) |
59 | '), ['uid' => $id] | 65 | '), ['uid' => $id] |
60 | ); | 66 | ); |
61 | 67 | ||
62 | $view->with(['MsgCount' => $query[0]->MsgCount, 'UserId' => $id]); | 68 | $view->with(['MsgCount' => $query[0]->MsgCount, |
69 | 'UserId' => $id, | ||
70 | 'is_manager' => $is_manager, | ||
71 | 'admin' => $admin, | ||
72 | 'contents' => $contents]); | ||
63 | } | 73 | } |
64 | ); | 74 | ); |
65 | } | 75 | } |
66 | } | 76 | } |
67 | 77 |
database/migrations/2023_11_20_062736_alter_users_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('users', function (Blueprint $table) { | ||
17 | $table->boolean('is_manager')->default(1); | ||
18 | }); | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Reverse the migrations. | ||
23 | * | ||
24 | * @return void | ||
25 | */ | ||
26 | public function down() | ||
27 | { | ||
28 | Schema::table('users', function (Blueprint $table) { | ||
29 | $table->dropColumn('is_manager'); | ||
30 | }); | ||
31 | } | ||
32 | }; | ||
33 |
database/migrations/2023_11_20_064430_create_content_roles_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::create('content_roles', function (Blueprint $table) { | ||
17 | $table->id(); | ||
18 | $table->string('url_page', 255); | ||
19 | $table->boolean('is_admin')->default(1); | ||
20 | $table->boolean('is_manager')->default(0); | ||
21 | $table->timestamps(); | ||
22 | }); | ||
23 | } | ||
24 | |||
25 | /** | ||
26 | * Reverse the migrations. | ||
27 | * | ||
28 | * @return void | ||
29 | */ | ||
30 | public function down() | ||
31 | { | ||
32 | Schema::dropIfExists('content_roles'); | ||
33 | } | ||
34 | }; | ||
35 |
database/migrations/2023_11_20_070121_alter_content_roles_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('content_roles', function (Blueprint $table) { | ||
17 | $table->string('name', 255)->nullable(false); | ||
18 | }); | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Reverse the migrations. | ||
23 | * | ||
24 | * @return void | ||
25 | */ | ||
26 | public function down() | ||
27 | { | ||
28 | Schema::table('content_roles', function (Blueprint $table) { | ||
29 | $table->dropColumn('name'); | ||
30 | }); | ||
31 | } | ||
32 | }; | ||
33 |
resources/views/admin/content/roles_index.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Роли администраторов и менеджеров для каждой страницы']) | |
2 | |||
3 | @section('script') | ||
4 | <script> | ||
5 | $(document).ready(function() { | ||
6 | $(document).on('click', '.check_click', function () { | ||
7 | var this_ = $(this); | ||
8 | var value = this_.val(); | ||
9 | var field = this_.attr('data-field'); | ||
10 | var ajax_block = $('#ajax_block'); | ||
11 | var bool = 0; | ||
12 | var str_get = ''; | ||
13 | |||
14 | if(this.checked){ | ||
15 | bool = 1; | ||
16 | } else { | ||
17 | bool = 0; | ||
18 | } | ||
19 | console.log(field); | ||
20 | str_get = "id=" + value + "&" + field + "=" + bool; | ||
21 | console.log(str_get); | ||
22 | |||
23 | $.ajax({ | ||
24 | type: "GET", | ||
25 | url: "{{ url()->full()}}", | ||
26 | data: str_get, | ||
27 | success: function (data) { | ||
28 | console.log('Обновление таблицы пользователей '); | ||
29 | //data = JSON.parse(data); | ||
30 | //console.log(data); | ||
31 | ajax_block.html(data); | ||
32 | }, | ||
33 | headers: { | ||
34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
35 | }, | ||
36 | error: function (data) { | ||
37 | console.log('Error: ' + data); | ||
38 | } | ||
39 | }); | ||
40 | }); | ||
41 | }); | ||
42 | </script> | ||
43 | @endsection | ||
44 | |||
45 | @section('content') | ||
46 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | ||
47 | <div class="w-full overflow-x-auto"> | ||
48 | <table class="w-full whitespace-no-wrap"> | ||
49 | <thead> | ||
50 | <tr | ||
51 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | ||
52 | > | ||
53 | <th class="px-4 py-3 text-xs">№</th> | ||
54 | <th class="px-4 py-3 text-xs">Раздел</th> | ||
55 | <th class="px-4 py-3 text-xs">URL-страницы</th> | ||
56 | <th class="px-4 py-3 text-xs">Админ</th> | ||
57 | <th class="px-4 py-3 text-xs">Менеджер</th> | ||
58 | <th class="px-4 py-3 text-xs">Дата регист.</th> | ||
59 | </tr> | ||
60 | </thead> | ||
61 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
62 | @foreach($roles as $role) | ||
63 | <tr class="text-gray-700 dark:text-gray-400"> | ||
64 | <td class="px-4 py-3 text-xs"> | ||
65 | {{$role->id}} | ||
66 | </td> | ||
67 | <td class="px-4 py-3 text-xs"> | ||
68 | {{$role->name}} | ||
69 | </td> | ||
70 | <td class="px-4 py-3 text-xs"> | ||
71 | {{ $role->url_page }} | ||
72 | </td> | ||
73 | <td class="px-4 py-3 text-xs"> | ||
74 | {{ $role->is_admin }} | ||
75 | </td> | ||
76 | <td class="px-4 py-3 text-xs"> | ||
77 | {{ $role->is_manager }} | ||
78 | </td> | ||
79 | |||
80 | <td class="px-4 py-3 text-xs"> | ||
81 | {{ date('d.m.Y', strtotime($role->created_at)) }} | ||
82 | </td> | ||
83 | </tr> | ||
84 | @endforeach | ||
85 | </tbody> | ||
86 | </table> | ||
87 | </div> | ||
88 | |||
89 | <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"> | ||
90 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
91 | {{$roles->links('admin.pagginate') }} | ||
92 | </div> | ||
93 | </div> | ||
94 | |||
95 | @endsection | ||
96 |
resources/views/admin/content/roles_index_ajax.blade.php
resources/views/admin/employer/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Работодатели']) | 1 | @extends('layout.admin', ['title' => 'Админка - Работодатели']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.checkban', function () { | 6 | $(document).on('click', '.checkban', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var ajax_block = $('#ajax_block'); | 9 | var ajax_block = $('#ajax_block'); |
10 | var bool = 0; | 10 | var bool = 0; |
11 | 11 | ||
12 | if(this.checked){ | 12 | if(this.checked){ |
13 | bool = 1; | 13 | bool = 1; |
14 | } else { | 14 | } else { |
15 | bool = 0; | 15 | bool = 0; |
16 | } | 16 | } |
17 | 17 | ||
18 | $.ajax({ | 18 | $.ajax({ |
19 | type: "GET", | 19 | type: "GET", |
20 | url: "{{ url()->full()}}", | 20 | url: "{{ url()->full()}}", |
21 | data: "id=" + value + "&is_ban=" + bool, | 21 | data: "id=" + value + "&is_ban=" + bool, |
22 | success: function (data) { | 22 | success: function (data) { |
23 | console.log('Обновление таблицы пользователей '); | 23 | console.log('Обновление таблицы пользователей '); |
24 | //data = JSON.parse(data); | 24 | //data = JSON.parse(data); |
25 | //console.log(data); | 25 | //console.log(data); |
26 | ajax_block.html(data); | 26 | ajax_block.html(data); |
27 | }, | 27 | }, |
28 | headers: { | 28 | headers: { |
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
30 | }, | 30 | }, |
31 | error: function (data) { | 31 | error: function (data) { |
32 | console.log('Error: ' + data); | 32 | console.log('Error: ' + data); |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }); | 35 | }); |
36 | 36 | ||
37 | }); | 37 | }); |
38 | </script> | 38 | </script> |
39 | <script> | 39 | <script> |
40 | const btns = document.querySelectorAll('.btn_del'); | 40 | const btns = document.querySelectorAll('.btn_del'); |
41 | btns.forEach(btn => { | 41 | btns.forEach(btn => { |
42 | btn.addEventListener('click', (e) => { | 42 | btn.addEventListener('click', (e) => { |
43 | console.log('click button'); | 43 | console.log('click button'); |
44 | let id = e.target.id; | 44 | let id = e.target.id; |
45 | let form = document.getElementById("form_modal_del"); | 45 | let form = document.getElementById("form_modal_del"); |
46 | form.action = "<?=$_SERVER['APP_URL']?>admin/employers/delete/"+e.target.getAttribute('data-employer')+'/'+e.target.getAttribute('data-user'); | 46 | form.action = "<?=$_SERVER['APP_URL']?>admin/employers/delete/"+e.target.getAttribute('data-employer')+'/'+e.target.getAttribute('data-user'); |
47 | //document.getElementById("title_modal").innerHTML = id; | 47 | //document.getElementById("title_modal").innerHTML = id; |
48 | console.log(e.target.getAttribute('data-employer')); | 48 | console.log(e.target.getAttribute('data-employer')); |
49 | console.log(e.target.getAttribute('data-user')); | 49 | console.log(e.target.getAttribute('data-user')); |
50 | 50 | ||
51 | }); | 51 | }); |
52 | }); | 52 | }); |
53 | </script> | 53 | </script> |
54 | @endsection | 54 | @endsection |
55 | 55 | ||
56 | @section('search') | 56 | @section('search') |
57 | @include('admin.find_employer', ['select_category' => $select_category]) | 57 | @include('admin.find_employer', ['select_category' => $select_category]) |
58 | @endsection | 58 | @endsection |
59 | 59 | ||
60 | @section('modal') | 60 | @section('modal') |
61 | @include('admin.employer.modal') | 61 | @include('admin.employer.modal') |
62 | @endsection | 62 | @endsection |
63 | 63 | ||
64 | @section('content') | 64 | @section('content') |
65 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 65 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
66 | 66 | ||
67 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 67 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
68 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> | 68 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> |
69 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 69 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
70 | <path | 70 | <path |
71 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> | 71 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> |
72 | </svg> | 72 | </svg> |
73 | </div> | 73 | </div> |
74 | <div> | 74 | <div> |
75 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 75 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
76 | Всего работодателей | 76 | Всего работодателей |
77 | </p> | 77 | </p> |
78 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 78 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
79 | {{ $all_employer }} | 79 | {{ $all_employer }} |
80 | </p> | 80 | </p> |
81 | </div> | 81 | </div> |
82 | </div> | 82 | </div> |
83 | 83 | ||
84 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 84 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
85 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> | 85 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> |
86 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 86 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
87 | <path | 87 | <path |
88 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> | 88 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> |
89 | </svg> | 89 | </svg> |
90 | </div> | 90 | </div> |
91 | <div> | 91 | <div> |
92 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 92 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
93 | Опубликованых | 93 | Опубликованых |
94 | </p> | 94 | </p> |
95 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 95 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
96 | {{ $all_public }} | 96 | {{ $all_public }} |
97 | </p> | 97 | </p> |
98 | </div> | 98 | </div> |
99 | </div> | 99 | </div> |
100 | 100 | ||
101 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 101 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
102 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> | 102 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> |
103 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 103 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
104 | <path | 104 | <path |
105 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> | 105 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> |
106 | </svg> | 106 | </svg> |
107 | </div> | 107 | </div> |
108 | <div> | 108 | <div> |
109 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 109 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
110 | На рассмотрении | 110 | На рассмотрении |
111 | </p> | 111 | </p> |
112 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 112 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
113 | {{ $all_status }} | 113 | {{ $all_status }} |
114 | </p> | 114 | </p> |
115 | </div> | 115 | </div> |
116 | </div> | 116 | </div> |
117 | </div> | 117 | </div> |
118 | 118 | ||
119 | <div class="text-gray-700 dark:text-gray-400"> | ||
120 | <p class="px-4 py-3">Количество: {{ $all_current }}</p> | ||
121 | </div> | ||
122 | |||
119 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 123 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
120 | <div class="w-full overflow-x-auto"> | 124 | <div class="w-full overflow-x-auto"> |
121 | <table class="w-full whitespace-no-wrap"> | 125 | <table class="w-full whitespace-no-wrap"> |
122 | <thead> | 126 | <thead> |
123 | <tr | 127 | <tr |
124 | 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" | 128 | 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" |
125 | > | 129 | > |
126 | <th class="px-4 py-3">№</th> | 130 | <th class="px-4 py-3">№</th> |
127 | <th class="px-4 py-3">ID</th> | 131 | <th class="px-4 py-3">ID</th> |
128 | <th class="px-4 py-3">Лого</th> | 132 | <th class="px-4 py-3">Лого</th> |
129 | <th class="px-4 py-3">Компания/Email/Тел/Пароль</th> | 133 | <th class="px-4 py-3">Компания/Email/Тел/Пароль</th> |
130 | <th class="px-4 py-3">Категория</th> | 134 | <th class="px-4 py-3">Категория</th> |
131 | <th class="px-4 py-3">Коммент.</th> | 135 | <th class="px-4 py-3">Коммент.</th> |
132 | <th class="px-4 py-3">Дата регист.</th> | 136 | <th class="px-4 py-3">Дата регист.</th> |
133 | <th class="px-4 py-3">Редакт.</th> | 137 | <th class="px-4 py-3">Редакт.</th> |
134 | </tr> | 138 | </tr> |
135 | </thead> | 139 | </thead> |
136 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 140 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
137 | @foreach($users as $user) | 141 | @foreach($users as $user) |
138 | <tr class="text-gray-700 dark:text-gray-400"> | 142 | <tr class="text-gray-700 dark:text-gray-400"> |
139 | <td class="px-4 py-3 text-xs"> | 143 | <td class="px-4 py-3 text-xs"> |
140 | {{$user->id}} | 144 | {{$user->id}} |
141 | </td> | 145 | </td> |
142 | <td class="px-4 py-3 text-xs"> | 146 | <td class="px-4 py-3 text-xs"> |
143 | @if (isset($user->code_id)) | 147 | @if (isset($user->code_id)) |
144 | {{$user->code_id}} | 148 | {{$user->code_id}} |
145 | @endif | 149 | @endif |
146 | </td> | 150 | </td> |
147 | <td class="px-4 py-3 text-xs"> | 151 | <td class="px-4 py-3 text-xs"> |
148 | @if (isset($user->emp_logo) && ($user->emp_logo)) | 152 | @if (isset($user->emp_logo) && ($user->emp_logo)) |
149 | <div class="flex items-center text-sm"> | 153 | <div class="flex items-center text-sm"> |
150 | <div | 154 | <div |
151 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 155 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
152 | > | 156 | > |
153 | <img | 157 | <img |
154 | class="object-cover w-full h-full rounded-full" | 158 | class="object-cover w-full h-full rounded-full" |
155 | src="{{ asset(Storage::url($user->emp_logo)) }}" | 159 | src="{{ asset(Storage::url($user->emp_logo)) }}" |
156 | alt="" | 160 | alt="" |
157 | loading="lazy" | 161 | loading="lazy" |
158 | /> | 162 | /> |
159 | <div | 163 | <div |
160 | class="absolute inset-0 rounded-full shadow-inner" | 164 | class="absolute inset-0 rounded-full shadow-inner" |
161 | aria-hidden="true" | 165 | aria-hidden="true" |
162 | ></div> | 166 | ></div> |
163 | </div> | 167 | </div> |
164 | </div> | 168 | </div> |
165 | @else | 169 | @else |
166 | - | 170 | - |
167 | @endif | 171 | @endif |
168 | </td> | 172 | </td> |
169 | 173 | ||
170 | <td class="px-4 py-3 text-xs"> | 174 | <td class="px-4 py-3 text-xs"> |
171 | <div class="flex items-center text-sm"> | 175 | <div class="flex items-center text-sm"> |
172 | <div> | 176 | <div> |
173 | <p class="font-semibold">{{$user->name}}</p> | 177 | <p class="font-semibold">{{$user->name}}</p> |
174 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | 178 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> |
175 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 179 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
176 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | 180 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} |
177 | </p> | 181 | </p> |
178 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 182 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
179 | @if (!empty($user->pubpassword)) | 183 | @if (!empty($user->pubpassword)) |
180 | {{ base64_decode($user->pubpassword) }} | 184 | {{ base64_decode($user->pubpassword) }} |
181 | @endif | 185 | @endif |
182 | </p> | 186 | </p> |
183 | </div> | 187 | </div> |
184 | </div> | 188 | </div> |
185 | 189 | ||
186 | </td> | 190 | </td> |
187 | <td class="px-4 py-3 text-xs"> | 191 | <td class="px-4 py-3 text-xs"> |
188 | {{ $user->category }} | 192 | {{ $user->category }} |
189 | </td> | 193 | </td> |
190 | <td class="px-4 py-3 text-xs"> | 194 | <td class="px-4 py-3 text-xs"> |
191 | @if (!empty($user->comment_admin)) | 195 | @if (!empty($user->comment_admin)) |
192 | 196 | ||
193 | <a style="text-decoration: underline;" href="{{ route('admin.comment-employer', ['employer' => $user->emp_id]) }}">Есть</a> | 197 | <a style="text-decoration: underline;" href="{{ route('admin.comment-employer', ['employer' => $user->emp_id]) }}">Есть</a> |
194 | @else | 198 | @else |
195 | Нет | 199 | Нет |
196 | @endif | 200 | @endif |
197 | </td> | 201 | </td> |
198 | <td class="px-4 py-3 text-xs"> | 202 | <td class="px-4 py-3 text-xs"> |
199 | {{ date('d.m.Y', strtotime($user->created_at)) }} | 203 | {{ date('d.m.Y', strtotime($user->created_at)) }} |
200 | </td> | 204 | </td> |
201 | <td class="px-4 py-3 text-xs"> | 205 | <td class="px-4 py-3 text-xs"> |
202 | @if (!empty($user->emp_id)) | 206 | @if (!empty($user->emp_id)) |
203 | <a href="{{ route('admin.employer-profile', ['employer' => $user->emp_id]) }}">Изменить</a> | 207 | <a href="{{ route('admin.employer-profile', ['employer' => $user->emp_id]) }}">Изменить</a> |
204 | @if ($user->emp_id > 2) | <a @click="openModal" style="cursor: pointer;" data-employer="{{$user->emp_id}}" data-user="{{$user->user_id}}" class="btn_del btn btn-danger">Удалить</a> | 208 | @if ($user->emp_id > 2) | <a @click="openModal" style="cursor: pointer;" data-employer="{{$user->emp_id}}" data-user="{{$user->user_id}}" class="btn_del btn btn-danger">Удалить</a> |
205 | @endif | 209 | @endif |
206 | @endif | 210 | @endif |
207 | </td> | 211 | </td> |
208 | <!--<td class="px-4 py-3 text-sm"> | 212 | <!--<td class="px-4 py-3 text-sm"> |
209 | @if ($user->usr_id > 1) | 213 | @if ($user->usr_id > 1) |
210 | <input type="checkbox" class="checkban" value="{{$user->usr_id}}" name="ban_{{$user->usr_id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 214 | <input type="checkbox" class="checkban" value="{{$user->usr_id}}" name="ban_{{$user->usr_id}}" {{ ($user->is_ban) ? "checked" : "" }}/> |
211 | @endif | 215 | @endif |
212 | </td>--> | 216 | </td>--> |
213 | </tr> | 217 | </tr> |
214 | @endforeach | 218 | @endforeach |
215 | </tbody> | 219 | </tbody> |
216 | </table> | 220 | </table> |
217 | </div> | 221 | </div> |
218 | 222 | ||
219 | <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"> | 223 | <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"> |
220 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | 224 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> |
221 | </div> | 225 | </div> |
222 | </div> | 226 | </div> |
223 | @endsection | 227 | @endsection |
224 | 228 |
resources/views/admin/users/index.blade.php
1 | @extends('layout.admin', ['title' => $title]) | 1 | @extends('layout.admin', ['title' => $title]) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '.check_click', function () { | 6 | $(document).on('click', '.check_click', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var value = this_.val(); | 8 | var value = this_.val(); |
9 | var field = this_.attr('data-field'); | 9 | var field = this_.attr('data-field'); |
10 | var ajax_block = $('#ajax_block'); | 10 | var ajax_block = $('#ajax_block'); |
11 | var bool = 0; | 11 | var bool = 0; |
12 | var str_get = ''; | 12 | var str_get = ''; |
13 | 13 | ||
14 | if(this.checked){ | 14 | if(this.checked){ |
15 | bool = 1; | 15 | bool = 1; |
16 | } else { | 16 | } else { |
17 | bool = 0; | 17 | bool = 0; |
18 | } | 18 | } |
19 | console.log(field); | 19 | console.log(field); |
20 | str_get = "id=" + value + "&" + field + "=" + bool; | 20 | str_get = "id=" + value + "&" + field + "=" + bool; |
21 | console.log(str_get); | 21 | console.log(str_get); |
22 | 22 | ||
23 | $.ajax({ | 23 | $.ajax({ |
24 | type: "GET", | 24 | type: "GET", |
25 | url: "{{ url()->full()}}", | 25 | url: "{{ url()->full()}}", |
26 | data: str_get, | 26 | data: str_get, |
27 | success: function (data) { | 27 | success: function (data) { |
28 | console.log('Обновление таблицы пользователей '); | 28 | console.log('Обновление таблицы пользователей '); |
29 | //data = JSON.parse(data); | 29 | //data = JSON.parse(data); |
30 | //console.log(data); | 30 | //console.log(data); |
31 | ajax_block.html(data); | 31 | ajax_block.html(data); |
32 | }, | 32 | }, |
33 | headers: { | 33 | headers: { |
34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 34 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
35 | }, | 35 | }, |
36 | error: function (data) { | 36 | error: function (data) { |
37 | console.log('Error: ' + data); | 37 | console.log('Error: ' + data); |
38 | } | 38 | } |
39 | }); | 39 | }); |
40 | }); | 40 | }); |
41 | }); | 41 | }); |
42 | </script> | 42 | </script> |
43 | @endsection | 43 | @endsection |
44 | 44 | ||
45 | @section('search') | 45 | @section('search') |
46 | @include('admin.find') | 46 | @include('admin.find') |
47 | @endsection | 47 | @endsection |
48 | 48 | ||
49 | @section('content') | 49 | @section('content') |
50 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 50 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
51 | <div class="w-full overflow-x-auto"> | 51 | <div class="w-full overflow-x-auto"> |
52 | <table class="w-full whitespace-no-wrap"> | 52 | <table class="w-full whitespace-no-wrap"> |
53 | <thead> | 53 | <thead> |
54 | <tr | 54 | <tr |
55 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 55 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
56 | > | 56 | > |
57 | <th class="px-4 py-3">№</th> | 57 | <th class="px-4 py-3 text-xs">№</th> |
58 | <th class="px-4 py-3">Имя</th> | 58 | <th class="px-4 py-3 text-xs">Имя</th> |
59 | <th class="px-4 py-3">Email/логин</th> | 59 | <th class="px-4 py-3 text-xs">Email/логин</th> |
60 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | 60 | <th class="px-4 py-3 text-xs">Работодатель/работник/администратор</th> |
61 | <th class="px-4 py-3">Бан</th> | ||
62 | <th class="px-4 py-3">Новый</th> | ||
63 | @if ($id_admin == 1) | 61 | @if ($id_admin == 1) |
64 | <th class="px-4 py-3">Админ</th> | 62 | <th class="px-4 py-3 text-xs">Админ</th> |
65 | @endif | 63 | @endif |
66 | <th class="px-4 py-3">Дата регист.</th> | 64 | <th class="px-4 py-3 text-xs">Дата регист.</th> |
67 | </tr> | 65 | </tr> |
68 | </thead> | 66 | </thead> |
69 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 67 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
70 | @foreach($users as $user) | 68 | @foreach($users as $user) |
71 | <tr class="text-gray-700 dark:text-gray-400"> | 69 | <tr class="text-gray-700 dark:text-gray-400"> |
72 | <td class="px-4 py-3"> | 70 | <td class="px-4 py-3 text-xs"> |
73 | {{$user->id}} | 71 | {{$user->id}} |
74 | </td> | 72 | </td> |
75 | <td class="px-4 py-3"> | 73 | <td class="px-4 py-3 text-xs"> |
76 | <!--<div class="flex items-center text-sm"> | 74 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}">{{ $user->name }}</a> |
77 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
78 | <div | ||
79 | class="absolute inset-0 rounded-full shadow-inner" | ||
80 | aria-hidden="true" | ||
81 | ></div> | ||
82 | </div> | ||
83 | <div> | ||
84 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | ||
85 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
86 | Все пользователи сайта | ||
87 | </p> | ||
88 | </div> | ||
89 | </div> | ||
90 | --> | ||
91 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}">{{ $user->name }}</a> | ||
92 | </td> | 75 | </td> |
93 | <td class="px-4 py-3 text-sm"> | 76 | <td class="px-4 py-3 text-xs"> |
94 | {{ $user->email }} | 77 | {{ $user->email }} |
95 | </td> | 78 | </td> |
96 | <td class="px-4 py-3 text-xs"> | 79 | <td class="px-4 py-3 text-xs"> |
97 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 80 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
98 | @if ($user->is_worker) | 81 | @if ($user->is_worker) |
99 | Работник | 82 | Работник |
100 | @else | 83 | @else |
101 | Работодатель | 84 | Работодатель |
102 | @endif | 85 | @endif |
103 | </span> | 86 | </span> |
104 | @if ($user->admin) | 87 | @if ($user->admin) |
105 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 88 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
106 | Администратор | 89 | Администратор |
107 | </span> | 90 | </span> |
108 | @endif | 91 | @endif |
109 | @if ($user->is_bd) | 92 | @if ($user->is_bd) |
110 | <span class="px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-700"> | 93 | <span class="px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-700"> |
111 | База данных | 94 | База данных |
112 | </span> | 95 | </span> |
113 | @endif | 96 | @endif |
114 | </td> | 97 | </td> |
115 | <td class="px-4 py-3 text-sm"> | ||
116 | @if ($user->id > 1) | ||
117 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | ||
118 | @endif | ||
119 | </td> | ||
120 | |||
121 | <td class="px-4 py-3 text-sm"> | ||
122 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | ||
123 | </td> | ||
124 | 98 | ||
125 | @if ($id_admin == 1) | 99 | @if ($id_admin == 1) |
126 | <td class="px-4 py-3 text-sm"> | 100 | <td class="px-4 py-3 text-xs"> |
127 | @if ($user->id > 1) | 101 | @if ($user->id > 1) |
128 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> | 102 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> |
129 | @endif | 103 | @endif |
130 | </td> | 104 | </td> |
131 | @endif | 105 | @endif |
132 | 106 | ||
133 | <td class="px-4 py-3 text-sm"> | 107 | <td class="px-4 py-3 text-xs"> |
134 | {{ date('d.m.Y', strtotime($user->created_at)) }} | 108 | {{ date('d.m.Y', strtotime($user->created_at)) }} |
135 | </td> | 109 | </td> |
136 | </tr> | 110 | </tr> |
137 | @endforeach | 111 | @endforeach |
138 | </tbody> | 112 | </tbody> |
139 | </table> | 113 | </table> |
140 | </div> | 114 | </div> |
141 | 115 | ||
142 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 116 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
143 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | 117 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> |
144 | <?=$users->links('admin.pagginate'); ?> | 118 | <?=$users->links('admin.pagginate'); ?> |
145 | </div> | 119 | </div> |
146 | 120 | ||
147 | 121 | ||
148 | <!--<div | 122 | <!--<div |
149 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | 123 | 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" |
150 | > | 124 | > |
151 | <span class="flex items-center col-span-3"> | 125 | <span class="flex items-center col-span-3"> |
152 | Showing 21-30 of 100 | 126 | Showing 21-30 of 100 |
153 | </span> | 127 | </span> |
154 | <span class="col-span-2"></span> | 128 | <span class="col-span-2"></span> |
155 | 129 | ||
156 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 130 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
157 | <nav aria-label="Table navigation"> | 131 | <nav aria-label="Table navigation"> |
158 | <ul class="inline-flex items-center"> | 132 | <ul class="inline-flex items-center"> |
159 | <li> | 133 | <li> |
160 | <button | 134 | <button |
161 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 135 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
162 | aria-label="Previous" | 136 | aria-label="Previous" |
163 | > | 137 | > |
164 | <svg | 138 | <svg |
165 | aria-hidden="true" | 139 | aria-hidden="true" |
166 | class="w-4 h-4 fill-current" | 140 | class="w-4 h-4 fill-current" |
167 | viewBox="0 0 20 20" | 141 | viewBox="0 0 20 20" |
168 | > | 142 | > |
169 | <path | 143 | <path |
170 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | 144 | 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" |
171 | clip-rule="evenodd" | 145 | clip-rule="evenodd" |
172 | fill-rule="evenodd" | 146 | fill-rule="evenodd" |
173 | ></path> | 147 | ></path> |
174 | </svg> | 148 | </svg> |
175 | </button> | 149 | </button> |
176 | </li> | 150 | </li> |
177 | <li> | 151 | <li> |
178 | <button | 152 | <button |
179 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 153 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
180 | > | 154 | > |
181 | 1 | 155 | 1 |
182 | </button> | 156 | </button> |
183 | </li> | 157 | </li> |
184 | <li> | 158 | <li> |
185 | <button | 159 | <button |
186 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 160 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
187 | > | 161 | > |
188 | 2 | 162 | 2 |
189 | </button> | 163 | </button> |
190 | </li> | 164 | </li> |
191 | <li> | 165 | <li> |
192 | <button | 166 | <button |
193 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | 167 | 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" |
194 | > | 168 | > |
195 | 3 | 169 | 3 |
196 | </button> | 170 | </button> |
197 | </li> | 171 | </li> |
198 | <li> | 172 | <li> |
199 | <button | 173 | <button |
200 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 174 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
201 | > | 175 | > |
202 | 4 | 176 | 4 |
203 | </button> | 177 | </button> |
204 | </li> | 178 | </li> |
205 | <li> | 179 | <li> |
206 | <span class="px-3 py-1">...</span> | 180 | <span class="px-3 py-1">...</span> |
207 | </li> | 181 | </li> |
208 | <li> | 182 | <li> |
209 | <button | 183 | <button |
210 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 184 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
211 | > | 185 | > |
212 | 8 | 186 | 8 |
213 | </button> | 187 | </button> |
214 | </li> | 188 | </li> |
215 | <li> | 189 | <li> |
216 | <button | 190 | <button |
217 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 191 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
218 | > | 192 | > |
219 | 9 | 193 | 9 |
220 | </button> | 194 | </button> |
221 | </li> | 195 | </li> |
222 | <li> | 196 | <li> |
223 | <button | 197 | <button |
224 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 198 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
225 | aria-label="Next" | 199 | aria-label="Next" |
226 | > | 200 | > |
227 | <svg | 201 | <svg |
228 | class="w-4 h-4 fill-current" | 202 | class="w-4 h-4 fill-current" |
229 | aria-hidden="true" | 203 | aria-hidden="true" |
230 | viewBox="0 0 20 20" | 204 | viewBox="0 0 20 20" |
231 | > | 205 | > |
232 | <path | 206 | <path |
233 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | 207 | 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" |
234 | clip-rule="evenodd" | 208 | clip-rule="evenodd" |
235 | fill-rule="evenodd" | 209 | fill-rule="evenodd" |
236 | ></path> | 210 | ></path> |
237 | </svg> | 211 | </svg> |
238 | </button> | 212 | </button> |
239 | </li> | 213 | </li> |
240 | </ul> | 214 | </ul> |
241 | </nav> | 215 | </nav> |
242 | </span> | 216 | </span> |
243 | </div>--> | 217 | </div>--> |
244 | </div> | 218 | </div> |
245 | 219 | ||
246 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | 220 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> |
247 | 221 | ||
248 | 222 | ||
249 | @endsection | 223 | @endsection |
250 | 224 |
resources/views/admin/users/index_ajax.blade.php
1 | <div class="w-full overflow-x-auto"> | 1 | <div class="w-full overflow-x-auto"> |
2 | <table class="w-full whitespace-no-wrap"> | 2 | <table class="w-full whitespace-no-wrap"> |
3 | <thead> | 3 | <thead> |
4 | <tr | 4 | <tr |
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
6 | > | 6 | > |
7 | <th class="px-4 py-3">№</th> | 7 | <th class="px-4 py-3 text-xs">№</th> |
8 | <th class="px-4 py-3">Имя</th> | 8 | <th class="px-4 py-3 text-xs">Имя</th> |
9 | <th class="px-4 py-3">Email/логин</th> | 9 | <th class="px-4 py-3 text-xs">Email/логин</th> |
10 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | 10 | <th class="px-4 py-3 text-xs">Работодатель/работник/администратор</th> |
11 | <th class="px-4 py-3">Бан</th> | ||
12 | <th class="px-4 py-3">Новый</th> | ||
13 | @if ($id_admin == 1) | 11 | @if ($id_admin == 1) |
14 | <th class="px-4 py-3">Админ</th> | 12 | <th class="px-4 py-3 text-xs">Админ</th> |
15 | @endif | 13 | @endif |
16 | <th class="px-4 py-3">Дата регистрации</th> | 14 | <th class="px-4 py-3 text-xs">Дата регист.</th> |
17 | </tr> | 15 | </tr> |
18 | </thead> | 16 | </thead> |
19 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 17 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
20 | @foreach($users as $user) | 18 | @foreach($users as $user) |
21 | <tr class="text-gray-700 dark:text-gray-400"> | 19 | <tr class="text-gray-700 dark:text-gray-400"> |
22 | <td class="px-4 py-3"> | 20 | <td class="px-4 py-3 text-xs"> |
23 | {{$user->id}} | 21 | {{$user->id}} |
24 | </td> | 22 | </td> |
25 | <td class="px-4 py-3"> | 23 | <td class="px-4 py-3 text-xs"> |
26 | {{ $user->name }} | 24 | <a style="text-decoration: underline;" href="{{ route('admin.user-profile', ['user' => $user->id]) }}">{{ $user->name }}</a> |
27 | </td> | 25 | </td> |
28 | <td class="px-4 py-3 text-sm"> | 26 | <td class="px-4 py-3 text-xs"> |
29 | {{ $user->email }} | 27 | {{ $user->email }} |
30 | </td> | 28 | </td> |
31 | <td class="px-4 py-3 text-xs"> | 29 | <td class="px-4 py-3 text-xs"> |
32 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 30 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
33 | @if ($user->is_worker) | 31 | @if ($user->is_worker) |
34 | Работник | 32 | Работник |
35 | @else | 33 | @else |
36 | Работодатель | 34 | Работодатель |
37 | @endif | 35 | @endif |
38 | </span> | 36 | </span> |
39 | @if ($user->admin) | 37 | @if ($user->admin) |
40 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 38 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
41 | Администратор | 39 | Администратор |
42 | </span> | 40 | </span> |
43 | @endif | 41 | @endif |
44 | </td> | 42 | @if ($user->is_bd) |
45 | <td class="px-4 py-3 text-sm"> | 43 | <span class="px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-700"> |
46 | @if ($user->id > 1) | 44 | База данных |
47 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_ban" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | 45 | </span> |
48 | @endif | ||
49 | </td> | ||
50 | <td class="px-4 py-3 text-sm"> | ||
51 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="is_new" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | ||
52 | </td> | ||
53 | |||
54 | @if ($id_admin == 1) | ||
55 | <td class="px-4 py-3 text-sm"> | ||
56 | @if ($user->id > 1) | ||
57 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> | ||
58 | @endif | 46 | @endif |
59 | </td> | 47 | </td> |
60 | @endif | ||
61 | 48 | ||
62 | <td class="px-4 py-3 text-sm"> | 49 | @if ($id_admin == 1) |
63 | {{ date('d.m.Y', strtotime($user->created_at)) }} | 50 | <td class="px-4 py-3 text-xs"> |
64 | </td> | 51 | @if ($user->id > 1) |
65 | </tr> | 52 | <input type="checkbox" class="check_click" value="{{$user->id}}" data-field="admin" name="admin_{{$user->id}}" {{ ($user->admin) ? "checked" : "" }}/> |
53 | @endif | ||
54 | </td> | ||
55 | @endif | ||
56 | |||
57 | <td class="px-4 py-3 text-xs"> | ||
58 | {{ date('d.m.Y', strtotime($user->created_at)) }} | ||
59 | </td> | ||
60 | </tr> | ||
66 | @endforeach | 61 | @endforeach |
67 | </tbody> | 62 | </tbody> |
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_new.css')}}" /> | 11 | <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output_new.css')}}" /> |
12 | <link rel="stylesheet" href="{{ asset('./assets/css/tabs.css')}}" /> | 12 | <link rel="stylesheet" href="{{ asset('./assets/css/tabs.css')}}" /> |
13 | <script | 13 | <script |
14 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" | 14 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" |
15 | defer | 15 | defer |
16 | ></script> | 16 | ></script> |
17 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> | 17 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> |
18 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> | 18 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> |
19 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> | 19 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> |
20 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> | 20 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> |
21 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> | 21 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> |
22 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> | 22 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> |
23 | </head> | 23 | </head> |
24 | <body> | 24 | <body> |
25 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> | 25 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> |
26 | <!-- Desktop sidebar --> | 26 | <!-- Desktop sidebar --> |
27 | <aside | 27 | <aside |
28 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" | 28 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" |
29 | > | 29 | > |
30 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 30 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
31 | <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 31 | <a class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
32 | href="{{ route('admin.index') }}"> | 32 | href="{{ route('admin.index') }}"> |
33 | Админка | 33 | Админка |
34 | </a> | 34 | </a> |
35 | |||
35 | <ul class="mt-6"> | 36 | <ul class="mt-6"> |
37 | @if (($is_manager == 1) || ($admin == 1)) | ||
36 | <li class="relative px-6 py-3"> | 38 | <li class="relative px-6 py-3"> |
37 | <span | 39 | <span |
38 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 40 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
39 | aria-hidden="true" | 41 | aria-hidden="true" |
40 | ></span> | 42 | ></span> |
41 | <!--class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" | ||
42 | --> | ||
43 | <a | 43 | <a |
44 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" | 44 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" |
45 | href="{{ route('admin.index') }}" | 45 | href="{{ route('admin.index') }}" |
46 | > | 46 | > |
47 | <svg | 47 | <svg |
48 | class="w-5 h-5" | 48 | class="w-5 h-5" |
49 | aria-hidden="true" | 49 | aria-hidden="true" |
50 | fill="none" | 50 | fill="none" |
51 | stroke-linecap="round" | 51 | stroke-linecap="round" |
52 | stroke-linejoin="round" | 52 | stroke-linejoin="round" |
53 | stroke-width="2" | 53 | stroke-width="2" |
54 | viewBox="0 0 24 24" | 54 | viewBox="0 0 24 24" |
55 | stroke="currentColor" | 55 | stroke="currentColor" |
56 | > | 56 | > |
57 | <path | 57 | <path |
58 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" | 58 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
59 | ></path> | 59 | ></path> |
60 | </svg> | 60 | </svg> |
61 | <span class="ml-4">Главная страница</span> | 61 | <span class="ml-4">Главная страница</span> |
62 | </a> | 62 | </a> |
63 | </li> | 63 | </li> |
64 | @endif | ||
64 | </ul> | 65 | </ul> |
65 | <ul> | 66 | <ul> |
66 | @if ($UserId == 1) | 67 | @if (($UserId == 1) || ($admin == 1)) |
67 | <li class="relative px-6 py-3"> | 68 | <li class="relative px-6 py-3"> |
68 | <a | 69 | <a |
69 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" | 70 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" |
70 | href="{{ route('admin.users') }}" | 71 | href="{{ route('admin.users') }}" |
71 | > | 72 | > |
72 | <svg | 73 | <svg |
73 | class="w-5 h-5" | 74 | class="w-5 h-5" |
74 | aria-hidden="true" | 75 | aria-hidden="true" |
75 | fill="none" | 76 | fill="none" |
76 | stroke-linecap="round" | 77 | stroke-linecap="round" |
77 | stroke-linejoin="round" | 78 | stroke-linejoin="round" |
78 | stroke-width="2" | 79 | stroke-width="2" |
79 | viewBox="0 0 24 24" | 80 | viewBox="0 0 24 24" |
80 | stroke="currentColor" | 81 | stroke="currentColor" |
81 | > | 82 | > |
82 | <path | 83 | <path |
83 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 84 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
84 | ></path> | 85 | ></path> |
85 | </svg> | 86 | </svg> |
86 | <span class="ml-4">Пользователи</span> | 87 | <span class="ml-4">Пользователи</span> |
87 | </a> | 88 | </a> |
88 | </li> | 89 | </li> |
89 | @endif | 90 | @endif |
91 | |||
92 | @if ($admin == 1) | ||
93 | <!--<li class="relative px-6 py-3"> | ||
94 | <a | ||
95 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" | ||
96 | href="{{ route('admin.admin_roles') }}" | ||
97 | > | ||
98 | <svg | ||
99 | class="w-5 h-5" | ||
100 | aria-hidden="true" | ||
101 | fill="none" | ||
102 | stroke-linecap="round" | ||
103 | stroke-linejoin="round" | ||
104 | stroke-width="2" | ||
105 | viewBox="0 0 24 24" | ||
106 | stroke="currentColor" | ||
107 | > | ||
108 | <path | ||
109 | 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" | ||
110 | ></path> | ||
111 | </svg> | ||
112 | <span class="ml-4">Роли администраторов</span> | ||
113 | </a> | ||
114 | </li>--> | ||
115 | @endif | ||
116 | |||
117 | @if ($admin == 1) | ||
90 | <li class="relative px-6 py-3"> | 118 | <li class="relative px-6 py-3"> |
91 | <a | 119 | <a |
92 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" | 120 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" |
93 | > | 121 | > |
94 | <svg | 122 | <svg |
95 | class="w-5 h-5" | 123 | class="w-5 h-5" |
96 | aria-hidden="true" | 124 | aria-hidden="true" |
97 | fill="none" | 125 | fill="none" |
98 | stroke-linecap="round" | 126 | stroke-linecap="round" |
99 | stroke-linejoin="round" | 127 | stroke-linejoin="round" |
100 | stroke-width="2" | 128 | stroke-width="2" |
101 | viewBox="0 0 24 24" | 129 | viewBox="0 0 24 24" |
102 | stroke="currentColor" | 130 | stroke="currentColor" |
103 | > | 131 | > |
104 | <path | 132 | <path |
105 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 133 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
106 | ></path> | 134 | ></path> |
107 | </svg> | 135 | </svg> |
108 | <span class="ml-4">Администраторы</span> | 136 | <span class="ml-4">Администраторы</span> |
109 | </a> | 137 | </a> |
110 | </li> | 138 | </li> |
139 | @endif | ||
140 | |||
141 | @if (($is_manager == 1) || ($admin == 1)) | ||
111 | <li class="relative px-6 py-3"> | 142 | <li class="relative px-6 py-3"> |
112 | <a | 143 | <a |
113 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" | 144 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" |
114 | > | 145 | > |
115 | <svg | 146 | <svg |
116 | class="w-5 h-5" | 147 | class="w-5 h-5" |
117 | aria-hidden="true" | 148 | aria-hidden="true" |
118 | fill="none" | 149 | fill="none" |
119 | stroke-linecap="round" | 150 | stroke-linecap="round" |
120 | stroke-linejoin="round" | 151 | stroke-linejoin="round" |
121 | stroke-width="2" | 152 | stroke-width="2" |
122 | viewBox="0 0 24 24" | 153 | viewBox="0 0 24 24" |
123 | stroke="currentColor" | 154 | stroke="currentColor" |
124 | > | 155 | > |
125 | <path | 156 | <path |
126 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 157 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
127 | ></path> | 158 | ></path> |
128 | </svg> | 159 | </svg> |
129 | <span class="ml-4">Работодатели</span> | 160 | <span class="ml-4">Работодатели</span> |
130 | </a> | 161 | </a> |
131 | </li> | 162 | </li> |
163 | @endif | ||
164 | |||
165 | @if (($is_manager == 1) || ($admin == 1)) | ||
132 | <li class="relative px-6 py-3"> | 166 | <li class="relative px-6 py-3"> |
133 | <a | 167 | <a |
134 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" | 168 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" |
135 | > | 169 | > |
136 | <svg | 170 | <svg |
137 | class="w-5 h-5" | 171 | class="w-5 h-5" |
138 | aria-hidden="true" | 172 | aria-hidden="true" |
139 | fill="none" | 173 | fill="none" |
140 | stroke-linecap="round" | 174 | stroke-linecap="round" |
141 | stroke-linejoin="round" | 175 | stroke-linejoin="round" |
142 | stroke-width="2" | 176 | stroke-width="2" |
143 | viewBox="0 0 24 24" | 177 | viewBox="0 0 24 24" |
144 | stroke="currentColor" | 178 | stroke="currentColor" |
145 | > | 179 | > |
146 | <path | 180 | <path |
147 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 181 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
148 | ></path> | 182 | ></path> |
149 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 183 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
150 | </svg> | 184 | </svg> |
151 | <span class="ml-4">Соискатели</span> | 185 | <span class="ml-4">Соискатели</span> |
152 | </a> | 186 | </a> |
153 | </li> | 187 | </li> |
188 | @endif | ||
189 | |||
190 | @if (($is_manager) || ($admin)) | ||
154 | <li class="relative px-6 py-3"> | 191 | <li class="relative px-6 py-3"> |
155 | <a | 192 | <a |
156 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" | 193 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" |
157 | > | 194 | > |
158 | <svg | 195 | <svg |
159 | class="w-5 h-5" | 196 | class="w-5 h-5" |
160 | aria-hidden="true" | 197 | aria-hidden="true" |
161 | fill="none" | 198 | fill="none" |
162 | stroke-linecap="round" | 199 | stroke-linecap="round" |
163 | stroke-linejoin="round" | 200 | stroke-linejoin="round" |
164 | stroke-width="2" | 201 | stroke-width="2" |
165 | viewBox="0 0 24 24" | 202 | viewBox="0 0 24 24" |
166 | stroke="currentColor" | 203 | stroke="currentColor" |
167 | > | 204 | > |
168 | <path | 205 | <path |
169 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 206 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
170 | ></path> | 207 | ></path> |
171 | </svg> | 208 | </svg> |
172 | <span class="ml-4">Вакансии</span> | 209 | <span class="ml-4">Вакансии</span> |
173 | </a> | 210 | </a> |
174 | </li> | 211 | </li> |
212 | @endif | ||
175 | 213 | ||
214 | @if ($admin) | ||
176 | <li class="relative px-6 py-3"> | 215 | <li class="relative px-6 py-3"> |
177 | <a | 216 | <a |
178 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 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 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
179 | > | 218 | > |
180 | <svg | 219 | <svg |
181 | class="w-5 h-5" | 220 | class="w-5 h-5" |
182 | aria-hidden="true" | 221 | aria-hidden="true" |
183 | fill="none" | 222 | fill="none" |
184 | stroke-linecap="round" | 223 | stroke-linecap="round" |
185 | stroke-linejoin="round" | 224 | stroke-linejoin="round" |
186 | stroke-width="2" | 225 | stroke-width="2" |
187 | viewBox="0 0 24 24" | 226 | viewBox="0 0 24 24" |
188 | stroke="currentColor" | 227 | stroke="currentColor" |
189 | > | 228 | > |
190 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 229 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
191 | </svg> | 230 | </svg> |
192 | <span class="ml-4">Сообщения все</span> | 231 | <span class="ml-4">Сообщения все</span> |
193 | </a> | 232 | </a> |
194 | </li> | 233 | </li> |
234 | @endif | ||
195 | 235 | ||
236 | @if ($admin) | ||
196 | <li class="relative px-6 py-3"> | 237 | <li class="relative px-6 py-3"> |
197 | <a | 238 | <a |
198 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-messages') }}" | 239 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-messages') }}" |
199 | > | 240 | > |
200 | <svg | 241 | <svg |
201 | class="w-5 h-5" | 242 | class="w-5 h-5" |
202 | aria-hidden="true" | 243 | aria-hidden="true" |
203 | fill="none" | 244 | fill="none" |
204 | stroke-linecap="round" | 245 | stroke-linecap="round" |
205 | stroke-linejoin="round" | 246 | stroke-linejoin="round" |
206 | stroke-width="2" | 247 | stroke-width="2" |
207 | viewBox="0 0 24 24" | 248 | viewBox="0 0 24 24" |
208 | stroke="currentColor" | 249 | stroke="currentColor" |
209 | > | 250 | > |
210 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 251 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
211 | </svg> | 252 | </svg> |
212 | <span class="ml-4">Заявки на рассылку</span> | 253 | <span class="ml-4">Заявки на рассылку</span> |
213 | </a> | 254 | </a> |
214 | </li> | 255 | </li> |
256 | @endif | ||
215 | 257 | ||
258 | @if (($is_manager) || ($admin)) | ||
216 | <li class="relative px-6 py-3"> | 259 | <li class="relative px-6 py-3"> |
217 | <a | 260 | <a |
218 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}" | 261 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}" |
219 | > | 262 | > |
220 | <svg | 263 | <svg |
221 | class="w-5 h-5" | 264 | class="w-5 h-5" |
222 | aria-hidden="true" | 265 | aria-hidden="true" |
223 | fill="none" | 266 | fill="none" |
224 | stroke-linecap="round" | 267 | stroke-linecap="round" |
225 | stroke-linejoin="round" | 268 | stroke-linejoin="round" |
226 | stroke-width="2" | 269 | stroke-width="2" |
227 | viewBox="0 0 24 24" | 270 | viewBox="0 0 24 24" |
228 | stroke="currentColor" | 271 | stroke="currentColor" |
229 | > | 272 | > |
230 | <path | 273 | <path |
231 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 274 | 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" |
232 | ></path> | 275 | ></path> |
233 | </svg> | 276 | </svg> |
234 | <span class="ml-4">Группы пользователей</span> | 277 | <span class="ml-4">Группы пользователей</span> |
235 | </a> | 278 | </a> |
236 | </li> | 279 | </li> |
280 | @endif | ||
237 | 281 | ||
282 | @if (($is_manager) || ($admin)) | ||
238 | <li class="relative px-6 py-3"> | 283 | <li class="relative px-6 py-3"> |
239 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.media') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.media') }}"> | 284 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.media') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.media') }}"> |
240 | <svg | 285 | <svg |
241 | class="w-5 h-5" | 286 | class="w-5 h-5" |
242 | aria-hidden="true" | 287 | aria-hidden="true" |
243 | fill="none" | 288 | fill="none" |
244 | stroke-linecap="round" | 289 | stroke-linecap="round" |
245 | stroke-linejoin="round" | 290 | stroke-linejoin="round" |
246 | stroke-width="2" | 291 | stroke-width="2" |
247 | viewBox="0 0 24 24" | 292 | viewBox="0 0 24 24" |
248 | stroke="currentColor" | 293 | stroke="currentColor" |
249 | > | 294 | > |
250 | <path | 295 | <path |
251 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 296 | 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" |
252 | ></path> | 297 | ></path> |
253 | </svg> | 298 | </svg> |
254 | <span class="ml-4">Медиа</span> | 299 | <span class="ml-4">Медиа</span> |
255 | </a> | 300 | </a> |
256 | </li> | 301 | </li> |
302 | @endif | ||
257 | 303 | ||
258 | @if ($UserId == 1) | 304 | @if ($UserId == 1) |
259 | <li class="relative px-6 py-3"> | 305 | <li class="relative px-6 py-3"> |
260 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> | 306 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> |
261 | <svg | 307 | <svg |
262 | class="w-5 h-5" | 308 | class="w-5 h-5" |
263 | aria-hidden="true" | 309 | aria-hidden="true" |
264 | fill="none" | 310 | fill="none" |
265 | stroke-linecap="round" | 311 | stroke-linecap="round" |
266 | stroke-linejoin="round" | 312 | stroke-linejoin="round" |
267 | stroke-width="2" | 313 | stroke-width="2" |
268 | viewBox="0 0 24 24" | 314 | viewBox="0 0 24 24" |
269 | stroke="currentColor" | 315 | stroke="currentColor" |
270 | > | 316 | > |
271 | <path | 317 | <path |
272 | 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" | 318 | 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" |
273 | ></path> | 319 | ></path> |
274 | </svg> | 320 | </svg> |
275 | <span class="ml-4">Роли пользователей</span> | 321 | <span class="ml-4">Роли пользователей</span> |
276 | </a> | 322 | </a> |
277 | </li> | 323 | </li> |
278 | @endif | 324 | @endif |
325 | |||
326 | @if (($is_manager) || ($admin)) | ||
279 | <li class="relative px-6 py-3"> | 327 | <li class="relative px-6 py-3"> |
280 | <a | 328 | <a |
281 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.basedata') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.basedata') }}" | 329 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.basedata') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.basedata') }}" |
282 | > | 330 | > |
283 | <svg | 331 | <svg |
284 | class="w-5 h-5" | 332 | class="w-5 h-5" |
285 | aria-hidden="true" | 333 | aria-hidden="true" |
286 | fill="none" | 334 | fill="none" |
287 | stroke-linecap="round" | 335 | stroke-linecap="round" |
288 | stroke-linejoin="round" | 336 | stroke-linejoin="round" |
289 | stroke-width="2" | 337 | stroke-width="2" |
290 | viewBox="0 0 24 24" | 338 | viewBox="0 0 24 24" |
291 | stroke="currentColor" | 339 | stroke="currentColor" |
292 | > | 340 | > |
293 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 341 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
294 | </svg> | 342 | </svg> |
295 | <span class="ml-4">Базы данных</span> | 343 | <span class="ml-4">Базы данных</span> |
296 | </a> | 344 | </a> |
297 | </li> | 345 | </li> |
346 | @endif | ||
298 | 347 | ||
348 | @if ($admin) | ||
299 | <li class="relative px-6 py-3"> | 349 | <li class="relative px-6 py-3"> |
300 | <a | 350 | <a |
301 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.education.index') }}" | 351 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.education.index') }}" |
302 | > | 352 | > |
303 | <svg | 353 | <svg |
304 | class="w-5 h-5" | 354 | class="w-5 h-5" |
305 | aria-hidden="true" | 355 | aria-hidden="true" |
306 | fill="none" | 356 | fill="none" |
307 | stroke-linecap="round" | 357 | stroke-linecap="round" |
308 | stroke-linejoin="round" | 358 | stroke-linejoin="round" |
309 | stroke-width="2" | 359 | stroke-width="2" |
310 | viewBox="0 0 24 24" | 360 | viewBox="0 0 24 24" |
311 | stroke="currentColor" | 361 | stroke="currentColor" |
312 | > | 362 | > |
313 | <path | 363 | <path |
314 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 364 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
315 | ></path> | 365 | ></path> |
316 | </svg> | 366 | </svg> |
317 | <span class="ml-4">Учебн.заведения</span> | 367 | <span class="ml-4">Учебн.заведения</span> |
318 | </a> | 368 | </a> |
319 | </li> | 369 | </li> |
370 | @endif | ||
320 | 371 | ||
372 | @if ($admin) | ||
321 | <li class="relative px-6 py-3"> | 373 | <li class="relative px-6 py-3"> |
322 | <a | 374 | <a |
323 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" | 375 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" |
324 | > | 376 | > |
325 | <svg | 377 | <svg |
326 | class="w-5 h-5" | 378 | class="w-5 h-5" |
327 | aria-hidden="true" | 379 | aria-hidden="true" |
328 | fill="none" | 380 | fill="none" |
329 | stroke-linecap="round" | 381 | stroke-linecap="round" |
330 | stroke-linejoin="round" | 382 | stroke-linejoin="round" |
331 | stroke-width="2" | 383 | stroke-width="2" |
332 | viewBox="0 0 24 24" | 384 | viewBox="0 0 24 24" |
333 | stroke="currentColor" | 385 | stroke="currentColor" |
334 | > | 386 | > |
335 | <path | 387 | <path |
336 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 388 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
337 | ></path> | 389 | ></path> |
338 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 390 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
339 | </svg> | 391 | </svg> |
340 | <span class="ml-4">Статистика</span> | 392 | <span class="ml-4">Статистика</span> |
341 | </a> | 393 | </a> |
342 | </li> | 394 | </li> |
395 | @endif | ||
396 | |||
397 | @if (($is_manager) || ($admin)) | ||
343 | <li class="relative px-6 py-3"> | 398 | <li class="relative px-6 py-3"> |
344 | <a | 399 | <a |
345 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.answers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.answers') }}" | 400 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.answers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.answers') }}" |
346 | > | 401 | > |
347 | <svg | 402 | <svg |
348 | class="w-5 h-5" | 403 | class="w-5 h-5" |
349 | aria-hidden="true" | 404 | aria-hidden="true" |
350 | fill="none" | 405 | fill="none" |
351 | stroke-linecap="round" | 406 | stroke-linecap="round" |
352 | stroke-linejoin="round" | 407 | stroke-linejoin="round" |
353 | stroke-width="2" | 408 | stroke-width="2" |
354 | viewBox="0 0 24 24" | 409 | viewBox="0 0 24 24" |
355 | stroke="currentColor" | 410 | stroke="currentColor" |
356 | > | 411 | > |
357 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 412 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
358 | </svg> | 413 | </svg> |
359 | <span class="ml-4">Модерация</span> | 414 | <span class="ml-4">Модерация</span> |
360 | </a> | 415 | </a> |
361 | </li> | 416 | </li> |
417 | @endif | ||
418 | |||
419 | @if (($is_manager) || ($admin)) | ||
362 | <li class="relative px-6 py-3"> | 420 | <li class="relative px-6 py-3"> |
363 | <a | 421 | <a |
364 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.reclames') }}" | 422 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.reclames') }}" |
365 | > | 423 | > |
366 | <svg | 424 | <svg |
367 | class="w-5 h-5" | 425 | class="w-5 h-5" |
368 | aria-hidden="true" | 426 | aria-hidden="true" |
369 | fill="none" | 427 | fill="none" |
370 | stroke-linecap="round" | 428 | stroke-linecap="round" |
371 | stroke-linejoin="round" | 429 | stroke-linejoin="round" |
372 | stroke-width="2" | 430 | stroke-width="2" |
373 | viewBox="0 0 24 24" | 431 | viewBox="0 0 24 24" |
374 | stroke="currentColor" | 432 | stroke="currentColor" |
375 | > | 433 | > |
376 | <path | 434 | <path |
377 | 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" | 435 | 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" |
378 | ></path> | 436 | ></path> |
379 | </svg> | 437 | </svg> |
380 | <span class="ml-4">Реклама</span> | 438 | <span class="ml-4">Реклама</span> |
381 | </a> | 439 | </a> |
382 | </li> | 440 | </li> |
441 | @endif | ||
442 | |||
383 | <!-- Справочники --> | 443 | <!-- Справочники --> |
444 | @if ($admin) | ||
384 | <li class="relative px-6 py-3" x-data="{ open1: false }"> | 445 | <li class="relative px-6 py-3" x-data="{ open1: false }"> |
385 | <button | 446 | <button |
386 | 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" | 447 | 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" |
387 | @click="open1=!open1" | 448 | @click="open1=!open1" |
388 | aria-haspopup="true"> | 449 | aria-haspopup="true"> |
389 | <span class="inline-flex items-center"> | 450 | <span class="inline-flex items-center"> |
390 | <svg | 451 | <svg |
391 | class="w-5 h-5" | 452 | class="w-5 h-5" |
392 | aria-hidden="true" | 453 | aria-hidden="true" |
393 | fill="none" | 454 | fill="none" |
394 | stroke-linecap="round" | 455 | stroke-linecap="round" |
395 | stroke-linejoin="round" | 456 | stroke-linejoin="round" |
396 | stroke-width="2" | 457 | stroke-width="2" |
397 | viewBox="0 0 24 24" | 458 | viewBox="0 0 24 24" |
398 | stroke="currentColor"> | 459 | stroke="currentColor"> |
399 | <path | 460 | <path |
400 | 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" | 461 | 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" |
401 | ></path> | 462 | ></path> |
402 | </svg> | 463 | </svg> |
403 | <span class="ml-4">Справочники</span> | 464 | <span class="ml-4">Справочники</span> |
404 | </span> | 465 | </span> |
405 | <svg | 466 | <svg |
406 | class="w-4 h-4" | 467 | class="w-4 h-4" |
407 | aria-hidden="true" | 468 | aria-hidden="true" |
408 | fill="currentColor" | 469 | fill="currentColor" |
409 | viewBox="0 0 20 20" | 470 | viewBox="0 0 20 20" |
410 | > | 471 | > |
411 | <path | 472 | <path |
412 | fill-rule="evenodd" | 473 | fill-rule="evenodd" |
413 | 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" | 474 | 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" |
414 | clip-rule="evenodd" | 475 | clip-rule="evenodd" |
415 | ></path> | 476 | ></path> |
416 | </svg> | 477 | </svg> |
417 | </button> | 478 | </button> |
418 | <template x-if="open1"> | 479 | <template x-if="open1"> |
419 | <ul | 480 | <ul |
420 | x-transition:enter="transition-all ease-in-out duration-300" | 481 | x-transition:enter="transition-all ease-in-out duration-300" |
421 | x-transition:enter-start="opacity-25 max-h-0" | 482 | x-transition:enter-start="opacity-25 max-h-0" |
422 | x-transition:enter-end="opacity-100 max-h-xl" | 483 | x-transition:enter-end="opacity-100 max-h-xl" |
423 | x-transition:leave="transition-all ease-in-out duration-300" | 484 | x-transition:leave="transition-all ease-in-out duration-300" |
424 | x-transition:leave-start="opacity-100 max-h-xl" | 485 | x-transition:leave-start="opacity-100 max-h-xl" |
425 | x-transition:leave-end="opacity-0 max-h-0" | 486 | x-transition:leave-end="opacity-0 max-h-0" |
426 | 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" | 487 | 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" |
427 | aria-label="submenu" | 488 | aria-label="submenu" |
428 | > | 489 | > |
429 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> | 490 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> |
430 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> | 491 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> |
431 | </li> | 492 | </li> |
432 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> | 493 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> |
433 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> | 494 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> |
434 | </li> | 495 | </li> |
435 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> | 496 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> |
436 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> | 497 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> |
437 | </li> | 498 | </li> |
438 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> | 499 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> |
439 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> | 500 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> |
440 | </li> | 501 | </li> |
441 | 502 | ||
442 | </ul> | 503 | </ul> |
443 | </template> | 504 | </template> |
444 | </li> | 505 | </li> |
506 | @endif | ||
445 | 507 | ||
446 | 508 | ||
509 | @if ($admin) | ||
447 | <!-- Редактор --> | 510 | <!-- Редактор --> |
448 | <li class="relative px-6 py-3"> | 511 | <li class="relative px-6 py-3"> |
449 | <button | 512 | <button |
450 | 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" | 513 | 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" |
451 | @click="togglePagesMenu" | 514 | @click="togglePagesMenu" |
452 | aria-haspopup="true"> | 515 | aria-haspopup="true"> |
453 | <span class="inline-flex items-center"> | 516 | <span class="inline-flex items-center"> |
454 | <svg | 517 | <svg |
455 | class="w-5 h-5" | 518 | class="w-5 h-5" |
456 | aria-hidden="true" | 519 | aria-hidden="true" |
457 | fill="none" | 520 | fill="none" |
458 | stroke-linecap="round" | 521 | stroke-linecap="round" |
459 | stroke-linejoin="round" | 522 | stroke-linejoin="round" |
460 | stroke-width="2" | 523 | stroke-width="2" |
461 | viewBox="0 0 24 24" | 524 | viewBox="0 0 24 24" |
462 | stroke="currentColor"> | 525 | stroke="currentColor"> |
463 | <path | 526 | <path |
464 | 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" | 527 | 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" |
465 | ></path> | 528 | ></path> |
466 | </svg> | 529 | </svg> |
467 | <span class="ml-4">Редактор</span> | 530 | <span class="ml-4">Редактор</span> |
468 | </span> | 531 | </span> |
469 | <svg | 532 | <svg |
470 | class="w-4 h-4" | 533 | class="w-4 h-4" |
471 | aria-hidden="true" | 534 | aria-hidden="true" |
472 | fill="currentColor" | 535 | fill="currentColor" |
473 | viewBox="0 0 20 20" | 536 | viewBox="0 0 20 20" |
474 | > | 537 | > |
475 | <path | 538 | <path |
476 | fill-rule="evenodd" | 539 | fill-rule="evenodd" |
477 | 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" | 540 | 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" |
478 | clip-rule="evenodd" | 541 | clip-rule="evenodd" |
479 | ></path> | 542 | ></path> |
480 | </svg> | 543 | </svg> |
481 | </button> | 544 | </button> |
482 | <template x-if="isPagesMenuOpen"> | 545 | <template x-if="isPagesMenuOpen"> |
483 | <ul | 546 | <ul |
484 | x-transition:enter="transition-all ease-in-out duration-300" | 547 | x-transition:enter="transition-all ease-in-out duration-300" |
485 | x-transition:enter-start="opacity-25 max-h-0" | 548 | x-transition:enter-start="opacity-25 max-h-0" |
486 | x-transition:enter-end="opacity-100 max-h-xl" | 549 | x-transition:enter-end="opacity-100 max-h-xl" |
487 | x-transition:leave="transition-all ease-in-out duration-300" | 550 | x-transition:leave="transition-all ease-in-out duration-300" |
488 | x-transition:leave-start="opacity-100 max-h-xl" | 551 | x-transition:leave-start="opacity-100 max-h-xl" |
489 | x-transition:leave-end="opacity-0 max-h-0" | 552 | x-transition:leave-end="opacity-0 max-h-0" |
490 | 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" | 553 | 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" |
491 | aria-label="submenu" | 554 | aria-label="submenu" |
492 | > | 555 | > |
493 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> | 556 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> |
494 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 557 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
495 | </li> | 558 | </li> |
496 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> | 559 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> |
497 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 560 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
498 | </li> | 561 | </li> |
499 | 562 | ||
500 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> | 563 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> |
501 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 564 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
502 | </li> | 565 | </li> |
503 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> | 566 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> |
504 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 567 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
505 | </li> | 568 | </li> |
506 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> | 569 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> |
507 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 570 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
508 | </li> | 571 | </li> |
509 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> | 572 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> |
510 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 573 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
511 | </li> | 574 | </li> |
512 | </ul> | 575 | </ul> |
513 | </template> | 576 | </template> |
514 | </li> | 577 | </li> |
578 | @endif | ||
515 | 579 | ||
516 | </ul> | 580 | </ul> |
517 | <!--<div class="px-6 my-6"> | 581 | <!--<div class="px-6 my-6"> |
518 | <button | 582 | <button |
519 | 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" | 583 | 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" |
520 | > | 584 | > |
521 | Create account | 585 | Create account |
522 | <span class="ml-2" aria-hidden="true">+</span> | 586 | <span class="ml-2" aria-hidden="true">+</span> |
523 | </button> | 587 | </button> |
524 | </div>--> | 588 | </div>--> |
525 | </div> | 589 | </div> |
526 | </aside> | 590 | </aside> |
527 | <!-- Mobile sidebar --> | 591 | <!-- Mobile sidebar --> |
528 | <!-- Backdrop --> | 592 | <!-- Backdrop --> |
529 | <div | 593 | <div |
530 | x-show="isSideMenuOpen" | 594 | x-show="isSideMenuOpen" |
531 | x-transition:enter="transition ease-in-out duration-150" | 595 | x-transition:enter="transition ease-in-out duration-150" |
532 | x-transition:enter-start="opacity-0" | 596 | x-transition:enter-start="opacity-0" |
533 | x-transition:enter-end="opacity-100" | 597 | x-transition:enter-end="opacity-100" |
534 | x-transition:leave="transition ease-in-out duration-150" | 598 | x-transition:leave="transition ease-in-out duration-150" |
535 | x-transition:leave-start="opacity-100" | 599 | x-transition:leave-start="opacity-100" |
536 | x-transition:leave-end="opacity-0" | 600 | x-transition:leave-end="opacity-0" |
537 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | 601 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" |
538 | ></div> | 602 | ></div> |
539 | <aside | 603 | <aside |
540 | 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" | 604 | 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" |
541 | x-show="isSideMenuOpen" | 605 | x-show="isSideMenuOpen" |
542 | x-transition:enter="transition ease-in-out duration-150" | 606 | x-transition:enter="transition ease-in-out duration-150" |
543 | x-transition:enter-start="opacity-0 transform -translate-x-20" | 607 | x-transition:enter-start="opacity-0 transform -translate-x-20" |
544 | x-transition:enter-end="opacity-100" | 608 | x-transition:enter-end="opacity-100" |
545 | x-transition:leave="transition ease-in-out duration-150" | 609 | x-transition:leave="transition ease-in-out duration-150" |
546 | x-transition:leave-start="opacity-100" | 610 | x-transition:leave-start="opacity-100" |
547 | x-transition:leave-end="opacity-0 transform -translate-x-20" | 611 | x-transition:leave-end="opacity-0 transform -translate-x-20" |
548 | @click.away="closeSideMenu" | 612 | @click.away="closeSideMenu" |
549 | @keydown.escape="closeSideMenu" | 613 | @keydown.escape="closeSideMenu" |
550 | > | 614 | > |
551 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 615 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
552 | <a | 616 | <a |
553 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 617 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
554 | href="{{ route('admin.index') }}" | 618 | href="{{ route('admin.index') }}" |
555 | > | 619 | > |
556 | Админка | 620 | Админка |
557 | </a> | 621 | </a> |
558 | <ul class="mt-6"> | 622 | <ul class="mt-6"> |
559 | <li class="relative px-6 py-3"> | 623 | <li class="relative px-6 py-3"> |
560 | <span | 624 | <span |
561 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 625 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
562 | aria-hidden="true" | 626 | aria-hidden="true" |
563 | ></span> | 627 | ></span> |
564 | <a | 628 | <a |
565 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.index') }}" | 629 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.index') }}" |
566 | > | 630 | > |
567 | <svg | 631 | <svg |
568 | class="w-5 h-5" | 632 | class="w-5 h-5" |
569 | aria-hidden="true" | 633 | aria-hidden="true" |
570 | fill="none" | 634 | fill="none" |
571 | stroke-linecap="round" | 635 | stroke-linecap="round" |
572 | stroke-linejoin="round" | 636 | stroke-linejoin="round" |
573 | stroke-width="2" | 637 | stroke-width="2" |
574 | viewBox="0 0 24 24" | 638 | viewBox="0 0 24 24" |
575 | stroke="currentColor" | 639 | stroke="currentColor" |
576 | > | 640 | > |
577 | <path | 641 | <path |
578 | 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" | 642 | 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" |
579 | ></path> | 643 | ></path> |
580 | </svg> | 644 | </svg> |
581 | <span class="ml-4">Главная страница</span> | 645 | <span class="ml-4">Главная страница</span> |
582 | </a> | 646 | </a> |
583 | </li> | 647 | </li> |
584 | </ul> | 648 | </ul> |
585 | <ul> | 649 | <ul> |
586 | @if ($UserId == 1) | 650 | @if ($UserId == 1) |
587 | <li class="relative px-6 py-3"> | 651 | <li class="relative px-6 py-3"> |
588 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.users') }}"> | 652 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.users') }}"> |
589 | <svg | 653 | <svg |
590 | class="w-5 h-5" | 654 | class="w-5 h-5" |
591 | aria-hidden="true" | 655 | aria-hidden="true" |
592 | fill="none" | 656 | fill="none" |
593 | stroke-linecap="round" | 657 | stroke-linecap="round" |
594 | stroke-linejoin="round" | 658 | stroke-linejoin="round" |
595 | stroke-width="2" | 659 | stroke-width="2" |
596 | viewBox="0 0 24 24" | 660 | viewBox="0 0 24 24" |
597 | stroke="currentColor" | 661 | stroke="currentColor" |
598 | > | 662 | > |
599 | <path | 663 | <path |
600 | 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" | 664 | 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" |
601 | ></path> | 665 | ></path> |
602 | </svg> | 666 | </svg> |
603 | <span class="ml-4">Пользователи</span> | 667 | <span class="ml-4">Пользователи</span> |
604 | </a> | 668 | </a> |
605 | </li> | 669 | </li> |
606 | @endif | 670 | @endif |
607 | <li class="relative px-6 py-3"> | 671 | <li class="relative px-6 py-3"> |
608 | <a | 672 | <a |
609 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" | 673 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-users') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-users') }}" |
610 | > | 674 | > |
611 | <svg | 675 | <svg |
612 | class="w-5 h-5" | 676 | class="w-5 h-5" |
613 | aria-hidden="true" | 677 | aria-hidden="true" |
614 | fill="none" | 678 | fill="none" |
615 | stroke-linecap="round" | 679 | stroke-linecap="round" |
616 | stroke-linejoin="round" | 680 | stroke-linejoin="round" |
617 | stroke-width="2" | 681 | stroke-width="2" |
618 | viewBox="0 0 24 24" | 682 | viewBox="0 0 24 24" |
619 | stroke="currentColor" | 683 | stroke="currentColor" |
620 | > | 684 | > |
621 | <path | 685 | <path |
622 | 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" | 686 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
623 | ></path> | 687 | ></path> |
624 | </svg> | 688 | </svg> |
625 | <span class="ml-4">Администраторы</span> | 689 | <span class="ml-4">Администраторы</span> |
626 | </a> | 690 | </a> |
627 | </li> | 691 | </li> |
628 | 692 | ||
629 | <li class="relative px-6 py-3"> | 693 | <li class="relative px-6 py-3"> |
630 | <a | 694 | <a |
631 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" | 695 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.employers') }}" |
632 | > | 696 | > |
633 | <svg | 697 | <svg |
634 | class="w-5 h-5" | 698 | class="w-5 h-5" |
635 | aria-hidden="true" | 699 | aria-hidden="true" |
636 | fill="none" | 700 | fill="none" |
637 | stroke-linecap="round" | 701 | stroke-linecap="round" |
638 | stroke-linejoin="round" | 702 | stroke-linejoin="round" |
639 | stroke-width="2" | 703 | stroke-width="2" |
640 | viewBox="0 0 24 24" | 704 | viewBox="0 0 24 24" |
641 | stroke="currentColor" | 705 | stroke="currentColor" |
642 | > | 706 | > |
643 | <path | 707 | <path |
644 | 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" | 708 | 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" |
645 | ></path> | 709 | ></path> |
646 | </svg> | 710 | </svg> |
647 | <span class="ml-4">Работодатели</span> | 711 | <span class="ml-4">Работодатели</span> |
648 | </a> | 712 | </a> |
649 | </li> | 713 | </li> |
650 | <li class="relative px-6 py-3"> | 714 | <li class="relative px-6 py-3"> |
651 | <a | 715 | <a |
652 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" | 716 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.workers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.workers') }}" |
653 | > | 717 | > |
654 | <svg | 718 | <svg |
655 | class="w-5 h-5" | 719 | class="w-5 h-5" |
656 | aria-hidden="true" | 720 | aria-hidden="true" |
657 | fill="none" | 721 | fill="none" |
658 | stroke-linecap="round" | 722 | stroke-linecap="round" |
659 | stroke-linejoin="round" | 723 | stroke-linejoin="round" |
660 | stroke-width="2" | 724 | stroke-width="2" |
661 | viewBox="0 0 24 24" | 725 | viewBox="0 0 24 24" |
662 | stroke="currentColor" | 726 | stroke="currentColor" |
663 | > | 727 | > |
664 | <path | 728 | <path |
665 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 729 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
666 | ></path> | 730 | ></path> |
667 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 731 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
668 | </svg> | 732 | </svg> |
669 | <span class="ml-4">Соискатели</span> | 733 | <span class="ml-4">Соискатели</span> |
670 | </a> | 734 | </a> |
671 | </li> | 735 | </li> |
672 | <li class="relative px-6 py-3"> | 736 | <li class="relative px-6 py-3"> |
673 | <a | 737 | <a |
674 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" | 738 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.ad-employers') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.ad-employers') }}" |
675 | > | 739 | > |
676 | <svg | 740 | <svg |
677 | class="w-5 h-5" | 741 | class="w-5 h-5" |
678 | aria-hidden="true" | 742 | aria-hidden="true" |
679 | fill="none" | 743 | fill="none" |
680 | stroke-linecap="round" | 744 | stroke-linecap="round" |
681 | stroke-linejoin="round" | 745 | stroke-linejoin="round" |
682 | stroke-width="2" | 746 | stroke-width="2" |
683 | viewBox="0 0 24 24" | 747 | viewBox="0 0 24 24" |
684 | stroke="currentColor" | 748 | stroke="currentColor" |
685 | > | 749 | > |
686 | <path | 750 | <path |
687 | 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" | 751 | 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" |
688 | ></path> | 752 | ></path> |
689 | </svg> | 753 | </svg> |
690 | <span class="ml-4">Вакансии</span> | 754 | <span class="ml-4">Вакансии</span> |
691 | </a> | 755 | </a> |
692 | </li> | 756 | </li> |
693 | <li class="relative px-6 py-3"> | 757 | <li class="relative px-6 py-3"> |
694 | <a | 758 | <a |
695 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 759 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
696 | > | 760 | > |
697 | <svg | 761 | <svg |
698 | class="w-5 h-5" | 762 | class="w-5 h-5" |
699 | aria-hidden="true" | 763 | aria-hidden="true" |
700 | fill="none" | 764 | fill="none" |
701 | stroke-linecap="round" | 765 | stroke-linecap="round" |
702 | stroke-linejoin="round" | 766 | stroke-linejoin="round" |
703 | stroke-width="2" | 767 | stroke-width="2" |
704 | viewBox="0 0 24 24" | 768 | viewBox="0 0 24 24" |
705 | stroke="currentColor" | 769 | stroke="currentColor" |
706 | > | 770 | > |
707 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 771 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
708 | </svg> | 772 | </svg> |
709 | <span class="ml-4">Сообщения все</span> | 773 | <span class="ml-4">Сообщения все</span> |
710 | </a> | 774 | </a> |
711 | </li> | 775 | </li> |
712 | 776 | ||
713 | <li class="relative px-6 py-3"> | 777 | <li class="relative px-6 py-3"> |
714 | <a | 778 | <a |
715 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-messages') }}" | 779 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.admin-messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.admin-messages') }}" |
716 | > | 780 | > |
717 | <svg | 781 | <svg |
718 | class="w-5 h-5" | 782 | class="w-5 h-5" |
719 | aria-hidden="true" | 783 | aria-hidden="true" |
720 | fill="none" | 784 | fill="none" |
721 | stroke-linecap="round" | 785 | stroke-linecap="round" |
722 | stroke-linejoin="round" | 786 | stroke-linejoin="round" |
723 | stroke-width="2" | 787 | stroke-width="2" |
724 | viewBox="0 0 24 24" | 788 | viewBox="0 0 24 24" |
725 | stroke="currentColor" | 789 | stroke="currentColor" |
726 | > | 790 | > |
727 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 791 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
728 | </svg> | 792 | </svg> |
729 | <span class="ml-4">Заявки на рассылку</span> | 793 | <span class="ml-4">Заявки на рассылку</span> |
730 | </a> | 794 | </a> |
731 | </li> | 795 | </li> |
732 | 796 | ||
733 | 797 | ||
734 | <li class="relative px-6 py-3"> | 798 | <li class="relative px-6 py-3"> |
735 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}"> | 799 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.groups') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.groups') }}"> |
736 | <svg | 800 | <svg |
737 | class="w-5 h-5" | 801 | class="w-5 h-5" |
738 | aria-hidden="true" | 802 | aria-hidden="true" |
739 | fill="none" | 803 | fill="none" |
740 | stroke-linecap="round" | 804 | stroke-linecap="round" |
741 | stroke-linejoin="round" | 805 | stroke-linejoin="round" |
742 | stroke-width="2" | 806 | stroke-width="2" |
743 | viewBox="0 0 24 24" | 807 | viewBox="0 0 24 24" |
744 | stroke="currentColor" | 808 | stroke="currentColor" |
745 | > | 809 | > |
746 | <path | 810 | <path |
747 | 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" | 811 | 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" |
748 | ></path> | 812 | ></path> |
749 | </svg> | 813 | </svg> |
750 | <span class="ml-4">Группы пользователей</span> | 814 | <span class="ml-4">Группы пользователей</span> |
751 | </a> | 815 | </a> |
752 | </li> | 816 | </li> |
753 | 817 | ||
754 | <li class="relative px-6 py-3"> | 818 | <li class="relative px-6 py-3"> |
755 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.media') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.media') }}"> | 819 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.media') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.media') }}"> |
756 | <svg | 820 | <svg |
757 | class="w-5 h-5" | 821 | class="w-5 h-5" |
758 | aria-hidden="true" | 822 | aria-hidden="true" |
759 | fill="none" | 823 | fill="none" |
760 | stroke-linecap="round" | 824 | stroke-linecap="round" |
761 | stroke-linejoin="round" | 825 | stroke-linejoin="round" |
762 | stroke-width="2" | 826 | stroke-width="2" |
763 | viewBox="0 0 24 24" | 827 | viewBox="0 0 24 24" |
764 | stroke="currentColor" | 828 | stroke="currentColor" |
765 | > | 829 | > |
766 | <path | 830 | <path |
767 | 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" | 831 | 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" |
768 | ></path> | 832 | ></path> |
769 | </svg> | 833 | </svg> |
770 | <span class="ml-4">Медиа</span> | 834 | <span class="ml-4">Медиа</span> |
771 | </a> | 835 | </a> |
772 | </li> | 836 | </li> |
773 | 837 | ||
774 | @if ($UserId == 1) | 838 | @if ($UserId == 1) |
775 | <li class="relative px-6 py-3"> | 839 | <li class="relative px-6 py-3"> |
776 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> | 840 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.roles') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.roles') }}"> |
777 | <svg | 841 | <svg |
778 | class="w-5 h-5" | 842 | class="w-5 h-5" |
779 | aria-hidden="true" | 843 | aria-hidden="true" |
780 | fill="none" | 844 | fill="none" |
781 | stroke-linecap="round" | 845 | stroke-linecap="round" |
782 | stroke-linejoin="round" | 846 | stroke-linejoin="round" |
783 | stroke-width="2" | 847 | stroke-width="2" |
784 | viewBox="0 0 24 24" | 848 | viewBox="0 0 24 24" |
785 | stroke="currentColor" | 849 | stroke="currentColor" |
786 | > | 850 | > |
787 | <path | 851 | <path |
788 | 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" | 852 | 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" |
789 | ></path> | 853 | ></path> |
790 | </svg> | 854 | </svg> |
791 | <span class="ml-4">Роли пользователей</span> | 855 | <span class="ml-4">Роли пользователей</span> |
792 | </a> | 856 | </a> |
793 | </li> | 857 | </li> |
794 | @endif | 858 | @endif |
795 | 859 | ||
796 | <li class="relative px-6 py-3"> | 860 | <li class="relative px-6 py-3"> |
797 | <a | 861 | <a |
798 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.basedata') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.basedata') }}" | 862 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.basedata') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.basedata') }}" |
799 | > | 863 | > |
800 | <svg | 864 | <svg |
801 | class="w-5 h-5" | 865 | class="w-5 h-5" |
802 | aria-hidden="true" | 866 | aria-hidden="true" |
803 | fill="none" | 867 | fill="none" |
804 | stroke-linecap="round" | 868 | stroke-linecap="round" |
805 | stroke-linejoin="round" | 869 | stroke-linejoin="round" |
806 | stroke-width="2" | 870 | stroke-width="2" |
807 | viewBox="0 0 24 24" | 871 | viewBox="0 0 24 24" |
808 | stroke="currentColor" | 872 | stroke="currentColor" |
809 | > | 873 | > |
810 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 874 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
811 | </svg> | 875 | </svg> |
812 | <span class="ml-4">Базы данных</span> | 876 | <span class="ml-4">Базы данных</span> |
813 | </a> | 877 | </a> |
814 | </li> | 878 | </li> |
815 | 879 | ||
816 | <li class="relative px-6 py-3"> | 880 | <li class="relative px-6 py-3"> |
817 | <a | 881 | <a |
818 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.education.index') }}" | 882 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.education.index') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.education.index') }}" |
819 | > | 883 | > |
820 | <svg | 884 | <svg |
821 | class="w-5 h-5" | 885 | class="w-5 h-5" |
822 | aria-hidden="true" | 886 | aria-hidden="true" |
823 | fill="none" | 887 | fill="none" |
824 | stroke-linecap="round" | 888 | stroke-linecap="round" |
825 | stroke-linejoin="round" | 889 | stroke-linejoin="round" |
826 | stroke-width="2" | 890 | stroke-width="2" |
827 | viewBox="0 0 24 24" | 891 | viewBox="0 0 24 24" |
828 | stroke="currentColor" | 892 | stroke="currentColor" |
829 | > | 893 | > |
830 | <path | 894 | <path |
831 | 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" | 895 | 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" |
832 | ></path> | 896 | ></path> |
833 | </svg> | 897 | </svg> |
834 | <span class="ml-4">Учебн.заведения</span> | 898 | <span class="ml-4">Учебн.заведения</span> |
835 | </a> | 899 | </a> |
836 | </li> | 900 | </li> |
837 | <li class="relative px-6 py-3"> | 901 | <li class="relative px-6 py-3"> |
838 | <a | 902 | <a |
839 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" | 903 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.statics') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.statics') }}" |
840 | > | 904 | > |
841 | <svg | 905 | <svg |
842 | class="w-5 h-5" | 906 | class="w-5 h-5" |
843 | aria-hidden="true" | 907 | aria-hidden="true" |
844 | fill="none" | 908 | fill="none" |
845 | stroke-linecap="round" | 909 | stroke-linecap="round" |
846 | stroke-linejoin="round" | 910 | stroke-linejoin="round" |
847 | stroke-width="2" | 911 | stroke-width="2" |
848 | viewBox="0 0 24 24" | 912 | viewBox="0 0 24 24" |
849 | stroke="currentColor" | 913 | stroke="currentColor" |
850 | > | 914 | > |
851 | <path | 915 | <path |
852 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 916 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
853 | ></path> | 917 | ></path> |
854 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 918 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
855 | </svg> | 919 | </svg> |
856 | <span class="ml-4">Статистика</span> | 920 | <span class="ml-4">Статистика</span> |
857 | </a> | 921 | </a> |
858 | </li> | 922 | </li> |
859 | <li class="relative px-6 py-3"> | 923 | <li class="relative px-6 py-3"> |
860 | <a | 924 | <a |
861 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" | 925 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.messages') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.messages') }}" |
862 | > | 926 | > |
863 | <svg | 927 | <svg |
864 | class="w-5 h-5" | 928 | class="w-5 h-5" |
865 | aria-hidden="true" | 929 | aria-hidden="true" |
866 | fill="none" | 930 | fill="none" |
867 | stroke-linecap="round" | 931 | stroke-linecap="round" |
868 | stroke-linejoin="round" | 932 | stroke-linejoin="round" |
869 | stroke-width="2" | 933 | stroke-width="2" |
870 | viewBox="0 0 24 24" | 934 | viewBox="0 0 24 24" |
871 | stroke="currentColor" | 935 | stroke="currentColor" |
872 | > | 936 | > |
873 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 937 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
874 | </svg> | 938 | </svg> |
875 | <span class="ml-4">Сообщения все</span> | 939 | <span class="ml-4">Сообщения все</span> |
876 | </a> | 940 | </a> |
877 | </li> | 941 | </li> |
878 | <li class="relative px-6 py-3"> | 942 | <li class="relative px-6 py-3"> |
879 | <a | 943 | <a |
880 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.reclames') }}" | 944 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.reclames') ? 'dark:text-gray-100' : null }}" href="{{ route('admin.reclames') }}" |
881 | > | 945 | > |
882 | <svg | 946 | <svg |
883 | class="w-5 h-5" | 947 | class="w-5 h-5" |
884 | aria-hidden="true" | 948 | aria-hidden="true" |
885 | fill="none" | 949 | fill="none" |
886 | stroke-linecap="round" | 950 | stroke-linecap="round" |
887 | stroke-linejoin="round" | 951 | stroke-linejoin="round" |
888 | stroke-width="2" | 952 | stroke-width="2" |
889 | viewBox="0 0 24 24" | 953 | viewBox="0 0 24 24" |
890 | stroke="currentColor" | 954 | stroke="currentColor" |
891 | > | 955 | > |
892 | <path | 956 | <path |
893 | 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" | 957 | 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" |
894 | ></path> | 958 | ></path> |
895 | </svg> | 959 | </svg> |
896 | <span class="ml-4">Реклама</span> | 960 | <span class="ml-4">Реклама</span> |
897 | </a> | 961 | </a> |
898 | </li> | 962 | </li> |
899 | <!-- Справочники --> | 963 | <!-- Справочники --> |
900 | <li class="relative px-6 py-3" x-data="{ open2: false }"> | 964 | <li class="relative px-6 py-3" x-data="{ open2: false }"> |
901 | <button | 965 | <button |
902 | 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" | 966 | 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" |
903 | @click="open2=!open2" | 967 | @click="open2=!open2" |
904 | aria-haspopup="true"> | 968 | aria-haspopup="true"> |
905 | <span class="inline-flex items-center"> | 969 | <span class="inline-flex items-center"> |
906 | <svg | 970 | <svg |
907 | class="w-5 h-5" | 971 | class="w-5 h-5" |
908 | aria-hidden="true" | 972 | aria-hidden="true" |
909 | fill="none" | 973 | fill="none" |
910 | stroke-linecap="round" | 974 | stroke-linecap="round" |
911 | stroke-linejoin="round" | 975 | stroke-linejoin="round" |
912 | stroke-width="2" | 976 | stroke-width="2" |
913 | viewBox="0 0 24 24" | 977 | viewBox="0 0 24 24" |
914 | stroke="currentColor"> | 978 | stroke="currentColor"> |
915 | <path | 979 | <path |
916 | 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" | 980 | 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" |
917 | ></path> | 981 | ></path> |
918 | </svg> | 982 | </svg> |
919 | <span class="ml-4">Справочники</span> | 983 | <span class="ml-4">Справочники</span> |
920 | </span> | 984 | </span> |
921 | <svg | 985 | <svg |
922 | class="w-4 h-4" | 986 | class="w-4 h-4" |
923 | aria-hidden="true" | 987 | aria-hidden="true" |
924 | fill="currentColor" | 988 | fill="currentColor" |
925 | viewBox="0 0 20 20" | 989 | viewBox="0 0 20 20" |
926 | > | 990 | > |
927 | <path | 991 | <path |
928 | fill-rule="evenodd" | 992 | fill-rule="evenodd" |
929 | 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" | 993 | 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" |
930 | clip-rule="evenodd" | 994 | clip-rule="evenodd" |
931 | ></path> | 995 | ></path> |
932 | </svg> | 996 | </svg> |
933 | </button> | 997 | </button> |
934 | <template x-if="open2"> | 998 | <template x-if="open2"> |
935 | <ul | 999 | <ul |
936 | x-transition:enter="transition-all ease-in-out duration-300" | 1000 | x-transition:enter="transition-all ease-in-out duration-300" |
937 | x-transition:enter-start="opacity-25 max-h-0" | 1001 | x-transition:enter-start="opacity-25 max-h-0" |
938 | x-transition:enter-end="opacity-100 max-h-xl" | 1002 | x-transition:enter-end="opacity-100 max-h-xl" |
939 | x-transition:leave="transition-all ease-in-out duration-300" | 1003 | x-transition:leave="transition-all ease-in-out duration-300" |
940 | x-transition:leave-start="opacity-100 max-h-xl" | 1004 | x-transition:leave-start="opacity-100 max-h-xl" |
941 | x-transition:leave-end="opacity-0 max-h-0" | 1005 | x-transition:leave-end="opacity-0 max-h-0" |
942 | 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" | 1006 | 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" |
943 | aria-label="submenu" | 1007 | aria-label="submenu" |
944 | > | 1008 | > |
945 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> | 1009 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles.index') ? 'dark:text-gray-100' : null }}"> |
946 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> | 1010 | <a class="w-full" href="{{ route('admin.job-titles.index') }}">Должности</a> |
947 | </li> | 1011 | </li> |
948 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> | 1012 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.categories.index') ? 'dark:text-gray-100' : null }}"> |
949 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> | 1013 | <a class="w-full" href="{{ route('admin.categories.index') }}">Категории вакансий</a> |
950 | </li> | 1014 | </li> |
951 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> | 1015 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.category-emp.index') ? 'dark:text-gray-100' : null }}"> |
952 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> | 1016 | <a class="w-full" href="{{ route('admin.category-emp.index') }}">Категории работодателей</a> |
953 | </li> | 1017 | </li> |
954 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> | 1018 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.infobloks.index') ? 'dark:text-gray-100' : null }}"> |
955 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> | 1019 | <a class="w-full" href="{{ route('admin.infobloks.index') }}">Блоки-Дипломы</a> |
956 | </li> | 1020 | </li> |
957 | 1021 | ||
958 | </ul> | 1022 | </ul> |
959 | </template> | 1023 | </template> |
960 | </li> | 1024 | </li> |
961 | 1025 | ||
962 | <!-- Редактор --> | 1026 | <!-- Редактор --> |
963 | <li class="relative px-6 py-3"> | 1027 | <li class="relative px-6 py-3"> |
964 | <button | 1028 | <button |
965 | 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" | 1029 | 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" |
966 | @click="togglePagesMenu" | 1030 | @click="togglePagesMenu" |
967 | aria-haspopup="true" | 1031 | aria-haspopup="true" |
968 | > | 1032 | > |
969 | <span class="inline-flex items-center"> | 1033 | <span class="inline-flex items-center"> |
970 | <svg | 1034 | <svg |
971 | class="w-5 h-5" | 1035 | class="w-5 h-5" |
972 | aria-hidden="true" | 1036 | aria-hidden="true" |
973 | fill="none" | 1037 | fill="none" |
974 | stroke-linecap="round" | 1038 | stroke-linecap="round" |
975 | stroke-linejoin="round" | 1039 | stroke-linejoin="round" |
976 | stroke-width="2" | 1040 | stroke-width="2" |
977 | viewBox="0 0 24 24" | 1041 | viewBox="0 0 24 24" |
978 | stroke="currentColor" | 1042 | stroke="currentColor" |
979 | > | 1043 | > |
980 | <path | 1044 | <path |
981 | 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" | 1045 | 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" |
982 | ></path> | 1046 | ></path> |
983 | </svg> | 1047 | </svg> |
984 | <span class="ml-4">Редактор</span> | 1048 | <span class="ml-4">Редактор</span> |
985 | </span> | 1049 | </span> |
986 | <svg | 1050 | <svg |
987 | class="w-4 h-4" | 1051 | class="w-4 h-4" |
988 | aria-hidden="true" | 1052 | aria-hidden="true" |
989 | fill="currentColor" | 1053 | fill="currentColor" |
990 | viewBox="0 0 20 20" | 1054 | viewBox="0 0 20 20" |
991 | > | 1055 | > |
992 | <path | 1056 | <path |
993 | fill-rule="evenodd" | 1057 | fill-rule="evenodd" |
994 | 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" | 1058 | 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" |
995 | clip-rule="evenodd" | 1059 | clip-rule="evenodd" |
996 | ></path> | 1060 | ></path> |
997 | </svg> | 1061 | </svg> |
998 | </button> | 1062 | </button> |
999 | <template x-if="isPagesMenuOpen"> | 1063 | <template x-if="isPagesMenuOpen"> |
1000 | <ul | 1064 | <ul |
1001 | x-transition:enter="transition-all ease-in-out duration-300" | 1065 | x-transition:enter="transition-all ease-in-out duration-300" |
1002 | x-transition:enter-start="opacity-25 max-h-0" | 1066 | x-transition:enter-start="opacity-25 max-h-0" |
1003 | x-transition:enter-end="opacity-100 max-h-xl" | 1067 | x-transition:enter-end="opacity-100 max-h-xl" |
1004 | x-transition:leave="transition-all ease-in-out duration-300" | 1068 | x-transition:leave="transition-all ease-in-out duration-300" |
1005 | x-transition:leave-start="opacity-100 max-h-xl" | 1069 | x-transition:leave-start="opacity-100 max-h-xl" |
1006 | x-transition:leave-end="opacity-0 max-h-0" | 1070 | x-transition:leave-end="opacity-0 max-h-0" |
1007 | 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" | 1071 | 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" |
1008 | aria-label="submenu" | 1072 | aria-label="submenu" |
1009 | > | 1073 | > |
1010 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> | 1074 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-site') ? 'dark:text-gray-100' : null }}"> |
1011 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> | 1075 | <a class="w-full" href="{{ route('admin.editor-site') }}">Редактор сайта</a> |
1012 | </li> | 1076 | </li> |
1013 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> | 1077 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.edit-blocks') ? 'dark:text-gray-100' : null }}"> |
1014 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> | 1078 | <a class="w-full" href="{{ route('admin.edit-blocks') }}">Шапка-футер сайта</a> |
1015 | </li> | 1079 | </li> |
1016 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> | 1080 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-seo') ? 'dark:text-gray-100' : null }}"> |
1017 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> | 1081 | <a class="w-full" href="{{ route('admin.editor-seo') }}">SEO сайта</a> |
1018 | </li> | 1082 | </li> |
1019 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> | 1083 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.editor-pages') ? 'dark:text-gray-100' : null }}"> |
1020 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> | 1084 | <a class="w-full" href="{{ route('admin.editor-pages') }}">Редактор страниц</a> |
1021 | </li> | 1085 | </li> |
1022 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> | 1086 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.job-titles-main') ? 'dark:text-gray-100' : null }}"> |
1023 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> | 1087 | <a class="w-full" href="{{ route('admin.job-titles-main') }}">Должности на главной</a> |
1024 | </li> | 1088 | </li> |
1025 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> | 1089 | <li class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 {{ Request::routeIs('admin.employers-main') ? 'dark:text-gray-100' : null }}"> |
1026 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> | 1090 | <a class="w-full" href="{{ route('admin.employers-main') }}">Работодатели на главной</a> |
1027 | </li> | 1091 | </li> |
1028 | 1092 | ||
1029 | </ul> | 1093 | </ul> |
1030 | </template> | 1094 | </template> |
1031 | </li> | 1095 | </li> |
1032 | </ul> | 1096 | </ul> |
1033 | <!--<div class="px-6 my-6"> | 1097 | <!--<div class="px-6 my-6"> |
1034 | <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"> | 1098 | <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"> |
1035 | Create account | 1099 | Create account |
1036 | <span class="ml-2" aria-hidden="true">+</span> | 1100 | <span class="ml-2" aria-hidden="true">+</span> |
1037 | </button> | 1101 | </button> |
1038 | </div>--> | 1102 | </div>--> |
1039 | </div> | 1103 | </div> |
1040 | </aside> | 1104 | </aside> |
1041 | <div class="flex flex-col flex-1 w-full"> | 1105 | <div class="flex flex-col flex-1 w-full"> |
1042 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> | 1106 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> |
1043 | <div | 1107 | <div |
1044 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" | 1108 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" |
1045 | > | 1109 | > |
1046 | <!-- Mobile hamburger --> | 1110 | <!-- Mobile hamburger --> |
1047 | <button | 1111 | <button |
1048 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" | 1112 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" |
1049 | @click="toggleSideMenu" | 1113 | @click="toggleSideMenu" |
1050 | aria-label="Menu" | 1114 | aria-label="Menu" |
1051 | > | 1115 | > |
1052 | <svg | 1116 | <svg |
1053 | class="w-6 h-6" | 1117 | class="w-6 h-6" |
1054 | aria-hidden="true" | 1118 | aria-hidden="true" |
1055 | fill="currentColor" | 1119 | fill="currentColor" |
1056 | viewBox="0 0 20 20" | 1120 | viewBox="0 0 20 20" |
1057 | > | 1121 | > |
1058 | <path | 1122 | <path |
1059 | fill-rule="evenodd" | 1123 | fill-rule="evenodd" |
1060 | 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" | 1124 | 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" |
1061 | clip-rule="evenodd" | 1125 | clip-rule="evenodd" |
1062 | ></path> | 1126 | ></path> |
1063 | </svg> | 1127 | </svg> |
1064 | </button> | 1128 | </button> |
1065 | <!-- Search input --> | 1129 | <!-- Search input --> |
1066 | <div class="flex justify-center flex-1 lg:mr-32"> | 1130 | <div class="flex justify-center flex-1 lg:mr-32"> |
1067 | <div | 1131 | <div |
1068 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" | 1132 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" |
1069 | > | 1133 | > |
1070 | 1134 | ||
1071 | @yield('search') | 1135 | @yield('search') |
1072 | </div> | 1136 | </div> |
1073 | </div> | 1137 | </div> |
1074 | <ul class="flex items-center flex-shrink-0 space-x-6"> | 1138 | <ul class="flex items-center flex-shrink-0 space-x-6"> |
1075 | <!-- Theme toggler --> | 1139 | <!-- Theme toggler --> |
1076 | <li class="flex"> | 1140 | <li class="flex"> |
1077 | <button | 1141 | <button |
1078 | class="rounded-md focus:outline-none focus:shadow-outline-purple" | 1142 | class="rounded-md focus:outline-none focus:shadow-outline-purple" |
1079 | @click="toggleTheme" | 1143 | @click="toggleTheme" |
1080 | aria-label="Toggle color mode" | 1144 | aria-label="Toggle color mode" |
1081 | > | 1145 | > |
1082 | <template x-if="!dark"> | 1146 | <template x-if="!dark"> |
1083 | <svg | 1147 | <svg |
1084 | class="w-5 h-5" | 1148 | class="w-5 h-5" |
1085 | aria-hidden="true" | 1149 | aria-hidden="true" |
1086 | fill="currentColor" | 1150 | fill="currentColor" |
1087 | viewBox="0 0 20 20" | 1151 | viewBox="0 0 20 20" |
1088 | > | 1152 | > |
1089 | <path | 1153 | <path |
1090 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" | 1154 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" |
1091 | ></path> | 1155 | ></path> |
1092 | </svg> | 1156 | </svg> |
1093 | </template> | 1157 | </template> |
1094 | <template x-if="dark"> | 1158 | <template x-if="dark"> |
1095 | <svg | 1159 | <svg |
1096 | class="w-5 h-5" | 1160 | class="w-5 h-5" |
1097 | aria-hidden="true" | 1161 | aria-hidden="true" |
1098 | fill="currentColor" | 1162 | fill="currentColor" |
1099 | viewBox="0 0 20 20" | 1163 | viewBox="0 0 20 20" |
1100 | > | 1164 | > |
1101 | <path | 1165 | <path |
1102 | fill-rule="evenodd" | 1166 | fill-rule="evenodd" |
1103 | 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" | 1167 | 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" |
1104 | clip-rule="evenodd" | 1168 | clip-rule="evenodd" |
1105 | ></path> | 1169 | ></path> |
1106 | </svg> | 1170 | </svg> |
1107 | </template> | 1171 | </template> |
1108 | </button> | 1172 | </button> |
1109 | </li> | 1173 | </li> |
1110 | <!-- Notifications menu --> | 1174 | <!-- Notifications menu --> |
1111 | <li class="relative"> | 1175 | <li class="relative"> |
1112 | <button | 1176 | <button |
1113 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" | 1177 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" |
1114 | @click="toggleNotificationsMenu" | 1178 | @click="toggleNotificationsMenu" |
1115 | @keydown.escape="closeNotificationsMenu" | 1179 | @keydown.escape="closeNotificationsMenu" |
1116 | aria-label="Notifications" | 1180 | aria-label="Notifications" |
1117 | aria-haspopup="true" | 1181 | aria-haspopup="true" |
1118 | > | 1182 | > |
1119 | <svg | 1183 | <svg |
1120 | class="w-5 h-5" | 1184 | class="w-5 h-5" |
1121 | aria-hidden="true" | 1185 | aria-hidden="true" |
1122 | fill="currentColor" | 1186 | fill="currentColor" |
1123 | viewBox="0 0 20 20" | 1187 | viewBox="0 0 20 20" |
1124 | > | 1188 | > |
1125 | <path | 1189 | <path |
1126 | 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" | 1190 | 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" |
1127 | ></path> | 1191 | ></path> |
1128 | </svg> | 1192 | </svg> |
1129 | <!-- Notification badge --> | 1193 | <!-- Notification badge --> |
1130 | <span | 1194 | <span |
1131 | aria-hidden="true" | 1195 | aria-hidden="true" |
1132 | 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" | 1196 | 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" |
1133 | ></span> | 1197 | ></span> |
1134 | </button> | 1198 | </button> |
1135 | <template x-if="isNotificationsMenuOpen"> | 1199 | <template x-if="isNotificationsMenuOpen"> |
1136 | <ul | 1200 | <ul |
1137 | x-transition:leave="transition ease-in duration-150" | 1201 | x-transition:leave="transition ease-in duration-150" |
1138 | x-transition:leave-start="opacity-100" | 1202 | x-transition:leave-start="opacity-100" |
1139 | x-transition:leave-end="opacity-0" | 1203 | x-transition:leave-end="opacity-0" |
1140 | @click.away="closeNotificationsMenu" | 1204 | @click.away="closeNotificationsMenu" |
1141 | @keydown.escape="closeNotificationsMenu" | 1205 | @keydown.escape="closeNotificationsMenu" |
1142 | 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" | 1206 | 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" |
1143 | > | 1207 | > |
1144 | <li class="flex"> | 1208 | <li class="flex"> |
1145 | <a | 1209 | <a |
1146 | 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" | 1210 | 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" |
1147 | href="{{ route('admin.admin-messages') }}" | 1211 | href="{{ route('admin.admin-messages') }}" |
1148 | > | 1212 | > |
1149 | <span>Сообщения</span> | 1213 | <span>Сообщения</span> |
1150 | @if($MsgCount > 0) | 1214 | @if($MsgCount > 0) |
1151 | <span | 1215 | <span |
1152 | 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" | 1216 | 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" |
1153 | > | 1217 | > |
1154 | 1218 | ||
1155 | {{ $MsgCount }} | 1219 | {{ $MsgCount }} |
1156 | </span> | 1220 | </span> |
1157 | @endif | 1221 | @endif |
1158 | </a> | 1222 | </a> |
1159 | </li> | 1223 | </li> |
1160 | <!--<li class="flex"> | 1224 | <!--<li class="flex"> |
1161 | <a | 1225 | <a |
1162 | 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" | 1226 | 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" |
1163 | href="#" | 1227 | href="#" |
1164 | > | 1228 | > |
1165 | <span>Логи</span> | 1229 | <span>Логи</span> |
1166 | </a> | 1230 | </a> |
1167 | </li>--> | 1231 | </li>--> |
1168 | </ul> | 1232 | </ul> |
1169 | </template> | 1233 | </template> |
1170 | </li> | 1234 | </li> |
1171 | <!-- Profile menu --> | 1235 | <!-- Profile menu --> |
1172 | <li class="relative"> | 1236 | <li class="relative"> |
1173 | <button | 1237 | <button |
1174 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" | 1238 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" |
1175 | @click="toggleProfileMenu" | 1239 | @click="toggleProfileMenu" |
1176 | @keydown.escape="closeProfileMenu" | 1240 | @keydown.escape="closeProfileMenu" |
1177 | aria-label="Account" | 1241 | aria-label="Account" |
1178 | aria-haspopup="true" | 1242 | aria-haspopup="true" |
1179 | > | 1243 | > |
1180 | <img | 1244 | <img |
1181 | class="object-cover w-8 h-8 rounded-full" | 1245 | class="object-cover w-8 h-8 rounded-full" |
1182 | src="{{ asset('assets/img/profile.jpg') }}" | 1246 | src="{{ asset('assets/img/profile.jpg') }}" |
1183 | alt="" | 1247 | alt="" |
1184 | aria-hidden="true" | 1248 | aria-hidden="true" |
1185 | /> | 1249 | /> |
1186 | </button> | 1250 | </button> |
1187 | <template x-if="isProfileMenuOpen"> | 1251 | <template x-if="isProfileMenuOpen"> |
1188 | <ul | 1252 | <ul |
1189 | x-transition:leave="transition ease-in duration-150" | 1253 | x-transition:leave="transition ease-in duration-150" |
1190 | x-transition:leave-start="opacity-100" | 1254 | x-transition:leave-start="opacity-100" |
1191 | x-transition:leave-end="opacity-0" | 1255 | x-transition:leave-end="opacity-0" |
1192 | @click.away="closeProfileMenu" | 1256 | @click.away="closeProfileMenu" |
1193 | @keydown.escape="closeProfileMenu" | 1257 | @keydown.escape="closeProfileMenu" |
1194 | 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" | 1258 | 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" |
1195 | aria-label="submenu" | 1259 | aria-label="submenu" |
1196 | > | 1260 | > |
1197 | <li class="flex"> | 1261 | <li class="flex"> |
1198 | <a | 1262 | <a |
1199 | 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" | 1263 | 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" |
1200 | href="{{ route('admin.profile') }}" | 1264 | href="{{ route('admin.profile') }}" |
1201 | > | 1265 | > |
1202 | <svg | 1266 | <svg |
1203 | class="w-4 h-4 mr-3" | 1267 | class="w-4 h-4 mr-3" |
1204 | aria-hidden="true" | 1268 | aria-hidden="true" |
1205 | fill="none" | 1269 | fill="none" |
1206 | stroke-linecap="round" | 1270 | stroke-linecap="round" |
1207 | stroke-linejoin="round" | 1271 | stroke-linejoin="round" |
1208 | stroke-width="2" | 1272 | stroke-width="2" |
1209 | viewBox="0 0 24 24" | 1273 | viewBox="0 0 24 24" |
1210 | stroke="currentColor" | 1274 | stroke="currentColor" |
1211 | > | 1275 | > |
1212 | <path | 1276 | <path |
1213 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" | 1277 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" |
1214 | ></path> | 1278 | ></path> |
1215 | </svg> | 1279 | </svg> |
1216 | <span>Профиль</span> | 1280 | <span>Профиль</span> |
1217 | </a> | 1281 | </a> |
1218 | </li> | 1282 | </li> |
1219 | <li class="flex"> | 1283 | <li class="flex"> |
1220 | <a | 1284 | <a |
1221 | 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" | 1285 | 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" |
1222 | href="{{ route('admin.config') }}" | 1286 | href="{{ route('admin.config') }}" |
1223 | > | 1287 | > |
1224 | <svg | 1288 | <svg |
1225 | class="w-4 h-4 mr-3" | 1289 | class="w-4 h-4 mr-3" |
1226 | aria-hidden="true" | 1290 | aria-hidden="true" |
1227 | fill="none" | 1291 | fill="none" |
1228 | stroke-linecap="round" | 1292 | stroke-linecap="round" |
1229 | stroke-linejoin="round" | 1293 | stroke-linejoin="round" |
1230 | stroke-width="2" | 1294 | stroke-width="2" |
1231 | viewBox="0 0 24 24" | 1295 | viewBox="0 0 24 24" |
1232 | stroke="currentColor" | 1296 | stroke="currentColor" |
1233 | > | 1297 | > |
1234 | <path | 1298 | <path |
1235 | 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" | 1299 | 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" |
1236 | ></path> | 1300 | ></path> |
1237 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> | 1301 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> |
1238 | </svg> | 1302 | </svg> |
1239 | <span>Настройки</span> | 1303 | <span>Настройки</span> |
1240 | </a> | 1304 | </a> |
1241 | </li> | 1305 | </li> |
1242 | <li class="flex"> | 1306 | <li class="flex"> |
1243 | <a | 1307 | <a |
1244 | 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" | 1308 | 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" |
1245 | href="{{ route('admin.logout') }}" | 1309 | href="{{ route('admin.logout') }}" |
1246 | > | 1310 | > |
1247 | <svg | 1311 | <svg |
1248 | class="w-4 h-4 mr-3" | 1312 | class="w-4 h-4 mr-3" |
1249 | aria-hidden="true" | 1313 | aria-hidden="true" |
1250 | fill="none" | 1314 | fill="none" |
1251 | stroke-linecap="round" | 1315 | stroke-linecap="round" |
1252 | stroke-linejoin="round" | 1316 | stroke-linejoin="round" |
1253 | stroke-width="2" | 1317 | stroke-width="2" |
1254 | viewBox="0 0 24 24" | 1318 | viewBox="0 0 24 24" |
1255 | stroke="currentColor" | 1319 | stroke="currentColor" |
1256 | > | 1320 | > |
1257 | <path | 1321 | <path |
1258 | 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" | 1322 | 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" |
1259 | ></path> | 1323 | ></path> |
1260 | </svg> | 1324 | </svg> |
1261 | <span>Выход</span> | 1325 | <span>Выход</span> |
1262 | </a> | 1326 | </a> |
1263 | </li> | 1327 | </li> |
1264 | </ul> | 1328 | </ul> |
1265 | </template> | 1329 | </template> |
1266 | </li> | 1330 | </li> |
1267 | </ul> | 1331 | </ul> |
1268 | </div> | 1332 | </div> |
1269 | </header> | 1333 | </header> |
1270 | <main class="h-full overflow-y-auto"> | 1334 | <main class="h-full overflow-y-auto"> |
1271 | <div class="container px-6 mx-auto grid"> | 1335 | <div class="container px-6 mx-auto grid"> |
1272 | <h2 | 1336 | <h2 |
1273 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" | 1337 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" |
1274 | > | 1338 | > |
1275 | {{$title}} | 1339 | {{$title}} |
1276 | </h2> | 1340 | </h2> |
1277 | <!-- CTA --> | 1341 | <!-- CTA --> |
1278 | <a | 1342 | <a |
1279 | 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" | 1343 | 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" |
1280 | href="{{ route('admin.admin-users') }}" | 1344 | href="{{ route('admin.admin-users') }}" |
1281 | > | 1345 | > |
1282 | <div class="flex items-center"> | 1346 | <div class="flex items-center"> |
1283 | <svg | 1347 | <svg |
1284 | class="w-5 h-5 mr-2" | 1348 | class="w-5 h-5 mr-2" |
1285 | fill="currentColor" | 1349 | fill="currentColor" |
1286 | viewBox="0 0 20 20" | 1350 | viewBox="0 0 20 20" |
1287 | > | 1351 | > |
1288 | <path | 1352 | <path |
1289 | 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" | 1353 | 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" |
1290 | ></path> | 1354 | ></path> |
1291 | </svg> | 1355 | </svg> |
1292 | <span>Контент для админов</span> | 1356 | <span>Контент для админов</span> |
1293 | </div> | 1357 | </div> |
1294 | <span>Список админов →</span> | 1358 | <span>Список админов →</span> |
1295 | </a> | 1359 | </a> |
1296 | 1360 | ||
1297 | @if ($message = Session::get('success')) | 1361 | @if ($message = Session::get('success')) |
1298 | <section> | 1362 | <section> |
1299 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 1363 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
1300 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1364 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
1301 | <span aria-hidden="true">×</span> | 1365 | <span aria-hidden="true">×</span> |
1302 | </button> | 1366 | </button> |
1303 | {{ $message }} | 1367 | {{ $message }} |
1304 | </div> | 1368 | </div> |
1305 | </section> | 1369 | </section> |
1306 | @endif | 1370 | @endif |
1307 | 1371 | ||
1308 | @if ($errors->any()) | 1372 | @if ($errors->any()) |
1309 | <section> | 1373 | <section> |
1310 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 1374 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
1311 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 1375 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
1312 | <span aria-hidden="true">×</span> | 1376 | <span aria-hidden="true">×</span> |
1313 | </button> | 1377 | </button> |
1314 | <ul class="mb-0"> | 1378 | <ul class="mb-0"> |
1315 | @foreach ($errors->all() as $error) | 1379 | @foreach ($errors->all() as $error) |
1316 | <li>{{ $error }}</li> | 1380 | <li>{{ $error }}</li> |
1317 | @endforeach | 1381 | @endforeach |
1318 | </ul> | 1382 | </ul> |
1319 | </div> | 1383 | </div> |
1320 | </section> | 1384 | </section> |
1321 | @endif | 1385 | @endif |
1322 | 1386 | ||
1323 | @yield('content') | 1387 | @yield('content') |
1324 | 1388 | ||
1325 | <!-- Cards | 1389 | <!-- Cards |
1326 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 1390 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
1327 | 1391 | ||
1328 | <div | 1392 | <div |
1329 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1393 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1330 | > | 1394 | > |
1331 | <div | 1395 | <div |
1332 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" | 1396 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" |
1333 | > | 1397 | > |
1334 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1398 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1335 | <path | 1399 | <path |
1336 | 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" | 1400 | 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" |
1337 | ></path> | 1401 | ></path> |
1338 | </svg> | 1402 | </svg> |
1339 | </div> | 1403 | </div> |
1340 | <div> | 1404 | <div> |
1341 | <p | 1405 | <p |
1342 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1406 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1343 | > | 1407 | > |
1344 | Total clients | 1408 | Total clients |
1345 | </p> | 1409 | </p> |
1346 | <p | 1410 | <p |
1347 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1411 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1348 | > | 1412 | > |
1349 | 6389 | 1413 | 6389 |
1350 | </p> | 1414 | </p> |
1351 | </div> | 1415 | </div> |
1352 | </div> | 1416 | </div> |
1353 | 1417 | ||
1354 | <div | 1418 | <div |
1355 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1419 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1356 | > | 1420 | > |
1357 | <div | 1421 | <div |
1358 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" | 1422 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" |
1359 | > | 1423 | > |
1360 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1424 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1361 | <path | 1425 | <path |
1362 | fill-rule="evenodd" | 1426 | fill-rule="evenodd" |
1363 | 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" | 1427 | 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" |
1364 | clip-rule="evenodd" | 1428 | clip-rule="evenodd" |
1365 | ></path> | 1429 | ></path> |
1366 | </svg> | 1430 | </svg> |
1367 | </div> | 1431 | </div> |
1368 | <div> | 1432 | <div> |
1369 | <p | 1433 | <p |
1370 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1434 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1371 | > | 1435 | > |
1372 | Account balance | 1436 | Account balance |
1373 | </p> | 1437 | </p> |
1374 | <p | 1438 | <p |
1375 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1439 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1376 | > | 1440 | > |
1377 | $ 46,760.89 | 1441 | $ 46,760.89 |
1378 | </p> | 1442 | </p> |
1379 | </div> | 1443 | </div> |
1380 | </div> | 1444 | </div> |
1381 | 1445 | ||
1382 | <div | 1446 | <div |
1383 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1447 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1384 | > | 1448 | > |
1385 | <div | 1449 | <div |
1386 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" | 1450 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" |
1387 | > | 1451 | > |
1388 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1452 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1389 | <path | 1453 | <path |
1390 | 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" | 1454 | 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" |
1391 | ></path> | 1455 | ></path> |
1392 | </svg> | 1456 | </svg> |
1393 | </div> | 1457 | </div> |
1394 | <div> | 1458 | <div> |
1395 | <p | 1459 | <p |
1396 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1460 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1397 | > | 1461 | > |
1398 | New sales | 1462 | New sales |
1399 | </p> | 1463 | </p> |
1400 | <p | 1464 | <p |
1401 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1465 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1402 | > | 1466 | > |
1403 | 376 | 1467 | 376 |
1404 | </p> | 1468 | </p> |
1405 | </div> | 1469 | </div> |
1406 | </div> | 1470 | </div> |
1407 | 1471 | ||
1408 | <div | 1472 | <div |
1409 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1473 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1410 | > | 1474 | > |
1411 | <div | 1475 | <div |
1412 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" | 1476 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" |
1413 | > | 1477 | > |
1414 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1478 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1415 | <path | 1479 | <path |
1416 | fill-rule="evenodd" | 1480 | fill-rule="evenodd" |
1417 | 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" | 1481 | 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" |
1418 | clip-rule="evenodd" | 1482 | clip-rule="evenodd" |
1419 | ></path> | 1483 | ></path> |
1420 | </svg> | 1484 | </svg> |
1421 | </div> | 1485 | </div> |
1422 | <div> | 1486 | <div> |
1423 | <p | 1487 | <p |
1424 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1488 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1425 | > | 1489 | > |
1426 | Pending contacts | 1490 | Pending contacts |
1427 | </p> | 1491 | </p> |
1428 | <p | 1492 | <p |
1429 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1493 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1430 | > | 1494 | > |
1431 | 35 | 1495 | 35 |
1432 | </p> | 1496 | </p> |
1433 | </div> | 1497 | </div> |
1434 | </div> | 1498 | </div> |
1435 | </div> | 1499 | </div> |
1436 | --> | 1500 | --> |
1437 | <!-- New Table | 1501 | <!-- New Table |
1438 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 1502 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> |
1439 | <div class="w-full overflow-x-auto"> | 1503 | <div class="w-full overflow-x-auto"> |
1440 | <table class="w-full whitespace-no-wrap"> | 1504 | <table class="w-full whitespace-no-wrap"> |
1441 | <thead> | 1505 | <thead> |
1442 | <tr | 1506 | <tr |
1443 | 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" | 1507 | 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" |
1444 | > | 1508 | > |
1445 | <th class="px-4 py-3">Client</th> | 1509 | <th class="px-4 py-3">Client</th> |
1446 | <th class="px-4 py-3">Amount</th> | 1510 | <th class="px-4 py-3">Amount</th> |
1447 | <th class="px-4 py-3">Status</th> | 1511 | <th class="px-4 py-3">Status</th> |
1448 | <th class="px-4 py-3">Date</th> | 1512 | <th class="px-4 py-3">Date</th> |
1449 | </tr> | 1513 | </tr> |
1450 | </thead> | 1514 | </thead> |
1451 | <tbody | 1515 | <tbody |
1452 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" | 1516 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" |
1453 | > | 1517 | > |
1454 | <tr class="text-gray-700 dark:text-gray-400"> | 1518 | <tr class="text-gray-700 dark:text-gray-400"> |
1455 | <td class="px-4 py-3"> | 1519 | <td class="px-4 py-3"> |
1456 | <div class="flex items-center text-sm"> | 1520 | <div class="flex items-center text-sm"> |
1457 | 1521 | ||
1458 | <div | 1522 | <div |
1459 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1523 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1460 | > | 1524 | > |
1461 | <img | 1525 | <img |
1462 | class="object-cover w-full h-full rounded-full" | 1526 | class="object-cover w-full h-full rounded-full" |
1463 | 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" | 1527 | 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" |
1464 | alt="" | 1528 | alt="" |
1465 | loading="lazy" | 1529 | loading="lazy" |
1466 | /> | 1530 | /> |
1467 | <div | 1531 | <div |
1468 | class="absolute inset-0 rounded-full shadow-inner" | 1532 | class="absolute inset-0 rounded-full shadow-inner" |
1469 | aria-hidden="true" | 1533 | aria-hidden="true" |
1470 | ></div> | 1534 | ></div> |
1471 | </div> | 1535 | </div> |
1472 | <div> | 1536 | <div> |
1473 | <p class="font-semibold">Hans Burger</p> | 1537 | <p class="font-semibold">Hans Burger</p> |
1474 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1538 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1475 | 10x Developer | 1539 | 10x Developer |
1476 | </p> | 1540 | </p> |
1477 | </div> | 1541 | </div> |
1478 | </div> | 1542 | </div> |
1479 | </td> | 1543 | </td> |
1480 | <td class="px-4 py-3 text-sm"> | 1544 | <td class="px-4 py-3 text-sm"> |
1481 | $ 863.45 | 1545 | $ 863.45 |
1482 | </td> | 1546 | </td> |
1483 | <td class="px-4 py-3 text-xs"> | 1547 | <td class="px-4 py-3 text-xs"> |
1484 | <span | 1548 | <span |
1485 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1549 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1486 | > | 1550 | > |
1487 | Approved | 1551 | Approved |
1488 | </span> | 1552 | </span> |
1489 | </td> | 1553 | </td> |
1490 | <td class="px-4 py-3 text-sm"> | 1554 | <td class="px-4 py-3 text-sm"> |
1491 | 6/10/2020 | 1555 | 6/10/2020 |
1492 | </td> | 1556 | </td> |
1493 | </tr> | 1557 | </tr> |
1494 | 1558 | ||
1495 | <tr class="text-gray-700 dark:text-gray-400"> | 1559 | <tr class="text-gray-700 dark:text-gray-400"> |
1496 | <td class="px-4 py-3"> | 1560 | <td class="px-4 py-3"> |
1497 | <div class="flex items-center text-sm"> | 1561 | <div class="flex items-center text-sm"> |
1498 | 1562 | ||
1499 | <div | 1563 | <div |
1500 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1564 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1501 | > | 1565 | > |
1502 | <img | 1566 | <img |
1503 | class="object-cover w-full h-full rounded-full" | 1567 | class="object-cover w-full h-full rounded-full" |
1504 | 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" | 1568 | 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" |
1505 | alt="" | 1569 | alt="" |
1506 | loading="lazy" | 1570 | loading="lazy" |
1507 | /> | 1571 | /> |
1508 | <div | 1572 | <div |
1509 | class="absolute inset-0 rounded-full shadow-inner" | 1573 | class="absolute inset-0 rounded-full shadow-inner" |
1510 | aria-hidden="true" | 1574 | aria-hidden="true" |
1511 | ></div> | 1575 | ></div> |
1512 | </div> | 1576 | </div> |
1513 | <div> | 1577 | <div> |
1514 | <p class="font-semibold">Jolina Angelie</p> | 1578 | <p class="font-semibold">Jolina Angelie</p> |
1515 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1579 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1516 | Unemployed | 1580 | Unemployed |
1517 | </p> | 1581 | </p> |
1518 | </div> | 1582 | </div> |
1519 | </div> | 1583 | </div> |
1520 | </td> | 1584 | </td> |
1521 | <td class="px-4 py-3 text-sm"> | 1585 | <td class="px-4 py-3 text-sm"> |
1522 | $ 369.95 | 1586 | $ 369.95 |
1523 | </td> | 1587 | </td> |
1524 | <td class="px-4 py-3 text-xs"> | 1588 | <td class="px-4 py-3 text-xs"> |
1525 | <span | 1589 | <span |
1526 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" | 1590 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" |
1527 | > | 1591 | > |
1528 | Pending | 1592 | Pending |
1529 | </span> | 1593 | </span> |
1530 | </td> | 1594 | </td> |
1531 | <td class="px-4 py-3 text-sm"> | 1595 | <td class="px-4 py-3 text-sm"> |
1532 | 6/10/2020 | 1596 | 6/10/2020 |
1533 | </td> | 1597 | </td> |
1534 | </tr> | 1598 | </tr> |
1535 | 1599 | ||
1536 | <tr class="text-gray-700 dark:text-gray-400"> | 1600 | <tr class="text-gray-700 dark:text-gray-400"> |
1537 | <td class="px-4 py-3"> | 1601 | <td class="px-4 py-3"> |
1538 | <div class="flex items-center text-sm"> | 1602 | <div class="flex items-center text-sm"> |
1539 | 1603 | ||
1540 | <div | 1604 | <div |
1541 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1605 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1542 | > | 1606 | > |
1543 | <img | 1607 | <img |
1544 | class="object-cover w-full h-full rounded-full" | 1608 | class="object-cover w-full h-full rounded-full" |
1545 | 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" | 1609 | 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" |
1546 | alt="" | 1610 | alt="" |
1547 | loading="lazy" | 1611 | loading="lazy" |
1548 | /> | 1612 | /> |
1549 | <div | 1613 | <div |
1550 | class="absolute inset-0 rounded-full shadow-inner" | 1614 | class="absolute inset-0 rounded-full shadow-inner" |
1551 | aria-hidden="true" | 1615 | aria-hidden="true" |
1552 | ></div> | 1616 | ></div> |
1553 | </div> | 1617 | </div> |
1554 | <div> | 1618 | <div> |
1555 | <p class="font-semibold">Sarah Curry</p> | 1619 | <p class="font-semibold">Sarah Curry</p> |
1556 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1620 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1557 | Designer | 1621 | Designer |
1558 | </p> | 1622 | </p> |
1559 | </div> | 1623 | </div> |
1560 | </div> | 1624 | </div> |
1561 | </td> | 1625 | </td> |
1562 | <td class="px-4 py-3 text-sm"> | 1626 | <td class="px-4 py-3 text-sm"> |
1563 | $ 86.00 | 1627 | $ 86.00 |
1564 | </td> | 1628 | </td> |
1565 | <td class="px-4 py-3 text-xs"> | 1629 | <td class="px-4 py-3 text-xs"> |
1566 | <span | 1630 | <span |
1567 | 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" | 1631 | 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" |
1568 | > | 1632 | > |
1569 | Denied | 1633 | Denied |
1570 | </span> | 1634 | </span> |
1571 | </td> | 1635 | </td> |
1572 | <td class="px-4 py-3 text-sm"> | 1636 | <td class="px-4 py-3 text-sm"> |
1573 | 6/10/2020 | 1637 | 6/10/2020 |
1574 | </td> | 1638 | </td> |
1575 | </tr> | 1639 | </tr> |
1576 | 1640 | ||
1577 | <tr class="text-gray-700 dark:text-gray-400"> | 1641 | <tr class="text-gray-700 dark:text-gray-400"> |
1578 | <td class="px-4 py-3"> | 1642 | <td class="px-4 py-3"> |
1579 | <div class="flex items-center text-sm"> | 1643 | <div class="flex items-center text-sm"> |
1580 | 1644 | ||
1581 | <div | 1645 | <div |
1582 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1646 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1583 | > | 1647 | > |
1584 | <img | 1648 | <img |
1585 | class="object-cover w-full h-full rounded-full" | 1649 | class="object-cover w-full h-full rounded-full" |
1586 | 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" | 1650 | 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" |
1587 | alt="" | 1651 | alt="" |
1588 | loading="lazy" | 1652 | loading="lazy" |
1589 | /> | 1653 | /> |
1590 | <div | 1654 | <div |
1591 | class="absolute inset-0 rounded-full shadow-inner" | 1655 | class="absolute inset-0 rounded-full shadow-inner" |
1592 | aria-hidden="true" | 1656 | aria-hidden="true" |
1593 | ></div> | 1657 | ></div> |
1594 | </div> | 1658 | </div> |
1595 | <div> | 1659 | <div> |
1596 | <p class="font-semibold">Rulia Joberts</p> | 1660 | <p class="font-semibold">Rulia Joberts</p> |
1597 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1661 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1598 | Actress | 1662 | Actress |
1599 | </p> | 1663 | </p> |
1600 | </div> | 1664 | </div> |
1601 | </div> | 1665 | </div> |
1602 | </td> | 1666 | </td> |
1603 | <td class="px-4 py-3 text-sm"> | 1667 | <td class="px-4 py-3 text-sm"> |
1604 | $ 1276.45 | 1668 | $ 1276.45 |
1605 | </td> | 1669 | </td> |
1606 | <td class="px-4 py-3 text-xs"> | 1670 | <td class="px-4 py-3 text-xs"> |
1607 | <span | 1671 | <span |
1608 | 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" | 1672 | 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" |
1609 | > | 1673 | > |
1610 | Approved | 1674 | Approved |
1611 | </span> | 1675 | </span> |
1612 | </td> | 1676 | </td> |
1613 | <td class="px-4 py-3 text-sm"> | 1677 | <td class="px-4 py-3 text-sm"> |
1614 | 6/10/2020 | 1678 | 6/10/2020 |
1615 | </td> | 1679 | </td> |
1616 | </tr> | 1680 | </tr> |
1617 | 1681 | ||
1618 | <tr class="text-gray-700 dark:text-gray-400"> | 1682 | <tr class="text-gray-700 dark:text-gray-400"> |
1619 | <td class="px-4 py-3"> | 1683 | <td class="px-4 py-3"> |
1620 | <div class="flex items-center text-sm"> | 1684 | <div class="flex items-center text-sm"> |
1621 | 1685 | ||
1622 | <div | 1686 | <div |
1623 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1687 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1624 | > | 1688 | > |
1625 | <img | 1689 | <img |
1626 | class="object-cover w-full h-full rounded-full" | 1690 | class="object-cover w-full h-full rounded-full" |
1627 | 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" | 1691 | 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" |
1628 | alt="" | 1692 | alt="" |
1629 | loading="lazy" | 1693 | loading="lazy" |
1630 | /> | 1694 | /> |
1631 | <div | 1695 | <div |
1632 | class="absolute inset-0 rounded-full shadow-inner" | 1696 | class="absolute inset-0 rounded-full shadow-inner" |
1633 | aria-hidden="true" | 1697 | aria-hidden="true" |
1634 | ></div> | 1698 | ></div> |
1635 | </div> | 1699 | </div> |
1636 | <div> | 1700 | <div> |
1637 | <p class="font-semibold">Wenzel Dashington</p> | 1701 | <p class="font-semibold">Wenzel Dashington</p> |
1638 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1702 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1639 | Actor | 1703 | Actor |
1640 | </p> | 1704 | </p> |
1641 | </div> | 1705 | </div> |
1642 | </div> | 1706 | </div> |
1643 | </td> | 1707 | </td> |
1644 | <td class="px-4 py-3 text-sm"> | 1708 | <td class="px-4 py-3 text-sm"> |
1645 | $ 863.45 | 1709 | $ 863.45 |
1646 | </td> | 1710 | </td> |
1647 | <td class="px-4 py-3 text-xs"> | 1711 | <td class="px-4 py-3 text-xs"> |
1648 | <span | 1712 | <span |
1649 | 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" | 1713 | 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" |
1650 | > | 1714 | > |
1651 | Expired | 1715 | Expired |
1652 | </span> | 1716 | </span> |
1653 | </td> | 1717 | </td> |
1654 | <td class="px-4 py-3 text-sm"> | 1718 | <td class="px-4 py-3 text-sm"> |
1655 | 6/10/2020 | 1719 | 6/10/2020 |
1656 | </td> | 1720 | </td> |
1657 | </tr> | 1721 | </tr> |
1658 | 1722 | ||
1659 | <tr class="text-gray-700 dark:text-gray-400"> | 1723 | <tr class="text-gray-700 dark:text-gray-400"> |
1660 | <td class="px-4 py-3"> | 1724 | <td class="px-4 py-3"> |
1661 | <div class="flex items-center text-sm"> | 1725 | <div class="flex items-center text-sm"> |
1662 | 1726 | ||
1663 | <div | 1727 | <div |
1664 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1728 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1665 | > | 1729 | > |
1666 | <img | 1730 | <img |
1667 | class="object-cover w-full h-full rounded-full" | 1731 | class="object-cover w-full h-full rounded-full" |
1668 | 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" | 1732 | 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" |
1669 | alt="" | 1733 | alt="" |
1670 | loading="lazy" | 1734 | loading="lazy" |
1671 | /> | 1735 | /> |
1672 | <div | 1736 | <div |
1673 | class="absolute inset-0 rounded-full shadow-inner" | 1737 | class="absolute inset-0 rounded-full shadow-inner" |
1674 | aria-hidden="true" | 1738 | aria-hidden="true" |
1675 | ></div> | 1739 | ></div> |
1676 | </div> | 1740 | </div> |
1677 | <div> | 1741 | <div> |
1678 | <p class="font-semibold">Dave Li</p> | 1742 | <p class="font-semibold">Dave Li</p> |
1679 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1743 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1680 | Influencer | 1744 | Influencer |
1681 | </p> | 1745 | </p> |
1682 | </div> | 1746 | </div> |
1683 | </div> | 1747 | </div> |
1684 | </td> | 1748 | </td> |
1685 | <td class="px-4 py-3 text-sm"> | 1749 | <td class="px-4 py-3 text-sm"> |
1686 | $ 863.45 | 1750 | $ 863.45 |
1687 | </td> | 1751 | </td> |
1688 | <td class="px-4 py-3 text-xs"> | 1752 | <td class="px-4 py-3 text-xs"> |
1689 | <span | 1753 | <span |
1690 | 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" | 1754 | 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" |
1691 | > | 1755 | > |
1692 | Approved | 1756 | Approved |
1693 | </span> | 1757 | </span> |
1694 | </td> | 1758 | </td> |
1695 | <td class="px-4 py-3 text-sm"> | 1759 | <td class="px-4 py-3 text-sm"> |
1696 | 6/10/2020 | 1760 | 6/10/2020 |
1697 | </td> | 1761 | </td> |
1698 | </tr> | 1762 | </tr> |
1699 | 1763 | ||
1700 | <tr class="text-gray-700 dark:text-gray-400"> | 1764 | <tr class="text-gray-700 dark:text-gray-400"> |
1701 | <td class="px-4 py-3"> | 1765 | <td class="px-4 py-3"> |
1702 | <div class="flex items-center text-sm"> | 1766 | <div class="flex items-center text-sm"> |
1703 | 1767 | ||
1704 | <div | 1768 | <div |
1705 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1769 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1706 | > | 1770 | > |
1707 | <img | 1771 | <img |
1708 | class="object-cover w-full h-full rounded-full" | 1772 | class="object-cover w-full h-full rounded-full" |
1709 | 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" | 1773 | 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" |
1710 | alt="" | 1774 | alt="" |
1711 | loading="lazy" | 1775 | loading="lazy" |
1712 | /> | 1776 | /> |
1713 | <div | 1777 | <div |
1714 | class="absolute inset-0 rounded-full shadow-inner" | 1778 | class="absolute inset-0 rounded-full shadow-inner" |
1715 | aria-hidden="true" | 1779 | aria-hidden="true" |
1716 | ></div> | 1780 | ></div> |
1717 | </div> | 1781 | </div> |
1718 | <div> | 1782 | <div> |
1719 | <p class="font-semibold">Maria Ramovic</p> | 1783 | <p class="font-semibold">Maria Ramovic</p> |
1720 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1784 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1721 | Runner | 1785 | Runner |
1722 | </p> | 1786 | </p> |
1723 | </div> | 1787 | </div> |
1724 | </div> | 1788 | </div> |
1725 | </td> | 1789 | </td> |
1726 | <td class="px-4 py-3 text-sm"> | 1790 | <td class="px-4 py-3 text-sm"> |
1727 | $ 863.45 | 1791 | $ 863.45 |
1728 | </td> | 1792 | </td> |
1729 | <td class="px-4 py-3 text-xs"> | 1793 | <td class="px-4 py-3 text-xs"> |
1730 | <span | 1794 | <span |
1731 | 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" | 1795 | 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" |
1732 | > | 1796 | > |
1733 | Approved | 1797 | Approved |
1734 | </span> | 1798 | </span> |
1735 | </td> | 1799 | </td> |
1736 | <td class="px-4 py-3 text-sm"> | 1800 | <td class="px-4 py-3 text-sm"> |
1737 | 6/10/2020 | 1801 | 6/10/2020 |
1738 | </td> | 1802 | </td> |
1739 | </tr> | 1803 | </tr> |
1740 | 1804 | ||
1741 | <tr class="text-gray-700 dark:text-gray-400"> | 1805 | <tr class="text-gray-700 dark:text-gray-400"> |
1742 | <td class="px-4 py-3"> | 1806 | <td class="px-4 py-3"> |
1743 | <div class="flex items-center text-sm"> | 1807 | <div class="flex items-center text-sm"> |
1744 | 1808 | ||
1745 | <div | 1809 | <div |
1746 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1810 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1747 | > | 1811 | > |
1748 | <img | 1812 | <img |
1749 | class="object-cover w-full h-full rounded-full" | 1813 | class="object-cover w-full h-full rounded-full" |
1750 | 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" | 1814 | 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" |
1751 | alt="" | 1815 | alt="" |
1752 | loading="lazy" | 1816 | loading="lazy" |
1753 | /> | 1817 | /> |
1754 | <div | 1818 | <div |
1755 | class="absolute inset-0 rounded-full shadow-inner" | 1819 | class="absolute inset-0 rounded-full shadow-inner" |
1756 | aria-hidden="true" | 1820 | aria-hidden="true" |
1757 | ></div> | 1821 | ></div> |
1758 | </div> | 1822 | </div> |
1759 | <div> | 1823 | <div> |
1760 | <p class="font-semibold">Hitney Wouston</p> | 1824 | <p class="font-semibold">Hitney Wouston</p> |
1761 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1825 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1762 | Singer | 1826 | Singer |
1763 | </p> | 1827 | </p> |
1764 | </div> | 1828 | </div> |
1765 | </div> | 1829 | </div> |
1766 | </td> | 1830 | </td> |
1767 | <td class="px-4 py-3 text-sm"> | 1831 | <td class="px-4 py-3 text-sm"> |
1768 | $ 863.45 | 1832 | $ 863.45 |
1769 | </td> | 1833 | </td> |
1770 | <td class="px-4 py-3 text-xs"> | 1834 | <td class="px-4 py-3 text-xs"> |
1771 | <span | 1835 | <span |
1772 | 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" | 1836 | 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" |
1773 | > | 1837 | > |
1774 | Approved | 1838 | Approved |
1775 | </span> | 1839 | </span> |
1776 | </td> | 1840 | </td> |
1777 | <td class="px-4 py-3 text-sm"> | 1841 | <td class="px-4 py-3 text-sm"> |
1778 | 6/10/2020 | 1842 | 6/10/2020 |
1779 | </td> | 1843 | </td> |
1780 | </tr> | 1844 | </tr> |
1781 | 1845 | ||
1782 | <tr class="text-gray-700 dark:text-gray-400"> | 1846 | <tr class="text-gray-700 dark:text-gray-400"> |
1783 | <td class="px-4 py-3"> | 1847 | <td class="px-4 py-3"> |
1784 | <div class="flex items-center text-sm"> | 1848 | <div class="flex items-center text-sm"> |
1785 | 1849 | ||
1786 | <div | 1850 | <div |
1787 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1851 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1788 | > | 1852 | > |
1789 | <img | 1853 | <img |
1790 | class="object-cover w-full h-full rounded-full" | 1854 | class="object-cover w-full h-full rounded-full" |
1791 | 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" | 1855 | 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" |
1792 | alt="" | 1856 | alt="" |
1793 | loading="lazy" | 1857 | loading="lazy" |
1794 | /> | 1858 | /> |
1795 | <div | 1859 | <div |
1796 | class="absolute inset-0 rounded-full shadow-inner" | 1860 | class="absolute inset-0 rounded-full shadow-inner" |
1797 | aria-hidden="true" | 1861 | aria-hidden="true" |
1798 | ></div> | 1862 | ></div> |
1799 | </div> | 1863 | </div> |
1800 | <div> | 1864 | <div> |
1801 | <p class="font-semibold">Hans Burger</p> | 1865 | <p class="font-semibold">Hans Burger</p> |
1802 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1866 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1803 | 10x Developer | 1867 | 10x Developer |
1804 | </p> | 1868 | </p> |
1805 | </div> | 1869 | </div> |
1806 | </div> | 1870 | </div> |
1807 | </td> | 1871 | </td> |
1808 | <td class="px-4 py-3 text-sm"> | 1872 | <td class="px-4 py-3 text-sm"> |
1809 | $ 863.45 | 1873 | $ 863.45 |
1810 | </td> | 1874 | </td> |
1811 | <td class="px-4 py-3 text-xs"> | 1875 | <td class="px-4 py-3 text-xs"> |
1812 | <span | 1876 | <span |
1813 | 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" | 1877 | 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" |
1814 | > | 1878 | > |
1815 | Approved | 1879 | Approved |
1816 | </span> | 1880 | </span> |
1817 | </td> | 1881 | </td> |
1818 | <td class="px-4 py-3 text-sm"> | 1882 | <td class="px-4 py-3 text-sm"> |
1819 | 6/10/2020 | 1883 | 6/10/2020 |
1820 | </td> | 1884 | </td> |
1821 | </tr> | 1885 | </tr> |
1822 | </tbody> | 1886 | </tbody> |
1823 | </table> | 1887 | </table> |
1824 | </div> | 1888 | </div> |
1825 | <div | 1889 | <div |
1826 | 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" | 1890 | 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" |
1827 | > | 1891 | > |
1828 | <span class="flex items-center col-span-3"> | 1892 | <span class="flex items-center col-span-3"> |
1829 | Showing 21-30 of 100 | 1893 | Showing 21-30 of 100 |
1830 | </span> | 1894 | </span> |
1831 | <span class="col-span-2"></span> | 1895 | <span class="col-span-2"></span> |
1832 | 1896 | ||
1833 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 1897 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
1834 | <nav aria-label="Table navigation"> | 1898 | <nav aria-label="Table navigation"> |
1835 | <ul class="inline-flex items-center"> | 1899 | <ul class="inline-flex items-center"> |
1836 | <li> | 1900 | <li> |
1837 | <button | 1901 | <button |
1838 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 1902 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
1839 | aria-label="Previous" | 1903 | aria-label="Previous" |
1840 | > | 1904 | > |
1841 | <svg | 1905 | <svg |
1842 | aria-hidden="true" | 1906 | aria-hidden="true" |
1843 | class="w-4 h-4 fill-current" | 1907 | class="w-4 h-4 fill-current" |
1844 | viewBox="0 0 20 20" | 1908 | viewBox="0 0 20 20" |
1845 | > | 1909 | > |
1846 | <path | 1910 | <path |
1847 | 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" | 1911 | 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" |
1848 | clip-rule="evenodd" | 1912 | clip-rule="evenodd" |
1849 | fill-rule="evenodd" | 1913 | fill-rule="evenodd" |
1850 | ></path> | 1914 | ></path> |
1851 | </svg> | 1915 | </svg> |
1852 | </button> | 1916 | </button> |
1853 | </li> | 1917 | </li> |
1854 | <li> | 1918 | <li> |
1855 | <button | 1919 | <button |
1856 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1920 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1857 | > | 1921 | > |
1858 | 1 | 1922 | 1 |
1859 | </button> | 1923 | </button> |
1860 | </li> | 1924 | </li> |
1861 | <li> | 1925 | <li> |
1862 | <button | 1926 | <button |
1863 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1927 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1864 | > | 1928 | > |
1865 | 2 | 1929 | 2 |
1866 | </button> | 1930 | </button> |
1867 | </li> | 1931 | </li> |
1868 | <li> | 1932 | <li> |
1869 | <button | 1933 | <button |
1870 | 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" | 1934 | 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" |
1871 | > | 1935 | > |
1872 | 3 | 1936 | 3 |
1873 | </button> | 1937 | </button> |
1874 | </li> | 1938 | </li> |
1875 | <li> | 1939 | <li> |
1876 | <button | 1940 | <button |
1877 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1941 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1878 | > | 1942 | > |
1879 | 4 | 1943 | 4 |
1880 | </button> | 1944 | </button> |
1881 | </li> | 1945 | </li> |
1882 | <li> | 1946 | <li> |
1883 | <span class="px-3 py-1">...</span> | 1947 | <span class="px-3 py-1">...</span> |
1884 | </li> | 1948 | </li> |
1885 | <li> | 1949 | <li> |
1886 | <button | 1950 | <button |
1887 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1951 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1888 | > | 1952 | > |
1889 | 8 | 1953 | 8 |
1890 | </button> | 1954 | </button> |
1891 | </li> | 1955 | </li> |
1892 | <li> | 1956 | <li> |
1893 | <button | 1957 | <button |
1894 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1958 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1895 | > | 1959 | > |
1896 | 9 | 1960 | 9 |
1897 | </button> | 1961 | </button> |
1898 | </li> | 1962 | </li> |
1899 | <li> | 1963 | <li> |
1900 | <button | 1964 | <button |
1901 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 1965 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
1902 | aria-label="Next" | 1966 | aria-label="Next" |
1903 | > | 1967 | > |
1904 | <svg | 1968 | <svg |
1905 | class="w-4 h-4 fill-current" | 1969 | class="w-4 h-4 fill-current" |
1906 | aria-hidden="true" | 1970 | aria-hidden="true" |
1907 | viewBox="0 0 20 20" | 1971 | viewBox="0 0 20 20" |
1908 | > | 1972 | > |
1909 | <path | 1973 | <path |
1910 | 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" | 1974 | 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" |
1911 | clip-rule="evenodd" | 1975 | clip-rule="evenodd" |
1912 | fill-rule="evenodd" | 1976 | fill-rule="evenodd" |
1913 | ></path> | 1977 | ></path> |
1914 | </svg> | 1978 | </svg> |
1915 | </button> | 1979 | </button> |
1916 | </li> | 1980 | </li> |
1917 | </ul> | 1981 | </ul> |
1918 | </nav> | 1982 | </nav> |
1919 | </span> | 1983 | </span> |
1920 | </div> | 1984 | </div> |
1921 | </div> | 1985 | </div> |
1922 | --> | 1986 | --> |
1923 | <!-- Charts --> | 1987 | <!-- Charts --> |
1924 | <!-- | 1988 | <!-- |
1925 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> | 1989 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> |
1926 | Графики | 1990 | Графики |
1927 | </h2> | 1991 | </h2> |
1928 | <div class="grid gap-6 mb-8 md:grid-cols-2"> | 1992 | <div class="grid gap-6 mb-8 md:grid-cols-2"> |
1929 | <div | 1993 | <div |
1930 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1994 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1931 | > | 1995 | > |
1932 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1996 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1933 | Revenue | 1997 | Revenue |
1934 | </h4> | 1998 | </h4> |
1935 | <canvas id="pie"></canvas> | 1999 | <canvas id="pie"></canvas> |
1936 | <div | 2000 | <div |
1937 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 2001 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1938 | > | 2002 | > |
1939 | 2003 | ||
1940 | <div class="flex items-center"> | 2004 | <div class="flex items-center"> |
1941 | <span | 2005 | <span |
1942 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" | 2006 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" |
1943 | ></span> | 2007 | ></span> |
1944 | <span>Shirts</span> | 2008 | <span>Shirts</span> |
1945 | </div> | 2009 | </div> |
1946 | <div class="flex items-center"> | 2010 | <div class="flex items-center"> |
1947 | <span | 2011 | <span |
1948 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 2012 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1949 | ></span> | 2013 | ></span> |
1950 | <span>Shoes</span> | 2014 | <span>Shoes</span> |
1951 | </div> | 2015 | </div> |
1952 | <div class="flex items-center"> | 2016 | <div class="flex items-center"> |
1953 | <span | 2017 | <span |
1954 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 2018 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1955 | ></span> | 2019 | ></span> |
1956 | <span>Bags</span> | 2020 | <span>Bags</span> |
1957 | </div> | 2021 | </div> |
1958 | </div> | 2022 | </div> |
1959 | </div> | 2023 | </div> |
1960 | <div | 2024 | <div |
1961 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 2025 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1962 | > | 2026 | > |
1963 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 2027 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1964 | Traffic | 2028 | Traffic |
1965 | </h4> | 2029 | </h4> |
1966 | <canvas id="line"></canvas> | 2030 | <canvas id="line"></canvas> |
1967 | <div | 2031 | <div |
1968 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 2032 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1969 | > | 2033 | > |
1970 | 2034 | ||
1971 | <div class="flex items-center"> | 2035 | <div class="flex items-center"> |
1972 | <span | 2036 | <span |
1973 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 2037 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1974 | ></span> | 2038 | ></span> |
1975 | <span>Organic</span> | 2039 | <span>Organic</span> |
1976 | </div> | 2040 | </div> |
1977 | <div class="flex items-center"> | 2041 | <div class="flex items-center"> |
1978 | <span | 2042 | <span |
1979 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 2043 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1980 | ></span> | 2044 | ></span> |
1981 | <span>Paid</span> | 2045 | <span>Paid</span> |
1982 | </div> | 2046 | </div> |
1983 | </div> | 2047 | </div> |
1984 | </div> | 2048 | </div> |
1985 | </div> | 2049 | </div> |
1986 | --> | 2050 | --> |
1987 | </div> | 2051 | </div> |
1988 | </main> | 2052 | </main> |
1989 | </div> | 2053 | </div> |
1990 | </div> | 2054 | </div> |
1991 | @yield('modal') | 2055 | @yield('modal') |
1992 | </body> | 2056 | </body> |
1993 | @yield('script') | 2057 | @yield('script') |
routes/web.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | use App\Http\Controllers\AdEmployerController; | 3 | use App\Http\Controllers\AdEmployerController; |
4 | use App\Http\Controllers\Admin\AdminController; | 4 | use App\Http\Controllers\Admin\AdminController; |
5 | use App\Http\Controllers\Admin\CategoryController; | 5 | use App\Http\Controllers\Admin\CategoryController; |
6 | use App\Http\Controllers\Admin\CategoryEmpController; | 6 | use App\Http\Controllers\Admin\CategoryEmpController; |
7 | use App\Http\Controllers\Admin\EducationController; | 7 | use App\Http\Controllers\Admin\EducationController; |
8 | use App\Http\Controllers\Admin\EmployersController; | 8 | use App\Http\Controllers\Admin\EmployersController; |
9 | use App\Http\Controllers\Admin\InfoBloksController; | 9 | use App\Http\Controllers\Admin\InfoBloksController; |
10 | use App\Http\Controllers\Admin\JobTitlesController; | 10 | use App\Http\Controllers\Admin\JobTitlesController; |
11 | use App\Http\Controllers\Admin\UsersController; | 11 | use App\Http\Controllers\Admin\UsersController; |
12 | use App\Http\Controllers\Admin\WorkersController; | 12 | use App\Http\Controllers\Admin\WorkersController; |
13 | use App\Http\Controllers\Auth\ForgotPasswordController; | 13 | use App\Http\Controllers\Auth\ForgotPasswordController; |
14 | use App\Http\Controllers\Auth\LoginController; | 14 | use App\Http\Controllers\Auth\LoginController; |
15 | use App\Http\Controllers\Auth\RegisterController; | 15 | use App\Http\Controllers\Auth\RegisterController; |
16 | use App\Http\Controllers\CKEditorController; | 16 | use App\Http\Controllers\CKEditorController; |
17 | use App\Http\Controllers\MediaController; | 17 | use App\Http\Controllers\MediaController; |
18 | use App\Http\Controllers\WorkerController; | 18 | use App\Http\Controllers\WorkerController; |
19 | use App\Models\User; | 19 | use App\Models\User; |
20 | use App\Http\Controllers\MainController; | 20 | use App\Http\Controllers\MainController; |
21 | use App\Http\Controllers\HomeController; | 21 | use App\Http\Controllers\HomeController; |
22 | use Illuminate\Support\Facades\Route; | 22 | use Illuminate\Support\Facades\Route; |
23 | use App\Http\Controllers\Admin\CompanyController; | 23 | use App\Http\Controllers\Admin\CompanyController; |
24 | use App\Http\Controllers\Admin\Ad_EmployersController; | 24 | use App\Http\Controllers\Admin\Ad_EmployersController; |
25 | use App\Http\Controllers\Admin\MsgAnswersController; | 25 | use App\Http\Controllers\Admin\MsgAnswersController; |
26 | use App\Http\Controllers\Admin\GroupsController; | 26 | use App\Http\Controllers\Admin\GroupsController; |
27 | use App\Http\Controllers\PagesController; | 27 | use App\Http\Controllers\PagesController; |
28 | use Illuminate\Support\Facades\Storage; | 28 | use Illuminate\Support\Facades\Storage; |
29 | 29 | ||
30 | 30 | ||
31 | /* | 31 | /* |
32 | |-------------------------------------------------------------------------- | 32 | |-------------------------------------------------------------------------- |
33 | | Web Routes | 33 | | Web Routes |
34 | |-------------------------------------------------------------------------- | 34 | |-------------------------------------------------------------------------- |
35 | | | 35 | | |
36 | | Here is where you can register web routes for your application. These | 36 | | Here is where you can register web routes for your application. These |
37 | | routes are loaded by the RouteServiceProvider within a group which | 37 | | routes are loaded by the RouteServiceProvider within a group which |
38 | | contains the "web" middleware group. Now create something great! | 38 | | contains the "web" middleware group. Now create something great! |
39 | | | 39 | | |
40 | */ | 40 | */ |
41 | /* | 41 | /* |
42 | Route::get('/', function () { | 42 | Route::get('/', function () { |
43 | return view('welcome'); | 43 | return view('welcome'); |
44 | })->name('index'); | 44 | })->name('index'); |
45 | */ | 45 | */ |
46 | Route::get('/', [MainController::class, 'index'])->name('index'); | 46 | Route::get('/', [MainController::class, 'index'])->name('index'); |
47 | 47 | ||
48 | //Роуты авторизации, регистрации, восстановления, аутентификации | 48 | //Роуты авторизации, регистрации, восстановления, аутентификации |
49 | Auth::routes(['verify' => true]); | 49 | Auth::routes(['verify' => true]); |
50 | 50 | ||
51 | // роуты регистрации, авторизации, восстановления пароля, верификации почты | 51 | // роуты регистрации, авторизации, восстановления пароля, верификации почты |
52 | /*Route::group([ | 52 | /*Route::group([ |
53 | 'as' => 'auth.', //имя маршрута, например auth.index | 53 | 'as' => 'auth.', //имя маршрута, например auth.index |
54 | 'prefix' => 'auth', // префикс маршрута, например, auth/index | 54 | 'prefix' => 'auth', // префикс маршрута, например, auth/index |
55 | ], function () { | 55 | ], function () { |
56 | //форма регистрации | 56 | //форма регистрации |
57 | Route::get('register', [RegisterController::class, 'register'])->name('register'); | 57 | Route::get('register', [RegisterController::class, 'register'])->name('register'); |
58 | 58 | ||
59 | //создание пользователя | 59 | //создание пользователя |
60 | Route::post('register', [RegisterController::class, 'create'])->name('create'); | 60 | Route::post('register', [RegisterController::class, 'create'])->name('create'); |
61 | 61 | ||
62 | //форма входа авторизации | 62 | //форма входа авторизации |
63 | Route::get('login', [LoginController::class, 'login'])->name('login'); | 63 | Route::get('login', [LoginController::class, 'login'])->name('login'); |
64 | 64 | ||
65 | //аутентификация | 65 | //аутентификация |
66 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); | 66 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); |
67 | 67 | ||
68 | //выход | 68 | //выход |
69 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); | 69 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); |
70 | 70 | ||
71 | //форма ввода адреса почты | 71 | //форма ввода адреса почты |
72 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); | 72 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); |
73 | 73 | ||
74 | //письмо на почту | 74 | //письмо на почту |
75 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); | 75 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); |
76 | 76 | ||
77 | //форма восстановления пароля | 77 | //форма восстановления пароля |
78 | Route::get('reset-password/token/{token}/email/{email}', | 78 | Route::get('reset-password/token/{token}/email/{email}', |
79 | [ResetPasswordController::class, 'form'] | 79 | [ResetPasswordController::class, 'form'] |
80 | )->name('reset-form'); | 80 | )->name('reset-form'); |
81 | 81 | ||
82 | //восстановление пароля | 82 | //восстановление пароля |
83 | Route::post('reset-password', | 83 | Route::post('reset-password', |
84 | [ResetPasswordController::class, 'reset'] | 84 | [ResetPasswordController::class, 'reset'] |
85 | )->name('reset-password'); | 85 | )->name('reset-password'); |
86 | 86 | ||
87 | //сообщение о необходимости проверки адреса почты | 87 | //сообщение о необходимости проверки адреса почты |
88 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); | 88 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); |
89 | 89 | ||
90 | //подтверждение адреса почты нового пользователя | 90 | //подтверждение адреса почты нового пользователя |
91 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) | 91 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) |
92 | ->where('token', '[a-f0-9]{32}') | 92 | ->where('token', '[a-f0-9]{32}') |
93 | ->where('id', '[0-9]+') | 93 | ->where('id', '[0-9]+') |
94 | ->name('verify-email'); | 94 | ->name('verify-email'); |
95 | });*/ | 95 | });*/ |
96 | 96 | ||
97 | //Личный кабинет пользователя | 97 | //Личный кабинет пользователя |
98 | Route::get('/home', [HomeController::class, 'index'])->name('home'); | 98 | Route::get('/home', [HomeController::class, 'index'])->name('home'); |
99 | 99 | ||
100 | /* | 100 | /* |
101 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { | 101 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { |
102 | $user = User::where('email',$request->input('email'))->first(); | 102 | $user = User::where('email',$request->input('email'))->first(); |
103 | 103 | ||
104 | $user->sendEmailVerificationNotification(); | 104 | $user->sendEmailVerificationNotification(); |
105 | 105 | ||
106 | return 'your response'; | 106 | return 'your response'; |
107 | })->middleware('throttle:6,1')->name('verification.resend'); | 107 | })->middleware('throttle:6,1')->name('verification.resend'); |
108 | */ | 108 | */ |
109 | 109 | ||
110 | // Авторизация, регистрация в админку | 110 | // Авторизация, регистрация в админку |
111 | Route::group([ | 111 | Route::group([ |
112 | 'as' => 'admin.', // имя маршрута, например auth.index | 112 | 'as' => 'admin.', // имя маршрута, например auth.index |
113 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 113 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
114 | 'middleware' => ['guest'], | 114 | 'middleware' => ['guest'], |
115 | ], function () { | 115 | ], function () { |
116 | // Форма регистрации | 116 | // Форма регистрации |
117 | Route::get('register', [AdminController::class, 'register'])->name('register'); | 117 | Route::get('register', [AdminController::class, 'register'])->name('register'); |
118 | // Создание пользователя | 118 | // Создание пользователя |
119 | Route::post('register', [AdminController::class, 'create'])->name('create'); | 119 | Route::post('register', [AdminController::class, 'create'])->name('create'); |
120 | 120 | ||
121 | //Форма входа | 121 | //Форма входа |
122 | Route::get('login', [AdminController::class, 'login'])->name('login'); | 122 | Route::get('login', [AdminController::class, 'login'])->name('login'); |
123 | 123 | ||
124 | // аутентификация | 124 | // аутентификация |
125 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); | 125 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); |
126 | 126 | ||
127 | }); | 127 | }); |
128 | 128 | ||
129 | // Личный кабинет админки | 129 | // Личный кабинет админки |
130 | Route::group([ | 130 | Route::group([ |
131 | 'as' => 'admin.', // имя маршрута, например auth.index | 131 | 'as' => 'admin.', // имя маршрута, например auth.index |
132 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 132 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
133 | 'middleware' => ['auth'], ['admin'], | 133 | 'middleware' => ['auth'], ['admin'], |
134 | ], function() { | 134 | ], function() { |
135 | 135 | ||
136 | // выход | 136 | // выход |
137 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); | 137 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); |
138 | 138 | ||
139 | // кабинет главная страница | 139 | // кабинет главная страница |
140 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); | 140 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); |
141 | 141 | ||
142 | // кабинет профиль админа - форма | 142 | // кабинет профиль админа - форма |
143 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); | 143 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); |
144 | // кабинет профиль админа - сохранение формы | 144 | // кабинет профиль админа - сохранение формы |
145 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); | 145 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); |
146 | 146 | ||
147 | //кабинет сообщения админа | 147 | //кабинет сообщения админа |
148 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); | 148 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); |
149 | 149 | ||
150 | 150 | ||
151 | // кабинет профиль - форма пароли | 151 | // кабинет профиль - форма пароли |
152 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); | 152 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); |
153 | // кабинет профиль - сохранение формы пароля | 153 | // кабинет профиль - сохранение формы пароля |
154 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); | 154 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); |
155 | 155 | ||
156 | 156 | ||
157 | // кабинет профиль пользователя - форма | 157 | // кабинет профиль пользователя - форма |
158 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); | 158 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); |
159 | // кабинет профиль пользователя - сохранение формы | 159 | // кабинет профиль пользователя - сохранение формы |
160 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); | 160 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); |
161 | 161 | ||
162 | // кабинет профиль работодатель - форма | 162 | // кабинет профиль работодатель - форма |
163 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); | 163 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); |
164 | // кабинет профиль работодатель - сохранение формы | 164 | // кабинет профиль работодатель - сохранение формы |
165 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); | 165 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); |
166 | // кабинет удаление профиль работодателя и юзера | 166 | // кабинет удаление профиль работодателя и юзера |
167 | Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); | 167 | Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); |
168 | 168 | ||
169 | // кабинет профиль работник - форма | 169 | // кабинет профиль работник - форма |
170 | Route::get('worker-profile/add/{user}', [WorkersController::class, 'form_add_worker'])->name('worker-profile-add'); | 170 | Route::get('worker-profile/add/{user}', [WorkersController::class, 'form_add_worker'])->name('worker-profile-add'); |
171 | Route::post('worker-profile/add/{user}', [WorkersController::class, 'form_store_worker'])->name('worker-profile-store'); | 171 | Route::post('worker-profile/add/{user}', [WorkersController::class, 'form_store_worker'])->name('worker-profile-store'); |
172 | Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); | 172 | Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); |
173 | // кабинет профиль работник - сохранение формы | 173 | // кабинет профиль работник - сохранение формы |
174 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); | 174 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); |
175 | 175 | ||
176 | // Медиа | 176 | // Медиа |
177 | Route::get('media', [MediaController::class, 'index'])->name('media'); | 177 | Route::get('media', [MediaController::class, 'index'])->name('media'); |
178 | Route::delete('media/{media}', [MediaController::class, 'delete'])->name('delete-media'); | 178 | Route::delete('media/{media}', [MediaController::class, 'delete'])->name('delete-media'); |
179 | 179 | ||
180 | // кабинет настройки сайта - форма | 180 | // кабинет настройки сайта - форма |
181 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); | 181 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); |
182 | // кабинет настройки сайта сохранение формы | 182 | // кабинет настройки сайта сохранение формы |
183 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); | 183 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); |
184 | 184 | ||
185 | // кабинет - пользователи | 185 | // кабинет - пользователи |
186 | Route::get('users', [UsersController::class, 'index'])->name('users'); | 186 | Route::get('users', [UsersController::class, 'index'])->name('users'); |
187 | 187 | ||
188 | // кабинет - пользователи | 188 | // кабинет - пользователи |
189 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); | 189 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); |
190 | 190 | ||
191 | // кабинет - работодатели | 191 | // кабинет - работодатели |
192 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); | 192 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); |
193 | 193 | ||
194 | Route::get('employers/comment/{employer}', [EmployersController::class, 'comment_read'])->name('comment-employer'); | 194 | Route::get('employers/comment/{employer}', [EmployersController::class, 'comment_read'])->name('comment-employer'); |
195 | 195 | ||
196 | // кабинет - соискатели | 196 | // кабинет - соискатели |
197 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); | 197 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); |
198 | 198 | ||
199 | // кабинет - база данных | 199 | // кабинет - база данных |
200 | Route::get('basedata', [UsersController::class, 'index_bd'])->name('basedata'); | 200 | Route::get('basedata', [UsersController::class, 'index_bd'])->name('basedata'); |
201 | Route::get('basedata/add', [UsersController::class, 'add_bd'])->name('add-basedata'); | 201 | Route::get('basedata/add', [UsersController::class, 'add_bd'])->name('add-basedata'); |
202 | Route::post('basedata/add', [UsersController::class, 'add_store_bd'])->name('add-store-basedata'); | 202 | Route::post('basedata/add', [UsersController::class, 'add_store_bd'])->name('add-store-basedata'); |
203 | Route::get('basedata/edit/{user}', [UsersController::class, 'edit_bd'])->name('edit-basedata'); | 203 | Route::get('basedata/edit/{user}', [UsersController::class, 'edit_bd'])->name('edit-basedata'); |
204 | Route::put('basedata/edit/{user}', [UsersController::class, 'update_bd'])->name('update-basedata'); | 204 | Route::put('basedata/edit/{user}', [UsersController::class, 'update_bd'])->name('update-basedata'); |
205 | Route::delete('basedata/delete/{user}', [UsersController::class, 'destroy_bd'])->name('delete-basedata'); | 205 | Route::delete('basedata/delete/{user}', [UsersController::class, 'destroy_bd'])->name('delete-basedata'); |
206 | Route::get('basedata/doc/{user}', [UsersController::class, 'doc_bd'])->name('doc-basedata'); | 206 | Route::get('basedata/doc/{user}', [UsersController::class, 'doc_bd'])->name('doc-basedata'); |
207 | 207 | ||
208 | // кабинет - вакансии | 208 | // кабинет - вакансии |
209 | Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); | 209 | Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); |
210 | Route::get('ad-employers/add', [Ad_EmployersController::class, 'create'])->name('add-ad-employers'); | 210 | Route::get('ad-employers/add', [Ad_EmployersController::class, 'create'])->name('add-ad-employers'); |
211 | Route::post('ad-employers/add', [Ad_EmployersController::class, 'store'])->name('store-ad-employers'); | 211 | Route::post('ad-employers/add', [Ad_EmployersController::class, 'store'])->name('store-ad-employers'); |
212 | Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers'); | 212 | Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers'); |
213 | Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); | 213 | Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); |
214 | Route::delete('ad-employers/delete/{ad_employer}', [Ad_EmployersController::class, 'destroy'])->name('delete-ad-employer'); | 214 | Route::delete('ad-employers/delete/{ad_employer}', [Ad_EmployersController::class, 'destroy'])->name('delete-ad-employer'); |
215 | 215 | ||
216 | // кабинет - категории | 216 | // кабинет - категории |
217 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); | 217 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); |
218 | /* | 218 | /* |
219 | * CRUD-операции над Справочником Категории | 219 | * CRUD-операции над Справочником Категории |
220 | */ | 220 | */ |
221 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); | 221 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); |
222 | 222 | ||
223 | // CRUD-операции над справочником Категории для работодателей | 223 | // CRUD-операции над справочником Категории для работодателей |
224 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); | 224 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); |
225 | 225 | ||
226 | // CRUD-операции над справочником Образование | 226 | // CRUD-операции над справочником Образование |
227 | Route::resource('education', EducationController::class, ['except' => ['show']]); | 227 | Route::resource('education', EducationController::class, ['except' => ['show']]); |
228 | 228 | ||
229 | Route::get('rename-program-education', [EducationController::class, 'rename_program'])->name('rename-program-education'); | 229 | Route::get('rename-program-education', [EducationController::class, 'rename_program'])->name('rename-program-education'); |
230 | Route::get('program-education', [EducationController::class, 'add_program'])->name('add-program-education'); | 230 | Route::get('program-education', [EducationController::class, 'add_program'])->name('add-program-education'); |
231 | Route::post('program-education', [EducationController::class, 'store_program'])->name('store-program-education'); | 231 | Route::post('program-education', [EducationController::class, 'store_program'])->name('store-program-education'); |
232 | 232 | ||
233 | Route::get('program-education/edit/{program}/{education}', [EducationController::class, 'edit_program'])->name('edit-program-education'); | 233 | Route::get('program-education/edit/{program}/{education}', [EducationController::class, 'edit_program'])->name('edit-program-education'); |
234 | Route::post('program-education/edit/{program}/{education}', [EducationController::class, 'update_program'])->name('update-program-education'); | 234 | Route::post('program-education/edit/{program}/{education}', [EducationController::class, 'update_program'])->name('update-program-education'); |
235 | 235 | ||
236 | Route::get('program-education/delete/{program}/{education}', [EducationController::class, 'delete_program'])->name('delete-program-education'); | 236 | Route::get('program-education/delete/{program}/{education}', [EducationController::class, 'delete_program'])->name('delete-program-education'); |
237 | 237 | ||
238 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); | 238 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); |
239 | /* | 239 | /* |
240 | * кабинет - CRUD-операции по справочнику должности | 240 | * кабинет - CRUD-операции по справочнику должности |
241 | * | 241 | * |
242 | */ | 242 | */ |
243 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); | 243 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); |
244 | 244 | ||
245 | // кабинет - сообщения (чтение чужих) | 245 | // кабинет - сообщения (чтение чужих) |
246 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); | 246 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); |
247 | // кабинет - просмотр сообщения чужого (чтение) | 247 | // кабинет - просмотр сообщения чужого (чтение) |
248 | Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); | 248 | Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); |
249 | 249 | ||
250 | // кабинет - сообщения (админские) | 250 | // кабинет - сообщения (админские) |
251 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); | 251 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); |
252 | // кабинет - сообщения (админские) | 252 | // кабинет - сообщения (админские) |
253 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); | 253 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); |
254 | // кабинет - sql - конструкция запросов | 254 | // кабинет - sql - конструкция запросов |
255 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); | 255 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); |
256 | 256 | ||
257 | /* | 257 | /* |
258 | * Расписанный подход в описании каждой директорий групп пользователей. | 258 | * Расписанный подход в описании каждой директорий групп пользователей. |
259 | */ | 259 | */ |
260 | // кабинет - группы пользователей | 260 | // кабинет - группы пользователей |
261 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); | 261 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); |
262 | // кабинет - добавление форма группы пользователей | 262 | // кабинет - добавление форма группы пользователей |
263 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); | 263 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); |
264 | // кабинет - сохранение формы группы пользователей | 264 | // кабинет - сохранение формы группы пользователей |
265 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); | 265 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); |
266 | // кабинет - редактирование форма группы пользователей | 266 | // кабинет - редактирование форма группы пользователей |
267 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); | 267 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); |
268 | // кабинет - сохранение редактированной формы группы пользователей | 268 | // кабинет - сохранение редактированной формы группы пользователей |
269 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); | 269 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); |
270 | // кабинет - удаление группы пользователей | 270 | // кабинет - удаление группы пользователей |
271 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); | 271 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); |
272 | 272 | ||
273 | 273 | ||
274 | // кабинет - список админов | 274 | // кабинет - список админов |
275 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); | 275 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); |
276 | 276 | ||
277 | 277 | ||
278 | /////редактор////// кабинет - редактор сайта//////////////////////// | 278 | /////редактор////// кабинет - редактор сайта//////////////////////// |
279 | Route::get('editor-site', function() { | 279 | Route::get('editor-site', function() { |
280 | return view('admin.editor.index'); | 280 | return view('admin.editor.index'); |
281 | })->name('editor-site'); | 281 | })->name('editor-site'); |
282 | 282 | ||
283 | 283 | ||
284 | // кабинет - редактор шапки-футера сайта | 284 | // кабинет - редактор шапки-футера сайта |
285 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); | 285 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); |
286 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); | 286 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); |
287 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); | 287 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); |
288 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); | 288 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); |
289 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); | 289 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); |
290 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); | 290 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); |
291 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); | 291 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); |
292 | 292 | ||
293 | 293 | ||
294 | // кабинет - редактор должности на главной | 294 | // кабинет - редактор должности на главной |
295 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); | 295 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); |
296 | 296 | ||
297 | // кабинет - редактор работодатели на главной | 297 | // кабинет - редактор работодатели на главной |
298 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); | 298 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); |
299 | 299 | ||
300 | 300 | ||
301 | // кабинет - редактор seo-сайта | 301 | // кабинет - редактор seo-сайта |
302 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); | 302 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); |
303 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); | 303 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); |
304 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); | 304 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); |
305 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); | 305 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); |
306 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); | 306 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); |
307 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); | 307 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); |
308 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); | 308 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); |
309 | 309 | ||
310 | 310 | ||
311 | // кабинет - редактор страниц | 311 | // кабинет - редактор страниц |
312 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); | 312 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); |
313 | // кабинет - добавление страницы | 313 | // кабинет - добавление страницы |
314 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); | 314 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); |
315 | // кабинет - сохранение формы страницы | 315 | // кабинет - сохранение формы страницы |
316 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); | 316 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); |
317 | // кабинет - редактирование форма страницы | 317 | // кабинет - редактирование форма страницы |
318 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); | 318 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); |
319 | // кабинет - сохранение редактированной формы страницы | 319 | // кабинет - сохранение редактированной формы страницы |
320 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); | 320 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); |
321 | // кабинет - удаление страницы | 321 | // кабинет - удаление страницы |
322 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); | 322 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); |
323 | 323 | ||
324 | 324 | ||
325 | // кабинет - реклама сайта | 325 | // кабинет - реклама сайта |
326 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); | 326 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); |
327 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); | 327 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); |
328 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); | 328 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); |
329 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); | 329 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); |
330 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); | 330 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); |
331 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); | 331 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); |
332 | //////////////////////////////////////////////////////////////////////// | 332 | //////////////////////////////////////////////////////////////////////// |
333 | 333 | ||
334 | 334 | ||
335 | // кабинет - отзывы о работодателе для модерации | 335 | // кабинет - отзывы о работодателе для модерации |
336 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); | 336 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); |
337 | 337 | ||
338 | // Общая страница статистики | 338 | // Общая страница статистики |
339 | Route::get('statics', function () { | 339 | Route::get('statics', function () { |
340 | return view('admin.static.index'); | 340 | return view('admin.static.index'); |
341 | })->name('statics'); | 341 | })->name('statics'); |
342 | 342 | ||
343 | // кабинет - статистика работников | 343 | // кабинет - статистика работников |
344 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); | 344 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); |
345 | 345 | ||
346 | // кабинет - статистика вакансий работодателя | 346 | // кабинет - статистика вакансий работодателя |
347 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); | 347 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); |
348 | 348 | ||
349 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника | 349 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника |
350 | /* | 350 | /* |
351 | * CRUD-операции над справочником дипломы и документы | 351 | * CRUD-операции над справочником дипломы и документы |
352 | */ | 352 | */ |
353 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); | 353 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); |
354 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); | 354 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); |
355 | 355 | ||
356 | // кабинет - роли пользователя | 356 | // кабинет - роли пользователя |
357 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); | 357 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); |
358 | 358 | ||
359 | Route::get('admin_roles', [UsersController::class, 'admin_roles'])->name('admin_roles'); | ||
360 | |||
359 | Route::get('logs', function() { | 361 | Route::get('logs', function() { |
360 | $files = Storage::files('logs/laravel.log'); | 362 | $files = Storage::files('logs/laravel.log'); |
361 | print_r($files); | 363 | print_r($files); |
362 | })->name('logs'); | 364 | })->name('logs'); |
363 | 365 | ||
364 | }); | 366 | }); |
365 | 367 | ||
366 | // Инструментальные страницы | 368 | // Инструментальные страницы |
367 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); | 369 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); |
368 | 370 | ||
369 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); | 371 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); |
370 | 372 | ||
371 | Route::get('excel/', [PagesController::class, 'excel'])->name('excel'); | 373 | Route::get('excel/', [PagesController::class, 'excel'])->name('excel'); |
372 | 374 | ||
373 | // Страницы с произвольным контентом | 375 | // Страницы с произвольным контентом |
374 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); | 376 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); |
375 | 377 | ||
376 | // Публичные страницы соискателя | 378 | // Публичные страницы соискателя |
377 | Route::get('workers/profile/{worker}', [WorkerController::class, 'profile'])->name('worker_page'); | 379 | Route::get('workers/profile/{worker}', [WorkerController::class, 'profile'])->name('worker_page'); |
378 | 380 | ||
379 | //Страница вакансии | 381 | //Страница вакансии |
380 | Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employer'])->name('ad-employer'); | 382 | Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employer'])->name('ad-employer'); |
381 | 383 |