Commit 0a94fb81dd67d8e1c0f0a292ac095389a7b637cc
1 parent
d2e30108c8
Exists in
master
Админка - форма редактирования пароля и редактирование контроллера AdminController
Showing 10 changed files with 118 additions and 1 deletions Inline Diff
- app/Http/Controllers/AdminController.php
- config/auth.php
- public/images/favicon.png
- resources/views/admin/index.blade.php
- resources/views/admin/password.blade.php
- resources/views/auth/login.blade.php
- resources/views/catalogs/house_mini.blade.php
- resources/views/layout/admin.blade.php
- resources/views/layout/site.blade.php
- routes/web.php
app/Http/Controllers/AdminController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers; | 3 | namespace App\Http\Controllers; |
4 | 4 | ||
5 | use App\Models\User; | ||
5 | use Illuminate\Http\Request; | 6 | use Illuminate\Http\Request; |
7 | use Illuminate\Support\Facades\Auth; | ||
8 | use Illuminate\Support\Facades\Hash; | ||
9 | use Illuminate\Support\Facades\Validator; | ||
6 | 10 | ||
7 | class AdminController extends Controller | 11 | class AdminController extends Controller |
8 | { | 12 | { |
9 | // главная страница административного раздела | 13 | // главная страница административного раздела |
10 | public function index() { | 14 | public function index() { |
11 | return view('admin.index'); | 15 | return view('admin.index'); |
12 | } | 16 | } |
17 | |||
18 | // форма смены пароля | ||
19 | public function form_password() { | ||
20 | return view('admin.password'); | ||
21 | } | ||
22 | |||
23 | //валидация смены пароля | ||
24 | public function validate_password(Request $request) { | ||
25 | |||
26 | $rules = [ | ||
27 | 'old_password' => 'required|min:6', //|current_password:api', | ||
28 | 'password' => 'required|min:6|confirmed', | ||
29 | ]; | ||
30 | $messages = [ | ||
31 | 'required' => 'Укажите обязательное поле', | ||
32 | 'confirmed' => 'Пароли не совпадают' | ||
33 | ]; | ||
34 | |||
35 | $validator = Validator::make($request->all(), $rules, $messages); | ||
36 | |||
37 | if (! Hash::check($request->old_password, $request->user()->password)) { | ||
38 | return back()->withErrors([ | ||
39 | 'old_password' => ['Неверный предыдущий пароль'] | ||
40 | ]); | ||
41 | } | ||
42 | |||
43 | if ($validator->fails()) { | ||
44 | return redirect()->route('admin.form_password') | ||
45 | ->withErrors($validator); | ||
46 | } else { | ||
47 | $params = $request->all(); | ||
48 | // устанавливаем новый пароль для пользователя | ||
49 | User::where('id', Auth::id()) | ||
50 | ->update(['password' => Hash::make($request->password)]); | ||
51 | session()->flash('success', 'Успешно изменен пароль!'); | ||
52 | |||
53 | return redirect()->route('admin.form_password'); | ||
54 | } | ||
55 | } | ||
13 | } | 56 | } |
14 | 57 |
config/auth.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | return [ | 3 | return [ |
4 | 4 | ||
5 | /* | 5 | /* |
6 | |-------------------------------------------------------------------------- | 6 | |-------------------------------------------------------------------------- |
7 | | Authentication Defaults | 7 | | Authentication Defaults |
8 | |-------------------------------------------------------------------------- | 8 | |-------------------------------------------------------------------------- |
9 | | | 9 | | |
10 | | This option controls the default authentication "guard" and password | 10 | | This option controls the default authentication "guard" and password |
11 | | reset options for your application. You may change these defaults | 11 | | reset options for your application. You may change these defaults |
12 | | as required, but they're a perfect start for most applications. | 12 | | as required, but they're a perfect start for most applications. |
13 | | | 13 | | |
14 | */ | 14 | */ |
15 | 15 | ||
16 | 'defaults' => [ | 16 | 'defaults' => [ |
17 | 'guard' => 'web', | 17 | 'guard' => 'web', |
18 | 'passwords' => 'users', | 18 | 'passwords' => 'users', |
19 | ], | 19 | ], |
20 | 20 | ||
21 | /* | 21 | /* |
22 | |-------------------------------------------------------------------------- | 22 | |-------------------------------------------------------------------------- |
23 | | Authentication Guards | 23 | | Authentication Guards |
24 | |-------------------------------------------------------------------------- | 24 | |-------------------------------------------------------------------------- |
25 | | | 25 | | |
26 | | Next, you may define every authentication guard for your application. | 26 | | Next, you may define every authentication guard for your application. |
27 | | Of course, a great default configuration has been defined for you | 27 | | Of course, a great default configuration has been defined for you |
28 | | here which uses session storage and the Eloquent user provider. | 28 | | here which uses session storage and the Eloquent user provider. |
29 | | | 29 | | |
30 | | All authentication drivers have a user provider. This defines how the | 30 | | All authentication drivers have a user provider. This defines how the |
31 | | users are actually retrieved out of your database or other storage | 31 | | users are actually retrieved out of your database or other storage |
32 | | mechanisms used by this application to persist your user's data. | 32 | | mechanisms used by this application to persist your user's data. |
33 | | | 33 | | |
34 | | Supported: "session" | 34 | | Supported: "session" |
35 | | | 35 | | |
36 | */ | 36 | */ |
37 | 37 | ||
38 | 'guards' => [ | 38 | 'guards' => [ |
39 | 'web' => [ | 39 | 'web' => [ |
40 | 'driver' => 'session', | 40 | 'driver' => 'session', |
41 | 'provider' => 'users', | 41 | 'provider' => 'users', |
42 | ], | 42 | ], |
43 | |||
44 | 'api' => [ | ||
45 | 'driver' => 'passport', | ||
46 | 'provider' => 'users', | ||
47 | 'hash' => true, | ||
48 | ], | ||
43 | ], | 49 | ], |
44 | 50 | ||
45 | /* | 51 | /* |
46 | |-------------------------------------------------------------------------- | 52 | |-------------------------------------------------------------------------- |
47 | | User Providers | 53 | | User Providers |
48 | |-------------------------------------------------------------------------- | 54 | |-------------------------------------------------------------------------- |
49 | | | 55 | | |
50 | | All authentication drivers have a user provider. This defines how the | 56 | | All authentication drivers have a user provider. This defines how the |
51 | | users are actually retrieved out of your database or other storage | 57 | | users are actually retrieved out of your database or other storage |
52 | | mechanisms used by this application to persist your user's data. | 58 | | mechanisms used by this application to persist your user's data. |
53 | | | 59 | | |
54 | | If you have multiple user tables or models you may configure multiple | 60 | | If you have multiple user tables or models you may configure multiple |
55 | | sources which represent each model / table. These sources may then | 61 | | sources which represent each model / table. These sources may then |
56 | | be assigned to any extra authentication guards you have defined. | 62 | | be assigned to any extra authentication guards you have defined. |
57 | | | 63 | | |
58 | | Supported: "database", "eloquent" | 64 | | Supported: "database", "eloquent" |
59 | | | 65 | | |
60 | */ | 66 | */ |
61 | 67 | ||
62 | 'providers' => [ | 68 | 'providers' => [ |
63 | 'users' => [ | 69 | 'users' => [ |
64 | 'driver' => 'eloquent', | 70 | 'driver' => 'eloquent', |
65 | 'model' => App\Models\User::class, | 71 | 'model' => App\Models\User::class, |
66 | ], | 72 | ], |
67 | 73 | ||
68 | // 'users' => [ | 74 | // 'users' => [ |
69 | // 'driver' => 'database', | 75 | // 'driver' => 'database', |
70 | // 'table' => 'users', | 76 | // 'table' => 'users', |
71 | // ], | 77 | // ], |
72 | ], | 78 | ], |
73 | 79 | ||
74 | /* | 80 | /* |
75 | |-------------------------------------------------------------------------- | 81 | |-------------------------------------------------------------------------- |
76 | | Resetting Passwords | 82 | | Resetting Passwords |
77 | |-------------------------------------------------------------------------- | 83 | |-------------------------------------------------------------------------- |
78 | | | 84 | | |
79 | | You may specify multiple password reset configurations if you have more | 85 | | You may specify multiple password reset configurations if you have more |
80 | | than one user table or model in the application and you want to have | 86 | | than one user table or model in the application and you want to have |
81 | | separate password reset settings based on the specific user types. | 87 | | separate password reset settings based on the specific user types. |
82 | | | 88 | | |
83 | | The expire time is the number of minutes that each reset token will be | 89 | | The expire time is the number of minutes that each reset token will be |
84 | | considered valid. This security feature keeps tokens short-lived so | 90 | | considered valid. This security feature keeps tokens short-lived so |
85 | | they have less time to be guessed. You may change this as needed. | 91 | | they have less time to be guessed. You may change this as needed. |
86 | | | 92 | | |
87 | */ | 93 | */ |
88 | 94 | ||
89 | 'passwords' => [ | 95 | 'passwords' => [ |
90 | 'users' => [ | 96 | 'users' => [ |
91 | 'provider' => 'users', | 97 | 'provider' => 'users', |
92 | 'table' => 'password_resets', | 98 | 'table' => 'password_resets', |
93 | 'expire' => 60, | 99 | 'expire' => 60, |
94 | 'throttle' => 60, | 100 | 'throttle' => 60, |
95 | ], | 101 | ], |
96 | ], | 102 | ], |
97 | 103 | ||
98 | /* | 104 | /* |
99 | |-------------------------------------------------------------------------- | 105 | |-------------------------------------------------------------------------- |
100 | | Password Confirmation Timeout | 106 | | Password Confirmation Timeout |
101 | |-------------------------------------------------------------------------- | 107 | |-------------------------------------------------------------------------- |
102 | | | 108 | | |
103 | | Here you may define the amount of seconds before a password confirmation | 109 | | Here you may define the amount of seconds before a password confirmation |
104 | | times out and the user is prompted to re-enter their password via the | 110 | | times out and the user is prompted to re-enter their password via the |
105 | | confirmation screen. By default, the timeout lasts for three hours. | 111 | | confirmation screen. By default, the timeout lasts for three hours. |
106 | | | 112 | | |
107 | */ | 113 | */ |
108 | 114 | ||
109 | 'password_timeout' => 10800, | 115 | 'password_timeout' => 10800, |
110 | 116 | ||
111 | ]; | 117 | ]; |
112 | 118 |
public/images/favicon.png
326 Bytes
resources/views/admin/index.blade.php
1 | @extends('layout.site', ['title' => 'Личный кабинет']) | 1 | @extends('layout.site', ['title' => 'Личный кабинет']) |
2 | 2 | ||
3 | @section('content') | 3 | @section('content') |
4 | <section class="favorites"> | 4 | <section class="favorites"> |
5 | <div class="favorites-top"> | 5 | <div class="favorites-top"> |
6 | <div class="container"> | 6 | <div class="container"> |
7 | <div class="breadcrumbs"> | 7 | <div class="breadcrumbs"> |
8 | <ul class="breadcrumbs__list"> | 8 | <ul class="breadcrumbs__list"> |
9 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> | 9 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> |
10 | <li class="breadcrumbs__item"><span class="breadcrumbs__link">Админка </span></li> | 10 | <li class="breadcrumbs__item"><span class="breadcrumbs__link">Админка </span></li> |
11 | </ul> | 11 | </ul> |
12 | </div> | 12 | </div> |
13 | <h1 class="favorites__title title-main">Личный кабинет</h1> | 13 | <h1 class="favorites__title title-main">Личный кабинет</h1> |
14 | <p class="favorites__descr"> | 14 | <p class="favorites__descr"> |
15 | Добрый день {{ auth()->user()->name }}!<br> | 15 | Добрый день {{ auth()->user()->name }}!<br> |
16 | Это личный кабинет пользователя сайта.<br> | 16 | Это личный кабинет пользователя сайта.<br> |
17 | <a class="btn hero-search__btn btn--main" href="{{ route('auth.logout') }}">Выйти из системы</a><br> | 17 | <a class="btn hero-search__btn btn--main" href="{{ route('auth.logout') }}">Выйти из системы</a><br> |
18 | </p> | 18 | </p> |
19 | <h2>Меню</h2> | 19 | <h2>Меню</h2> |
20 | <ul class="breadcrumbs__list"> | 20 | <ul class="breadcrumbs__list"> |
21 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Сайт</a></li> | 21 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Сайт</a></li> |
22 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.area.index') }}">Объекты </a></li> | 22 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.area.index') }}">Объекты </a></li> |
23 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.news.index') }}">Новости</a></li> | 23 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.news.index') }}">Новости</a></li> |
24 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.company.show', ['company' => 1]) }}">Компания</a></li> | 24 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.company.show', ['company' => 1]) }}">Компания</a></li> |
25 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.typearea.index') }}">Типы недвижимости</a></li> | 25 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.typearea.index') }}">Типы недвижимости</a></li> |
26 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.formatarea.index') }}">Форматы недвижимости</a></li> | 26 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.formatarea.index') }}">Форматы недвижимости</a></li> |
27 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.message.index') }}">Сообщения</a></li> | 27 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.message.index') }}">Сообщения</a></li> |
28 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.houses.index') }}">Офисы</a></li> | 28 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.houses.index') }}">Офисы</a></li> |
29 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('admin.form_password') }}">Пароль</a></li> | ||
29 | </ul> | 30 | </ul> |
30 | </div> | 31 | </div> |
31 | </div> | 32 | </div> |
32 | <div class="favorites-cnt"> | 33 | <div class="favorites-cnt"> |
33 | <div class="container"> | 34 | <div class="container"> |
34 | <div class="favorites__items"> | 35 | <div class="favorites__items"> |
35 | <div class="favorites-item"> | 36 | <div class="favorites-item"> |
36 | <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-1.svg" alt=""></div> | 37 | <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-1.svg" alt=""></div> |
37 | <p class="favorites-item__descr"><a href="#">Найдите</a> идеальную планировку на сайте Renttorg</p> | 38 | <p class="favorites-item__descr"><a href="#">Найдите</a> идеальную планировку на сайте Renttorg</p> |
38 | </div> | 39 | </div> |
39 | <div class="favorites-item"> | 40 | <div class="favorites-item"> |
40 | <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-2.svg" alt=""></div> | 41 | <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-2.svg" alt=""></div> |
41 | <p class="favorites-item__descr">Нажмите на <img src="images/favorites-icon-mini.svg" alt=""> для добавления недвижемости в избранное</p> | 42 | <p class="favorites-item__descr">Нажмите на <img src="images/favorites-icon-mini.svg" alt=""> для добавления недвижемости в избранное</p> |
42 | </div> | 43 | </div> |
43 | <div class="favorites-item"> | 44 | <div class="favorites-item"> |
44 | <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-3.svg" alt=""></div> | 45 | <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-3.svg" alt=""></div> |
45 | <p class="favorites-item__descr">Перейдите в избранное или сравнение для выбора планировки</p> | 46 | <p class="favorites-item__descr">Перейдите в избранное или сравнение для выбора планировки</p> |
46 | </div> | 47 | </div> |
47 | </div> | 48 | </div> |
48 | </div> | 49 | </div> |
49 | </div> | 50 | </div> |
50 | </section> | 51 | </section> |
51 | @endsection | 52 | @endsection |
52 | 53 | ||
53 | 54 |
resources/views/admin/password.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Смена пароля']) | |
2 | |||
3 | @section('content') | ||
4 | <section class="favorites"> | ||
5 | <div class="favorites-top"> | ||
6 | <div class="container"> | ||
7 | <div class="breadcrumbs"> | ||
8 | <ul class="breadcrumbs__list"> | ||
9 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('user.index') }}">Главная</a></li> | ||
10 | <li class="breadcrumbs__item"><span class="breadcrumbs__link">Смена пароля </span></li> | ||
11 | </ul> | ||
12 | </div> | ||
13 | <h1 class="favorites__title title-main">Смена пароля</h1> | ||
14 | </div> | ||
15 | </div> | ||
16 | <div class="favorites-cnt"> | ||
17 | <div class="container"> | ||
18 | <form method="post" action="{{ route('admin.validate_password')}}" style="width:100%"> | ||
19 | @csrf | ||
20 | |||
21 | <label for="old_password">Старый пароль: <span class="req">*</span></label><br> | ||
22 | @error('old_password') | ||
23 | <div class="alert alert-danger">{{ $message }}</div><br> | ||
24 | @enderror | ||
25 | <input type="text" class="form-control_ txt" name="old_password" placeholder="Старый пароль" | ||
26 | required maxlength="100" style="width: 80%" value=""><br><br> | ||
27 | |||
28 | <label for="new_password">Новый пароль: <span class="req">*</span></label><br> | ||
29 | @error('password') | ||
30 | <div class="alert alert-danger">{{ $message }}</div><br> | ||
31 | @enderror | ||
32 | <input type="password" class="form-control_ txt" name="password" placeholder="Новый пароль" | ||
33 | required maxlength="100" style="width: 80%" value=""><br><br> | ||
34 | |||
35 | <label for="new_password2">Новый пароль (еще раз): <span class="req">*</span></label><br> | ||
36 | @error('password_confirmation') | ||
37 | <div class="alert alert-danger">{{ $message }}</div><br> | ||
38 | @enderror | ||
39 | <input type="password" class="form-control_ txt" name="password_confirmation" placeholder="Новый пароль (еще раз)" | ||
40 | required maxlength="100" style="width: 80%" value=""><br><br> | ||
41 | |||
42 | <button type="submit" class="btn hero-search__btn btn--main">Сохранить</button> | ||
43 | |||
44 | </form> | ||
45 | </div> | ||
46 | </div> | ||
47 | </section> | ||
48 | @endsection | ||
49 |
resources/views/auth/login.blade.php
1 | @extends('layout.site', ['title' => 'Вход в личный кабинет']) | 1 | @extends('layout.site', ['title' => 'Вход в личный кабинет']) |
2 | 2 | ||
3 | @section('content') | 3 | @section('content') |
4 | <section class="favorites"> | 4 | <section class="favorites"> |
5 | <div class="favorites-top"> | 5 | <div class="favorites-top"> |
6 | <div class="container"> | 6 | <div class="container"> |
7 | 7 | ||
8 | <div class="footer-top"> | 8 | <div class="footer-top"> |
9 | <div class="container"> | 9 | <div class="container"> |
10 | <div class="footer-feedback"> | 10 | <div class="footer-feedback"> |
11 | <div class="footer-feedback__cnt"> | 11 | <div class="footer-feedback__cnt"> |
12 | <h2 class="footer-feedback__title title">Вход в личный кабинет</h2> | 12 | <h2 class="footer-feedback__title title">Вход в личный кабинет</h2> |
13 | <p class="footer-feedback__descr">Настройте свой сайт по потребностям</p> | 13 | <p class="footer-feedback__descr">Настройте свой сайт по потребностям</p> |
14 | </div> | 14 | </div> |
15 | <form class="footer-feedback__form" method="post" action="{{ route('auth.auth') }}"> | 15 | <form class="footer-feedback__form" method="post" action="{{ route('auth.auth') }}"> |
16 | @csrf | 16 | @csrf |
17 | <div class="footer-feedback__row"> | 17 | <div class="footer-feedback__row"> |
18 | <div class="footer-feedback__col"> | 18 | <div class="footer-feedback__col"> |
19 | <label class="footer-feedback__field field"> | 19 | <label class="footer-feedback__field field"> |
20 | <input type="email" class="form-control" name="email" placeholder="Адрес почты" | 20 | <input type="email" class="form-control" name="email" placeholder="Адрес почты" |
21 | required maxlength="255" value="{{ old('email') ?? '' }}"> | 21 | required maxlength="255" value="{{ old('email') ?? '' }}"> |
22 | </label> | 22 | </label> |
23 | <label class="footer-feedback__field field"> | 23 | <label class="footer-feedback__field field"> |
24 | <input type="text" class="form-control" name="password" placeholder="Ваш пароль" | 24 | <input type="text" class="form-control" name="password" placeholder="Ваш пароль" |
25 | required maxlength="255" value=""> | 25 | required maxlength="255" value=""> |
26 | </label> | 26 | </label> |
27 | |||
28 | <div class="form-group form-check"> | ||
29 | <input type="checkbox" class="form-check-input" name="remember" id="remember"> | ||
30 | <label class="form-check-label" for="remember"> | ||
31 | Запомнить меня | ||
32 | </label> | ||
33 | </div> | ||
27 | </div> | 34 | </div> |
28 | <div class="footer-feedback__col"> | 35 | <div class="footer-feedback__col"> |
29 | 36 | ||
30 | </div> | 37 | </div> |
31 | </div> | 38 | </div> |
32 | <div class="footer-feedback__control"> | 39 | <div class="footer-feedback__control"> |
33 | <!--<button class="footer-feedback__btn btn btn--main js_form_btn">Отправить</button>--> | 40 | <!--<button class="footer-feedback__btn btn btn--main js_form_btn">Отправить</button>--> |
34 | 41 | ||
35 | <button type="submit" class="btn footer-feedback__btn">Войти</button> | 42 | <button type="submit" class="btn footer-feedback__btn">Войти</button> |
36 | </div> | 43 | </div> |
37 | </form> | 44 | </form> |
38 | </div> | 45 | </div> |
39 | </div> | 46 | </div> |
40 | </div> | 47 | </div> |
41 | 48 | ||
42 | </div> | 49 | </div> |
43 | </div> | 50 | </div> |
44 | </section> | 51 | </section> |
45 | @endsection | 52 | @endsection |
46 | 53 |
resources/views/catalogs/house_mini.blade.php
1 | <div class="card"> | 1 | <div class="card"> |
2 | <div class="card__top"> | 2 | <div class="card__top"> |
3 | @if (empty($house->foto_main)) | 3 | @if (empty($house->foto_main)) |
4 | 4 | ||
5 | @else | 5 | @else |
6 | <img src="{{ asset(Storage::url($house->foto_main)) }}" alt="{{ $house->title }}" loading="lazy"/> | 6 | <img src="{{ asset(Storage::url($house->foto_main)) }}" alt="{{ $house->title }}" loading="lazy"/> |
7 | @endif; | 7 | @endif; |
8 | 8 | ||
9 | <h3 class="card__title">{{$house->typearea->name_type }}</h3> | 9 | <h3 class="card__title">{{$house->typearea->name_type }}</h3> |
10 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites <?=\App\Classes\RusDate::selected_item($house->id);?>" data-val="{{$house->id}}" id="card_favorite{{$house->id}}" name="card_favorite{{$house->id}}"> | 10 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites <?=\App\Classes\RusDate::selected_item($house->id);?>" data-val="{{$house->id}}" id="card_favorite{{$house->id}}" name="card_favorite{{$house->id}}"> |
11 | <svg width="18" height="18"> | 11 | <svg width="18" height="18"> |
12 | <use xlink:href="{{ asset('images/sprite.svg#card-favorites-empty') }}"></use> | 12 | <use xlink:href="{{ asset('images/sprite.svg#card-favorites-empty') }}"></use> |
13 | </svg> | 13 | </svg> |
14 | <svg width="18" height="18"> | 14 | <svg width="18" height="18"> |
15 | <use xlink:href="{{ asset('images/sprite.svg#card-favorites') }}"></use> | 15 | <use xlink:href="{{ asset('images/sprite.svg#card-favorites') }}"></use> |
16 | </svg></span> | 16 | </svg></span> |
17 | <a class="card__label card__label-messenger" href="tel:{{ $items_contact[0]->telephone }}"> | 17 | <a class="card__label card__label-messenger" href="tel:{{ $items_contact[0]->telephone }}"> |
18 | <svg width="25" height="25"> | 18 | <svg width="25" height="25"> |
19 | <use xlink:href="{{ asset('images/sprite.svg#card-messenger') }}"></use> | 19 | <use xlink:href="{{ asset('images/sprite.svg#card-messenger') }}"></use> |
20 | </svg> | 20 | </svg> |
21 | </a> | 21 | </a> |
22 | </div> | 22 | </div> |
23 | </div> | 23 | </div> |
24 | <div class="card__cnt"> | 24 | <div class="card__cnt"> |
25 | <div class="card__info"> | 25 | <div class="card__info"> |
26 | <address class="card__line card__line-complex">{{ $house->areas->name_area }}</address> | 26 | <address class="card__line card__line-complex">{{ $house->areas->name_area }}</address> |
27 | <address class="card__line">{{$house->metro}} ({{$house->description_metro }})<span style="background-color: #FFC955;"></span></address> | 27 | <address class="card__line">{{$house->metro}} ({{$house->description_metro }})<span style="background-color: #FFC955;"></span></address> |
28 | <address class="card__line">{{$house->address }}</address> | 28 | <address class="card__line">{{$house->address }}</address> |
29 | <div class="card__line">Площадь: <b>{{$house->area}} м2</b></div> | 29 | <div class="card__line">Площадь: <b>{{$house->area}} м2</b></div> |
30 | <div class="card__line">Цена за м<sup>2</sup>: <b>{{ $house->price_m2 }}₽</b></div> | 30 | <div class="card__line">Цена за м<sup>2</sup>: <b>{{ $house->price_m2 }}₽</b></div> |
31 | </div> | 31 | </div> |
32 | <? switch ($house->format_house) { | 32 | <? switch ($house->format_house) { |
33 | case 'Аренда': | 33 | case 'Аренда': |
34 | $comment = "<span>в месяц</span>"; | 34 | $comment = "<span>в месяц</span>"; |
35 | break; | 35 | break; |
36 | case 'Продажа': | 36 | case 'Продажа': |
37 | $comment = ""; | 37 | $comment = ""; |
38 | break; | 38 | break; |
39 | case 'Бизнес': | 39 | case 'Бизнес': |
40 | $comment= "<span>в месяц</span>"; | 40 | $comment= "<span>в месяц</span>"; |
41 | break; | 41 | break; |
42 | case 'Арендованные': | 42 | case 'Арендованные': |
43 | $comment = "<span>в месяц</span>"; | 43 | $comment = "<span>в месяц</span>"; |
44 | break; | 44 | break; |
45 | default: | ||
46 | $comment = "<span>в месяц</span>"; | ||
47 | break; | ||
45 | } | 48 | } |
46 | ?> | 49 | ?> |
47 | <div class="card__price"><span>{{ $house->price }} ₽ </span><? echo $comment; ?> | 50 | <div class="card__price"><span>{{ $house->price }} ₽ </span><? echo $comment; ?> |
48 | </div><a class="card__btn btn btn--bordered" href="{{ route('offer', ['house' => $house->id]) }}">Подробнее</a> | 51 | </div><a class="card__btn btn btn--bordered" href="{{ route('offer', ['house' => $house->id]) }}">Подробнее</a> |
49 | </div> | 52 | </div> |
50 | </div> | 53 | </div> |
51 | 54 | ||
52 | 55 |
resources/views/layout/admin.blade.php
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> | 2 | <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> |
3 | <head> | 3 | <head> |
4 | <meta charset="UTF-8"> | 4 | <meta charset="UTF-8"> |
5 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> | 5 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
7 | <title>{{$title}}</title> | 7 | <title>{{$title}}</title> |
8 | <link rel="preload" href="{{ asset('fonts/Manrope-ExtraLight.woff2') }}" as="font" type="font/woff2" crossorigin> | 8 | <link rel="preload" href="{{ asset('fonts/Manrope-ExtraLight.woff2') }}" as="font" type="font/woff2" crossorigin> |
9 | <link rel="preload" href="{{ asset('fonts/Manrope-Light.woff2" as="font') }}" type="font/woff2" crossorigin> | 9 | <link rel="preload" href="{{ asset('fonts/Manrope-Light.woff2" as="font') }}" type="font/woff2" crossorigin> |
10 | <link rel="preload" href="{{ asset('fonts/Manrope-Regular.woff2') }}" as="font" type="font/woff2" crossorigin> | 10 | <link rel="preload" href="{{ asset('fonts/Manrope-Regular.woff2') }}" as="font" type="font/woff2" crossorigin> |
11 | <link rel="preload" href="{{ asset('fonts/Manrope-Medium.woff2') }}" as="font" type="font/woff2" crossorigin> | 11 | <link rel="preload" href="{{ asset('fonts/Manrope-Medium.woff2') }}" as="font" type="font/woff2" crossorigin> |
12 | <link rel="preload" href="{{ asset('fonts/Manrope-SemiBold.woff2') }}" as="font" type="font/woff2" crossorigin> | 12 | <link rel="preload" href="{{ asset('fonts/Manrope-SemiBold.woff2') }}" as="font" type="font/woff2" crossorigin> |
13 | <link rel="preload" href="{{ asset('fonts/Manrope-Bold.woff2') }}" as="font" type="font/woff2" crossorigin> | 13 | <link rel="preload" href="{{ asset('fonts/Manrope-Bold.woff2') }}" as="font" type="font/woff2" crossorigin> |
14 | <link rel="preload" href="{{ asset('fonts/Manrope-ExtraBold.woff2') }}" as="font" type="font/woff2" crossorigin> | 14 | <link rel="preload" href="{{ asset('fonts/Manrope-ExtraBold.woff2') }}" as="font" type="font/woff2" crossorigin> |
15 | <link rel="stylesheet" href="{{ asset('css/swiper-bundle.min.css') }}"> | 15 | <link rel="stylesheet" href="{{ asset('css/swiper-bundle.min.css') }}"> |
16 | <link rel="stylesheet" href="{{ asset('css/style.css') }}"> | 16 | <link rel="stylesheet" href="{{ asset('css/style.css') }}"> |
17 | <link rel="stylesheet" href="{{ asset('css/style_table.css') }}"> | 17 | <link rel="stylesheet" href="{{ asset('css/style_table.css') }}"> |
18 | <style> | 18 | <style> |
19 | /* form styles */ | 19 | /* form styles */ |
20 | form .row { | 20 | form .row { |
21 | display: block; | 21 | display: block; |
22 | padding: 7px 8px; | 22 | padding: 7px 8px; |
23 | margin-bottom: 7px; | 23 | margin-bottom: 7px; |
24 | } | 24 | } |
25 | form .row:hover { | 25 | form .row:hover { |
26 | background: #f1f7fa; | 26 | background: #f1f7fa; |
27 | } | 27 | } |
28 | 28 | ||
29 | form label { | 29 | form label { |
30 | display: inline-block; | 30 | display: inline-block; |
31 | font-size: 1.2em; | 31 | font-size: 1.2em; |
32 | font-weight: bold; | 32 | font-weight: bold; |
33 | width: 120px; | 33 | width: 120px; |
34 | padding: 6px 0; | 34 | padding: 6px 0; |
35 | color: #464646; | 35 | color: #464646; |
36 | vertical-align: top; | 36 | vertical-align: top; |
37 | } | 37 | } |
38 | form .req { color: #ca5354; } | 38 | form .req { color: #ca5354; } |
39 | 39 | ||
40 | form .note { | 40 | form .note { |
41 | font-size: 1.2em; | 41 | font-size: 1.2em; |
42 | line-height: 1.33em; | 42 | line-height: 1.33em; |
43 | font-weight: normal; | 43 | font-weight: normal; |
44 | padding: 2px 7px; | 44 | padding: 2px 7px; |
45 | margin-bottom: 10px; | 45 | margin-bottom: 10px; |
46 | } | 46 | } |
47 | 47 | ||
48 | form input:focus, form textarea:focus { outline: none; } | 48 | form input:focus, form textarea:focus { outline: none; } |
49 | 49 | ||
50 | /* placeholder styles: http://stackoverflow.com/a/2610741/477958 */ | 50 | /* placeholder styles: http://stackoverflow.com/a/2610741/477958 */ |
51 | ::-webkit-input-placeholder { color: #aaafbd; font-style: italic; } /* WebKit */ | 51 | ::-webkit-input-placeholder { color: #aaafbd; font-style: italic; } /* WebKit */ |
52 | :-moz-placeholder { color: #aaafbd; font-style: italic; } /* Mozilla Firefox 4 to 18 */ | 52 | :-moz-placeholder { color: #aaafbd; font-style: italic; } /* Mozilla Firefox 4 to 18 */ |
53 | ::-moz-placeholder { color: #aaafbd; font-style: italic; } /* Mozilla Firefox 19+ */ | 53 | ::-moz-placeholder { color: #aaafbd; font-style: italic; } /* Mozilla Firefox 19+ */ |
54 | :-ms-input-placeholder { color: #aaafbd; font-style: italic; } /* Internet Explorer 10+ */ | 54 | :-ms-input-placeholder { color: #aaafbd; font-style: italic; } /* Internet Explorer 10+ */ |
55 | 55 | ||
56 | form .txt { | 56 | form .txt { |
57 | display: inline-block; | 57 | display: inline-block; |
58 | padding: 8px 9px; | 58 | padding: 8px 9px; |
59 | padding-right: 30px; | 59 | padding-right: 30px; |
60 | width: 240px; | 60 | width: 240px; |
61 | font-family: 'Oxygen', sans-serif; | 61 | font-family: 'Oxygen', sans-serif; |
62 | font-size: 1.35em; | 62 | font-size: 1.35em; |
63 | font-weight: normal; | 63 | font-weight: normal; |
64 | color: #898989; | 64 | color: #898989; |
65 | } | 65 | } |
66 | 66 | ||
67 | form .txtarea { | 67 | form .txtarea { |
68 | display: inline-block; | 68 | display: inline-block; |
69 | padding: 8px 9px; | 69 | padding: 8px 9px; |
70 | padding-right: 30px; | 70 | padding-right: 30px; |
71 | font-family: 'Oxygen', sans-serif; | 71 | font-family: 'Oxygen', sans-serif; |
72 | font-size: 1.35em; | 72 | font-size: 1.35em; |
73 | font-weight: normal; | 73 | font-weight: normal; |
74 | color: #898989; | 74 | color: #898989; |
75 | } | 75 | } |
76 | </style> | 76 | </style> |
77 | </head> | 77 | </head> |
78 | <body> | 78 | <body> |
79 | <div class="spinner"></div> | 79 | <div class="spinner"></div> |
80 | <div class="wrapper"> | 80 | <div class="wrapper"> |
81 | <header class="header js_header"> | 81 | <header class="header js_header"> |
82 | <div class="container"> | 82 | <div class="container"> |
83 | <div class="header__wrap"><a class="header__logo" href="{{ route('index') }}"><img src="{{ asset('images/logo.svg') }}" alt="Лого"></a> | 83 | <div class="header__wrap"><a class="header__logo" href="{{ route('index') }}"><img src="{{ asset('images/logo.svg') }}" alt="Лого"></a> |
84 | <nav class="header__nav nav"> | 84 | <nav class="header__nav nav"> |
85 | <ul class="nav__list"> | 85 | <ul class="nav__list"> |
86 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.area.index') }}">Объекты</a></li> | 86 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.area.index') }}">Объекты</a></li> |
87 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.news.index') }}">Новости</a></li> | 87 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.news.index') }}">Новости</a></li> |
88 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.company.show', ['company' => 1]) }}">Компания</a></li> | 88 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.company.show', ['company' => 1]) }}">Компания</a></li> |
89 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.typearea.index') }}">Типы</a></li> | 89 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.typearea.index') }}">Типы</a></li> |
90 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.formatarea.index') }}">Форматы</a></li> | 90 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.formatarea.index') }}">Форматы</a></li> |
91 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.message.index') }}">Сообщения</a></li> | 91 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.message.index') }}">Сообщения</a></li> |
92 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.houses.index') }}">Офисы</a></li> | 92 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.houses.index') }}">Офисы</a></li> |
93 | 93 | <li class="nav__item"><a class="nav__link" href="{{ route('admin.form_password') }}">Пароль</a></li> | |
94 | <li class="nav__item"><a class="nav__link btn_ hero-search__btn_ btn--main_" href="{{ route('auth.logout') }}">Выйти</a></li> | ||
94 | </ul> | 95 | </ul> |
95 | </nav> | 96 | </nav> |
96 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> | 97 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> |
97 | <svg width="22" height="22"> | 98 | <svg width="22" height="22"> |
98 | <use xlink:href="{{ asset('images/sprite.svg#header-btn-phone') }}"></use> | 99 | <use xlink:href="{{ asset('images/sprite.svg#header-btn-phone') }}"></use> |
99 | </svg></a> | 100 | </svg></a> |
100 | <button class="header__burger js_header_burger" type="button">Меню | 101 | <button class="header__burger js_header_burger" type="button">Меню |
101 | <svg width="28" height="18"> | 102 | <svg width="28" height="18"> |
102 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> | 103 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> |
103 | </svg> | 104 | </svg> |
104 | </button> | 105 | </button> |
105 | </div> | 106 | </div> |
106 | <div class="menu js_menu"> | 107 | <div class="menu js_menu"> |
107 | <div class="menu__wrap"> | 108 | <div class="menu__wrap"> |
108 | <button class="menu__close js_menu_close" type="button">Меню | 109 | <button class="menu__close js_menu_close" type="button">Меню |
109 | <svg width="20" height="20"> | 110 | <svg width="20" height="20"> |
110 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | 111 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> |
111 | </svg> | 112 | </svg> |
112 | </button> | 113 | </button> |
113 | <div class="menu__inner"> | 114 | <div class="menu__inner"> |
114 | <nav class="menu__nav"> | 115 | <nav class="menu__nav"> |
115 | <ul class="menu__list"> | 116 | <ul class="menu__list"> |
116 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.area.index') }}">Объекты</a></li> | 117 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.area.index') }}">Объекты</a></li> |
117 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.news.index') }}">Новости</a></li> | 118 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.news.index') }}">Новости</a></li> |
118 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.company.show', ['company' => 1]) }}">Компания</a></li> | 119 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.company.show', ['company' => 1]) }}">Компания</a></li> |
119 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.typearea.index') }}">Типы недвижимости</a></li> | 120 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.typearea.index') }}">Типы недвижимости</a></li> |
120 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.formatarea.index') }}">Форматы недвижимости</a></li> | 121 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.formatarea.index') }}">Форматы недвижимости</a></li> |
121 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.message.index') }}">Сообщения</a></li> | 122 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.message.index') }}">Сообщения</a></li> |
122 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.houses.index') }}">Офисы</a></li> | 123 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.houses.index') }}">Офисы</a></li> |
124 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.form_password') }}">Пароль</a></li> | ||
125 | <li class="menu__item"><a class="btn hero-search__btn btn--main" href="{{ route('auth.logout') }}">Выйти</a></li> | ||
123 | </ul> | 126 | </ul> |
124 | </nav> | 127 | </nav> |
125 | <div class="menu__contacts"><a class="menu__contact" href="mailto:info@renttorg.ru">E-MAIL<span>info@renttorg.ru</span></a><a class="menu__contact" href="tel:+79290127262">ТЕЛЕФОН<span>+7 (929) 012-72-62</span></a></div> | 128 | <div class="menu__contacts"><a class="menu__contact" href="mailto:info@renttorg.ru">E-MAIL<span>info@renttorg.ru</span></a><a class="menu__contact" href="tel:+79290127262">ТЕЛЕФОН<span>+7 (929) 012-72-62</span></a></div> |
126 | <div class="menu__social social"> | 129 | <div class="menu__social social"> |
127 | <ul class="social__list"> | 130 | <ul class="social__list"> |
128 | <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="{{ asset('images/tg.svg') }}" alt=""></a></li> | 131 | <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="{{ asset('images/tg.svg') }}" alt=""></a></li> |
129 | <li class="social__item"><a class="social__link" href="#" target="_blank"> | 132 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
130 | <svg width="40" height="40"> | 133 | <svg width="40" height="40"> |
131 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> | 134 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> |
132 | </svg></a></li> | 135 | </svg></a></li> |
133 | </ul> | 136 | </ul> |
134 | </div> | 137 | </div> |
135 | </div> | 138 | </div> |
136 | </div> | 139 | </div> |
137 | </div> | 140 | </div> |
138 | </div> | 141 | </div> |
139 | </div> | 142 | </div> |
140 | </header> | 143 | </header> |
141 | <main> | 144 | <main> |
142 | @if ($message = Session::get('success')) | 145 | @if ($message = Session::get('success')) |
143 | <section> | 146 | <section> |
144 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 147 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
145 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 148 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
146 | <span aria-hidden="true">×</span> | 149 | <span aria-hidden="true">×</span> |
147 | </button> | 150 | </button> |
148 | {{ $message }} | 151 | {{ $message }} |
149 | </div> | 152 | </div> |
150 | </section> | 153 | </section> |
151 | @endif | 154 | @endif |
152 | 155 | ||
153 | @if ($errors->any()) | 156 | @if ($errors->any()) |
154 | <section> | 157 | <section> |
155 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 158 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
156 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 159 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
157 | <span aria-hidden="true">×</span> | 160 | <span aria-hidden="true">×</span> |
158 | </button> | 161 | </button> |
159 | <ul class="mb-0"> | 162 | <ul class="mb-0"> |
160 | @foreach ($errors->all() as $error) | 163 | @foreach ($errors->all() as $error) |
161 | <li>{{ $error }}</li> | 164 | <li>{{ $error }}</li> |
162 | @endforeach | 165 | @endforeach |
163 | </ul> | 166 | </ul> |
164 | </div> | 167 | </div> |
165 | </section> | 168 | </section> |
166 | @endif | 169 | @endif |
167 | <!-- Основной контент --> | 170 | <!-- Основной контент --> |
168 | @yield('content') | 171 | @yield('content') |
169 | 172 | ||
170 | </main> | 173 | </main> |
171 | 174 | ||
172 | <footer class="footer" style="background-image:url({{ asset('images/footer-bg.jpg')}})"> | 175 | <footer class="footer" style="background-image:url({{ asset('images/footer-bg.jpg')}})"> |
173 | <div class="footer__buttons"> | 176 | <div class="footer__buttons"> |
174 | <button class="footer__btn footer__btn-phone js_btn_contact_us" type="button"> | 177 | <button class="footer__btn footer__btn-phone js_btn_contact_us" type="button"> |
175 | <svg width="30" height="32"> | 178 | <svg width="30" height="32"> |
176 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-phone')}}"></use> | 179 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-phone')}}"></use> |
177 | </svg> | 180 | </svg> |
178 | </button> | 181 | </button> |
179 | <button class="footer__btn footer__btn-up js_btn_up" type="button"> | 182 | <button class="footer__btn footer__btn-up js_btn_up" type="button"> |
180 | <svg width="19" height="11"> | 183 | <svg width="19" height="11"> |
181 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-up')}}"></use> | 184 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-up')}}"></use> |
182 | </svg> | 185 | </svg> |
183 | </button> | 186 | </button> |
184 | </div> | 187 | </div> |
185 | 188 | ||
186 | <!-- Сам футер мееню --> | 189 | <!-- Сам футер мееню --> |
187 | <div class="footer-middle"> | 190 | <div class="footer-middle"> |
188 | <div class="container"> | 191 | <div class="container"> |
189 | <div class="footer-middle__wrap"> | 192 | <div class="footer-middle__wrap"> |
190 | <div class="footer__col footer__col-intro"><a class="footer__logo" href="index.html"><img src="{{ asset('images/logo-footer.svg')}}" alt="Лого"></a> | 193 | <div class="footer__col footer__col-intro"><a class="footer__logo" href="index.html"><img src="{{ asset('images/logo-footer.svg')}}" alt="Лого"></a> |
191 | <p class="footer__descr">В группу “Renttorg” входит ряд ведущих российских девелоперских компаний полного цикла, реализующих масштабные объекты недвижимости.</p> | 194 | <p class="footer__descr">В группу “Renttorg” входит ряд ведущих российских девелоперских компаний полного цикла, реализующих масштабные объекты недвижимости.</p> |
192 | <div class="footer-questions"> | 195 | <div class="footer-questions"> |
193 | <h3 class="footer-questions__title">Есть вопросы или предложения?</h3><a class="footer-questions__btn btn btn--main" href="#" data-btn="feedback">Напишите нам</a> | 196 | <h3 class="footer-questions__title">Есть вопросы или предложения?</h3><a class="footer-questions__btn btn btn--main" href="#" data-btn="feedback">Напишите нам</a> |
194 | </div> | 197 | </div> |
195 | </div> | 198 | </div> |
196 | <div class="footer__col footer__col-menu js_footer_col"> | 199 | <div class="footer__col footer__col-menu js_footer_col"> |
197 | <h3 class="footer__caption js_footer_caption">Меню</h3> | 200 | <h3 class="footer__caption js_footer_caption">Меню</h3> |
198 | <div class="footer__block js_footer_block"> | 201 | <div class="footer__block js_footer_block"> |
199 | <ul class="footer__list"> | 202 | <ul class="footer__list"> |
200 | <li class="footer__item"><a class="footer__link" href="{{ route('index') }}">Главная</a></li> | 203 | <li class="footer__item"><a class="footer__link" href="{{ route('index') }}">Главная</a></li> |
201 | <li class="footer__item"><a class="footer__link" href="{{ route('catalog') }}">Каталог</a></li> | 204 | <li class="footer__item"><a class="footer__link" href="{{ route('catalog') }}">Каталог</a></li> |
202 | <li class="footer__item"><a class="footer__link" href="{{ route('about') }}">О компании</a></li> | 205 | <li class="footer__item"><a class="footer__link" href="{{ route('about') }}">О компании</a></li> |
203 | <li class="footer__item"><a class="footer__link" href="{{ route('contact') }}">Контакты</a></li> | 206 | <li class="footer__item"><a class="footer__link" href="{{ route('contact') }}">Контакты</a></li> |
204 | <li class="footer__item"><a class="footer__link" href="{{ route('favorite') }}">Избранное</a></li> | 207 | <li class="footer__item"><a class="footer__link" href="{{ route('favorite') }}">Избранное</a></li> |
205 | <li class="footer__item"><a class="footer__link" href="{{ route('news') }}">Новости</a></li> | 208 | <li class="footer__item"><a class="footer__link" href="{{ route('news') }}">Новости</a></li> |
206 | </ul> | 209 | </ul> |
207 | 210 | ||
208 | </div><a class="footer__author" href="#" target="_blank"><img src="{{ asset('images/author.png')}}" alt="Лого разработчика"></a> | 211 | </div><a class="footer__author" href="#" target="_blank"><img src="{{ asset('images/author.png')}}" alt="Лого разработчика"></a> |
209 | </div> | 212 | </div> |
210 | <div class="footer__col js_footer_col"> | 213 | <div class="footer__col js_footer_col"> |
211 | <h3 class="footer__caption js_footer_caption">Админка</h3> | 214 | <h3 class="footer__caption js_footer_caption">Админка</h3> |
212 | <div class="footer__block js_footer_block"> | 215 | <div class="footer__block js_footer_block"> |
213 | <ul class="footer__list"> | 216 | <ul class="footer__list"> |
214 | <li class="footer__item"><a class="footer__link" href="{{ route('user.index') }}">Главная</a></li> | 217 | <li class="footer__item"><a class="footer__link" href="{{ route('user.index') }}">Главная</a></li> |
215 | 218 | ||
216 | </ul> | 219 | </ul> |
217 | </div> | 220 | </div> |
218 | </div> | 221 | </div> |
219 | <div class="footer__col js_footer_col"> | 222 | <div class="footer__col js_footer_col"> |
220 | <h3 class="footer__caption js_footer_caption">Система</h3> | 223 | <h3 class="footer__caption js_footer_caption">Система</h3> |
221 | <div class="footer__block js_footer_block"> | 224 | <div class="footer__block js_footer_block"> |
222 | <ul class="footer__list"> | 225 | <ul class="footer__list"> |
223 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.login') }}">Авторизация</a></li> | 226 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.login') }}">Авторизация</a></li> |
224 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.register') }}">Регистрация</a></li> | 227 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.register') }}">Регистрация</a></li> |
225 | </ul> | 228 | </ul> |
226 | </div> | 229 | </div> |
227 | </div> | 230 | </div> |
228 | <div class="footer__col footer__col-contacts"> | 231 | <div class="footer__col footer__col-contacts"> |
229 | <h3 class="footer__caption js_footer_caption">Контакты</h3> | 232 | <h3 class="footer__caption js_footer_caption">Контакты</h3> |
230 | <ul class="footer__list"> | 233 | <ul class="footer__list"> |
231 | <li class="footer__item"><a class="footer__link" href="">EmailAdmin</a></li> | 234 | <li class="footer__item"><a class="footer__link" href="">EmailAdmin</a></li> |
232 | <li class="footer__item"><a class="footer__link" href="">ТелефонАдмин</a></li> | 235 | <li class="footer__item"><a class="footer__link" href="">ТелефонАдмин</a></li> |
233 | </ul> | 236 | </ul> |
234 | <div class="footer__social social"> | 237 | <div class="footer__social social"> |
235 | <ul class="social__list"> | 238 | <ul class="social__list"> |
236 | <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="{{ asset('images/tg.svg')}}" alt=""></a></li> | 239 | <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="{{ asset('images/tg.svg')}}" alt=""></a></li> |
237 | <li class="social__item"><a class="social__link" href="#" target="_blank"> | 240 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
238 | <svg width="40" height="40"> | 241 | <svg width="40" height="40"> |
239 | <use xlink:href="{{ asset('images/sprite.svg#wa') }}"></use> | 242 | <use xlink:href="{{ asset('images/sprite.svg#wa') }}"></use> |
240 | </svg></a></li> | 243 | </svg></a></li> |
241 | </ul> | 244 | </ul> |
242 | </div> | 245 | </div> |
243 | </div> | 246 | </div> |
244 | </div> | 247 | </div> |
245 | </div> | 248 | </div> |
246 | </div> | 249 | </div> |
247 | 250 | ||
248 | <div class="footer-bottom"> | 251 | <div class="footer-bottom"> |
249 | <div class="container"> | 252 | <div class="container"> |
250 | <div class="footer-bottom__wrap"> | 253 | <div class="footer-bottom__wrap"> |
251 | <div class="footer__copy">© 2023 RentTorg</div><a class="footer__plicy" href="{{ route('conf') }}">Политика конфиденциальности</a> | 254 | <div class="footer__copy">© 2023 RentTorg</div><a class="footer__plicy" href="{{ route('conf') }}">Политика конфиденциальности</a> |
252 | </div> | 255 | </div> |
253 | </div> | 256 | </div> |
254 | </div> | 257 | </div> |
255 | </footer> | 258 | </footer> |
256 | </div> | 259 | </div> |
257 | 260 | ||
258 | <!-- Вплывающие окна --> | 261 | <!-- Вплывающие окна --> |
259 | <div class="popup popup-feedback" data-popup="feedback"> | 262 | <div class="popup popup-feedback" data-popup="feedback"> |
260 | <div class="popup__wrap"> | 263 | <div class="popup__wrap"> |
261 | <button class="popup__close js_popup_close" type="button"> | 264 | <button class="popup__close js_popup_close" type="button"> |
262 | <svg width="20" height="20"> | 265 | <svg width="20" height="20"> |
263 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 266 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
264 | </svg> | 267 | </svg> |
265 | </button> | 268 | </button> |
266 | <form class="popup-feedback__form js_popup_feedback_form" action="{{ route('header_form') }}" method="POST"> | 269 | <form class="popup-feedback__form js_popup_feedback_form" action="{{ route('header_form') }}" method="POST"> |
267 | @csrf | 270 | @csrf |
268 | <div class="popup-feedback__title">Как с вами связаться</div> | 271 | <div class="popup-feedback__title">Как с вами связаться</div> |
269 | <div class="popup-feedback__fields"> | 272 | <div class="popup-feedback__fields"> |
270 | <label class="popup-feedback__field field"> | 273 | <label class="popup-feedback__field field"> |
271 | <input type="text" placeholder="Имя" name="NameUser"> | 274 | <input type="text" placeholder="Имя" name="NameUser"> |
272 | </label> | 275 | </label> |
273 | <label class="popup-feedback__field field"> | 276 | <label class="popup-feedback__field field"> |
274 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> | 277 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> |
275 | </label> | 278 | </label> |
276 | </div> | 279 | </div> |
277 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 280 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
278 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> | 281 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> |
279 | </form> | 282 | </form> |
280 | </div> | 283 | </div> |
281 | </div> | 284 | </div> |
282 | <div class="popup popup-feedback" data-popup="viewing"> | 285 | <div class="popup popup-feedback" data-popup="viewing"> |
283 | <div class="popup__wrap"> | 286 | <div class="popup__wrap"> |
284 | <button class="popup__close js_popup_close" type="button"> | 287 | <button class="popup__close js_popup_close" type="button"> |
285 | <svg width="20" height="20"> | 288 | <svg width="20" height="20"> |
286 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 289 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
287 | </svg> | 290 | </svg> |
288 | </button> | 291 | </button> |
289 | <form class="popup-feedback__form js_popup_viewing_form" action="{{ route('rec_view_form') }}" method="POST"> | 292 | <form class="popup-feedback__form js_popup_viewing_form" action="{{ route('rec_view_form') }}" method="POST"> |
290 | @csrf | 293 | @csrf |
291 | <div class="popup-feedback__title">Записаться на просмотр</div> | 294 | <div class="popup-feedback__title">Записаться на просмотр</div> |
292 | <div class="popup-feedback__fields"> | 295 | <div class="popup-feedback__fields"> |
293 | <label class="popup-feedback__field field"> | 296 | <label class="popup-feedback__field field"> |
294 | <input type="text" placeholder="Имя" name="NameUser"> | 297 | <input type="text" placeholder="Имя" name="NameUser"> |
295 | </label> | 298 | </label> |
296 | <label class="popup-feedback__field field"> | 299 | <label class="popup-feedback__field field"> |
297 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> | 300 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> |
298 | </label> | 301 | </label> |
299 | </div> | 302 | </div> |
300 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 303 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
301 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="#">Политикой конфиденциальности</a>.</p> | 304 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="#">Политикой конфиденциальности</a>.</p> |
302 | </form> | 305 | </form> |
303 | </div> | 306 | </div> |
304 | </div> | 307 | </div> |
305 | <div class="popup popup-success" data-popup="success"> | 308 | <div class="popup popup-success" data-popup="success"> |
306 | <div class="popup__wrap"> | 309 | <div class="popup__wrap"> |
307 | <button class="popup__close js_popup_close" type="button"> | 310 | <button class="popup__close js_popup_close" type="button"> |
308 | <svg width="20" height="20"> | 311 | <svg width="20" height="20"> |
309 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | 312 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> |
310 | </svg> | 313 | </svg> |
311 | </button> | 314 | </button> |
312 | <div class="popup-success__inner"> | 315 | <div class="popup-success__inner"> |
313 | <div class="popup-success__logo"> | 316 | <div class="popup-success__logo"> |
314 | <svg width="48" height="39"> | 317 | <svg width="48" height="39"> |
315 | <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> | 318 | <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> |
316 | </svg> | 319 | </svg> |
317 | </div> | 320 | </div> |
318 | <div class="popup-success__title">Спасибо за заявку</div> | 321 | <div class="popup-success__title">Спасибо за заявку</div> |
319 | <p class="popup-success__descr">В ближайшее время с вами свяжется наш специалист для уточнения деталей вашей задачи.</p> | 322 | <p class="popup-success__descr">В ближайшее время с вами свяжется наш специалист для уточнения деталей вашей задачи.</p> |
320 | </div> | 323 | </div> |
321 | </div> | 324 | </div> |
322 | </div> | 325 | </div> |
323 | <div class="popup popup-feedback" data-popup="sending"> | 326 | <div class="popup popup-feedback" data-popup="sending"> |
324 | <div class="popup__wrap"> | 327 | <div class="popup__wrap"> |
325 | <button class="popup__close js_popup_close" type="button"> | 328 | <button class="popup__close js_popup_close" type="button"> |
326 | <svg width="20" height="20"> | 329 | <svg width="20" height="20"> |
327 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 330 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
328 | </svg> | 331 | </svg> |
329 | </button> | 332 | </button> |
330 | <form class="popup-feedback__form js_popup_sending_form" action="{{ route('email_form') }}" method="POST"> | 333 | <form class="popup-feedback__form js_popup_sending_form" action="{{ route('email_form') }}" method="POST"> |
331 | @csrf | 334 | @csrf |
332 | <div class="popup-feedback__title">Отправить на почту</div> | 335 | <div class="popup-feedback__title">Отправить на почту</div> |
333 | <div class="popup-feedback__fields"> | 336 | <div class="popup-feedback__fields"> |
334 | <label class="popup-feedback__field field"> | 337 | <label class="popup-feedback__field field"> |
335 | <input class="js_input_email" type="text" placeholder="Электронная почта" name="EmailUser"> | 338 | <input class="js_input_email" type="text" placeholder="Электронная почта" name="EmailUser"> |
336 | </label> | 339 | </label> |
337 | </div> | 340 | </div> |
338 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 341 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
339 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> | 342 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> |
340 | </form> | 343 | </form> |
341 | </div> | 344 | </div> |
342 | </div> | 345 | </div> |
343 | <div class="contact-us js_contact_us"> | 346 | <div class="contact-us js_contact_us"> |
344 | <div class="contact-us__top"> | 347 | <div class="contact-us__top"> |
345 | <button class="contact-us__close js_contact_us_close" type="button"> | 348 | <button class="contact-us__close js_contact_us_close" type="button"> |
346 | <svg width="20" height="20"> | 349 | <svg width="20" height="20"> |
347 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 350 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
348 | </svg> | 351 | </svg> |
349 | </button> | 352 | </button> |
350 | <div class="contact-us__title">Свяжитесь с нами</div> | 353 | <div class="contact-us__title">Свяжитесь с нами</div> |
351 | </div> | 354 | </div> |
352 | <div class="contact-us__body"> | 355 | <div class="contact-us__body"> |
353 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" data-btn="feedback"> | 356 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" data-btn="feedback"> |
354 | <div class="contact-us-item__icon"> | 357 | <div class="contact-us-item__icon"> |
355 | <svg width="34" height="34"> | 358 | <svg width="34" height="34"> |
356 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> | 359 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> |
357 | </svg> | 360 | </svg> |
358 | </div> | 361 | </div> |
359 | <div class="contact-us-item__name">Позвонить</div></a> | 362 | <div class="contact-us-item__name">Позвонить</div></a> |
360 | 363 | ||
361 | <a class="contact-us-item js_contact_us_close" data-btn="sending"> | 364 | <a class="contact-us-item js_contact_us_close" data-btn="sending"> |
362 | <div class="contact-us-item__icon"> | 365 | <div class="contact-us-item__icon"> |
363 | <svg width="44" height="44"> | 366 | <svg width="44" height="44"> |
364 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> | 367 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> |
365 | </svg> | 368 | </svg> |
366 | </div> | 369 | </div> |
367 | <div class="contact-us-item__name">Написать</div></a> | 370 | <div class="contact-us-item__name">Написать</div></a> |
368 | 371 | ||
369 | <a class="contact-us-item js_contact_us_close" > | 372 | <a class="contact-us-item js_contact_us_close" > |
370 | <div class="contact-us-item__icon"> | 373 | <div class="contact-us-item__icon"> |
371 | <svg width="34" height="34"> | 374 | <svg width="34" height="34"> |
372 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> | 375 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> |
373 | </svg> | 376 | </svg> |
374 | </div> | 377 | </div> |
375 | <div class="contact-us-item__name">Онлайн-чат</div></a></div> | 378 | <div class="contact-us-item__name">Онлайн-чат</div></a></div> |
376 | <div class="contact-us__socials"><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> | 379 | <div class="contact-us__socials"><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> |
377 | <div class="contact-us-social__icon contact-us-social__icon-tg"><img src="{{ asset('images/contact-us-tg.svg')}}" alt=""></div> | 380 | <div class="contact-us-social__icon contact-us-social__icon-tg"><img src="{{ asset('images/contact-us-tg.svg')}}" alt=""></div> |
378 | <div class="contact-us-social__name">Telegram</div></a><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> | 381 | <div class="contact-us-social__name">Telegram</div></a><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> |
379 | <div class="contact-us-social__icon contact-us-social__icon-wa"> | 382 | <div class="contact-us-social__icon contact-us-social__icon-wa"> |
380 | <svg width="31" height="31"> | 383 | <svg width="31" height="31"> |
381 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> | 384 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> |
382 | </svg> | 385 | </svg> |
383 | </div> | 386 | </div> |
384 | <div class="contact-us-social__name">WhatsApp</div></a></div> | 387 | <div class="contact-us-social__name">WhatsApp</div></a></div> |
385 | </div> | 388 | </div> |
386 | </div> | 389 | </div> |
387 | <div class="offer-side-popup" data-popup="offer-side-popup"> | 390 | <div class="offer-side-popup" data-popup="offer-side-popup"> |
388 | <div class="offer-side-popup__wrap"> | 391 | <div class="offer-side-popup__wrap"> |
389 | <button class="offer-side-popup__close js_popup_close" type="button"> | 392 | <button class="offer-side-popup__close js_popup_close" type="button"> |
390 | <svg width="20" height="20"> | 393 | <svg width="20" height="20"> |
391 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 394 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
392 | </svg> | 395 | </svg> |
393 | </button> | 396 | </button> |
394 | <div class="offer-side-popup__cnt"> | 397 | <div class="offer-side-popup__cnt"> |
395 | <div class="offer-side-popup__item js_offer_side_popup_item active" data-item="1"><img src="{{ asset('images/offer-side-item-img-1.jpg')}}" alt="План объекта"></div> | 398 | <div class="offer-side-popup__item js_offer_side_popup_item active" data-item="1"><img src="{{ asset('images/offer-side-item-img-1.jpg')}}" alt="План объекта"></div> |
396 | <div class="offer-side-popup__item js_offer_side_popup_item" data-item="2"><img src="{{ asset('images/offer-side-item-img-2.jpg')}}" alt="План этажа"></div> | 399 | <div class="offer-side-popup__item js_offer_side_popup_item" data-item="2"><img src="{{ asset('images/offer-side-item-img-2.jpg')}}" alt="План этажа"></div> |
397 | </div> | 400 | </div> |
398 | <div class="offer-side-popup__tabs"> | 401 | <div class="offer-side-popup__tabs"> |
399 | <button class="offer-side-popup__tab js_offer_side_popup_tab active" type="button" data-tab="1">План объекта</button> | 402 | <button class="offer-side-popup__tab js_offer_side_popup_tab active" type="button" data-tab="1">План объекта</button> |
400 | <button class="offer-side-popup__tab js_offer_side_popup_tab" type="button" data-tab="2">План этажа</button> | 403 | <button class="offer-side-popup__tab js_offer_side_popup_tab" type="button" data-tab="2">План этажа</button> |
401 | </div> | 404 | </div> |
402 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> | 405 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> |
403 | <svg width="18" height="18"> | 406 | <svg width="18" height="18"> |
404 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> | 407 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> |
405 | </svg> | 408 | </svg> |
406 | </button> | 409 | </button> |
407 | </div> | 410 | </div> |
408 | </div> | 411 | </div> |
409 | <div class="img-viewer js_img_viewer"> | 412 | <div class="img-viewer js_img_viewer"> |
410 | <div class="img-viewer__wrap"> | 413 | <div class="img-viewer__wrap"> |
411 | <button class="img-viewer__close js_img_viewer_close" type="button"> | 414 | <button class="img-viewer__close js_img_viewer_close" type="button"> |
412 | <svg width="20" height="20"> | 415 | <svg width="20" height="20"> |
413 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 416 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
414 | </svg> | 417 | </svg> |
415 | </button> | 418 | </button> |
416 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> | 419 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> |
417 | <div class="img-viewer__thumbs-swiper js_img_viewer_thumbs_swiper swiper"> | 420 | <div class="img-viewer__thumbs-swiper js_img_viewer_thumbs_swiper swiper"> |
418 | <div class="swiper-wrapper"></div> | 421 | <div class="swiper-wrapper"></div> |
419 | </div> | 422 | </div> |
420 | </div> | 423 | </div> |
421 | <div class="img-viewer__slider"> | 424 | <div class="img-viewer__slider"> |
422 | <div class="img-viewer__slider-swiper js_img_viewer_slider_swiper swiper"> | 425 | <div class="img-viewer__slider-swiper js_img_viewer_slider_swiper swiper"> |
423 | <div class="swiper-wrapper"></div> | 426 | <div class="swiper-wrapper"></div> |
424 | </div> | 427 | </div> |
425 | <div class="swiper-button-prev"> | 428 | <div class="swiper-button-prev"> |
426 | <svg width="10" height="17"> | 429 | <svg width="10" height="17"> |
427 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | 430 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> |
428 | </svg> | 431 | </svg> |
429 | </div> | 432 | </div> |
430 | <div class="swiper-button-next"> | 433 | <div class="swiper-button-next"> |
431 | <svg width="10" height="17"> | 434 | <svg width="10" height="17"> |
432 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | 435 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> |
433 | </svg> | 436 | </svg> |
434 | </div> | 437 | </div> |
435 | </div> | 438 | </div> |
436 | <div class="img-viewer__caption js_img_viewer_caption"></div> | 439 | <div class="img-viewer__caption js_img_viewer_caption"></div> |
437 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> | 440 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> |
438 | <svg width="18" height="18"> | 441 | <svg width="18" height="18"> |
439 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> | 442 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> |
440 | </svg> | 443 | </svg> |
441 | </button> | 444 | </button> |
442 | </div> | 445 | </div> |
443 | </div> | 446 | </div> |
444 | <div class="cookies js_cookies"> | 447 | <div class="cookies js_cookies"> |
445 | <div class="container"> | 448 | <div class="container"> |
446 | <div class="cookies__wrap"> | 449 | <div class="cookies__wrap"> |
447 | <div class="cookies__top"> | 450 | <div class="cookies__top"> |
448 | <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> | 451 | <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> |
449 | <div class="cookies__title">Cookies</div> | 452 | <div class="cookies__title">Cookies</div> |
450 | </div> | 453 | </div> |
451 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> | 454 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> |
452 | <div class="cookies__buttons"> | 455 | <div class="cookies__buttons"> |
453 | <button class="cookies__btn btn btn--main js_cookies_confirm" type="button">Принять</button><a class="cookies__link" href="{{ route('cookies') }}">Подробнее</a> | 456 | <button class="cookies__btn btn btn--main js_cookies_confirm" type="button">Принять</button><a class="cookies__link" href="{{ route('cookies') }}">Подробнее</a> |
454 | </div> | 457 | </div> |
455 | </div> | 458 | </div> |
456 | </div> | 459 | </div> |
457 | </div> | 460 | </div> |
458 | <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> | 461 | <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> |
459 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> | 462 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> |
460 | <script src="{{ asset('js/main_main.js') }}"></script> | 463 | <script src="{{ asset('js/main_main.js') }}"></script> |
461 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> | 464 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> |
462 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> | 465 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> |
463 | @yield('custom_js') | 466 | @yield('custom_js') |
464 | @include('js.cookies_favorite') | 467 | @include('js.cookies_favorite') |
465 | </body> | 468 | </body> |
466 | </html> | 469 | </html> |
467 | 470 |
resources/views/layout/site.blade.php
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> | 2 | <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> |
3 | <head> | 3 | <head> |
4 | <meta charset="UTF-8"> | 4 | <meta charset="UTF-8"> |
5 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> | 5 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
7 | <title>{{$title}}</title> | 7 | <title>{{$title}}</title> |
8 | <link rel="shortcut icon" href="{{ asset('images/favicon.png')}}" type="image/x-icon"> | ||
8 | <link rel="preload" href="{{ asset('fonts/Manrope-ExtraLight.woff2') }}" as="font" type="font/woff2" crossorigin> | 9 | <link rel="preload" href="{{ asset('fonts/Manrope-ExtraLight.woff2') }}" as="font" type="font/woff2" crossorigin> |
9 | <link rel="preload" href="{{ asset('fonts/Manrope-Light.woff2" as="font') }}" type="font/woff2" crossorigin> | 10 | <link rel="preload" href="{{ asset('fonts/Manrope-Light.woff2" as="font') }}" type="font/woff2" crossorigin> |
10 | <link rel="preload" href="{{ asset('fonts/Manrope-Regular.woff2') }}" as="font" type="font/woff2" crossorigin> | 11 | <link rel="preload" href="{{ asset('fonts/Manrope-Regular.woff2') }}" as="font" type="font/woff2" crossorigin> |
11 | <link rel="preload" href="{{ asset('fonts/Manrope-Medium.woff2') }}" as="font" type="font/woff2" crossorigin> | 12 | <link rel="preload" href="{{ asset('fonts/Manrope-Medium.woff2') }}" as="font" type="font/woff2" crossorigin> |
12 | <link rel="preload" href="{{ asset('fonts/Manrope-SemiBold.woff2') }}" as="font" type="font/woff2" crossorigin> | 13 | <link rel="preload" href="{{ asset('fonts/Manrope-SemiBold.woff2') }}" as="font" type="font/woff2" crossorigin> |
13 | <link rel="preload" href="{{ asset('fonts/Manrope-Bold.woff2') }}" as="font" type="font/woff2" crossorigin> | 14 | <link rel="preload" href="{{ asset('fonts/Manrope-Bold.woff2') }}" as="font" type="font/woff2" crossorigin> |
14 | <link rel="preload" href="{{ asset('fonts/Manrope-ExtraBold.woff2') }}" as="font" type="font/woff2" crossorigin> | 15 | <link rel="preload" href="{{ asset('fonts/Manrope-ExtraBold.woff2') }}" as="font" type="font/woff2" crossorigin> |
15 | <link rel="stylesheet" href="{{ asset('css/swiper-bundle.min.css') }}"> | 16 | <link rel="stylesheet" href="{{ asset('css/swiper-bundle.min.css') }}"> |
16 | <link rel="stylesheet" href="{{ asset('css/style.css') }}"> | 17 | <link rel="stylesheet" href="{{ asset('css/style.css') }}"> |
17 | </head> | 18 | </head> |
18 | <body> | 19 | <body> |
19 | <div class="spinner"></div> | 20 | <div class="spinner"></div> |
20 | <div class="wrapper"> | 21 | <div class="wrapper"> |
21 | <header class="header js_header"> | 22 | <header class="header js_header"> |
22 | <div class="container"> | 23 | <div class="container"> |
23 | <div class="header__wrap"><a class="header__logo" href="{{ route('index') }}"><img src="{{ asset('images/logo.svg') }}" alt="Лого"></a> | 24 | <div class="header__wrap"><a class="header__logo" href="{{ route('index') }}"><img src="{{ asset('images/logo.svg') }}" alt="Лого"></a> |
24 | <nav class="header__nav nav"> | 25 | <nav class="header__nav nav"> |
25 | <ul class="nav__list"> | 26 | <ul class="nav__list"> |
26 | <li class="nav__item"><a class="nav__link" href="{{ route('catalog') }}">Каталог</a></li> | 27 | <li class="nav__item"><a class="nav__link" href="{{ route('catalog') }}">Каталог</a></li> |
27 | <li class="nav__item"><a class="nav__link" href="{{ route('about') }}">О компании</a></li> | 28 | <li class="nav__item"><a class="nav__link" href="{{ route('about') }}">О компании</a></li> |
28 | <li class="nav__item"><a class="nav__link" href="{{ route('contact') }}">Контакты</a></li> | 29 | <li class="nav__item"><a class="nav__link" href="{{ route('contact') }}">Контакты</a></li> |
29 | <li class="nav__item"><a class="nav__link nav__link-favorites" href="{{ route('favorite') }}">Избранное<span><?=\App\Classes\RusDate::count_item_fav();?></span></a></li> | 30 | <li class="nav__item"><a class="nav__link nav__link-favorites" href="{{ route('favorite') }}">Избранное<span><?=\App\Classes\RusDate::count_item_fav();?></span></a></li> |
30 | </ul> | 31 | </ul> |
31 | </nav> | 32 | </nav> |
32 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> | 33 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> |
33 | <svg width="22" height="22"> | 34 | <svg width="22" height="22"> |
34 | <use xlink:href="{{ asset('images/sprite.svg#header-btn-phone') }}"></use> | 35 | <use xlink:href="{{ asset('images/sprite.svg#header-btn-phone') }}"></use> |
35 | </svg></a> | 36 | </svg></a> |
36 | <div class="header__contacts"> | 37 | <div class="header__contacts"> |
37 | <div class="header__col"><a class="header__contact" href="mailto:{{ $items_contact[0]->email }}">{{ $items_contact[0]->email }}</a></div> | 38 | <div class="header__col"><a class="header__contact" href="mailto:{{ $items_contact[0]->email }}">{{ $items_contact[0]->email }}</a></div> |
38 | <div class="header__col"><a class="header__contact" href="tel:{{ $items_contact[0]->telephone }}">{{ $items_contact[0]->telephone }}</a> | 39 | <div class="header__col"><a class="header__contact" href="tel:{{ $items_contact[0]->telephone }}">{{ $items_contact[0]->telephone }}</a> |
39 | <button class="header__btn-callback" type="button" data-btn="feedback">Обратный звонок</button> | 40 | <button class="header__btn-callback" type="button" data-btn="feedback">Обратный звонок</button> |
40 | </div> | 41 | </div> |
41 | </div> | 42 | </div> |
42 | <button class="header__burger js_header_burger" type="button">Меню | 43 | <button class="header__burger js_header_burger" type="button">Меню |
43 | <svg width="28" height="18"> | 44 | <svg width="28" height="18"> |
44 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> | 45 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> |
45 | </svg> | 46 | </svg> |
46 | </button> | 47 | </button> |
47 | </div> | 48 | </div> |
48 | <div class="menu js_menu"> | 49 | <div class="menu js_menu"> |
49 | <div class="menu__wrap"> | 50 | <div class="menu__wrap"> |
50 | <button class="menu__close js_menu_close" type="button">Меню | 51 | <button class="menu__close js_menu_close" type="button">Меню |
51 | <svg width="20" height="20"> | 52 | <svg width="20" height="20"> |
52 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | 53 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> |
53 | </svg> | 54 | </svg> |
54 | </button> | 55 | </button> |
55 | <div class="menu__inner"> | 56 | <div class="menu__inner"> |
56 | <nav class="menu__nav"> | 57 | <nav class="menu__nav"> |
57 | <ul class="menu__list"> | 58 | <ul class="menu__list"> |
58 | <li class="menu__item"><a class="menu__link" href="{{ route('about') }}">О компании</a></li> | 59 | <li class="menu__item"><a class="menu__link" href="{{ route('about') }}">О компании</a></li> |
59 | <li class="menu__item"><a class="menu__link menu__link-favorites" href="{{ route('favorite') }}">Избранное<span>5</span></a></li> | 60 | <li class="menu__item"><a class="menu__link menu__link-favorites" href="{{ route('favorite') }}">Избранное<span>5</span></a></li> |
60 | <li class="menu__item"><a class="menu__link" href="{{ route('catalog') }}">Каталог</a></li> | 61 | <li class="menu__item"><a class="menu__link" href="{{ route('catalog') }}">Каталог</a></li> |
61 | <li class="menu__item"><a class="menu__link" href="{{ route('news') }}">Новости</a></li> | 62 | <li class="menu__item"><a class="menu__link" href="{{ route('news') }}">Новости</a></li> |
62 | <li class="menu__item"><a class="menu__link" href="{{ route('contact') }}">Контакты</a></li> | 63 | <li class="menu__item"><a class="menu__link" href="{{ route('contact') }}">Контакты</a></li> |
63 | </ul> | 64 | </ul> |
64 | </nav> | 65 | </nav> |
65 | <div class="menu__contacts"><a class="menu__contact" href="mailto:info@renttorg.ru">E-MAIL<span>info@renttorg.ru</span></a><a class="menu__contact" href="tel:+79290127262">ТЕЛЕФОН<span>+7 (929) 012-72-62</span></a></div> | 66 | <div class="menu__contacts"><a class="menu__contact" href="mailto:info@renttorg.ru">E-MAIL<span>info@renttorg.ru</span></a><a class="menu__contact" href="tel:+79290127262">ТЕЛЕФОН<span>+7 (929) 012-72-62</span></a></div> |
66 | <div class="menu__social social"> | 67 | <div class="menu__social social"> |
67 | <ul class="social__list"> | 68 | <ul class="social__list"> |
68 | <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="{{ asset('images/tg.svg') }}" alt=""></a></li> | 69 | <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="{{ asset('images/tg.svg') }}" alt=""></a></li> |
69 | <li class="social__item"><a class="social__link" href="#" target="_blank"> | 70 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
70 | <svg width="40" height="40"> | 71 | <svg width="40" height="40"> |
71 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> | 72 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> |
72 | </svg></a></li> | 73 | </svg></a></li> |
73 | </ul> | 74 | </ul> |
74 | </div> | 75 | </div> |
75 | </div> | 76 | </div> |
76 | </div> | 77 | </div> |
77 | </div> | 78 | </div> |
78 | </div> | 79 | </div> |
79 | </div> | 80 | </div> |
80 | </header> | 81 | </header> |
81 | <main> | 82 | <main> |
82 | 83 | ||
83 | 84 | ||
84 | <!-- Фильтр --> | 85 | <!-- Фильтр --> |
85 | @yield('filter') | 86 | @yield('filter') |
86 | 87 | ||
87 | @if ($message = Session::get('success')) | 88 | @if ($message = Session::get('success')) |
88 | <section> | 89 | <section> |
89 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 90 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
90 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 91 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
91 | <span aria-hidden="true">×</span> | 92 | <span aria-hidden="true">×</span> |
92 | </button> | 93 | </button> |
93 | {{ $message }} | 94 | {{ $message }} |
94 | </div> | 95 | </div> |
95 | </section> | 96 | </section> |
96 | @endif | 97 | @endif |
97 | 98 | ||
98 | @if ($errors->any()) | 99 | @if ($errors->any()) |
99 | <section> | 100 | <section> |
100 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 101 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
101 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 102 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
102 | <span aria-hidden="true">×</span> | 103 | <span aria-hidden="true">×</span> |
103 | </button> | 104 | </button> |
104 | <ul class="mb-0"> | 105 | <ul class="mb-0"> |
105 | @foreach ($errors->all() as $error) | 106 | @foreach ($errors->all() as $error) |
106 | <li>{{ $error }}</li> | 107 | <li>{{ $error }}</li> |
107 | @endforeach | 108 | @endforeach |
108 | </ul> | 109 | </ul> |
109 | </div> | 110 | </div> |
110 | </section> | 111 | </section> |
111 | @endif | 112 | @endif |
112 | <!-- Основной контент --> | 113 | <!-- Основной контент --> |
113 | @yield('content') | 114 | @yield('content') |
114 | 115 | ||
115 | </main> | 116 | </main> |
116 | 117 | ||
117 | <footer class="footer" style="background-image:url({{ asset('images/footer-bg.jpg')}})"> | 118 | <footer class="footer" style="background-image:url({{ asset('images/footer-bg.jpg')}})"> |
118 | <div class="footer__buttons"> | 119 | <div class="footer__buttons"> |
119 | <button class="footer__btn footer__btn-phone js_btn_contact_us" type="button"> | 120 | <button class="footer__btn footer__btn-phone js_btn_contact_us" type="button"> |
120 | <svg width="30" height="32"> | 121 | <svg width="30" height="32"> |
121 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-phone')}}"></use> | 122 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-phone')}}"></use> |
122 | </svg> | 123 | </svg> |
123 | </button> | 124 | </button> |
124 | <button class="footer__btn footer__btn-up js_btn_up" type="button"> | 125 | <button class="footer__btn footer__btn-up js_btn_up" type="button"> |
125 | <svg width="19" height="11"> | 126 | <svg width="19" height="11"> |
126 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-up')}}"></use> | 127 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-up')}}"></use> |
127 | </svg> | 128 | </svg> |
128 | </button> | 129 | </button> |
129 | </div> | 130 | </div> |
130 | <!-- Форма обратной связи --> | 131 | <!-- Форма обратной связи --> |
131 | @yield('form_feedback') | 132 | @yield('form_feedback') |
132 | 133 | ||
133 | <!-- Сам футер мееню --> | 134 | <!-- Сам футер мееню --> |
134 | <div class="footer-middle"> | 135 | <div class="footer-middle"> |
135 | <div class="container"> | 136 | <div class="container"> |
136 | <div class="footer-middle__wrap"> | 137 | <div class="footer-middle__wrap"> |
137 | <div class="footer__col footer__col-intro"><a class="footer__logo" href="index.html"><img src="{{ asset('images/logo-footer.svg')}}" alt="Лого"></a> | 138 | <div class="footer__col footer__col-intro"><a class="footer__logo" href="index.html"><img src="{{ asset('images/logo-footer.svg')}}" alt="Лого"></a> |
138 | <p class="footer__descr">В группу “Renttorg” входит ряд ведущих российских девелоперских компаний полного цикла, реализующих масштабные объекты недвижимости.</p> | 139 | <p class="footer__descr">В группу “Renttorg” входит ряд ведущих российских девелоперских компаний полного цикла, реализующих масштабные объекты недвижимости.</p> |
139 | <div class="footer-questions"> | 140 | <div class="footer-questions"> |
140 | <h3 class="footer-questions__title">Есть вопросы или предложения?</h3><a class="footer-questions__btn btn btn--main" href="#" data-btn="feedback">Напишите нам</a> | 141 | <h3 class="footer-questions__title">Есть вопросы или предложения?</h3><a class="footer-questions__btn btn btn--main" href="#" data-btn="feedback">Напишите нам</a> |
141 | </div> | 142 | </div> |
142 | </div> | 143 | </div> |
143 | <div class="footer__col footer__col-menu js_footer_col"> | 144 | <div class="footer__col footer__col-menu js_footer_col"> |
144 | <h3 class="footer__caption js_footer_caption">Меню</h3> | 145 | <h3 class="footer__caption js_footer_caption">Меню</h3> |
145 | <div class="footer__block js_footer_block"> | 146 | <div class="footer__block js_footer_block"> |
146 | <ul class="footer__list"> | 147 | <ul class="footer__list"> |
147 | <li class="footer__item"><a class="footer__link" href="{{ route('catalog') }}">Каталог</a></li> | 148 | <li class="footer__item"><a class="footer__link" href="{{ route('catalog') }}">Каталог</a></li> |
148 | <li class="footer__item"><a class="footer__link" href="{{ route('about') }}">О компании</a></li> | 149 | <li class="footer__item"><a class="footer__link" href="{{ route('about') }}">О компании</a></li> |
149 | <li class="footer__item"><a class="footer__link" href="{{ route('contact') }}">Контакты</a></li> | 150 | <li class="footer__item"><a class="footer__link" href="{{ route('contact') }}">Контакты</a></li> |
150 | <li class="footer__item"><a class="footer__link" href="{{ route('favorite') }}">Избранное</a></li> | 151 | <li class="footer__item"><a class="footer__link" href="{{ route('favorite') }}">Избранное</a></li> |
151 | <li class="footer__item"><a class="footer__link" href="{{ route('news') }}">Новости</a></li> | 152 | <li class="footer__item"><a class="footer__link" href="{{ route('news') }}">Новости</a></li> |
152 | </ul> | 153 | </ul> |
153 | 154 | ||
154 | </div><a class="footer__author" href="#" target="_blank"><img src="{{ asset('images/author.png')}}" alt="Лого разработчика"></a> | 155 | </div><a class="footer__author" href="#" target="_blank"><img src="{{ asset('images/author.png')}}" alt="Лого разработчика"></a> |
155 | </div> | 156 | </div> |
156 | <div class="footer__col js_footer_col"> | 157 | <div class="footer__col js_footer_col"> |
157 | <h3 class="footer__caption js_footer_caption">Услуги</h3> | 158 | <h3 class="footer__caption js_footer_caption">Услуги</h3> |
158 | <div class="footer__block js_footer_block"> | 159 | <div class="footer__block js_footer_block"> |
159 | <ul class="footer__list"> | 160 | <ul class="footer__list"> |
160 | <li class="footer__item"><a class="footer__link" href="#">Продажа арендного бизнеса</a></li> | 161 | <li class="footer__item"><a class="footer__link" href="#">Продажа арендного бизнеса</a></li> |
161 | <li class="footer__item"><a class="footer__link" href="#">Арендованные помещения</a></li> | 162 | <li class="footer__item"><a class="footer__link" href="#">Арендованные помещения</a></li> |
162 | <li class="footer__item"><a class="footer__link" href="#">Свободные для аренды</a></li> | 163 | <li class="footer__item"><a class="footer__link" href="#">Свободные для аренды</a></li> |
163 | </ul> | 164 | </ul> |
164 | </div> | 165 | </div> |
165 | </div> | 166 | </div> |
166 | <div class="footer__col js_footer_col"> | 167 | <div class="footer__col js_footer_col"> |
167 | <h3 class="footer__caption js_footer_caption">Страницы</h3> | 168 | <h3 class="footer__caption js_footer_caption">Страницы</h3> |
168 | <div class="footer__block js_footer_block"> | 169 | <div class="footer__block js_footer_block"> |
169 | <ul class="footer__list"> | 170 | <ul class="footer__list"> |
170 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.login') }}">Админка</a></li> | 171 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.login') }}">Админка</a></li> |
171 | <li class="footer__item"><a class="footer__link" href="{{ route('cookies') }}">Cookies</a></li> | 172 | <li class="footer__item"><a class="footer__link" href="{{ route('cookies') }}">Cookies</a></li> |
172 | 173 | ||
173 | <!--<li class="footer__item"><a class="footer__link" href="#">Новая Москва</a></li> | 174 | <!--<li class="footer__item"><a class="footer__link" href="#">Новая Москва</a></li> |
174 | <li class="footer__item"><a class="footer__link" href="#">Подмосковье</a></li> | 175 | <li class="footer__item"><a class="footer__link" href="#">Подмосковье</a></li> |
175 | <li class="footer__item"><a class="footer__link" href="#">Москва</a></li> | 176 | <li class="footer__item"><a class="footer__link" href="#">Москва</a></li> |
176 | <li class="footer__item"><a class="footer__link" href="#">Тип недвижимости</a></li>--> | 177 | <li class="footer__item"><a class="footer__link" href="#">Тип недвижимости</a></li>--> |
177 | </ul> | 178 | </ul> |
178 | </div> | 179 | </div> |
179 | </div> | 180 | </div> |
180 | <div class="footer__col footer__col-contacts"> | 181 | <div class="footer__col footer__col-contacts"> |
181 | <h3 class="footer__caption js_footer_caption">Контакты</h3> | 182 | <h3 class="footer__caption js_footer_caption">Контакты</h3> |
182 | <ul class="footer__list"> | 183 | <ul class="footer__list"> |
183 | <li class="footer__item"><a class="footer__link" href="#mailto:{{ $items_contact[0]->email }}">{{ $items_contact[0]->email }}</a></li> | 184 | <li class="footer__item"><a class="footer__link" href="#mailto:{{ $items_contact[0]->email }}">{{ $items_contact[0]->email }}</a></li> |
184 | <li class="footer__item"><a class="footer__link" href="tel:{{ $items_contact[0]->telephone }}">{{ $items_contact[0]->telephone }}</a></li> | 185 | <li class="footer__item"><a class="footer__link" href="tel:{{ $items_contact[0]->telephone }}">{{ $items_contact[0]->telephone }}</a></li> |
185 | </ul> | 186 | </ul> |
186 | <div class="footer__social social"> | 187 | <div class="footer__social social"> |
187 | <ul class="social__list"> | 188 | <ul class="social__list"> |
188 | <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="{{ asset('images/tg.svg')}}" alt=""></a></li> | 189 | <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="{{ asset('images/tg.svg')}}" alt=""></a></li> |
189 | <li class="social__item"><a class="social__link" href="#" target="_blank"> | 190 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
190 | <svg width="40" height="40"> | 191 | <svg width="40" height="40"> |
191 | <use xlink:href="{{ asset('images/sprite.svg#wa') }}"></use> | 192 | <use xlink:href="{{ asset('images/sprite.svg#wa') }}"></use> |
192 | </svg></a></li> | 193 | </svg></a></li> |
193 | </ul> | 194 | </ul> |
194 | </div> | 195 | </div> |
195 | </div> | 196 | </div> |
196 | </div> | 197 | </div> |
197 | </div> | 198 | </div> |
198 | </div> | 199 | </div> |
199 | 200 | ||
200 | <div class="footer-bottom"> | 201 | <div class="footer-bottom"> |
201 | <div class="container"> | 202 | <div class="container"> |
202 | <div class="footer-bottom__wrap"> | 203 | <div class="footer-bottom__wrap"> |
203 | <div class="footer__copy">© 2023 RentTorg</div><a class="footer__plicy" href="{{ route('conf') }}">Политика конфиденциальности</a> | 204 | <div class="footer__copy">© 2023 RentTorg</div><a class="footer__plicy" href="{{ route('conf') }}">Политика конфиденциальности</a> |
204 | </div> | 205 | </div> |
205 | </div> | 206 | </div> |
206 | </div> | 207 | </div> |
207 | </footer> | 208 | </footer> |
208 | </div> | 209 | </div> |
209 | 210 | ||
210 | <!-- Вплывающие окна --> | 211 | <!-- Вплывающие окна --> |
211 | <div class="popup popup-feedback" data-popup="feedback"> | 212 | <div class="popup popup-feedback" data-popup="feedback"> |
212 | <div class="popup__wrap"> | 213 | <div class="popup__wrap"> |
213 | <button class="popup__close js_popup_close" type="button"> | 214 | <button class="popup__close js_popup_close" type="button"> |
214 | <svg width="20" height="20"> | 215 | <svg width="20" height="20"> |
215 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 216 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
216 | </svg> | 217 | </svg> |
217 | </button> | 218 | </button> |
218 | <form class="popup-feedback__form js_popup_feedback_form" action="{{ route('header_form') }}" method="POST"> | 219 | <form class="popup-feedback__form js_popup_feedback_form" action="{{ route('header_form') }}" method="POST"> |
219 | @csrf | 220 | @csrf |
220 | <div class="popup-feedback__title">Как с вами связаться</div> | 221 | <div class="popup-feedback__title">Как с вами связаться</div> |
221 | <div class="popup-feedback__fields"> | 222 | <div class="popup-feedback__fields"> |
222 | <label class="popup-feedback__field field"> | 223 | <label class="popup-feedback__field field"> |
223 | <input type="text" placeholder="Имя" name="NameUser"> | 224 | <input type="text" placeholder="Имя" name="NameUser"> |
224 | </label> | 225 | </label> |
225 | <label class="popup-feedback__field field"> | 226 | <label class="popup-feedback__field field"> |
226 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> | 227 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> |
227 | </label> | 228 | </label> |
228 | </div> | 229 | </div> |
229 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 230 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
230 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> | 231 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> |
231 | </form> | 232 | </form> |
232 | </div> | 233 | </div> |
233 | </div> | 234 | </div> |
234 | <div class="popup popup-feedback" data-popup="viewing"> | 235 | <div class="popup popup-feedback" data-popup="viewing"> |
235 | <div class="popup__wrap"> | 236 | <div class="popup__wrap"> |
236 | <button class="popup__close js_popup_close" type="button"> | 237 | <button class="popup__close js_popup_close" type="button"> |
237 | <svg width="20" height="20"> | 238 | <svg width="20" height="20"> |
238 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 239 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
239 | </svg> | 240 | </svg> |
240 | </button> | 241 | </button> |
241 | <form class="popup-feedback__form js_popup_viewing_form" action="{{ route('rec_view_form') }}" method="POST"> | 242 | <form class="popup-feedback__form js_popup_viewing_form" action="{{ route('rec_view_form') }}" method="POST"> |
242 | @csrf | 243 | @csrf |
243 | <div class="popup-feedback__title">Записаться на просмотр</div> | 244 | <div class="popup-feedback__title">Записаться на просмотр</div> |
244 | <div class="popup-feedback__fields"> | 245 | <div class="popup-feedback__fields"> |
245 | <label class="popup-feedback__field field"> | 246 | <label class="popup-feedback__field field"> |
246 | <input type="text" placeholder="Имя" name="NameUser"> | 247 | <input type="text" placeholder="Имя" name="NameUser"> |
247 | </label> | 248 | </label> |
248 | <label class="popup-feedback__field field"> | 249 | <label class="popup-feedback__field field"> |
249 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> | 250 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> |
250 | </label> | 251 | </label> |
251 | </div> | 252 | </div> |
252 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 253 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
253 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="#">Политикой конфиденциальности</a>.</p> | 254 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="#">Политикой конфиденциальности</a>.</p> |
254 | </form> | 255 | </form> |
255 | </div> | 256 | </div> |
256 | </div> | 257 | </div> |
257 | <div class="popup popup-success" data-popup="success"> | 258 | <div class="popup popup-success" data-popup="success"> |
258 | <div class="popup__wrap"> | 259 | <div class="popup__wrap"> |
259 | <button class="popup__close js_popup_close" type="button"> | 260 | <button class="popup__close js_popup_close" type="button"> |
260 | <svg width="20" height="20"> | 261 | <svg width="20" height="20"> |
261 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | 262 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> |
262 | </svg> | 263 | </svg> |
263 | </button> | 264 | </button> |
264 | <div class="popup-success__inner"> | 265 | <div class="popup-success__inner"> |
265 | <div class="popup-success__logo"> | 266 | <div class="popup-success__logo"> |
266 | <svg width="48" height="39"> | 267 | <svg width="48" height="39"> |
267 | <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> | 268 | <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> |
268 | </svg> | 269 | </svg> |
269 | </div> | 270 | </div> |
270 | <div class="popup-success__title">Спасибо за заявку</div> | 271 | <div class="popup-success__title">Спасибо за заявку</div> |
271 | <p class="popup-success__descr">В ближайшее время с вами свяжется наш специалист для уточнения деталей вашей задачи.</p> | 272 | <p class="popup-success__descr">В ближайшее время с вами свяжется наш специалист для уточнения деталей вашей задачи.</p> |
272 | </div> | 273 | </div> |
273 | </div> | 274 | </div> |
274 | </div> | 275 | </div> |
275 | <div class="popup popup-feedback" data-popup="sending"> | 276 | <div class="popup popup-feedback" data-popup="sending"> |
276 | <div class="popup__wrap"> | 277 | <div class="popup__wrap"> |
277 | <button class="popup__close js_popup_close" type="button"> | 278 | <button class="popup__close js_popup_close" type="button"> |
278 | <svg width="20" height="20"> | 279 | <svg width="20" height="20"> |
279 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 280 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
280 | </svg> | 281 | </svg> |
281 | </button> | 282 | </button> |
282 | <form class="popup-feedback__form js_popup_sending_form_" action="{{ route('email_form') }}" method="POST"> | 283 | <form class="popup-feedback__form js_popup_sending_form_" action="{{ route('email_form') }}" method="POST"> |
283 | @csrf | 284 | @csrf |
284 | <div class="popup-feedback__title">Отправить на почту</div> | 285 | <div class="popup-feedback__title">Отправить на почту</div> |
285 | <div class="popup-feedback__fields"> | 286 | <div class="popup-feedback__fields"> |
286 | <label class="popup-feedback__field field"> | 287 | <label class="popup-feedback__field field"> |
287 | <input class="js_input_email" type="text" placeholder="Электронная почта" name="EmailUser"> | 288 | <input class="js_input_email" type="text" placeholder="Электронная почта" name="EmailUser"> |
288 | </label> | 289 | </label> |
289 | </div> | 290 | </div> |
290 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 291 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
291 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> | 292 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> |
292 | </form> | 293 | </form> |
293 | </div> | 294 | </div> |
294 | </div> | 295 | </div> |
295 | <div class="contact-us js_contact_us"> | 296 | <div class="contact-us js_contact_us"> |
296 | <div class="contact-us__top"> | 297 | <div class="contact-us__top"> |
297 | <button class="contact-us__close js_contact_us_close" type="button"> | 298 | <button class="contact-us__close js_contact_us_close" type="button"> |
298 | <svg width="20" height="20"> | 299 | <svg width="20" height="20"> |
299 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 300 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
300 | </svg> | 301 | </svg> |
301 | </button> | 302 | </button> |
302 | <div class="contact-us__title">Свяжитесь с нами</div> | 303 | <div class="contact-us__title">Свяжитесь с нами</div> |
303 | </div> | 304 | </div> |
304 | <div class="contact-us__body"> | 305 | <div class="contact-us__body"> |
305 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" data-btn="feedback"> | 306 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" data-btn="feedback"> |
306 | <div class="contact-us-item__icon"> | 307 | <div class="contact-us-item__icon"> |
307 | <svg width="34" height="34"> | 308 | <svg width="34" height="34"> |
308 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> | 309 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> |
309 | </svg> | 310 | </svg> |
310 | </div> | 311 | </div> |
311 | <div class="contact-us-item__name">Позвонить</div></a> | 312 | <div class="contact-us-item__name">Позвонить</div></a> |
312 | 313 | ||
313 | <a class="contact-us-item js_contact_us_close" data-btn="sending"> | 314 | <a class="contact-us-item js_contact_us_close" data-btn="sending"> |
314 | <div class="contact-us-item__icon"> | 315 | <div class="contact-us-item__icon"> |
315 | <svg width="44" height="44"> | 316 | <svg width="44" height="44"> |
316 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> | 317 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> |
317 | </svg> | 318 | </svg> |
318 | </div> | 319 | </div> |
319 | <div class="contact-us-item__name">Написать</div></a> | 320 | <div class="contact-us-item__name">Написать</div></a> |
320 | 321 | ||
321 | <a class="contact-us-item js_contact_us_close" > | 322 | <a class="contact-us-item js_contact_us_close" > |
322 | <div class="contact-us-item__icon"> | 323 | <div class="contact-us-item__icon"> |
323 | <svg width="34" height="34"> | 324 | <svg width="34" height="34"> |
324 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> | 325 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> |
325 | </svg> | 326 | </svg> |
326 | </div> | 327 | </div> |
327 | <div class="contact-us-item__name">Онлайн-чат</div></a></div> | 328 | <div class="contact-us-item__name">Онлайн-чат</div></a></div> |
328 | <div class="contact-us__socials"><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> | 329 | <div class="contact-us__socials"><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> |
329 | <div class="contact-us-social__icon contact-us-social__icon-tg"><img src="{{ asset('images/contact-us-tg.svg')}}" alt=""></div> | 330 | <div class="contact-us-social__icon contact-us-social__icon-tg"><img src="{{ asset('images/contact-us-tg.svg')}}" alt=""></div> |
330 | <div class="contact-us-social__name">Telegram</div></a><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> | 331 | <div class="contact-us-social__name">Telegram</div></a><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> |
331 | <div class="contact-us-social__icon contact-us-social__icon-wa"> | 332 | <div class="contact-us-social__icon contact-us-social__icon-wa"> |
332 | <svg width="31" height="31"> | 333 | <svg width="31" height="31"> |
333 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> | 334 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> |
334 | </svg> | 335 | </svg> |
335 | </div> | 336 | </div> |
336 | <div class="contact-us-social__name">WhatsApp</div></a></div> | 337 | <div class="contact-us-social__name">WhatsApp</div></a></div> |
337 | </div> | 338 | </div> |
338 | </div> | 339 | </div> |
339 | 340 | ||
340 | <!-- Всплывашка этажа и объекта | 341 | <!-- Всплывашка этажа и объекта |
341 | <div class="offer-side-popup" data-popup="offer-side-popup"> | 342 | <div class="offer-side-popup" data-popup="offer-side-popup"> |
342 | <div class="offer-side-popup__wrap"> | 343 | <div class="offer-side-popup__wrap"> |
343 | <button class="offer-side-popup__close js_popup_close" type="button"> | 344 | <button class="offer-side-popup__close js_popup_close" type="button"> |
344 | <svg width="20" height="20"> | 345 | <svg width="20" height="20"> |
345 | <use xlink:href="images/sprite.svg#popup-close"></use> | 346 | <use xlink:href="images/sprite.svg#popup-close"></use> |
346 | </svg> | 347 | </svg> |
347 | </button> | 348 | </button> |
348 | <div class="offer-side-popup__cnt"> | 349 | <div class="offer-side-popup__cnt"> |
349 | <div class="offer-side-popup__item js_offer_side_popup_item active" data-item="1"><img src="images/offer-side-item-img-1.jpg" alt="План объекта"></div> | 350 | <div class="offer-side-popup__item js_offer_side_popup_item active" data-item="1"><img src="images/offer-side-item-img-1.jpg" alt="План объекта"></div> |
350 | <div class="offer-side-popup__item js_offer_side_popup_item" data-item="2"><img src="images/offer-side-item-img-2.jpg" alt="План этажа"></div> | 351 | <div class="offer-side-popup__item js_offer_side_popup_item" data-item="2"><img src="images/offer-side-item-img-2.jpg" alt="План этажа"></div> |
351 | </div> | 352 | </div> |
352 | <div class="offer-side-popup__tabs"> | 353 | <div class="offer-side-popup__tabs"> |
353 | <button class="offer-side-popup__tab js_offer_side_popup_tab active" type="button" data-tab="1">План объекта</button> | 354 | <button class="offer-side-popup__tab js_offer_side_popup_tab active" type="button" data-tab="1">План объекта</button> |
354 | <button class="offer-side-popup__tab js_offer_side_popup_tab" type="button" data-tab="2">План этажа</button> | 355 | <button class="offer-side-popup__tab js_offer_side_popup_tab" type="button" data-tab="2">План этажа</button> |
355 | </div> | 356 | </div> |
356 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> | 357 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> |
357 | <svg width="18" height="18"> | 358 | <svg width="18" height="18"> |
358 | <use xlink:href="images/sprite.svg#popup-sizeoff"></use> | 359 | <use xlink:href="images/sprite.svg#popup-sizeoff"></use> |
359 | </svg> | 360 | </svg> |
360 | </button> | 361 | </button> |
361 | </div> | 362 | </div> |
362 | </div> | 363 | </div> |
363 | --> | 364 | --> |
364 | 365 | ||
365 | <div class="img-viewer js_img_viewer"> | 366 | <div class="img-viewer js_img_viewer"> |
366 | <div class="img-viewer__wrap"> | 367 | <div class="img-viewer__wrap"> |
367 | <button class="img-viewer__close js_img_viewer_close" type="button"> | 368 | <button class="img-viewer__close js_img_viewer_close" type="button"> |
368 | <svg width="20" height="20"> | 369 | <svg width="20" height="20"> |
369 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 370 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
370 | </svg> | 371 | </svg> |
371 | </button> | 372 | </button> |
372 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> | 373 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> |
373 | <div class="img-viewer__thumbs-swiper js_img_viewer_thumbs_swiper swiper"> | 374 | <div class="img-viewer__thumbs-swiper js_img_viewer_thumbs_swiper swiper"> |
374 | <div class="swiper-wrapper"></div> | 375 | <div class="swiper-wrapper"></div> |
375 | </div> | 376 | </div> |
376 | </div> | 377 | </div> |
377 | <div class="img-viewer__slider"> | 378 | <div class="img-viewer__slider"> |
378 | <div class="img-viewer__slider-swiper js_img_viewer_slider_swiper swiper"> | 379 | <div class="img-viewer__slider-swiper js_img_viewer_slider_swiper swiper"> |
379 | <div class="swiper-wrapper"></div> | 380 | <div class="swiper-wrapper"></div> |
380 | </div> | 381 | </div> |
381 | <div class="swiper-button-prev"> | 382 | <div class="swiper-button-prev"> |
382 | <svg width="10" height="17"> | 383 | <svg width="10" height="17"> |
383 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | 384 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> |
384 | </svg> | 385 | </svg> |
385 | </div> | 386 | </div> |
386 | <div class="swiper-button-next"> | 387 | <div class="swiper-button-next"> |
387 | <svg width="10" height="17"> | 388 | <svg width="10" height="17"> |
388 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | 389 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> |
389 | </svg> | 390 | </svg> |
390 | </div> | 391 | </div> |
391 | </div> | 392 | </div> |
392 | <div class="img-viewer__caption js_img_viewer_caption"></div> | 393 | <div class="img-viewer__caption js_img_viewer_caption"></div> |
393 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> | 394 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> |
394 | <svg width="18" height="18"> | 395 | <svg width="18" height="18"> |
395 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> | 396 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> |
396 | </svg> | 397 | </svg> |
397 | </button> | 398 | </button> |
398 | </div> | 399 | </div> |
399 | </div> | 400 | </div> |
400 | <div class="cookies js_cookies"> | 401 | <div class="cookies js_cookies"> |
401 | <div class="container"> | 402 | <div class="container"> |
402 | <div class="cookies__wrap"> | 403 | <div class="cookies__wrap"> |
403 | <div class="cookies__top"> | 404 | <div class="cookies__top"> |
404 | <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> | 405 | <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> |
405 | <div class="cookies__title">Cookies</div> | 406 | <div class="cookies__title">Cookies</div> |
406 | </div> | 407 | </div> |
407 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> | 408 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> |
408 | <div class="cookies__buttons"> | 409 | <div class="cookies__buttons"> |
409 | <button class="cookies__btn btn btn--main js_cookies_confirm" type="button">Принять</button><a class="cookies__link" href="{{ route('cookies') }}">Подробнее</a> | 410 | <button class="cookies__btn btn btn--main js_cookies_confirm" type="button">Принять</button><a class="cookies__link" href="{{ route('cookies') }}">Подробнее</a> |
410 | </div> | 411 | </div> |
411 | </div> | 412 | </div> |
412 | </div> | 413 | </div> |
413 | </div> | 414 | </div> |
414 | <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> | 415 | <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> |
415 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> | 416 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> |
416 | <script src="{{ asset('js/main_main.js') }}"></script> | 417 | <script src="{{ asset('js/main_main.js') }}"></script> |
417 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> | 418 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> |
418 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> | 419 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> |
419 | @yield('custom_js') | 420 | @yield('custom_js') |
420 | @include('js.cookies_favorite') | 421 | @include('js.cookies_favorite') |
421 | </body> | 422 | </body> |
422 | </html> | 423 | </html> |
423 | 424 |
routes/web.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | use Illuminate\Support\Facades\Auth; | 3 | use Illuminate\Support\Facades\Auth; |
4 | use Illuminate\Support\Facades\Route; | 4 | use Illuminate\Support\Facades\Route; |
5 | use App\Http\Controllers\MainController; | 5 | use App\Http\Controllers\MainController; |
6 | use App\Http\Controllers\RegisterController; | 6 | use App\Http\Controllers\RegisterController; |
7 | use App\Http\Controllers\LoginController; | 7 | use App\Http\Controllers\LoginController; |
8 | use App\Http\Controllers\AdminController; | 8 | use App\Http\Controllers\AdminController; |
9 | use App\Http\Controllers\Admin\AreaController; | 9 | use App\Http\Controllers\Admin\AreaController; |
10 | use App\Http\Controllers\Admin\NewsController; | 10 | use App\Http\Controllers\Admin\NewsController; |
11 | use App\Http\Controllers\Admin\CompanyAreaController; | 11 | use App\Http\Controllers\Admin\CompanyAreaController; |
12 | use App\Http\Controllers\Admin\FormatAreaController; | 12 | use App\Http\Controllers\Admin\FormatAreaController; |
13 | use App\Http\Controllers\Admin\TypeAreaController; | 13 | use App\Http\Controllers\Admin\TypeAreaController; |
14 | use App\Http\Controllers\Admin\HousesController; | 14 | use App\Http\Controllers\Admin\HousesController; |
15 | use App\Http\Controllers\Admin\MessageAreaController; | 15 | use App\Http\Controllers\Admin\MessageAreaController; |
16 | 16 | ||
17 | /* | 17 | /* |
18 | |-------------------------------------------------------------------------- | 18 | |-------------------------------------------------------------------------- |
19 | | Web Routes | 19 | | Web Routes |
20 | |-------------------------------------------------------------------------- | 20 | |-------------------------------------------------------------------------- |
21 | | | 21 | | |
22 | | Here is where you can register web routes for your application. These | 22 | | Here is where you can register web routes for your application. These |
23 | | routes are loaded by the RouteServiceProvider within a group which | 23 | | routes are loaded by the RouteServiceProvider within a group which |
24 | | contains the "web" middleware group. Now create something great! | 24 | | contains the "web" middleware group. Now create something great! |
25 | | | 25 | | |
26 | */ | 26 | */ |
27 | 27 | ||
28 | //Главная страница | 28 | //Главная страница |
29 | Route::get('/',[MainController::class, 'index'])->name('index'); | 29 | Route::get('/',[MainController::class, 'index'])->name('index'); |
30 | 30 | ||
31 | //Страница Избранные | 31 | //Страница Избранные |
32 | Route::get('favorite',[MainController::class, 'favorite'])->name('favorite'); | 32 | Route::get('favorite',[MainController::class, 'favorite'])->name('favorite'); |
33 | 33 | ||
34 | //Страница контакты | 34 | //Страница контакты |
35 | Route::get('contact',[MainController::class, 'contact'])->name('contact'); | 35 | Route::get('contact',[MainController::class, 'contact'])->name('contact'); |
36 | 36 | ||
37 | //Страница каталог | 37 | //Страница каталог |
38 | Route::get('catalog',[MainController::class, 'catalog'])->name('catalog'); | 38 | Route::get('catalog',[MainController::class, 'catalog'])->name('catalog'); |
39 | 39 | ||
40 | //Страница новости | 40 | //Страница новости |
41 | Route::get('news',[MainController::class, 'news'])->name('news'); | 41 | Route::get('news',[MainController::class, 'news'])->name('news'); |
42 | 42 | ||
43 | //Страница о компании | 43 | //Страница о компании |
44 | Route::get('about',[MainController::class, 'about'])->name('about'); | 44 | Route::get('about',[MainController::class, 'about'])->name('about'); |
45 | 45 | ||
46 | //Страница объекты на карте | 46 | //Страница объекты на карте |
47 | Route::get('maps',[MainController::class, 'mapsobj'])->name('maps'); | 47 | Route::get('maps',[MainController::class, 'mapsobj'])->name('maps'); |
48 | 48 | ||
49 | // Политика конфедициальности | 49 | // Политика конфедициальности |
50 | Route::get('conf', function () { | 50 | Route::get('conf', function () { |
51 | return view('conf'); | 51 | return view('conf'); |
52 | })->name('conf'); | 52 | })->name('conf'); |
53 | 53 | ||
54 | //Детальная страница предложения недвижимости | 54 | //Детальная страница предложения недвижимости |
55 | Route::get('offer/{house:id}', [MainController::class, 'offer'])->name('offer'); | 55 | Route::get('offer/{house:id}', [MainController::class, 'offer'])->name('offer'); |
56 | 56 | ||
57 | //Детальная страница новостей | 57 | //Детальная страница новостей |
58 | Route::get('detail-new/{news:id}', [MainController::class, 'DetailNew'])->name('new'); | 58 | Route::get('detail-new/{news:id}', [MainController::class, 'DetailNew'])->name('new'); |
59 | 59 | ||
60 | //Страница ЖилойКомплекс | 60 | //Страница ЖилойКомплекс |
61 | Route::get('complex/{area:id}', [MainController::class, 'complex'])->name('complex'); | 61 | Route::get('complex/{area:id}', [MainController::class, 'complex'])->name('complex'); |
62 | 62 | ||
63 | // ajax-фильтры каталога | 63 | // ajax-фильтры каталога |
64 | Route::get('catalog_ajax_filter', [MainController::class, 'catalog_ajax_filter'])->name('catalog_ajax_filter'); | 64 | Route::get('catalog_ajax_filter', [MainController::class, 'catalog_ajax_filter'])->name('catalog_ajax_filter'); |
65 | 65 | ||
66 | //Категория | 66 | //Категория |
67 | Route::get('category/{cat}', [MainController::class, 'Category'])->name('category'); | 67 | Route::get('category/{cat}', [MainController::class, 'Category'])->name('category'); |
68 | 68 | ||
69 | //Категория ajax | 69 | //Категория ajax |
70 | Route::get('category_ajax/{cat}', [MainController::class, 'category_ajax'])->name('category_ajax'); | 70 | Route::get('category_ajax/{cat}', [MainController::class, 'category_ajax'])->name('category_ajax'); |
71 | 71 | ||
72 | //Страница куков | 72 | //Страница куков |
73 | Route::get('cookies', function () { | 73 | Route::get('cookies', function () { |
74 | return view('cookies'); | 74 | return view('cookies'); |
75 | })->name('cookies'); | 75 | })->name('cookies'); |
76 | 76 | ||
77 | //Форма обратной связи в футере | 77 | //Форма обратной связи в футере |
78 | Route::post('main_form', [MainController::class, 'main_form'])->name('main_form'); | 78 | Route::post('main_form', [MainController::class, 'main_form'])->name('main_form'); |
79 | 79 | ||
80 | //Форма обратной связи в хедере | 80 | //Форма обратной связи в хедере |
81 | Route::post('header_form', [MainController::class, 'header_form'])->name('header_form'); | 81 | Route::post('header_form', [MainController::class, 'header_form'])->name('header_form'); |
82 | 82 | ||
83 | //Форма записаться на просмотр в карточке офиса | 83 | //Форма записаться на просмотр в карточке офиса |
84 | Route::post('rec_view_form', [MainController::class, 'rec_view_form'])->name('rec_view_form'); | 84 | Route::post('rec_view_form', [MainController::class, 'rec_view_form'])->name('rec_view_form'); |
85 | 85 | ||
86 | //Форма обратной связи на странице контакты | 86 | //Форма обратной связи на странице контакты |
87 | Route::post('page_contact_form', [MainController::class, 'page_contact_form'])->name('page_contact_form'); | 87 | Route::post('page_contact_form', [MainController::class, 'page_contact_form'])->name('page_contact_form'); |
88 | 88 | ||
89 | //Форма обратной связи предложения по почте | 89 | //Форма обратной связи предложения по почте |
90 | Route::post('email_form', [MainController::class, 'email_form'])->name('email_form'); | 90 | Route::post('email_form', [MainController::class, 'email_form'])->name('email_form'); |
91 | 91 | ||
92 | Route::group([ | 92 | Route::group([ |
93 | 'as' => 'auth.', // имя маршрута, например auth.index | 93 | 'as' => 'auth.', // имя маршрута, например auth.index |
94 | 'prefix' => 'auth', // префикс маршрута, например auth/index | 94 | 'prefix' => 'auth', // префикс маршрута, например auth/index |
95 | ], function () { | 95 | ], function () { |
96 | // Форма регистрации | 96 | // Форма регистрации |
97 | Route::get('register', [RegisterController::class, 'register'])->name('register'); | 97 | Route::get('register', [RegisterController::class, 'register'])->name('register'); |
98 | 98 | ||
99 | // Создание пользователя | 99 | // Создание пользователя |
100 | Route::post('register', [RegisterController::class, 'create'])->name('create'); | 100 | Route::post('register', [RegisterController::class, 'create'])->name('create'); |
101 | //Форма входа | 101 | //Форма входа |
102 | Route::get('login', [LoginController::class, 'login'])->name('login'); | 102 | Route::get('login', [LoginController::class, 'login'])->name('login'); |
103 | 103 | ||
104 | // аутентификация | 104 | // аутентификация |
105 | Route::post('login', [LoginController::class, 'autenticate'])->name('auth'); | 105 | Route::post('login', [LoginController::class, 'autenticate'])->name('auth'); |
106 | 106 | ||
107 | // выход | 107 | // выход |
108 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); | 108 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); |
109 | 109 | ||
110 | //Страница неудачной авторизации | 110 | //Страница неудачной авторизации |
111 | Route::get('vefiry-message', function () { | 111 | Route::get('vefiry-message', function () { |
112 | return view('auth.vefiry-message'); | 112 | return view('auth.vefiry-message'); |
113 | })->name('vefiry-message'); | 113 | })->name('vefiry-message'); |
114 | 114 | ||
115 | }); | 115 | }); |
116 | 116 | ||
117 | /* | 117 | /* |
118 | * Личный кабинет пользователя | 118 | * Личный кабинет пользователя |
119 | */ | 119 | */ |
120 | Route::group([ | 120 | Route::group([ |
121 | 'as' => 'user.', // имя маршрута, например user.index | 121 | 'as' => 'user.', // имя маршрута, например user.index |
122 | 'prefix' => 'user', // префикс маршрута, например user/index | 122 | 'prefix' => 'user', // префикс маршрута, например user/index |
123 | //'namespace' => 'User', // пространство имен контроллеров | 123 | //'namespace' => 'User', // пространство имен контроллеров |
124 | 'middleware' => ['auth'] // один или несколько посредников | 124 | 'middleware' => ['auth'] // один или несколько посредников |
125 | ], function () { | 125 | ], function () { |
126 | // главная страница | 126 | // главная страница |
127 | Route::get('index', [AdminController::class, 'index'])->name('index'); | 127 | Route::get('index', [AdminController::class, 'index'])->name('index'); |
128 | }); | 128 | }); |
129 | 129 | ||
130 | /* | 130 | /* |
131 | * Панель управления: CRUD-операции над постами, категориями, тегами | 131 | * Панель управления: CRUD-операции над постами, категориями, тегами |
132 | */ | 132 | */ |
133 | Route::group([ | 133 | Route::group([ |
134 | 'as' => 'admin.', // имя маршрута, например admin.index | 134 | 'as' => 'admin.', // имя маршрута, например admin.index |
135 | 'prefix' => 'admin', // префикс маршрута, например admin/index | 135 | 'prefix' => 'admin', // префикс маршрута, например admin/index |
136 | //'namespace' => 'Admin', // пространство имен контроллеров | 136 | //'namespace' => 'Admin', // пространство имен контроллеров |
137 | 'middleware' => ['auth'] // один или несколько посредников | 137 | 'middleware' => ['auth'] // один или несколько посредников |
138 | ], function () { | 138 | ], function () { |
139 | /* | 139 | /* |
140 | * CRUD-операции над постами Жилых комплексов | 140 | * CRUD-операции над постами Жилых комплексов |
141 | */ | 141 | */ |
142 | Route::resource('area', AreaController::class, []); | 142 | Route::resource('area', AreaController::class, []); |
143 | 143 | ||
144 | //дополнительный маршрут для показа картинок объектов недвижимости | 144 | //дополнительный маршрут для показа картинок объектов недвижимости |
145 | Route::get('img/area/{area}', [AreaController::class, 'area_category']) | 145 | Route::get('img/area/{area}', [AreaController::class, 'area_category']) |
146 | ->name('img.area'); | 146 | ->name('img.area'); |
147 | 147 | ||
148 | //дополнительный маршрут для добавления картинок объектов недвижимости | 148 | //дополнительный маршрут для добавления картинок объектов недвижимости |
149 | Route::post('img/area/{area}', [AreaController::class, 'area_add_img']) | 149 | Route::post('img/area/{area}', [AreaController::class, 'area_add_img']) |
150 | ->name('img.add.area'); | 150 | ->name('img.add.area'); |
151 | 151 | ||
152 | //дополнительный маршрут для удаления картинок объектов недвжимости | 152 | //дополнительный маршрут для удаления картинок объектов недвжимости |
153 | Route::get('img/del/{id}/area/{area}', [AreaController::class, 'area_del_img']) | 153 | Route::get('img/del/{id}/area/{area}', [AreaController::class, 'area_del_img']) |
154 | ->name('img.del.area'); | 154 | ->name('img.del.area'); |
155 | 155 | ||
156 | /* | 156 | /* |
157 | * CRUD-операции над постами Новости | 157 | * CRUD-операции над постами Новости |
158 | */ | 158 | */ |
159 | Route::resource('news', NewsController::class, []); | 159 | Route::resource('news', NewsController::class, []); |
160 | 160 | ||
161 | /* | 161 | /* |
162 | * CRUD-операции над настройками Компании | 162 | * CRUD-операции над настройками Компании |
163 | */ | 163 | */ |
164 | Route::resource('company', CompanyAreaController::class, ['except' => ['create', 'store', 'destroy', 'index']]); | 164 | Route::resource('company', CompanyAreaController::class, ['except' => ['create', 'store', 'destroy', 'index']]); |
165 | 165 | ||
166 | //форма добавление партнера | 166 | //форма добавление партнера |
167 | Route::get('add/partner', [CompanyAreaController::class, 'add_partner'])->name('add.partner'); | 167 | Route::get('add/partner', [CompanyAreaController::class, 'add_partner'])->name('add.partner'); |
168 | 168 | ||
169 | //Добавление партнера | 169 | //Добавление партнера |
170 | Route::post('add/partner', [CompanyAreaController::class, 'add_partner_post'])->name('add.partner.post'); | 170 | Route::post('add/partner', [CompanyAreaController::class, 'add_partner_post'])->name('add.partner.post'); |
171 | 171 | ||
172 | //удаление партнера | 172 | //удаление партнера |
173 | Route::get('delete/partner/{partner}', [CompanyAreaController::class, 'delete_partner'])->name('delete.partner'); | 173 | Route::get('delete/partner/{partner}', [CompanyAreaController::class, 'delete_partner'])->name('delete.partner'); |
174 | 174 | ||
175 | 175 | ||
176 | /* | 176 | /* |
177 | * CRUD-операции над типами недвижимостью | 177 | * CRUD-операции над типами недвижимостью |
178 | */ | 178 | */ |
179 | Route::resource('typearea', TypeAreaController::class, ['except' => ['show']]); | 179 | Route::resource('typearea', TypeAreaController::class, ['except' => ['show']]); |
180 | 180 | ||
181 | /* | 181 | /* |
182 | * CRUD-операции над форматами недвижимостью | 182 | * CRUD-операции над форматами недвижимостью |
183 | */ | 183 | */ |
184 | Route::resource('formatarea', FormatAreaController::class, ['except' => ['show']]); | 184 | Route::resource('formatarea', FormatAreaController::class, ['except' => ['show']]); |
185 | 185 | ||
186 | /* | 186 | /* |
187 | * CRUD-операции над сообщениями сайта | 187 | * CRUD-операции над сообщениями сайта |
188 | */ | 188 | */ |
189 | Route::resource('message', MessageAreaController::class, ['except' => ['create', 'store', 'edit', 'update']]); | 189 | Route::resource('message', MessageAreaController::class, ['except' => ['create', 'store', 'edit', 'update']]); |
190 | 190 | ||
191 | /* | 191 | /* |
192 | * CRUD-операции над офисами | 192 | * CRUD-операции над офисами |
193 | */ | 193 | */ |
194 | Route::resource('houses', HousesController::class, ['except' => ['show']]); | 194 | Route::resource('houses', HousesController::class, ['except' => ['show']]); |
195 | 195 | ||
196 | // просмотр дополнительных картинок офиса | 196 | // просмотр дополнительных картинок офиса |
197 | Route::get('houses/{house}/images', [HousesController::class, 'view_images'])->name('view.images.houses'); | 197 | Route::get('houses/{house}/images', [HousesController::class, 'view_images'])->name('view.images.houses'); |
198 | 198 | ||
199 | // форма добавление дополнительной картинки офиса | 199 | // форма добавление дополнительной картинки офиса |
200 | Route::get('houses/{house}/add/images', [HousesController::class, 'add_images'])->name('add.images.houses'); | 200 | Route::get('houses/{house}/add/images', [HousesController::class, 'add_images'])->name('add.images.houses'); |
201 | 201 | ||
202 | // добавление дополнительной картинки офиса | 202 | // добавление дополнительной картинки офиса |
203 | Route::post('houses/{house}/add/images', [HousesController::class, 'add_images_store'])->name('add.image.post.houses'); | 203 | Route::post('houses/{house}/add/images', [HousesController::class, 'add_images_store'])->name('add.image.post.houses'); |
204 | 204 | ||
205 | // удаление дополнительной картинки офиса | 205 | // удаление дополнительной картинки офиса |
206 | Route::get('houses/{house}/del/{id}/images', [HousesController::class, 'del_images'])->name('del.images.houses'); | 206 | Route::get('houses/{house}/del/{id}/images', [HousesController::class, 'del_images'])->name('del.images.houses'); |
207 | 207 | ||
208 | //Форма смены пароля пользователя | ||
209 | Route::get('user/password', [AdminController::class, 'form_password'])->name('form_password'); | ||
210 | |||
211 | //Смена пароля пользователя | ||
212 | Route::post('user/password', [AdminController::class, 'validate_password'])->name('validate_password'); | ||
208 | }); | 213 | }); |
209 | 214 |