Commit 3646d2a475cf69a5f6e1594c4a864b7a9ff5e6ea
1 parent
5e41e3567e
Exists in
master
Механизм избранные карточки и форма обратной связи
Showing 20 changed files with 1987 additions and 137 deletions Side-by-side Diff
- app/Classes/RusDate.php
- app/Http/Controllers/MainController.php
- app/Providers/ComposerServiceProvider.php
- public/js/jquery.cookie.js
- public/js/jquery.cookie.zip
- public/js/main \342\200\224 \320\272\320\276\320\277\320\270\321\217.js
- public/js/main.js
- resources/views/about.blade.php
- resources/views/ajax/complex/favorite.blade.php
- resources/views/catalog.blade.php
- resources/views/catalogs/elemhouse.blade.php
- resources/views/catalogs/house_mini.blade.php
- resources/views/cookies.blade.php
- resources/views/favorite.blade.php
- resources/views/favorite_data.blade.php
- resources/views/form/form_feedback.blade.php
- resources/views/index.blade.php
- resources/views/js/cookies_favorite.blade.php
- resources/views/layout/site.blade.php
- routes/web.php
app/Classes/RusDate.php
... | ... | @@ -44,4 +44,24 @@ class RusDate |
44 | 44 | } |
45 | 45 | return $m; |
46 | 46 | } |
47 | + | |
48 | + public static function selected_item($item) { | |
49 | + $Str = json_decode($_COOKIE['favorite_house'], true); | |
50 | + //$Arr = explode(",", $Str); | |
51 | + if (in_array($item, $Str)) | |
52 | + return " active "; | |
53 | + else | |
54 | + return ""; | |
55 | + | |
56 | + } | |
57 | + | |
58 | + public static function count_item_fav() { | |
59 | + $Arr = json_decode($_COOKIE['favorite_house'], true); | |
60 | + return count($Arr); | |
61 | + } | |
62 | + | |
63 | + public static function clear_items() { | |
64 | + unset($_COOKIE['favorite_house']); | |
65 | + //print_r($_COOKIE['arr']); | |
66 | + } | |
47 | 67 | } |
app/Http/Controllers/MainController.php
... | ... | @@ -177,14 +177,58 @@ class MainController extends Controller |
177 | 177 | * О компании |
178 | 178 | */ |
179 | 179 | public function About() { |
180 | - return view('about'); | |
180 | + $news = News::query()->orderByDesc('created_at')->limit(8)->get(); | |
181 | + $partners = Partners::query()->limit(18)->get(); | |
182 | + return view('about', compact('news', 'partners')); | |
183 | + } | |
184 | + | |
185 | + /* | |
186 | + * Форма обратной связи внизу сайта | |
187 | + */ | |
188 | + public function main_form(Request $request) { | |
189 | + return ""; | |
181 | 190 | } |
182 | 191 | |
183 | 192 | /* |
184 | 193 | * Избранное |
185 | 194 | */ |
186 | - public function Favorite() { | |
187 | - return view('favorite'); | |
195 | + public function Favorite(Request $request) { | |
196 | + $Arr = json_decode($_COOKIE['favorite_house'], true); | |
197 | + if (!empty($Arr) && is_array($Arr)) { | |
198 | + $houses = House::with('areas')->whereIn('id', $Arr); | |
199 | + | |
200 | + if (isset($request->sort_price)) { | |
201 | + switch ($request->sort_price) { | |
202 | + case 1: $houses = $houses->orderBy('price');break; | |
203 | + case 2: $houses = $houses->orderByDesc('price');break; | |
204 | + } | |
205 | + switch ($request->sort_new) { | |
206 | + case 1: $houses = $houses->orderByDesc('created_at');break; | |
207 | + case 2: $houses = $houses->orderBy('created_at');break; | |
208 | + } | |
209 | + switch ($request->sort_area) { | |
210 | + case 1: $houses = $houses->orderByDesc('area');break; | |
211 | + case 2: $houses = $houses->orderBy('area');break; | |
212 | + } | |
213 | + | |
214 | + } else { | |
215 | + $houses = $houses->orderBy('price')-> | |
216 | + orderByDesc('created_at')-> | |
217 | + orderByDesc('area'); | |
218 | + } | |
219 | + | |
220 | + $houses = $houses->paginate(4); | |
221 | + | |
222 | + if ($request->ajax()) { | |
223 | + return view('ajax.complex.favorite', compact('houses')); | |
224 | + } | |
225 | + | |
226 | + return view('favorite_data', compact('houses')); | |
227 | + } else { | |
228 | + return view('favorite', compact('Arr')); | |
229 | + } | |
230 | + | |
231 | + | |
188 | 232 | } |
189 | 233 | |
190 | 234 | /* |
app/Providers/ComposerServiceProvider.php
... | ... | @@ -34,7 +34,7 @@ class ComposerServiceProvider extends ServiceProvider |
34 | 34 | } |
35 | 35 | ); |
36 | 36 | |
37 | - $views = ['layout.site', 'index']; | |
37 | + $views = ['layout.site', 'index', 'about']; | |
38 | 38 | View::composer($views, function($view) { |
39 | 39 | $view->with(['items_contact' => Contact::limit(1)->get()]); |
40 | 40 | }); |
public/js/jquery.cookie.js
... | ... | @@ -0,0 +1,96 @@ |
1 | +/** | |
2 | + * Cookie plugin | |
3 | + * | |
4 | + * Copyright (c) 2006 Klaus Hartl (stilbuero.de) | |
5 | + * Dual licensed under the MIT and GPL licenses: | |
6 | + * http://www.opensource.org/licenses/mit-license.php | |
7 | + * http://www.gnu.org/licenses/gpl.html | |
8 | + * | |
9 | + */ | |
10 | + | |
11 | +/** | |
12 | + * Create a cookie with the given name and value and other optional parameters. | |
13 | + * | |
14 | + * @example $.cookie('the_cookie', 'the_value'); | |
15 | + * @desc Set the value of a cookie. | |
16 | + * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); | |
17 | + * @desc Create a cookie with all available options. | |
18 | + * @example $.cookie('the_cookie', 'the_value'); | |
19 | + * @desc Create a session cookie. | |
20 | + * @example $.cookie('the_cookie', null); | |
21 | + * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain | |
22 | + * used when the cookie was set. | |
23 | + * | |
24 | + * @param String name The name of the cookie. | |
25 | + * @param String value The value of the cookie. | |
26 | + * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. | |
27 | + * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. | |
28 | + * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. | |
29 | + * If set to null or omitted, the cookie will be a session cookie and will not be retained | |
30 | + * when the the browser exits. | |
31 | + * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). | |
32 | + * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). | |
33 | + * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will | |
34 | + * require a secure protocol (like HTTPS). | |
35 | + * @type undefined | |
36 | + * | |
37 | + * @name $.cookie | |
38 | + * @cat Plugins/Cookie | |
39 | + * @author Klaus Hartl/klaus.hartl@stilbuero.de | |
40 | + */ | |
41 | + | |
42 | +/** | |
43 | + * Get the value of a cookie with the given name. | |
44 | + * | |
45 | + * @example $.cookie('the_cookie'); | |
46 | + * @desc Get the value of a cookie. | |
47 | + * | |
48 | + * @param String name The name of the cookie. | |
49 | + * @return The value of the cookie. | |
50 | + * @type String | |
51 | + * | |
52 | + * @name $.cookie | |
53 | + * @cat Plugins/Cookie | |
54 | + * @author Klaus Hartl/klaus.hartl@stilbuero.de | |
55 | + */ | |
56 | +jQuery.cookie = function(name, value, options) { | |
57 | + if (typeof value != 'undefined') { // name and value given, set cookie | |
58 | + options = options || {}; | |
59 | + if (value === null) { | |
60 | + value = ''; | |
61 | + options.expires = -1; | |
62 | + } | |
63 | + var expires = ''; | |
64 | + if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { | |
65 | + var date; | |
66 | + if (typeof options.expires == 'number') { | |
67 | + date = new Date(); | |
68 | + date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); | |
69 | + } else { | |
70 | + date = options.expires; | |
71 | + } | |
72 | + expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE | |
73 | + } | |
74 | + // CAUTION: Needed to parenthesize options.path and options.domain | |
75 | + // in the following expressions, otherwise they evaluate to undefined | |
76 | + // in the packed version for some reason... | |
77 | + var path = options.path ? '; path=' + (options.path) : ''; | |
78 | + var domain = options.domain ? '; domain=' + (options.domain) : ''; | |
79 | + var secure = options.secure ? '; secure' : ''; | |
80 | + document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); | |
81 | + } else { // only name given, get cookie | |
82 | + var cookieValue = null; | |
83 | + if (document.cookie && document.cookie != '') { | |
84 | + var cookies = document.cookie.split(';'); | |
85 | + for (var i = 0; i < cookies.length; i++) { | |
86 | + var cookie = jQuery.trim(cookies[i]); | |
87 | + // Does this cookie string begin with the name we want? | |
88 | + if (cookie.substring(0, name.length + 1) == (name + '=')) { | |
89 | + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); | |
90 | + break; | |
91 | + } | |
92 | + } | |
93 | + } | |
94 | + return cookieValue; | |
95 | + } | |
96 | +}; | |
0 | 97 | \ No newline at end of file |
public/js/jquery.cookie.zip
No preview for this file type
public/js/main.js
... | ... | @@ -24,7 +24,7 @@ class App { |
24 | 24 | |
25 | 25 | this.sendForm('.js_popup_feedback_form', 'server.php', '[data-popup="success"]'); // отправка формы в поп-апе обратной связи; |
26 | 26 | this.sendForm('.js_popup_viewing_form', 'server.php', '[data-popup="success"]'); // отправка формы в поп-апе 'записаться на просмотр'; |
27 | - this.sendForm('.js_footer_feedback_form', 'server.php', '[data-popup="success"]'); // отправка формы в футере; | |
27 | + this.sendForm('.js_footer_feedback_form', '', '[data-popup="success"]'); // отправка формы в футере; | |
28 | 28 | this.sendForm('.js_contacts_form', 'server.php', '.js_contacts_success'); // отправка формы на странице контакты; |
29 | 29 | this.sendOffer(); //отправка предложения по e-mail; |
30 | 30 | |
... | ... | @@ -1223,7 +1223,8 @@ class App { |
1223 | 1223 | '<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>' |
1224 | 1224 | ); |
1225 | 1225 | |
1226 | - let collection = new ymaps.GeoObjectCollection(null, { // Создаём коллекцию, в которую будемпомещать метки (что-то типа массива); | |
1226 | + let collection = new ymaps.GeoObjectCollection(null, { | |
1227 | + // Создаём коллекцию, в которую будемпомещать метки (что-то типа массива); | |
1227 | 1228 | // preset: 'islands#yellowIcon' |
1228 | 1229 | }); |
1229 | 1230 |
resources/views/about.blade.php
1 | -@extends('layout.site', ['title' => 'Избранное RentTorg']) | |
1 | +@extends('layout.site', ['title' => 'О компании RentTorg']) | |
2 | 2 | |
3 | 3 | @section('content') |
4 | 4 | <section class="about" style="background-image:url({{ asset('images/about-bg.jpg') }})"> |
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | <div class="about__wrap"> |
7 | 7 | <div class="breadcrumbs"> |
8 | 8 | <ul class="breadcrumbs__list"> |
9 | - <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="#">Главная</a></li> | |
9 | + <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> | |
10 | 10 | <li class="breadcrumbs__item"><span class="breadcrumbs__link">О компании</span></li> |
11 | 11 | </ul> |
12 | 12 | </div> |
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | </section> |
21 | 21 | <section class="experience"> |
22 | 22 | <div class="container"> |
23 | - <h2 class="experience__title"><span>12</span>Лет опыта мы имеем на рынке коммерческой недвижимости в Москве</h2> | |
23 | + <h2 class="experience__title"><span>{{ $items_contact[0]->year }}</span>Лет опыта мы имеем на рынке коммерческой недвижимости в Москве</h2> | |
24 | 24 | <div class="experience__inner"> |
25 | 25 | <div class="experience__cnt"> |
26 | 26 | <h3 class="experience__subtitle">Гарантия надежности и безупречности сделки !</h3> |
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 | <p class="experience__text">Продажа и аренда нежилых помещений напрямую от собственника, без посредников — это Ваша возможность выгодно разместить офис, отделение банка, аптеку, салон, магазин, кафе, торговую точку практически в любом районе города. Актуальный формат коммерческой недвижимости — street retail, представленной на нашем сайте — это максимально выгодное использование арендуемых площадей.</p> |
30 | 30 | </div> |
31 | 31 | </div> |
32 | - <div class="experience__img"><img src="images/experience-img.svg" alt=""></div> | |
32 | + <div class="experience__img"><img src="{{ asset('images/experience-img.svg') }}" alt=""></div> | |
33 | 33 | </div> |
34 | 34 | </div> |
35 | 35 | </section> |
... | ... | @@ -40,29 +40,32 @@ |
40 | 40 | <div class="benefits__items"> |
41 | 41 | <div class="benefits-item"> |
42 | 42 | <div class="benefits-item__top"> |
43 | - <div class="benefits-item__img"><img src="images/benefits/benefits-item-img-1.svg" alt="Опыт"></div> | |
44 | - <h3 class="benefits-item__title">Опыт работы наших сотрудников более 15 лет</h3> | |
43 | + <div class="benefits-item__img"><img src="{{ asset('images/benefits/benefits-item-img-1.svg') }}" alt="Опыт"></div> | |
44 | + <h3 class="benefits-item__title">{{ $items_contact[0]->title1 }}</h3> | |
45 | 45 | </div> |
46 | - <p class="benefits-item__descr">Профессиональные риелторы нашего агентства Помогут Вам продать или купить недвижимость в кратчайшие сроки.</p> | |
46 | + <p class="benefits-item__descr">{{ $items_contact[0]->text1 }}</p> | |
47 | 47 | </div> |
48 | 48 | <div class="benefits-item"> |
49 | 49 | <div class="benefits-item__top"> |
50 | - <div class="benefits-item__img"><img src="images/benefits/benefits-item-img-2.svg" alt="Агенство"></div> | |
51 | - <h3 class="benefits-item__title">Самое амбициозное агентство на рынке</h3> | |
50 | + <div class="benefits-item__img"><img src="{{ asset('images/benefits/benefits-item-img-2.svg') }}" alt="Агенство"></div> | |
51 | + <h3 class="benefits-item__title">{{ $items_contact[0]->title2 }}</h3> | |
52 | 52 | </div> |
53 | - <p class="benefits-item__descr">Благодаря огромной базе и множеству довольных клиентов, именно к нам первым делом попадают актуальные предложения.</p> | |
53 | + <p class="benefits-item__descr">{{ $items_contact[0]->text2 }}</p> | |
54 | 54 | </div> |
55 | 55 | <div class="benefits-item"> |
56 | 56 | <div class="benefits-item__top"> |
57 | - <div class="benefits-item__img"><img src="images/benefits/benefits-item-img-3.svg" alt="Предложения"></div> | |
58 | - <h3 class="benefits-item__title">Исключительно актуальные предложения</h3> | |
57 | + <div class="benefits-item__img"><img src="{{ asset('images/benefits/benefits-item-img-3.svg') }}" alt="Предложения"></div> | |
58 | + <h3 class="benefits-item__title">{{ $items_contact[0]->title3 }}</h3> | |
59 | 59 | </div> |
60 | - <p class="benefits-item__descr">Наша база содержит исключительно актуальные предложения, с нами Вам не придется долго ждать освобождения этажа или целого здания.</p> | |
60 | + <p class="benefits-item__descr">{{ $items_contact[0]->text3 }}</p> | |
61 | 61 | </div> |
62 | 62 | </div> |
63 | 63 | </div> |
64 | 64 | </div> |
65 | 65 | </section> |
66 | + | |
67 | + <!-- ПАРТНЕРЫ --> | |
68 | + @if ($partners->count()) | |
66 | 69 | <section class="partners"> |
67 | 70 | <div class="container"> |
68 | 71 | <h2 class="partners__title title">Партнеры нашей компании</h2> |
... | ... | @@ -70,6 +73,10 @@ |
70 | 73 | <div class="swiper-wrapper"> |
71 | 74 | <div class="swiper-slide"> |
72 | 75 | <div class="partners__inner"> |
76 | + @foreach ($partners as $partner) | |
77 | + <div class="partners-item"><img src="{{ $partner->foto }}" alt="{{ $partner->name }}" loading="lazy"></div> | |
78 | + @endforeach | |
79 | + <!--<div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> | |
73 | 80 | <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> |
74 | 81 | <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> |
75 | 82 | <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> |
... | ... | @@ -86,8 +93,7 @@ |
86 | 93 | <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> |
87 | 94 | <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> |
88 | 95 | <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> |
89 | - <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> | |
90 | - <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div> | |
96 | + <div class="partners-item"><img src="images/partners/partners-item-img-3.png" alt="Лого партнера" loading="lazy"></div>--> | |
91 | 97 | </div> |
92 | 98 | </div> |
93 | 99 | </div> |
... | ... | @@ -95,6 +101,8 @@ |
95 | 101 | </div> |
96 | 102 | </div> |
97 | 103 | </section> |
104 | + @endif | |
105 | + <!-- НОВОСТИ --> | |
98 | 106 | <section class="slider"> |
99 | 107 | <div class="container"> |
100 | 108 | <div class="slider__wrap"> |
... | ... | @@ -103,19 +111,26 @@ |
103 | 111 | <div class="slider__control"> |
104 | 112 | <div class="swiper-button-prev"> |
105 | 113 | <svg width="10" height="17"> |
106 | - <use xlink:href="images/sprite.svg#slider-arrow"></use> | |
114 | + <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | |
107 | 115 | </svg> |
108 | 116 | </div> |
109 | 117 | <div class="swiper-button-next"> |
110 | 118 | <svg width="10" height="17"> |
111 | - <use xlink:href="images/sprite.svg#slider-arrow"></use> | |
119 | + <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | |
112 | 120 | </svg> |
113 | 121 | </div> |
114 | 122 | </div> |
115 | 123 | </div> |
116 | 124 | <div class="slider__swiper swiper"> |
117 | 125 | <div class="swiper-wrapper"> |
118 | - <div class="swiper-slide"> | |
126 | + @if ($news->count()) | |
127 | + @foreach($news as $new) | |
128 | + @include('catalogs.new', ['new' => $new]) | |
129 | + @endforeach | |
130 | + @else | |
131 | + <h3>Пока здесь нет новостей!</h3> | |
132 | + @endif | |
133 | + <!--<div class="swiper-slide"> | |
119 | 134 | <div class="card-news"> |
120 | 135 | <div class="card-news__top"><img src="images/card/card-img-5.jpg" alt="Превью к новости" loading="lazy"> |
121 | 136 | <div class="card-news__date"><span>15</span><span>Декабря 2022</span></div> |
... | ... | @@ -218,7 +233,7 @@ |
218 | 233 | </svg></a> |
219 | 234 | </div> |
220 | 235 | </div> |
221 | - </div> | |
236 | + </div>--> | |
222 | 237 | </div> |
223 | 238 | </div> |
224 | 239 | <div class="swiper-pagination"></div> |
resources/views/ajax/complex/favorite.blade.php
... | ... | @@ -0,0 +1,13 @@ |
1 | +@if ($houses->count()) | |
2 | + @foreach ($houses as $house1) | |
3 | + @include('catalogs.house_mini', ['house' => $house1]) | |
4 | + @endforeach | |
5 | + | |
6 | +@else | |
7 | + <h3>Здесь пока что нет предложений</h3> | |
8 | +@endif | |
9 | + | |
10 | +<div class="pagination"> | |
11 | + <?=$houses->appends($_GET)->links('catalogs.paginate');?> | |
12 | +</div> | |
13 | + |
resources/views/catalog.blade.php
... | ... | @@ -5,59 +5,8 @@ |
5 | 5 | @endsection |
6 | 6 | |
7 | 7 | @section('custom_js') |
8 | - @include('js.filter_value'); | |
8 | + @include('js.filter_value') | |
9 | 9 | <script> |
10 | - /* | |
11 | - $(window).load(function() { | |
12 | - var url_str = "<?=url()->full();?>"; | |
13 | - var url = new URL(url_str); | |
14 | - var searchParams = new URLSearchParams(url.search.substring(1)); | |
15 | - | |
16 | - var area = searchParams.get("area"), | |
17 | - type_area = searchParams.get("type_area"), | |
18 | - format_area= searchParams.get("format_area"), | |
19 | - address= searchParams.get("address"); | |
20 | - | |
21 | - var area_name = $('#area_name'); | |
22 | - var type_area_name = $('#type_area_name'); | |
23 | - var format_area_name = $('#format_area_name'); | |
24 | - var address_name = $('#address'); | |
25 | - | |
26 | - if ((area !== "") || (type_area !== "") || (format_area !== "") || (address !== "")) | |
27 | - { | |
28 | - $.ajax({ | |
29 | - type: "GET", | |
30 | - url: "{{ route('catalog_ajax_filter') }}", | |
31 | - data: "area=" + area + "&type_area=" + type_area + "&format_area=" + format_area + "&address=" + address + "", | |
32 | - success: function (data) { | |
33 | - console.log('Фильтры данных были переданы '); | |
34 | - data = JSON.parse(data); | |
35 | - console.log(data); | |
36 | - | |
37 | - if (area !== "") { | |
38 | - area_name.html(data[0]); | |
39 | - } | |
40 | - if (type_area !== "") { | |
41 | - type_area_name.html(data[1]); | |
42 | - } | |
43 | - if (format_area !== "") { | |
44 | - format_area_name.html(data[2]); | |
45 | - } | |
46 | - if (address !== "") { | |
47 | - address_name.html(data[3]); | |
48 | - } | |
49 | - | |
50 | - }, | |
51 | - headers: { | |
52 | - 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | |
53 | - }, | |
54 | - error: function (data) { | |
55 | - console.log('Error: ' + data); | |
56 | - } | |
57 | - }); | |
58 | - } | |
59 | - }); | |
60 | -*/ | |
61 | 10 | $(document).on('click', '.js_sort_group_item', function() { |
62 | 11 | var val = $(this).data('val'); |
63 | 12 | var sort_price_val = ''; |
resources/views/catalogs/elemhouse.blade.php
... | ... | @@ -8,13 +8,16 @@ |
8 | 8 | @endif; |
9 | 9 | |
10 | 10 | <h3 class="card__title">{{$house->typearea->name_type }}</h3> |
11 | - <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | |
12 | - <svg width="18" height="18"> | |
13 | - <use xlink:href="{{ asset('images/sprite.svg#card-favorites-empty') }}"></use> | |
14 | - </svg> | |
15 | - <svg width="18" height="18"> | |
16 | - <use xlink:href="{{ asset('images/sprite.svg#card-favorites') }}"></use> | |
17 | - </svg></span><a class="card__label card__label-messenger" href="#"> | |
11 | + <div class="card__labels"> | |
12 | + <span class="card__label card__label-favorites js_card_favorites <?=\App\Classes\RusDate::selected_item($house->id);?>" data-val="{{$house->id}}" id="card_favorite{{$house->id}}" name="card_favorite{{$house->id}}"> | |
13 | + <svg width="18" height="18"> | |
14 | + <use xlink:href="{{ asset('images/sprite.svg#card-favorites-empty') }}"></use> | |
15 | + </svg> | |
16 | + <svg width="18" height="18"> | |
17 | + <use xlink:href="{{ asset('images/sprite.svg#card-favorites') }}"></use> | |
18 | + </svg> | |
19 | + </span> | |
20 | + <a class="card__label card__label-messenger" href="#"> | |
18 | 21 | <svg width="25" height="25"> |
19 | 22 | <use xlink:href="{{ asset('images/sprite.svg#card-messenger') }}"></use> |
20 | 23 | </svg></a></div> |
resources/views/catalogs/house_mini.blade.php
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | @endif; |
8 | 8 | |
9 | 9 | <h3 class="card__title">{{$house->typearea->name_type }}</h3> |
10 | - <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites"> | |
10 | + <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites <?=\App\Classes\RusDate::selected_item($house->id);?>" data-val="{{$house->id}}" id="card_favorite{{$house->id}}" name="card_favorite{{$house->id}}"> | |
11 | 11 | <svg width="18" height="18"> |
12 | 12 | <use xlink:href="{{ asset('images/sprite.svg#card-favorites-empty') }}"></use> |
13 | 13 | </svg> |
resources/views/cookies.blade.php
1 | -@extends('layout.site', ['title' => 'Избранное RentTorg']) | |
1 | +@extends('layout.site', ['title' => 'Мы используем cookies']) | |
2 | 2 | |
3 | 3 | @section('content') |
4 | - <section class="favorites"> | |
5 | - <div class="favorites-top"> | |
4 | + <section class="page-cookies"> | |
5 | + <div class="page-cookies-top"> | |
6 | 6 | <div class="container"> |
7 | 7 | <div class="breadcrumbs"> |
8 | 8 | <ul class="breadcrumbs__list"> |
9 | - <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="#">Главная</a></li> | |
10 | - <li class="breadcrumbs__item"><span class="breadcrumbs__link">Избранное </span></li> | |
9 | + <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> | |
10 | + <li class="breadcrumbs__item"><span class="breadcrumbs__link">Мы используем cookie файлы</span></li> | |
11 | 11 | </ul> |
12 | 12 | </div> |
13 | - <h1 class="favorites__title title-main">Тут пока что ничего нет...</h1><a class="favorites-top__link" href="#">Выберите идеальную недвижимость </a> | |
14 | - <p class="favorites__descr">Здесь вы можете ознакомиться с недвижимостью которая вам понравилось</p> | |
13 | + <h1 class="page-cookies__title title-main">Мы используем cookie файлы</h1> | |
15 | 14 | </div> |
16 | 15 | </div> |
17 | - <div class="favorites-cnt"> | |
16 | + <div class="page-cookies-cnt"> | |
18 | 17 | <div class="container"> |
19 | - <div class="favorites__items"> | |
20 | - <div class="favorites-item"> | |
21 | - <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-1.svg" alt=""></div> | |
22 | - <p class="favorites-item__descr"><a href="#">Найдите</a> идеальную планировку на сайте Renttorg</p> | |
23 | - </div> | |
24 | - <div class="favorites-item"> | |
25 | - <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-2.svg" alt=""></div> | |
26 | - <p class="favorites-item__descr">Нажмите на <img src="images/favorites-icon-mini.svg" alt=""> для добавления недвижемости в избранное</p> | |
27 | - </div> | |
28 | - <div class="favorites-item"> | |
29 | - <div class="favorites-item__img"><img src="images/favorites/favorites-item-img-3.svg" alt=""></div> | |
30 | - <p class="favorites-item__descr">Перейдите в избранное или сравнение для выбора планировки</p> | |
31 | - </div> | |
32 | - </div> | |
18 | + <div class="page-cookies__inner"> | |
19 | + <p>Когда вы посещаете сайт, Renttorg может использовать общеотраслевую технологию, называемую cookie. Файлы cookie представляют собой небольшие фрагменты данных, которые временно сохраняются на вашем компьютере или мобильном устройстве и обеспечивают более эффективную работу сайта. Renttorg для сбора статистики использует подсистему «Цифровая культура». На основе этих данных мы делаем наш сайт лучше и эффективнее для пользователей. Продолжая пользоваться этим сайтом, вы соглашаетесь на использование cookie и обработку данных в соответствии с Политикой сайта в области обработки и защиты персональных данных. Если вы не хотите использовать cookie, вы можете отключить их в настройках безопасности вашего браузера. Отключение cookie следует выполнить для каждого браузера и устройства, с помощью которого осуществляется вход на сайт. Обратите внимание, что в случае, если использование сайтом cookie-файлов отключено, некоторые возможности и услуги сайта могут быть недоступны. Согласие на обработку персональных данных посетителей сайта Настоящим, свободно, своей волей и в своем интересе выражаю свое согласие [адрес учреждения – собственника сайта] (далее – Оператор) на автоматизированную обработку моих персональных данных в соответствии со следующим перечнем персональных данных:</p> | |
20 | + <ul> | |
21 | + <li>Опционально: обучение заказчиков заказчиков.</li> | |
22 | + <li>Системная информация, данные из моего браузера.</li> | |
23 | + <li>Системная информация, данные из моего браузера.</li> | |
24 | + <li>Мой IP-адрес.</li> | |
25 | + <li>Установленные на моем устройстве операционные системы.</li> | |
26 | + <li>Установленные на моем устройстве типы браузеров.</li> | |
27 | + <li>Установленные на моем устройстве расширения и настройки цвета экрана.</li> | |
28 | + <li>Установленные и используемые на моем устройстве языки.</li> | |
29 | + <li>Версии Flash и поддержка JavaScript.</li> | |
30 | + <li>Типы мобильных устройств, используемых мной, если применимо.</li> | |
31 | + <li>Географическое положение.</li> | |
32 | + <li>Типы мобильных устройств, используемых мной, если применимо.</li> | |
33 | + <li>Количество посещений сайта и просмотров страниц.</li> | |
34 | + <li>Длительность пребывания на сайте.</li> | |
35 | + <li>Запросы, использованные мной при переходе на сайт.</li> | |
36 | + <li>Страницы, с которых были совершены переходы.</li> | |
37 | + </ul> | |
38 | + <p>Для целей сбора статистики о посетителях сайта Оператор вправе осуществлять обработку моих персональных данных следующими способами: сбор, систематизация, накопление, хранение, обновление, изменение, использование. Оператор может обрабатывать файлы cookie самостоятельно или с привлечением иных сервисов. Настоящее согласие вступает в силу с момента моего перехода на сайт Оператора и действует до момента его отзыва. Согласие действует на период: 1 год. Согласие на обработку персональных данных может быть отозвано мною путем письменного уведомления по указанному адресу об этом не менее чем за один месяц до даты фактического прекращения обработки моих персональных данных Оператором.</p> | |
39 | + </div><a class="page-cookies__btn btn btn--main" href="#">Принять и продолжить</a> | |
33 | 40 | </div> |
34 | 41 | </div> |
35 | 42 | </section> |
resources/views/favorite.blade.php
... | ... | @@ -11,7 +11,8 @@ |
11 | 11 | </ul> |
12 | 12 | </div> |
13 | 13 | <h1 class="favorites__title title-main">Тут пока что ничего нет...</h1><a class="favorites-top__link" href=" {{ route('catalog') }}">Выберите идеальную недвижимость </a> |
14 | - <p class="favorites__descr">Здесь вы можете ознакомиться с недвижимостью которая вам понравилось</p> | |
14 | + <p class="favorites__descr">Здесь вы можете ознакомиться с недвижимостью которая вам понравилось | |
15 | + </p> | |
15 | 16 | </div> |
16 | 17 | </div> |
17 | 18 | <div class="favorites-cnt"> |
resources/views/favorite_data.blade.php
... | ... | @@ -0,0 +1,113 @@ |
1 | +@extends('layout.site', ['title' => 'Избранное RentTorg']) | |
2 | + | |
3 | +@section('custom_js') | |
4 | + <script> | |
5 | + $(document).on('click', '.js_sort_group_item', function() { | |
6 | + var val = $(this).data('val'); | |
7 | + var sort_price_val = ''; | |
8 | + var sort_area_val = ''; | |
9 | + var sort_new_val = ''; | |
10 | + | |
11 | + $('.sort-price').each(function() { | |
12 | + var this_ = $(this); | |
13 | + var v = $(this).data('val'); | |
14 | + if (this_.hasClass('active')) | |
15 | + sort_price_val = v; | |
16 | + }); | |
17 | + | |
18 | + $('.sort-new').each(function() { | |
19 | + var v = $(this).data('val'); | |
20 | + var this_ = $(this); | |
21 | + if (this_.hasClass('active')) | |
22 | + sort_new_val = v; | |
23 | + }); | |
24 | + | |
25 | + $('.sort-area').each(function() { | |
26 | + var v = $(this).data('val'); | |
27 | + var this_ = $(this); | |
28 | + if (this_.hasClass('active')) | |
29 | + sort_area_val = v; | |
30 | + | |
31 | + }); | |
32 | + | |
33 | + console.log('-------------------'); | |
34 | + $.ajax({ | |
35 | + type: "GET", | |
36 | + url: "{{ route('favorite') }}", | |
37 | + data: "sort_price="+sort_price_val+"&sort_new="+sort_new_val+"&sort_area="+sort_area_val+"", | |
38 | + success: function(data) { | |
39 | + console.log('Сортировка данных обновлена '+data); | |
40 | + $('#house_block').html(data); | |
41 | + }, | |
42 | + headers: { | |
43 | + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | |
44 | + }, | |
45 | + error: function(data) { | |
46 | + console.log('Error: '+ data); | |
47 | + } | |
48 | + }); | |
49 | + } | |
50 | + ); | |
51 | + </script> | |
52 | +@endsection | |
53 | + | |
54 | +@section('content') | |
55 | + <section class="favorites"> | |
56 | + <div class="favorites-top"> | |
57 | + <div class="container"> | |
58 | + <div class="breadcrumbs"> | |
59 | + <ul class="breadcrumbs__list"> | |
60 | + <li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{ route('index') }}">Главная</a></li> | |
61 | + <li class="breadcrumbs__item"><span class="breadcrumbs__link">Избранное </span></li> | |
62 | + </ul> | |
63 | + </div> | |
64 | + <h1 class="favorites__title title-main">Избранное</h1> | |
65 | + <p class="favorites__descr">Здесь вы можете ознакомиться с недвижимостью которая вам понравилось</p> | |
66 | + </div> | |
67 | + </div> | |
68 | + <div class="favorites-cnt"> | |
69 | + <div class="container"> | |
70 | + <form class="favorites__sorts"> | |
71 | + <div class="favorites__sort-group sort-group js_sort_group"> | |
72 | + <input class="js_sort_group_input" type="hidden"> | |
73 | + <div class="sort-group__current js_sort_group_current">Сначала дешевле</div> | |
74 | + <ul class="sort-group__list js_sort_group_list"> | |
75 | + <li class="sort-price sort-group__item js_sort_group_item active" data-val="1">Сначала дешевле</li> | |
76 | + <li class="sort-price sort-group__item js_sort_group_item" data-val="2">Сначала дороже</li> | |
77 | + </ul> | |
78 | + </div> | |
79 | + <div class="favorites__sort-group sort-group js_sort_group"> | |
80 | + <input class="js_sort_group_input" type="hidden"> | |
81 | + <div class="sort-group__current js_sort_group_current">Сначала новые</div> | |
82 | + <ul class="sort-group__list js_sort_group_list"> | |
83 | + <li class="sort-new sort-group__item js_sort_group_item active" data-val="1">Сначала новые</li> | |
84 | + <li class="sort-new sort-group__item js_sort_group_item" data-val="2">Сначала старые</li> | |
85 | + </ul> | |
86 | + </div> | |
87 | + <div class="favorites__sort-group sort-group sort-group--wide js_sort_group"> | |
88 | + <input class="js_sort_group_input" type="hidden"> | |
89 | + <div class="sort-group__current js_sort_group_current">Сначала с большей площадью</div> | |
90 | + <ul class="sort-group__list js_sort_group_list"> | |
91 | + <li class="sort-area sort-group__item js_sort_group_item active" data-val="1">Сначала с большей площадью</li> | |
92 | + <li class="sort-area sort-group__item js_sort_group_item" data-val="2">Сначала с меньшей площадью</li> | |
93 | + </ul> | |
94 | + </div> | |
95 | + </form> | |
96 | + <div class="favorites__grid" id="house_block"> | |
97 | + @if ($houses->count()) | |
98 | + @foreach ($houses as $house1) | |
99 | + @include('catalogs.house_mini', ['house' => $house1]) | |
100 | + @endforeach | |
101 | + @else | |
102 | + <h3>Здесь пока что нет предложений</h3> | |
103 | + @endif | |
104 | + </div> | |
105 | + </div> | |
106 | + </div> | |
107 | + </section> | |
108 | +@endsection | |
109 | + | |
110 | +@section('form_feedback') | |
111 | + <!-- Форма обратной связи --> | |
112 | + @include('form.form_feedback') | |
113 | +@endsection |
resources/views/form/form_feedback.blade.php
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | <h2 class="footer-feedback__title title">Оставьте заявку</h2> |
6 | 6 | <p class="footer-feedback__descr">и мы подберем для вас лучшее предложение!</p> |
7 | 7 | </div> |
8 | - <form class="footer-feedback__form js_footer_feedback_form"> | |
8 | + <form class="footer-feedback__form js_footer_feedback_form" action="{{ route('main_form') }}" method="POST"> | |
9 | 9 | <div class="footer-feedback__row"> |
10 | 10 | <div class="footer-feedback__col"> |
11 | 11 | <label class="footer-feedback__field field"> |
resources/views/index.blade.php
... | ... | @@ -326,12 +326,12 @@ |
326 | 326 | <div class="slider__control"> |
327 | 327 | <div class="swiper-button-prev"> |
328 | 328 | <svg width="10" height="17"> |
329 | - <use xlink:href="images/sprite.svg#slider-arrow"></use> | |
329 | + <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | |
330 | 330 | </svg> |
331 | 331 | </div> |
332 | 332 | <div class="swiper-button-next"> |
333 | 333 | <svg width="10" height="17"> |
334 | - <use xlink:href="images/sprite.svg#slider-arrow"></use> | |
334 | + <use xlink:href="{{ asset('images/sprite.svg#slider-arrow') }}"></use> | |
335 | 335 | </svg> |
336 | 336 | </div> |
337 | 337 | </div> |
resources/views/js/cookies_favorite.blade.php
... | ... | @@ -0,0 +1,69 @@ |
1 | +<script> | |
2 | + $(document).ready(function() { | |
3 | + $(document).on('click', '.js_card_favorites', function () { | |
4 | + var _this = $(this); | |
5 | + var id_house = _this.attr('data-val'); | |
6 | + | |
7 | + if (_this.hasClass('active')) { | |
8 | + add_in_array(id_house); | |
9 | + console.log('Добавлено в избранное id=' + id_house); | |
10 | + } else { | |
11 | + delete_in_array(id_house); | |
12 | + console.log('Удалено из избранных id='+id_house) | |
13 | + } | |
14 | + | |
15 | + var str = $.cookie('favorite_house'); | |
16 | + console.log("Вывод куков "+str); | |
17 | + | |
18 | + }); | |
19 | + }); | |
20 | + | |
21 | + //помеченный элемент | |
22 | + function selected_item(obj) { | |
23 | + var arr = read_array(); | |
24 | + var index = arr.indexOf(obj); | |
25 | + | |
26 | + if (index > 0) | |
27 | + return "active"; | |
28 | + else | |
29 | + return ""; | |
30 | + } | |
31 | + | |
32 | + // запись элемента массива в cookie | |
33 | + function add_in_array(obj){ | |
34 | + var arr = read_array();//получаем текущее состояние массива | |
35 | + arr[arr.length]=obj; //добавляем элемент в конец | |
36 | + //var str = JSON.stringify(arr);//конвертируем в строку | |
37 | + //$.cookie('arr',str);//записываем массив в куки | |
38 | + $.cookie('favorite_house', JSON.stringify(arr)); | |
39 | + } | |
40 | + | |
41 | + // удаление элемента из массива в cookie | |
42 | + function delete_in_array(obj) { | |
43 | + var arr = read_array(); | |
44 | + var index = arr.indexOf(obj); | |
45 | + arr.splice(index, 1); | |
46 | + //var str = JSON.stringify(arr);//конвертируем в строку | |
47 | + //$.cookie('arr',str);//записываем массив в куки | |
48 | + $.cookie('favorite_house', JSON.stringify(arr)); | |
49 | + } | |
50 | + | |
51 | + function read_array(){ | |
52 | + var dataArr=$.cookie('favorite_house');//считываем данные из куков | |
53 | + //если массив не был обнаружен, иницилизируем его | |
54 | + if(dataArr===null){ | |
55 | + dataArr = init_array(); //возвращаем инициализированный пустой маасив | |
56 | + } | |
57 | + //возвращаем полученный массив | |
58 | + //return JSON.parse(dataArr); | |
59 | + return JSON.parse(dataArr); | |
60 | + } | |
61 | + | |
62 | + //другими словами создаем пустой массив | |
63 | + function init_array(){ | |
64 | + //var str = JSON.stringify(new Array());//конвертируем в строку | |
65 | + var str = JSON.stringify(new Array()); | |
66 | + $.cookie('favorite_house',str);//записываем массив в куки | |
67 | + return str; | |
68 | + } | |
69 | +</script> |
resources/views/layout/site.blade.php
... | ... | @@ -26,7 +26,7 @@ |
26 | 26 | <li class="nav__item"><a class="nav__link" href="{{ route('catalog') }}">Каталог</a></li> |
27 | 27 | <li class="nav__item"><a class="nav__link" href="{{ route('about') }}">О компании</a></li> |
28 | 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>0</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 | 30 | </ul> |
31 | 31 | </nav> |
32 | 32 | <div class="header__buttons"><a class="header__btn-phone" href="#" data-btn="feedback"> |
... | ... | @@ -65,7 +65,7 @@ |
65 | 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 | 66 | <div class="menu__social social"> |
67 | 67 | <ul class="social__list"> |
68 | - <li class="social__item"><a class="social__link" href="#" target="_blank"><img src="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 | 69 | <li class="social__item"><a class="social__link" href="#" target="_blank"> |
70 | 70 | <svg width="40" height="40"> |
71 | 71 | <use xlink:href="{{ asset('images/sprite.svg#wa')}}"></use> |
... | ... | @@ -164,13 +164,16 @@ |
164 | 164 | </div> |
165 | 165 | </div> |
166 | 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 | 168 | <div class="footer__block js_footer_block"> |
169 | 169 | <ul class="footer__list"> |
170 | - <li class="footer__item"><a class="footer__link" href="#">Новая Москва</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> | |
172 | + | |
173 | + <!--<li class="footer__item"><a class="footer__link" href="#">Новая Москва</a></li> | |
171 | 174 | <li class="footer__item"><a class="footer__link" href="#">Подмосковье</a></li> |
172 | 175 | <li class="footer__item"><a class="footer__link" href="#">Москва</a></li> |
173 | - <li class="footer__item"><a class="footer__link" href="#">Тип недвижимости</a></li> | |
176 | + <li class="footer__item"><a class="footer__link" href="#">Тип недвижимости</a></li>--> | |
174 | 177 | </ul> |
175 | 178 | </div> |
176 | 179 | </div> |
... | ... | @@ -209,7 +212,7 @@ |
209 | 212 | <div class="popup__wrap"> |
210 | 213 | <button class="popup__close js_popup_close" type="button"> |
211 | 214 | <svg width="20" height="20"> |
212 | - <use xlink:href="images/sprite.svg#popup-close"></use> | |
215 | + <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | |
213 | 216 | </svg> |
214 | 217 | </button> |
215 | 218 | <form class="popup-feedback__form js_popup_feedback_form"> |
... | ... | @@ -231,7 +234,7 @@ |
231 | 234 | <div class="popup__wrap"> |
232 | 235 | <button class="popup__close js_popup_close" type="button"> |
233 | 236 | <svg width="20" height="20"> |
234 | - <use xlink:href="images/sprite.svg#popup-close"></use> | |
237 | + <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | |
235 | 238 | </svg> |
236 | 239 | </button> |
237 | 240 | <form class="popup-feedback__form js_popup_viewing_form"> |
... | ... | @@ -253,13 +256,13 @@ |
253 | 256 | <div class="popup__wrap"> |
254 | 257 | <button class="popup__close js_popup_close" type="button"> |
255 | 258 | <svg width="20" height="20"> |
256 | - <use xlink:href="images/sprite.svg#popup-close"></use> | |
259 | + <use xlink:href="{{ asset('images/sprite.svg#popup-close') }}"></use> | |
257 | 260 | </svg> |
258 | 261 | </button> |
259 | 262 | <div class="popup-success__inner"> |
260 | 263 | <div class="popup-success__logo"> |
261 | 264 | <svg width="48" height="39"> |
262 | - <use xlink:href="images/sprite.svg#popup-success-logo"></use> | |
265 | + <use xlink:href="{{ asset('images/sprite.svg#popup-success-logo')}}"></use> | |
263 | 266 | </svg> |
264 | 267 | </div> |
265 | 268 | <div class="popup-success__title">Спасибо за заявку</div> |
... | ... | @@ -271,7 +274,7 @@ |
271 | 274 | <div class="popup__wrap"> |
272 | 275 | <button class="popup__close js_popup_close" type="button"> |
273 | 276 | <svg width="20" height="20"> |
274 | - <use xlink:href="images/sprite.svg#popup-close"></use> | |
277 | + <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | |
275 | 278 | </svg> |
276 | 279 | </button> |
277 | 280 | <form class="popup-feedback__form js_popup_sending_form"> |
... | ... | @@ -290,7 +293,7 @@ |
290 | 293 | <div class="contact-us__top"> |
291 | 294 | <button class="contact-us__close js_contact_us_close" type="button"> |
292 | 295 | <svg width="20" height="20"> |
293 | - <use xlink:href="images/sprite.svg#popup-close"></use> | |
296 | + <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | |
294 | 297 | </svg> |
295 | 298 | </button> |
296 | 299 | <div class="contact-us__title">Свяжитесь с нами</div> |
... | ... | @@ -299,28 +302,28 @@ |
299 | 302 | <div class="contact-us__items"><a class="contact-us-item js_contact_us_close" href="#"> |
300 | 303 | <div class="contact-us-item__icon"> |
301 | 304 | <svg width="34" height="34"> |
302 | - <use xlink:href="images/sprite.svg#contact-us-phone"></use> | |
305 | + <use xlink:href="{{ asset('images/sprite.svg#contact-us-phone')}}"></use> | |
303 | 306 | </svg> |
304 | 307 | </div> |
305 | 308 | <div class="contact-us-item__name">Позвонить</div></a><a class="contact-us-item js_contact_us_close" href="#"> |
306 | 309 | <div class="contact-us-item__icon"> |
307 | 310 | <svg width="44" height="44"> |
308 | - <use xlink:href="images/sprite.svg#contact-us-email"></use> | |
311 | + <use xlink:href="{{ asset('images/sprite.svg#contact-us-email')}}"></use> | |
309 | 312 | </svg> |
310 | 313 | </div> |
311 | 314 | <div class="contact-us-item__name">Написать</div></a><a class="contact-us-item js_contact_us_close" href="#"> |
312 | 315 | <div class="contact-us-item__icon"> |
313 | 316 | <svg width="34" height="34"> |
314 | - <use xlink:href="images/sprite.svg#contact-us-chat"></use> | |
317 | + <use xlink:href="{{ asset('images/sprite.svg#contact-us-chat')}}"></use> | |
315 | 318 | </svg> |
316 | 319 | </div> |
317 | 320 | <div class="contact-us-item__name">Онлайн-чат</div></a></div> |
318 | 321 | <div class="contact-us__socials"><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> |
319 | - <div class="contact-us-social__icon contact-us-social__icon-tg"><img src="images/contact-us-tg.svg" alt=""></div> | |
322 | + <div class="contact-us-social__icon contact-us-social__icon-tg"><img src="{{ asset('images/contact-us-tg.svg')}}" alt=""></div> | |
320 | 323 | <div class="contact-us-social__name">Telegram</div></a><a class="contact-us-social js_contact_us_close" href="#" target="_blank"> |
321 | 324 | <div class="contact-us-social__icon contact-us-social__icon-wa"> |
322 | 325 | <svg width="31" height="31"> |
323 | - <use xlink:href="images/sprite.svg#contact-us-wa"></use> | |
326 | + <use xlink:href="{{ asset('images/sprite.svg#contact-us-wa')}}"></use> | |
324 | 327 | </svg> |
325 | 328 | </div> |
326 | 329 | <div class="contact-us-social__name">WhatsApp</div></a></div> |
... | ... | @@ -330,12 +333,12 @@ |
330 | 333 | <div class="offer-side-popup__wrap"> |
331 | 334 | <button class="offer-side-popup__close js_popup_close" type="button"> |
332 | 335 | <svg width="20" height="20"> |
333 | - <use xlink:href="images/sprite.svg#popup-close"></use> | |
336 | + <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | |
334 | 337 | </svg> |
335 | 338 | </button> |
336 | 339 | <div class="offer-side-popup__cnt"> |
337 | - <div class="offer-side-popup__item js_offer_side_popup_item active" data-item="1"><img src="images/offer-side-item-img-1.jpg" alt="План объекта"></div> | |
338 | - <div class="offer-side-popup__item js_offer_side_popup_item" data-item="2"><img src="images/offer-side-item-img-2.jpg" alt="План этажа"></div> | |
340 | + <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> | |
341 | + <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> | |
339 | 342 | </div> |
340 | 343 | <div class="offer-side-popup__tabs"> |
341 | 344 | <button class="offer-side-popup__tab js_offer_side_popup_tab active" type="button" data-tab="1">План объекта</button> |
... | ... | @@ -343,7 +346,7 @@ |
343 | 346 | </div> |
344 | 347 | <button class="offer-side-popup__sizeoff js_popup_close" type="button"> |
345 | 348 | <svg width="18" height="18"> |
346 | - <use xlink:href="images/sprite.svg#popup-sizeoff"></use> | |
349 | + <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff')}}"></use> | |
347 | 350 | </svg> |
348 | 351 | </button> |
349 | 352 | </div> |
... | ... | @@ -352,7 +355,7 @@ |
352 | 355 | <div class="img-viewer__wrap"> |
353 | 356 | <button class="img-viewer__close js_img_viewer_close" type="button"> |
354 | 357 | <svg width="20" height="20"> |
355 | - <use xlink:href="images/sprite.svg#popup-close"></use> | |
358 | + <use xlink:href="{{ asset('images/sprite.svg#popup-close')}}"></use> | |
356 | 359 | </svg> |
357 | 360 | </button> |
358 | 361 | <div class="img-viewer__thumbs js_img_viewer_thumbs"> |
... | ... | @@ -366,19 +369,19 @@ |
366 | 369 | </div> |
367 | 370 | <div class="swiper-button-prev"> |
368 | 371 | <svg width="10" height="17"> |
369 | - <use xlink:href="images/sprite.svg#slider-arrow"></use> | |
372 | + <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | |
370 | 373 | </svg> |
371 | 374 | </div> |
372 | 375 | <div class="swiper-button-next"> |
373 | 376 | <svg width="10" height="17"> |
374 | - <use xlink:href="images/sprite.svg#slider-arrow"></use> | |
377 | + <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | |
375 | 378 | </svg> |
376 | 379 | </div> |
377 | 380 | </div> |
378 | 381 | <div class="img-viewer__caption js_img_viewer_caption"></div> |
379 | 382 | <button class="img-viewer__sizeoff js_img_viewer_close" type="button"> |
380 | 383 | <svg width="18" height="18"> |
381 | - <use xlink:href="images/sprite.svg#popup-sizeoff"></use> | |
384 | + <use xlink:href="{{ asset('images/sprite.svg#popup-sizeoff') }}"></use> | |
382 | 385 | </svg> |
383 | 386 | </button> |
384 | 387 | </div> |
... | ... | @@ -387,12 +390,12 @@ |
387 | 390 | <div class="container"> |
388 | 391 | <div class="cookies__wrap"> |
389 | 392 | <div class="cookies__top"> |
390 | - <div class="cookies__img"><img src="images/cookies.svg" alt="cookies"></div> | |
393 | + <div class="cookies__img"><img src="{{ asset('images/cookies.svg') }}" alt="cookies"></div> | |
391 | 394 | <div class="cookies__title">Cookies</div> |
392 | 395 | </div> |
393 | 396 | <p class="cookies__descr">Мы используем cookie-файлы для наилучшего представления нашего сайта.<br>Продолжая использовать сайт, вы даете согласие с использованием cookie-файлов.</p> |
394 | 397 | <div class="cookies__buttons"> |
395 | - <button class="cookies__btn btn btn--main js_cookies_confirm" type="button">Принять</button><a class="cookies__link" href="page-cookies.html">Подробнее</a> | |
398 | + <button class="cookies__btn btn btn--main js_cookies_confirm" type="button">Принять</button><a class="cookies__link" href="{{ route('cookies') }}">Подробнее</a> | |
396 | 399 | </div> |
397 | 400 | </div> |
398 | 401 | </div> |
... | ... | @@ -401,6 +404,8 @@ |
401 | 404 | <script src="{{ asset('js/swiper-bundle.min.js') }}"></script> |
402 | 405 | <script src="{{ asset('js/main.js') }}"></script> |
403 | 406 | <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> |
407 | +<script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> | |
404 | 408 | @yield('custom_js') |
409 | +@include('js.cookies_favorite') | |
405 | 410 | </body> |
406 | 411 | </html> |
routes/web.php
... | ... | @@ -61,6 +61,13 @@ Route::get('category/{cat}', [MainController::class, 'Category'])->name('categor |
61 | 61 | //Категория ajax |
62 | 62 | Route::get('category_ajax/{cat}', [MainController::class, 'category_ajax'])->name('category_ajax'); |
63 | 63 | |
64 | +//Страница куков | |
65 | +Route::get('cookies', function () { | |
66 | + return view('cookies'); | |
67 | +})->name('cookies'); | |
68 | + | |
69 | +//Форма обратной связи в футере | |
70 | +Route::post('main_form', [MainController::class, 'main_form'])->name('main_form'); | |
64 | 71 | |
65 | 72 | Route::group([ |
66 | 73 | 'as' => 'auth.', // имя маршрута, например auth.index |