Commit 65c2fc5f63c762c09cc6ce2a7f12850c99ff5357
1 parent
0b9fba0955
Exists in
master
Работа со скриптами карт. Работа со счетчиком на странице 'Офис'
Showing 12 changed files with 1719 additions and 1515 deletions Inline Diff
- app/Classes/RusDate.php
- app/Http/Controllers/MainController.php
- app/Models/Page.php
- database/migrations/2023_03_20_110427_create_pages_table.php
- public/js/main_main.js
- public/js/main_new.js
- public/pug/templates/scripts.pug
- resources/views/complex.blade.php
- resources/views/house/post.blade.php
- resources/views/js/maps_js.blade.php
- resources/views/layout/admin.blade.php
- resources/views/layout/site.blade.php
app/Classes/RusDate.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | 3 | ||
4 | namespace App\Classes; | 4 | namespace App\Classes; |
5 | 5 | ||
6 | 6 | ||
7 | use DateTime; | ||
8 | |||
7 | class RusDate | 9 | class RusDate |
8 | { | 10 | { |
9 | public static function russian_date($date = null){ | 11 | public static function russian_date($date = null){ |
10 | $date=explode(".", date("d.m.Y")); | 12 | $date=explode(".", date("d.m.Y")); |
11 | $m = ""; | 13 | $m = ""; |
12 | 14 | ||
13 | switch ($date[1]){ | 15 | switch ($date[1]){ |
14 | case 1: $m = 'января'; break; | 16 | case 1: $m = 'января'; break; |
15 | case 2: $m = 'февраля'; break; | 17 | case 2: $m = 'февраля'; break; |
16 | case 3: $m = 'марта'; break; | 18 | case 3: $m = 'марта'; break; |
17 | case 4: $m = 'апреля'; break; | 19 | case 4: $m = 'апреля'; break; |
18 | case 5: $m = 'мая'; break; | 20 | case 5: $m = 'мая'; break; |
19 | case 6: $m = 'июня'; break; | 21 | case 6: $m = 'июня'; break; |
20 | case 7: $m = 'июля'; break; | 22 | case 7: $m = 'июля'; break; |
21 | case 8: $m = 'августа'; break; | 23 | case 8: $m = 'августа'; break; |
22 | case 9: $m = 'сентября'; break; | 24 | case 9: $m = 'сентября'; break; |
23 | case 10: $m = 'октября'; break; | 25 | case 10: $m = 'октября'; break; |
24 | case 11: $m = 'ноября'; break; | 26 | case 11: $m = 'ноября'; break; |
25 | case 12: $m = 'декабря'; break; | 27 | case 12: $m = 'декабря'; break; |
26 | } | 28 | } |
27 | return $date[0].' '.$m.' '.$date[2]; | 29 | return $date[0].' '.$m.' '.$date[2]; |
28 | } | 30 | } |
29 | 31 | ||
30 | public static function russian_month($month) { | 32 | public static function russian_month($month) { |
31 | switch ($month){ | 33 | switch ($month){ |
32 | case 1: $m = 'января'; break; | 34 | case 1: $m = 'января'; break; |
33 | case 2: $m = 'февраля'; break; | 35 | case 2: $m = 'февраля'; break; |
34 | case 3: $m = 'марта'; break; | 36 | case 3: $m = 'марта'; break; |
35 | case 4: $m = 'апреля'; break; | 37 | case 4: $m = 'апреля'; break; |
36 | case 5: $m = 'мая'; break; | 38 | case 5: $m = 'мая'; break; |
37 | case 6: $m = 'июня'; break; | 39 | case 6: $m = 'июня'; break; |
38 | case 7: $m = 'июля'; break; | 40 | case 7: $m = 'июля'; break; |
39 | case 8: $m = 'августа'; break; | 41 | case 8: $m = 'августа'; break; |
40 | case 9: $m = 'сентября'; break; | 42 | case 9: $m = 'сентября'; break; |
41 | case 10: $m = 'октября'; break; | 43 | case 10: $m = 'октября'; break; |
42 | case 11: $m = 'ноября'; break; | 44 | case 11: $m = 'ноября'; break; |
43 | case 12: $m = 'декабря'; break; | 45 | case 12: $m = 'декабря'; break; |
44 | } | 46 | } |
45 | return $m; | 47 | return $m; |
46 | } | 48 | } |
47 | 49 | ||
48 | public static function selected_item($item) { | 50 | public static function selected_item($item) { |
49 | if (empty($_COOKIE['favorite_house'])) | 51 | if (empty($_COOKIE['favorite_house'])) |
50 | return ""; | 52 | return ""; |
51 | else { | 53 | else { |
52 | $Str = json_decode($_COOKIE['favorite_house'], true); | 54 | $Str = json_decode($_COOKIE['favorite_house'], true); |
53 | //$Arr = explode(",", $Str); | 55 | //$Arr = explode(",", $Str); |
54 | if (in_array($item, $Str)) | 56 | if (in_array($item, $Str)) |
55 | return " active "; | 57 | return " active "; |
56 | else | 58 | else |
57 | return ""; | 59 | return ""; |
58 | } | 60 | } |
59 | } | 61 | } |
60 | 62 | ||
61 | public static function count_item_fav() { | 63 | public static function count_item_fav() { |
62 | if (empty($_COOKIE['favorite_house'])) | 64 | if (empty($_COOKIE['favorite_house'])) |
63 | return 0; | 65 | return 0; |
64 | else { | 66 | else { |
65 | $Arr = json_decode($_COOKIE['favorite_house'], true); | 67 | $Arr = json_decode($_COOKIE['favorite_house'], true); |
66 | return count($Arr); | 68 | return count($Arr); |
67 | } | 69 | } |
68 | } | 70 | } |
69 | 71 | ||
70 | public static function clear_items() { | 72 | public static function clear_items() { |
71 | if (!empty($_COOKIE['favorite_house'])) | 73 | if (!empty($_COOKIE['favorite_house'])) |
72 | unset($_COOKIE['favorite_house']); | 74 | unset($_COOKIE['favorite_house']); |
73 | //print_r($_COOKIE['arr']); | 75 | //print_r($_COOKIE['arr']); |
74 | } | 76 | } |
77 | |||
78 | public static function interval_month($date) { | ||
79 | $now = new DateTime(); | ||
80 | $date = new DateTime($date); //::createFromFormat("Y-m-d H:i", $date); | ||
81 | $interval = $now->diff($date); | ||
82 | $y = $interval->y; | ||
83 | $d = $interval->d; | ||
84 | $h = $interval->h; | ||
85 | $i = $interval->i; | ||
86 | |||
87 | if ($d > 30) | ||
88 | return true; | ||
89 | else | ||
90 | return false; | ||
91 | } | ||
92 | |||
93 | public static function interval_day($date) { | ||
94 | $now = new DateTime(); | ||
95 | $date = new DateTime($date); //::createFromFormat("Y-m-d H:i", $date); | ||
96 | $interval = $now->diff($date); | ||
97 | $y = $interval->y; | ||
98 | $d = $interval->d; | ||
99 | $h = $interval->h; | ||
100 | $i = $interval->i; | ||
101 | |||
102 | if (($h > 24) || ($d > 0) || ($y > 0)) | ||
103 | return true; | ||
104 | else | ||
105 | return false; | ||
106 | } | ||
107 | |||
108 | public static function ip_addr_client() { | ||
109 | $client = @$_SERVER['HTTP_CLIENT_IP']; | ||
110 | $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; | ||
111 | $remote = @$_SERVER['REMOTE_ADDR']; | ||
112 | |||
113 | if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; | ||
114 | elseif(filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; | ||
115 | else $ip = $remote; | ||
116 | |||
117 | return $ip; | ||
118 | } | ||
75 | } | 119 | } |
76 | 120 |
app/Http/Controllers/MainController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers; | 3 | namespace App\Http\Controllers; |
4 | 4 | ||
5 | use App\Http\Requests\EmailRequest; | 5 | use App\Http\Requests\EmailRequest; |
6 | use App\Http\Requests\FooterFeedbackRequest; | 6 | use App\Http\Requests\FooterFeedbackRequest; |
7 | use App\Models\Area; | 7 | use App\Models\Area; |
8 | use App\Models\Contact; | 8 | use App\Models\Contact; |
9 | use App\Models\format_area; | 9 | use App\Models\format_area; |
10 | use App\Models\House; | 10 | use App\Models\House; |
11 | use App\Models\ModelMailFeedback; | 11 | use App\Models\ModelMailFeedback; |
12 | use App\Models\News; | 12 | use App\Models\News; |
13 | use App\Models\Page; | ||
13 | use App\Models\Partners; | 14 | use App\Models\Partners; |
14 | use App\Models\type_area; | 15 | use App\Models\type_area; |
15 | use Illuminate\Database\Eloquent\Model; | 16 | use Illuminate\Database\Eloquent\Model; |
16 | use Illuminate\Http\Request; | 17 | use Illuminate\Http\Request; |
17 | use App\Classes\RusDate; | 18 | use App\Classes\RusDate; |
19 | use Illuminate\Support\Facades\DB; | ||
18 | use Illuminate\Support\Facades\Mail; | 20 | use Illuminate\Support\Facades\Mail; |
19 | use PhpParser\Node\Stmt\Switch_; | 21 | use PhpParser\Node\Stmt\Switch_; |
20 | use Illuminate\Support\Facades\Response; | 22 | use Illuminate\Support\Facades\Response; |
21 | 23 | ||
22 | class MainController extends Controller | 24 | class MainController extends Controller |
23 | { | 25 | { |
24 | /* | 26 | /* |
25 | * Главная страница проекта | 27 | * Главная страница проекта |
26 | */ | 28 | */ |
27 | public function index() { | 29 | public function index() { |
28 | $houses = House::with('areas')->orderByDesc('created_at')->limit(8)->get(); | 30 | $houses = House::with('areas')->orderByDesc('created_at')->limit(8)->get(); |
29 | $news = News::query()->orderByDesc('created_at')->limit(8)->get(); | 31 | $news = News::query()->orderByDesc('created_at')->limit(8)->get(); |
30 | $partners = Partners::query()->limit(18)->get(); | 32 | $partners = Partners::query()->limit(18)->get(); |
31 | return view('index', compact('houses', 'news', 'partners')); | 33 | return view('index', compact('houses', 'news', 'partners')); |
32 | } | 34 | } |
33 | 35 | ||
34 | /* | 36 | /* |
35 | * Фильтр ajax в каталоге | 37 | * Фильтр ajax в каталоге |
36 | */ | 38 | */ |
37 | public function catalog_ajax_filter(Request $request) { | 39 | public function catalog_ajax_filter(Request $request) { |
38 | $Res = Array(); | 40 | $Res = Array(); |
39 | if (!empty($request->area)) { | 41 | if (!empty($request->area)) { |
40 | $area_table = Area::where('id', '=', $request->area)->get(); | 42 | $area_table = Area::where('id', '=', $request->area)->get(); |
41 | $Res[] = $area_table[0]->name_area; | 43 | $Res[] = $area_table[0]->name_area; |
42 | } else { | 44 | } else { |
43 | $Res[] = "Все объекты"; | 45 | $Res[] = "Все объекты"; |
44 | } | 46 | } |
45 | 47 | ||
46 | if (!empty($request->type_area)) { | 48 | if (!empty($request->type_area)) { |
47 | $type_area_table = type_area::where('id', '=', $request->type_area)->get(); | 49 | $type_area_table = type_area::where('id', '=', $request->type_area)->get(); |
48 | $Res[] = $type_area_table[0]->name_type; | 50 | $Res[] = $type_area_table[0]->name_type; |
49 | } else { | 51 | } else { |
50 | $Res[] = "Тип недвижимости"; | 52 | $Res[] = "Тип недвижимости"; |
51 | } | 53 | } |
52 | 54 | ||
53 | if (!empty($request->format_area)) { | 55 | if (!empty($request->format_area)) { |
54 | $format_area_table = format_area::where('id', '=', $request->format_area)->get(); | 56 | $format_area_table = format_area::where('id', '=', $request->format_area)->get(); |
55 | $Res[] = $format_area_table[0]->name_format; | 57 | $Res[] = $format_area_table[0]->name_format; |
56 | } else { | 58 | } else { |
57 | $Res[] = "Формат недвижимости"; | 59 | $Res[] = "Формат недвижимости"; |
58 | } | 60 | } |
59 | 61 | ||
60 | return json_encode($Res); | 62 | return json_encode($Res); |
61 | } | 63 | } |
62 | 64 | ||
63 | /* | 65 | /* |
64 | * Страница ЖК | 66 | * Страница ЖК |
65 | */ | 67 | */ |
66 | public function Complex(Area $area, Request $request) { | 68 | public function Complex(Area $area, Request $request) { |
67 | //////////раздел аренда | 69 | //////////раздел аренда |
68 | $house_arenda = House::with('areas')-> | 70 | $house_arenda = House::with('areas')-> |
69 | where('area_id', '=', $area->id)-> | 71 | where('area_id', '=', $area->id)-> |
70 | where('format_house', '=', 'Аренда'); | 72 | where('format_house', '=', 'Аренда'); |
71 | 73 | ||
72 | if ($request->view == 'arenda') { | 74 | if ($request->view == 'arenda') { |
73 | switch ($request->sort_price) { | 75 | switch ($request->sort_price) { |
74 | case 1: $house_arenda = $house_arenda->orderBy('price');break; | 76 | case 1: $house_arenda = $house_arenda->orderBy('price');break; |
75 | case 2: $house_arenda = $house_arenda->orderByDesc('price');break; | 77 | case 2: $house_arenda = $house_arenda->orderByDesc('price');break; |
76 | } | 78 | } |
77 | switch ($request->sort_new) { | 79 | switch ($request->sort_new) { |
78 | case 1: $house_arenda = $house_arenda->orderByDesc('created_at');break; | 80 | case 1: $house_arenda = $house_arenda->orderByDesc('created_at');break; |
79 | case 2: $house_arenda = $house_arenda->orderBy('created_at');break; | 81 | case 2: $house_arenda = $house_arenda->orderBy('created_at');break; |
80 | } | 82 | } |
81 | switch ($request->sort_area) { | 83 | switch ($request->sort_area) { |
82 | case 1: $house_arenda = $house_arenda->orderByDesc('area')->get();break; | 84 | case 1: $house_arenda = $house_arenda->orderByDesc('area')->get();break; |
83 | case 2: $house_arenda = $house_arenda->orderBy('area')->get();break; | 85 | case 2: $house_arenda = $house_arenda->orderBy('area')->get();break; |
84 | } | 86 | } |
85 | } else { | 87 | } else { |
86 | $house_arenda = $house_arenda->orderBy('price')-> | 88 | $house_arenda = $house_arenda->orderBy('price')-> |
87 | orderByDesc('created_at')-> | 89 | orderByDesc('created_at')-> |
88 | orderByDesc('area')->get(); | 90 | orderByDesc('area')->get(); |
89 | } | 91 | } |
90 | 92 | ||
91 | ////////раздел продажа | 93 | ////////раздел продажа |
92 | $house_prodaja = House::with('areas')-> | 94 | $house_prodaja = House::with('areas')-> |
93 | where('area_id', '=', $area->id)-> | 95 | where('area_id', '=', $area->id)-> |
94 | where('format_house', '=', 'Продажа'); | 96 | where('format_house', '=', 'Продажа'); |
95 | 97 | ||
96 | if ($request->view == 'prodaja') { | 98 | if ($request->view == 'prodaja') { |
97 | switch ($request->sort_price) { | 99 | switch ($request->sort_price) { |
98 | case 1: $house_prodaja = $house_prodaja->orderBy('price');break; | 100 | case 1: $house_prodaja = $house_prodaja->orderBy('price');break; |
99 | case 2: $house_prodaja = $house_prodaja->orderByDesc('price');break; | 101 | case 2: $house_prodaja = $house_prodaja->orderByDesc('price');break; |
100 | } | 102 | } |
101 | switch ($request->sort_new) { | 103 | switch ($request->sort_new) { |
102 | case 1: $house_prodaja = $house_prodaja->orderByDesc('created_at');break; | 104 | case 1: $house_prodaja = $house_prodaja->orderByDesc('created_at');break; |
103 | case 2: $house_prodaja = $house_prodaja->orderBy('created_at');break; | 105 | case 2: $house_prodaja = $house_prodaja->orderBy('created_at');break; |
104 | } | 106 | } |
105 | switch ($request->sort_area) { | 107 | switch ($request->sort_area) { |
106 | case 1: $house_prodaja = $house_prodaja->orderByDesc('area')->get();break; | 108 | case 1: $house_prodaja = $house_prodaja->orderByDesc('area')->get();break; |
107 | case 2: $house_prodaja = $house_prodaja->orderBy('area')->get();break; | 109 | case 2: $house_prodaja = $house_prodaja->orderBy('area')->get();break; |
108 | } | 110 | } |
109 | } else { | 111 | } else { |
110 | $house_prodaja = $house_prodaja->orderBy('price')-> | 112 | $house_prodaja = $house_prodaja->orderBy('price')-> |
111 | orderByDesc('created_at')-> | 113 | orderByDesc('created_at')-> |
112 | orderByDesc('area')->get(); | 114 | orderByDesc('area')->get(); |
113 | } | 115 | } |
114 | 116 | ||
115 | //////////////// Раздел бизнеса | 117 | //////////////// Раздел бизнеса |
116 | $house_bissnes = House::with('areas')-> | 118 | $house_bissnes = House::with('areas')-> |
117 | where('area_id', '=', $area->id)-> | 119 | where('area_id', '=', $area->id)-> |
118 | where('format_house', '=', 'Бизнес'); | 120 | where('format_house', '=', 'Бизнес'); |
119 | //orderByDesc('created_at')->get(); | 121 | //orderByDesc('created_at')->get(); |
120 | 122 | ||
121 | if ($request->view == 'bissnes') { | 123 | if ($request->view == 'bissnes') { |
122 | switch ($request->sort_price) { | 124 | switch ($request->sort_price) { |
123 | case 1: $house_bissnes = $house_bissnes->orderBy('price');break; | 125 | case 1: $house_bissnes = $house_bissnes->orderBy('price');break; |
124 | case 2: $house_bissnes = $house_bissnes->orderByDesc('price');break; | 126 | case 2: $house_bissnes = $house_bissnes->orderByDesc('price');break; |
125 | } | 127 | } |
126 | switch ($request->sort_new) { | 128 | switch ($request->sort_new) { |
127 | case 1: $house_bissnes = $house_bissnes->orderByDesc('created_at');break; | 129 | case 1: $house_bissnes = $house_bissnes->orderByDesc('created_at');break; |
128 | case 2: $house_bissnes = $house_bissnes->orderBy('created_at');break; | 130 | case 2: $house_bissnes = $house_bissnes->orderBy('created_at');break; |
129 | } | 131 | } |
130 | switch ($request->sort_area) { | 132 | switch ($request->sort_area) { |
131 | case 1: $house_bissnes = $house_bissnes->orderByDesc('area')->get();break; | 133 | case 1: $house_bissnes = $house_bissnes->orderByDesc('area')->get();break; |
132 | case 2: $house_bissnes = $house_bissnes->orderBy('area')->get();break; | 134 | case 2: $house_bissnes = $house_bissnes->orderBy('area')->get();break; |
133 | } | 135 | } |
134 | } else { | 136 | } else { |
135 | $house_bissnes = $house_bissnes->orderBy('price')-> | 137 | $house_bissnes = $house_bissnes->orderBy('price')-> |
136 | orderByDesc('created_at')-> | 138 | orderByDesc('created_at')-> |
137 | orderByDesc('area')->get(); | 139 | orderByDesc('area')->get(); |
138 | } | 140 | } |
139 | 141 | ||
140 | //////////раздел арендованные | 142 | //////////раздел арендованные |
141 | $house_arendovannie = House::with('areas')-> | 143 | $house_arendovannie = House::with('areas')-> |
142 | where('area_id', '=', $area->id)-> | 144 | where('area_id', '=', $area->id)-> |
143 | where('format_house', '=', 'Арендованные'); | 145 | where('format_house', '=', 'Арендованные'); |
144 | //orderByDesc('created_at')->get(); | 146 | //orderByDesc('created_at')->get(); |
145 | 147 | ||
146 | if ($request->view == 'arendovannie') { | 148 | if ($request->view == 'arendovannie') { |
147 | switch ($request->sort_price) { | 149 | switch ($request->sort_price) { |
148 | case 1: $house_arendovannie = $house_arendovannie->orderBy('price');break; | 150 | case 1: $house_arendovannie = $house_arendovannie->orderBy('price');break; |
149 | case 2: $house_arendovannie = $house_arendovannie->orderByDesc('price');break; | 151 | case 2: $house_arendovannie = $house_arendovannie->orderByDesc('price');break; |
150 | } | 152 | } |
151 | switch ($request->sort_new) { | 153 | switch ($request->sort_new) { |
152 | case 1: $house_arendovannie = $house_arendovannie->orderByDesc('created_at');break; | 154 | case 1: $house_arendovannie = $house_arendovannie->orderByDesc('created_at');break; |
153 | case 2: $house_arendovannie = $house_arendovannie->orderBy('created_at');break; | 155 | case 2: $house_arendovannie = $house_arendovannie->orderBy('created_at');break; |
154 | } | 156 | } |
155 | switch ($request->sort_area) { | 157 | switch ($request->sort_area) { |
156 | case 1: $house_arendovannie = $house_arendovannie->orderByDesc('area')->get();break; | 158 | case 1: $house_arendovannie = $house_arendovannie->orderByDesc('area')->get();break; |
157 | case 2: $house_arendovannie = $house_arendovannie->orderBy('area')->get();break; | 159 | case 2: $house_arendovannie = $house_arendovannie->orderBy('area')->get();break; |
158 | } | 160 | } |
159 | } else { | 161 | } else { |
160 | $house_arendovannie = $house_arendovannie->orderBy('price')-> | 162 | $house_arendovannie = $house_arendovannie->orderBy('price')-> |
161 | orderByDesc('created_at')-> | 163 | orderByDesc('created_at')-> |
162 | orderByDesc('area')->get(); | 164 | orderByDesc('area')->get(); |
163 | } | 165 | } |
164 | 166 | ||
165 | if ($request->ajax()) { | 167 | if ($request->ajax()) { |
166 | switch($request->view) { | 168 | switch($request->view) { |
167 | case 'arenda': return view('ajax.complex.arenda', compact('house_arenda')); break; | 169 | case 'arenda': return view('ajax.complex.arenda', compact('house_arenda')); break; |
168 | case 'prodaja': return view('ajax.complex.prodaja', compact('house_prodaja'));break; | 170 | case 'prodaja': return view('ajax.complex.prodaja', compact('house_prodaja'));break; |
169 | case 'bissnes': return view('ajax.complex.bissnes', compact('house_bissnes')); break; | 171 | case 'bissnes': return view('ajax.complex.bissnes', compact('house_bissnes')); break; |
170 | case 'arendovannie': return view('ajax.complex.arendovannie', compact('house_arendovannie')); break; | 172 | case 'arendovannie': return view('ajax.complex.arendovannie', compact('house_arendovannie')); break; |
171 | } | 173 | } |
172 | } | 174 | } |
173 | 175 | ||
174 | return view('complex', compact('area', | 176 | return view('complex', compact('area', |
175 | 'house_arenda', | 177 | 'house_arenda', |
176 | 'house_prodaja', | 178 | 'house_prodaja', |
177 | 'house_bissnes', | 179 | 'house_bissnes', |
178 | 'house_arendovannie')); | 180 | 'house_arendovannie')); |
179 | 181 | ||
180 | } | 182 | } |
181 | 183 | ||
182 | /* | 184 | /* |
183 | * О компании | 185 | * О компании |
184 | */ | 186 | */ |
185 | public function About(): \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Contracts\Foundation\Application | 187 | public function About(): \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Contracts\Foundation\Application |
186 | { | 188 | { |
187 | $news = News::query()->orderByDesc('created_at')->limit(8)->get(); | 189 | $news = News::query()->orderByDesc('created_at')->limit(8)->get(); |
188 | $partners = Partners::query()->limit(18)->get(); | 190 | $partners = Partners::query()->limit(18)->get(); |
189 | return view('about', compact('news', 'partners')); | 191 | return view('about', compact('news', 'partners')); |
190 | } | 192 | } |
191 | 193 | ||
192 | /* | 194 | /* |
193 | * Форма обратной связи внизу сайта | 195 | * Форма обратной связи внизу сайта |
194 | */ | 196 | */ |
195 | public function main_form(FooterFeedbackRequest $request) { | 197 | public function main_form(FooterFeedbackRequest $request) { |
196 | $RentTorg = Contact::query()->limit(1)->get(); | 198 | $RentTorg = Contact::query()->limit(1)->get(); |
197 | $MailBD = new ModelMailFeedback(); | 199 | $MailBD = new ModelMailFeedback(); |
198 | $MailBD->to = 'Администрации сайта'; | 200 | $MailBD->to = 'Администрации сайта'; |
199 | $MailBD->from = $request->TelephoneUser; | 201 | $MailBD->from = $request->TelephoneUser; |
200 | $MailBD->subject = "Пользователь <".$request->NameUser.">"; | 202 | $MailBD->subject = "Пользователь <".$request->NameUser.">"; |
201 | $MailBD->form = 'Форма в футере'; | 203 | $MailBD->form = 'Форма в футере'; |
202 | $MailBD->text = "От пользователя: ".$request->NameUser.". Заявка на лучшие предложения. Сообщение: ".$request->TextUser; | 204 | $MailBD->text = "От пользователя: ".$request->NameUser.". Заявка на лучшие предложения. Сообщение: ".$request->TextUser; |
203 | $MailBD->save(); | 205 | $MailBD->save(); |
204 | 206 | ||
205 | //return true; | 207 | //return true; |
206 | /* | 208 | /* |
207 | Mail::send('emails.feedback', ['user' => $user], | 209 | Mail::send('emails.feedback', ['user' => $user], |
208 | function ($message) use ($user) { | 210 | function ($message) use ($user) { |
209 | $message->from('sender@gmail.com', 'Sender'); | 211 | $message->from('sender@gmail.com', 'Sender'); |
210 | $message->to($user->email, $user->name)->subject('Test message'); | 212 | $message->to($user->email, $user->name)->subject('Test message'); |
211 | }); | 213 | }); |
212 | */ | 214 | */ |
213 | } | 215 | } |
214 | 216 | ||
215 | /* | 217 | /* |
216 | * Форма обратной связе в хедере | 218 | * Форма обратной связе в хедере |
217 | */ | 219 | */ |
218 | public function header_form(FooterFeedbackRequest $request) { | 220 | public function header_form(FooterFeedbackRequest $request) { |
219 | $RentTorg = Contact::query()->limit(1)->get(); | 221 | $RentTorg = Contact::query()->limit(1)->get(); |
220 | $MailBD = new ModelMailFeedback(); | 222 | $MailBD = new ModelMailFeedback(); |
221 | $MailBD->to = 'Администрации сайта'; | 223 | $MailBD->to = 'Администрации сайта'; |
222 | $MailBD->from = $request->TelephoneUser; | 224 | $MailBD->from = $request->TelephoneUser; |
223 | $MailBD->subject = "Пользователь <".$request->NameUser.">"; | 225 | $MailBD->subject = "Пользователь <".$request->NameUser.">"; |
224 | $MailBD->form = 'Форма в заголовке сайта'; | 226 | $MailBD->form = 'Форма в заголовке сайта'; |
225 | $MailBD->text = "От пользователя: ".$request->NameUser." Сообщение: Заказываю обратный звонок"; | 227 | $MailBD->text = "От пользователя: ".$request->NameUser." Сообщение: Заказываю обратный звонок"; |
226 | $MailBD->save(); | 228 | $MailBD->save(); |
227 | } | 229 | } |
228 | 230 | ||
229 | public function rec_view_form(FooterFeedbackRequest $request) { | 231 | public function rec_view_form(FooterFeedbackRequest $request) { |
230 | $RentTorg = Contact::query()->limit(1)->get(); | 232 | $RentTorg = Contact::query()->limit(1)->get(); |
231 | $MailBD = new ModelMailFeedback(); | 233 | $MailBD = new ModelMailFeedback(); |
232 | $MailBD->to = 'Администрации сайта'; | 234 | $MailBD->to = 'Администрации сайта'; |
233 | $MailBD->from = $request->TelephoneUser; | 235 | $MailBD->from = $request->TelephoneUser; |
234 | $MailBD->subject = "Пользователь <".$request->NameUser.">"; | 236 | $MailBD->subject = "Пользователь <".$request->NameUser.">"; |
235 | $MailBD->form = 'Форма записи на просмотр'; | 237 | $MailBD->form = 'Форма записи на просмотр'; |
236 | $MailBD->text = "От пользователя: ".$request->NameUser." Сообщение: Заказываю просмотр офиса"; | 238 | $MailBD->text = "От пользователя: ".$request->NameUser." Сообщение: Заказываю просмотр офиса"; |
237 | $MailBD->save(); | 239 | $MailBD->save(); |
238 | } | 240 | } |
239 | 241 | ||
240 | /* | 242 | /* |
241 | * Форма обратной связи на странице "Контакты" | 243 | * Форма обратной связи на странице "Контакты" |
242 | */ | 244 | */ |
243 | public function page_contact_form(FooterFeedbackRequest $request) { | 245 | public function page_contact_form(FooterFeedbackRequest $request) { |
244 | $RentTorg = Contact::query()->limit(1)->get(); | 246 | $RentTorg = Contact::query()->limit(1)->get(); |
245 | $MailBD = new ModelMailFeedback(); | 247 | $MailBD = new ModelMailFeedback(); |
246 | $MailBD->to = 'Администрации сайта'; | 248 | $MailBD->to = 'Администрации сайта'; |
247 | $MailBD->from = $request->TelephoneUser; | 249 | $MailBD->from = $request->TelephoneUser; |
248 | $MailBD->subject = "Пользователь <".$request->NameUser."> Компания <".$request->NameCompany.">"; | 250 | $MailBD->subject = "Пользователь <".$request->NameUser."> Компания <".$request->NameCompany.">"; |
249 | $MailBD->form = 'Форма на странице "Контакты"'; | 251 | $MailBD->form = 'Форма на странице "Контакты"'; |
250 | $MailBD->text = "От пользователя: ".$request->NameUser."Телефон: ".$request->TelephoneUser." Почта: <".$request->EmailUser."> Сообщение:".$request->TextUser; | 252 | $MailBD->text = "От пользователя: ".$request->NameUser."Телефон: ".$request->TelephoneUser." Почта: <".$request->EmailUser."> Сообщение:".$request->TextUser; |
251 | $MailBD->save(); | 253 | $MailBD->save(); |
252 | } | 254 | } |
253 | /* | 255 | /* |
254 | * Форма обратной связи по емайлу | 256 | * Форма обратной связи по емайлу |
255 | */ | 257 | */ |
256 | public function email_form(EmailRequest $request) { | 258 | public function email_form(EmailRequest $request) { |
257 | $RentTorg = Contact::query()->limit(1)->get(); | 259 | $RentTorg = Contact::query()->limit(1)->get(); |
258 | $MailBD = new ModelMailFeedback(); | 260 | $MailBD = new ModelMailFeedback(); |
259 | $MailBD->to = 'Администрации сайта'; | 261 | $MailBD->to = 'Администрации сайта'; |
260 | $MailBD->from = $request->EmailUser; | 262 | $MailBD->from = $request->EmailUser; |
261 | $MailBD->subject = "Пользователь <".$request->EmailUser.">"; | 263 | $MailBD->subject = "Пользователь <".$request->EmailUser.">"; |
262 | $MailBD->form = 'Форма обратной связи по Email'; | 264 | $MailBD->form = 'Форма обратной связи по Email'; |
263 | $MailBD->text = "От почты: ".$request->EmailUser." Сообщение: Отправить на данную почту предложения RentTorg"; | 265 | $MailBD->text = "От почты: ".$request->EmailUser." Сообщение: Отправить на данную почту предложения RentTorg"; |
264 | $MailBD->save(); | 266 | $MailBD->save(); |
265 | //dd('Email form'); | 267 | //dd('Email form'); |
266 | return redirect()->route('index'); | 268 | return redirect()->route('index'); |
267 | } | 269 | } |
268 | 270 | ||
269 | /* | 271 | /* |
270 | * Избранное | 272 | * Избранное |
271 | */ | 273 | */ |
272 | public function Favorite(Request $request) { | 274 | public function Favorite(Request $request) { |
273 | if (empty($_COOKIE['favorite_house'])) { | 275 | if (empty($_COOKIE['favorite_house'])) { |
274 | $Arr = Array(); | 276 | $Arr = Array(); |
275 | } else { | 277 | } else { |
276 | $Arr = json_decode($_COOKIE['favorite_house'], true); | 278 | $Arr = json_decode($_COOKIE['favorite_house'], true); |
277 | } | 279 | } |
278 | if (!empty($Arr) && is_array($Arr)) { | 280 | if (!empty($Arr) && is_array($Arr)) { |
279 | $houses = House::with('areas')->whereIn('id', $Arr); | 281 | $houses = House::with('areas')->whereIn('id', $Arr); |
280 | 282 | ||
281 | if (isset($request->sort_price)) { | 283 | if (isset($request->sort_price)) { |
282 | switch ($request->sort_price) { | 284 | switch ($request->sort_price) { |
283 | case 1: $houses = $houses->orderBy('price');break; | 285 | case 1: $houses = $houses->orderBy('price');break; |
284 | case 2: $houses = $houses->orderByDesc('price');break; | 286 | case 2: $houses = $houses->orderByDesc('price');break; |
285 | } | 287 | } |
286 | switch ($request->sort_new) { | 288 | switch ($request->sort_new) { |
287 | case 1: $houses = $houses->orderByDesc('created_at');break; | 289 | case 1: $houses = $houses->orderByDesc('created_at');break; |
288 | case 2: $houses = $houses->orderBy('created_at');break; | 290 | case 2: $houses = $houses->orderBy('created_at');break; |
289 | } | 291 | } |
290 | switch ($request->sort_area) { | 292 | switch ($request->sort_area) { |
291 | case 1: $houses = $houses->orderByDesc('area');break; | 293 | case 1: $houses = $houses->orderByDesc('area');break; |
292 | case 2: $houses = $houses->orderBy('area');break; | 294 | case 2: $houses = $houses->orderBy('area');break; |
293 | } | 295 | } |
294 | 296 | ||
295 | } else { | 297 | } else { |
296 | $houses = $houses->orderBy('price')-> | 298 | $houses = $houses->orderBy('price')-> |
297 | orderByDesc('created_at')-> | 299 | orderByDesc('created_at')-> |
298 | orderByDesc('area'); | 300 | orderByDesc('area'); |
299 | } | 301 | } |
300 | 302 | ||
301 | $houses = $houses->paginate(4); | 303 | $houses = $houses->paginate(4); |
302 | 304 | ||
303 | if ($request->ajax()) { | 305 | if ($request->ajax()) { |
304 | return view('ajax.complex.favorite', compact('houses')); | 306 | return view('ajax.complex.favorite', compact('houses')); |
305 | } | 307 | } |
306 | 308 | ||
307 | return view('favorite_data', compact('houses')); | 309 | return view('favorite_data', compact('houses')); |
308 | } else { | 310 | } else { |
309 | return view('favorite', compact('Arr')); | 311 | return view('favorite', compact('Arr')); |
310 | } | 312 | } |
311 | 313 | ||
312 | 314 | ||
313 | } | 315 | } |
314 | 316 | ||
315 | /* | 317 | /* |
316 | * Категории каталога Аренда/Продажа/Бизнес | 318 | * Категории каталога Аренда/Продажа/Бизнес |
317 | */ | 319 | */ |
318 | public function Category($cat, Request $request) { | 320 | public function Category($cat, Request $request) { |
319 | switch ($cat) { | 321 | switch ($cat) { |
320 | case 'arenda': | 322 | case 'arenda': |
321 | $title = "Аренда торговых помещениий"; | 323 | $title = "Аренда торговых помещениий"; |
322 | $format_house = 'Аренда'; | 324 | $format_house = 'Аренда'; |
323 | break; | 325 | break; |
324 | case 'sale': | 326 | case 'sale': |
325 | $title = "Продажа торговых помещений"; | 327 | $title = "Продажа торговых помещений"; |
326 | $format_house = 'Продажа'; | 328 | $format_house = 'Продажа'; |
327 | break; | 329 | break; |
328 | case 'bussiness': | 330 | case 'bussiness': |
329 | $title = "Арендый бизнес"; | 331 | $title = "Арендый бизнес"; |
330 | $format_house = 'Бизнес'; | 332 | $format_house = 'Бизнес'; |
331 | break; | 333 | break; |
332 | default: | 334 | default: |
333 | $title = "Аренда торговых помещениий"; | 335 | $title = "Аренда торговых помещениий"; |
334 | $format_house = 'Аренда'; | 336 | $format_house = 'Аренда'; |
335 | break; | 337 | break; |
336 | } | 338 | } |
337 | 339 | ||
338 | $houses = House::with('areas')-> | 340 | $houses = House::with('areas')-> |
339 | where('format_house', '=', $format_house); | 341 | where('format_house', '=', $format_house); |
340 | //->appends(request()->query()); | 342 | //->appends(request()->query()); |
341 | 343 | ||
342 | if (!empty($request->area)) { | 344 | if (!empty($request->area)) { |
343 | $houses = $houses->where('area_id', '=', $request->area); | 345 | $houses = $houses->where('area_id', '=', $request->area); |
344 | } | 346 | } |
345 | // условия поиска по типу недвижимости | 347 | // условия поиска по типу недвижимости |
346 | if (!empty($request->type_area)) { | 348 | if (!empty($request->type_area)) { |
347 | $houses = $houses->where('type_area_id', '=', $request->type_area); | 349 | $houses = $houses->where('type_area_id', '=', $request->type_area); |
348 | } | 350 | } |
349 | // условия поиска по формату недвижимости | 351 | // условия поиска по формату недвижимости |
350 | if (!empty($request->format_area)) { | 352 | if (!empty($request->format_area)) { |
351 | $houses = $houses->where('format_area_id', '=', $request->format_area); | 353 | $houses = $houses->where('format_area_id', '=', $request->format_area); |
352 | } | 354 | } |
353 | // условия поиска по площади - минимальная площадь | 355 | // условия поиска по площади - минимальная площадь |
354 | if (!empty($request->area_m2_min)) { | 356 | if (!empty($request->area_m2_min)) { |
355 | $houses = $houses->where('area', '>', $request->area_m2_min); | 357 | $houses = $houses->where('area', '>', $request->area_m2_min); |
356 | } | 358 | } |
357 | // условия поиска по площади - максимальная площадь | 359 | // условия поиска по площади - максимальная площадь |
358 | if (!empty($request->area_m2_max)) { | 360 | if (!empty($request->area_m2_max)) { |
359 | $houses = $houses->where('area', '<', $request->area_m2_max); | 361 | $houses = $houses->where('area', '<', $request->area_m2_max); |
360 | } | 362 | } |
361 | // условия поиска по цене - минимальная цена | 363 | // условия поиска по цене - минимальная цена |
362 | if (!empty($request->price_min)) { | 364 | if (!empty($request->price_min)) { |
363 | $houses = $houses->where('price', '>', $request->price_min); | 365 | $houses = $houses->where('price', '>', $request->price_min); |
364 | } | 366 | } |
365 | // условия поиска по цене - максимальная цена | 367 | // условия поиска по цене - максимальная цена |
366 | if (!empty($request->price_max)) { | 368 | if (!empty($request->price_max)) { |
367 | $houses = $houses->where('price', '<', $request->price_max); | 369 | $houses = $houses->where('price', '<', $request->price_max); |
368 | } | 370 | } |
369 | // условия поиска по адресу | 371 | // условия поиска по адресу |
370 | if (!empty($request->address)) { | 372 | if (!empty($request->address)) { |
371 | $houses = $houses->where('address', 'LIKE', "%".$request->address."%"); | 373 | $houses = $houses->where('address', 'LIKE', "%".$request->address."%"); |
372 | } | 374 | } |
373 | 375 | ||
374 | if (isset($request->sort_price)) { | 376 | if (isset($request->sort_price)) { |
375 | switch ($request->sort_price) { | 377 | switch ($request->sort_price) { |
376 | case 1: $houses = $houses->orderBy('price');break; | 378 | case 1: $houses = $houses->orderBy('price');break; |
377 | case 2: $houses = $houses->orderByDesc('price');break; | 379 | case 2: $houses = $houses->orderByDesc('price');break; |
378 | } | 380 | } |
379 | switch ($request->sort_new) { | 381 | switch ($request->sort_new) { |
380 | case 1: $houses = $houses->orderByDesc('created_at');break; | 382 | case 1: $houses = $houses->orderByDesc('created_at');break; |
381 | case 2: $houses = $houses->orderBy('created_at');break; | 383 | case 2: $houses = $houses->orderBy('created_at');break; |
382 | } | 384 | } |
383 | switch ($request->sort_area) { | 385 | switch ($request->sort_area) { |
384 | case 1: $houses = $houses->orderByDesc('area');break; | 386 | case 1: $houses = $houses->orderByDesc('area');break; |
385 | case 2: $houses = $houses->orderBy('area');break; | 387 | case 2: $houses = $houses->orderBy('area');break; |
386 | } | 388 | } |
387 | 389 | ||
388 | } else { | 390 | } else { |
389 | $houses = $houses->orderBy('price')-> | 391 | $houses = $houses->orderBy('price')-> |
390 | orderByDesc('created_at')-> | 392 | orderByDesc('created_at')-> |
391 | orderByDesc('area'); | 393 | orderByDesc('area'); |
392 | } | 394 | } |
393 | 395 | ||
394 | $houses = $houses->paginate(4); | 396 | $houses = $houses->paginate(4); |
395 | 397 | ||
396 | if ($request->ajax()) { | 398 | if ($request->ajax()) { |
397 | return view('ajax.complex.category', compact('houses')); | 399 | return view('ajax.complex.category', compact('houses')); |
398 | } | 400 | } |
399 | 401 | ||
400 | return view('category_catalog', compact('title', 'cat', 'houses')); | 402 | return view('category_catalog', compact('title', 'cat', 'houses')); |
401 | } | 403 | } |
402 | 404 | ||
403 | 405 | ||
404 | /* | 406 | /* |
405 | * Каталог | 407 | * Каталог |
406 | */ | 408 | */ |
407 | public function Catalog(Request $request) { | 409 | public function Catalog(Request $request) { |
408 | 410 | ||
409 | //////////раздел аренда///////////////////////////////////////////////////////////////// | 411 | //////////раздел аренда///////////////////////////////////////////////////////////////// |
410 | $house_arenda = House::with('areas')-> | 412 | $house_arenda = House::with('areas')-> |
411 | where('format_house', '=', 'Аренда'); | 413 | where('format_house', '=', 'Аренда'); |
412 | // условия поиска по объектам комплексов | 414 | // условия поиска по объектам комплексов |
413 | if (!empty($request->area)) { | 415 | if (!empty($request->area)) { |
414 | $house_arenda = $house_arenda->where('area_id', '=', $request->area); | 416 | $house_arenda = $house_arenda->where('area_id', '=', $request->area); |
415 | } | 417 | } |
416 | // условия поиска по типу недвижимости | 418 | // условия поиска по типу недвижимости |
417 | if (!empty($request->type_area)) { | 419 | if (!empty($request->type_area)) { |
418 | $house_arenda = $house_arenda->where('type_area_id', '=', $request->type_area); | 420 | $house_arenda = $house_arenda->where('type_area_id', '=', $request->type_area); |
419 | } | 421 | } |
420 | // условия поиска по формату недвижимости | 422 | // условия поиска по формату недвижимости |
421 | if (!empty($request->format_area)) { | 423 | if (!empty($request->format_area)) { |
422 | $house_arenda = $house_arenda->where('format_area_id', '=', $request->format_area); | 424 | $house_arenda = $house_arenda->where('format_area_id', '=', $request->format_area); |
423 | } | 425 | } |
424 | // условия поиска по площади - минимальная площадь | 426 | // условия поиска по площади - минимальная площадь |
425 | if (!empty($request->area_m2_min)) { | 427 | if (!empty($request->area_m2_min)) { |
426 | $house_arenda = $house_arenda->where('area', '>', $request->area_m2_min); | 428 | $house_arenda = $house_arenda->where('area', '>', $request->area_m2_min); |
427 | } | 429 | } |
428 | // условия поиска по площади - максимальная площадь | 430 | // условия поиска по площади - максимальная площадь |
429 | if (!empty($request->area_m2_max)) { | 431 | if (!empty($request->area_m2_max)) { |
430 | $house_arenda = $house_arenda->where('area', '<', $request->area_m2_max); | 432 | $house_arenda = $house_arenda->where('area', '<', $request->area_m2_max); |
431 | } | 433 | } |
432 | // условия поиска по цене - минимальная цена | 434 | // условия поиска по цене - минимальная цена |
433 | if (!empty($request->price_min)) { | 435 | if (!empty($request->price_min)) { |
434 | $house_arenda = $house_arenda->where('price', '>', $request->price_min); | 436 | $house_arenda = $house_arenda->where('price', '>', $request->price_min); |
435 | } | 437 | } |
436 | // условия поиска по цене - максимальная цена | 438 | // условия поиска по цене - максимальная цена |
437 | if (!empty($request->price_max)) { | 439 | if (!empty($request->price_max)) { |
438 | $house_arenda = $house_arenda->where('price', '<', $request->price_max); | 440 | $house_arenda = $house_arenda->where('price', '<', $request->price_max); |
439 | } | 441 | } |
440 | // условия поиска по адресу | 442 | // условия поиска по адресу |
441 | if (!empty($request->address)) { | 443 | if (!empty($request->address)) { |
442 | $house_arenda = $house_arenda->where('address', 'LIKE', "%".$request->address."%"); | 444 | $house_arenda = $house_arenda->where('address', 'LIKE', "%".$request->address."%"); |
443 | } | 445 | } |
444 | 446 | ||
445 | if ($request->view == 'arenda') { | 447 | if ($request->view == 'arenda') { |
446 | switch ($request->sort_price) { | 448 | switch ($request->sort_price) { |
447 | case 1: $house_arenda = $house_arenda->orderBy('price');break; | 449 | case 1: $house_arenda = $house_arenda->orderBy('price');break; |
448 | case 2: $house_arenda = $house_arenda->orderByDesc('price');break; | 450 | case 2: $house_arenda = $house_arenda->orderByDesc('price');break; |
449 | } | 451 | } |
450 | switch ($request->sort_new) { | 452 | switch ($request->sort_new) { |
451 | case 1: $house_arenda = $house_arenda->orderByDesc('created_at');break; | 453 | case 1: $house_arenda = $house_arenda->orderByDesc('created_at');break; |
452 | case 2: $house_arenda = $house_arenda->orderBy('created_at');break; | 454 | case 2: $house_arenda = $house_arenda->orderBy('created_at');break; |
453 | } | 455 | } |
454 | switch ($request->sort_area) { | 456 | switch ($request->sort_area) { |
455 | case 1: $house_arenda = $house_arenda->orderByDesc('area')->get();break; | 457 | case 1: $house_arenda = $house_arenda->orderByDesc('area')->get();break; |
456 | case 2: $house_arenda = $house_arenda->orderBy('area')->get();break; | 458 | case 2: $house_arenda = $house_arenda->orderBy('area')->get();break; |
457 | } | 459 | } |
458 | } else { | 460 | } else { |
459 | $house_arenda = $house_arenda->orderBy('price')-> | 461 | $house_arenda = $house_arenda->orderBy('price')-> |
460 | orderByDesc('created_at')-> | 462 | orderByDesc('created_at')-> |
461 | orderByDesc('area')->get(); | 463 | orderByDesc('area')->get(); |
462 | } | 464 | } |
463 | 465 | ||
464 | ////////раздел продажа////////////////////////////////////////////////////////////////// | 466 | ////////раздел продажа////////////////////////////////////////////////////////////////// |
465 | $house_prodaja = House::with('areas')-> | 467 | $house_prodaja = House::with('areas')-> |
466 | where('format_house', '=', 'Продажа'); | 468 | where('format_house', '=', 'Продажа'); |
467 | 469 | ||
468 | // условия поиска по объектам комплексов | 470 | // условия поиска по объектам комплексов |
469 | if (!empty($request->area)) { | 471 | if (!empty($request->area)) { |
470 | $house_prodaja = $house_prodaja->where('area_id', '=', $request->area); | 472 | $house_prodaja = $house_prodaja->where('area_id', '=', $request->area); |
471 | } | 473 | } |
472 | // условия поиска по типу недвижимости | 474 | // условия поиска по типу недвижимости |
473 | if (!empty($request->type_area)) { | 475 | if (!empty($request->type_area)) { |
474 | $house_prodaja = $house_prodaja->where('type_area_id', '=', $request->type_area); | 476 | $house_prodaja = $house_prodaja->where('type_area_id', '=', $request->type_area); |
475 | } | 477 | } |
476 | // условия поиска по формату недвижимости | 478 | // условия поиска по формату недвижимости |
477 | if (!empty($request->format_area)) { | 479 | if (!empty($request->format_area)) { |
478 | $house_prodaja = $house_prodaja->where('format_area_id', '=', $request->format_area); | 480 | $house_prodaja = $house_prodaja->where('format_area_id', '=', $request->format_area); |
479 | } | 481 | } |
480 | // условия поиска по площади - минимальная площадь | 482 | // условия поиска по площади - минимальная площадь |
481 | if (!empty($request->area_m2_min)) { | 483 | if (!empty($request->area_m2_min)) { |
482 | $house_prodaja = $house_prodaja->where('area', '>', $request->area_m2_min); | 484 | $house_prodaja = $house_prodaja->where('area', '>', $request->area_m2_min); |
483 | } | 485 | } |
484 | // условия поиска по площади - максимальная площадь | 486 | // условия поиска по площади - максимальная площадь |
485 | if (!empty($request->area_m2_max)) { | 487 | if (!empty($request->area_m2_max)) { |
486 | $house_prodaja = $house_prodaja->where('area', '<', $request->area_m2_max); | 488 | $house_prodaja = $house_prodaja->where('area', '<', $request->area_m2_max); |
487 | } | 489 | } |
488 | // условия поиска по цене - минимальная цена | 490 | // условия поиска по цене - минимальная цена |
489 | if (!empty($request->price_min)) { | 491 | if (!empty($request->price_min)) { |
490 | $house_prodaja = $house_prodaja->where('price', '>', $request->price_min); | 492 | $house_prodaja = $house_prodaja->where('price', '>', $request->price_min); |
491 | } | 493 | } |
492 | // условия поиска по цене - максимальная цена | 494 | // условия поиска по цене - максимальная цена |
493 | if (!empty($request->price_max)) { | 495 | if (!empty($request->price_max)) { |
494 | $house_prodaja = $house_prodaja->where('price', '<', $request->price_max); | 496 | $house_prodaja = $house_prodaja->where('price', '<', $request->price_max); |
495 | } | 497 | } |
496 | // условия поиска по адресу | 498 | // условия поиска по адресу |
497 | if (!empty($request->address)) { | 499 | if (!empty($request->address)) { |
498 | $house_prodaja = $house_prodaja->where('address', 'LIKE', "%".$request->address."%"); | 500 | $house_prodaja = $house_prodaja->where('address', 'LIKE', "%".$request->address."%"); |
499 | } | 501 | } |
500 | 502 | ||
501 | if ($request->view == 'prodaja') { | 503 | if ($request->view == 'prodaja') { |
502 | switch ($request->sort_price) { | 504 | switch ($request->sort_price) { |
503 | case 1: $house_prodaja = $house_prodaja->orderBy('price');break; | 505 | case 1: $house_prodaja = $house_prodaja->orderBy('price');break; |
504 | case 2: $house_prodaja = $house_prodaja->orderByDesc('price');break; | 506 | case 2: $house_prodaja = $house_prodaja->orderByDesc('price');break; |
505 | } | 507 | } |
506 | switch ($request->sort_new) { | 508 | switch ($request->sort_new) { |
507 | case 1: $house_prodaja = $house_prodaja->orderByDesc('created_at');break; | 509 | case 1: $house_prodaja = $house_prodaja->orderByDesc('created_at');break; |
508 | case 2: $house_prodaja = $house_prodaja->orderBy('created_at');break; | 510 | case 2: $house_prodaja = $house_prodaja->orderBy('created_at');break; |
509 | } | 511 | } |
510 | switch ($request->sort_area) { | 512 | switch ($request->sort_area) { |
511 | case 1: $house_prodaja = $house_prodaja->orderByDesc('area')->get();break; | 513 | case 1: $house_prodaja = $house_prodaja->orderByDesc('area')->get();break; |
512 | case 2: $house_prodaja = $house_prodaja->orderBy('area')->get();break; | 514 | case 2: $house_prodaja = $house_prodaja->orderBy('area')->get();break; |
513 | } | 515 | } |
514 | } else { | 516 | } else { |
515 | $house_prodaja = $house_prodaja->orderBy('price')-> | 517 | $house_prodaja = $house_prodaja->orderBy('price')-> |
516 | orderByDesc('created_at')-> | 518 | orderByDesc('created_at')-> |
517 | orderByDesc('area')->get(); | 519 | orderByDesc('area')->get(); |
518 | } | 520 | } |
519 | 521 | ||
520 | //////////////// Раздел бизнеса///////////////////////////////////////////////////////// | 522 | //////////////// Раздел бизнеса///////////////////////////////////////////////////////// |
521 | $house_bissnes = House::with('areas')-> | 523 | $house_bissnes = House::with('areas')-> |
522 | where('format_house', '=', 'Бизнес'); | 524 | where('format_house', '=', 'Бизнес'); |
523 | //orderByDesc('created_at')->get(); | 525 | //orderByDesc('created_at')->get(); |
524 | 526 | ||
525 | // условия поиска по объектам комплексов | 527 | // условия поиска по объектам комплексов |
526 | if (!empty($request->area)) { | 528 | if (!empty($request->area)) { |
527 | $house_bissnes = $house_bissnes->where('area_id', '=', $request->area); | 529 | $house_bissnes = $house_bissnes->where('area_id', '=', $request->area); |
528 | } | 530 | } |
529 | // условия поиска по типу недвижимости | 531 | // условия поиска по типу недвижимости |
530 | if (!empty($request->type_area)) { | 532 | if (!empty($request->type_area)) { |
531 | $house_bissnes = $house_bissnes->where('type_area_id', '=', $request->type_area); | 533 | $house_bissnes = $house_bissnes->where('type_area_id', '=', $request->type_area); |
532 | } | 534 | } |
533 | // условия поиска по формату недвижимости | 535 | // условия поиска по формату недвижимости |
534 | if (!empty($request->format_area)) { | 536 | if (!empty($request->format_area)) { |
535 | $house_bissnes = $house_bissnes->where('format_area_id', '=', $request->format_area); | 537 | $house_bissnes = $house_bissnes->where('format_area_id', '=', $request->format_area); |
536 | } | 538 | } |
537 | // условия поиска по площади - минимальная площадь | 539 | // условия поиска по площади - минимальная площадь |
538 | if (!empty($request->area_m2_min)) { | 540 | if (!empty($request->area_m2_min)) { |
539 | $house_bissnes = $house_bissnes->where('area', '>', $request->area_m2_min); | 541 | $house_bissnes = $house_bissnes->where('area', '>', $request->area_m2_min); |
540 | } | 542 | } |
541 | // условия поиска по площади - максимальная площадь | 543 | // условия поиска по площади - максимальная площадь |
542 | if (!empty($request->area_m2_max)) { | 544 | if (!empty($request->area_m2_max)) { |
543 | $house_bissnes = $house_bissnes->where('area', '<', $request->area_m2_max); | 545 | $house_bissnes = $house_bissnes->where('area', '<', $request->area_m2_max); |
544 | } | 546 | } |
545 | // условия поиска по цене - минимальная цена | 547 | // условия поиска по цене - минимальная цена |
546 | if (!empty($request->price_min)) { | 548 | if (!empty($request->price_min)) { |
547 | $house_bissnes = $house_bissnes->where('price', '>', $request->price_min); | 549 | $house_bissnes = $house_bissnes->where('price', '>', $request->price_min); |
548 | } | 550 | } |
549 | // условия поиска по цене - максимальная цена | 551 | // условия поиска по цене - максимальная цена |
550 | if (!empty($request->price_max)) { | 552 | if (!empty($request->price_max)) { |
551 | $house_bissnes = $house_bissnes->where('price', '<', $request->price_max); | 553 | $house_bissnes = $house_bissnes->where('price', '<', $request->price_max); |
552 | } | 554 | } |
553 | // условия поиска по адресу | 555 | // условия поиска по адресу |
554 | if (!empty($request->address)) { | 556 | if (!empty($request->address)) { |
555 | $house_bissnes = $house_bissnes->where('address', 'LIKE', "%".$request->address."%"); | 557 | $house_bissnes = $house_bissnes->where('address', 'LIKE', "%".$request->address."%"); |
556 | } | 558 | } |
557 | 559 | ||
558 | if ($request->view == 'bissnes') { | 560 | if ($request->view == 'bissnes') { |
559 | switch ($request->sort_price) { | 561 | switch ($request->sort_price) { |
560 | case 1: $house_bissnes = $house_bissnes->orderBy('price');break; | 562 | case 1: $house_bissnes = $house_bissnes->orderBy('price');break; |
561 | case 2: $house_bissnes = $house_bissnes->orderByDesc('price');break; | 563 | case 2: $house_bissnes = $house_bissnes->orderByDesc('price');break; |
562 | } | 564 | } |
563 | switch ($request->sort_new) { | 565 | switch ($request->sort_new) { |
564 | case 1: $house_bissnes = $house_bissnes->orderByDesc('created_at');break; | 566 | case 1: $house_bissnes = $house_bissnes->orderByDesc('created_at');break; |
565 | case 2: $house_bissnes = $house_bissnes->orderBy('created_at');break; | 567 | case 2: $house_bissnes = $house_bissnes->orderBy('created_at');break; |
566 | } | 568 | } |
567 | switch ($request->sort_area) { | 569 | switch ($request->sort_area) { |
568 | case 1: $house_bissnes = $house_bissnes->orderByDesc('area')->get();break; | 570 | case 1: $house_bissnes = $house_bissnes->orderByDesc('area')->get();break; |
569 | case 2: $house_bissnes = $house_bissnes->orderBy('area')->get();break; | 571 | case 2: $house_bissnes = $house_bissnes->orderBy('area')->get();break; |
570 | } | 572 | } |
571 | } else { | 573 | } else { |
572 | $house_bissnes = $house_bissnes->orderBy('price')-> | 574 | $house_bissnes = $house_bissnes->orderBy('price')-> |
573 | orderByDesc('created_at')-> | 575 | orderByDesc('created_at')-> |
574 | orderByDesc('area')->get(); | 576 | orderByDesc('area')->get(); |
575 | } | 577 | } |
576 | 578 | ||
577 | //////////раздел арендованные////////////////////////////////////////////////////////// | 579 | //////////раздел арендованные////////////////////////////////////////////////////////// |
578 | $house_arendovannie = House::with('areas')-> | 580 | $house_arendovannie = House::with('areas')-> |
579 | where('format_house', '=', 'Арендованные'); | 581 | where('format_house', '=', 'Арендованные'); |
580 | //orderByDesc('created_at')->get(); | 582 | //orderByDesc('created_at')->get(); |
581 | 583 | ||
582 | // условия поиска по объектам комплексов | 584 | // условия поиска по объектам комплексов |
583 | if (!empty($request->area)) { | 585 | if (!empty($request->area)) { |
584 | $house_arendovannie = $house_arendovannie->where('area_id', '=', $request->area); | 586 | $house_arendovannie = $house_arendovannie->where('area_id', '=', $request->area); |
585 | } | 587 | } |
586 | // условия поиска по типу недвижимости | 588 | // условия поиска по типу недвижимости |
587 | if (!empty($request->type_area)) { | 589 | if (!empty($request->type_area)) { |
588 | $house_arendovannie = $house_arendovannie->where('type_area_id', '=', $request->type_area); | 590 | $house_arendovannie = $house_arendovannie->where('type_area_id', '=', $request->type_area); |
589 | } | 591 | } |
590 | // условия поиска по формату недвижимости | 592 | // условия поиска по формату недвижимости |
591 | if (!empty($request->format_area)) { | 593 | if (!empty($request->format_area)) { |
592 | $house_arendovannie = $house_arendovannie->where('format_area_id', '=', $request->format_area); | 594 | $house_arendovannie = $house_arendovannie->where('format_area_id', '=', $request->format_area); |
593 | } | 595 | } |
594 | // условия поиска по площади - минимальная площадь | 596 | // условия поиска по площади - минимальная площадь |
595 | if (!empty($request->area_m2_min)) { | 597 | if (!empty($request->area_m2_min)) { |
596 | $house_arendovannie = $house_arendovannie->where('area', '>', $request->area_m2_min); | 598 | $house_arendovannie = $house_arendovannie->where('area', '>', $request->area_m2_min); |
597 | } | 599 | } |
598 | // условия поиска по площади - максимальная площадь | 600 | // условия поиска по площади - максимальная площадь |
599 | if (!empty($request->area_m2_max)) { | 601 | if (!empty($request->area_m2_max)) { |
600 | $house_arendovannie = $house_arendovannie->where('area', '<', $request->area_m2_max); | 602 | $house_arendovannie = $house_arendovannie->where('area', '<', $request->area_m2_max); |
601 | } | 603 | } |
602 | // условия поиска по цене - минимальная цена | 604 | // условия поиска по цене - минимальная цена |
603 | if (!empty($request->price_min)) { | 605 | if (!empty($request->price_min)) { |
604 | $house_arendovannie = $house_arendovannie->where('price', '>', $request->price_min); | 606 | $house_arendovannie = $house_arendovannie->where('price', '>', $request->price_min); |
605 | } | 607 | } |
606 | // условия поиска по цене - максимальная цена | 608 | // условия поиска по цене - максимальная цена |
607 | if (!empty($request->price_max)) { | 609 | if (!empty($request->price_max)) { |
608 | $house_arendovannie = $house_arendovannie->where('price', '<', $request->price_max); | 610 | $house_arendovannie = $house_arendovannie->where('price', '<', $request->price_max); |
609 | } | 611 | } |
610 | // условия поиска по адресу | 612 | // условия поиска по адресу |
611 | if (!empty($request->address)) { | 613 | if (!empty($request->address)) { |
612 | $house_arendovannie = $house_arendovannie->where('address', 'LIKE', "%".$request->address."%"); | 614 | $house_arendovannie = $house_arendovannie->where('address', 'LIKE', "%".$request->address."%"); |
613 | } | 615 | } |
614 | 616 | ||
615 | if ($request->view == 'arendovannie') { | 617 | if ($request->view == 'arendovannie') { |
616 | switch ($request->sort_price) { | 618 | switch ($request->sort_price) { |
617 | case 1: $house_arendovannie = $house_arendovannie->orderBy('price');break; | 619 | case 1: $house_arendovannie = $house_arendovannie->orderBy('price');break; |
618 | case 2: $house_arendovannie = $house_arendovannie->orderByDesc('price');break; | 620 | case 2: $house_arendovannie = $house_arendovannie->orderByDesc('price');break; |
619 | } | 621 | } |
620 | switch ($request->sort_new) { | 622 | switch ($request->sort_new) { |
621 | case 1: $house_arendovannie = $house_arendovannie->orderByDesc('created_at');break; | 623 | case 1: $house_arendovannie = $house_arendovannie->orderByDesc('created_at');break; |
622 | case 2: $house_arendovannie = $house_arendovannie->orderBy('created_at');break; | 624 | case 2: $house_arendovannie = $house_arendovannie->orderBy('created_at');break; |
623 | } | 625 | } |
624 | switch ($request->sort_area) { | 626 | switch ($request->sort_area) { |
625 | case 1: $house_arendovannie = $house_arendovannie->orderByDesc('area')->get();break; | 627 | case 1: $house_arendovannie = $house_arendovannie->orderByDesc('area')->get();break; |
626 | case 2: $house_arendovannie = $house_arendovannie->orderBy('area')->get();break; | 628 | case 2: $house_arendovannie = $house_arendovannie->orderBy('area')->get();break; |
627 | } | 629 | } |
628 | } else { | 630 | } else { |
629 | $house_arendovannie = $house_arendovannie->orderBy('price')-> | 631 | $house_arendovannie = $house_arendovannie->orderBy('price')-> |
630 | orderByDesc('created_at')-> | 632 | orderByDesc('created_at')-> |
631 | orderByDesc('area')->get(); | 633 | orderByDesc('area')->get(); |
632 | } | 634 | } |
633 | 635 | ||
634 | if ($request->ajax()) { | 636 | if ($request->ajax()) { |
635 | switch($request->view) { | 637 | switch($request->view) { |
636 | case 'arenda': return view('ajax.complex.arenda', compact('house_arenda')); break; | 638 | case 'arenda': return view('ajax.complex.arenda', compact('house_arenda')); break; |
637 | case 'prodaja': return view('ajax.complex.prodaja', compact('house_prodaja'));break; | 639 | case 'prodaja': return view('ajax.complex.prodaja', compact('house_prodaja'));break; |
638 | case 'bissnes': return view('ajax.complex.bissnes', compact('house_bissnes')); break; | 640 | case 'bissnes': return view('ajax.complex.bissnes', compact('house_bissnes')); break; |
639 | case 'arendovannie': return view('ajax.complex.arendovannie', compact('house_arendovannie')); break; | 641 | case 'arendovannie': return view('ajax.complex.arendovannie', compact('house_arendovannie')); break; |
640 | } | 642 | } |
641 | } | 643 | } |
642 | if (session('message') == 'Искать') { | 644 | if (session('message') == 'Искать') { |
643 | session()->flash('message', 'Сброс'); | 645 | session()->flash('message', 'Сброс'); |
644 | } else { | 646 | } else { |
645 | session()->flash('message', 'Искать'); | 647 | session()->flash('message', 'Искать'); |
646 | } | 648 | } |
647 | 649 | ||
648 | if (empty($request)) { | 650 | if (empty($request)) { |
649 | session()->flash('message', 'Искать'); | 651 | session()->flash('message', 'Искать'); |
650 | } | 652 | } |
651 | 653 | ||
652 | return view('catalog', compact( | 654 | return view('catalog', compact( |
653 | 'house_arenda', | 655 | 'house_arenda', |
654 | 'house_prodaja', | 656 | 'house_prodaja', |
655 | 'house_bissnes', | 657 | 'house_bissnes', |
656 | 'house_arendovannie' | 658 | 'house_arendovannie' |
657 | )); | 659 | )); |
658 | 660 | ||
659 | 661 | ||
660 | } | 662 | } |
661 | 663 | ||
662 | /* | 664 | /* |
663 | * Новости | 665 | * Новости |
664 | */ | 666 | */ |
665 | public function News() { | 667 | public function News() { |
666 | //$news = News::orderByDesc('created_at')->limit(1)->paginate(); | 668 | //$news = News::orderByDesc('created_at')->limit(1)->paginate(); |
667 | $news_ = News::query()->orderByDesc('created_at')->paginate(4); | 669 | $news_ = News::query()->orderByDesc('created_at')->paginate(4); |
668 | return view('news', compact('news_')); | 670 | return view('news', compact('news_')); |
669 | } | 671 | } |
670 | 672 | ||
671 | /* | 673 | /* |
672 | * Контакты | 674 | * Контакты |
673 | */ | 675 | */ |
674 | public function Contact() { | 676 | public function Contact() { |
675 | return view('contact'); | 677 | return view('contact'); |
676 | } | 678 | } |
677 | 679 | ||
678 | /* | 680 | /* |
679 | * Карта объектов | 681 | * Карта объектов |
680 | */ | 682 | */ |
681 | public function MapsObj(Request $request) { | 683 | public function MapsObj(Request $request) { |
682 | //$houses = House::with('areas'); | 684 | //$houses = House::with('areas'); |
683 | //$houses = $houses->orderBy('id')->get(); | 685 | //$houses = $houses->orderBy('id')->get(); |
684 | $input = $request->all(); | 686 | $input = $request->all(); |
685 | 687 | ||
686 | $houses = House::with('areas'); | 688 | $houses = House::with('areas'); |
687 | if (empty($input)) { | 689 | if (empty($input)) { |
688 | 690 | ||
689 | } else { | 691 | } else { |
690 | 692 | ||
691 | // условия поиска по объектам комплексов | 693 | // условия поиска по объектам комплексов |
692 | if (!empty($request->area)) { | 694 | if (!empty($request->area)) { |
693 | $houses = $houses->where('area_id', '=', $request->area); | 695 | $houses = $houses->where('area_id', '=', $request->area); |
694 | } | 696 | } |
695 | // условия поиска по типу недвижимости | 697 | // условия поиска по типу недвижимости |
696 | if (!empty($request->type_area)) { | 698 | if (!empty($request->type_area)) { |
697 | $houses = $houses->where('type_area_id', '=', $request->type_area); | 699 | $houses = $houses->where('type_area_id', '=', $request->type_area); |
698 | } | 700 | } |
699 | // условия поиска по формату недвижимости | 701 | // условия поиска по формату недвижимости |
700 | if (!empty($request->format_area)) { | 702 | if (!empty($request->format_area)) { |
701 | $houses = $houses->where('format_area_id', '=', $request->format_area); | 703 | $houses = $houses->where('format_area_id', '=', $request->format_area); |
702 | } | 704 | } |
703 | // условия поиска по площади - минимальная площадь | 705 | // условия поиска по площади - минимальная площадь |
704 | if (!empty($request->area_m2_min)) { | 706 | if (!empty($request->area_m2_min)) { |
705 | $houses = $houses->where('area', '>', $request->area_m2_min); | 707 | $houses = $houses->where('area', '>', $request->area_m2_min); |
706 | } | 708 | } |
707 | // условия поиска по площади - максимальная площадь | 709 | // условия поиска по площади - максимальная площадь |
708 | if (!empty($request->area_m2_max)) { | 710 | if (!empty($request->area_m2_max)) { |
709 | $houses = $houses->where('area', '<', $request->area_m2_max); | 711 | $houses = $houses->where('area', '<', $request->area_m2_max); |
710 | } | 712 | } |
711 | // условия поиска по цене - минимальная цена | 713 | // условия поиска по цене - минимальная цена |
712 | if (!empty($request->price_min)) { | 714 | if (!empty($request->price_min)) { |
713 | $houses = $houses->where('price', '>', $request->price_min); | 715 | $houses = $houses->where('price', '>', $request->price_min); |
714 | } | 716 | } |
715 | // условия поиска по цене - максимальная цена | 717 | // условия поиска по цене - максимальная цена |
716 | if (!empty($request->price_max)) { | 718 | if (!empty($request->price_max)) { |
717 | $houses = $houses->where('price', '<', $request->price_max); | 719 | $houses = $houses->where('price', '<', $request->price_max); |
718 | } | 720 | } |
719 | // условия поиска по адресу | 721 | // условия поиска по адресу |
720 | if (!empty($request->address)) { | 722 | if (!empty($request->address)) { |
721 | $houses = $houses->where('address', 'LIKE', "%".$request->address."%"); | 723 | $houses = $houses->where('address', 'LIKE', "%".$request->address."%"); |
722 | } | 724 | } |
723 | } | 725 | } |
724 | 726 | ||
725 | $houses = $houses->orderByDesc('id')->get(); | 727 | $houses = $houses->orderByDesc('id')->get(); |
726 | 728 | ||
727 | $areas = Area::query()->orderBy('id')->get(); | 729 | $areas = Area::query()->orderBy('id')->get(); |
728 | 730 | ||
729 | return view('mapsobj', compact('areas', 'input', 'houses')); | 731 | return view('mapsobj', compact('areas', 'input', 'houses')); |
730 | } | 732 | } |
731 | 733 | ||
732 | /* | 734 | /* |
733 | * Посмотр конктретного предложение офиса | 735 | * Посмотр конктретного предложение офиса |
734 | */ | 736 | */ |
735 | public function Offer(House $house) { | 737 | public function Offer(House $house, Request $request) { |
736 | $houses = House::with('areas'); | 738 | $houses = House::with('areas'); |
737 | $houses = $houses->where('type_area_id', '=', $house->typearea->id); | 739 | $houses = $houses->where('type_area_id', '=', $house->typearea->id); |
738 | $houses = $houses->where('format_house', '=', $house->format_house); | 740 | $houses = $houses->where('format_house', '=', $house->format_house); |
739 | $houses = $houses->orderByDesc('created_at')->limit(8)->get(); | 741 | $houses = $houses->orderByDesc('created_at')->limit(8)->get(); |
740 | 742 | ||
741 | return view('house.post', compact('house', 'houses')); | 743 | //получение адреса страницы |
744 | $url = $request->url(); | ||
745 | // получение ip-адреса клиента | ||
746 | $ip = RusDate::ip_addr_client(); | ||
747 | |||
748 | //получение выборки данных из базы данных по данной странице | ||
749 | $page_ = Page::query()->where('url', '=', "$url")-> | ||
750 | orderBy('created_at')->limit(1)->get(); | ||
751 | |||
752 | //если интервал времени больше суток, то обнуляем счетчик | ||
753 | if ($page_->count()) { | ||
754 | $result = RusDate::interval_day($page_[0]->created_at); | ||
755 | if ($result) { | ||
756 | DB::table('pages')->where('url', '=', "$url")->delete(); | ||
757 | } | ||
758 | } | ||
759 | // проверяем если в базе данных данный ip-адрес | ||
760 | $count_user = DB::table('pages')->where('ipaddress', '=', "$ip")-> | ||
761 | where('url', '=', "$url")->get(); | ||
762 | // если есть, то обновляем дату просмотра | ||
763 | if ($count_user->count() > 0) { | ||
764 | DB::table('pages')->where('ipaddress', '=', "$ip")-> | ||
765 | where('url', '=', "$url")->update(['created_at' => date('Y-m-d H:i')]); | ||
766 | } else { | ||
767 | // в противном случае добавляем новый ip В бд | ||
768 | $page = new Page(); | ||
769 | $page->ipaddress = $ip; | ||
770 | $page->url = $url; | ||
771 | $page->save(); | ||
772 | } | ||
773 | |||
774 | // выводим количество пользователей гостей данной страницы | ||
775 | $count_user = DB::table('pages')->where('url', '=', "$url")->get(); | ||
776 | return view('house.post', compact('house', 'houses', 'count_user')); | ||
742 | } | 777 | } |
743 | 778 | ||
744 | /* | 779 | /* |
745 | * Просмотр детально конкретной новости | 780 | * Просмотр детально конкретной новости |
746 | */ | 781 | */ |
747 | public function DetailNew(News $news) { | 782 | public function DetailNew(News $news) { |
748 | $news_list = News::query()->orderByDesc('created_at')->limit(8)->get(); | 783 | $news_list = News::query()->orderByDesc('created_at')->limit(8)->get(); |
749 | return view('new.post', compact('news', 'news_list')); | 784 | return view('new.post', compact('news', 'news_list')); |
750 | } | 785 | } |
751 | } | 786 | } |
752 | 787 |
app/Models/Page.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Models; | ||
4 | |||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | ||
6 | use Illuminate\Database\Eloquent\Model; | ||
7 | |||
8 | class Page extends Model | ||
9 | { | ||
10 | use HasFactory; | ||
11 | } | ||
12 |
database/migrations/2023_03_20_110427_create_pages_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::create('pages', function (Blueprint $table) { | ||
17 | $table->id(); | ||
18 | $table->string('ipaddress', 100); | ||
19 | $table->string('url', 255); | ||
20 | $table->timestamps(); | ||
21 | }); | ||
22 | } | ||
23 | |||
24 | /** | ||
25 | * Reverse the migrations. | ||
26 | * | ||
27 | * @return void | ||
28 | */ | ||
29 | public function down() | ||
30 | { | ||
31 | Schema::dropIfExists('pages'); | ||
32 | } | ||
33 | }; | ||
34 |
public/js/main_main.js
File was created | 1 | // управляющий класс App с методом init(), в котором собраны все используемые методы с комментариями о том, что конкретно делает каждый метод | |
2 | |||
3 | class App { | ||
4 | |||
5 | constructor() { | ||
6 | this.patternPhone = /^(\+7|7|8)?[\s\-]?\(?[489][0-9]{2}\)?[\s\-]?[0-9]{3}[\s\-]?[0-9]{2}[\s\-]?[0-9]{2}$/; // рег. выражение для поля 'телефон'; | ||
7 | this.patternEmail = /^[a-zA-Z0-9._%+-\.]+@[a-z0-9.-]+\.[a-z]{2,}$/i; // рег. выражение для поля 'электронная почта'; | ||
8 | } | ||
9 | |||
10 | init() { | ||
11 | |||
12 | console.log('init'); | ||
13 | |||
14 | this.stickyHeader(); // липкий хедер; | ||
15 | this.controlBurgerMenu(); // бургер-меню; | ||
16 | this.smoothScroll(); // плавный скролл к якорю (smooth scroll); | ||
17 | this.scrollUp(); // кнопка наверх; | ||
18 | this.addToFavorites(); // добавить в избранное (звёздочка); | ||
19 | this.initTypicalSlider(); // типовые слайдеры; | ||
20 | this.initPartnerslSlider(); // слайдер с партнёрами; | ||
21 | this.controlFilters(); // фильтры на главном экране; | ||
22 | this.controlPopups(); // открытие/закрытие поп-апов; | ||
23 | this.controlContactUsPopup(); // открытие/закрытие поп-апа 'обратный звонок'; | ||
24 | |||
25 | this.sendForm('.js_popup_feedback_form', '[data-popup="success"]'); // отправка формы в поп-апе обратной связи; | ||
26 | this.sendForm('.js_popup_viewing_form', '[data-popup="success"]'); // отправка формы в поп-апе 'записаться на просмотр'; | ||
27 | this.sendForm('.js_footer_feedback_form', '[data-popup="success"]'); // отправка формы в футере; | ||
28 | this.sendForm('.js_contacts_form', '.js_contacts_success'); // отправка формы на странице контакты; | ||
29 | this.sendForm('.js_popup_sending_form_', '[data-popup="success"]'); | ||
30 | //this.sendOffer(); //отправка предложения по e-mail; | ||
31 | |||
32 | //this.setGeneralMap(); // карта на странице карт; | ||
33 | //this.setComplexMap('complex-map', [55.726591050908745, 37.57244549999999], 'ЖК Садовые кварталы'); // карта на странице 'ЖК'; | ||
34 | //this.setComplexMap('offer-map', [55.70851106903402, 37.65864349999999], 'Аренда торгового помещения 321,6 м2'); // карта на странице 'Предложение'; | ||
35 | this.setCatalogSorts(); // сортировка на странице 'каталог'; | ||
36 | this.initIntroSlider(); // слайдер на странице жк и на странице предложения; | ||
37 | this.setTabs('.js_offer_side_tab', '.js_offer_side_item'); // табы с планами объекат и этажа на странице предложения; | ||
38 | this.setTabs('.js_offer_side_popup_tab', '.js_offer_side_popup_item'); // табы с планами объекат и этажа в поп-апе на странице предложения; | ||
39 | this.sontrolOfferSidePopup(); // логика открытия нужного таба при открытии поп-апа с планами объекат и этажа на странице предложения; | ||
40 | this.setCustomGallery(); // галлерея; | ||
41 | this.setCookies() // куки; | ||
42 | this.setFooterSpoilers() // аккордеон в футере; | ||
43 | |||
44 | } | ||
45 | |||
46 | // фиксация <body> | ||
47 | fixBodyPosition() { | ||
48 | |||
49 | setTimeout(function () { | ||
50 | // ставим необходимую задержку, чтобы не было «конфликта» в случае, если функция фиксации вызывается сразу после расфиксации (расфиксация отменяет действия расфиксации из-за одновременного действия) | ||
51 | |||
52 | if (!document.body.hasAttribute('data-body-scroll-fix')) { | ||
53 | |||
54 | // получаем позицию прокрутки | ||
55 | let scrollPosition = window.pageYOffset || document.documentElement.scrollTop; | ||
56 | |||
57 | // ставим нужные стили | ||
58 | document.body.setAttribute('data-body-scroll-fix', scrollPosition); // Cтавим атрибут со значением прокрутки | ||
59 | document.body.style.overflow = 'hidden'; | ||
60 | document.body.style.position = 'fixed'; | ||
61 | document.body.style.top = '-' + scrollPosition + 'px'; | ||
62 | document.body.style.left = '0'; | ||
63 | document.body.style.width = '100%'; | ||
64 | |||
65 | if (window.innerWidth >= 1200) { | ||
66 | document.body.style.paddingRight = '8px'; | ||
67 | } | ||
68 | } | ||
69 | |||
70 | }, 15); // можно задержку ещё меньше, но работает хорошо именно с этим значением на всех устройствах и браузерах | ||
71 | |||
72 | } | ||
73 | |||
74 | |||
75 | // расфиксация <body> | ||
76 | unfixBodyPosition() { | ||
77 | |||
78 | if (document.body.hasAttribute('data-body-scroll-fix')) { | ||
79 | |||
80 | // получаем позицию прокрутки из атрибута | ||
81 | let scrollPosition = document.body.getAttribute('data-body-scroll-fix'); | ||
82 | |||
83 | // удаляем атрибут | ||
84 | document.body.removeAttribute('data-body-scroll-fix'); | ||
85 | |||
86 | // удаляем ненужные стили | ||
87 | document.body.style.overflow = ''; | ||
88 | document.body.style.position = ''; | ||
89 | document.body.style.top = ''; | ||
90 | document.body.style.left = ''; | ||
91 | document.body.style.width = ''; | ||
92 | document.body.style.paddingRight = ''; | ||
93 | |||
94 | // прокручиваем страницу на полученное из атрибута значение | ||
95 | window.scroll(0, scrollPosition); | ||
96 | |||
97 | } | ||
98 | |||
99 | } | ||
100 | |||
101 | |||
102 | // бургер-меню | ||
103 | controlBurgerMenu() { | ||
104 | |||
105 | const headerBurger = document.querySelector('.js_header_burger'); | ||
106 | |||
107 | if (headerBurger) { | ||
108 | |||
109 | const menu = document.querySelector('.js_menu'); | ||
110 | const menuClose = menu.querySelector('.js_menu_close'); | ||
111 | |||
112 | headerBurger.addEventListener('click', () => { | ||
113 | menu.classList.add('active'); | ||
114 | this.fixBodyPosition(); | ||
115 | }); | ||
116 | |||
117 | menu.addEventListener('click', (e) => { | ||
118 | |||
119 | if (e.target == menu) { | ||
120 | menu.classList.remove('active'); | ||
121 | this.unfixBodyPosition(); | ||
122 | } | ||
123 | |||
124 | }); | ||
125 | |||
126 | menuClose.addEventListener('click', () => { | ||
127 | menu.classList.remove('active'); | ||
128 | this.unfixBodyPosition(); | ||
129 | }); | ||
130 | |||
131 | } | ||
132 | |||
133 | } | ||
134 | |||
135 | |||
136 | // липкий хедер | ||
137 | stickyHeader() { | ||
138 | |||
139 | const header = document.querySelector('.js_header'); | ||
140 | |||
141 | if (header) { | ||
142 | |||
143 | window.addEventListener('scroll', () => { | ||
144 | |||
145 | if (window.scrollY > 200) { | ||
146 | header.classList.add('fixed'); | ||
147 | } else { | ||
148 | header.classList.remove('fixed'); | ||
149 | } | ||
150 | |||
151 | }); | ||
152 | |||
153 | }; | ||
154 | |||
155 | } | ||
156 | |||
157 | |||
158 | // плавный скролл к якорю (smooth scroll) | ||
159 | smoothScroll() { | ||
160 | |||
161 | const smoothLinks = document.querySelectorAll('.js_smooth_link'); | ||
162 | |||
163 | if (smoothLinks.length) { | ||
164 | |||
165 | smoothLinks.forEach(link => { | ||
166 | |||
167 | link.addEventListener('click', function (e) { | ||
168 | |||
169 | e.preventDefault(); | ||
170 | |||
171 | let href = this.getAttribute('href').substring(1); | ||
172 | |||
173 | const scrollTarget = document.getElementById(href); | ||
174 | |||
175 | // const topOffset = document.querySelector('.header').offsetHeight; | ||
176 | const topOffset = 0; // если не нужен отступ сверху | ||
177 | const elementPosition = scrollTarget.getBoundingClientRect().top; | ||
178 | const offsetPosition = elementPosition - topOffset; | ||
179 | |||
180 | window.scrollBy({ | ||
181 | top: offsetPosition, | ||
182 | behavior: 'smooth' | ||
183 | }); | ||
184 | |||
185 | }); | ||
186 | |||
187 | }); | ||
188 | |||
189 | } | ||
190 | |||
191 | } | ||
192 | |||
193 | |||
194 | // кнопка наверх | ||
195 | scrollUp() { | ||
196 | |||
197 | const toTopBtn = document.querySelector('.js_btn_up'); | ||
198 | |||
199 | if (toTopBtn) { | ||
200 | |||
201 | toTopBtn.addEventListener('click', function () { | ||
202 | |||
203 | window.scrollTo({ | ||
204 | top: 0, | ||
205 | behavior: 'smooth' | ||
206 | }); | ||
207 | |||
208 | }); | ||
209 | |||
210 | } | ||
211 | |||
212 | } | ||
213 | |||
214 | |||
215 | // добавить в избранное (звёздочка) | ||
216 | addToFavorites() { | ||
217 | |||
218 | const cardFavorites = document.querySelectorAll('.js_card_favorites'); | ||
219 | |||
220 | if (cardFavorites.length) { | ||
221 | |||
222 | cardFavorites.forEach(item => { | ||
223 | |||
224 | item.addEventListener('click', (e) => { | ||
225 | e.preventDefault(); | ||
226 | item.classList.toggle('active'); | ||
227 | }); | ||
228 | |||
229 | }); | ||
230 | |||
231 | } | ||
232 | |||
233 | } | ||
234 | |||
235 | |||
236 | // типовые слайдеры | ||
237 | initTypicalSlider() { | ||
238 | |||
239 | const slidersWraps = document.querySelectorAll('.slider__wrap'); | ||
240 | |||
241 | if (slidersWraps.length) { | ||
242 | |||
243 | slidersWraps.forEach(wrap => { | ||
244 | |||
245 | const slider = wrap.querySelector('.swiper'); | ||
246 | const prev = wrap.querySelector('.swiper-button-prev'); | ||
247 | const next = wrap.querySelector('.swiper-button-next'); | ||
248 | const pagination = wrap.querySelector('.swiper-pagination'); | ||
249 | |||
250 | let swiper1 = new Swiper(slider, { | ||
251 | navigation: { | ||
252 | nextEl: next, | ||
253 | prevEl: prev, | ||
254 | }, | ||
255 | pagination: { | ||
256 | el: pagination, | ||
257 | clickable: true, | ||
258 | }, | ||
259 | slidesPerView: 1, | ||
260 | spaceBetween: 20, | ||
261 | observer: true, | ||
262 | observeParents: true, | ||
263 | observeSlideChildren: true, | ||
264 | breakpoints: { | ||
265 | 480: { | ||
266 | slidesPerView: 1.5, | ||
267 | }, | ||
268 | 640: { | ||
269 | slidesPerView: 2, | ||
270 | }, | ||
271 | 780: { | ||
272 | slidesPerView: 2.5, | ||
273 | }, | ||
274 | 920: { | ||
275 | slidesPerView: 3, | ||
276 | }, | ||
277 | 1024: { | ||
278 | slidesPerView: 3.4 | ||
279 | }, | ||
280 | 1200: { | ||
281 | slidesPerView: 4, | ||
282 | } | ||
283 | } | ||
284 | }); | ||
285 | |||
286 | }); | ||
287 | |||
288 | } | ||
289 | |||
290 | } | ||
291 | |||
292 | |||
293 | // метод, делающий число удобночитаемым (добавляет пробел справа через каждые 3 цифры) | ||
294 | prettify(num) { | ||
295 | const withoutSpace = num.replace(/[^\d]/g, ''); //убирает все символы; | ||
296 | return withoutSpace.replace(/(?!^)(?=(?:\d{3})+(?:\.|$))/gm, ' '); //ставит пробелы; | ||
297 | } | ||
298 | |||
299 | |||
300 | // фильтры на главном экране | ||
301 | controlFilters() { | ||
302 | |||
303 | const heroFilters = document.querySelectorAll('.js_hero_filter'); | ||
304 | const heroSearchBtns = document.querySelectorAll('.js_hero_search_btn'); | ||
305 | |||
306 | if (heroFilters.length) { | ||
307 | |||
308 | heroFilters.forEach(filter => { | ||
309 | |||
310 | const heroFilterInput = filter.querySelector('.js_hero_filter_input'); | ||
311 | const heroFilterCurrent = filter.querySelector('.js_hero_filter_current'); | ||
312 | const heroFilterItems = filter.querySelectorAll('.hero-filter__item'); | ||
313 | const heroFilterFields = filter.querySelectorAll('.js_hero_filter_field'); | ||
314 | const heroFilterFrom = filter.querySelector('.js_hero_filter_from'); | ||
315 | const heroFilterTo = filter.querySelector('.js_hero_filter_to'); | ||
316 | const heroFilterReset = filter.querySelector('.js_hero_filter_reset'); | ||
317 | |||
318 | heroFilterCurrent.addEventListener('click', () => { | ||
319 | |||
320 | if (filter.classList.contains('active')) { | ||
321 | |||
322 | filter.classList.remove('active'); | ||
323 | |||
324 | heroSearchBtns.forEach(btn => { | ||
325 | btn.disabled = false; | ||
326 | }); | ||
327 | |||
328 | } else { | ||
329 | |||
330 | heroFilters.forEach(filter => { | ||
331 | filter.classList.remove('active'); | ||
332 | }); | ||
333 | |||
334 | filter.classList.add('active'); | ||
335 | |||
336 | heroSearchBtns.forEach(btn => { | ||
337 | btn.disabled = true; | ||
338 | }); | ||
339 | |||
340 | } | ||
341 | |||
342 | }); | ||
343 | |||
344 | if (heroFilterItems.length) { | ||
345 | |||
346 | heroFilterItems.forEach(item => { | ||
347 | |||
348 | item.addEventListener('click', () => { | ||
349 | |||
350 | heroFilterCurrent.textContent = item.textContent; | ||
351 | heroFilterInput.value = item.dataset.val; | ||
352 | filter.classList.remove('active'); | ||
353 | |||
354 | heroSearchBtns.forEach(btn => { | ||
355 | btn.disabled = false; | ||
356 | }); | ||
357 | |||
358 | }); | ||
359 | |||
360 | }); | ||
361 | |||
362 | } | ||
363 | |||
364 | if (heroFilterFields.length) { | ||
365 | |||
366 | const heroFilterMin = heroFilterFrom.dataset.min; | ||
367 | const heroFilterMax = heroFilterTo.dataset.max; | ||
368 | |||
369 | let heroFilterFromVal; | ||
370 | let heroFilterToVal; | ||
371 | |||
372 | heroFilterFields.forEach(field => { | ||
373 | |||
374 | field.addEventListener('input', () => { | ||
375 | |||
376 | field.value = this.prettify(field.value); | ||
377 | |||
378 | heroFilterReset.classList.remove('active'); | ||
379 | |||
380 | heroFilterFields.forEach(field => { | ||
381 | |||
382 | if (field.value != "") { | ||
383 | heroFilterReset.classList.add('active'); | ||
384 | } | ||
385 | |||
386 | }); | ||
387 | |||
388 | }); | ||
389 | |||
390 | }); | ||
391 | |||
392 | heroFilterFrom.addEventListener('change', () => { | ||
393 | |||
394 | heroFilterFromVal = +heroFilterFrom.value.replace(/\s/g, ''); | ||
395 | heroFilterToVal = +heroFilterTo.value.replace(/\s/g, ''); | ||
396 | |||
397 | if (heroFilterToVal != '' && heroFilterFromVal > heroFilterToVal) { | ||
398 | |||
399 | heroFilterFrom.value = heroFilterTo.value; | ||
400 | |||
401 | } else if (heroFilterFromVal < +heroFilterMin) { | ||
402 | |||
403 | heroFilterFrom.value = this.prettify(heroFilterMin); | ||
404 | |||
405 | } else if (heroFilterFromVal > +heroFilterMax) { | ||
406 | |||
407 | heroFilterFrom.value = this.prettify(heroFilterMax); | ||
408 | |||
409 | } | ||
410 | |||
411 | }); | ||
412 | |||
413 | heroFilterTo.addEventListener('change', () => { | ||
414 | |||
415 | heroFilterFromVal = +heroFilterFrom.value.replace(/\s/g, ''); | ||
416 | heroFilterToVal = +heroFilterTo.value.replace(/\s/g, ''); | ||
417 | |||
418 | if (heroFilterFromVal != '' && heroFilterToVal < heroFilterFromVal) { | ||
419 | |||
420 | heroFilterTo.value = heroFilterFrom.value; | ||
421 | |||
422 | } else if (heroFilterToVal < +heroFilterMin) { | ||
423 | |||
424 | heroFilterTo.value = this.prettify(heroFilterMax); | ||
425 | |||
426 | } else if (heroFilterToVal > +heroFilterMax) { | ||
427 | |||
428 | heroFilterTo.value = this.prettify(heroFilterMax); | ||
429 | |||
430 | } | ||
431 | |||
432 | }); | ||
433 | |||
434 | heroFilterReset.addEventListener('click', () => { | ||
435 | |||
436 | heroFilterFields.forEach(field => { | ||
437 | field.value = ''; | ||
438 | }); | ||
439 | |||
440 | heroFilterReset.classList.remove('active'); | ||
441 | |||
442 | }); | ||
443 | } | ||
444 | |||
445 | }); | ||
446 | |||
447 | document.addEventListener('click', (e) => { | ||
448 | |||
449 | if (!e.target.closest('.js_hero_filter_dropdown') && !e.target.closest('.js_hero_filter_current')) { | ||
450 | |||
451 | heroFilters.forEach(filter => { | ||
452 | filter.classList.remove('active'); | ||
453 | }); | ||
454 | |||
455 | heroSearchBtns.forEach(btn => { | ||
456 | btn.disabled = false; | ||
457 | }); | ||
458 | |||
459 | } | ||
460 | |||
461 | }); | ||
462 | |||
463 | } | ||
464 | |||
465 | } | ||
466 | |||
467 | |||
468 | // открытие/закрытие типовых поп-апов | ||
469 | controlPopups() { | ||
470 | |||
471 | const popupShowBtns = document.querySelectorAll('[data-btn]'); | ||
472 | const popups = document.querySelectorAll('[data-popup]'); | ||
473 | |||
474 | if (popupShowBtns.length) { | ||
475 | |||
476 | popupShowBtns.forEach(btn => { | ||
477 | |||
478 | btn.addEventListener('click', (e) => { | ||
479 | |||
480 | e.preventDefault(); | ||
481 | |||
482 | popups.forEach(popup => { | ||
483 | |||
484 | popup.classList.remove('active'); // если какойто поп-ап открыт, то закрываем его; | ||
485 | this.unfixBodyPosition(); | ||
486 | |||
487 | if (btn.dataset.btn == popup.dataset.popup) { | ||
488 | popup.classList.add('active'); | ||
489 | this.fixBodyPosition(); | ||
490 | } | ||
491 | |||
492 | }); | ||
493 | |||
494 | |||
495 | }); | ||
496 | |||
497 | }); | ||
498 | |||
499 | popups.forEach(popup => { | ||
500 | |||
501 | const popupCloseBtns = popup.querySelectorAll('.js_popup_close'); | ||
502 | |||
503 | popupCloseBtns.forEach(btn => { | ||
504 | |||
505 | btn.addEventListener('click', (e) => { | ||
506 | e.preventDefault(); | ||
507 | popup.classList.remove('active'); | ||
508 | this.unfixBodyPosition(); | ||
509 | }); | ||
510 | |||
511 | }); | ||
512 | |||
513 | popup.addEventListener('click', (e) => { | ||
514 | |||
515 | if (e.target == popup) { | ||
516 | |||
517 | popup.classList.remove('active'); | ||
518 | this.unfixBodyPosition(); | ||
519 | } | ||
520 | |||
521 | }); | ||
522 | |||
523 | }); | ||
524 | |||
525 | } | ||
526 | } | ||
527 | |||
528 | |||
529 | // открытие/закрытие поп-апа 'обратный звонок' | ||
530 | controlContactUsPopup() { | ||
531 | |||
532 | const contactUsBtn = document.querySelector('.js_btn_contact_us'); | ||
533 | const contactUsPopup = document.querySelector('.js_contact_us'); | ||
534 | |||
535 | if (contactUsPopup) { | ||
536 | |||
537 | const contactUsPopupCloseBtns = contactUsPopup.querySelectorAll('.js_contact_us_close'); | ||
538 | |||
539 | contactUsBtn.addEventListener('click', (e) => { | ||
540 | |||
541 | e.preventDefault(); | ||
542 | |||
543 | if (contactUsPopup.classList.contains('active')) { | ||
544 | contactUsPopup.classList.remove('active'); | ||
545 | } else { | ||
546 | contactUsPopup.classList.add('active'); | ||
547 | } | ||
548 | |||
549 | }); | ||
550 | |||
551 | contactUsPopupCloseBtns.forEach(btn => { | ||
552 | btn.addEventListener('click', () => { | ||
553 | contactUsPopup.classList.remove('active'); | ||
554 | }); | ||
555 | }); | ||
556 | |||
557 | |||
558 | document.addEventListener('click', (e) => { | ||
559 | |||
560 | if (!e.target.closest('.js_contact_us') && !e.target.closest('.js_btn_contact_us')) { | ||
561 | contactUsPopup.classList.remove('active'); | ||
562 | } | ||
563 | |||
564 | }); | ||
565 | |||
566 | } | ||
567 | |||
568 | } | ||
569 | |||
570 | |||
571 | // валидатор форм | ||
572 | validateForm(input) { | ||
573 | |||
574 | // функция добавления ошибки | ||
575 | const createError = (text) => { | ||
576 | |||
577 | input.classList.add('error'); | ||
578 | input.classList.remove('no-error'); | ||
579 | |||
580 | if (input.closest('label').querySelector('span.error')) { | ||
581 | input.closest('label').querySelector('span.error').remove(); | ||
582 | input.closest('label').insertAdjacentHTML('beforeend', `<span class="error">${text}</span>`); | ||
583 | } else { | ||
584 | input.closest('label').insertAdjacentHTML('beforeend', `<span class="error">${text}</span>`); | ||
585 | } | ||
586 | |||
587 | } | ||
588 | |||
589 | // функция удаления ошибки | ||
590 | const removeError = () => { | ||
591 | |||
592 | input.classList.remove('error'); | ||
593 | input.classList.add('no-error'); | ||
594 | |||
595 | if (input.closest('label').querySelector('span.error')) { | ||
596 | input.closest('label').querySelector('span.error').remove(); | ||
597 | } | ||
598 | |||
599 | } | ||
600 | |||
601 | // проверяем на правильность заполнения поля 'Телефон' | ||
602 | if (input.classList.contains('js_input_phone') && input.value == "") { | ||
603 | createError('Заполните, пожалуйста, поле'); | ||
604 | } else if (input.classList.contains('js_input_phone') && input.value.search(this.patternPhone) == 0) { | ||
605 | removeError(); | ||
606 | } else if (input.classList.contains('js_input_phone')) { | ||
607 | createError('Укажите, пожалуйста, корректный телефон'); | ||
608 | } | ||
609 | |||
610 | // проверяем правильность заполнения поля 'Электронная почта' | ||
611 | if (input.classList.contains('js_input_email') && input.value == "") { | ||
612 | createError('Заполните, пожалуйста, поле'); | ||
613 | } else if (input.classList.contains('js_input_email') && input.value.search(this.patternEmail) == 0) { | ||
614 | removeError(); | ||
615 | } else if (input.classList.contains('js_input_email')) { | ||
616 | createError('Укажите, пожалуйста, корректный e-mail'); | ||
617 | } | ||
618 | |||
619 | } | ||
620 | |||
621 | |||
622 | // отправка форм | ||
623 | sendForm(formEl, success) { | ||
624 | |||
625 | const form = document.querySelector(formEl); | ||
626 | |||
627 | if (form) { | ||
628 | |||
629 | form.addEventListener('submit', async (e) => { | ||
630 | |||
631 | e.preventDefault(); | ||
632 | |||
633 | const formInputs = form.querySelectorAll('input'); | ||
634 | const formBtn = form.querySelector('.js_form_btn'); | ||
635 | |||
636 | formInputs.forEach(input => { // перебираем все инпуты в форме; | ||
637 | |||
638 | this.validateForm(input); | ||
639 | |||
640 | input.addEventListener('input', () => { | ||
641 | this.validateForm(input); | ||
642 | }); | ||
643 | |||
644 | }); | ||
645 | |||
646 | if (!form.querySelector('.error')) { //проверяем, чтоб все инпуты прошли валидацию (чтоб не было в форме ни одного элемента с класссом error); | ||
647 | |||
648 | // сюда пишем команды, которые должны сработать после успешной валидации; | ||
649 | |||
650 | console.log('validate'); | ||
651 | formBtn.classList.add('btn-animate'); | ||
652 | formBtn.disabled = true; | ||
653 | |||
654 | const formData = new FormData(form); | ||
655 | |||
656 | console.log(...formData); | ||
657 | |||
658 | const response = await fetch(e.target.action, { | ||
659 | method: e.target.method, | ||
660 | body: formData | ||
661 | }); | ||
662 | |||
663 | if (response.ok) { | ||
664 | |||
665 | setTimeout(() => { // имитация отправки, когда отправка будет настроена, нужно достать всё из setTimeout() и удалить его; | ||
666 | |||
667 | console.log('Отправлено'); | ||
668 | formBtn.classList.remove('btn-animate'); | ||
669 | formBtn.disabled = false; | ||
670 | if (document.querySelector('[data-popup="feedback"]')) { | ||
671 | document.querySelector('[data-popup="feedback"]').classList.remove('active'); | ||
672 | } | ||
673 | if (document.querySelector('[data-popup="viewing"]')) { | ||
674 | document.querySelector('[data-popup="viewing"]').classList.remove('active'); | ||
675 | } | ||
676 | document.querySelector(success).classList.add('active'); | ||
677 | this.fixBodyPosition(); | ||
678 | form.reset(); | ||
679 | |||
680 | formInputs.forEach(input => { | ||
681 | input.classList.remove('no-error'); | ||
682 | }); | ||
683 | |||
684 | }, 2000) | ||
685 | |||
686 | } else { | ||
687 | formBtn.classList.remove('btn-animate'); | ||
688 | formBtn.disabled = false; | ||
689 | alert('Ошибка'); | ||
690 | } | ||
691 | |||
692 | } else { | ||
693 | console.log('no-validate'); | ||
694 | form.querySelector('.error').focus(); //фокус к полю с ошибкой; | ||
695 | } | ||
696 | |||
697 | }); | ||
698 | |||
699 | } | ||
700 | |||
701 | } | ||
702 | |||
703 | //отправка предложения по e-mail | ||
704 | sendOffer() { | ||
705 | |||
706 | const form = document.querySelector('.js_popup_sending_form'); | ||
707 | |||
708 | if (form) { | ||
709 | |||
710 | form.addEventListener('submit', async (e) => { | ||
711 | |||
712 | e.preventDefault(); | ||
713 | |||
714 | const formInputs = form.querySelectorAll('input'); | ||
715 | const formBtn = form.querySelector('.js_form_btn'); | ||
716 | |||
717 | formInputs.forEach(input => { // перебираем все инпуты в форме; | ||
718 | |||
719 | this.validateForm(input); | ||
720 | |||
721 | input.addEventListener('input', () => { | ||
722 | this.validateForm(input); | ||
723 | }); | ||
724 | |||
725 | }); | ||
726 | |||
727 | if (!form.querySelector('.error')) { //проверяем, чтоб все инпуты прошли валидацию (чтоб не было в форме ни одного элемента с класссом error); | ||
728 | |||
729 | // сюда пишем команды, которые должны сработать после успешной валидации; | ||
730 | |||
731 | console.log('validate'); | ||
732 | formBtn.classList.add('btn-animate'); | ||
733 | formBtn.disabled = true; | ||
734 | |||
735 | const formData = new FormData(form); | ||
736 | |||
737 | console.log(...formData); | ||
738 | |||
739 | const response = await fetch(e.target.action, { | ||
740 | method: e.target.method, | ||
741 | body: formData | ||
742 | }); | ||
743 | |||
744 | if (response.ok) { | ||
745 | |||
746 | setTimeout(() => { // имитация отправки, когда отправка будет настроена, нужно достать всё из setTimeout() и удалить его; | ||
747 | |||
748 | console.log('Отправлено'); | ||
749 | formBtn.classList.remove('btn-animate'); | ||
750 | formBtn.disabled = false; | ||
751 | if (document.querySelector('[data-popup="sending"]')) { | ||
752 | document.querySelector('[data-popup="sending"]').classList.remove('active'); | ||
753 | } | ||
754 | this.fixBodyPosition(); | ||
755 | form.reset(); | ||
756 | |||
757 | formInputs.forEach(input => { | ||
758 | input.classList.remove('no-error'); | ||
759 | }); | ||
760 | |||
761 | }, 2000) | ||
762 | |||
763 | } else { | ||
764 | formBtn.classList.remove('btn-animate'); | ||
765 | formBtn.disabled = false; | ||
766 | alert('Ошибка'); | ||
767 | } | ||
768 | |||
769 | } else { | ||
770 | console.log('no-validate'); | ||
771 | form.querySelector('.error').focus(); //фокус к полю с ошибкой; | ||
772 | } | ||
773 | |||
774 | }); | ||
775 | |||
776 | } | ||
777 | |||
778 | } | ||
779 | |||
780 | |||
781 | // карта на странице 'ЖК' | ||
782 | /* setComplexMap(id, coords, caption) { | ||
783 | |||
784 | if (document.querySelector('#' + id)) { | ||
785 | |||
786 | // Дождёмся загрузки API и готовности DOM. | ||
787 | ymaps.ready(init); | ||
788 | |||
789 | function init() { | ||
790 | const map = new ymaps.Map(id, { | ||
791 | // При инициализации карты обязательно нужно указать её центр и коэффициент масштабирования. | ||
792 | center: coords, | ||
793 | zoom: 16, | ||
794 | controls: [] | ||
795 | }); | ||
796 | |||
797 | // Создаём макет содержимого. | ||
798 | const MyIconContentLayout = ymaps.templateLayoutFactory.createClass( | ||
799 | '<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>' | ||
800 | ); | ||
801 | |||
802 | // Создание макета содержимого хинта. | ||
803 | // Макет создается через фабрику макетов с помощью текстового шаблона. | ||
804 | const HintLayout = ymaps.templateLayoutFactory.createClass("<div class='my-hint'>" + | ||
805 | "{{ properties.object }}" + "</div>", { | ||
806 | // Определяем метод getShape, который | ||
807 | // будет возвращать размеры макета хинта. | ||
808 | // Это необходимо для того, чтобы хинт автоматически | ||
809 | // сдвигал позицию при выходе за пределы карты. | ||
810 | getShape: function () { | ||
811 | let el = this.getElement(), | ||
812 | result = null; | ||
813 | if (el) { | ||
814 | var firstChild = el.firstChild; | ||
815 | result = new ymaps.shape.Rectangle( | ||
816 | new ymaps.geometry.pixel.Rectangle([ | ||
817 | [0, 0], | ||
818 | [firstChild.offsetWidth, firstChild.offsetHeight] | ||
819 | ]) | ||
820 | ); | ||
821 | } | ||
822 | return result; | ||
823 | } | ||
824 | } | ||
825 | ); | ||
826 | |||
827 | // метка | ||
828 | const placemark = new ymaps.Placemark(coords, { | ||
829 | // hintContent: caption, | ||
830 | // balloonContent: caption, | ||
831 | iconContent: '1', | ||
832 | // address: caption, | ||
833 | object: caption | ||
834 | }, { | ||
835 | iconLayout: 'default#imageWithContent', | ||
836 | iconImageHref: 'images/mark-complex.svg', | ||
837 | iconImageSize: [52, 67], | ||
838 | iconImageOffset: [-26, -67], | ||
839 | iconContentOffset: [0, 17], | ||
840 | iconContentLayout: MyIconContentLayout, | ||
841 | hintLayout: HintLayout | ||
842 | }); | ||
843 | |||
844 | map.geoObjects.add(placemark); | ||
845 | |||
846 | } | ||
847 | |||
848 | } | ||
849 | |||
850 | } | ||
851 | */ | ||
852 | |||
853 | // фильтры и сортировка на странице 'каталог' | ||
854 | setCatalogSorts() { | ||
855 | |||
856 | const sortGroups = document.querySelectorAll('.js_sort_group'); | ||
857 | |||
858 | if (sortGroups.length) { | ||
859 | |||
860 | sortGroups.forEach(group => { | ||
861 | |||
862 | const sortGroupInput = group.querySelector('.js_sort_group_input'); | ||
863 | const sortGroupCurrent = group.querySelector('.js_sort_group_current'); | ||
864 | const sortGroupList = group.querySelector('.js_sort_group_list'); | ||
865 | const sortGroupItems = group.querySelectorAll('.js_sort_group_item'); | ||
866 | |||
867 | const sendRequest = () => { | ||
868 | |||
869 | const spinner = document.querySelector('.spinner'); // спиннер; | ||
870 | |||
871 | spinner.classList.add('active'); | ||
872 | document.body.classList.add('overlay'); | ||
873 | /*this.fixBodyPosition(); | ||
874 | |||
875 | fetch('test.json') | ||
876 | .then(response => response.json()) | ||
877 | .then(data => { | ||
878 | |||
879 | console.log() | ||
880 | |||
881 | setTimeout(() => { //имитация ответа сервера | ||
882 | |||
883 | spinner.classList.remove('active'); | ||
884 | document.body.classList.remove('overlay'); | ||
885 | this.unfixBodyPosition(); | ||
886 | |||
887 | }, 3000); | ||
888 | |||
889 | }) | ||
890 | .catch(err => { | ||
891 | console.log(err); | ||
892 | }); | ||
893 | |||
894 | */ | ||
895 | spinner.classList.remove('active'); | ||
896 | document.body.classList.remove('overlay'); | ||
897 | |||
898 | |||
899 | }; | ||
900 | |||
901 | sortGroupCurrent.addEventListener('click', () => { | ||
902 | |||
903 | if (group.classList.contains('active')) { | ||
904 | |||
905 | group.classList.remove('active'); | ||
906 | |||
907 | } else { | ||
908 | |||
909 | sortGroups.forEach(group => { | ||
910 | group.classList.remove('active'); | ||
911 | }); | ||
912 | |||
913 | group.classList.add('active'); | ||
914 | |||
915 | } | ||
916 | |||
917 | }); | ||
918 | |||
919 | sortGroupItems.forEach(item => { | ||
920 | |||
921 | item.addEventListener('click', () => { | ||
922 | |||
923 | sortGroupItems.forEach(item => { | ||
924 | item.classList.remove('active'); | ||
925 | }); | ||
926 | |||
927 | item.classList.add('active'); | ||
928 | sortGroupCurrent.textContent = item.textContent; | ||
929 | sortGroupInput.value = item.dataset.val; | ||
930 | group.classList.remove('active'); | ||
931 | |||
932 | sendRequest(); | ||
933 | |||
934 | }); | ||
935 | |||
936 | }); | ||
937 | |||
938 | }); | ||
939 | |||
940 | document.addEventListener('click', (e) => { | ||
941 | |||
942 | if (!e.target.closest('.js_sort_group_list') && !e.target.closest('.js_sort_group_current')) { | ||
943 | |||
944 | sortGroups.forEach(group => { | ||
945 | group.classList.remove('active'); | ||
946 | }); | ||
947 | |||
948 | } | ||
949 | |||
950 | }); | ||
951 | |||
952 | } | ||
953 | |||
954 | } | ||
955 | |||
956 | |||
957 | // слайдер на странице жк и на странице предложения | ||
958 | initIntroSlider() { | ||
959 | |||
960 | let swiper3 = new Swiper('.intro__swiper', { | ||
961 | navigation: { | ||
962 | nextEl: '.swiper-button-next', | ||
963 | prevEl: '.swiper-button-prev', | ||
964 | }, | ||
965 | pagination: { | ||
966 | el: '.swiper-pagination', | ||
967 | clickable: true, | ||
968 | }, | ||
969 | slidesPerView: 1.1, | ||
970 | spaceBetween: 20, | ||
971 | breakpoints: { | ||
972 | 480: { | ||
973 | slidesPerView: 1.5, | ||
974 | }, | ||
975 | 640: { | ||
976 | slidesPerView: 1.75, | ||
977 | }, | ||
978 | 780: { | ||
979 | slidesPerView: 2.15, | ||
980 | }, | ||
981 | 1024: { | ||
982 | slidesPerView: 3.5, | ||
983 | }, | ||
984 | 1200: { | ||
985 | slidesPerView: 1, | ||
986 | } | ||
987 | } | ||
988 | }); | ||
989 | |||
990 | } | ||
991 | |||
992 | |||
993 | // табы на странице предложения | ||
994 | setTabs(tabs, items) { | ||
995 | |||
996 | const offerSideTabs = document.querySelectorAll(tabs); | ||
997 | const offerSideItems = document.querySelectorAll(items); | ||
998 | |||
999 | if (offerSideTabs) { | ||
1000 | |||
1001 | offerSideTabs.forEach(tab => { | ||
1002 | |||
1003 | tab.addEventListener('click', () => { | ||
1004 | |||
1005 | offerSideTabs.forEach(tab => { | ||
1006 | tab.classList.remove('active'); | ||
1007 | }); | ||
1008 | |||
1009 | tab.classList.add('active'); | ||
1010 | |||
1011 | offerSideItems.forEach(item => { | ||
1012 | |||
1013 | item.classList.remove('active', 'fade'); | ||
1014 | |||
1015 | if (tab.dataset.tab == item.dataset.item) { | ||
1016 | item.classList.add('active', 'fade'); | ||
1017 | } | ||
1018 | |||
1019 | }); | ||
1020 | |||
1021 | }); | ||
1022 | |||
1023 | }); | ||
1024 | |||
1025 | } | ||
1026 | |||
1027 | } | ||
1028 | |||
1029 | |||
1030 | // логика открытия нужного таба при открытии поп-апа с планами объекат и этажа на странице предложения | ||
1031 | sontrolOfferSidePopup() { | ||
1032 | |||
1033 | const offerSideItems = document.querySelectorAll('.js_offer_side_item'); | ||
1034 | const offerSidePopupTabs = document.querySelectorAll('.js_offer_side_popup_tab'); | ||
1035 | const offerSidePopupItems = document.querySelectorAll('.js_offer_side_popup_item'); | ||
1036 | |||
1037 | if (offerSideItems) { | ||
1038 | |||
1039 | offerSideItems.forEach(item => { | ||
1040 | |||
1041 | const offerSideItemBtn = item.querySelector('.js_offer_side_item_btn'); | ||
1042 | |||
1043 | offerSideItemBtn.addEventListener('click', (e) => { | ||
1044 | |||
1045 | e.preventDefault(); | ||
1046 | |||
1047 | offerSidePopupTabs.forEach(tab => { | ||
1048 | |||
1049 | tab.classList.remove('active'); | ||
1050 | |||
1051 | if (item.dataset.item == tab.dataset.tab) { | ||
1052 | tab.classList.add('active'); | ||
1053 | } | ||
1054 | |||
1055 | }); | ||
1056 | |||
1057 | offerSidePopupItems.forEach(el => { | ||
1058 | |||
1059 | el.classList.remove('active', 'fade'); | ||
1060 | |||
1061 | if (item.dataset.item == el.dataset.item) { | ||
1062 | el.classList.add('active', 'fade'); | ||
1063 | } | ||
1064 | |||
1065 | }); | ||
1066 | |||
1067 | }); | ||
1068 | |||
1069 | }); | ||
1070 | |||
1071 | } | ||
1072 | |||
1073 | } | ||
1074 | |||
1075 | |||
1076 | // галлерея | ||
1077 | setCustomGallery() { | ||
1078 | |||
1079 | let swiper4 = new Swiper(".img-viewer__thumbs-swiper", { | ||
1080 | slidesPerView: 3, | ||
1081 | spaceBetween: 8, | ||
1082 | // freeMode: true, | ||
1083 | observer: true, | ||
1084 | observeParents: true, | ||
1085 | observeSlideChildren: true, | ||
1086 | breakpoints: { | ||
1087 | 640: { | ||
1088 | spaceBetween: 10, | ||
1089 | }, | ||
1090 | }, | ||
1091 | }); | ||
1092 | |||
1093 | let swiper5 = new Swiper(".img-viewer__slider .swiper", { | ||
1094 | navigation: { | ||
1095 | nextEl: ".img-viewer__slider .swiper-button-next", | ||
1096 | prevEl: ".img-viewer__slider .swiper-button-prev", | ||
1097 | }, | ||
1098 | slidesPerView: 1, | ||
1099 | spaceBetween: 20, | ||
1100 | thumbs: { | ||
1101 | swiper: swiper4 | ||
1102 | }, | ||
1103 | observer: true, | ||
1104 | observeParents: true, | ||
1105 | observeSlideChildren: true, | ||
1106 | }); | ||
1107 | |||
1108 | if (document.querySelector('.js_intro_item_btn')) { | ||
1109 | |||
1110 | const imgViewer = document.querySelector('.js_img_viewer'); | ||
1111 | const imgViewerCloses = imgViewer.querySelectorAll('.js_img_viewer_close'); | ||
1112 | const imgViewerCaption = imgViewer.querySelector('.js_img_viewer_caption'); | ||
1113 | |||
1114 | const imgViewerSliderSwiper = imgViewer.querySelector('.js_img_viewer_slider_swiper'); | ||
1115 | const imgViewerSliderSwiperWrap = imgViewerSliderSwiper.querySelector('.js_img_viewer_slider_swiper .swiper-wrapper'); | ||
1116 | |||
1117 | const imgViewerThumbsSwiper = imgViewer.querySelector('.js_img_viewer_thumbs_swiper'); | ||
1118 | const imgViewerThumbsSwiperWrap = imgViewerThumbsSwiper.querySelector('.js_img_viewer_thumbs_swiper .swiper-wrapper'); | ||
1119 | |||
1120 | const introItemBtns = document.querySelectorAll('.js_intro_item_btn'); | ||
1121 | |||
1122 | introItemBtns.forEach((btn, i) => { | ||
1123 | |||
1124 | btn.addEventListener('click', (e) => { | ||
1125 | |||
1126 | e.preventDefault(); | ||
1127 | |||
1128 | imgViewer.classList.add('active'); | ||
1129 | this.fixBodyPosition(); | ||
1130 | |||
1131 | imgViewerSliderSwiperWrap.innerHTML = ''; | ||
1132 | imgViewerThumbsSwiperWrap.innerHTML = ''; | ||
1133 | imgViewerCaption.textContent = ''; | ||
1134 | |||
1135 | |||
1136 | introItemBtns.forEach(btn => { | ||
1137 | |||
1138 | imgViewerSliderSwiperWrap.insertAdjacentHTML('beforeend', ` | ||
1139 | <div class="swiper-slide"> | ||
1140 | <img src="${btn.getAttribute('href')}" alt=""> | ||
1141 | </div>` | ||
1142 | ); | ||
1143 | |||
1144 | imgViewerThumbsSwiperWrap.insertAdjacentHTML('beforeend', ` | ||
1145 | <div class="swiper-slide"> | ||
1146 | <img src="${btn.getAttribute('href')}" alt=""> | ||
1147 | </div>` | ||
1148 | ); | ||
1149 | |||
1150 | }); | ||
1151 | |||
1152 | swiper4.update(); | ||
1153 | swiper5.update(); | ||
1154 | swiper5.slideTo(i); | ||
1155 | imgViewerCaption.textContent = btn.dataset.caption; | ||
1156 | |||
1157 | }); | ||
1158 | |||
1159 | }); | ||
1160 | |||
1161 | swiper5.on('slideChange', function () { | ||
1162 | imgViewerCaption.textContent = introItemBtns[swiper5.realIndex].dataset.caption; | ||
1163 | }); | ||
1164 | |||
1165 | imgViewerCloses.forEach(close => { | ||
1166 | |||
1167 | close.addEventListener('click', () => { | ||
1168 | |||
1169 | imgViewer.classList.remove('active'); | ||
1170 | this.unfixBodyPosition(); | ||
1171 | |||
1172 | }); | ||
1173 | |||
1174 | }); | ||
1175 | |||
1176 | } | ||
1177 | |||
1178 | } | ||
1179 | |||
1180 | |||
1181 | // куки | ||
1182 | setCookies() { | ||
1183 | |||
1184 | const cookies = document.querySelector('.js_cookies'); | ||
1185 | const cookiesBtn = document.querySelector('.js_cookies_confirm'); | ||
1186 | const cookiesTrigger = document.querySelector('.js_btn_cookies'); | ||
1187 | |||
1188 | if (cookiesTrigger) { | ||
1189 | |||
1190 | cookiesTrigger.addEventListener('click', () => { | ||
1191 | cookies.classList.add('active'); | ||
1192 | }); | ||
1193 | |||
1194 | }; | ||
1195 | |||
1196 | if (cookies) { | ||
1197 | |||
1198 | cookiesBtn.addEventListener('click', () => { | ||
1199 | cookies.classList.remove('active'); | ||
1200 | }); | ||
1201 | |||
1202 | }; | ||
1203 | |||
1204 | } | ||
1205 | |||
1206 | |||
1207 | // карта на странице карт; | ||
1208 | /* | ||
1209 | //setGeneralMap() { | ||
1210 | |||
1211 | if (document.querySelector('#general-map')) { | ||
1212 | |||
1213 | ymaps.ready(init); // Дождёмся загрузки API и готовности DOM; | ||
1214 | |||
1215 | function init() { | ||
1216 | |||
1217 | const myMap = new ymaps.Map('general-map', { // Создание экземпляра карты и его привязка к контейнеру с заданным id; | ||
1218 | center: [55.752933963675126, 37.52233749962665], // При инициализации карты обязательно нужно указать её центр и коэффициент масштабирования; | ||
1219 | zoom: 10, | ||
1220 | controls: [] // Скрываем элементы управления на карте; | ||
1221 | }); | ||
1222 | |||
1223 | // Создаём макет содержимого. | ||
1224 | const MyIconContentLayout = ymaps.templateLayoutFactory.createClass( | ||
1225 | '<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>' | ||
1226 | ); | ||
1227 | |||
1228 | let collection = new ymaps.GeoObjectCollection(null, { // Создаём коллекцию, в которую будемпомещать метки (что-то типа массива); | ||
1229 | // preset: 'islands#yellowIcon' | ||
1230 | }); | ||
1231 | |||
1232 | let collectionCoords = [ // Создаём массив с координатами (координаты должны располагаться в том же порядке, что и адреса в списке на сайте); | ||
1233 | [55.867783219108354, 37.392867499999916], | ||
1234 | [55.728043075486504, 37.73937949999994], | ||
1235 | [55.72624100423305, 37.476078499999964], | ||
1236 | [55.80751105044832, 37.449622999999974], | ||
1237 | [55.601783098948836, 37.36700499999998], | ||
1238 | [55.86086502152225, 37.540348999999964], | ||
1239 | [55.784961528728715, 37.56188599999996], | ||
1240 | [55.63910010399773, 37.319407999999996], | ||
1241 | [55.55819256767507, 37.55711549999994], | ||
1242 | [55.79829252928473, 37.52063549999999], | ||
1243 | ]; | ||
1244 | |||
1245 | for (let i = 0, l = collectionCoords.length; i < l; i++) { // C помощью цикла добавляем все метки в коллекцию; | ||
1246 | collection.add(new ymaps.Placemark(collectionCoords[i])); | ||
1247 | collection.get(i).properties.set('iconContent', `${i + 1}`); // Добавляем каждой метке порядковый номер, записываем его в свойство 'iconContent'; | ||
1248 | } | ||
1249 | |||
1250 | myMap.geoObjects.add(collection); // Добавляем коллекцию с метками на карту; | ||
1251 | |||
1252 | collection.options.set('iconLayout', 'default#imageWithContent'); // Необходимо указать данный тип макета; | ||
1253 | collection.options.set('iconImageHref', 'images/mark-complex.svg'); // Своё изображение иконки метки; | ||
1254 | collection.options.set('iconImageSize', [52, 67]); // Размеры метки; | ||
1255 | collection.options.set('iconImageOffset', [-26, -67]); // Смещение левого верхнего угла иконки относительно её "ножки" (точки привязки); | ||
1256 | collection.options.set('iconContentOffset', [0, 17]); | ||
1257 | collection.options.set('iconContentLayout', MyIconContentLayout); // Смещение левого верхнего угла иконки относительно её "ножки" (точки привязки); | ||
1258 | |||
1259 | const pageMapBar = document.querySelector('.js_page_map_bar'); | ||
1260 | const pageMapBarBtn = pageMapBar.querySelector('.js_page_map_bar_btn'); | ||
1261 | const pageMapBarList = pageMapBar.querySelector('.js_page_map_bar_list'); | ||
1262 | const pageMapBarCards = pageMapBar.querySelectorAll('.card-news'); | ||
1263 | |||
1264 | const showCard = (i) => { | ||
1265 | |||
1266 | pageMapBarCards.forEach((card, k) => { | ||
1267 | |||
1268 | card.classList.remove('active'); | ||
1269 | |||
1270 | if (i == k) { | ||
1271 | card.classList.add('active'); | ||
1272 | } | ||
1273 | |||
1274 | }); | ||
1275 | |||
1276 | }; | ||
1277 | |||
1278 | const hidecard = () => { | ||
1279 | |||
1280 | pageMapBarCards.forEach(card => { | ||
1281 | card.classList.remove('active'); | ||
1282 | }); | ||
1283 | |||
1284 | } | ||
1285 | |||
1286 | let pageMapBarItems; | ||
1287 | |||
1288 | pageMapBarBtn.addEventListener('click', () => { | ||
1289 | pageMapBar.classList.toggle('active'); | ||
1290 | }); | ||
1291 | |||
1292 | pageMapBarList.addEventListener('click', (e) => { | ||
1293 | |||
1294 | if (e.target.closest('.page-map-bar__item')) { | ||
1295 | |||
1296 | pageMapBarItems = pageMapBarList.querySelectorAll('.page-map-bar__item'); | ||
1297 | |||
1298 | pageMapBarItems.forEach((item, i) => { | ||
1299 | |||
1300 | if (e.target == item && e.target.classList.contains('active')) { | ||
1301 | |||
1302 | item.classList.remove('active'); | ||
1303 | |||
1304 | hidecard(); | ||
1305 | |||
1306 | } else if (e.target == item) { | ||
1307 | |||
1308 | pageMapBarItems.forEach(item => { | ||
1309 | item.classList.remove('active'); | ||
1310 | }); | ||
1311 | |||
1312 | item.classList.add('active'); | ||
1313 | |||
1314 | let offsetCoords = collection.get(i).geometry.getCoordinates(); | ||
1315 | |||
1316 | offsetCoords = [ | ||
1317 | offsetCoords[0] - 0.0025, | ||
1318 | offsetCoords[1] | ||
1319 | ]; | ||
1320 | |||
1321 | myMap.setZoom(16); | ||
1322 | // myMap.setCenter(collection.get(i).geometry.getCoordinates()); | ||
1323 | myMap.setCenter(offsetCoords); | ||
1324 | |||
1325 | showCard(i); | ||
1326 | |||
1327 | } | ||
1328 | |||
1329 | }); | ||
1330 | } | ||
1331 | |||
1332 | }); | ||
1333 | |||
1334 | collection.events.add('click', function (e) { | ||
1335 | |||
1336 | for (let i = 0, l = collection.getLength(); i < l; i++) { | ||
1337 | |||
1338 | if (e.get('target') == collection.get(i)) { | ||
1339 | |||
1340 | pageMapBarItems = pageMapBarList.querySelectorAll('.page-map-bar__item'); | ||
1341 | |||
1342 | pageMapBarItems.forEach((item) => { | ||
1343 | pageMapBar.classList.add('active'); | ||
1344 | item.classList.remove('active'); | ||
1345 | }); | ||
1346 | |||
1347 | pageMapBarItems[i].classList.add('active'); | ||
1348 | |||
1349 | showCard(i); | ||
1350 | |||
1351 | } | ||
1352 | |||
1353 | } | ||
1354 | |||
1355 | }); | ||
1356 | |||
1357 | } | ||
1358 | |||
1359 | } | ||
1360 | |||
1361 | };*/ | ||
1362 | |||
1363 | |||
1364 | // аккордеон в футере | ||
1365 | setFooterSpoilers() { | ||
1366 | |||
1367 | const items = document.querySelectorAll('.js_footer_col'); | ||
1368 | |||
1369 | items.forEach(item => { | ||
1370 | |||
1371 | const itemTitle = item.querySelector('.js_footer_caption'); | ||
1372 | const itemContent = item.querySelector('.js_footer_block'); | ||
1373 | |||
1374 | const blockToggle = (block, duration) => { | ||
1375 | |||
1376 | if (window.getComputedStyle(block).display == "none" && !block.classList.contains('smooth')) { | ||
1377 | |||
1378 | block.style.display = "block"; | ||
1379 | |||
1380 | const blockHeight = block.offsetHeight; | ||
1381 | |||
1382 | block.style.height = 0; | ||
1383 | block.style.overflow = "hidden"; | ||
1384 | block.style.transition = `height ${duration}ms ease`; | ||
1385 | block.classList.add('smooth'); | ||
1386 | block.offsetHeight; | ||
1387 | block.style.height = `${blockHeight}px`; | ||
1388 | |||
1389 | setTimeout(() => { | ||
1390 | |||
1391 | block.classList.remove('smooth'); | ||
1392 | block.style.height = ''; | ||
1393 | block.style.transition = ''; | ||
1394 | block.style.overflow = ''; | ||
1395 | |||
1396 | }, duration); | ||
1397 | |||
1398 | } else if (!block.classList.contains('smooth')) { | ||
1399 | |||
1400 | block.style.height = `${block.offsetHeight}px`; | ||
1401 | block.offsetHeight; | ||
1402 | block.style.height = 0; | ||
1403 | block.style.overflow = "hidden"; | ||
1404 | block.style.transition = `height ${duration}ms ease`; | ||
1405 | block.classList.add('smooth'); | ||
1406 | |||
1407 | setTimeout(() => { | ||
1408 | |||
1409 | block.classList.remove('smooth'); | ||
1410 | block.style.display = "none"; | ||
1411 | block.style.height = ''; | ||
1412 | block.style.transition = ''; | ||
1413 | block.style.overflow = ''; | ||
1414 | |||
1415 | }, duration); | ||
1416 | |||
1417 | } | ||
1418 | |||
1419 | }; | ||
1420 | |||
1421 | itemTitle.addEventListener('click', (e) => { | ||
1422 | itemTitle.classList.toggle('active'); | ||
1423 | blockToggle(itemContent, 300); | ||
1424 | }); | ||
1425 | |||
1426 | }); | ||
1427 | |||
1428 | } | ||
1429 | |||
1430 | |||
1431 | // слайдер с партнёрами; | ||
1432 | initPartnerslSlider() { | ||
1433 | |||
1434 | const slider = document.querySelector('.partners__swiper'); | ||
1435 | |||
1436 | if (slider) { | ||
1437 | |||
1438 | let swiper6; | ||
1439 | |||
1440 | const initSlider = () => { | ||
1441 | |||
1442 | swiper6 = new Swiper(slider, { | ||
1443 | // scrollbar: { | ||
1444 | // el: '.swiper-scrollbar', | ||
1445 | // draggable: true, | ||
1446 | // }, | ||
1447 | slidesPerView: 0.275, | ||
1448 | loop: true, | ||
1449 | spaceBetween: 20, | ||
1450 | freeMode: true, | ||
1451 | allowTouchMove: true, | ||
1452 | breakpoints: { | ||
1453 | 480: { | ||
1454 | slidesPerView: 0.4, | ||
1455 | }, | ||
1456 | 640: { | ||
1457 | slidesPerView: 0.65, | ||
1458 | }, | ||
1459 | 780: { | ||
1460 | slidesPerView: 0.65, | ||
1461 | }, | ||
1462 | 1024: { | ||
1463 | slidesPerView: 0.8, | ||
1464 | }, | ||
1465 | 1200: { | ||
1466 | slidesPerView: 1, | ||
1467 | loop: false, | ||
1468 | allowTouchMove: false, | ||
1469 | } | ||
1470 | } | ||
1471 | }); | ||
1472 | |||
1473 | }; | ||
1474 | |||
1475 | initSlider(); | ||
1476 | |||
1477 | const updateSlider = () => { | ||
1478 | swiper6.destroy(); | ||
1479 | initSlider(); | ||
1480 | } | ||
1481 | |||
1482 | window.addEventListener('resize', () => { | ||
1483 | |||
1484 | if (window.innerWidth <= 1200 && slider.dataset.mobile == 'false') { | ||
1485 | slider.dataset.mobile = 'true'; | ||
1486 | updateSlider(); | ||
1487 | } | ||
1488 | |||
1489 | if (window.innerWidth > 1200 && slider.dataset.mobile == 'true') { | ||
1490 | slider.dataset.mobile = 'false'; | ||
1491 | updateSlider(); | ||
1492 | } | ||
1493 | |||
1494 | }); | ||
1495 | |||
1496 | } | ||
1497 | |||
1498 | } | ||
1499 | |||
1500 | } | ||
1501 | |||
1502 | |||
1503 | document.addEventListener('DOMContentLoaded', () => { | ||
1504 | |||
1505 | const app = new App(); | ||
1506 | app.init(); | ||
1507 | |||
1508 | }); | ||
1509 |
public/js/main_new.js
1 | // управляющий класс App с методом init(), в котором собраны все используемые методы с комментариями о том, что конкретно делает каждый метод | File was deleted | |
2 | |||
3 | class App { | ||
4 | |||
5 | constructor() { | ||
6 | this.patternPhone = /^(\+7|7|8)?[\s\-]?\(?[489][0-9]{2}\)?[\s\-]?[0-9]{3}[\s\-]?[0-9]{2}[\s\-]?[0-9]{2}$/; // рег. выражение для поля 'телефон'; | ||
7 | this.patternEmail = /^[a-zA-Z0-9._%+-\.]+@[a-z0-9.-]+\.[a-z]{2,}$/i; // рег. выражение для поля 'электронная почта'; | ||
8 | } | ||
9 | |||
10 | init() { | ||
11 | |||
12 | console.log('init'); | ||
13 | |||
14 | this.stickyHeader(); // липкий хедер; | ||
15 | this.controlBurgerMenu(); // бургер-меню; | ||
16 | this.smoothScroll(); // плавный скролл к якорю (smooth scroll); | ||
17 | this.scrollUp(); // кнопка наверх; | ||
18 | this.addToFavorites(); // добавить в избранное (звёздочка); | ||
19 | this.initTypicalSlider(); // типовые слайдеры; | ||
20 | this.initPartnerslSlider(); // слайдер с партнёрами; | ||
21 | this.controlFilters(); // фильтры на главном экране; | ||
22 | this.controlPopups(); // открытие/закрытие поп-апов; | ||
23 | this.controlContactUsPopup(); // открытие/закрытие поп-апа 'обратный звонок'; | ||
24 | |||
25 | this.sendForm('.js_popup_feedback_form', '[data-popup="success"]'); // отправка формы в поп-апе обратной связи; | ||
26 | this.sendForm('.js_popup_viewing_form', '[data-popup="success"]'); // отправка формы в поп-апе 'записаться на просмотр'; | ||
27 | this.sendForm('.js_footer_feedback_form', '[data-popup="success"]'); // отправка формы в футере; | ||
28 | this.sendForm('.js_contacts_form', '.js_contacts_success'); // отправка формы на странице контакты; | ||
29 | this.sendForm('.js_popup_sending_form_', '[data-popup="success"]'); | ||
30 | //this.sendOffer(); //отправка предложения по e-mail; | ||
31 | |||
32 | //this.setGeneralMap(); // карта на странице карт; | ||
33 | this.setComplexMap('complex-map', [55.726591050908745, 37.57244549999999], 'ЖК Садовые кварталы'); // карта на странице 'ЖК'; | ||
34 | this.setComplexMap('offer-map', [55.70851106903402, 37.65864349999999], 'Аренда торгового помещения 321,6 м2'); // карта на странице 'Предложение'; | ||
35 | this.setCatalogSorts(); // сортировка на странице 'каталог'; | ||
36 | this.initIntroSlider(); // слайдер на странице жк и на странице предложения; | ||
37 | this.setTabs('.js_offer_side_tab', '.js_offer_side_item'); // табы с планами объекат и этажа на странице предложения; | ||
38 | this.setTabs('.js_offer_side_popup_tab', '.js_offer_side_popup_item'); // табы с планами объекат и этажа в поп-апе на странице предложения; | ||
39 | this.sontrolOfferSidePopup(); // логика открытия нужного таба при открытии поп-апа с планами объекат и этажа на странице предложения; | ||
40 | this.setCustomGallery(); // галлерея; | ||
41 | this.setCookies() // куки; | ||
42 | this.setFooterSpoilers() // аккордеон в футере; | ||
43 | |||
44 | } | ||
45 | |||
46 | // фиксация <body> | ||
47 | fixBodyPosition() { | ||
48 | |||
49 | setTimeout(function () { | ||
50 | // ставим необходимую задержку, чтобы не было «конфликта» в случае, если функция фиксации вызывается сразу после расфиксации (расфиксация отменяет действия расфиксации из-за одновременного действия) | ||
51 | |||
52 | if (!document.body.hasAttribute('data-body-scroll-fix')) { | ||
53 | |||
54 | // получаем позицию прокрутки | ||
55 | let scrollPosition = window.pageYOffset || document.documentElement.scrollTop; | ||
56 | |||
57 | // ставим нужные стили | ||
58 | document.body.setAttribute('data-body-scroll-fix', scrollPosition); // Cтавим атрибут со значением прокрутки | ||
59 | document.body.style.overflow = 'hidden'; | ||
60 | document.body.style.position = 'fixed'; | ||
61 | document.body.style.top = '-' + scrollPosition + 'px'; | ||
62 | document.body.style.left = '0'; | ||
63 | document.body.style.width = '100%'; | ||
64 | |||
65 | if (window.innerWidth >= 1200) { | ||
66 | document.body.style.paddingRight = '8px'; | ||
67 | } | ||
68 | } | ||
69 | |||
70 | }, 15); // можно задержку ещё меньше, но работает хорошо именно с этим значением на всех устройствах и браузерах | ||
71 | |||
72 | } | ||
73 | |||
74 | |||
75 | // расфиксация <body> | ||
76 | unfixBodyPosition() { | ||
77 | |||
78 | if (document.body.hasAttribute('data-body-scroll-fix')) { | ||
79 | |||
80 | // получаем позицию прокрутки из атрибута | ||
81 | let scrollPosition = document.body.getAttribute('data-body-scroll-fix'); | ||
82 | |||
83 | // удаляем атрибут | ||
84 | document.body.removeAttribute('data-body-scroll-fix'); | ||
85 | |||
86 | // удаляем ненужные стили | ||
87 | document.body.style.overflow = ''; | ||
88 | document.body.style.position = ''; | ||
89 | document.body.style.top = ''; | ||
90 | document.body.style.left = ''; | ||
91 | document.body.style.width = ''; | ||
92 | document.body.style.paddingRight = ''; | ||
93 | |||
94 | // прокручиваем страницу на полученное из атрибута значение | ||
95 | window.scroll(0, scrollPosition); | ||
96 | |||
97 | } | ||
98 | |||
99 | } | ||
100 | |||
101 | |||
102 | // бургер-меню | ||
103 | controlBurgerMenu() { | ||
104 | |||
105 | const headerBurger = document.querySelector('.js_header_burger'); | ||
106 | |||
107 | if (headerBurger) { | ||
108 | |||
109 | const menu = document.querySelector('.js_menu'); | ||
110 | const menuClose = menu.querySelector('.js_menu_close'); | ||
111 | |||
112 | headerBurger.addEventListener('click', () => { | ||
113 | menu.classList.add('active'); | ||
114 | this.fixBodyPosition(); | ||
115 | }); | ||
116 | |||
117 | menu.addEventListener('click', (e) => { | ||
118 | |||
119 | if (e.target == menu) { | ||
120 | menu.classList.remove('active'); | ||
121 | this.unfixBodyPosition(); | ||
122 | } | ||
123 | |||
124 | }); | ||
125 | |||
126 | menuClose.addEventListener('click', () => { | ||
127 | menu.classList.remove('active'); | ||
128 | this.unfixBodyPosition(); | ||
129 | }); | ||
130 | |||
131 | } | ||
132 | |||
133 | } | ||
134 | |||
135 | |||
136 | // липкий хедер | ||
137 | stickyHeader() { | ||
138 | |||
139 | const header = document.querySelector('.js_header'); | ||
140 | |||
141 | if (header) { | ||
142 | |||
143 | window.addEventListener('scroll', () => { | ||
144 | |||
145 | if (window.scrollY > 200) { | ||
146 | header.classList.add('fixed'); | ||
147 | } else { | ||
148 | header.classList.remove('fixed'); | ||
149 | } | ||
150 | |||
151 | }); | ||
152 | |||
153 | }; | ||
154 | |||
155 | } | ||
156 | |||
157 | |||
158 | // плавный скролл к якорю (smooth scroll) | ||
159 | smoothScroll() { | ||
160 | |||
161 | const smoothLinks = document.querySelectorAll('.js_smooth_link'); | ||
162 | |||
163 | if (smoothLinks.length) { | ||
164 | |||
165 | smoothLinks.forEach(link => { | ||
166 | |||
167 | link.addEventListener('click', function (e) { | ||
168 | |||
169 | e.preventDefault(); | ||
170 | |||
171 | let href = this.getAttribute('href').substring(1); | ||
172 | |||
173 | const scrollTarget = document.getElementById(href); | ||
174 | |||
175 | // const topOffset = document.querySelector('.header').offsetHeight; | ||
176 | const topOffset = 0; // если не нужен отступ сверху | ||
177 | const elementPosition = scrollTarget.getBoundingClientRect().top; | ||
178 | const offsetPosition = elementPosition - topOffset; | ||
179 | |||
180 | window.scrollBy({ | ||
181 | top: offsetPosition, | ||
182 | behavior: 'smooth' | ||
183 | }); | ||
184 | |||
185 | }); | ||
186 | |||
187 | }); | ||
188 | |||
189 | } | ||
190 | |||
191 | } | ||
192 | |||
193 | |||
194 | // кнопка наверх | ||
195 | scrollUp() { | ||
196 | |||
197 | const toTopBtn = document.querySelector('.js_btn_up'); | ||
198 | |||
199 | if (toTopBtn) { | ||
200 | |||
201 | toTopBtn.addEventListener('click', function () { | ||
202 | |||
203 | window.scrollTo({ | ||
204 | top: 0, | ||
205 | behavior: 'smooth' | ||
206 | }); | ||
207 | |||
208 | }); | ||
209 | |||
210 | } | ||
211 | |||
212 | } | ||
213 | |||
214 | |||
215 | // добавить в избранное (звёздочка) | ||
216 | addToFavorites() { | ||
217 | |||
218 | const cardFavorites = document.querySelectorAll('.js_card_favorites'); | ||
219 | |||
220 | if (cardFavorites.length) { | ||
221 | |||
222 | cardFavorites.forEach(item => { | ||
223 | |||
224 | item.addEventListener('click', (e) => { | ||
225 | e.preventDefault(); | ||
226 | item.classList.toggle('active'); | ||
227 | }); | ||
228 | |||
229 | }); | ||
230 | |||
231 | } | ||
232 | |||
233 | } | ||
234 | |||
235 | |||
236 | // типовые слайдеры | ||
237 | initTypicalSlider() { | ||
238 | |||
239 | const slidersWraps = document.querySelectorAll('.slider__wrap'); | ||
240 | |||
241 | if (slidersWraps.length) { | ||
242 | |||
243 | slidersWraps.forEach(wrap => { | ||
244 | |||
245 | const slider = wrap.querySelector('.swiper'); | ||
246 | const prev = wrap.querySelector('.swiper-button-prev'); | ||
247 | const next = wrap.querySelector('.swiper-button-next'); | ||
248 | const pagination = wrap.querySelector('.swiper-pagination'); | ||
249 | |||
250 | let swiper1 = new Swiper(slider, { | ||
251 | navigation: { | ||
252 | nextEl: next, | ||
253 | prevEl: prev, | ||
254 | }, | ||
255 | pagination: { | ||
256 | el: pagination, | ||
257 | clickable: true, | ||
258 | }, | ||
259 | slidesPerView: 1, | ||
260 | spaceBetween: 20, | ||
261 | observer: true, | ||
262 | observeParents: true, | ||
263 | observeSlideChildren: true, | ||
264 | breakpoints: { | ||
265 | 480: { | ||
266 | slidesPerView: 1.5, | ||
267 | }, | ||
268 | 640: { | ||
269 | slidesPerView: 2, | ||
270 | }, | ||
271 | 780: { | ||
272 | slidesPerView: 2.5, | ||
273 | }, | ||
274 | 920: { | ||
275 | slidesPerView: 3, | ||
276 | }, | ||
277 | 1024: { | ||
278 | slidesPerView: 3.4 | ||
279 | }, | ||
280 | 1200: { | ||
281 | slidesPerView: 4, | ||
282 | } | ||
283 | } | ||
284 | }); | ||
285 | |||
286 | }); | ||
287 | |||
288 | } | ||
289 | |||
290 | } | ||
291 | |||
292 | |||
293 | // метод, делающий число удобночитаемым (добавляет пробел справа через каждые 3 цифры) | ||
294 | prettify(num) { | ||
295 | const withoutSpace = num.replace(/[^\d]/g, ''); //убирает все символы; | ||
296 | return withoutSpace.replace(/(?!^)(?=(?:\d{3})+(?:\.|$))/gm, ' '); //ставит пробелы; | ||
297 | } | ||
298 | |||
299 | |||
300 | // фильтры на главном экране | ||
301 | controlFilters() { | ||
302 | |||
303 | const heroFilters = document.querySelectorAll('.js_hero_filter'); | ||
304 | const heroSearchBtns = document.querySelectorAll('.js_hero_search_btn'); | ||
305 | |||
306 | if (heroFilters.length) { | ||
307 | |||
308 | heroFilters.forEach(filter => { | ||
309 | |||
310 | const heroFilterInput = filter.querySelector('.js_hero_filter_input'); | ||
311 | const heroFilterCurrent = filter.querySelector('.js_hero_filter_current'); | ||
312 | const heroFilterItems = filter.querySelectorAll('.hero-filter__item'); | ||
313 | const heroFilterFields = filter.querySelectorAll('.js_hero_filter_field'); | ||
314 | const heroFilterFrom = filter.querySelector('.js_hero_filter_from'); | ||
315 | const heroFilterTo = filter.querySelector('.js_hero_filter_to'); | ||
316 | const heroFilterReset = filter.querySelector('.js_hero_filter_reset'); | ||
317 | |||
318 | heroFilterCurrent.addEventListener('click', () => { | ||
319 | |||
320 | if (filter.classList.contains('active')) { | ||
321 | |||
322 | filter.classList.remove('active'); | ||
323 | |||
324 | heroSearchBtns.forEach(btn => { | ||
325 | btn.disabled = false; | ||
326 | }); | ||
327 | |||
328 | } else { | ||
329 | |||
330 | heroFilters.forEach(filter => { | ||
331 | filter.classList.remove('active'); | ||
332 | }); | ||
333 | |||
334 | filter.classList.add('active'); | ||
335 | |||
336 | heroSearchBtns.forEach(btn => { | ||
337 | btn.disabled = true; | ||
338 | }); | ||
339 | |||
340 | } | ||
341 | |||
342 | }); | ||
343 | |||
344 | if (heroFilterItems.length) { | ||
345 | |||
346 | heroFilterItems.forEach(item => { | ||
347 | |||
348 | item.addEventListener('click', () => { | ||
349 | |||
350 | heroFilterCurrent.textContent = item.textContent; | ||
351 | heroFilterInput.value = item.dataset.val; | ||
352 | filter.classList.remove('active'); | ||
353 | |||
354 | heroSearchBtns.forEach(btn => { | ||
355 | btn.disabled = false; | ||
356 | }); | ||
357 | |||
358 | }); | ||
359 | |||
360 | }); | ||
361 | |||
362 | } | ||
363 | |||
364 | if (heroFilterFields.length) { | ||
365 | |||
366 | const heroFilterMin = heroFilterFrom.dataset.min; | ||
367 | const heroFilterMax = heroFilterTo.dataset.max; | ||
368 | |||
369 | let heroFilterFromVal; | ||
370 | let heroFilterToVal; | ||
371 | |||
372 | heroFilterFields.forEach(field => { | ||
373 | |||
374 | field.addEventListener('input', () => { | ||
375 | |||
376 | field.value = this.prettify(field.value); | ||
377 | |||
378 | heroFilterReset.classList.remove('active'); | ||
379 | |||
380 | heroFilterFields.forEach(field => { | ||
381 | |||
382 | if (field.value != "") { | ||
383 | heroFilterReset.classList.add('active'); | ||
384 | } | ||
385 | |||
386 | }); | ||
387 | |||
388 | }); | ||
389 | |||
390 | }); | ||
391 | |||
392 | heroFilterFrom.addEventListener('change', () => { | ||
393 | |||
394 | heroFilterFromVal = +heroFilterFrom.value.replace(/\s/g, ''); | ||
395 | heroFilterToVal = +heroFilterTo.value.replace(/\s/g, ''); | ||
396 | |||
397 | if (heroFilterToVal != '' && heroFilterFromVal > heroFilterToVal) { | ||
398 | |||
399 | heroFilterFrom.value = heroFilterTo.value; | ||
400 | |||
401 | } else if (heroFilterFromVal < +heroFilterMin) { | ||
402 | |||
403 | heroFilterFrom.value = this.prettify(heroFilterMin); | ||
404 | |||
405 | } else if (heroFilterFromVal > +heroFilterMax) { | ||
406 | |||
407 | heroFilterFrom.value = this.prettify(heroFilterMax); | ||
408 | |||
409 | } | ||
410 | |||
411 | }); | ||
412 | |||
413 | heroFilterTo.addEventListener('change', () => { | ||
414 | |||
415 | heroFilterFromVal = +heroFilterFrom.value.replace(/\s/g, ''); | ||
416 | heroFilterToVal = +heroFilterTo.value.replace(/\s/g, ''); | ||
417 | |||
418 | if (heroFilterFromVal != '' && heroFilterToVal < heroFilterFromVal) { | ||
419 | |||
420 | heroFilterTo.value = heroFilterFrom.value; | ||
421 | |||
422 | } else if (heroFilterToVal < +heroFilterMin) { | ||
423 | |||
424 | heroFilterTo.value = this.prettify(heroFilterMax); | ||
425 | |||
426 | } else if (heroFilterToVal > +heroFilterMax) { | ||
427 | |||
428 | heroFilterTo.value = this.prettify(heroFilterMax); | ||
429 | |||
430 | } | ||
431 | |||
432 | }); | ||
433 | |||
434 | heroFilterReset.addEventListener('click', () => { | ||
435 | |||
436 | heroFilterFields.forEach(field => { | ||
437 | field.value = ''; | ||
438 | }); | ||
439 | |||
440 | heroFilterReset.classList.remove('active'); | ||
441 | |||
442 | }); | ||
443 | } | ||
444 | |||
445 | }); | ||
446 | |||
447 | document.addEventListener('click', (e) => { | ||
448 | |||
449 | if (!e.target.closest('.js_hero_filter_dropdown') && !e.target.closest('.js_hero_filter_current')) { | ||
450 | |||
451 | heroFilters.forEach(filter => { | ||
452 | filter.classList.remove('active'); | ||
453 | }); | ||
454 | |||
455 | heroSearchBtns.forEach(btn => { | ||
456 | btn.disabled = false; | ||
457 | }); | ||
458 | |||
459 | } | ||
460 | |||
461 | }); | ||
462 | |||
463 | } | ||
464 | |||
465 | } | ||
466 | |||
467 | |||
468 | // открытие/закрытие типовых поп-апов | ||
469 | controlPopups() { | ||
470 | |||
471 | const popupShowBtns = document.querySelectorAll('[data-btn]'); | ||
472 | const popups = document.querySelectorAll('[data-popup]'); | ||
473 | |||
474 | if (popupShowBtns.length) { | ||
475 | |||
476 | popupShowBtns.forEach(btn => { | ||
477 | |||
478 | btn.addEventListener('click', (e) => { | ||
479 | |||
480 | e.preventDefault(); | ||
481 | |||
482 | popups.forEach(popup => { | ||
483 | |||
484 | popup.classList.remove('active'); // если какойто поп-ап открыт, то закрываем его; | ||
485 | this.unfixBodyPosition(); | ||
486 | |||
487 | if (btn.dataset.btn == popup.dataset.popup) { | ||
488 | popup.classList.add('active'); | ||
489 | this.fixBodyPosition(); | ||
490 | } | ||
491 | |||
492 | }); | ||
493 | |||
494 | |||
495 | }); | ||
496 | |||
497 | }); | ||
498 | |||
499 | popups.forEach(popup => { | ||
500 | |||
501 | const popupCloseBtns = popup.querySelectorAll('.js_popup_close'); | ||
502 | |||
503 | popupCloseBtns.forEach(btn => { | ||
504 | |||
505 | btn.addEventListener('click', (e) => { | ||
506 | e.preventDefault(); | ||
507 | popup.classList.remove('active'); | ||
508 | this.unfixBodyPosition(); | ||
509 | }); | ||
510 | |||
511 | }); | ||
512 | |||
513 | popup.addEventListener('click', (e) => { | ||
514 | |||
515 | if (e.target == popup) { | ||
516 | |||
517 | popup.classList.remove('active'); | ||
518 | this.unfixBodyPosition(); | ||
519 | } | ||
520 | |||
521 | }); | ||
522 | |||
523 | }); | ||
524 | |||
525 | } | ||
526 | } | ||
527 | |||
528 | |||
529 | // открытие/закрытие поп-апа 'обратный звонок' | ||
530 | controlContactUsPopup() { | ||
531 | |||
532 | const contactUsBtn = document.querySelector('.js_btn_contact_us'); | ||
533 | const contactUsPopup = document.querySelector('.js_contact_us'); | ||
534 | |||
535 | if (contactUsPopup) { | ||
536 | |||
537 | const contactUsPopupCloseBtns = contactUsPopup.querySelectorAll('.js_contact_us_close'); | ||
538 | |||
539 | contactUsBtn.addEventListener('click', (e) => { | ||
540 | |||
541 | e.preventDefault(); | ||
542 | |||
543 | if (contactUsPopup.classList.contains('active')) { | ||
544 | contactUsPopup.classList.remove('active'); | ||
545 | } else { | ||
546 | contactUsPopup.classList.add('active'); | ||
547 | } | ||
548 | |||
549 | }); | ||
550 | |||
551 | contactUsPopupCloseBtns.forEach(btn => { | ||
552 | btn.addEventListener('click', () => { | ||
553 | contactUsPopup.classList.remove('active'); | ||
554 | }); | ||
555 | }); | ||
556 | |||
557 | |||
558 | document.addEventListener('click', (e) => { | ||
559 | |||
560 | if (!e.target.closest('.js_contact_us') && !e.target.closest('.js_btn_contact_us')) { | ||
561 | contactUsPopup.classList.remove('active'); | ||
562 | } | ||
563 | |||
564 | }); | ||
565 | |||
566 | } | ||
567 | |||
568 | } | ||
569 | |||
570 | |||
571 | // валидатор форм | ||
572 | validateForm(input) { | ||
573 | |||
574 | // функция добавления ошибки | ||
575 | const createError = (text) => { | ||
576 | |||
577 | input.classList.add('error'); | ||
578 | input.classList.remove('no-error'); | ||
579 | |||
580 | if (input.closest('label').querySelector('span.error')) { | ||
581 | input.closest('label').querySelector('span.error').remove(); | ||
582 | input.closest('label').insertAdjacentHTML('beforeend', `<span class="error">${text}</span>`); | ||
583 | } else { | ||
584 | input.closest('label').insertAdjacentHTML('beforeend', `<span class="error">${text}</span>`); | ||
585 | } | ||
586 | |||
587 | } | ||
588 | |||
589 | // функция удаления ошибки | ||
590 | const removeError = () => { | ||
591 | |||
592 | input.classList.remove('error'); | ||
593 | input.classList.add('no-error'); | ||
594 | |||
595 | if (input.closest('label').querySelector('span.error')) { | ||
596 | input.closest('label').querySelector('span.error').remove(); | ||
597 | } | ||
598 | |||
599 | } | ||
600 | |||
601 | // проверяем на правильность заполнения поля 'Телефон' | ||
602 | if (input.classList.contains('js_input_phone') && input.value == "") { | ||
603 | createError('Заполните, пожалуйста, поле'); | ||
604 | } else if (input.classList.contains('js_input_phone') && input.value.search(this.patternPhone) == 0) { | ||
605 | removeError(); | ||
606 | } else if (input.classList.contains('js_input_phone')) { | ||
607 | createError('Укажите, пожалуйста, корректный телефон'); | ||
608 | } | ||
609 | |||
610 | // проверяем правильность заполнения поля 'Электронная почта' | ||
611 | if (input.classList.contains('js_input_email') && input.value == "") { | ||
612 | createError('Заполните, пожалуйста, поле'); | ||
613 | } else if (input.classList.contains('js_input_email') && input.value.search(this.patternEmail) == 0) { | ||
614 | removeError(); | ||
615 | } else if (input.classList.contains('js_input_email')) { | ||
616 | createError('Укажите, пожалуйста, корректный e-mail'); | ||
617 | } | ||
618 | |||
619 | } | ||
620 | |||
621 | |||
622 | // отправка форм | ||
623 | sendForm(formEl, success) { | ||
624 | |||
625 | const form = document.querySelector(formEl); | ||
626 | |||
627 | if (form) { | ||
628 | |||
629 | form.addEventListener('submit', async (e) => { | ||
630 | |||
631 | e.preventDefault(); | ||
632 | |||
633 | const formInputs = form.querySelectorAll('input'); | ||
634 | const formBtn = form.querySelector('.js_form_btn'); | ||
635 | |||
636 | formInputs.forEach(input => { // перебираем все инпуты в форме; | ||
637 | |||
638 | this.validateForm(input); | ||
639 | |||
640 | input.addEventListener('input', () => { | ||
641 | this.validateForm(input); | ||
642 | }); | ||
643 | |||
644 | }); | ||
645 | |||
646 | if (!form.querySelector('.error')) { //проверяем, чтоб все инпуты прошли валидацию (чтоб не было в форме ни одного элемента с класссом error); | ||
647 | |||
648 | // сюда пишем команды, которые должны сработать после успешной валидации; | ||
649 | |||
650 | console.log('validate'); | ||
651 | formBtn.classList.add('btn-animate'); | ||
652 | formBtn.disabled = true; | ||
653 | |||
654 | const formData = new FormData(form); | ||
655 | |||
656 | console.log(...formData); | ||
657 | |||
658 | const response = await fetch(e.target.action, { | ||
659 | method: e.target.method, | ||
660 | body: formData | ||
661 | }); | ||
662 | |||
663 | if (response.ok) { | ||
664 | |||
665 | setTimeout(() => { // имитация отправки, когда отправка будет настроена, нужно достать всё из setTimeout() и удалить его; | ||
666 | |||
667 | console.log('Отправлено'); | ||
668 | formBtn.classList.remove('btn-animate'); | ||
669 | formBtn.disabled = false; | ||
670 | if (document.querySelector('[data-popup="feedback"]')) { | ||
671 | document.querySelector('[data-popup="feedback"]').classList.remove('active'); | ||
672 | } | ||
673 | if (document.querySelector('[data-popup="viewing"]')) { | ||
674 | document.querySelector('[data-popup="viewing"]').classList.remove('active'); | ||
675 | } | ||
676 | document.querySelector(success).classList.add('active'); | ||
677 | this.fixBodyPosition(); | ||
678 | form.reset(); | ||
679 | |||
680 | formInputs.forEach(input => { | ||
681 | input.classList.remove('no-error'); | ||
682 | }); | ||
683 | |||
684 | }, 2000) | ||
685 | |||
686 | } else { | ||
687 | formBtn.classList.remove('btn-animate'); | ||
688 | formBtn.disabled = false; | ||
689 | alert('Ошибка'); | ||
690 | } | ||
691 | |||
692 | } else { | ||
693 | console.log('no-validate'); | ||
694 | form.querySelector('.error').focus(); //фокус к полю с ошибкой; | ||
695 | } | ||
696 | |||
697 | }); | ||
698 | |||
699 | } | ||
700 | |||
701 | } | ||
702 | |||
703 | //отправка предложения по e-mail | ||
704 | sendOffer() { | ||
705 | |||
706 | const form = document.querySelector('.js_popup_sending_form'); | ||
707 | |||
708 | if (form) { | ||
709 | |||
710 | form.addEventListener('submit', async (e) => { | ||
711 | |||
712 | e.preventDefault(); | ||
713 | |||
714 | const formInputs = form.querySelectorAll('input'); | ||
715 | const formBtn = form.querySelector('.js_form_btn'); | ||
716 | |||
717 | formInputs.forEach(input => { // перебираем все инпуты в форме; | ||
718 | |||
719 | this.validateForm(input); | ||
720 | |||
721 | input.addEventListener('input', () => { | ||
722 | this.validateForm(input); | ||
723 | }); | ||
724 | |||
725 | }); | ||
726 | |||
727 | if (!form.querySelector('.error')) { //проверяем, чтоб все инпуты прошли валидацию (чтоб не было в форме ни одного элемента с класссом error); | ||
728 | |||
729 | // сюда пишем команды, которые должны сработать после успешной валидации; | ||
730 | |||
731 | console.log('validate'); | ||
732 | formBtn.classList.add('btn-animate'); | ||
733 | formBtn.disabled = true; | ||
734 | |||
735 | const formData = new FormData(form); | ||
736 | |||
737 | console.log(...formData); | ||
738 | |||
739 | const response = await fetch(e.target.action, { | ||
740 | method: e.target.method, | ||
741 | body: formData | ||
742 | }); | ||
743 | |||
744 | if (response.ok) { | ||
745 | |||
746 | setTimeout(() => { // имитация отправки, когда отправка будет настроена, нужно достать всё из setTimeout() и удалить его; | ||
747 | |||
748 | console.log('Отправлено'); | ||
749 | formBtn.classList.remove('btn-animate'); | ||
750 | formBtn.disabled = false; | ||
751 | if (document.querySelector('[data-popup="sending"]')) { | ||
752 | document.querySelector('[data-popup="sending"]').classList.remove('active'); | ||
753 | } | ||
754 | this.fixBodyPosition(); | ||
755 | form.reset(); | ||
756 | |||
757 | formInputs.forEach(input => { | ||
758 | input.classList.remove('no-error'); | ||
759 | }); | ||
760 | |||
761 | }, 2000) | ||
762 | |||
763 | } else { | ||
764 | formBtn.classList.remove('btn-animate'); | ||
765 | formBtn.disabled = false; | ||
766 | alert('Ошибка'); | ||
767 | } | ||
768 | |||
769 | } else { | ||
770 | console.log('no-validate'); | ||
771 | form.querySelector('.error').focus(); //фокус к полю с ошибкой; | ||
772 | } | ||
773 | |||
774 | }); | ||
775 | |||
776 | } | ||
777 | |||
778 | } | ||
779 | |||
780 | |||
781 | // карта на странице 'ЖК' | ||
782 | setComplexMap(id, coords, caption) { | ||
783 | |||
784 | if (document.querySelector('#' + id)) { | ||
785 | |||
786 | // Дождёмся загрузки API и готовности DOM. | ||
787 | ymaps.ready(init); | ||
788 | |||
789 | function init() { | ||
790 | const map = new ymaps.Map(id, { | ||
791 | // При инициализации карты обязательно нужно указать её центр и коэффициент масштабирования. | ||
792 | center: coords, | ||
793 | zoom: 16, | ||
794 | controls: [] | ||
795 | }); | ||
796 | |||
797 | // Создаём макет содержимого. | ||
798 | const MyIconContentLayout = ymaps.templateLayoutFactory.createClass( | ||
799 | '<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>' | ||
800 | ); | ||
801 | |||
802 | // Создание макета содержимого хинта. | ||
803 | // Макет создается через фабрику макетов с помощью текстового шаблона. | ||
804 | const HintLayout = ymaps.templateLayoutFactory.createClass("<div class='my-hint'>" + | ||
805 | "{{ properties.object }}" + "</div>", { | ||
806 | // Определяем метод getShape, который | ||
807 | // будет возвращать размеры макета хинта. | ||
808 | // Это необходимо для того, чтобы хинт автоматически | ||
809 | // сдвигал позицию при выходе за пределы карты. | ||
810 | getShape: function () { | ||
811 | let el = this.getElement(), | ||
812 | result = null; | ||
813 | if (el) { | ||
814 | var firstChild = el.firstChild; | ||
815 | result = new ymaps.shape.Rectangle( | ||
816 | new ymaps.geometry.pixel.Rectangle([ | ||
817 | [0, 0], | ||
818 | [firstChild.offsetWidth, firstChild.offsetHeight] | ||
819 | ]) | ||
820 | ); | ||
821 | } | ||
822 | return result; | ||
823 | } | ||
824 | } | ||
825 | ); | ||
826 | |||
827 | // метка | ||
828 | const placemark = new ymaps.Placemark(coords, { | ||
829 | // hintContent: caption, | ||
830 | // balloonContent: caption, | ||
831 | iconContent: '1', | ||
832 | // address: caption, | ||
833 | object: caption | ||
834 | }, { | ||
835 | iconLayout: 'default#imageWithContent', | ||
836 | iconImageHref: 'images/mark-complex.svg', | ||
837 | iconImageSize: [52, 67], | ||
838 | iconImageOffset: [-26, -67], | ||
839 | iconContentOffset: [0, 17], | ||
840 | iconContentLayout: MyIconContentLayout, | ||
841 | hintLayout: HintLayout | ||
842 | }); | ||
843 | |||
844 | map.geoObjects.add(placemark); | ||
845 | |||
846 | } | ||
847 | |||
848 | } | ||
849 | |||
850 | } | ||
851 | |||
852 | |||
853 | // фильтры и сортировка на странице 'каталог' | ||
854 | setCatalogSorts() { | ||
855 | |||
856 | const sortGroups = document.querySelectorAll('.js_sort_group'); | ||
857 | |||
858 | if (sortGroups.length) { | ||
859 | |||
860 | sortGroups.forEach(group => { | ||
861 | |||
862 | const sortGroupInput = group.querySelector('.js_sort_group_input'); | ||
863 | const sortGroupCurrent = group.querySelector('.js_sort_group_current'); | ||
864 | const sortGroupList = group.querySelector('.js_sort_group_list'); | ||
865 | const sortGroupItems = group.querySelectorAll('.js_sort_group_item'); | ||
866 | |||
867 | const sendRequest = () => { | ||
868 | |||
869 | const spinner = document.querySelector('.spinner'); // спиннер; | ||
870 | |||
871 | spinner.classList.add('active'); | ||
872 | document.body.classList.add('overlay'); | ||
873 | /*this.fixBodyPosition(); | ||
874 | |||
875 | fetch('test.json') | ||
876 | .then(response => response.json()) | ||
877 | .then(data => { | ||
878 | |||
879 | console.log() | ||
880 | |||
881 | setTimeout(() => { //имитация ответа сервера | ||
882 | |||
883 | spinner.classList.remove('active'); | ||
884 | document.body.classList.remove('overlay'); | ||
885 | this.unfixBodyPosition(); | ||
886 | |||
887 | }, 3000); | ||
888 | |||
889 | }) | ||
890 | .catch(err => { | ||
891 | console.log(err); | ||
892 | }); | ||
893 | |||
894 | */ | ||
895 | spinner.classList.remove('active'); | ||
896 | document.body.classList.remove('overlay'); | ||
897 | |||
898 | |||
899 | }; | ||
900 | |||
901 | sortGroupCurrent.addEventListener('click', () => { | ||
902 | |||
903 | if (group.classList.contains('active')) { | ||
904 | |||
905 | group.classList.remove('active'); | ||
906 | |||
907 | } else { | ||
908 | |||
909 | sortGroups.forEach(group => { | ||
910 | group.classList.remove('active'); | ||
911 | }); | ||
912 | |||
913 | group.classList.add('active'); | ||
914 | |||
915 | } | ||
916 | |||
917 | }); | ||
918 | |||
919 | sortGroupItems.forEach(item => { | ||
920 | |||
921 | item.addEventListener('click', () => { | ||
922 | |||
923 | sortGroupItems.forEach(item => { | ||
924 | item.classList.remove('active'); | ||
925 | }); | ||
926 | |||
927 | item.classList.add('active'); | ||
928 | sortGroupCurrent.textContent = item.textContent; | ||
929 | sortGroupInput.value = item.dataset.val; | ||
930 | group.classList.remove('active'); | ||
931 | |||
932 | sendRequest(); | ||
933 | |||
934 | }); | ||
935 | |||
936 | }); | ||
937 | |||
938 | }); | ||
939 | |||
940 | document.addEventListener('click', (e) => { | ||
941 | |||
942 | if (!e.target.closest('.js_sort_group_list') && !e.target.closest('.js_sort_group_current')) { | ||
943 | |||
944 | sortGroups.forEach(group => { | ||
945 | group.classList.remove('active'); | ||
946 | }); | ||
947 | |||
948 | } | ||
949 | |||
950 | }); | ||
951 | |||
952 | } | ||
953 | |||
954 | } | ||
955 | |||
956 | |||
957 | // слайдер на странице жк и на странице предложения | ||
958 | initIntroSlider() { | ||
959 | |||
960 | let swiper3 = new Swiper('.intro__swiper', { | ||
961 | navigation: { | ||
962 | nextEl: '.swiper-button-next', | ||
963 | prevEl: '.swiper-button-prev', | ||
964 | }, | ||
965 | pagination: { | ||
966 | el: '.swiper-pagination', | ||
967 | clickable: true, | ||
968 | }, | ||
969 | slidesPerView: 1.1, | ||
970 | spaceBetween: 20, | ||
971 | breakpoints: { | ||
972 | 480: { | ||
973 | slidesPerView: 1.5, | ||
974 | }, | ||
975 | 640: { | ||
976 | slidesPerView: 1.75, | ||
977 | }, | ||
978 | 780: { | ||
979 | slidesPerView: 2.15, | ||
980 | }, | ||
981 | 1024: { | ||
982 | slidesPerView: 3.5, | ||
983 | }, | ||
984 | 1200: { | ||
985 | slidesPerView: 1, | ||
986 | } | ||
987 | } | ||
988 | }); | ||
989 | |||
990 | } | ||
991 | |||
992 | |||
993 | // табы на странице предложения | ||
994 | setTabs(tabs, items) { | ||
995 | |||
996 | const offerSideTabs = document.querySelectorAll(tabs); | ||
997 | const offerSideItems = document.querySelectorAll(items); | ||
998 | |||
999 | if (offerSideTabs) { | ||
1000 | |||
1001 | offerSideTabs.forEach(tab => { | ||
1002 | |||
1003 | tab.addEventListener('click', () => { | ||
1004 | |||
1005 | offerSideTabs.forEach(tab => { | ||
1006 | tab.classList.remove('active'); | ||
1007 | }); | ||
1008 | |||
1009 | tab.classList.add('active'); | ||
1010 | |||
1011 | offerSideItems.forEach(item => { | ||
1012 | |||
1013 | item.classList.remove('active', 'fade'); | ||
1014 | |||
1015 | if (tab.dataset.tab == item.dataset.item) { | ||
1016 | item.classList.add('active', 'fade'); | ||
1017 | } | ||
1018 | |||
1019 | }); | ||
1020 | |||
1021 | }); | ||
1022 | |||
1023 | }); | ||
1024 | |||
1025 | } | ||
1026 | |||
1027 | } | ||
1028 | |||
1029 | |||
1030 | // логика открытия нужного таба при открытии поп-апа с планами объекат и этажа на странице предложения | ||
1031 | sontrolOfferSidePopup() { | ||
1032 | |||
1033 | const offerSideItems = document.querySelectorAll('.js_offer_side_item'); | ||
1034 | const offerSidePopupTabs = document.querySelectorAll('.js_offer_side_popup_tab'); | ||
1035 | const offerSidePopupItems = document.querySelectorAll('.js_offer_side_popup_item'); | ||
1036 | |||
1037 | if (offerSideItems) { | ||
1038 | |||
1039 | offerSideItems.forEach(item => { | ||
1040 | |||
1041 | const offerSideItemBtn = item.querySelector('.js_offer_side_item_btn'); | ||
1042 | |||
1043 | offerSideItemBtn.addEventListener('click', (e) => { | ||
1044 | |||
1045 | e.preventDefault(); | ||
1046 | |||
1047 | offerSidePopupTabs.forEach(tab => { | ||
1048 | |||
1049 | tab.classList.remove('active'); | ||
1050 | |||
1051 | if (item.dataset.item == tab.dataset.tab) { | ||
1052 | tab.classList.add('active'); | ||
1053 | } | ||
1054 | |||
1055 | }); | ||
1056 | |||
1057 | offerSidePopupItems.forEach(el => { | ||
1058 | |||
1059 | el.classList.remove('active', 'fade'); | ||
1060 | |||
1061 | if (item.dataset.item == el.dataset.item) { | ||
1062 | el.classList.add('active', 'fade'); | ||
1063 | } | ||
1064 | |||
1065 | }); | ||
1066 | |||
1067 | }); | ||
1068 | |||
1069 | }); | ||
1070 | |||
1071 | } | ||
1072 | |||
1073 | } | ||
1074 | |||
1075 | |||
1076 | // галлерея | ||
1077 | setCustomGallery() { | ||
1078 | |||
1079 | let swiper4 = new Swiper(".img-viewer__thumbs-swiper", { | ||
1080 | slidesPerView: 3, | ||
1081 | spaceBetween: 8, | ||
1082 | // freeMode: true, | ||
1083 | observer: true, | ||
1084 | observeParents: true, | ||
1085 | observeSlideChildren: true, | ||
1086 | breakpoints: { | ||
1087 | 640: { | ||
1088 | spaceBetween: 10, | ||
1089 | }, | ||
1090 | }, | ||
1091 | }); | ||
1092 | |||
1093 | let swiper5 = new Swiper(".img-viewer__slider .swiper", { | ||
1094 | navigation: { | ||
1095 | nextEl: ".img-viewer__slider .swiper-button-next", | ||
1096 | prevEl: ".img-viewer__slider .swiper-button-prev", | ||
1097 | }, | ||
1098 | slidesPerView: 1, | ||
1099 | spaceBetween: 20, | ||
1100 | thumbs: { | ||
1101 | swiper: swiper4 | ||
1102 | }, | ||
1103 | observer: true, | ||
1104 | observeParents: true, | ||
1105 | observeSlideChildren: true, | ||
1106 | }); | ||
1107 | |||
1108 | if (document.querySelector('.js_intro_item_btn')) { | ||
1109 | |||
1110 | const imgViewer = document.querySelector('.js_img_viewer'); | ||
1111 | const imgViewerCloses = imgViewer.querySelectorAll('.js_img_viewer_close'); | ||
1112 | const imgViewerCaption = imgViewer.querySelector('.js_img_viewer_caption'); | ||
1113 | |||
1114 | const imgViewerSliderSwiper = imgViewer.querySelector('.js_img_viewer_slider_swiper'); | ||
1115 | const imgViewerSliderSwiperWrap = imgViewerSliderSwiper.querySelector('.js_img_viewer_slider_swiper .swiper-wrapper'); | ||
1116 | |||
1117 | const imgViewerThumbsSwiper = imgViewer.querySelector('.js_img_viewer_thumbs_swiper'); | ||
1118 | const imgViewerThumbsSwiperWrap = imgViewerThumbsSwiper.querySelector('.js_img_viewer_thumbs_swiper .swiper-wrapper'); | ||
1119 | |||
1120 | const introItemBtns = document.querySelectorAll('.js_intro_item_btn'); | ||
1121 | |||
1122 | introItemBtns.forEach((btn, i) => { | ||
1123 | |||
1124 | btn.addEventListener('click', (e) => { | ||
1125 | |||
1126 | e.preventDefault(); | ||
1127 | |||
1128 | imgViewer.classList.add('active'); | ||
1129 | this.fixBodyPosition(); | ||
1130 | |||
1131 | imgViewerSliderSwiperWrap.innerHTML = ''; | ||
1132 | imgViewerThumbsSwiperWrap.innerHTML = ''; | ||
1133 | imgViewerCaption.textContent = ''; | ||
1134 | |||
1135 | |||
1136 | introItemBtns.forEach(btn => { | ||
1137 | |||
1138 | imgViewerSliderSwiperWrap.insertAdjacentHTML('beforeend', ` | ||
1139 | <div class="swiper-slide"> | ||
1140 | <img src="${btn.getAttribute('href')}" alt=""> | ||
1141 | </div>` | ||
1142 | ); | ||
1143 | |||
1144 | imgViewerThumbsSwiperWrap.insertAdjacentHTML('beforeend', ` | ||
1145 | <div class="swiper-slide"> | ||
1146 | <img src="${btn.getAttribute('href')}" alt=""> | ||
1147 | </div>` | ||
1148 | ); | ||
1149 | |||
1150 | }); | ||
1151 | |||
1152 | swiper4.update(); | ||
1153 | swiper5.update(); | ||
1154 | swiper5.slideTo(i); | ||
1155 | imgViewerCaption.textContent = btn.dataset.caption; | ||
1156 | |||
1157 | }); | ||
1158 | |||
1159 | }); | ||
1160 | |||
1161 | swiper5.on('slideChange', function () { | ||
1162 | imgViewerCaption.textContent = introItemBtns[swiper5.realIndex].dataset.caption; | ||
1163 | }); | ||
1164 | |||
1165 | imgViewerCloses.forEach(close => { | ||
1166 | |||
1167 | close.addEventListener('click', () => { | ||
1168 | |||
1169 | imgViewer.classList.remove('active'); | ||
1170 | this.unfixBodyPosition(); | ||
1171 | |||
1172 | }); | ||
1173 | |||
1174 | }); | ||
1175 | |||
1176 | } | ||
1177 | |||
1178 | } | ||
1179 | |||
1180 | |||
1181 | // куки | ||
1182 | setCookies() { | ||
1183 | |||
1184 | const cookies = document.querySelector('.js_cookies'); | ||
1185 | const cookiesBtn = document.querySelector('.js_cookies_confirm'); | ||
1186 | const cookiesTrigger = document.querySelector('.js_btn_cookies'); | ||
1187 | |||
1188 | if (cookiesTrigger) { | ||
1189 | |||
1190 | cookiesTrigger.addEventListener('click', () => { | ||
1191 | cookies.classList.add('active'); | ||
1192 | }); | ||
1193 | |||
1194 | }; | ||
1195 | |||
1196 | if (cookies) { | ||
1197 | |||
1198 | cookiesBtn.addEventListener('click', () => { | ||
1199 | cookies.classList.remove('active'); | ||
1200 | }); | ||
1201 | |||
1202 | }; | ||
1203 | |||
1204 | } | ||
1205 | |||
1206 | |||
1207 | // карта на странице карт; | ||
1208 | /* | ||
1209 | //setGeneralMap() { | ||
1210 | |||
1211 | if (document.querySelector('#general-map')) { | ||
1212 | |||
1213 | ymaps.ready(init); // Дождёмся загрузки API и готовности DOM; | ||
1214 | |||
1215 | function init() { | ||
1216 | |||
1217 | const myMap = new ymaps.Map('general-map', { // Создание экземпляра карты и его привязка к контейнеру с заданным id; | ||
1218 | center: [55.752933963675126, 37.52233749962665], // При инициализации карты обязательно нужно указать её центр и коэффициент масштабирования; | ||
1219 | zoom: 10, | ||
1220 | controls: [] // Скрываем элементы управления на карте; | ||
1221 | }); | ||
1222 | |||
1223 | // Создаём макет содержимого. | ||
1224 | const MyIconContentLayout = ymaps.templateLayoutFactory.createClass( | ||
1225 | '<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>' | ||
1226 | ); | ||
1227 | |||
1228 | let collection = new ymaps.GeoObjectCollection(null, { // Создаём коллекцию, в которую будемпомещать метки (что-то типа массива); | ||
1229 | // preset: 'islands#yellowIcon' | ||
1230 | }); | ||
1231 | |||
1232 | let collectionCoords = [ // Создаём массив с координатами (координаты должны располагаться в том же порядке, что и адреса в списке на сайте); | ||
1233 | [55.867783219108354, 37.392867499999916], | ||
1234 | [55.728043075486504, 37.73937949999994], | ||
1235 | [55.72624100423305, 37.476078499999964], | ||
1236 | [55.80751105044832, 37.449622999999974], | ||
1237 | [55.601783098948836, 37.36700499999998], | ||
1238 | [55.86086502152225, 37.540348999999964], | ||
1239 | [55.784961528728715, 37.56188599999996], | ||
1240 | [55.63910010399773, 37.319407999999996], | ||
1241 | [55.55819256767507, 37.55711549999994], | ||
1242 | [55.79829252928473, 37.52063549999999], | ||
1243 | ]; | ||
1244 | |||
1245 | for (let i = 0, l = collectionCoords.length; i < l; i++) { // C помощью цикла добавляем все метки в коллекцию; | ||
1246 | collection.add(new ymaps.Placemark(collectionCoords[i])); | ||
1247 | collection.get(i).properties.set('iconContent', `${i + 1}`); // Добавляем каждой метке порядковый номер, записываем его в свойство 'iconContent'; | ||
1248 | } | ||
1249 | |||
1250 | myMap.geoObjects.add(collection); // Добавляем коллекцию с метками на карту; | ||
1251 | |||
1252 | collection.options.set('iconLayout', 'default#imageWithContent'); // Необходимо указать данный тип макета; | ||
1253 | collection.options.set('iconImageHref', 'images/mark-complex.svg'); // Своё изображение иконки метки; | ||
1254 | collection.options.set('iconImageSize', [52, 67]); // Размеры метки; | ||
1255 | collection.options.set('iconImageOffset', [-26, -67]); // Смещение левого верхнего угла иконки относительно её "ножки" (точки привязки); | ||
1256 | collection.options.set('iconContentOffset', [0, 17]); | ||
1257 | collection.options.set('iconContentLayout', MyIconContentLayout); // Смещение левого верхнего угла иконки относительно её "ножки" (точки привязки); | ||
1258 | |||
1259 | const pageMapBar = document.querySelector('.js_page_map_bar'); | ||
1260 | const pageMapBarBtn = pageMapBar.querySelector('.js_page_map_bar_btn'); | ||
1261 | const pageMapBarList = pageMapBar.querySelector('.js_page_map_bar_list'); | ||
1262 | const pageMapBarCards = pageMapBar.querySelectorAll('.card-news'); | ||
1263 | |||
1264 | const showCard = (i) => { | ||
1265 | |||
1266 | pageMapBarCards.forEach((card, k) => { | ||
1267 | |||
1268 | card.classList.remove('active'); | ||
1269 | |||
1270 | if (i == k) { | ||
1271 | card.classList.add('active'); | ||
1272 | } | ||
1273 | |||
1274 | }); | ||
1275 | |||
1276 | }; | ||
1277 | |||
1278 | const hidecard = () => { | ||
1279 | |||
1280 | pageMapBarCards.forEach(card => { | ||
1281 | card.classList.remove('active'); | ||
1282 | }); | ||
1283 | |||
1284 | } | ||
1285 | |||
1286 | let pageMapBarItems; | ||
1287 | |||
1288 | pageMapBarBtn.addEventListener('click', () => { | ||
1289 | pageMapBar.classList.toggle('active'); | ||
1290 | }); | ||
1291 | |||
1292 | pageMapBarList.addEventListener('click', (e) => { | ||
1293 | |||
1294 | if (e.target.closest('.page-map-bar__item')) { | ||
1295 | |||
1296 | pageMapBarItems = pageMapBarList.querySelectorAll('.page-map-bar__item'); | ||
1297 | |||
1298 | pageMapBarItems.forEach((item, i) => { | ||
1299 | |||
1300 | if (e.target == item && e.target.classList.contains('active')) { | ||
1301 | |||
1302 | item.classList.remove('active'); | ||
1303 | |||
1304 | hidecard(); | ||
1305 | |||
1306 | } else if (e.target == item) { | ||
1307 | |||
1308 | pageMapBarItems.forEach(item => { | ||
1309 | item.classList.remove('active'); | ||
1310 | }); | ||
1311 | |||
1312 | item.classList.add('active'); | ||
1313 | |||
1314 | let offsetCoords = collection.get(i).geometry.getCoordinates(); | ||
1315 | |||
1316 | offsetCoords = [ | ||
1317 | offsetCoords[0] - 0.0025, | ||
1318 | offsetCoords[1] | ||
1319 | ]; | ||
1320 | |||
1321 | myMap.setZoom(16); | ||
1322 | // myMap.setCenter(collection.get(i).geometry.getCoordinates()); | ||
1323 | myMap.setCenter(offsetCoords); | ||
1324 | |||
1325 | showCard(i); | ||
1326 | |||
1327 | } | ||
1328 | |||
1329 | }); | ||
1330 | } | ||
1331 | |||
1332 | }); | ||
1333 | |||
1334 | collection.events.add('click', function (e) { | ||
1335 | |||
1336 | for (let i = 0, l = collection.getLength(); i < l; i++) { | ||
1337 | |||
1338 | if (e.get('target') == collection.get(i)) { | ||
1339 | |||
1340 | pageMapBarItems = pageMapBarList.querySelectorAll('.page-map-bar__item'); | ||
1341 | |||
1342 | pageMapBarItems.forEach((item) => { | ||
1343 | pageMapBar.classList.add('active'); | ||
1344 | item.classList.remove('active'); | ||
1345 | }); | ||
1346 | |||
1347 | pageMapBarItems[i].classList.add('active'); | ||
1348 | |||
1349 | showCard(i); | ||
1350 | |||
1351 | } | ||
1352 | |||
1353 | } | ||
1354 | |||
1355 | }); | ||
1356 | |||
1357 | } | ||
1358 | |||
1359 | } | ||
1360 | |||
1361 | };*/ | ||
1362 | |||
1363 | |||
1364 | // аккордеон в футере | ||
1365 | setFooterSpoilers() { | ||
1366 | |||
1367 | const items = document.querySelectorAll('.js_footer_col'); | ||
1368 | |||
1369 | items.forEach(item => { | ||
1370 | |||
1371 | const itemTitle = item.querySelector('.js_footer_caption'); | ||
1372 | const itemContent = item.querySelector('.js_footer_block'); | ||
1373 | |||
1374 | const blockToggle = (block, duration) => { | ||
1375 | |||
1376 | if (window.getComputedStyle(block).display == "none" && !block.classList.contains('smooth')) { | ||
1377 | |||
1378 | block.style.display = "block"; | ||
1379 | |||
1380 | const blockHeight = block.offsetHeight; | ||
1381 | |||
1382 | block.style.height = 0; | ||
1383 | block.style.overflow = "hidden"; | ||
1384 | block.style.transition = `height ${duration}ms ease`; | ||
1385 | block.classList.add('smooth'); | ||
1386 | block.offsetHeight; | ||
1387 | block.style.height = `${blockHeight}px`; | ||
1388 | |||
1389 | setTimeout(() => { | ||
1390 | |||
1391 | block.classList.remove('smooth'); | ||
1392 | block.style.height = ''; | ||
1393 | block.style.transition = ''; | ||
1394 | block.style.overflow = ''; | ||
1395 | |||
1396 | }, duration); | ||
1397 | |||
1398 | } else if (!block.classList.contains('smooth')) { | ||
1399 | |||
1400 | block.style.height = `${block.offsetHeight}px`; | ||
1401 | block.offsetHeight; | ||
1402 | block.style.height = 0; | ||
1403 | block.style.overflow = "hidden"; | ||
1404 | block.style.transition = `height ${duration}ms ease`; | ||
1405 | block.classList.add('smooth'); | ||
1406 | |||
1407 | setTimeout(() => { | ||
1408 | |||
1409 | block.classList.remove('smooth'); | ||
1410 | block.style.display = "none"; | ||
1411 | block.style.height = ''; | ||
1412 | block.style.transition = ''; | ||
1413 | block.style.overflow = ''; | ||
1414 | |||
1415 | }, duration); | ||
1416 | |||
1417 | } | ||
1418 | |||
1419 | }; | ||
1420 | |||
1421 | itemTitle.addEventListener('click', (e) => { | ||
1422 | itemTitle.classList.toggle('active'); | ||
1423 | blockToggle(itemContent, 300); | ||
1424 | }); | ||
1425 | |||
1426 | }); | ||
1427 | |||
1428 | } | ||
1429 | |||
1430 | |||
1431 | // слайдер с партнёрами; | ||
1432 | initPartnerslSlider() { | ||
1433 | |||
1434 | const slider = document.querySelector('.partners__swiper'); | ||
1435 | |||
1436 | if (slider) { | ||
1437 | |||
1438 | let swiper6; | ||
1439 | |||
1440 | const initSlider = () => { | ||
1441 | |||
1442 | swiper6 = new Swiper(slider, { | ||
1443 | // scrollbar: { | ||
1444 | // el: '.swiper-scrollbar', | ||
1445 | // draggable: true, | ||
1446 | // }, | ||
1447 | slidesPerView: 0.275, | ||
1448 | loop: true, | ||
1449 | spaceBetween: 20, | ||
1450 | freeMode: true, | ||
1451 | allowTouchMove: true, | ||
1452 | breakpoints: { | ||
1453 | 480: { | ||
1454 | slidesPerView: 0.4, | ||
1455 | }, | ||
1456 | 640: { | ||
1457 | slidesPerView: 0.65, | ||
1458 | }, | ||
1459 | 780: { | ||
1460 | slidesPerView: 0.65, | ||
1461 | }, | ||
1462 | 1024: { | ||
1463 | slidesPerView: 0.8, | ||
1464 | }, | ||
1465 | 1200: { | ||
1466 | slidesPerView: 1, | ||
1467 | loop: false, | ||
1468 | allowTouchMove: false, | ||
1469 | } | ||
1470 | } | ||
1471 | }); | ||
1472 | |||
1473 | }; | ||
1474 | |||
1475 | initSlider(); | ||
1476 | |||
1477 | const updateSlider = () => { | ||
1478 | swiper6.destroy(); | ||
1479 | initSlider(); | ||
1480 | } | ||
1481 | |||
1482 | window.addEventListener('resize', () => { | ||
1483 | |||
1484 | if (window.innerWidth <= 1200 && slider.dataset.mobile == 'false') { | ||
1485 | slider.dataset.mobile = 'true'; | ||
1486 | updateSlider(); | ||
1487 | } | ||
1488 | |||
1489 | if (window.innerWidth > 1200 && slider.dataset.mobile == 'true') { | ||
1490 | slider.dataset.mobile = 'false'; | ||
1491 | updateSlider(); | ||
1492 | } | ||
1493 | |||
1494 | }); | ||
1495 | |||
1496 | } | ||
1497 | |||
1498 | } | ||
1499 | |||
1500 | } | ||
1501 | |||
1502 | |||
1503 | document.addEventListener('DOMContentLoaded', () => { | ||
1504 | |||
1505 | const app = new App(); | ||
1506 | app.init(); | ||
1507 | |||
1508 | }); | ||
1509 | 1 | // управляющий класс App с методом init(), в котором собраны все используемые методы с комментариями о том, что конкретно делает каждый метод |
public/pug/templates/scripts.pug
1 | //- ПОДКЛЮЧЕНИЕ СКРИПТОВ | 1 | //- ПОДКЛЮЧЕНИЕ СКРИПТОВ |
2 | 2 | ||
3 | script(src="https://api-maps.yandex.ru/2.1/?lang=ru_RU") | 3 | script(src="https://api-maps.yandex.ru/2.1/?lang=ru_RU") |
4 | script(src="js/swiper-bundle.min.js") | 4 | script(src="js/swiper-bundle.min.js") |
5 | script(src="js/main_new.js") | 5 | script(src="js/main_main.js") |
6 | 6 |
resources/views/complex.blade.php
1 | @extends('layout.site', ['title' => $area->name_area]) | 1 | @extends('layout.site', ['title' => $area->name_area]) |
2 | 2 | ||
3 | @section('custom_js') | 3 | @section('custom_js') |
4 | @include('js.maps_js') | ||
4 | <script> | 5 | <script> |
5 | $(document).on('click', '.js_sort_group_item', function() { | 6 | $(document).on('click', '.js_sort_group_item', function() { |
6 | var val = $(this).data('val'); | 7 | var val = $(this).data('val'); |
7 | var sort_price_val = ''; | 8 | var sort_price_val = ''; |
8 | var sort_area_val = ''; | 9 | var sort_area_val = ''; |
9 | var sort_new_val = ''; | 10 | var sort_new_val = ''; |
10 | 11 | ||
11 | $('.sort-price').each(function() { | 12 | $('.sort-price').each(function() { |
12 | var this_ = $(this); | 13 | var this_ = $(this); |
13 | var v = $(this).data('val'); | 14 | var v = $(this).data('val'); |
14 | if (this_.hasClass('active')) | 15 | if (this_.hasClass('active')) |
15 | sort_price_val = v; | 16 | sort_price_val = v; |
16 | }); | 17 | }); |
17 | 18 | ||
18 | $('.sort-new').each(function() { | 19 | $('.sort-new').each(function() { |
19 | var v = $(this).data('val'); | 20 | var v = $(this).data('val'); |
20 | var this_ = $(this); | 21 | var this_ = $(this); |
21 | if (this_.hasClass('active')) | 22 | if (this_.hasClass('active')) |
22 | sort_new_val = v; | 23 | sort_new_val = v; |
23 | }); | 24 | }); |
24 | 25 | ||
25 | $('.sort-area').each(function() { | 26 | $('.sort-area').each(function() { |
26 | var v = $(this).data('val'); | 27 | var v = $(this).data('val'); |
27 | var this_ = $(this); | 28 | var this_ = $(this); |
28 | if (this_.hasClass('active')) | 29 | if (this_.hasClass('active')) |
29 | sort_area_val = v; | 30 | sort_area_val = v; |
30 | 31 | ||
31 | }); | 32 | }); |
32 | 33 | ||
33 | console.log('-------------------'); | 34 | console.log('-------------------'); |
34 | $.ajax({ | 35 | $.ajax({ |
35 | type: "GET", | 36 | type: "GET", |
36 | url: "{{ route('complex', ['area' => $area->id]) }}", | 37 | url: "{{ route('complex', ['area' => $area->id]) }}", |
37 | data: "view=arenda&sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", | 38 | data: "view=arenda&sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", |
38 | success: function(data) { | 39 | success: function(data) { |
39 | console.log('Успешно обновлены данные АРЕНДА таблиц '+data); | 40 | console.log('Успешно обновлены данные АРЕНДА таблиц '+data); |
40 | $('#arenda_block').html(data); | 41 | $('#arenda_block').html(data); |
41 | }, | 42 | }, |
42 | headers: { | 43 | headers: { |
43 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 44 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
44 | }, | 45 | }, |
45 | error: function(data) { | 46 | error: function(data) { |
46 | console.log('Error: '+ data); | 47 | console.log('Error: '+ data); |
47 | } | 48 | } |
48 | }); | 49 | }); |
49 | 50 | ||
50 | $.ajax({ | 51 | $.ajax({ |
51 | type: "GET", | 52 | type: "GET", |
52 | url: "{{ route('complex', ['area' => $area->id]) }}", | 53 | url: "{{ route('complex', ['area' => $area->id]) }}", |
53 | data: "view=prodaja&sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", | 54 | data: "view=prodaja&sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", |
54 | success: function(data) { | 55 | success: function(data) { |
55 | console.log('Успешно обновлены данные ПРОДАЖА таблиц '+data); | 56 | console.log('Успешно обновлены данные ПРОДАЖА таблиц '+data); |
56 | $('#prodaja_block').html(data); | 57 | $('#prodaja_block').html(data); |
57 | }, | 58 | }, |
58 | headers: { | 59 | headers: { |
59 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 60 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
60 | }, | 61 | }, |
61 | error: function(data) { | 62 | error: function(data) { |
62 | console.log('Error: '+ data); | 63 | console.log('Error: '+ data); |
63 | } | 64 | } |
64 | }); | 65 | }); |
65 | 66 | ||
66 | $.ajax({ | 67 | $.ajax({ |
67 | type: "GET", | 68 | type: "GET", |
68 | url: "{{ route('complex', ['area' => $area->id]) }}", | 69 | url: "{{ route('complex', ['area' => $area->id]) }}", |
69 | data: "view=bissnes&sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", | 70 | data: "view=bissnes&sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", |
70 | success: function(data) { | 71 | success: function(data) { |
71 | console.log('Успешно обновлены данные БИЗНЕС таблиц '+data); | 72 | console.log('Успешно обновлены данные БИЗНЕС таблиц '+data); |
72 | $('#bissnes_block').html(data); | 73 | $('#bissnes_block').html(data); |
73 | }, | 74 | }, |
74 | headers: { | 75 | headers: { |
75 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 76 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
76 | }, | 77 | }, |
77 | error: function(data) { | 78 | error: function(data) { |
78 | console.log('Error: '+ data); | 79 | console.log('Error: '+ data); |
79 | } | 80 | } |
80 | }); | 81 | }); |
81 | 82 | ||
82 | $.ajax({ | 83 | $.ajax({ |
83 | type: "GET", | 84 | type: "GET", |
84 | url: "{{ route('complex', ['area' => $area->id]) }}", | 85 | url: "{{ route('complex', ['area' => $area->id]) }}", |
85 | data: "view=arendovannie&sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", | 86 | data: "view=arendovannie&sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", |
86 | success: function(data) { | 87 | success: function(data) { |
87 | console.log('Успешно обновлены данные таблиц '+data); | 88 | console.log('Успешно обновлены данные таблиц '+data); |
88 | $('#arendovannie_block').html(data); | 89 | $('#arendovannie_block').html(data); |
89 | //.append(data); | 90 | //.append(data); |
90 | }, | 91 | }, |
91 | headers: { | 92 | headers: { |
92 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 93 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
93 | }, | 94 | }, |
94 | error: function(data) { | 95 | error: function(data) { |
95 | console.log('Error: '+ data); | 96 | console.log('Error: '+ data); |
96 | } | 97 | } |
97 | }); | 98 | }); |
98 | 99 | ||
99 | } | 100 | } |
100 | ); | 101 | ); |
102 | |||
103 | setComplexMap('complex-map', [{{ $area->coord_x }}, {{ $area->coord_y }}], "{{ $area->name_area }}"); | ||
101 | </script> | 104 | </script> |
102 | @endsection | 105 | @endsection |
103 | 106 | ||
104 | @section('content') | 107 | @section('content') |
105 | <section class="intro" style="background-image:url({{ asset('images/intro-bg-1.jpg') }})"> | 108 | <section class="intro" style="background-image:url({{ asset('images/intro-bg-1.jpg') }})"> |
106 | <div class="container"> | 109 | <div class="container"> |
107 | <div class="intro__wrap"> | 110 | <div class="intro__wrap"> |
108 | <div class="breadcrumbs"> | 111 | <div class="breadcrumbs"> |
109 | <ul class="breadcrumbs__list"> | 112 | <ul class="breadcrumbs__list"> |
110 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> | 113 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> |
111 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('catalog') }}">Каталог</a></li> | 114 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('catalog') }}">Каталог</a></li> |
112 | <li class="breadcrumbs__item"><span class="breadcrumbs__link">{{$area->name_area }}</span></li> | 115 | <li class="breadcrumbs__item"><span class="breadcrumbs__link">{{$area->name_area }}</span></li> |
113 | </ul> | 116 | </ul> |
114 | </div> | 117 | </div> |
115 | <div class="intro__inner"> | 118 | <div class="intro__inner"> |
116 | <div class="intro__cnt"> | 119 | <div class="intro__cnt"> |
117 | <h1 class="intro__title title-main">{{ $area->name_area }}</h1> | 120 | <h1 class="intro__title title-main">{{ $area->name_area }}</h1> |
118 | <p class="intro__descr">{{ $area->description }}</p> | 121 | <p class="intro__descr">{{ $area->description }}</p> |
119 | </div> | 122 | </div> |
120 | <div class="intro__swiper swiper"> | 123 | <div class="intro__swiper swiper"> |
121 | <div class="swiper-wrapper"> | 124 | <div class="swiper-wrapper"> |
122 | <? if (!empty($area->foto_main)) {?> | 125 | <? if (!empty($area->foto_main)) {?> |
123 | <div class="swiper-slide"> | 126 | <div class="swiper-slide"> |
124 | <div class="intro-item"> | 127 | <div class="intro-item"> |
125 | <div class="intro-item__img"><img src="{{ asset(Storage::url($area->foto_main)) }}" alt=""></div> | 128 | <div class="intro-item__img"><img src="{{ asset(Storage::url($area->foto_main)) }}" alt=""></div> |
126 | <a class="intro-item__btn js_intro_item_btn" href="{{ asset(Storage::url($area->foto_main)) }}" data-caption="{{ $area->name_area }}"> | 129 | <a class="intro-item__btn js_intro_item_btn" href="{{ asset(Storage::url($area->foto_main)) }}" data-caption="{{ $area->name_area }}"> |
127 | <svg width="16" height="16"> | 130 | <svg width="16" height="16"> |
128 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> | 131 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> |
129 | </svg></a> | 132 | </svg></a> |
130 | </div> | 133 | </div> |
131 | </div> | 134 | </div> |
132 | <? } ?> | 135 | <? } ?> |
133 | <? $i = 1 ?> | 136 | <? $i = 1 ?> |
134 | @if ($area->fotos->count()) | 137 | @if ($area->fotos->count()) |
135 | @foreach($area->fotos as $img) | 138 | @foreach($area->fotos as $img) |
136 | <div class="swiper-slide"> | 139 | <div class="swiper-slide"> |
137 | <div class="intro-item"> | 140 | <div class="intro-item"> |
138 | <div class="intro-item__img"><img src="{{ asset(Storage::url($img->foto)) }}" alt=""></div> | 141 | <div class="intro-item__img"><img src="{{ asset(Storage::url($img->foto)) }}" alt=""></div> |
139 | <a class="intro-item__btn js_intro_item_btn" href="{{ asset(Storage::url($img->foto)) }}" data-caption="Фото {{ $i }}"> | 142 | <a class="intro-item__btn js_intro_item_btn" href="{{ asset(Storage::url($img->foto)) }}" data-caption="Фото {{ $i }}"> |
140 | <svg width="16" height="16"> | 143 | <svg width="16" height="16"> |
141 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> | 144 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> |
142 | </svg></a> | 145 | </svg></a> |
143 | </div> | 146 | </div> |
144 | </div> | 147 | </div> |
145 | <? $i++?> | 148 | <? $i++?> |
146 | @endforeach | 149 | @endforeach |
147 | @endif | 150 | @endif |
148 | <!--<div class="swiper-slide"> | 151 | <!--<div class="swiper-slide"> |
149 | <div class="intro-item"> | 152 | <div class="intro-item"> |
150 | <div class="intro-item__img"><img src="images/about-bg.jpg" alt=""></div><a class="intro-item__btn js_intro_item_btn" href="images/about-bg.jpg" data-caption="Фото 2"> | 153 | <div class="intro-item__img"><img src="images/about-bg.jpg" alt=""></div><a class="intro-item__btn js_intro_item_btn" href="images/about-bg.jpg" data-caption="Фото 2"> |
151 | <svg width="16" height="16"> | 154 | <svg width="16" height="16"> |
152 | <use xlink:href="images/sprite.svg#intro-item-btn"></use> | 155 | <use xlink:href="images/sprite.svg#intro-item-btn"></use> |
153 | </svg></a> | 156 | </svg></a> |
154 | </div> | 157 | </div> |
155 | </div> | 158 | </div> |
156 | <div class="swiper-slide"> | 159 | <div class="swiper-slide"> |
157 | <div class="intro-item"> | 160 | <div class="intro-item"> |
158 | <div class="intro-item__img"><img src="images/catalog-bg.jpg" alt=""></div><a class="intro-item__btn js_intro_item_btn" href="images/catalog-bg.jpg" data-caption="Фото 3"> | 161 | <div class="intro-item__img"><img src="images/catalog-bg.jpg" alt=""></div><a class="intro-item__btn js_intro_item_btn" href="images/catalog-bg.jpg" data-caption="Фото 3"> |
159 | <svg width="16" height="16"> | 162 | <svg width="16" height="16"> |
160 | <use xlink:href="images/sprite.svg#intro-item-btn"></use> | 163 | <use xlink:href="images/sprite.svg#intro-item-btn"></use> |
161 | </svg></a> | 164 | </svg></a> |
162 | </div> | 165 | </div> |
163 | </div> | 166 | </div> |
164 | <div class="swiper-slide"> | 167 | <div class="swiper-slide"> |
165 | <div class="intro-item"> | 168 | <div class="intro-item"> |
166 | <div class="intro-item__img"><img src="images/intro-bg-2.jpg" alt=""></div><a class="intro-item__btn js_intro_item_btn" href="images/intro-bg-2.jpg" data-caption="Фото 4"> | 169 | <div class="intro-item__img"><img src="images/intro-bg-2.jpg" alt=""></div><a class="intro-item__btn js_intro_item_btn" href="images/intro-bg-2.jpg" data-caption="Фото 4"> |
167 | <svg width="16" height="16"> | 170 | <svg width="16" height="16"> |
168 | <use xlink:href="images/sprite.svg#intro-item-btn"></use> | 171 | <use xlink:href="images/sprite.svg#intro-item-btn"></use> |
169 | </svg></a> | 172 | </svg></a> |
170 | </div> | 173 | </div> |
171 | </div> | 174 | </div> |
172 | <div class="swiper-slide"> | 175 | <div class="swiper-slide"> |
173 | <div class="intro-item"> | 176 | <div class="intro-item"> |
174 | <div class="intro-item__img"><img src="images/news-one-bg.jpg" alt=""></div><a class="intro-item__btn js_intro_item_btn" href="images/news-one-bg.jpg" data-caption="Фото 5"> | 177 | <div class="intro-item__img"><img src="images/news-one-bg.jpg" alt=""></div><a class="intro-item__btn js_intro_item_btn" href="images/news-one-bg.jpg" data-caption="Фото 5"> |
175 | <svg width="16" height="16"> | 178 | <svg width="16" height="16"> |
176 | <use xlink:href="images/sprite.svg#intro-item-btn"></use> | 179 | <use xlink:href="images/sprite.svg#intro-item-btn"></use> |
177 | </svg></a> | 180 | </svg></a> |
178 | </div> | 181 | </div> |
179 | </div>--> | 182 | </div>--> |
180 | </div> | 183 | </div> |
181 | <div class="swiper-pagination"></div> | 184 | <div class="swiper-pagination"></div> |
182 | <div class="swiper-button-prev"> | 185 | <div class="swiper-button-prev"> |
183 | <svg width="10" height="17"> | 186 | <svg width="10" height="17"> |
184 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 187 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
185 | </svg> | 188 | </svg> |
186 | </div> | 189 | </div> |
187 | <div class="swiper-button-next"> | 190 | <div class="swiper-button-next"> |
188 | <svg width="10" height="17"> | 191 | <svg width="10" height="17"> |
189 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 192 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
190 | </svg> | 193 | </svg> |
191 | </div> | 194 | </div> |
192 | </div> | 195 | </div> |
193 | </div> | 196 | </div> |
194 | </div> | 197 | </div> |
195 | </div> | 198 | </div> |
196 | </section> | 199 | </section> |
197 | <!-- СТРАНИЦА ЖК--> | 200 | <!-- СТРАНИЦА ЖК--> |
198 | <section class="complex"> | 201 | <section class="complex"> |
199 | <div class="container"> | 202 | <div class="container"> |
200 | <div class="complex__top top-catalog"> | 203 | <div class="complex__top top-catalog"> |
201 | <div class="top-catalog__inner"> | 204 | <div class="top-catalog__inner"> |
202 | <h2 class="top-catalog__title title">{{ $area->name_area }}</h2> | 205 | <h2 class="top-catalog__title title">{{ $area->name_area }}</h2> |
203 | <div class="top-catalog__result">Найдено объектов по Вашему запросу: <span><?=$house_arenda->count()+$house_prodaja->count()+$house_bissnes->count()+$house_arendovannie->count(); ?></span></div> | 206 | <div class="top-catalog__result">Найдено объектов по Вашему запросу: <span><?=$house_arenda->count()+$house_prodaja->count()+$house_bissnes->count()+$house_arendovannie->count(); ?></span></div> |
204 | </div> | 207 | </div> |
205 | <form class="top-catalog__sorts"> | 208 | <form class="top-catalog__sorts"> |
206 | <div class="top-catalog__sort-group sort-group js_sort_group"> | 209 | <div class="top-catalog__sort-group sort-group js_sort_group"> |
207 | <input class="js_sort_group_input" type="hidden"> | 210 | <input class="js_sort_group_input" type="hidden"> |
208 | <div class="sort-group__current js_sort_group_current">Сначала дешевле</div> | 211 | <div class="sort-group__current js_sort_group_current">Сначала дешевле</div> |
209 | <ul class="sort-group__list js_sort_group_list"> | 212 | <ul class="sort-group__list js_sort_group_list"> |
210 | <li class="sort-price sort-group__item js_sort_group_item active" data-val="1">Сначала дешевле</li> | 213 | <li class="sort-price sort-group__item js_sort_group_item active" data-val="1">Сначала дешевле</li> |
211 | <li class="sort-price sort-group__item js_sort_group_item" data-val="2">Сначала дороже</li> | 214 | <li class="sort-price sort-group__item js_sort_group_item" data-val="2">Сначала дороже</li> |
212 | </ul> | 215 | </ul> |
213 | </div> | 216 | </div> |
214 | <div class="top-catalog__sort-group sort-group js_sort_group"> | 217 | <div class="top-catalog__sort-group sort-group js_sort_group"> |
215 | <input class="js_sort_group_input" type="hidden"> | 218 | <input class="js_sort_group_input" type="hidden"> |
216 | <div class="sort-group__current js_sort_group_current">Сначала новые</div> | 219 | <div class="sort-group__current js_sort_group_current">Сначала новые</div> |
217 | <ul class="sort-group__list js_sort_group_list"> | 220 | <ul class="sort-group__list js_sort_group_list"> |
218 | <li class="sort-new sort-group__item js_sort_group_item active" data-val="1">Сначала новые</li> | 221 | <li class="sort-new sort-group__item js_sort_group_item active" data-val="1">Сначала новые</li> |
219 | <li class="sort-new sort-group__item js_sort_group_item" data-val="2">Сначала старые</li> | 222 | <li class="sort-new sort-group__item js_sort_group_item" data-val="2">Сначала старые</li> |
220 | </ul> | 223 | </ul> |
221 | </div> | 224 | </div> |
222 | <div class="top-catalog__sort-group sort-group sort-group--wide js_sort_group"> | 225 | <div class="top-catalog__sort-group sort-group sort-group--wide js_sort_group"> |
223 | <input class="js_sort_group_input" type="hidden"> | 226 | <input class="js_sort_group_input" type="hidden"> |
224 | <div class="sort-group__current js_sort_group_current">Сначала с большей площадью</div> | 227 | <div class="sort-group__current js_sort_group_current">Сначала с большей площадью</div> |
225 | <ul class="sort-group__list js_sort_group_list"> | 228 | <ul class="sort-group__list js_sort_group_list"> |
226 | <li class="sort-area sort-group__item js_sort_group_item active" data-val="1">Сначала с большей площадью</li> | 229 | <li class="sort-area sort-group__item js_sort_group_item active" data-val="1">Сначала с большей площадью</li> |
227 | <li class="sort-area sort-group__item js_sort_group_item" data-val="2">Сначала с меньшей площадью</li> | 230 | <li class="sort-area sort-group__item js_sort_group_item" data-val="2">Сначала с меньшей площадью</li> |
228 | </ul> | 231 | </ul> |
229 | </div> | 232 | </div> |
230 | </form> | 233 | </form> |
231 | </div> | 234 | </div> |
232 | </div> | 235 | </div> |
233 | <div class="complex__sliders"> | 236 | <div class="complex__sliders"> |
234 | <section class="slider"> | 237 | <section class="slider"> |
235 | <div class="container"> | 238 | <div class="container"> |
236 | <div class="slider__wrap"> | 239 | <div class="slider__wrap"> |
237 | <div class="slider__top"> | 240 | <div class="slider__top"> |
238 | <h2 class="slider__title title">Аренда торговых помещений</h2><a class="slider__more" href="#">Показать все объекты</a> | 241 | <h2 class="slider__title title">Аренда торговых помещений</h2><a class="slider__more" href="#">Показать все объекты</a> |
239 | <div class="slider__control"> | 242 | <div class="slider__control"> |
240 | <div class="swiper-button-prev"> | 243 | <div class="swiper-button-prev"> |
241 | <svg width="10" height="17"> | 244 | <svg width="10" height="17"> |
242 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 245 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
243 | </svg> | 246 | </svg> |
244 | </div> | 247 | </div> |
245 | <div class="swiper-button-next"> | 248 | <div class="swiper-button-next"> |
246 | <svg width="10" height="17"> | 249 | <svg width="10" height="17"> |
247 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 250 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
248 | </svg> | 251 | </svg> |
249 | </div> | 252 | </div> |
250 | </div> | 253 | </div> |
251 | </div> | 254 | </div> |
252 | <div class="slider__swiper swiper"> | 255 | <div class="slider__swiper swiper"> |
253 | <div class="swiper-wrapper" id="arenda_block"> | 256 | <div class="swiper-wrapper" id="arenda_block"> |
254 | @if ($house_arenda->count()) | 257 | @if ($house_arenda->count()) |
255 | @foreach ($house_arenda as $house1) | 258 | @foreach ($house_arenda as $house1) |
256 | @include('catalogs.elemhouse', ['house' => $house1]) | 259 | @include('catalogs.elemhouse', ['house' => $house1]) |
257 | @endforeach | 260 | @endforeach |
258 | @else | 261 | @else |
259 | <h3>Здесь пока что нет предложений</h3> | 262 | <h3>Здесь пока что нет предложений</h3> |
260 | @endif | 263 | @endif |
261 | <!--<div class="swiper-slide"> | 264 | <!--<div class="swiper-slide"> |
262 | <div class="card"> | 265 | <div class="card"> |
263 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 266 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
264 | <h3 class="card__title">Салон красоты</h3> | 267 | <h3 class="card__title">Салон красоты</h3> |
265 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 268 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
266 | <svg width="18" height="18"> | 269 | <svg width="18" height="18"> |
267 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 270 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
268 | </svg> | 271 | </svg> |
269 | <svg width="18" height="18"> | 272 | <svg width="18" height="18"> |
270 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 273 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
271 | </svg></span><a class="card__label card__label-messenger" href="#"> | 274 | </svg></span><a class="card__label card__label-messenger" href="#"> |
272 | <svg width="25" height="25"> | 275 | <svg width="25" height="25"> |
273 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 276 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
274 | </svg></a></div> | 277 | </svg></a></div> |
275 | </div> | 278 | </div> |
276 | <div class="card__cnt"> | 279 | <div class="card__cnt"> |
277 | <div class="card__info"> | 280 | <div class="card__info"> |
278 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 281 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
279 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 282 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
280 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 283 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
281 | <div class="card__line">Площадь: <b>556 м2</b></div> | 284 | <div class="card__line">Площадь: <b>556 м2</b></div> |
282 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 285 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
283 | </div> | 286 | </div> |
284 | <div class="card__price"><span>1 000 000 ₽</span> | 287 | <div class="card__price"><span>1 000 000 ₽</span> |
285 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 288 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
286 | </div> | 289 | </div> |
287 | </div> | 290 | </div> |
288 | </div> | 291 | </div> |
289 | <div class="swiper-slide"> | 292 | <div class="swiper-slide"> |
290 | <div class="card"> | 293 | <div class="card"> |
291 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 294 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
292 | <h3 class="card__title">Барбер-шоп</h3> | 295 | <h3 class="card__title">Барбер-шоп</h3> |
293 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 296 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
294 | <svg width="18" height="18"> | 297 | <svg width="18" height="18"> |
295 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 298 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
296 | </svg> | 299 | </svg> |
297 | <svg width="18" height="18"> | 300 | <svg width="18" height="18"> |
298 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 301 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
299 | </svg></span><a class="card__label card__label-messenger" href="#"> | 302 | </svg></span><a class="card__label card__label-messenger" href="#"> |
300 | <svg width="25" height="25"> | 303 | <svg width="25" height="25"> |
301 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 304 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
302 | </svg></a></div> | 305 | </svg></a></div> |
303 | </div> | 306 | </div> |
304 | <div class="card__cnt"> | 307 | <div class="card__cnt"> |
305 | <div class="card__info"> | 308 | <div class="card__info"> |
306 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 309 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
307 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 310 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
308 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 311 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
309 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 312 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
310 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 313 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
311 | </div> | 314 | </div> |
312 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 315 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
313 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 316 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
314 | </div> | 317 | </div> |
315 | </div> | 318 | </div> |
316 | </div> | 319 | </div> |
317 | <div class="swiper-slide"> | 320 | <div class="swiper-slide"> |
318 | <div class="card"> | 321 | <div class="card"> |
319 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 322 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
320 | <h3 class="card__title">Аптека</h3> | 323 | <h3 class="card__title">Аптека</h3> |
321 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 324 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
322 | <svg width="18" height="18"> | 325 | <svg width="18" height="18"> |
323 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 326 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
324 | </svg> | 327 | </svg> |
325 | <svg width="18" height="18"> | 328 | <svg width="18" height="18"> |
326 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 329 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
327 | </svg></span><a class="card__label card__label-messenger" href="#"> | 330 | </svg></span><a class="card__label card__label-messenger" href="#"> |
328 | <svg width="25" height="25"> | 331 | <svg width="25" height="25"> |
329 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 332 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
330 | </svg></a></div> | 333 | </svg></a></div> |
331 | </div> | 334 | </div> |
332 | <div class="card__cnt"> | 335 | <div class="card__cnt"> |
333 | <div class="card__info"> | 336 | <div class="card__info"> |
334 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 337 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
335 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 338 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
336 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 339 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
337 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 340 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
338 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 341 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
339 | </div> | 342 | </div> |
340 | <div class="card__price"><span>5 280 000 ₽</span> | 343 | <div class="card__price"><span>5 280 000 ₽</span> |
341 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 344 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
342 | </div> | 345 | </div> |
343 | </div> | 346 | </div> |
344 | </div> | 347 | </div> |
345 | <div class="swiper-slide"> | 348 | <div class="swiper-slide"> |
346 | <div class="card"> | 349 | <div class="card"> |
347 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 350 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
348 | <h3 class="card__title">Витрина</h3> | 351 | <h3 class="card__title">Витрина</h3> |
349 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 352 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
350 | <svg width="18" height="18"> | 353 | <svg width="18" height="18"> |
351 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 354 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
352 | </svg> | 355 | </svg> |
353 | <svg width="18" height="18"> | 356 | <svg width="18" height="18"> |
354 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 357 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
355 | </svg></span><a class="card__label card__label-messenger" href="#"> | 358 | </svg></span><a class="card__label card__label-messenger" href="#"> |
356 | <svg width="25" height="25"> | 359 | <svg width="25" height="25"> |
357 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 360 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
358 | </svg></a></div> | 361 | </svg></a></div> |
359 | </div> | 362 | </div> |
360 | <div class="card__cnt"> | 363 | <div class="card__cnt"> |
361 | <div class="card__info"> | 364 | <div class="card__info"> |
362 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 365 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
363 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 366 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
364 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 367 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
365 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 368 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
366 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 369 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
367 | </div> | 370 | </div> |
368 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 371 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
369 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 372 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
370 | </div> | 373 | </div> |
371 | </div> | 374 | </div> |
372 | </div> | 375 | </div> |
373 | <div class="swiper-slide"> | 376 | <div class="swiper-slide"> |
374 | <div class="card"> | 377 | <div class="card"> |
375 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 378 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
376 | <h3 class="card__title">Салон красоты</h3> | 379 | <h3 class="card__title">Салон красоты</h3> |
377 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 380 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
378 | <svg width="18" height="18"> | 381 | <svg width="18" height="18"> |
379 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 382 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
380 | </svg> | 383 | </svg> |
381 | <svg width="18" height="18"> | 384 | <svg width="18" height="18"> |
382 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 385 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
383 | </svg></span><a class="card__label card__label-messenger" href="#"> | 386 | </svg></span><a class="card__label card__label-messenger" href="#"> |
384 | <svg width="25" height="25"> | 387 | <svg width="25" height="25"> |
385 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 388 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
386 | </svg></a></div> | 389 | </svg></a></div> |
387 | </div> | 390 | </div> |
388 | <div class="card__cnt"> | 391 | <div class="card__cnt"> |
389 | <div class="card__info"> | 392 | <div class="card__info"> |
390 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 393 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
391 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 394 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
392 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 395 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
393 | <div class="card__line">Площадь: <b>556 м2</b></div> | 396 | <div class="card__line">Площадь: <b>556 м2</b></div> |
394 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 397 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
395 | </div> | 398 | </div> |
396 | <div class="card__price"><span>1 000 000 ₽</span> | 399 | <div class="card__price"><span>1 000 000 ₽</span> |
397 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 400 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
398 | </div> | 401 | </div> |
399 | </div> | 402 | </div> |
400 | </div> | 403 | </div> |
401 | <div class="swiper-slide"> | 404 | <div class="swiper-slide"> |
402 | <div class="card"> | 405 | <div class="card"> |
403 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 406 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
404 | <h3 class="card__title">Барбер-шоп</h3> | 407 | <h3 class="card__title">Барбер-шоп</h3> |
405 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 408 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
406 | <svg width="18" height="18"> | 409 | <svg width="18" height="18"> |
407 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 410 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
408 | </svg> | 411 | </svg> |
409 | <svg width="18" height="18"> | 412 | <svg width="18" height="18"> |
410 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 413 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
411 | </svg></span><a class="card__label card__label-messenger" href="#"> | 414 | </svg></span><a class="card__label card__label-messenger" href="#"> |
412 | <svg width="25" height="25"> | 415 | <svg width="25" height="25"> |
413 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 416 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
414 | </svg></a></div> | 417 | </svg></a></div> |
415 | </div> | 418 | </div> |
416 | <div class="card__cnt"> | 419 | <div class="card__cnt"> |
417 | <div class="card__info"> | 420 | <div class="card__info"> |
418 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 421 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
419 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 422 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
420 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 423 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
421 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 424 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
422 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 425 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
423 | </div> | 426 | </div> |
424 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 427 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
425 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 428 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
426 | </div> | 429 | </div> |
427 | </div> | 430 | </div> |
428 | </div> | 431 | </div> |
429 | <div class="swiper-slide"> | 432 | <div class="swiper-slide"> |
430 | <div class="card"> | 433 | <div class="card"> |
431 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 434 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
432 | <h3 class="card__title">Аптека</h3> | 435 | <h3 class="card__title">Аптека</h3> |
433 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 436 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
434 | <svg width="18" height="18"> | 437 | <svg width="18" height="18"> |
435 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 438 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
436 | </svg> | 439 | </svg> |
437 | <svg width="18" height="18"> | 440 | <svg width="18" height="18"> |
438 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 441 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
439 | </svg></span><a class="card__label card__label-messenger" href="#"> | 442 | </svg></span><a class="card__label card__label-messenger" href="#"> |
440 | <svg width="25" height="25"> | 443 | <svg width="25" height="25"> |
441 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 444 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
442 | </svg></a></div> | 445 | </svg></a></div> |
443 | </div> | 446 | </div> |
444 | <div class="card__cnt"> | 447 | <div class="card__cnt"> |
445 | <div class="card__info"> | 448 | <div class="card__info"> |
446 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 449 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
447 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 450 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
448 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 451 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
449 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 452 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
450 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 453 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
451 | </div> | 454 | </div> |
452 | <div class="card__price"><span>5 280 000 ₽</span> | 455 | <div class="card__price"><span>5 280 000 ₽</span> |
453 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 456 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
454 | </div> | 457 | </div> |
455 | </div> | 458 | </div> |
456 | </div> | 459 | </div> |
457 | <div class="swiper-slide"> | 460 | <div class="swiper-slide"> |
458 | <div class="card"> | 461 | <div class="card"> |
459 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 462 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
460 | <h3 class="card__title">Витрина</h3> | 463 | <h3 class="card__title">Витрина</h3> |
461 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 464 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
462 | <svg width="18" height="18"> | 465 | <svg width="18" height="18"> |
463 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 466 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
464 | </svg> | 467 | </svg> |
465 | <svg width="18" height="18"> | 468 | <svg width="18" height="18"> |
466 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 469 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
467 | </svg></span><a class="card__label card__label-messenger" href="#"> | 470 | </svg></span><a class="card__label card__label-messenger" href="#"> |
468 | <svg width="25" height="25"> | 471 | <svg width="25" height="25"> |
469 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 472 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
470 | </svg></a></div> | 473 | </svg></a></div> |
471 | </div> | 474 | </div> |
472 | <div class="card__cnt"> | 475 | <div class="card__cnt"> |
473 | <div class="card__info"> | 476 | <div class="card__info"> |
474 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 477 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
475 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 478 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
476 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 479 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
477 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 480 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
478 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 481 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
479 | </div> | 482 | </div> |
480 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 483 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
481 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 484 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
482 | </div> | 485 | </div> |
483 | </div> | 486 | </div> |
484 | </div>--> | 487 | </div>--> |
485 | </div> | 488 | </div> |
486 | </div> | 489 | </div> |
487 | <div class="swiper-pagination"></div> | 490 | <div class="swiper-pagination"></div> |
488 | </div> | 491 | </div> |
489 | </div> | 492 | </div> |
490 | </section> | 493 | </section> |
491 | <section class="slider"> | 494 | <section class="slider"> |
492 | <div class="container"> | 495 | <div class="container"> |
493 | <div class="slider__wrap"> | 496 | <div class="slider__wrap"> |
494 | <div class="slider__top"> | 497 | <div class="slider__top"> |
495 | <h2 class="slider__title title">Продажа торговых помещений</h2><a class="slider__more" href="#">Показать все объекты</a> | 498 | <h2 class="slider__title title">Продажа торговых помещений</h2><a class="slider__more" href="#">Показать все объекты</a> |
496 | <div class="slider__control"> | 499 | <div class="slider__control"> |
497 | <div class="swiper-button-prev"> | 500 | <div class="swiper-button-prev"> |
498 | <svg width="10" height="17"> | 501 | <svg width="10" height="17"> |
499 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 502 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
500 | </svg> | 503 | </svg> |
501 | </div> | 504 | </div> |
502 | <div class="swiper-button-next"> | 505 | <div class="swiper-button-next"> |
503 | <svg width="10" height="17"> | 506 | <svg width="10" height="17"> |
504 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 507 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
505 | </svg> | 508 | </svg> |
506 | </div> | 509 | </div> |
507 | </div> | 510 | </div> |
508 | </div> | 511 | </div> |
509 | <div class="slider__swiper swiper"> | 512 | <div class="slider__swiper swiper"> |
510 | <div class="swiper-wrapper" id="prodaja_block"> | 513 | <div class="swiper-wrapper" id="prodaja_block"> |
511 | @if ($house_prodaja->count()) | 514 | @if ($house_prodaja->count()) |
512 | @foreach ($house_prodaja as $house2) | 515 | @foreach ($house_prodaja as $house2) |
513 | @include('catalogs.elemhouse', ['house' => $house2]) | 516 | @include('catalogs.elemhouse', ['house' => $house2]) |
514 | @endforeach | 517 | @endforeach |
515 | @else | 518 | @else |
516 | <h3>Здесь пока что нет предложений</h3> | 519 | <h3>Здесь пока что нет предложений</h3> |
517 | @endif | 520 | @endif |
518 | 521 | ||
519 | 522 | ||
520 | <!--<div class="swiper-slide"> | 523 | <!--<div class="swiper-slide"> |
521 | <div class="card"> | 524 | <div class="card"> |
522 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 525 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
523 | <h3 class="card__title">Салон красоты</h3> | 526 | <h3 class="card__title">Салон красоты</h3> |
524 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 527 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
525 | <svg width="18" height="18"> | 528 | <svg width="18" height="18"> |
526 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 529 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
527 | </svg> | 530 | </svg> |
528 | <svg width="18" height="18"> | 531 | <svg width="18" height="18"> |
529 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 532 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
530 | </svg></span><a class="card__label card__label-messenger" href="#"> | 533 | </svg></span><a class="card__label card__label-messenger" href="#"> |
531 | <svg width="25" height="25"> | 534 | <svg width="25" height="25"> |
532 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 535 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
533 | </svg></a></div> | 536 | </svg></a></div> |
534 | </div> | 537 | </div> |
535 | <div class="card__cnt"> | 538 | <div class="card__cnt"> |
536 | <div class="card__info"> | 539 | <div class="card__info"> |
537 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 540 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
538 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 541 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
539 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 542 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
540 | <div class="card__line">Площадь: <b>556 м2</b></div> | 543 | <div class="card__line">Площадь: <b>556 м2</b></div> |
541 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 544 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
542 | </div> | 545 | </div> |
543 | <div class="card__price"><span>1 000 000 ₽</span> | 546 | <div class="card__price"><span>1 000 000 ₽</span> |
544 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 547 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
545 | </div> | 548 | </div> |
546 | </div> | 549 | </div> |
547 | </div> | 550 | </div> |
548 | <div class="swiper-slide"> | 551 | <div class="swiper-slide"> |
549 | <div class="card"> | 552 | <div class="card"> |
550 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 553 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
551 | <h3 class="card__title">Барбер-шоп</h3> | 554 | <h3 class="card__title">Барбер-шоп</h3> |
552 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 555 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
553 | <svg width="18" height="18"> | 556 | <svg width="18" height="18"> |
554 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 557 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
555 | </svg> | 558 | </svg> |
556 | <svg width="18" height="18"> | 559 | <svg width="18" height="18"> |
557 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 560 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
558 | </svg></span><a class="card__label card__label-messenger" href="#"> | 561 | </svg></span><a class="card__label card__label-messenger" href="#"> |
559 | <svg width="25" height="25"> | 562 | <svg width="25" height="25"> |
560 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 563 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
561 | </svg></a></div> | 564 | </svg></a></div> |
562 | </div> | 565 | </div> |
563 | <div class="card__cnt"> | 566 | <div class="card__cnt"> |
564 | <div class="card__info"> | 567 | <div class="card__info"> |
565 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 568 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
566 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 569 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
567 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 570 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
568 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 571 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
569 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 572 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
570 | </div> | 573 | </div> |
571 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 574 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
572 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 575 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
573 | </div> | 576 | </div> |
574 | </div> | 577 | </div> |
575 | </div> | 578 | </div> |
576 | <div class="swiper-slide"> | 579 | <div class="swiper-slide"> |
577 | <div class="card"> | 580 | <div class="card"> |
578 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 581 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
579 | <h3 class="card__title">Аптека</h3> | 582 | <h3 class="card__title">Аптека</h3> |
580 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 583 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
581 | <svg width="18" height="18"> | 584 | <svg width="18" height="18"> |
582 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 585 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
583 | </svg> | 586 | </svg> |
584 | <svg width="18" height="18"> | 587 | <svg width="18" height="18"> |
585 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 588 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
586 | </svg></span><a class="card__label card__label-messenger" href="#"> | 589 | </svg></span><a class="card__label card__label-messenger" href="#"> |
587 | <svg width="25" height="25"> | 590 | <svg width="25" height="25"> |
588 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 591 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
589 | </svg></a></div> | 592 | </svg></a></div> |
590 | </div> | 593 | </div> |
591 | <div class="card__cnt"> | 594 | <div class="card__cnt"> |
592 | <div class="card__info"> | 595 | <div class="card__info"> |
593 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 596 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
594 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 597 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
595 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 598 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
596 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 599 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
597 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 600 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
598 | </div> | 601 | </div> |
599 | <div class="card__price"><span>5 280 000 ₽</span> | 602 | <div class="card__price"><span>5 280 000 ₽</span> |
600 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 603 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
601 | </div> | 604 | </div> |
602 | </div> | 605 | </div> |
603 | </div> | 606 | </div> |
604 | <div class="swiper-slide"> | 607 | <div class="swiper-slide"> |
605 | <div class="card"> | 608 | <div class="card"> |
606 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 609 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
607 | <h3 class="card__title">Витрина</h3> | 610 | <h3 class="card__title">Витрина</h3> |
608 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 611 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
609 | <svg width="18" height="18"> | 612 | <svg width="18" height="18"> |
610 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 613 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
611 | </svg> | 614 | </svg> |
612 | <svg width="18" height="18"> | 615 | <svg width="18" height="18"> |
613 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 616 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
614 | </svg></span><a class="card__label card__label-messenger" href="#"> | 617 | </svg></span><a class="card__label card__label-messenger" href="#"> |
615 | <svg width="25" height="25"> | 618 | <svg width="25" height="25"> |
616 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 619 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
617 | </svg></a></div> | 620 | </svg></a></div> |
618 | </div> | 621 | </div> |
619 | <div class="card__cnt"> | 622 | <div class="card__cnt"> |
620 | <div class="card__info"> | 623 | <div class="card__info"> |
621 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 624 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
622 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 625 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
623 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 626 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
624 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 627 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
625 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 628 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
626 | </div> | 629 | </div> |
627 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 630 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
628 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 631 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
629 | </div> | 632 | </div> |
630 | </div> | 633 | </div> |
631 | </div> | 634 | </div> |
632 | <div class="swiper-slide"> | 635 | <div class="swiper-slide"> |
633 | <div class="card"> | 636 | <div class="card"> |
634 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 637 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
635 | <h3 class="card__title">Салон красоты</h3> | 638 | <h3 class="card__title">Салон красоты</h3> |
636 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 639 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
637 | <svg width="18" height="18"> | 640 | <svg width="18" height="18"> |
638 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 641 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
639 | </svg> | 642 | </svg> |
640 | <svg width="18" height="18"> | 643 | <svg width="18" height="18"> |
641 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 644 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
642 | </svg></span><a class="card__label card__label-messenger" href="#"> | 645 | </svg></span><a class="card__label card__label-messenger" href="#"> |
643 | <svg width="25" height="25"> | 646 | <svg width="25" height="25"> |
644 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 647 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
645 | </svg></a></div> | 648 | </svg></a></div> |
646 | </div> | 649 | </div> |
647 | <div class="card__cnt"> | 650 | <div class="card__cnt"> |
648 | <div class="card__info"> | 651 | <div class="card__info"> |
649 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 652 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
650 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 653 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
651 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 654 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
652 | <div class="card__line">Площадь: <b>556 м2</b></div> | 655 | <div class="card__line">Площадь: <b>556 м2</b></div> |
653 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 656 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
654 | </div> | 657 | </div> |
655 | <div class="card__price"><span>1 000 000 ₽</span> | 658 | <div class="card__price"><span>1 000 000 ₽</span> |
656 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 659 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
657 | </div> | 660 | </div> |
658 | </div> | 661 | </div> |
659 | </div> | 662 | </div> |
660 | <div class="swiper-slide"> | 663 | <div class="swiper-slide"> |
661 | <div class="card"> | 664 | <div class="card"> |
662 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 665 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
663 | <h3 class="card__title">Барбер-шоп</h3> | 666 | <h3 class="card__title">Барбер-шоп</h3> |
664 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 667 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
665 | <svg width="18" height="18"> | 668 | <svg width="18" height="18"> |
666 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 669 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
667 | </svg> | 670 | </svg> |
668 | <svg width="18" height="18"> | 671 | <svg width="18" height="18"> |
669 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 672 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
670 | </svg></span><a class="card__label card__label-messenger" href="#"> | 673 | </svg></span><a class="card__label card__label-messenger" href="#"> |
671 | <svg width="25" height="25"> | 674 | <svg width="25" height="25"> |
672 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 675 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
673 | </svg></a></div> | 676 | </svg></a></div> |
674 | </div> | 677 | </div> |
675 | <div class="card__cnt"> | 678 | <div class="card__cnt"> |
676 | <div class="card__info"> | 679 | <div class="card__info"> |
677 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 680 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
678 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 681 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
679 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 682 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
680 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 683 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
681 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 684 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
682 | </div> | 685 | </div> |
683 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 686 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
684 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 687 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
685 | </div> | 688 | </div> |
686 | </div> | 689 | </div> |
687 | </div> | 690 | </div> |
688 | <div class="swiper-slide"> | 691 | <div class="swiper-slide"> |
689 | <div class="card"> | 692 | <div class="card"> |
690 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 693 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
691 | <h3 class="card__title">Аптека</h3> | 694 | <h3 class="card__title">Аптека</h3> |
692 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 695 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
693 | <svg width="18" height="18"> | 696 | <svg width="18" height="18"> |
694 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 697 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
695 | </svg> | 698 | </svg> |
696 | <svg width="18" height="18"> | 699 | <svg width="18" height="18"> |
697 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 700 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
698 | </svg></span><a class="card__label card__label-messenger" href="#"> | 701 | </svg></span><a class="card__label card__label-messenger" href="#"> |
699 | <svg width="25" height="25"> | 702 | <svg width="25" height="25"> |
700 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 703 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
701 | </svg></a></div> | 704 | </svg></a></div> |
702 | </div> | 705 | </div> |
703 | <div class="card__cnt"> | 706 | <div class="card__cnt"> |
704 | <div class="card__info"> | 707 | <div class="card__info"> |
705 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 708 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
706 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 709 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
707 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 710 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
708 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 711 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
709 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 712 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
710 | </div> | 713 | </div> |
711 | <div class="card__price"><span>5 280 000 ₽</span> | 714 | <div class="card__price"><span>5 280 000 ₽</span> |
712 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 715 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
713 | </div> | 716 | </div> |
714 | </div> | 717 | </div> |
715 | </div> | 718 | </div> |
716 | <div class="swiper-slide"> | 719 | <div class="swiper-slide"> |
717 | <div class="card"> | 720 | <div class="card"> |
718 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 721 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
719 | <h3 class="card__title">Витрина</h3> | 722 | <h3 class="card__title">Витрина</h3> |
720 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 723 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
721 | <svg width="18" height="18"> | 724 | <svg width="18" height="18"> |
722 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 725 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
723 | </svg> | 726 | </svg> |
724 | <svg width="18" height="18"> | 727 | <svg width="18" height="18"> |
725 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 728 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
726 | </svg></span><a class="card__label card__label-messenger" href="#"> | 729 | </svg></span><a class="card__label card__label-messenger" href="#"> |
727 | <svg width="25" height="25"> | 730 | <svg width="25" height="25"> |
728 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 731 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
729 | </svg></a></div> | 732 | </svg></a></div> |
730 | </div> | 733 | </div> |
731 | <div class="card__cnt"> | 734 | <div class="card__cnt"> |
732 | <div class="card__info"> | 735 | <div class="card__info"> |
733 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 736 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
734 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 737 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
735 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 738 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
736 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 739 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
737 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 740 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
738 | </div> | 741 | </div> |
739 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 742 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
740 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 743 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
741 | </div> | 744 | </div> |
742 | </div> | 745 | </div> |
743 | </div>--> | 746 | </div>--> |
744 | </div> | 747 | </div> |
745 | </div> | 748 | </div> |
746 | <div class="swiper-pagination"></div> | 749 | <div class="swiper-pagination"></div> |
747 | </div> | 750 | </div> |
748 | </div> | 751 | </div> |
749 | </section> | 752 | </section> |
750 | <section class="slider"> | 753 | <section class="slider"> |
751 | <div class="container"> | 754 | <div class="container"> |
752 | <div class="slider__wrap"> | 755 | <div class="slider__wrap"> |
753 | <div class="slider__top"> | 756 | <div class="slider__top"> |
754 | <h2 class="slider__title title">Арендный бизнес</h2><a class="slider__more" href="#">Показать все объекты</a> | 757 | <h2 class="slider__title title">Арендный бизнес</h2><a class="slider__more" href="#">Показать все объекты</a> |
755 | <div class="slider__control"> | 758 | <div class="slider__control"> |
756 | <div class="swiper-button-prev"> | 759 | <div class="swiper-button-prev"> |
757 | <svg width="10" height="17"> | 760 | <svg width="10" height="17"> |
758 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 761 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
759 | </svg> | 762 | </svg> |
760 | </div> | 763 | </div> |
761 | <div class="swiper-button-next"> | 764 | <div class="swiper-button-next"> |
762 | <svg width="10" height="17"> | 765 | <svg width="10" height="17"> |
763 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 766 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
764 | </svg> | 767 | </svg> |
765 | </div> | 768 | </div> |
766 | </div> | 769 | </div> |
767 | </div> | 770 | </div> |
768 | <div class="slider__swiper swiper"> | 771 | <div class="slider__swiper swiper"> |
769 | <div class="swiper-wrapper" id="bissnes_block"> | 772 | <div class="swiper-wrapper" id="bissnes_block"> |
770 | @if ($house_bissnes->count()) | 773 | @if ($house_bissnes->count()) |
771 | @foreach ($house_bissnes as $house3) | 774 | @foreach ($house_bissnes as $house3) |
772 | @include('catalogs.elemhouse', ['house' => $house3]) | 775 | @include('catalogs.elemhouse', ['house' => $house3]) |
773 | @endforeach | 776 | @endforeach |
774 | @else | 777 | @else |
775 | <h3>Здесь пока что нет предложений</h3> | 778 | <h3>Здесь пока что нет предложений</h3> |
776 | @endif | 779 | @endif |
777 | <!--<div class="swiper-slide"> | 780 | <!--<div class="swiper-slide"> |
778 | <div class="card"> | 781 | <div class="card"> |
779 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 782 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
780 | <h3 class="card__title">Салон красоты</h3> | 783 | <h3 class="card__title">Салон красоты</h3> |
781 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 784 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
782 | <svg width="18" height="18"> | 785 | <svg width="18" height="18"> |
783 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 786 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
784 | </svg> | 787 | </svg> |
785 | <svg width="18" height="18"> | 788 | <svg width="18" height="18"> |
786 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 789 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
787 | </svg></span><a class="card__label card__label-messenger" href="#"> | 790 | </svg></span><a class="card__label card__label-messenger" href="#"> |
788 | <svg width="25" height="25"> | 791 | <svg width="25" height="25"> |
789 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 792 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
790 | </svg></a></div> | 793 | </svg></a></div> |
791 | </div> | 794 | </div> |
792 | <div class="card__cnt"> | 795 | <div class="card__cnt"> |
793 | <div class="card__info"> | 796 | <div class="card__info"> |
794 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 797 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
795 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 798 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
796 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 799 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
797 | <div class="card__line">Площадь: <b>556 м2</b></div> | 800 | <div class="card__line">Площадь: <b>556 м2</b></div> |
798 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 801 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
799 | </div> | 802 | </div> |
800 | <div class="card__price"><span>1 000 000 ₽</span> | 803 | <div class="card__price"><span>1 000 000 ₽</span> |
801 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 804 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
802 | </div> | 805 | </div> |
803 | </div> | 806 | </div> |
804 | </div> | 807 | </div> |
805 | <div class="swiper-slide"> | 808 | <div class="swiper-slide"> |
806 | <div class="card"> | 809 | <div class="card"> |
807 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 810 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
808 | <h3 class="card__title">Барбер-шоп</h3> | 811 | <h3 class="card__title">Барбер-шоп</h3> |
809 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 812 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
810 | <svg width="18" height="18"> | 813 | <svg width="18" height="18"> |
811 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 814 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
812 | </svg> | 815 | </svg> |
813 | <svg width="18" height="18"> | 816 | <svg width="18" height="18"> |
814 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 817 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
815 | </svg></span><a class="card__label card__label-messenger" href="#"> | 818 | </svg></span><a class="card__label card__label-messenger" href="#"> |
816 | <svg width="25" height="25"> | 819 | <svg width="25" height="25"> |
817 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 820 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
818 | </svg></a></div> | 821 | </svg></a></div> |
819 | </div> | 822 | </div> |
820 | <div class="card__cnt"> | 823 | <div class="card__cnt"> |
821 | <div class="card__info"> | 824 | <div class="card__info"> |
822 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 825 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
823 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 826 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
824 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 827 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
825 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 828 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
826 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 829 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
827 | </div> | 830 | </div> |
828 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 831 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
829 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 832 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
830 | </div> | 833 | </div> |
831 | </div> | 834 | </div> |
832 | </div> | 835 | </div> |
833 | <div class="swiper-slide"> | 836 | <div class="swiper-slide"> |
834 | <div class="card"> | 837 | <div class="card"> |
835 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 838 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
836 | <h3 class="card__title">Аптека</h3> | 839 | <h3 class="card__title">Аптека</h3> |
837 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 840 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
838 | <svg width="18" height="18"> | 841 | <svg width="18" height="18"> |
839 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 842 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
840 | </svg> | 843 | </svg> |
841 | <svg width="18" height="18"> | 844 | <svg width="18" height="18"> |
842 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 845 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
843 | </svg></span><a class="card__label card__label-messenger" href="#"> | 846 | </svg></span><a class="card__label card__label-messenger" href="#"> |
844 | <svg width="25" height="25"> | 847 | <svg width="25" height="25"> |
845 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 848 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
846 | </svg></a></div> | 849 | </svg></a></div> |
847 | </div> | 850 | </div> |
848 | <div class="card__cnt"> | 851 | <div class="card__cnt"> |
849 | <div class="card__info"> | 852 | <div class="card__info"> |
850 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 853 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
851 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 854 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
852 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 855 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
853 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 856 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
854 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 857 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
855 | </div> | 858 | </div> |
856 | <div class="card__price"><span>5 280 000 ₽</span> | 859 | <div class="card__price"><span>5 280 000 ₽</span> |
857 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 860 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
858 | </div> | 861 | </div> |
859 | </div> | 862 | </div> |
860 | </div> | 863 | </div> |
861 | <div class="swiper-slide"> | 864 | <div class="swiper-slide"> |
862 | <div class="card"> | 865 | <div class="card"> |
863 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 866 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
864 | <h3 class="card__title">Витрина</h3> | 867 | <h3 class="card__title">Витрина</h3> |
865 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 868 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
866 | <svg width="18" height="18"> | 869 | <svg width="18" height="18"> |
867 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 870 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
868 | </svg> | 871 | </svg> |
869 | <svg width="18" height="18"> | 872 | <svg width="18" height="18"> |
870 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 873 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
871 | </svg></span><a class="card__label card__label-messenger" href="#"> | 874 | </svg></span><a class="card__label card__label-messenger" href="#"> |
872 | <svg width="25" height="25"> | 875 | <svg width="25" height="25"> |
873 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 876 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
874 | </svg></a></div> | 877 | </svg></a></div> |
875 | </div> | 878 | </div> |
876 | <div class="card__cnt"> | 879 | <div class="card__cnt"> |
877 | <div class="card__info"> | 880 | <div class="card__info"> |
878 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 881 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
879 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 882 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
880 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 883 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
881 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 884 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
882 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 885 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
883 | </div> | 886 | </div> |
884 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 887 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
885 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 888 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
886 | </div> | 889 | </div> |
887 | </div> | 890 | </div> |
888 | </div> | 891 | </div> |
889 | <div class="swiper-slide"> | 892 | <div class="swiper-slide"> |
890 | <div class="card"> | 893 | <div class="card"> |
891 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 894 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
892 | <h3 class="card__title">Салон красоты</h3> | 895 | <h3 class="card__title">Салон красоты</h3> |
893 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 896 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
894 | <svg width="18" height="18"> | 897 | <svg width="18" height="18"> |
895 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 898 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
896 | </svg> | 899 | </svg> |
897 | <svg width="18" height="18"> | 900 | <svg width="18" height="18"> |
898 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 901 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
899 | </svg></span><a class="card__label card__label-messenger" href="#"> | 902 | </svg></span><a class="card__label card__label-messenger" href="#"> |
900 | <svg width="25" height="25"> | 903 | <svg width="25" height="25"> |
901 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 904 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
902 | </svg></a></div> | 905 | </svg></a></div> |
903 | </div> | 906 | </div> |
904 | <div class="card__cnt"> | 907 | <div class="card__cnt"> |
905 | <div class="card__info"> | 908 | <div class="card__info"> |
906 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 909 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
907 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 910 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
908 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 911 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
909 | <div class="card__line">Площадь: <b>556 м2</b></div> | 912 | <div class="card__line">Площадь: <b>556 м2</b></div> |
910 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 913 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
911 | </div> | 914 | </div> |
912 | <div class="card__price"><span>1 000 000 ₽</span> | 915 | <div class="card__price"><span>1 000 000 ₽</span> |
913 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 916 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
914 | </div> | 917 | </div> |
915 | </div> | 918 | </div> |
916 | </div> | 919 | </div> |
917 | <div class="swiper-slide"> | 920 | <div class="swiper-slide"> |
918 | <div class="card"> | 921 | <div class="card"> |
919 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 922 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
920 | <h3 class="card__title">Барбер-шоп</h3> | 923 | <h3 class="card__title">Барбер-шоп</h3> |
921 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 924 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
922 | <svg width="18" height="18"> | 925 | <svg width="18" height="18"> |
923 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 926 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
924 | </svg> | 927 | </svg> |
925 | <svg width="18" height="18"> | 928 | <svg width="18" height="18"> |
926 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 929 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
927 | </svg></span><a class="card__label card__label-messenger" href="#"> | 930 | </svg></span><a class="card__label card__label-messenger" href="#"> |
928 | <svg width="25" height="25"> | 931 | <svg width="25" height="25"> |
929 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 932 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
930 | </svg></a></div> | 933 | </svg></a></div> |
931 | </div> | 934 | </div> |
932 | <div class="card__cnt"> | 935 | <div class="card__cnt"> |
933 | <div class="card__info"> | 936 | <div class="card__info"> |
934 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 937 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
935 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 938 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
936 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 939 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
937 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 940 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
938 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 941 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
939 | </div> | 942 | </div> |
940 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 943 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
941 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 944 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
942 | </div> | 945 | </div> |
943 | </div> | 946 | </div> |
944 | </div> | 947 | </div> |
945 | <div class="swiper-slide"> | 948 | <div class="swiper-slide"> |
946 | <div class="card"> | 949 | <div class="card"> |
947 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 950 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
948 | <h3 class="card__title">Аптека</h3> | 951 | <h3 class="card__title">Аптека</h3> |
949 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 952 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
950 | <svg width="18" height="18"> | 953 | <svg width="18" height="18"> |
951 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 954 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
952 | </svg> | 955 | </svg> |
953 | <svg width="18" height="18"> | 956 | <svg width="18" height="18"> |
954 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 957 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
955 | </svg></span><a class="card__label card__label-messenger" href="#"> | 958 | </svg></span><a class="card__label card__label-messenger" href="#"> |
956 | <svg width="25" height="25"> | 959 | <svg width="25" height="25"> |
957 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 960 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
958 | </svg></a></div> | 961 | </svg></a></div> |
959 | </div> | 962 | </div> |
960 | <div class="card__cnt"> | 963 | <div class="card__cnt"> |
961 | <div class="card__info"> | 964 | <div class="card__info"> |
962 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 965 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
963 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 966 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
964 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 967 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
965 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 968 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
966 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 969 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
967 | </div> | 970 | </div> |
968 | <div class="card__price"><span>5 280 000 ₽</span> | 971 | <div class="card__price"><span>5 280 000 ₽</span> |
969 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 972 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
970 | </div> | 973 | </div> |
971 | </div> | 974 | </div> |
972 | </div> | 975 | </div> |
973 | <div class="swiper-slide"> | 976 | <div class="swiper-slide"> |
974 | <div class="card"> | 977 | <div class="card"> |
975 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 978 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
976 | <h3 class="card__title">Витрина</h3> | 979 | <h3 class="card__title">Витрина</h3> |
977 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 980 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
978 | <svg width="18" height="18"> | 981 | <svg width="18" height="18"> |
979 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 982 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
980 | </svg> | 983 | </svg> |
981 | <svg width="18" height="18"> | 984 | <svg width="18" height="18"> |
982 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 985 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
983 | </svg></span><a class="card__label card__label-messenger" href="#"> | 986 | </svg></span><a class="card__label card__label-messenger" href="#"> |
984 | <svg width="25" height="25"> | 987 | <svg width="25" height="25"> |
985 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 988 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
986 | </svg></a></div> | 989 | </svg></a></div> |
987 | </div> | 990 | </div> |
988 | <div class="card__cnt"> | 991 | <div class="card__cnt"> |
989 | <div class="card__info"> | 992 | <div class="card__info"> |
990 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 993 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
991 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 994 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
992 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 995 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
993 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 996 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
994 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 997 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
995 | </div> | 998 | </div> |
996 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 999 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
997 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 1000 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
998 | </div> | 1001 | </div> |
999 | </div> | 1002 | </div> |
1000 | </div>--> | 1003 | </div>--> |
1001 | </div> | 1004 | </div> |
1002 | </div> | 1005 | </div> |
1003 | <div class="swiper-pagination"></div> | 1006 | <div class="swiper-pagination"></div> |
1004 | </div> | 1007 | </div> |
1005 | </div> | 1008 | </div> |
1006 | </section> | 1009 | </section> |
1007 | <section class="slider"> | 1010 | <section class="slider"> |
1008 | <div class="container"> | 1011 | <div class="container"> |
1009 | <div class="slider__wrap"> | 1012 | <div class="slider__wrap"> |
1010 | <div class="slider__top"> | 1013 | <div class="slider__top"> |
1011 | <h2 class="slider__title title">Арендованные</h2><a class="slider__more" href="#">Показать все объекты</a> | 1014 | <h2 class="slider__title title">Арендованные</h2><a class="slider__more" href="#">Показать все объекты</a> |
1012 | <div class="slider__control"> | 1015 | <div class="slider__control"> |
1013 | <div class="swiper-button-prev"> | 1016 | <div class="swiper-button-prev"> |
1014 | <svg width="10" height="17"> | 1017 | <svg width="10" height="17"> |
1015 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 1018 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
1016 | </svg> | 1019 | </svg> |
1017 | </div> | 1020 | </div> |
1018 | <div class="swiper-button-next"> | 1021 | <div class="swiper-button-next"> |
1019 | <svg width="10" height="17"> | 1022 | <svg width="10" height="17"> |
1020 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 1023 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
1021 | </svg> | 1024 | </svg> |
1022 | </div> | 1025 | </div> |
1023 | </div> | 1026 | </div> |
1024 | </div> | 1027 | </div> |
1025 | <div class="slider__swiper swiper"> | 1028 | <div class="slider__swiper swiper"> |
1026 | <div class="swiper-wrapper" id="arendovannie_block"> | 1029 | <div class="swiper-wrapper" id="arendovannie_block"> |
1027 | @if ($house_arendovannie->count()) | 1030 | @if ($house_arendovannie->count()) |
1028 | @foreach ($house_arendovannie as $house1) | 1031 | @foreach ($house_arendovannie as $house1) |
1029 | @include('catalogs.elemhouse', ['house' => $house1]) | 1032 | @include('catalogs.elemhouse', ['house' => $house1]) |
1030 | @endforeach | 1033 | @endforeach |
1031 | @else | 1034 | @else |
1032 | <h3>Здесь пока что нет предложений</h3> | 1035 | <h3>Здесь пока что нет предложений</h3> |
1033 | @endif | 1036 | @endif |
1034 | <!--<div class="swiper-slide"> | 1037 | <!--<div class="swiper-slide"> |
1035 | <div class="card"> | 1038 | <div class="card"> |
1036 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 1039 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
1037 | <h3 class="card__title">Салон красоты</h3> | 1040 | <h3 class="card__title">Салон красоты</h3> |
1038 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 1041 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
1039 | <svg width="18" height="18"> | 1042 | <svg width="18" height="18"> |
1040 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 1043 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
1041 | </svg> | 1044 | </svg> |
1042 | <svg width="18" height="18"> | 1045 | <svg width="18" height="18"> |
1043 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 1046 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
1044 | </svg></span><a class="card__label card__label-messenger" href="#"> | 1047 | </svg></span><a class="card__label card__label-messenger" href="#"> |
1045 | <svg width="25" height="25"> | 1048 | <svg width="25" height="25"> |
1046 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 1049 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
1047 | </svg></a></div> | 1050 | </svg></a></div> |
1048 | </div> | 1051 | </div> |
1049 | <div class="card__cnt"> | 1052 | <div class="card__cnt"> |
1050 | <div class="card__info"> | 1053 | <div class="card__info"> |
1051 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 1054 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
1052 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 1055 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
1053 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 1056 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
1054 | <div class="card__line">Площадь: <b>556 м2</b></div> | 1057 | <div class="card__line">Площадь: <b>556 м2</b></div> |
1055 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 1058 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
1056 | </div> | 1059 | </div> |
1057 | <div class="card__price"><span>1 000 000 ₽</span> | 1060 | <div class="card__price"><span>1 000 000 ₽</span> |
1058 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 1061 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
1059 | </div> | 1062 | </div> |
1060 | </div> | 1063 | </div> |
1061 | </div> | 1064 | </div> |
1062 | <div class="swiper-slide"> | 1065 | <div class="swiper-slide"> |
1063 | <div class="card"> | 1066 | <div class="card"> |
1064 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 1067 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
1065 | <h3 class="card__title">Барбер-шоп</h3> | 1068 | <h3 class="card__title">Барбер-шоп</h3> |
1066 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 1069 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
1067 | <svg width="18" height="18"> | 1070 | <svg width="18" height="18"> |
1068 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 1071 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
1069 | </svg> | 1072 | </svg> |
1070 | <svg width="18" height="18"> | 1073 | <svg width="18" height="18"> |
1071 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 1074 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
1072 | </svg></span><a class="card__label card__label-messenger" href="#"> | 1075 | </svg></span><a class="card__label card__label-messenger" href="#"> |
1073 | <svg width="25" height="25"> | 1076 | <svg width="25" height="25"> |
1074 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 1077 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
1075 | </svg></a></div> | 1078 | </svg></a></div> |
1076 | </div> | 1079 | </div> |
1077 | <div class="card__cnt"> | 1080 | <div class="card__cnt"> |
1078 | <div class="card__info"> | 1081 | <div class="card__info"> |
1079 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 1082 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
1080 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 1083 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
1081 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 1084 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
1082 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 1085 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
1083 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 1086 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
1084 | </div> | 1087 | </div> |
1085 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 1088 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
1086 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 1089 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
1087 | </div> | 1090 | </div> |
1088 | </div> | 1091 | </div> |
1089 | </div> | 1092 | </div> |
1090 | <div class="swiper-slide"> | 1093 | <div class="swiper-slide"> |
1091 | <div class="card"> | 1094 | <div class="card"> |
1092 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 1095 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
1093 | <h3 class="card__title">Аптека</h3> | 1096 | <h3 class="card__title">Аптека</h3> |
1094 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 1097 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
1095 | <svg width="18" height="18"> | 1098 | <svg width="18" height="18"> |
1096 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 1099 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
1097 | </svg> | 1100 | </svg> |
1098 | <svg width="18" height="18"> | 1101 | <svg width="18" height="18"> |
1099 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 1102 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
1100 | </svg></span><a class="card__label card__label-messenger" href="#"> | 1103 | </svg></span><a class="card__label card__label-messenger" href="#"> |
1101 | <svg width="25" height="25"> | 1104 | <svg width="25" height="25"> |
1102 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 1105 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
1103 | </svg></a></div> | 1106 | </svg></a></div> |
1104 | </div> | 1107 | </div> |
1105 | <div class="card__cnt"> | 1108 | <div class="card__cnt"> |
1106 | <div class="card__info"> | 1109 | <div class="card__info"> |
1107 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 1110 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
1108 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 1111 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
1109 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 1112 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
1110 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 1113 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
1111 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 1114 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
1112 | </div> | 1115 | </div> |
1113 | <div class="card__price"><span>5 280 000 ₽</span> | 1116 | <div class="card__price"><span>5 280 000 ₽</span> |
1114 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 1117 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
1115 | </div> | 1118 | </div> |
1116 | </div> | 1119 | </div> |
1117 | </div> | 1120 | </div> |
1118 | <div class="swiper-slide"> | 1121 | <div class="swiper-slide"> |
1119 | <div class="card"> | 1122 | <div class="card"> |
1120 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 1123 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
1121 | <h3 class="card__title">Витрина</h3> | 1124 | <h3 class="card__title">Витрина</h3> |
1122 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 1125 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
1123 | <svg width="18" height="18"> | 1126 | <svg width="18" height="18"> |
1124 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 1127 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
1125 | </svg> | 1128 | </svg> |
1126 | <svg width="18" height="18"> | 1129 | <svg width="18" height="18"> |
1127 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 1130 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
1128 | </svg></span><a class="card__label card__label-messenger" href="#"> | 1131 | </svg></span><a class="card__label card__label-messenger" href="#"> |
1129 | <svg width="25" height="25"> | 1132 | <svg width="25" height="25"> |
1130 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 1133 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
1131 | </svg></a></div> | 1134 | </svg></a></div> |
1132 | </div> | 1135 | </div> |
1133 | <div class="card__cnt"> | 1136 | <div class="card__cnt"> |
1134 | <div class="card__info"> | 1137 | <div class="card__info"> |
1135 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 1138 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
1136 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 1139 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
1137 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 1140 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
1138 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 1141 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
1139 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 1142 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
1140 | </div> | 1143 | </div> |
1141 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 1144 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
1142 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 1145 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
1143 | </div> | 1146 | </div> |
1144 | </div> | 1147 | </div> |
1145 | </div> | 1148 | </div> |
1146 | <div class="swiper-slide"> | 1149 | <div class="swiper-slide"> |
1147 | <div class="card"> | 1150 | <div class="card"> |
1148 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 1151 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
1149 | <h3 class="card__title">Салон красоты</h3> | 1152 | <h3 class="card__title">Салон красоты</h3> |
1150 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 1153 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
1151 | <svg width="18" height="18"> | 1154 | <svg width="18" height="18"> |
1152 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 1155 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
1153 | </svg> | 1156 | </svg> |
1154 | <svg width="18" height="18"> | 1157 | <svg width="18" height="18"> |
1155 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 1158 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
1156 | </svg></span><a class="card__label card__label-messenger" href="#"> | 1159 | </svg></span><a class="card__label card__label-messenger" href="#"> |
1157 | <svg width="25" height="25"> | 1160 | <svg width="25" height="25"> |
1158 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 1161 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
1159 | </svg></a></div> | 1162 | </svg></a></div> |
1160 | </div> | 1163 | </div> |
1161 | <div class="card__cnt"> | 1164 | <div class="card__cnt"> |
1162 | <div class="card__info"> | 1165 | <div class="card__info"> |
1163 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 1166 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
1164 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 1167 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
1165 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 1168 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
1166 | <div class="card__line">Площадь: <b>556 м2</b></div> | 1169 | <div class="card__line">Площадь: <b>556 м2</b></div> |
1167 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 1170 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
1168 | </div> | 1171 | </div> |
1169 | <div class="card__price"><span>1 000 000 ₽</span> | 1172 | <div class="card__price"><span>1 000 000 ₽</span> |
1170 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 1173 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
1171 | </div> | 1174 | </div> |
1172 | </div> | 1175 | </div> |
1173 | </div> | 1176 | </div> |
1174 | <div class="swiper-slide"> | 1177 | <div class="swiper-slide"> |
1175 | <div class="card"> | 1178 | <div class="card"> |
1176 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 1179 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
1177 | <h3 class="card__title">Барбер-шоп</h3> | 1180 | <h3 class="card__title">Барбер-шоп</h3> |
1178 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 1181 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
1179 | <svg width="18" height="18"> | 1182 | <svg width="18" height="18"> |
1180 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 1183 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
1181 | </svg> | 1184 | </svg> |
1182 | <svg width="18" height="18"> | 1185 | <svg width="18" height="18"> |
1183 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 1186 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
1184 | </svg></span><a class="card__label card__label-messenger" href="#"> | 1187 | </svg></span><a class="card__label card__label-messenger" href="#"> |
1185 | <svg width="25" height="25"> | 1188 | <svg width="25" height="25"> |
1186 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 1189 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
1187 | </svg></a></div> | 1190 | </svg></a></div> |
1188 | </div> | 1191 | </div> |
1189 | <div class="card__cnt"> | 1192 | <div class="card__cnt"> |
1190 | <div class="card__info"> | 1193 | <div class="card__info"> |
1191 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 1194 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
1192 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 1195 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
1193 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 1196 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
1194 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 1197 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
1195 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 1198 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
1196 | </div> | 1199 | </div> |
1197 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 1200 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
1198 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 1201 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
1199 | </div> | 1202 | </div> |
1200 | </div> | 1203 | </div> |
1201 | </div> | 1204 | </div> |
1202 | <div class="swiper-slide"> | 1205 | <div class="swiper-slide"> |
1203 | <div class="card"> | 1206 | <div class="card"> |
1204 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 1207 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
1205 | <h3 class="card__title">Аптека</h3> | 1208 | <h3 class="card__title">Аптека</h3> |
1206 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 1209 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
1207 | <svg width="18" height="18"> | 1210 | <svg width="18" height="18"> |
1208 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 1211 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
1209 | </svg> | 1212 | </svg> |
1210 | <svg width="18" height="18"> | 1213 | <svg width="18" height="18"> |
1211 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 1214 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
1212 | </svg></span><a class="card__label card__label-messenger" href="#"> | 1215 | </svg></span><a class="card__label card__label-messenger" href="#"> |
1213 | <svg width="25" height="25"> | 1216 | <svg width="25" height="25"> |
1214 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 1217 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
1215 | </svg></a></div> | 1218 | </svg></a></div> |
1216 | </div> | 1219 | </div> |
1217 | <div class="card__cnt"> | 1220 | <div class="card__cnt"> |
1218 | <div class="card__info"> | 1221 | <div class="card__info"> |
1219 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 1222 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
1220 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 1223 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
1221 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 1224 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
1222 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 1225 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
1223 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 1226 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
1224 | </div> | 1227 | </div> |
1225 | <div class="card__price"><span>5 280 000 ₽</span> | 1228 | <div class="card__price"><span>5 280 000 ₽</span> |
1226 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 1229 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
1227 | </div> | 1230 | </div> |
1228 | </div> | 1231 | </div> |
1229 | </div> | 1232 | </div> |
1230 | <div class="swiper-slide"> | 1233 | <div class="swiper-slide"> |
1231 | <div class="card"> | 1234 | <div class="card"> |
1232 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 1235 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
1233 | <h3 class="card__title">Витрина</h3> | 1236 | <h3 class="card__title">Витрина</h3> |
1234 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 1237 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
1235 | <svg width="18" height="18"> | 1238 | <svg width="18" height="18"> |
1236 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 1239 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
1237 | </svg> | 1240 | </svg> |
1238 | <svg width="18" height="18"> | 1241 | <svg width="18" height="18"> |
1239 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 1242 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
1240 | </svg></span><a class="card__label card__label-messenger" href="#"> | 1243 | </svg></span><a class="card__label card__label-messenger" href="#"> |
1241 | <svg width="25" height="25"> | 1244 | <svg width="25" height="25"> |
1242 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 1245 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
1243 | </svg></a></div> | 1246 | </svg></a></div> |
1244 | </div> | 1247 | </div> |
1245 | <div class="card__cnt"> | 1248 | <div class="card__cnt"> |
1246 | <div class="card__info"> | 1249 | <div class="card__info"> |
1247 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 1250 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
1248 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 1251 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
1249 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 1252 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
1250 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 1253 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
1251 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 1254 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
1252 | </div> | 1255 | </div> |
1253 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 1256 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
1254 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 1257 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
1255 | </div> | 1258 | </div> |
1256 | </div> | 1259 | </div> |
1257 | </div>--> | 1260 | </div>--> |
1258 | </div> | 1261 | </div> |
1259 | </div> | 1262 | </div> |
1260 | <div class="swiper-pagination"></div> | 1263 | <div class="swiper-pagination"></div> |
1261 | </div> | 1264 | </div> |
1262 | </div> | 1265 | </div> |
1263 | </section> | 1266 | </section> |
1264 | </div> | 1267 | </div> |
1265 | <div class="complex__map map" id="complex-map"></div> | 1268 | <div class="complex__map map" id="complex-map"></div> |
1266 | </section> | 1269 | </section> |
1267 | @endsection | 1270 | @endsection |
1268 | 1271 | ||
1269 | @section('form_feedback') | 1272 | @section('form_feedback') |
1270 | <!-- Форма обратной связи --> | 1273 | <!-- Форма обратной связи --> |
1271 | @include('form.form_feedback') | 1274 | @include('form.form_feedback') |
1272 | @endsection | 1275 | @endsection |
1273 | 1276 | ||
1274 | 1277 |
resources/views/house/post.blade.php
1 | @extends('layout.site', ['title' => 'Избранное RentTorg']) | 1 | @extends('layout.site', ['title' => $house->title]) |
2 | |||
3 | @section('custom_js') | ||
4 | @include('js.maps_js') | ||
5 | <script> | ||
6 | setComplexMap('offer-map', [{{ $house->coord_x }}, {{ $house->coord_y }}], "{{ $house->title}}"); | ||
7 | </script> | ||
8 | @endsection | ||
2 | 9 | ||
3 | @section('content') | 10 | @section('content') |
4 | <section class="intro" style="background-image:url({{ asset('images/intro-bg-2.jpg') }}"> | 11 | <section class="intro" style="background-image:url({{ asset('images/intro-bg-2.jpg') }}"> |
5 | <div class="container"> | 12 | <div class="container"> |
6 | <div class="intro__wrap"> | 13 | <div class="intro__wrap"> |
7 | <div class="breadcrumbs"> | 14 | <div class="breadcrumbs"> |
8 | <ul class="breadcrumbs__list"> | 15 | <ul class="breadcrumbs__list"> |
9 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> | 16 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> |
10 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('catalog') }}">Каталог</a></li> | 17 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('catalog') }}">Каталог</a></li> |
11 | <!--<li class="breadcrumbs__item"><a class="breadcrumbs__link" href="#">Каталок недвижимости</a></li>--> | 18 | <!--<li class="breadcrumbs__item"><a class="breadcrumbs__link" href="#">Каталок недвижимости</a></li>--> |
12 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('complex', ['area' => $house->areas->id]) }}">{{ $house->areas->name_area }}</a></li> | 19 | <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('complex', ['area' => $house->areas->id]) }}">{{ $house->areas->name_area }}</a></li> |
13 | <li class="breadcrumbs__item"><span class="breadcrumbs__link">{{ $house->title }}</span></li> | 20 | <li class="breadcrumbs__item"><span class="breadcrumbs__link">{{ $house->title }}</span></li> |
14 | </ul> | 21 | </ul> |
15 | </div> | 22 | </div> |
16 | <div class="intro__inner"> | 23 | <div class="intro__inner"> |
17 | <div class="intro__cnt"> | 24 | <div class="intro__cnt"> |
18 | <h1 class="intro__title title-main">{{ $house->title }}</h1><a class="intro__link-complex" href="{{ route('complex', ['area' => $house->areas->id]) }}">Перейти на страницу: <span>{{ $house->areas->name_area }}</span></a> | 25 | <h1 class="intro__title title-main">{{ $house->title }}</h1><a class="intro__link-complex" href="{{ route('complex', ['area' => $house->areas->id]) }}">Перейти на страницу: <span>{{ $house->areas->name_area }}</span></a> |
19 | <div class="intro__row"> | 26 | <div class="intro__row"> |
20 | <div class="intro__col"> | 27 | <div class="intro__col"> |
21 | <ul class="intro__list"> | 28 | <ul class="intro__list"> |
22 | <li class="intro__item" style="color:{{ $house->color_metro }};"><span>{{ $house->metro }}</span></li> | 29 | <li class="intro__item" style="color:{{ $house->color_metro }};"><span>{{ $house->metro }}</span></li> |
23 | <li class="intro__item"><span>{{ $house->description_metro }}</span></li> | 30 | <li class="intro__item"><span>{{ $house->description_metro }}</span></li> |
24 | <li class="intro__item"><span>{{ $house->okrug }}</span></li> | 31 | <li class="intro__item"><span>{{ $house->okrug }}</span></li> |
25 | </ul><a class="intro__link-map js_smooth_link" href="#offer-map">Посмотреть на карте</a> | 32 | </ul><a class="intro__link-map js_smooth_link" href="#offer-map">Посмотреть на карте</a> |
26 | </div> | 33 | </div> |
27 | <div class="intro__col"> | 34 | <div class="intro__col"> |
28 | <div class="intro__group"><span>Адрес</span><span>{{ $house->address }}</span></div> | 35 | <div class="intro__group"><span>Адрес</span><span>{{ $house->address }}</span></div> |
29 | <div class="intro__group"><span>Артикул помещения</span><span>{{ $house->articul_area }}</span></div><a class="intro__link-map js_smooth_link" href="#offer-map">Посмотреть на карте</a> | 36 | <div class="intro__group"><span>Артикул помещения</span><span>{{ $house->articul_area }}</span></div><a class="intro__link-map js_smooth_link" href="#offer-map">Посмотреть на карте</a> |
30 | </div> | 37 | </div> |
31 | </div> | 38 | </div> |
32 | <div class="intro__bottom"> | 39 | <div class="intro__bottom"> |
33 | <div class="intro__views">16 человек интересовались этим объектом за последние 24 ч</div> | 40 | <div class="intro__views">{{ $count_user->count() }} человек(а) интересовались этим объектом за последние 24 ч</div> |
34 | <a class="intro__link-phone btn btn--main" href="tel:+70001234567"><span>Позвонить | 41 | <a class="intro__link-phone btn btn--main" href="tel:+70001234567"><span>Позвонить |
35 | <svg width="22" height="22"> | 42 | <svg width="22" height="22"> |
36 | <use xlink:href="{{ asset('images/sprite.svg#intro-link-phone') }}"></use> | 43 | <use xlink:href="{{ asset('images/sprite.svg#intro-link-phone') }}"></use> |
37 | </svg></span></a> | 44 | </svg></span></a> |
38 | </div> | 45 | </div> |
39 | </div> | 46 | </div> |
40 | <div class="intro__swiper swiper"> | 47 | <div class="intro__swiper swiper"> |
41 | <div class="swiper-wrapper"> | 48 | <div class="swiper-wrapper"> |
42 | <?if (!empty($house->foto_main)) {?> | 49 | <?if (!empty($house->foto_main)) {?> |
43 | <div class="swiper-slide"> | 50 | <div class="swiper-slide"> |
44 | <div class="intro-item"> | 51 | <div class="intro-item"> |
45 | <div class="intro-item__img"><img src="{{ asset(Storage::url($house->foto_main)) }}" alt=""></div> | 52 | <div class="intro-item__img"><img src="{{ asset(Storage::url($house->foto_main)) }}" alt=""></div> |
46 | <a class="intro-item__btn js_intro_item_btn" href="{{asset(Storage::url($house->foto_main))}}" data-caption="{{ $house->title }}"> | 53 | <a class="intro-item__btn js_intro_item_btn" href="{{asset(Storage::url($house->foto_main))}}" data-caption="{{ $house->title }}"> |
47 | <svg width="16" height="16"> | 54 | <svg width="16" height="16"> |
48 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> | 55 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> |
49 | </svg></a> | 56 | </svg></a> |
50 | </div> | 57 | </div> |
51 | </div> | 58 | </div> |
52 | <?}?> | 59 | <?}?> |
53 | @foreach($house->fotohouse as $foto) | 60 | @foreach($house->fotohouse as $foto) |
54 | <div class="swiper-slide"> | 61 | <div class="swiper-slide"> |
55 | <div class="intro-item"> | 62 | <div class="intro-item"> |
56 | <div class="intro-item__img"><img src="{{ asset(Storage::url($foto->foto)) }}" alt=""></div> | 63 | <div class="intro-item__img"><img src="{{ asset(Storage::url($foto->foto)) }}" alt=""></div> |
57 | <a class="intro-item__btn js_intro_item_btn" href="{{ asset(Storage::url($foto->foto)) }}" data-caption="Фото {{ $foto->id }}"> | 64 | <a class="intro-item__btn js_intro_item_btn" href="{{ asset(Storage::url($foto->foto)) }}" data-caption="Фото {{ $foto->id }}"> |
58 | <svg width="16" height="16"> | 65 | <svg width="16" height="16"> |
59 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> | 66 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> |
60 | </svg></a> | 67 | </svg></a> |
61 | </div> | 68 | </div> |
62 | </div> | 69 | </div> |
63 | @endforeach | 70 | @endforeach |
64 | 71 | ||
65 | </div> | 72 | </div> |
66 | <div class="swiper-pagination"></div> | 73 | <div class="swiper-pagination"></div> |
67 | <div class="swiper-button-prev"> | 74 | <div class="swiper-button-prev"> |
68 | <svg width="10" height="17"> | 75 | <svg width="10" height="17"> |
69 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 76 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
70 | </svg> | 77 | </svg> |
71 | </div> | 78 | </div> |
72 | <div class="swiper-button-next"> | 79 | <div class="swiper-button-next"> |
73 | <svg width="10" height="17"> | 80 | <svg width="10" height="17"> |
74 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | 81 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> |
75 | </svg> | 82 | </svg> |
76 | </div> | 83 | </div> |
77 | </div> | 84 | </div> |
78 | </div> | 85 | </div> |
79 | </div> | 86 | </div> |
80 | </div> | 87 | </div> |
81 | </section> | 88 | </section> |
82 | <section class="offer"> | 89 | <section class="offer"> |
83 | <div class="offer__wrap"> | 90 | <div class="offer__wrap"> |
84 | <div class="container"> | 91 | <div class="container"> |
85 | <div class="offer__inner"> | 92 | <div class="offer__inner"> |
86 | <div class="offer-side"> | 93 | <div class="offer-side"> |
87 | <div class="offer-side__tabs"> | 94 | <div class="offer-side__tabs"> |
88 | <button class="offer-side__tab js_offer_side_tab active" type="button" data-tab="1">План объекта</button> | 95 | <button class="offer-side__tab js_offer_side_tab active" type="button" data-tab="1">План объекта</button> |
89 | <button class="offer-side__tab js_offer_side_tab" type="button" data-tab="2">План этажа</button> | 96 | <button class="offer-side__tab js_offer_side_tab" type="button" data-tab="2">План этажа</button> |
90 | </div> | 97 | </div> |
91 | <div class="offer-side__cnt"> | 98 | <div class="offer-side__cnt"> |
92 | <div class="offer-side-item js_offer_side_item active" data-item="1"> | 99 | <div class="offer-side-item js_offer_side_item active" data-item="1"> |
93 | <div class="offer-side-item__img"> | 100 | <div class="offer-side-item__img"> |
94 | <? if (!empty($house->object_plan)) {?> | 101 | <? if (!empty($house->object_plan)) {?> |
95 | <img src="{{ asset(Storage::url($house->object_plan)) }}" alt="План объекта"> | 102 | <img src="{{ asset(Storage::url($house->object_plan)) }}" alt="План объекта"> |
96 | <? } ?> | 103 | <? } ?> |
97 | </div> | 104 | </div> |
98 | <a class="offer-side-item__btn js_offer_side_item_btn" href="#" data-btn="offer-side-popup"> | 105 | <a class="offer-side-item__btn js_offer_side_item_btn" href="#" data-btn="offer-side-popup"> |
99 | <svg width="16" height="16"> | 106 | <svg width="16" height="16"> |
100 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> | 107 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> |
101 | </svg></a> | 108 | </svg></a> |
102 | </div> | 109 | </div> |
103 | <div class="offer-side-item js_offer_side_item" data-item="2"> | 110 | <div class="offer-side-item js_offer_side_item" data-item="2"> |
104 | <div class="offer-side-item__img"> | 111 | <div class="offer-side-item__img"> |
105 | <? if (!empty($house->floor_plan)) { ?> | 112 | <? if (!empty($house->floor_plan)) { ?> |
106 | <img src="{{ asset(Storage::url($house->floor_plan)) }}" alt="План этажа"> | 113 | <img src="{{ asset(Storage::url($house->floor_plan)) }}" alt="План этажа"> |
107 | <? }?> | 114 | <? }?> |
108 | </div> | 115 | </div> |
109 | <a class="offer-side-item__btn js_offer_side_item_btn" href="#" data-btn="offer-side-popup"> | 116 | <a class="offer-side-item__btn js_offer_side_item_btn" href="#" data-btn="offer-side-popup"> |
110 | <svg width="16" height="16"> | 117 | <svg width="16" height="16"> |
111 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> | 118 | <use xlink:href="{{ asset('images/sprite.svg#intro-item-btn') }}"></use> |
112 | </svg></a> | 119 | </svg></a> |
113 | </div> | 120 | </div> |
114 | </div> | 121 | </div> |
115 | 122 | ||
116 | <!---------------------------> | 123 | <!---------------------------> |
117 | <div class="offer-side-popup" data-popup="offer-side-popup"> | 124 | <div class="offer-side-popup" data-popup="offer-side-popup"> |
118 | <div class="offer-side-popup__wrap"> | 125 | <div class="offer-side-popup__wrap"> |
119 | <button class="offer-side-popup__close js_popup_close" type="button"> | 126 | <button class="offer-side-popup__close js_popup_close" type="button"> |
120 | <svg width="20" height="20"> | 127 | <svg width="20" height="20"> |
121 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 128 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
122 | </svg> | 129 | </svg> |
123 | </button> | 130 | </button> |
124 | <div class="offer-side-popup__cnt"> | 131 | <div class="offer-side-popup__cnt"> |
125 | <div class="offer-side-popup__item js_offer_side_popup_item active" data-item="1"> | 132 | <div class="offer-side-popup__item js_offer_side_popup_item active" data-item="1"> |
126 | <? if (!empty($house->object_plan)) {?> | 133 | <? if (!empty($house->object_plan)) {?> |
127 | <img src="{{ asset(Storage::url($house->object_plan)) }}" alt="План объекта"> | 134 | <img src="{{ asset(Storage::url($house->object_plan)) }}" alt="План объекта"> |
128 | <? } ?> | 135 | <? } ?> |
129 | </div> | 136 | </div> |
130 | <div class="offer-side-popup__item js_offer_side_popup_item" data-item="2"> | 137 | <div class="offer-side-popup__item js_offer_side_popup_item" data-item="2"> |
131 | <? if (!empty($house->floor_plan)) { ?> | 138 | <? if (!empty($house->floor_plan)) { ?> |
132 | <img src="{{ asset(Storage::url($house->floor_plan)) }}" alt="План этажа"> | 139 | <img src="{{ asset(Storage::url($house->floor_plan)) }}" alt="План этажа"> |
133 | <? }?> | 140 | <? }?> |
134 | </div> | 141 | </div> |
135 | </div> | 142 | </div> |
136 | <div class="offer-side-popup__tabs"> | 143 | <div class="offer-side-popup__tabs"> |
137 | <button class="offer-side-popup__tab js_offer_side_popup_tab active" type="button" data-tab="1">План объекта</button> | 144 | <button class="offer-side-popup__tab js_offer_side_popup_tab active" type="button" data-tab="1">План объекта</button> |
138 | <button class="offer-side-popup__tab js_offer_side_popup_tab" type="button" data-tab="2">План этажа</button> | 145 | <button class="offer-side-popup__tab js_offer_side_popup_tab" type="button" data-tab="2">План этажа</button> |
139 | </div> | 146 | </div> |
140 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> | 147 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> |
141 | <svg width="18" height="18"> | 148 | <svg width="18" height="18"> |
142 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> | 149 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> |
143 | </svg> | 150 | </svg> |
144 | </button> | 151 | </button> |
145 | </div> | 152 | </div> |
146 | </div> | 153 | </div> |
147 | <!---------------------------> | 154 | <!---------------------------> |
148 | <div class="offer__lines"> | 155 | <div class="offer__lines"> |
149 | <div class="offer__line"><span>Аренда в год за м2</span><span>{{ $house->rent_in_year }} ₽</span></div> | 156 | <div class="offer__line"><span>Аренда в год за м2</span><span>{{ $house->rent_in_year }} ₽</span></div> |
150 | <div class="offer__line"><span>Аренда в месяц</span><span>{{ $house->rent_in_month }} ₽</span></div> | 157 | <div class="offer__line"><span>Аренда в месяц</span><span>{{ $house->rent_in_month }} ₽</span></div> |
151 | <div class="offer__line"><span>Схема сделки</span><span>{{ $house->scheme_deal }}</span></div> | 158 | <div class="offer__line"><span>Схема сделки</span><span>{{ $house->scheme_deal }}</span></div> |
152 | </div> | 159 | </div> |
153 | <div class="offer-side__buttons"><a class="offer-side__btn btn btn--main" href="#" data-btn="viewing"><span>Записаться на просмотр | 160 | <div class="offer-side__buttons"><a class="offer-side__btn btn btn--main" href="#" data-btn="viewing"><span>Записаться на просмотр |
154 | <svg width="20" height="20"> | 161 | <svg width="20" height="20"> |
155 | <use xlink:href="{{ asset('images/sprite.svg#offer-side-btn-viewing') }}"></use> | 162 | <use xlink:href="{{ asset('images/sprite.svg#offer-side-btn-viewing') }}"></use> |
156 | </svg></span></a><a class="offer-side__btn btn btn--main" href="#" data-btn="sending"><span>Отправить по Email | 163 | </svg></span></a><a class="offer-side__btn btn btn--main" href="#" data-btn="sending"><span>Отправить по Email |
157 | <svg width="22" height="22"> | 164 | <svg width="22" height="22"> |
158 | <use xlink:href="{{ asset('images/sprite.svg#offer-side-btn-email') }}"></use> | 165 | <use xlink:href="{{ asset('images/sprite.svg#offer-side-btn-email') }}"></use> |
159 | </svg></span></a><a class="offer-side__btn btn btn--main" href="tel:+70001234567"><span>Позвонить | 166 | </svg></span></a><a class="offer-side__btn btn btn--main" href="tel:+70001234567"><span>Позвонить |
160 | <svg width="22" height="22"> | 167 | <svg width="22" height="22"> |
161 | <use xlink:href="{{ asset('images/sprite.svg#intro-link-phone') }}"></use> | 168 | <use xlink:href="{{ asset('images/sprite.svg#intro-link-phone') }}"></use> |
162 | </svg></span></a></div><a class="offer-side__download" href="#" download><span>Скачать презентацию | 169 | </svg></span></a></div><a class="offer-side__download" href="#" download><span>Скачать презентацию |
163 | <svg width="60" height="60"> | 170 | <svg width="60" height="60"> |
164 | <use xlink:href="{{ asset('images/sprite.svg#offer-side-download') }}"></use> | 171 | <use xlink:href="{{ asset('images/sprite.svg#offer-side-download') }}"></use> |
165 | </svg></span></a> | 172 | </svg></span></a> |
166 | </div> | 173 | </div> |
167 | <div class="offer__cnt"> | 174 | <div class="offer__cnt"> |
168 | <h2 class="offer__title">{{ $house->title }} {{ $house->address }}</h2> | 175 | <h2 class="offer__title">{{ $house->title }} {{ $house->address }}</h2> |
169 | <div class="offer__lines"> | 176 | <div class="offer__lines"> |
170 | <div class="offer__line"><span>Площадь, м2</span><span>{{ $house->area }}</span></div> | 177 | <div class="offer__line"><span>Площадь, м2</span><span>{{ $house->area }}</span></div> |
171 | <div class="offer__line"><span>Адрес</span><span>{{ $house->address }}</span></div> | 178 | <div class="offer__line"><span>Адрес</span><span>{{ $house->address }}</span></div> |
172 | <div class="offer__line"><span>Тип объекта</span><span>{{ $house->typearea->name_type }}</span></div> | 179 | <div class="offer__line"><span>Тип объекта</span><span>{{ $house->typearea->name_type }}</span></div> |
173 | <div class="offer__line"><span>Формат</span><span>{{ $house->format_house }}</span></div> | 180 | <div class="offer__line"><span>Формат</span><span>{{ $house->format_house }}</span></div> |
174 | <div class="offer__line"><span>Этаж</span><span>{{ $house->floor }} эт.</span></div> | 181 | <div class="offer__line"><span>Этаж</span><span>{{ $house->floor }} эт.</span></div> |
175 | <div class="offer__line"><span>Этажность здания</span><span>{{ $house->floor_bild }} эт.</span></div> | 182 | <div class="offer__line"><span>Этажность здания</span><span>{{ $house->floor_bild }} эт.</span></div> |
176 | <div class="offer__line"><span>Арендаторы</span><span>{{ $house->renter }}</span></div> | 183 | <div class="offer__line"><span>Арендаторы</span><span>{{ $house->renter }}</span></div> |
177 | <div class="offer__line"><span>Состояние объекта</span><span>{{ $house->sos_obj }}</span></div> | 184 | <div class="offer__line"><span>Состояние объекта</span><span>{{ $house->sos_obj }}</span></div> |
178 | <div class="offer__line"><span>Тип планировки</span><span>{{ $house->type_plan }}</span></div> | 185 | <div class="offer__line"><span>Тип планировки</span><span>{{ $house->type_plan }}</span></div> |
179 | <div class="offer__line"><span>Наличие зоны разгрузки</span><span><? if($house->uploading_area == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 186 | <div class="offer__line"><span>Наличие зоны разгрузки</span><span><? if($house->uploading_area == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
180 | <div class="offer__line"><span>Электрическая мощность</span><span>{{ $house->electric_power }} кВт</span></div> | 187 | <div class="offer__line"><span>Электрическая мощность</span><span>{{ $house->electric_power }} кВт</span></div> |
181 | <div class="offer__line"><span>Проездное</span><span><? if($house->travel_card == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 188 | <div class="offer__line"><span>Проездное</span><span><? if($house->travel_card == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
182 | <div class="offer__line"><span>Проходное место</span><span><? if($house->passing_place == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 189 | <div class="offer__line"><span>Проходное место</span><span><? if($house->passing_place == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
183 | <div class="offer__line"><span>Отдельный вход</span><span><? if($house->separate_input == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 190 | <div class="offer__line"><span>Отдельный вход</span><span><? if($house->separate_input == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
184 | <div class="offer__line"><span>Витрины</span><span><? if($house->shop_windows == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 191 | <div class="offer__line"><span>Витрины</span><span><? if($house->shop_windows == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
185 | <div class="offer__line"><span>Место для рекламы</span><span><? if($house->place_advertising == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 192 | <div class="offer__line"><span>Место для рекламы</span><span><? if($house->place_advertising == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
186 | <div class="offer__line"><span>Окна</span><span>{{ $house->windows }}</span></div> | 193 | <div class="offer__line"><span>Окна</span><span>{{ $house->windows }}</span></div> |
187 | <div class="offer__line"><span>Вытяжка</span><span><? if($house->hood == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 194 | <div class="offer__line"><span>Вытяжка</span><span><? if($house->hood == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
188 | <div class="offer__line"><span>Центральное отопление</span><span><? if($house->central_hearing == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 195 | <div class="offer__line"><span>Центральное отопление</span><span><? if($house->central_hearing == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
189 | <div class="offer__line"><span>Возможные часы работы</span><span>{{ $house->opening_hours }}</span></div> | 196 | <div class="offer__line"><span>Возможные часы работы</span><span>{{ $house->opening_hours }}</span></div> |
190 | <div class="offer__line"><span>Отделка</span><span><? if($house->finishing == 1) {?>Есть<?} else {?>Нет<?}?></span></div> | 197 | <div class="offer__line"><span>Отделка</span><span><? if($house->finishing == 1) {?>Есть<?} else {?>Нет<?}?></span></div> |
191 | <div class="offer__line"><span>Парковка</span><span>{{ $house->parking }} мест</span></div> | 198 | <div class="offer__line"><span>Парковка</span><span>{{ $house->parking }} мест</span></div> |
192 | </div> | 199 | </div> |
193 | <p class="offer__additional">{{ $house->description_2 }}</p> | 200 | <p class="offer__additional">{{ $house->description_2 }}</p> |
194 | </div> | 201 | </div> |
195 | </div> | 202 | </div> |
196 | <div class="offer-descr"> | 203 | <div class="offer-descr"> |
197 | <h3 class="offer-descr__caption">Описание объекта</h3> | 204 | <h3 class="offer-descr__caption">Описание объекта</h3> |
198 | <p class="offer-descr__text">{{ $house->description_house }}</p> | 205 | <p class="offer-descr__text">{{ $house->description_house }}</p> |
199 | </div> | 206 | </div> |
200 | </div> | 207 | </div> |
201 | </div> | 208 | </div> |
202 | <div class="offer__map map" id="offer-map"></div> | 209 | <div class="offer__map map" id="offer-map"></div> |
203 | </section> | 210 | </section> |
204 | <section class="slider"> | 211 | <section class="slider"> |
205 | <div class="container"> | 212 | <div class="container"> |
206 | <div class="slider__wrap"> | 213 | <div class="slider__wrap"> |
207 | <div class="slider__top"> | 214 | <div class="slider__top"> |
208 | <h2 class="slider__title title">Похожие помещения</h2> | 215 | <h2 class="slider__title title">Похожие помещения</h2> |
209 | <div class="slider__control"> | 216 | <div class="slider__control"> |
210 | <div class="swiper-button-prev"> | 217 | <div class="swiper-button-prev"> |
211 | <svg width="10" height="17"> | 218 | <svg width="10" height="17"> |
212 | <use xlink:href="images/sprite.svg#slider-arrow"></use> | 219 | <use xlink:href="images/sprite.svg#slider-arrow"></use> |
213 | </svg> | 220 | </svg> |
214 | </div> | 221 | </div> |
215 | <div class="swiper-button-next"> | 222 | <div class="swiper-button-next"> |
216 | <svg width="10" height="17"> | 223 | <svg width="10" height="17"> |
217 | <use xlink:href="images/sprite.svg#slider-arrow"></use> | 224 | <use xlink:href="images/sprite.svg#slider-arrow"></use> |
218 | </svg> | 225 | </svg> |
219 | </div> | 226 | </div> |
220 | </div> | 227 | </div> |
221 | </div> | 228 | </div> |
222 | <div class="slider__swiper swiper"> | 229 | <div class="slider__swiper swiper"> |
223 | <div class="swiper-wrapper"> | 230 | <div class="swiper-wrapper"> |
224 | @if ($houses->count()) | 231 | @if ($houses->count()) |
225 | @foreach ($houses as $house) | 232 | @foreach ($houses as $house) |
226 | @include('catalogs.elemhouse', ['house' => $house]) | 233 | @include('catalogs.elemhouse', ['house' => $house]) |
227 | @endforeach | 234 | @endforeach |
228 | @endif | 235 | @endif |
229 | 236 | ||
230 | <!--<div class="swiper-slide"> | 237 | <!--<div class="swiper-slide"> |
231 | <div class="card"> | 238 | <div class="card"> |
232 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 239 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
233 | <h3 class="card__title">Салон красоты</h3> | 240 | <h3 class="card__title">Салон красоты</h3> |
234 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 241 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
235 | <svg width="18" height="18"> | 242 | <svg width="18" height="18"> |
236 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 243 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
237 | </svg> | 244 | </svg> |
238 | <svg width="18" height="18"> | 245 | <svg width="18" height="18"> |
239 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 246 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
240 | </svg></span><a class="card__label card__label-messenger" href="#"> | 247 | </svg></span><a class="card__label card__label-messenger" href="#"> |
241 | <svg width="25" height="25"> | 248 | <svg width="25" height="25"> |
242 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 249 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
243 | </svg></a></div> | 250 | </svg></a></div> |
244 | </div> | 251 | </div> |
245 | <div class="card__cnt"> | 252 | <div class="card__cnt"> |
246 | <div class="card__info"> | 253 | <div class="card__info"> |
247 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 254 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
248 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 255 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
249 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 256 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
250 | <div class="card__line">Площадь: <b>556 м2</b></div> | 257 | <div class="card__line">Площадь: <b>556 м2</b></div> |
251 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 258 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
252 | </div> | 259 | </div> |
253 | <div class="card__price"><span>1 000 000 ₽</span> | 260 | <div class="card__price"><span>1 000 000 ₽</span> |
254 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 261 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
255 | </div> | 262 | </div> |
256 | </div> | 263 | </div> |
257 | </div> | 264 | </div> |
258 | <div class="swiper-slide"> | 265 | <div class="swiper-slide"> |
259 | <div class="card"> | 266 | <div class="card"> |
260 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 267 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
261 | <h3 class="card__title">Барбер-шоп</h3> | 268 | <h3 class="card__title">Барбер-шоп</h3> |
262 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 269 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
263 | <svg width="18" height="18"> | 270 | <svg width="18" height="18"> |
264 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 271 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
265 | </svg> | 272 | </svg> |
266 | <svg width="18" height="18"> | 273 | <svg width="18" height="18"> |
267 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 274 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
268 | </svg></span><a class="card__label card__label-messenger" href="#"> | 275 | </svg></span><a class="card__label card__label-messenger" href="#"> |
269 | <svg width="25" height="25"> | 276 | <svg width="25" height="25"> |
270 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 277 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
271 | </svg></a></div> | 278 | </svg></a></div> |
272 | </div> | 279 | </div> |
273 | <div class="card__cnt"> | 280 | <div class="card__cnt"> |
274 | <div class="card__info"> | 281 | <div class="card__info"> |
275 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 282 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
276 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 283 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
277 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 284 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
278 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 285 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
279 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 286 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
280 | </div> | 287 | </div> |
281 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 288 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
282 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 289 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
283 | </div> | 290 | </div> |
284 | </div> | 291 | </div> |
285 | </div> | 292 | </div> |
286 | <div class="swiper-slide"> | 293 | <div class="swiper-slide"> |
287 | <div class="card"> | 294 | <div class="card"> |
288 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 295 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
289 | <h3 class="card__title">Аптека</h3> | 296 | <h3 class="card__title">Аптека</h3> |
290 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 297 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
291 | <svg width="18" height="18"> | 298 | <svg width="18" height="18"> |
292 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 299 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
293 | </svg> | 300 | </svg> |
294 | <svg width="18" height="18"> | 301 | <svg width="18" height="18"> |
295 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 302 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
296 | </svg></span><a class="card__label card__label-messenger" href="#"> | 303 | </svg></span><a class="card__label card__label-messenger" href="#"> |
297 | <svg width="25" height="25"> | 304 | <svg width="25" height="25"> |
298 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 305 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
299 | </svg></a></div> | 306 | </svg></a></div> |
300 | </div> | 307 | </div> |
301 | <div class="card__cnt"> | 308 | <div class="card__cnt"> |
302 | <div class="card__info"> | 309 | <div class="card__info"> |
303 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 310 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
304 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 311 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
305 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 312 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
306 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 313 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
307 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 314 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
308 | </div> | 315 | </div> |
309 | <div class="card__price"><span>5 280 000 ₽</span> | 316 | <div class="card__price"><span>5 280 000 ₽</span> |
310 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 317 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
311 | </div> | 318 | </div> |
312 | </div> | 319 | </div> |
313 | </div> | 320 | </div> |
314 | <div class="swiper-slide"> | 321 | <div class="swiper-slide"> |
315 | <div class="card"> | 322 | <div class="card"> |
316 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 323 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
317 | <h3 class="card__title">Витрина</h3> | 324 | <h3 class="card__title">Витрина</h3> |
318 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 325 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
319 | <svg width="18" height="18"> | 326 | <svg width="18" height="18"> |
320 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 327 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
321 | </svg> | 328 | </svg> |
322 | <svg width="18" height="18"> | 329 | <svg width="18" height="18"> |
323 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 330 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
324 | </svg></span><a class="card__label card__label-messenger" href="#"> | 331 | </svg></span><a class="card__label card__label-messenger" href="#"> |
325 | <svg width="25" height="25"> | 332 | <svg width="25" height="25"> |
326 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 333 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
327 | </svg></a></div> | 334 | </svg></a></div> |
328 | </div> | 335 | </div> |
329 | <div class="card__cnt"> | 336 | <div class="card__cnt"> |
330 | <div class="card__info"> | 337 | <div class="card__info"> |
331 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 338 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
332 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 339 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
333 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 340 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
334 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 341 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
335 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 342 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
336 | </div> | 343 | </div> |
337 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 344 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
338 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 345 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
339 | </div> | 346 | </div> |
340 | </div> | 347 | </div> |
341 | </div> | 348 | </div> |
342 | <div class="swiper-slide"> | 349 | <div class="swiper-slide"> |
343 | <div class="card"> | 350 | <div class="card"> |
344 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> | 351 | <div class="card__top"><img src="images/card/card-img-1.jpg" alt="Фото недвижимости" loading="lazy"> |
345 | <h3 class="card__title">Салон красоты</h3> | 352 | <h3 class="card__title">Салон красоты</h3> |
346 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 353 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
347 | <svg width="18" height="18"> | 354 | <svg width="18" height="18"> |
348 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 355 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
349 | </svg> | 356 | </svg> |
350 | <svg width="18" height="18"> | 357 | <svg width="18" height="18"> |
351 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 358 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
352 | </svg></span><a class="card__label card__label-messenger" href="#"> | 359 | </svg></span><a class="card__label card__label-messenger" href="#"> |
353 | <svg width="25" height="25"> | 360 | <svg width="25" height="25"> |
354 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 361 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
355 | </svg></a></div> | 362 | </svg></a></div> |
356 | </div> | 363 | </div> |
357 | <div class="card__cnt"> | 364 | <div class="card__cnt"> |
358 | <div class="card__info"> | 365 | <div class="card__info"> |
359 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> | 366 | <address class="card__line card__line-complex">ЖК “Новинки 1”</address> |
360 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> | 367 | <address class="card__line">Фрунзенская (10 мин., пешком)<span style="background-color: #FFC955;"></span></address> |
361 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 368 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
362 | <div class="card__line">Площадь: <b>556 м2</b></div> | 369 | <div class="card__line">Площадь: <b>556 м2</b></div> |
363 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 370 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
364 | </div> | 371 | </div> |
365 | <div class="card__price"><span>1 000 000 ₽</span> | 372 | <div class="card__price"><span>1 000 000 ₽</span> |
366 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> | 373 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее</a> |
367 | </div> | 374 | </div> |
368 | </div> | 375 | </div> |
369 | </div> | 376 | </div> |
370 | <div class="swiper-slide"> | 377 | <div class="swiper-slide"> |
371 | <div class="card"> | 378 | <div class="card"> |
372 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> | 379 | <div class="card__top"><img src="images/card/card-img-2.jpg" alt="Фото недвижимости" loading="lazy"> |
373 | <h3 class="card__title">Барбер-шоп</h3> | 380 | <h3 class="card__title">Барбер-шоп</h3> |
374 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 381 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
375 | <svg width="18" height="18"> | 382 | <svg width="18" height="18"> |
376 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 383 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
377 | </svg> | 384 | </svg> |
378 | <svg width="18" height="18"> | 385 | <svg width="18" height="18"> |
379 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 386 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
380 | </svg></span><a class="card__label card__label-messenger" href="#"> | 387 | </svg></span><a class="card__label card__label-messenger" href="#"> |
381 | <svg width="25" height="25"> | 388 | <svg width="25" height="25"> |
382 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 389 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
383 | </svg></a></div> | 390 | </svg></a></div> |
384 | </div> | 391 | </div> |
385 | <div class="card__cnt"> | 392 | <div class="card__cnt"> |
386 | <div class="card__info"> | 393 | <div class="card__info"> |
387 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> | 394 | <address class="card__line card__line-complex">ЖК “Новоарбатский”</address> |
388 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> | 395 | <address class="card__line">Арбатская (8 мин., пешком)<span style="background-color: #0000A0;"></span></address> |
389 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 396 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
390 | <div class="card__line">Площадь: <b>6 556 м2</b></div> | 397 | <div class="card__line">Площадь: <b>6 556 м2</b></div> |
391 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> | 398 | <div class="card__line">Цена за м<sup>2</sup>: <b>5 225 256 ₽</b></div> |
392 | </div> | 399 | </div> |
393 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> | 400 | <div class="card__price"><span>15 520 900 ₽</span><span>в месяц</span> |
394 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 401 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
395 | </div> | 402 | </div> |
396 | </div> | 403 | </div> |
397 | </div> | 404 | </div> |
398 | <div class="swiper-slide"> | 405 | <div class="swiper-slide"> |
399 | <div class="card"> | 406 | <div class="card"> |
400 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> | 407 | <div class="card__top"><img src="images/card/card-img-3.jpg" alt="Фото недвижимости" loading="lazy"> |
401 | <h3 class="card__title">Аптека</h3> | 408 | <h3 class="card__title">Аптека</h3> |
402 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 409 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
403 | <svg width="18" height="18"> | 410 | <svg width="18" height="18"> |
404 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 411 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
405 | </svg> | 412 | </svg> |
406 | <svg width="18" height="18"> | 413 | <svg width="18" height="18"> |
407 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 414 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
408 | </svg></span><a class="card__label card__label-messenger" href="#"> | 415 | </svg></span><a class="card__label card__label-messenger" href="#"> |
409 | <svg width="25" height="25"> | 416 | <svg width="25" height="25"> |
410 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 417 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
411 | </svg></a></div> | 418 | </svg></a></div> |
412 | </div> | 419 | </div> |
413 | <div class="card__cnt"> | 420 | <div class="card__cnt"> |
414 | <div class="card__info"> | 421 | <div class="card__info"> |
415 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> | 422 | <address class="card__line card__line-complex">ЖК “Садовые кварталы”</address> |
416 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> | 423 | <address class="card__line">Коломенская (2 мин., пешком)<span style="background-color: #029B55;"></span></address> |
417 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> | 424 | <address class="card__line">ул. Ак. Королева, д. 13, стр. 1, этаж 7, пом. 1, к. 69</address> |
418 | <div class="card__line">Площадь: <b>8 626 м2</b></div> | 425 | <div class="card__line">Площадь: <b>8 626 м2</b></div> |
419 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> | 426 | <div class="card__line">Цена за м<sup>2</sup>: <b>550 256 ₽</b></div> |
420 | </div> | 427 | </div> |
421 | <div class="card__price"><span>5 280 000 ₽</span> | 428 | <div class="card__price"><span>5 280 000 ₽</span> |
422 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> | 429 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее о продаже</a> |
423 | </div> | 430 | </div> |
424 | </div> | 431 | </div> |
425 | </div> | 432 | </div> |
426 | <div class="swiper-slide"> | 433 | <div class="swiper-slide"> |
427 | <div class="card"> | 434 | <div class="card"> |
428 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> | 435 | <div class="card__top"><img src="images/card/card-img-4.jpg" alt="Фото недвижимости" loading="lazy"> |
429 | <h3 class="card__title">Витрина</h3> | 436 | <h3 class="card__title">Витрина</h3> |
430 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | 437 | <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> |
431 | <svg width="18" height="18"> | 438 | <svg width="18" height="18"> |
432 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> | 439 | <use xlink:href="images/sprite.svg#card-favorites-empty"></use> |
433 | </svg> | 440 | </svg> |
434 | <svg width="18" height="18"> | 441 | <svg width="18" height="18"> |
435 | <use xlink:href="images/sprite.svg#card-favorites"></use> | 442 | <use xlink:href="images/sprite.svg#card-favorites"></use> |
436 | </svg></span><a class="card__label card__label-messenger" href="#"> | 443 | </svg></span><a class="card__label card__label-messenger" href="#"> |
437 | <svg width="25" height="25"> | 444 | <svg width="25" height="25"> |
438 | <use xlink:href="images/sprite.svg#card-messenger"></use> | 445 | <use xlink:href="images/sprite.svg#card-messenger"></use> |
439 | </svg></a></div> | 446 | </svg></a></div> |
440 | </div> | 447 | </div> |
441 | <div class="card__cnt"> | 448 | <div class="card__cnt"> |
442 | <div class="card__info"> | 449 | <div class="card__info"> |
443 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> | 450 | <address class="card__line card__line-complex">ЖК “Нахимовский проспект, 46”</address> |
444 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> | 451 | <address class="card__line">Парк Победы (5 мин., пешком)<span style="background-color: #222964;"></span></address> |
445 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> | 452 | <address class="card__line">г. Москва, ул. Дербеневская, д. 1, стр. 6, п. 4, эт. 2, к. 3.1.</address> |
446 | <div class="card__line">Площадь: <b>6 856 м2</b></div> | 453 | <div class="card__line">Площадь: <b>6 856 м2</b></div> |
447 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> | 454 | <div class="card__line">Цена за м<sup>2</sup>: <b>25 256 ₽</b></div> |
448 | </div> | 455 | </div> |
449 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> | 456 | <div class="card__price"><span>2 625 520 ₽</span><span>в месяц</span> |
450 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> | 457 | </div><a class="card__btn btn btn--bordered" href="#">Подробнее об аренде</a> |
451 | </div> | 458 | </div> |
452 | </div> | 459 | </div> |
453 | </div>--> | 460 | </div>--> |
454 | </div> | 461 | </div> |
455 | </div> | 462 | </div> |
456 | <div class="swiper-pagination"></div> | 463 | <div class="swiper-pagination"></div> |
457 | </div> | 464 | </div> |
458 | </div> | 465 | </div> |
459 | </section> | 466 | </section> |
460 | @endsection | 467 | @endsection |
461 | 468 | ||
462 | @section('form_feedback') | 469 | @section('form_feedback') |
463 | <!-- Форма обратной связи --> | 470 | <!-- Форма обратной связи --> |
464 | @include('form.form_feedback') | 471 | @include('form.form_feedback') |
465 | @endsection | 472 | @endsection |
466 | 473 | ||
467 | 474 |
resources/views/js/maps_js.blade.php
File was created | 1 | <script> | |
2 | function setComplexMap(id, coords, caption) { | ||
3 | |||
4 | if (document.querySelector('#' + id)) { | ||
5 | |||
6 | // Дождёмся загрузки API и готовности DOM. | ||
7 | ymaps.ready(init); | ||
8 | |||
9 | function init() { | ||
10 | const map = new ymaps.Map(id, { | ||
11 | // При инициализации карты обязательно нужно указать её центр и коэффициент масштабирования. | ||
12 | center: coords, | ||
13 | zoom: 16, | ||
14 | controls: [] | ||
15 | }); | ||
16 | |||
17 | // Создаём макет содержимого. | ||
18 | const MyIconContentLayout = ymaps.templateLayoutFactory.createClass( | ||
19 | '<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>' | ||
20 | ); | ||
21 | |||
22 | // Создание макета содержимого хинта. | ||
23 | // Макет создается через фабрику макетов с помощью текстового шаблона. | ||
24 | const HintLayout = ymaps.templateLayoutFactory.createClass("<div class='my-hint'>" + | ||
25 | caption + "</div>", { | ||
26 | // Определяем метод getShape, который | ||
27 | // будет возвращать размеры макета хинта. | ||
28 | // Это необходимо для того, чтобы хинт автоматически | ||
29 | // сдвигал позицию при выходе за пределы карты. | ||
30 | getShape: function () { | ||
31 | let el = this.getElement(), | ||
32 | result = null; | ||
33 | if (el) { | ||
34 | var firstChild = el.firstChild; | ||
35 | result = new ymaps.shape.Rectangle( | ||
36 | new ymaps.geometry.pixel.Rectangle([ | ||
37 | [0, 0], | ||
38 | [firstChild.offsetWidth, firstChild.offsetHeight] | ||
39 | ]) | ||
40 | ); | ||
41 | } | ||
42 | return result; | ||
43 | } | ||
44 | } | ||
45 | ); | ||
46 | |||
47 | // метка | ||
48 | const placemark = new ymaps.Placemark(coords, { | ||
49 | // hintContent: caption, | ||
50 | // balloonContent: caption, | ||
51 | iconContent: '1', | ||
52 | // address: caption, | ||
53 | object: caption | ||
54 | }, { | ||
55 | iconLayout: 'default#imageWithContent', | ||
56 | iconImageHref: "{{ asset('images/mark-complex.svg') }}", | ||
57 | iconImageSize: [52, 67], | ||
58 | iconImageOffset: [-26, -67], | ||
59 | iconContentOffset: [0, 17], | ||
60 | iconContentLayout: MyIconContentLayout, | ||
61 | hintLayout: HintLayout | ||
62 | }); | ||
63 | |||
64 | map.geoObjects.add(placemark); | ||
65 | |||
66 | } | ||
67 | |||
68 | } | ||
69 | |||
70 | } | ||
71 | </script> | ||
72 |
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 | ||
94 | </ul> | 94 | </ul> |
95 | </nav> | 95 | </nav> |
96 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> | 96 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> |
97 | <svg width="22" height="22"> | 97 | <svg width="22" height="22"> |
98 | <use xlink:href="{{ asset('images/sprite.svg#header-btn-phone') }}"></use> | 98 | <use xlink:href="{{ asset('images/sprite.svg#header-btn-phone') }}"></use> |
99 | </svg></a> | 99 | </svg></a> |
100 | <button class="header__burger js_header_burger" type="button">Меню | 100 | <button class="header__burger js_header_burger" type="button">Меню |
101 | <svg width="28" height="18"> | 101 | <svg width="28" height="18"> |
102 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> | 102 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> |
103 | </svg> | 103 | </svg> |
104 | </button> | 104 | </button> |
105 | </div> | 105 | </div> |
106 | <div class="menu js_menu"> | 106 | <div class="menu js_menu"> |
107 | <div class="menu__wrap"> | 107 | <div class="menu__wrap"> |
108 | <button class="menu__close js_menu_close" type="button">Меню | 108 | <button class="menu__close js_menu_close" type="button">Меню |
109 | <svg width="20" height="20"> | 109 | <svg width="20" height="20"> |
110 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | 110 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> |
111 | </svg> | 111 | </svg> |
112 | </button> | 112 | </button> |
113 | <div class="menu__inner"> | 113 | <div class="menu__inner"> |
114 | <nav class="menu__nav"> | 114 | <nav class="menu__nav"> |
115 | <ul class="menu__list"> | 115 | <ul class="menu__list"> |
116 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.area.index') }}">Объекты</a></li> | 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.news.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.company.show', ['company' => 1]) }}">Компания</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.typearea.index') }}">Типы недвижимости</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.formatarea.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.message.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.houses.index') }}">Офисы</a></li> | 122 | <li class="menu__item"><a class="menu__link" href="{{ route('admin.houses.index') }}">Офисы</a></li> |
123 | </ul> | 123 | </ul> |
124 | </nav> | 124 | </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> | 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> |
126 | <div class="menu__social social"> | 126 | <div class="menu__social social"> |
127 | <ul class="social__list"> | 127 | <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> | 128 | <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"> | 129 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
130 | <svg width="40" height="40"> | 130 | <svg width="40" height="40"> |
131 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> | 131 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> |
132 | </svg></a></li> | 132 | </svg></a></li> |
133 | </ul> | 133 | </ul> |
134 | </div> | 134 | </div> |
135 | </div> | 135 | </div> |
136 | </div> | 136 | </div> |
137 | </div> | 137 | </div> |
138 | </div> | 138 | </div> |
139 | </div> | 139 | </div> |
140 | </header> | 140 | </header> |
141 | <main> | 141 | <main> |
142 | @if ($message = Session::get('success')) | 142 | @if ($message = Session::get('success')) |
143 | <section> | 143 | <section> |
144 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 144 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
145 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 145 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
146 | <span aria-hidden="true">×</span> | 146 | <span aria-hidden="true">×</span> |
147 | </button> | 147 | </button> |
148 | {{ $message }} | 148 | {{ $message }} |
149 | </div> | 149 | </div> |
150 | </section> | 150 | </section> |
151 | @endif | 151 | @endif |
152 | 152 | ||
153 | @if ($errors->any()) | 153 | @if ($errors->any()) |
154 | <section> | 154 | <section> |
155 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 155 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
156 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 156 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
157 | <span aria-hidden="true">×</span> | 157 | <span aria-hidden="true">×</span> |
158 | </button> | 158 | </button> |
159 | <ul class="mb-0"> | 159 | <ul class="mb-0"> |
160 | @foreach ($errors->all() as $error) | 160 | @foreach ($errors->all() as $error) |
161 | <li>{{ $error }}</li> | 161 | <li>{{ $error }}</li> |
162 | @endforeach | 162 | @endforeach |
163 | </ul> | 163 | </ul> |
164 | </div> | 164 | </div> |
165 | </section> | 165 | </section> |
166 | @endif | 166 | @endif |
167 | <!-- Основной контент --> | 167 | <!-- Основной контент --> |
168 | @yield('content') | 168 | @yield('content') |
169 | 169 | ||
170 | </main> | 170 | </main> |
171 | 171 | ||
172 | <footer class="footer" style="background-image:url({{ asset('images/footer-bg.jpg')}})"> | 172 | <footer class="footer" style="background-image:url({{ asset('images/footer-bg.jpg')}})"> |
173 | <div class="footer__buttons"> | 173 | <div class="footer__buttons"> |
174 | <button class="footer__btn footer__btn-phone js_btn_contact_us" type="button"> | 174 | <button class="footer__btn footer__btn-phone js_btn_contact_us" type="button"> |
175 | <svg width="30" height="32"> | 175 | <svg width="30" height="32"> |
176 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-phone')}}"></use> | 176 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-phone')}}"></use> |
177 | </svg> | 177 | </svg> |
178 | </button> | 178 | </button> |
179 | <button class="footer__btn footer__btn-up js_btn_up" type="button"> | 179 | <button class="footer__btn footer__btn-up js_btn_up" type="button"> |
180 | <svg width="19" height="11"> | 180 | <svg width="19" height="11"> |
181 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-up')}}"></use> | 181 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-up')}}"></use> |
182 | </svg> | 182 | </svg> |
183 | </button> | 183 | </button> |
184 | </div> | 184 | </div> |
185 | 185 | ||
186 | <!-- Сам футер мееню --> | 186 | <!-- Сам футер мееню --> |
187 | <div class="footer-middle"> | 187 | <div class="footer-middle"> |
188 | <div class="container"> | 188 | <div class="container"> |
189 | <div class="footer-middle__wrap"> | 189 | <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> | 190 | <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> | 191 | <p class="footer__descr">В группу “Renttorg” входит ряд ведущих российских девелоперских компаний полного цикла, реализующих масштабные объекты недвижимости.</p> |
192 | <div class="footer-questions"> | 192 | <div class="footer-questions"> |
193 | <h3 class="footer-questions__title">Есть вопросы или предложения?</h3><a class="footer-questions__btn btn btn--main" href="#" data-btn="feedback">Напишите нам</a> | 193 | <h3 class="footer-questions__title">Есть вопросы или предложения?</h3><a class="footer-questions__btn btn btn--main" href="#" data-btn="feedback">Напишите нам</a> |
194 | </div> | 194 | </div> |
195 | </div> | 195 | </div> |
196 | <div class="footer__col footer__col-menu js_footer_col"> | 196 | <div class="footer__col footer__col-menu js_footer_col"> |
197 | <h3 class="footer__caption js_footer_caption">Меню</h3> | 197 | <h3 class="footer__caption js_footer_caption">Меню</h3> |
198 | <div class="footer__block js_footer_block"> | 198 | <div class="footer__block js_footer_block"> |
199 | <ul class="footer__list"> | 199 | <ul class="footer__list"> |
200 | <li class="footer__item"><a class="footer__link" href="{{ route('index') }}">Главная</a></li> | 200 | <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> | 201 | <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> | 202 | <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> | 203 | <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> | 204 | <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> | 205 | <li class="footer__item"><a class="footer__link" href="{{ route('news') }}">Новости</a></li> |
206 | </ul> | 206 | </ul> |
207 | 207 | ||
208 | </div><a class="footer__author" href="#" target="_blank"><img src="{{ asset('images/author.png')}}" alt="Лого разработчика"></a> | 208 | </div><a class="footer__author" href="#" target="_blank"><img src="{{ asset('images/author.png')}}" alt="Лого разработчика"></a> |
209 | </div> | 209 | </div> |
210 | <div class="footer__col js_footer_col"> | 210 | <div class="footer__col js_footer_col"> |
211 | <h3 class="footer__caption js_footer_caption">Админка</h3> | 211 | <h3 class="footer__caption js_footer_caption">Админка</h3> |
212 | <div class="footer__block js_footer_block"> | 212 | <div class="footer__block js_footer_block"> |
213 | <ul class="footer__list"> | 213 | <ul class="footer__list"> |
214 | <li class="footer__item"><a class="footer__link" href="{{ route('user.index') }}">Главная</a></li> | 214 | <li class="footer__item"><a class="footer__link" href="{{ route('user.index') }}">Главная</a></li> |
215 | 215 | ||
216 | </ul> | 216 | </ul> |
217 | </div> | 217 | </div> |
218 | </div> | 218 | </div> |
219 | <div class="footer__col js_footer_col"> | 219 | <div class="footer__col js_footer_col"> |
220 | <h3 class="footer__caption js_footer_caption">Система</h3> | 220 | <h3 class="footer__caption js_footer_caption">Система</h3> |
221 | <div class="footer__block js_footer_block"> | 221 | <div class="footer__block js_footer_block"> |
222 | <ul class="footer__list"> | 222 | <ul class="footer__list"> |
223 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.login') }}">Авторизация</a></li> | 223 | <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> | 224 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.register') }}">Регистрация</a></li> |
225 | </ul> | 225 | </ul> |
226 | </div> | 226 | </div> |
227 | </div> | 227 | </div> |
228 | <div class="footer__col footer__col-contacts"> | 228 | <div class="footer__col footer__col-contacts"> |
229 | <h3 class="footer__caption js_footer_caption">Контакты</h3> | 229 | <h3 class="footer__caption js_footer_caption">Контакты</h3> |
230 | <ul class="footer__list"> | 230 | <ul class="footer__list"> |
231 | <li class="footer__item"><a class="footer__link" href="">EmailAdmin</a></li> | 231 | <li class="footer__item"><a class="footer__link" href="">EmailAdmin</a></li> |
232 | <li class="footer__item"><a class="footer__link" href="">ТелефонАдмин</a></li> | 232 | <li class="footer__item"><a class="footer__link" href="">ТелефонАдмин</a></li> |
233 | </ul> | 233 | </ul> |
234 | <div class="footer__social social"> | 234 | <div class="footer__social social"> |
235 | <ul class="social__list"> | 235 | <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> | 236 | <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"> | 237 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
238 | <svg width="40" height="40"> | 238 | <svg width="40" height="40"> |
239 | <use xlink:href="{{ asset('images/sprite.svg#wa') }}"></use> | 239 | <use xlink:href="{{ asset('images/sprite.svg#wa') }}"></use> |
240 | </svg></a></li> | 240 | </svg></a></li> |
241 | </ul> | 241 | </ul> |
242 | </div> | 242 | </div> |
243 | </div> | 243 | </div> |
244 | </div> | 244 | </div> |
245 | </div> | 245 | </div> |
246 | </div> | 246 | </div> |
247 | 247 | ||
248 | <div class="footer-bottom"> | 248 | <div class="footer-bottom"> |
249 | <div class="container"> | 249 | <div class="container"> |
250 | <div class="footer-bottom__wrap"> | 250 | <div class="footer-bottom__wrap"> |
251 | <div class="footer__copy">© 2023 RentTorg</div><a class="footer__plicy" href="{{ route('conf') }}">Политика конфиденциальности</a> | 251 | <div class="footer__copy">© 2023 RentTorg</div><a class="footer__plicy" href="{{ route('conf') }}">Политика конфиденциальности</a> |
252 | </div> | 252 | </div> |
253 | </div> | 253 | </div> |
254 | </div> | 254 | </div> |
255 | </footer> | 255 | </footer> |
256 | </div> | 256 | </div> |
257 | 257 | ||
258 | <!-- Вплывающие окна --> | 258 | <!-- Вплывающие окна --> |
259 | <div class="popup popup-feedback" data-popup="feedback"> | 259 | <div class="popup popup-feedback" data-popup="feedback"> |
260 | <div class="popup__wrap"> | 260 | <div class="popup__wrap"> |
261 | <button class="popup__close js_popup_close" type="button"> | 261 | <button class="popup__close js_popup_close" type="button"> |
262 | <svg width="20" height="20"> | 262 | <svg width="20" height="20"> |
263 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 263 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
264 | </svg> | 264 | </svg> |
265 | </button> | 265 | </button> |
266 | <form class="popup-feedback__form js_popup_feedback_form" action="{{ route('header_form') }}" method="POST"> | 266 | <form class="popup-feedback__form js_popup_feedback_form" action="{{ route('header_form') }}" method="POST"> |
267 | @csrf | 267 | @csrf |
268 | <div class="popup-feedback__title">Как с вами связаться</div> | 268 | <div class="popup-feedback__title">Как с вами связаться</div> |
269 | <div class="popup-feedback__fields"> | 269 | <div class="popup-feedback__fields"> |
270 | <label class="popup-feedback__field field"> | 270 | <label class="popup-feedback__field field"> |
271 | <input type="text" placeholder="Имя" name="NameUser"> | 271 | <input type="text" placeholder="Имя" name="NameUser"> |
272 | </label> | 272 | </label> |
273 | <label class="popup-feedback__field field"> | 273 | <label class="popup-feedback__field field"> |
274 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> | 274 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> |
275 | </label> | 275 | </label> |
276 | </div> | 276 | </div> |
277 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 277 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
278 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> | 278 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> |
279 | </form> | 279 | </form> |
280 | </div> | 280 | </div> |
281 | </div> | 281 | </div> |
282 | <div class="popup popup-feedback" data-popup="viewing"> | 282 | <div class="popup popup-feedback" data-popup="viewing"> |
283 | <div class="popup__wrap"> | 283 | <div class="popup__wrap"> |
284 | <button class="popup__close js_popup_close" type="button"> | 284 | <button class="popup__close js_popup_close" type="button"> |
285 | <svg width="20" height="20"> | 285 | <svg width="20" height="20"> |
286 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 286 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
287 | </svg> | 287 | </svg> |
288 | </button> | 288 | </button> |
289 | <form class="popup-feedback__form js_popup_viewing_form" action="{{ route('rec_view_form') }}" method="POST"> | 289 | <form class="popup-feedback__form js_popup_viewing_form" action="{{ route('rec_view_form') }}" method="POST"> |
290 | @csrf | 290 | @csrf |
291 | <div class="popup-feedback__title">Записаться на просмотр</div> | 291 | <div class="popup-feedback__title">Записаться на просмотр</div> |
292 | <div class="popup-feedback__fields"> | 292 | <div class="popup-feedback__fields"> |
293 | <label class="popup-feedback__field field"> | 293 | <label class="popup-feedback__field field"> |
294 | <input type="text" placeholder="Имя" name="NameUser"> | 294 | <input type="text" placeholder="Имя" name="NameUser"> |
295 | </label> | 295 | </label> |
296 | <label class="popup-feedback__field field"> | 296 | <label class="popup-feedback__field field"> |
297 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> | 297 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> |
298 | </label> | 298 | </label> |
299 | </div> | 299 | </div> |
300 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 300 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
301 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="#">Политикой конфиденциальности</a>.</p> | 301 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="#">Политикой конфиденциальности</a>.</p> |
302 | </form> | 302 | </form> |
303 | </div> | 303 | </div> |
304 | </div> | 304 | </div> |
305 | <div class="popup popup-success" data-popup="success"> | 305 | <div class="popup popup-success" data-popup="success"> |
306 | <div class="popup__wrap"> | 306 | <div class="popup__wrap"> |
307 | <button class="popup__close js_popup_close" type="button"> | 307 | <button class="popup__close js_popup_close" type="button"> |
308 | <svg width="20" height="20"> | 308 | <svg width="20" height="20"> |
309 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | 309 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> |
310 | </svg> | 310 | </svg> |
311 | </button> | 311 | </button> |
312 | <div class="popup-success__inner"> | 312 | <div class="popup-success__inner"> |
313 | <div class="popup-success__logo"> | 313 | <div class="popup-success__logo"> |
314 | <svg width="48" height="39"> | 314 | <svg width="48" height="39"> |
315 | <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> | 315 | <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> |
316 | </svg> | 316 | </svg> |
317 | </div> | 317 | </div> |
318 | <div class="popup-success__title">Спасибо за заявку</div> | 318 | <div class="popup-success__title">Спасибо за заявку</div> |
319 | <p class="popup-success__descr">В ближайшее время с вами свяжется наш специалист для уточнения деталей вашей задачи.</p> | 319 | <p class="popup-success__descr">В ближайшее время с вами свяжется наш специалист для уточнения деталей вашей задачи.</p> |
320 | </div> | 320 | </div> |
321 | </div> | 321 | </div> |
322 | </div> | 322 | </div> |
323 | <div class="popup popup-feedback" data-popup="sending"> | 323 | <div class="popup popup-feedback" data-popup="sending"> |
324 | <div class="popup__wrap"> | 324 | <div class="popup__wrap"> |
325 | <button class="popup__close js_popup_close" type="button"> | 325 | <button class="popup__close js_popup_close" type="button"> |
326 | <svg width="20" height="20"> | 326 | <svg width="20" height="20"> |
327 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 327 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
328 | </svg> | 328 | </svg> |
329 | </button> | 329 | </button> |
330 | <form class="popup-feedback__form js_popup_sending_form" action="{{ route('email_form') }}" method="POST"> | 330 | <form class="popup-feedback__form js_popup_sending_form" action="{{ route('email_form') }}" method="POST"> |
331 | @csrf | 331 | @csrf |
332 | <div class="popup-feedback__title">Отправить на почту</div> | 332 | <div class="popup-feedback__title">Отправить на почту</div> |
333 | <div class="popup-feedback__fields"> | 333 | <div class="popup-feedback__fields"> |
334 | <label class="popup-feedback__field field"> | 334 | <label class="popup-feedback__field field"> |
335 | <input class="js_input_email" type="text" placeholder="Электронная почта" name="EmailUser"> | 335 | <input class="js_input_email" type="text" placeholder="Электронная почта" name="EmailUser"> |
336 | </label> | 336 | </label> |
337 | </div> | 337 | </div> |
338 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 338 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
339 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> | 339 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> |
340 | </form> | 340 | </form> |
341 | </div> | 341 | </div> |
342 | </div> | 342 | </div> |
343 | <div class="contact-us js_contact_us"> | 343 | <div class="contact-us js_contact_us"> |
344 | <div class="contact-us__top"> | 344 | <div class="contact-us__top"> |
345 | <button class="contact-us__close js_contact_us_close" type="button"> | 345 | <button class="contact-us__close js_contact_us_close" type="button"> |
346 | <svg width="20" height="20"> | 346 | <svg width="20" height="20"> |
347 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 347 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
348 | </svg> | 348 | </svg> |
349 | </button> | 349 | </button> |
350 | <div class="contact-us__title">Свяжитесь с нами</div> | 350 | <div class="contact-us__title">Свяжитесь с нами</div> |
351 | </div> | 351 | </div> |
352 | <div class="contact-us__body"> | 352 | <div class="contact-us__body"> |
353 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" data-btn="feedback"> | 353 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" data-btn="feedback"> |
354 | <div class="contact-us-item__icon"> | 354 | <div class="contact-us-item__icon"> |
355 | <svg width="34" height="34"> | 355 | <svg width="34" height="34"> |
356 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> | 356 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> |
357 | </svg> | 357 | </svg> |
358 | </div> | 358 | </div> |
359 | <div class="contact-us-item__name">Позвонить</div></a> | 359 | <div class="contact-us-item__name">Позвонить</div></a> |
360 | 360 | ||
361 | <a class="contact-us-item js_contact_us_close" data-btn="sending"> | 361 | <a class="contact-us-item js_contact_us_close" data-btn="sending"> |
362 | <div class="contact-us-item__icon"> | 362 | <div class="contact-us-item__icon"> |
363 | <svg width="44" height="44"> | 363 | <svg width="44" height="44"> |
364 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> | 364 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> |
365 | </svg> | 365 | </svg> |
366 | </div> | 366 | </div> |
367 | <div class="contact-us-item__name">Написать</div></a> | 367 | <div class="contact-us-item__name">Написать</div></a> |
368 | 368 | ||
369 | <a class="contact-us-item js_contact_us_close" > | 369 | <a class="contact-us-item js_contact_us_close" > |
370 | <div class="contact-us-item__icon"> | 370 | <div class="contact-us-item__icon"> |
371 | <svg width="34" height="34"> | 371 | <svg width="34" height="34"> |
372 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> | 372 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> |
373 | </svg> | 373 | </svg> |
374 | </div> | 374 | </div> |
375 | <div class="contact-us-item__name">Онлайн-чат</div></a></div> | 375 | <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"> | 376 | <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> | 377 | <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"> | 378 | <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"> | 379 | <div class="contact-us-social__icon contact-us-social__icon-wa"> |
380 | <svg width="31" height="31"> | 380 | <svg width="31" height="31"> |
381 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> | 381 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> |
382 | </svg> | 382 | </svg> |
383 | </div> | 383 | </div> |
384 | <div class="contact-us-social__name">WhatsApp</div></a></div> | 384 | <div class="contact-us-social__name">WhatsApp</div></a></div> |
385 | </div> | 385 | </div> |
386 | </div> | 386 | </div> |
387 | <div class="offer-side-popup" data-popup="offer-side-popup"> | 387 | <div class="offer-side-popup" data-popup="offer-side-popup"> |
388 | <div class="offer-side-popup__wrap"> | 388 | <div class="offer-side-popup__wrap"> |
389 | <button class="offer-side-popup__close js_popup_close" type="button"> | 389 | <button class="offer-side-popup__close js_popup_close" type="button"> |
390 | <svg width="20" height="20"> | 390 | <svg width="20" height="20"> |
391 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 391 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
392 | </svg> | 392 | </svg> |
393 | </button> | 393 | </button> |
394 | <div class="offer-side-popup__cnt"> | 394 | <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> | 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> |
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> | 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> |
397 | </div> | 397 | </div> |
398 | <div class="offer-side-popup__tabs"> | 398 | <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> | 399 | <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> | 400 | <button class="offer-side-popup__tab js_offer_side_popup_tab" type="button" data-tab="2">План этажа</button> |
401 | </div> | 401 | </div> |
402 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> | 402 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> |
403 | <svg width="18" height="18"> | 403 | <svg width="18" height="18"> |
404 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> | 404 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> |
405 | </svg> | 405 | </svg> |
406 | </button> | 406 | </button> |
407 | </div> | 407 | </div> |
408 | </div> | 408 | </div> |
409 | <div class="img-viewer js_img_viewer"> | 409 | <div class="img-viewer js_img_viewer"> |
410 | <div class="img-viewer__wrap"> | 410 | <div class="img-viewer__wrap"> |
411 | <button class="img-viewer__close js_img_viewer_close" type="button"> | 411 | <button class="img-viewer__close js_img_viewer_close" type="button"> |
412 | <svg width="20" height="20"> | 412 | <svg width="20" height="20"> |
413 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 413 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
414 | </svg> | 414 | </svg> |
415 | </button> | 415 | </button> |
416 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> | 416 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> |
417 | <div class="img-viewer__thumbs-swiper js_img_viewer_thumbs_swiper swiper"> | 417 | <div class="img-viewer__thumbs-swiper js_img_viewer_thumbs_swiper swiper"> |
418 | <div class="swiper-wrapper"></div> | 418 | <div class="swiper-wrapper"></div> |
419 | </div> | 419 | </div> |
420 | </div> | 420 | </div> |
421 | <div class="img-viewer__slider"> | 421 | <div class="img-viewer__slider"> |
422 | <div class="img-viewer__slider-swiper js_img_viewer_slider_swiper swiper"> | 422 | <div class="img-viewer__slider-swiper js_img_viewer_slider_swiper swiper"> |
423 | <div class="swiper-wrapper"></div> | 423 | <div class="swiper-wrapper"></div> |
424 | </div> | 424 | </div> |
425 | <div class="swiper-button-prev"> | 425 | <div class="swiper-button-prev"> |
426 | <svg width="10" height="17"> | 426 | <svg width="10" height="17"> |
427 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | 427 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> |
428 | </svg> | 428 | </svg> |
429 | </div> | 429 | </div> |
430 | <div class="swiper-button-next"> | 430 | <div class="swiper-button-next"> |
431 | <svg width="10" height="17"> | 431 | <svg width="10" height="17"> |
432 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | 432 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> |
433 | </svg> | 433 | </svg> |
434 | </div> | 434 | </div> |
435 | </div> | 435 | </div> |
436 | <div class="img-viewer__caption js_img_viewer_caption"></div> | 436 | <div class="img-viewer__caption js_img_viewer_caption"></div> |
437 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> | 437 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> |
438 | <svg width="18" height="18"> | 438 | <svg width="18" height="18"> |
439 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> | 439 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> |
440 | </svg> | 440 | </svg> |
441 | </button> | 441 | </button> |
442 | </div> | 442 | </div> |
443 | </div> | 443 | </div> |
444 | <div class="cookies js_cookies"> | 444 | <div class="cookies js_cookies"> |
445 | <div class="container"> | 445 | <div class="container"> |
446 | <div class="cookies__wrap"> | 446 | <div class="cookies__wrap"> |
447 | <div class="cookies__top"> | 447 | <div class="cookies__top"> |
448 | <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> | 448 | <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> |
449 | <div class="cookies__title">Cookies</div> | 449 | <div class="cookies__title">Cookies</div> |
450 | </div> | 450 | </div> |
451 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> | 451 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> |
452 | <div class="cookies__buttons"> | 452 | <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> | 453 | <button class="cookies__btn btn btn--main js_cookies_confirm" type="button">Принять</button><a class="cookies__link" href="{{ route('cookies') }}">Подробнее</a> |
454 | </div> | 454 | </div> |
455 | </div> | 455 | </div> |
456 | </div> | 456 | </div> |
457 | </div> | 457 | </div> |
458 | <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> | 458 | <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> |
459 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> | 459 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> |
460 | <script src="{{ asset('js/main_new.js') }}"></script> | 460 | <script src="{{ asset('js/main_main.js') }}"></script> |
461 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> | 461 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> |
462 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> | 462 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> |
463 | @yield('custom_js') | 463 | @yield('custom_js') |
464 | @include('js.cookies_favorite') | 464 | @include('js.cookies_favorite') |
465 | </body> | 465 | </body> |
466 | </html> | 466 | </html> |
467 | 467 |
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="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 | </head> | 17 | </head> |
18 | <body> | 18 | <body> |
19 | <div class="spinner"></div> | 19 | <div class="spinner"></div> |
20 | <div class="wrapper"> | 20 | <div class="wrapper"> |
21 | <header class="header js_header"> | 21 | <header class="header js_header"> |
22 | <div class="container"> | 22 | <div class="container"> |
23 | <div class="header__wrap"><a class="header__logo" href="{{ route('index') }}"><img src="{{ asset('images/logo.svg') }}" alt="Лого"></a> | 23 | <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"> | 24 | <nav class="header__nav nav"> |
25 | <ul class="nav__list"> | 25 | <ul class="nav__list"> |
26 | <li class="nav__item"><a class="nav__link" href="{{ route('catalog') }}">Каталог</a></li> | 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('about') }}">О компании</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('contact') }}">Контакты</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 nav__link-favorites" href="{{ route('favorite') }}">Избранное<span><?=\App\Classes\RusDate::count_item_fav();?></span></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 | </ul> | 30 | </ul> |
31 | </nav> | 31 | </nav> |
32 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> | 32 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> |
33 | <svg width="22" height="22"> | 33 | <svg width="22" height="22"> |
34 | <use xlink:href="{{ asset('images/sprite.svg#header-btn-phone') }}"></use> | 34 | <use xlink:href="{{ asset('images/sprite.svg#header-btn-phone') }}"></use> |
35 | </svg></a> | 35 | </svg></a> |
36 | <div class="header__contacts"> | 36 | <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> | 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="tel:{{ $items_contact[0]->email }}">{{ $items_contact[0]->telephone }}</a> | 38 | <div class="header__col"><a class="header__contact" href="tel:{{ $items_contact[0]->email }}">{{ $items_contact[0]->telephone }}</a> |
39 | <button class="header__btn-callback" type="button" data-btn="feedback">Обратный звонок</button> | 39 | <button class="header__btn-callback" type="button" data-btn="feedback">Обратный звонок</button> |
40 | </div> | 40 | </div> |
41 | </div> | 41 | </div> |
42 | <button class="header__burger js_header_burger" type="button">Меню | 42 | <button class="header__burger js_header_burger" type="button">Меню |
43 | <svg width="28" height="18"> | 43 | <svg width="28" height="18"> |
44 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> | 44 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> |
45 | </svg> | 45 | </svg> |
46 | </button> | 46 | </button> |
47 | </div> | 47 | </div> |
48 | <div class="menu js_menu"> | 48 | <div class="menu js_menu"> |
49 | <div class="menu__wrap"> | 49 | <div class="menu__wrap"> |
50 | <button class="menu__close js_menu_close" type="button">Меню | 50 | <button class="menu__close js_menu_close" type="button">Меню |
51 | <svg width="20" height="20"> | 51 | <svg width="20" height="20"> |
52 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | 52 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> |
53 | </svg> | 53 | </svg> |
54 | </button> | 54 | </button> |
55 | <div class="menu__inner"> | 55 | <div class="menu__inner"> |
56 | <nav class="menu__nav"> | 56 | <nav class="menu__nav"> |
57 | <ul class="menu__list"> | 57 | <ul class="menu__list"> |
58 | <li class="menu__item"><a class="menu__link" href="{{ route('about') }}">О компании</a></li> | 58 | <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> | 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" href="{{ route('catalog') }}">Каталог</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('news') }}">Новости</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('contact') }}">Контакты</a></li> | 62 | <li class="menu__item"><a class="menu__link" href="{{ route('contact') }}">Контакты</a></li> |
63 | </ul> | 63 | </ul> |
64 | </nav> | 64 | </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> | 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__social social"> | 66 | <div class="menu__social social"> |
67 | <ul class="social__list"> | 67 | <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> | 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"> | 69 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
70 | <svg width="40" height="40"> | 70 | <svg width="40" height="40"> |
71 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> | 71 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> |
72 | </svg></a></li> | 72 | </svg></a></li> |
73 | </ul> | 73 | </ul> |
74 | </div> | 74 | </div> |
75 | </div> | 75 | </div> |
76 | </div> | 76 | </div> |
77 | </div> | 77 | </div> |
78 | </div> | 78 | </div> |
79 | </div> | 79 | </div> |
80 | </header> | 80 | </header> |
81 | <main> | 81 | <main> |
82 | 82 | ||
83 | 83 | ||
84 | <!-- Фильтр --> | 84 | <!-- Фильтр --> |
85 | @yield('filter') | 85 | @yield('filter') |
86 | 86 | ||
87 | @if ($message = Session::get('success')) | 87 | @if ($message = Session::get('success')) |
88 | <section> | 88 | <section> |
89 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | 89 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> |
90 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 90 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
91 | <span aria-hidden="true">×</span> | 91 | <span aria-hidden="true">×</span> |
92 | </button> | 92 | </button> |
93 | {{ $message }} | 93 | {{ $message }} |
94 | </div> | 94 | </div> |
95 | </section> | 95 | </section> |
96 | @endif | 96 | @endif |
97 | 97 | ||
98 | @if ($errors->any()) | 98 | @if ($errors->any()) |
99 | <section> | 99 | <section> |
100 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | 100 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> |
101 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | 101 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> |
102 | <span aria-hidden="true">×</span> | 102 | <span aria-hidden="true">×</span> |
103 | </button> | 103 | </button> |
104 | <ul class="mb-0"> | 104 | <ul class="mb-0"> |
105 | @foreach ($errors->all() as $error) | 105 | @foreach ($errors->all() as $error) |
106 | <li>{{ $error }}</li> | 106 | <li>{{ $error }}</li> |
107 | @endforeach | 107 | @endforeach |
108 | </ul> | 108 | </ul> |
109 | </div> | 109 | </div> |
110 | </section> | 110 | </section> |
111 | @endif | 111 | @endif |
112 | <!-- Основной контент --> | 112 | <!-- Основной контент --> |
113 | @yield('content') | 113 | @yield('content') |
114 | 114 | ||
115 | </main> | 115 | </main> |
116 | 116 | ||
117 | <footer class="footer" style="background-image:url({{ asset('images/footer-bg.jpg')}})"> | 117 | <footer class="footer" style="background-image:url({{ asset('images/footer-bg.jpg')}})"> |
118 | <div class="footer__buttons"> | 118 | <div class="footer__buttons"> |
119 | <button class="footer__btn footer__btn-phone js_btn_contact_us" type="button"> | 119 | <button class="footer__btn footer__btn-phone js_btn_contact_us" type="button"> |
120 | <svg width="30" height="32"> | 120 | <svg width="30" height="32"> |
121 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-phone')}}"></use> | 121 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-phone')}}"></use> |
122 | </svg> | 122 | </svg> |
123 | </button> | 123 | </button> |
124 | <button class="footer__btn footer__btn-up js_btn_up" type="button"> | 124 | <button class="footer__btn footer__btn-up js_btn_up" type="button"> |
125 | <svg width="19" height="11"> | 125 | <svg width="19" height="11"> |
126 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-up')}}"></use> | 126 | <use xlink:href="{{ asset('images/sprite.svg#footer-btn-up')}}"></use> |
127 | </svg> | 127 | </svg> |
128 | </button> | 128 | </button> |
129 | </div> | 129 | </div> |
130 | <!-- Форма обратной связи --> | 130 | <!-- Форма обратной связи --> |
131 | @yield('form_feedback') | 131 | @yield('form_feedback') |
132 | 132 | ||
133 | <!-- Сам футер мееню --> | 133 | <!-- Сам футер мееню --> |
134 | <div class="footer-middle"> | 134 | <div class="footer-middle"> |
135 | <div class="container"> | 135 | <div class="container"> |
136 | <div class="footer-middle__wrap"> | 136 | <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> | 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 | <p class="footer__descr">В группу “Renttorg” входит ряд ведущих российских девелоперских компаний полного цикла, реализующих масштабные объекты недвижимости.</p> | 138 | <p class="footer__descr">В группу “Renttorg” входит ряд ведущих российских девелоперских компаний полного цикла, реализующих масштабные объекты недвижимости.</p> |
139 | <div class="footer-questions"> | 139 | <div class="footer-questions"> |
140 | <h3 class="footer-questions__title">Есть вопросы или предложения?</h3><a class="footer-questions__btn btn btn--main" href="#" data-btn="feedback">Напишите нам</a> | 140 | <h3 class="footer-questions__title">Есть вопросы или предложения?</h3><a class="footer-questions__btn btn btn--main" href="#" data-btn="feedback">Напишите нам</a> |
141 | </div> | 141 | </div> |
142 | </div> | 142 | </div> |
143 | <div class="footer__col footer__col-menu js_footer_col"> | 143 | <div class="footer__col footer__col-menu js_footer_col"> |
144 | <h3 class="footer__caption js_footer_caption">Меню</h3> | 144 | <h3 class="footer__caption js_footer_caption">Меню</h3> |
145 | <div class="footer__block js_footer_block"> | 145 | <div class="footer__block js_footer_block"> |
146 | <ul class="footer__list"> | 146 | <ul class="footer__list"> |
147 | <li class="footer__item"><a class="footer__link" href="{{ route('catalog') }}">Каталог</a></li> | 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('about') }}">О компании</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('contact') }}">Контакты</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('favorite') }}">Избранное</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('news') }}">Новости</a></li> | 151 | <li class="footer__item"><a class="footer__link" href="{{ route('news') }}">Новости</a></li> |
152 | </ul> | 152 | </ul> |
153 | 153 | ||
154 | </div><a class="footer__author" href="#" target="_blank"><img src="{{ asset('images/author.png')}}" alt="Лого разработчика"></a> | 154 | </div><a class="footer__author" href="#" target="_blank"><img src="{{ asset('images/author.png')}}" alt="Лого разработчика"></a> |
155 | </div> | 155 | </div> |
156 | <div class="footer__col js_footer_col"> | 156 | <div class="footer__col js_footer_col"> |
157 | <h3 class="footer__caption js_footer_caption">Услуги</h3> | 157 | <h3 class="footer__caption js_footer_caption">Услуги</h3> |
158 | <div class="footer__block js_footer_block"> | 158 | <div class="footer__block js_footer_block"> |
159 | <ul class="footer__list"> | 159 | <ul class="footer__list"> |
160 | <li class="footer__item"><a class="footer__link" href="#">Продажа арендного бизнеса</a></li> | 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 | </ul> | 163 | </ul> |
164 | </div> | 164 | </div> |
165 | </div> | 165 | </div> |
166 | <div class="footer__col js_footer_col"> | 166 | <div class="footer__col js_footer_col"> |
167 | <h3 class="footer__caption js_footer_caption">Страницы</h3> | 167 | <h3 class="footer__caption js_footer_caption">Страницы</h3> |
168 | <div class="footer__block js_footer_block"> | 168 | <div class="footer__block js_footer_block"> |
169 | <ul class="footer__list"> | 169 | <ul class="footer__list"> |
170 | <li class="footer__item"><a class="footer__link" href="{{ route('auth.login') }}">Админка</a></li> | 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('cookies') }}">Cookies</a></li> | 171 | <li class="footer__item"><a class="footer__link" href="{{ route('cookies') }}">Cookies</a></li> |
172 | 172 | ||
173 | <!--<li class="footer__item"><a class="footer__link" href="#">Новая Москва</a></li> | 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 | </ul> | 177 | </ul> |
178 | </div> | 178 | </div> |
179 | </div> | 179 | </div> |
180 | <div class="footer__col footer__col-contacts"> | 180 | <div class="footer__col footer__col-contacts"> |
181 | <h3 class="footer__caption js_footer_caption">Контакты</h3> | 181 | <h3 class="footer__caption js_footer_caption">Контакты</h3> |
182 | <ul class="footer__list"> | 182 | <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> | 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="tel:{{ $items_contact[0]->telephone }}">{{ $items_contact[0]->telephone }}</a></li> | 184 | <li class="footer__item"><a class="footer__link" href="tel:{{ $items_contact[0]->telephone }}">{{ $items_contact[0]->telephone }}</a></li> |
185 | </ul> | 185 | </ul> |
186 | <div class="footer__social social"> | 186 | <div class="footer__social social"> |
187 | <ul class="social__list"> | 187 | <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> | 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"> | 189 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
190 | <svg width="40" height="40"> | 190 | <svg width="40" height="40"> |
191 | <use xlink:href="{{ asset('images/sprite.svg#wa') }}"></use> | 191 | <use xlink:href="{{ asset('images/sprite.svg#wa') }}"></use> |
192 | </svg></a></li> | 192 | </svg></a></li> |
193 | </ul> | 193 | </ul> |
194 | </div> | 194 | </div> |
195 | </div> | 195 | </div> |
196 | </div> | 196 | </div> |
197 | </div> | 197 | </div> |
198 | </div> | 198 | </div> |
199 | 199 | ||
200 | <div class="footer-bottom"> | 200 | <div class="footer-bottom"> |
201 | <div class="container"> | 201 | <div class="container"> |
202 | <div class="footer-bottom__wrap"> | 202 | <div class="footer-bottom__wrap"> |
203 | <div class="footer__copy">© 2023 RentTorg</div><a class="footer__plicy" href="{{ route('conf') }}">Политика конфиденциальности</a> | 203 | <div class="footer__copy">© 2023 RentTorg</div><a class="footer__plicy" href="{{ route('conf') }}">Политика конфиденциальности</a> |
204 | </div> | 204 | </div> |
205 | </div> | 205 | </div> |
206 | </div> | 206 | </div> |
207 | </footer> | 207 | </footer> |
208 | </div> | 208 | </div> |
209 | 209 | ||
210 | <!-- Вплывающие окна --> | 210 | <!-- Вплывающие окна --> |
211 | <div class="popup popup-feedback" data-popup="feedback"> | 211 | <div class="popup popup-feedback" data-popup="feedback"> |
212 | <div class="popup__wrap"> | 212 | <div class="popup__wrap"> |
213 | <button class="popup__close js_popup_close" type="button"> | 213 | <button class="popup__close js_popup_close" type="button"> |
214 | <svg width="20" height="20"> | 214 | <svg width="20" height="20"> |
215 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 215 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
216 | </svg> | 216 | </svg> |
217 | </button> | 217 | </button> |
218 | <form class="popup-feedback__form js_popup_feedback_form" action="{{ route('header_form') }}" method="POST"> | 218 | <form class="popup-feedback__form js_popup_feedback_form" action="{{ route('header_form') }}" method="POST"> |
219 | @csrf | 219 | @csrf |
220 | <div class="popup-feedback__title">Как с вами связаться</div> | 220 | <div class="popup-feedback__title">Как с вами связаться</div> |
221 | <div class="popup-feedback__fields"> | 221 | <div class="popup-feedback__fields"> |
222 | <label class="popup-feedback__field field"> | 222 | <label class="popup-feedback__field field"> |
223 | <input type="text" placeholder="Имя" name="NameUser"> | 223 | <input type="text" placeholder="Имя" name="NameUser"> |
224 | </label> | 224 | </label> |
225 | <label class="popup-feedback__field field"> | 225 | <label class="popup-feedback__field field"> |
226 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> | 226 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> |
227 | </label> | 227 | </label> |
228 | </div> | 228 | </div> |
229 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 229 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
230 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> | 230 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> |
231 | </form> | 231 | </form> |
232 | </div> | 232 | </div> |
233 | </div> | 233 | </div> |
234 | <div class="popup popup-feedback" data-popup="viewing"> | 234 | <div class="popup popup-feedback" data-popup="viewing"> |
235 | <div class="popup__wrap"> | 235 | <div class="popup__wrap"> |
236 | <button class="popup__close js_popup_close" type="button"> | 236 | <button class="popup__close js_popup_close" type="button"> |
237 | <svg width="20" height="20"> | 237 | <svg width="20" height="20"> |
238 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 238 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
239 | </svg> | 239 | </svg> |
240 | </button> | 240 | </button> |
241 | <form class="popup-feedback__form js_popup_viewing_form" action="{{ route('rec_view_form') }}" method="POST"> | 241 | <form class="popup-feedback__form js_popup_viewing_form" action="{{ route('rec_view_form') }}" method="POST"> |
242 | @csrf | 242 | @csrf |
243 | <div class="popup-feedback__title">Записаться на просмотр</div> | 243 | <div class="popup-feedback__title">Записаться на просмотр</div> |
244 | <div class="popup-feedback__fields"> | 244 | <div class="popup-feedback__fields"> |
245 | <label class="popup-feedback__field field"> | 245 | <label class="popup-feedback__field field"> |
246 | <input type="text" placeholder="Имя" name="NameUser"> | 246 | <input type="text" placeholder="Имя" name="NameUser"> |
247 | </label> | 247 | </label> |
248 | <label class="popup-feedback__field field"> | 248 | <label class="popup-feedback__field field"> |
249 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> | 249 | <input class="js_input_phone" type="text" placeholder="Телефон" name="TelephoneUser"> |
250 | </label> | 250 | </label> |
251 | </div> | 251 | </div> |
252 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 252 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
253 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="#">Политикой конфиденциальности</a>.</p> | 253 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="#">Политикой конфиденциальности</a>.</p> |
254 | </form> | 254 | </form> |
255 | </div> | 255 | </div> |
256 | </div> | 256 | </div> |
257 | <div class="popup popup-success" data-popup="success"> | 257 | <div class="popup popup-success" data-popup="success"> |
258 | <div class="popup__wrap"> | 258 | <div class="popup__wrap"> |
259 | <button class="popup__close js_popup_close" type="button"> | 259 | <button class="popup__close js_popup_close" type="button"> |
260 | <svg width="20" height="20"> | 260 | <svg width="20" height="20"> |
261 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | 261 | <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> |
262 | </svg> | 262 | </svg> |
263 | </button> | 263 | </button> |
264 | <div class="popup-success__inner"> | 264 | <div class="popup-success__inner"> |
265 | <div class="popup-success__logo"> | 265 | <div class="popup-success__logo"> |
266 | <svg width="48" height="39"> | 266 | <svg width="48" height="39"> |
267 | <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> | 267 | <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> |
268 | </svg> | 268 | </svg> |
269 | </div> | 269 | </div> |
270 | <div class="popup-success__title">Спасибо за заявку</div> | 270 | <div class="popup-success__title">Спасибо за заявку</div> |
271 | <p class="popup-success__descr">В ближайшее время с вами свяжется наш специалист для уточнения деталей вашей задачи.</p> | 271 | <p class="popup-success__descr">В ближайшее время с вами свяжется наш специалист для уточнения деталей вашей задачи.</p> |
272 | </div> | 272 | </div> |
273 | </div> | 273 | </div> |
274 | </div> | 274 | </div> |
275 | <div class="popup popup-feedback" data-popup="sending"> | 275 | <div class="popup popup-feedback" data-popup="sending"> |
276 | <div class="popup__wrap"> | 276 | <div class="popup__wrap"> |
277 | <button class="popup__close js_popup_close" type="button"> | 277 | <button class="popup__close js_popup_close" type="button"> |
278 | <svg width="20" height="20"> | 278 | <svg width="20" height="20"> |
279 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 279 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
280 | </svg> | 280 | </svg> |
281 | </button> | 281 | </button> |
282 | <form class="popup-feedback__form js_popup_sending_form_" action="{{ route('email_form') }}" method="POST"> | 282 | <form class="popup-feedback__form js_popup_sending_form_" action="{{ route('email_form') }}" method="POST"> |
283 | @csrf | 283 | @csrf |
284 | <div class="popup-feedback__title">Отправить на почту</div> | 284 | <div class="popup-feedback__title">Отправить на почту</div> |
285 | <div class="popup-feedback__fields"> | 285 | <div class="popup-feedback__fields"> |
286 | <label class="popup-feedback__field field"> | 286 | <label class="popup-feedback__field field"> |
287 | <input class="js_input_email" type="text" placeholder="Электронная почта" name="EmailUser"> | 287 | <input class="js_input_email" type="text" placeholder="Электронная почта" name="EmailUser"> |
288 | </label> | 288 | </label> |
289 | </div> | 289 | </div> |
290 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> | 290 | <button class="popup-feedback__btn btn btn--main js_form_btn">Отправить</button> |
291 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> | 291 | <p class="popup-feedback__confirm">Нажимая на кнопку «Отправить», Вы даете согласие на обработку персональных данных в соответствии с <a href="{{ route('conf') }}">Политикой конфиденциальности</a>.</p> |
292 | </form> | 292 | </form> |
293 | </div> | 293 | </div> |
294 | </div> | 294 | </div> |
295 | <div class="contact-us js_contact_us"> | 295 | <div class="contact-us js_contact_us"> |
296 | <div class="contact-us__top"> | 296 | <div class="contact-us__top"> |
297 | <button class="contact-us__close js_contact_us_close" type="button"> | 297 | <button class="contact-us__close js_contact_us_close" type="button"> |
298 | <svg width="20" height="20"> | 298 | <svg width="20" height="20"> |
299 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 299 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
300 | </svg> | 300 | </svg> |
301 | </button> | 301 | </button> |
302 | <div class="contact-us__title">Свяжитесь с нами</div> | 302 | <div class="contact-us__title">Свяжитесь с нами</div> |
303 | </div> | 303 | </div> |
304 | <div class="contact-us__body"> | 304 | <div class="contact-us__body"> |
305 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" data-btn="feedback"> | 305 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" data-btn="feedback"> |
306 | <div class="contact-us-item__icon"> | 306 | <div class="contact-us-item__icon"> |
307 | <svg width="34" height="34"> | 307 | <svg width="34" height="34"> |
308 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> | 308 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> |
309 | </svg> | 309 | </svg> |
310 | </div> | 310 | </div> |
311 | <div class="contact-us-item__name">Позвонить</div></a> | 311 | <div class="contact-us-item__name">Позвонить</div></a> |
312 | 312 | ||
313 | <a class="contact-us-item js_contact_us_close" data-btn="sending"> | 313 | <a class="contact-us-item js_contact_us_close" data-btn="sending"> |
314 | <div class="contact-us-item__icon"> | 314 | <div class="contact-us-item__icon"> |
315 | <svg width="44" height="44"> | 315 | <svg width="44" height="44"> |
316 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> | 316 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> |
317 | </svg> | 317 | </svg> |
318 | </div> | 318 | </div> |
319 | <div class="contact-us-item__name">Написать</div></a> | 319 | <div class="contact-us-item__name">Написать</div></a> |
320 | 320 | ||
321 | <a class="contact-us-item js_contact_us_close" > | 321 | <a class="contact-us-item js_contact_us_close" > |
322 | <div class="contact-us-item__icon"> | 322 | <div class="contact-us-item__icon"> |
323 | <svg width="34" height="34"> | 323 | <svg width="34" height="34"> |
324 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> | 324 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> |
325 | </svg> | 325 | </svg> |
326 | </div> | 326 | </div> |
327 | <div class="contact-us-item__name">Онлайн-чат</div></a></div> | 327 | <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"> | 328 | <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> | 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__name">Telegram</div></a><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> | 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__icon contact-us-social__icon-wa"> | 331 | <div class="contact-us-social__icon contact-us-social__icon-wa"> |
332 | <svg width="31" height="31"> | 332 | <svg width="31" height="31"> |
333 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> | 333 | <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> |
334 | </svg> | 334 | </svg> |
335 | </div> | 335 | </div> |
336 | <div class="contact-us-social__name">WhatsApp</div></a></div> | 336 | <div class="contact-us-social__name">WhatsApp</div></a></div> |
337 | </div> | 337 | </div> |
338 | </div> | 338 | </div> |
339 | 339 | ||
340 | <!-- Всплывашка этажа и объекта | 340 | <!-- Всплывашка этажа и объекта |
341 | <div class="offer-side-popup" data-popup="offer-side-popup"> | 341 | <div class="offer-side-popup" data-popup="offer-side-popup"> |
342 | <div class="offer-side-popup__wrap"> | 342 | <div class="offer-side-popup__wrap"> |
343 | <button class="offer-side-popup__close js_popup_close" type="button"> | 343 | <button class="offer-side-popup__close js_popup_close" type="button"> |
344 | <svg width="20" height="20"> | 344 | <svg width="20" height="20"> |
345 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 345 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
346 | </svg> | 346 | </svg> |
347 | </button> | 347 | </button> |
348 | <div class="offer-side-popup__cnt"> | 348 | <div class="offer-side-popup__cnt"> |
349 | <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> | 349 | <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> |
350 | <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> | 350 | <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> |
351 | </div> | 351 | </div> |
352 | <div class="offer-side-popup__tabs"> | 352 | <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> | 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" type="button" data-tab="2">План этажа</button> | 354 | <button class="offer-side-popup__tab js_offer_side_popup_tab" type="button" data-tab="2">План этажа</button> |
355 | </div> | 355 | </div> |
356 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> | 356 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> |
357 | <svg width="18" height="18"> | 357 | <svg width="18" height="18"> |
358 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> | 358 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> |
359 | </svg> | 359 | </svg> |
360 | </button> | 360 | </button> |
361 | </div> | 361 | </div> |
362 | </div> | 362 | </div> |
363 | --> | 363 | --> |
364 | 364 | ||
365 | <div class="img-viewer js_img_viewer"> | 365 | <div class="img-viewer js_img_viewer"> |
366 | <div class="img-viewer__wrap"> | 366 | <div class="img-viewer__wrap"> |
367 | <button class="img-viewer__close js_img_viewer_close" type="button"> | 367 | <button class="img-viewer__close js_img_viewer_close" type="button"> |
368 | <svg width="20" height="20"> | 368 | <svg width="20" height="20"> |
369 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | 369 | <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> |
370 | </svg> | 370 | </svg> |
371 | </button> | 371 | </button> |
372 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> | 372 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> |
373 | <div class="img-viewer__thumbs-swiper js_img_viewer_thumbs_swiper swiper"> | 373 | <div class="img-viewer__thumbs-swiper js_img_viewer_thumbs_swiper swiper"> |
374 | <div class="swiper-wrapper"></div> | 374 | <div class="swiper-wrapper"></div> |
375 | </div> | 375 | </div> |
376 | </div> | 376 | </div> |
377 | <div class="img-viewer__slider"> | 377 | <div class="img-viewer__slider"> |
378 | <div class="img-viewer__slider-swiper js_img_viewer_slider_swiper swiper"> | 378 | <div class="img-viewer__slider-swiper js_img_viewer_slider_swiper swiper"> |
379 | <div class="swiper-wrapper"></div> | 379 | <div class="swiper-wrapper"></div> |
380 | </div> | 380 | </div> |
381 | <div class="swiper-button-prev"> | 381 | <div class="swiper-button-prev"> |
382 | <svg width="10" height="17"> | 382 | <svg width="10" height="17"> |
383 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | 383 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> |
384 | </svg> | 384 | </svg> |
385 | </div> | 385 | </div> |
386 | <div class="swiper-button-next"> | 386 | <div class="swiper-button-next"> |
387 | <svg width="10" height="17"> | 387 | <svg width="10" height="17"> |
388 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | 388 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> |
389 | </svg> | 389 | </svg> |
390 | </div> | 390 | </div> |
391 | </div> | 391 | </div> |
392 | <div class="img-viewer__caption js_img_viewer_caption"></div> | 392 | <div class="img-viewer__caption js_img_viewer_caption"></div> |
393 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> | 393 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> |
394 | <svg width="18" height="18"> | 394 | <svg width="18" height="18"> |
395 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> | 395 | <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> |
396 | </svg> | 396 | </svg> |
397 | </button> | 397 | </button> |
398 | </div> | 398 | </div> |
399 | </div> | 399 | </div> |
400 | <div class="cookies js_cookies"> | 400 | <div class="cookies js_cookies"> |
401 | <div class="container"> | 401 | <div class="container"> |
402 | <div class="cookies__wrap"> | 402 | <div class="cookies__wrap"> |
403 | <div class="cookies__top"> | 403 | <div class="cookies__top"> |
404 | <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> | 404 | <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> |
405 | <div class="cookies__title">Cookies</div> | 405 | <div class="cookies__title">Cookies</div> |
406 | </div> | 406 | </div> |
407 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> | 407 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> |
408 | <div class="cookies__buttons"> | 408 | <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> | 409 | <button class="cookies__btn btn btn--main js_cookies_confirm" type="button">Принять</button><a class="cookies__link" href="{{ route('cookies') }}">Подробнее</a> |
410 | </div> | 410 | </div> |
411 | </div> | 411 | </div> |
412 | </div> | 412 | </div> |
413 | </div> | 413 | </div> |
414 | <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> | 414 | <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> |
415 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> | 415 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> |
416 | <script src="{{ asset('js/main_new.js') }}"></script> | 416 | <script src="{{ asset('js/main_main.js') }}"></script> |
417 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> | 417 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> |
418 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> | 418 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> |
419 | @yield('custom_js') | 419 | @yield('custom_js') |
420 | @include('js.cookies_favorite') | 420 | @include('js.cookies_favorite') |
421 | </body> | 421 | </body> |
422 | </html> | 422 | </html> |
423 | 423 |