pwb 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -3
- data/app/assets/javascripts/pwb/{application.js → application.js.erb} +19 -2
- data/app/assets/javascripts/pwb/paloma/landing.js +10 -10
- data/app/assets/javascripts/pwb/paloma/prop.js +14 -22
- data/app/assets/javascripts/pwb/paloma/sections.js +15 -15
- data/app/assets/javascripts/pwb/shared/inmo-map.js +121 -0
- data/app/assets/javascripts/pwb/shared/select-picker.js +15 -0
- data/app/assets/javascripts/pwb/shared/slick-carousel.js +10 -0
- data/app/assets/javascripts/pwb/shared/vue-main.js +31 -0
- data/app/assets/javascripts/pwb/themes/{berlin.js → berlin.js.erb} +61 -5
- data/app/assets/stylesheets/pwb/themes/berlin.scss +3 -0
- data/app/assets/stylesheets/pwb/themes/default.scss +4 -2
- data/app/assets/stylesheets/pwb/themes/default/landing_general.scss +1 -1
- data/app/assets/stylesheets/pwb/themes/default/language_switcher.scss +20 -0
- data/app/assets/stylesheets/pwb/themes/default/prop.scss +0 -4
- data/app/assets/stylesheets/pwb/themes/default/shame.scss +0 -59
- data/app/assets/stylesheets/pwb/themes/shared/gmap.scss +38 -0
- data/app/assets/stylesheets/pwb/themes/shared/search_box.scss +62 -0
- data/app/assets/stylesheets/pwb/themes/shared/shame.scss +6 -1
- data/app/assets/stylesheets/pwb/themes/shared/social.scss +84 -0
- data/app/controllers/pwb/api_public/v1/props_controller.rb +47 -1
- data/app/controllers/pwb/props_controller.rb +32 -3
- data/app/controllers/pwb/search_controller.rb +35 -3
- data/app/controllers/pwb/sections_controller.rb +24 -7
- data/app/controllers/pwb/welcome_controller.rb +2 -0
- data/app/helpers/pwb/application_helper.rb +16 -31
- data/app/helpers/pwb/images_helper.rb +43 -0
- data/app/models/pwb/agency.rb +2 -2
- data/app/models/pwb/content.rb +3 -2
- data/app/models/pwb/content_photo.rb +1 -1
- data/app/models/pwb/feature.rb +2 -2
- data/app/models/pwb/message.rb +1 -1
- data/app/models/pwb/prop.rb +10 -1
- data/app/models/pwb/prop_photo.rb +1 -1
- data/app/models/pwb/section.rb +2 -1
- data/app/models/pwb/website.rb +1 -1
- data/app/themes/berlin/views/layouts/pwb/application.html.erb +9 -4
- data/app/themes/berlin/views/pwb/props/not_found.html.erb +37 -0
- data/app/themes/berlin/views/pwb/props/show.html.erb +44 -11
- data/app/themes/berlin/views/pwb/search/buy.html.erb +15 -8
- data/app/themes/berlin/views/pwb/search/rent.html.erb +13 -6
- data/app/themes/berlin/views/pwb/sections/about_us.html.erb +25 -34
- data/app/themes/berlin/views/pwb/sections/contact_us.html.erb +23 -24
- data/app/themes/berlin/views/pwb/sections/static.html.erb +26 -26
- data/app/themes/berlin/views/pwb/welcome/_landing_carousel.html.erb +27 -18
- data/app/themes/berlin/views/pwb/welcome/_service.html.erb +2 -2
- data/app/themes/berlin/views/pwb/welcome/index.html.erb +5 -2
- data/app/themes/default/views/layouts/pwb/application.html.erb +15 -12
- data/app/themes/default/views/pwb/props/show.html.erb +29 -8
- data/app/themes/default/views/pwb/search/buy.html.erb +44 -48
- data/app/themes/default/views/pwb/search/rent.html.erb +44 -48
- data/app/themes/default/views/pwb/sections/about_us.html.erb +1 -0
- data/app/themes/default/views/pwb/sections/contact_us.html.erb +4 -0
- data/app/themes/default/views/pwb/sections/static.html.erb +1 -0
- data/app/themes/default/views/pwb/welcome/index.html.erb +14 -4
- data/app/views/pwb/_meta_tags.html.erb +10 -0
- data/app/views/pwb/props/_meta_tags.html.erb +8 -0
- data/app/views/pwb/search/_search_form_for_rent.html.erb +19 -16
- data/app/views/pwb/search/_search_form_landing.html.erb +35 -0
- data/app/views/pwb/search/search_ajax.js.erb +3 -1
- data/config/client_setups/default.json +113 -55
- data/config/initializers/i18n.rb +1 -0
- data/config/locales/admin.en.yml +19 -10
- data/config/locales/admin.es.yml +18 -0
- data/config/locales/de.yml +9 -6
- data/config/locales/devise.tr.yml +135 -0
- data/config/locales/devise.vi.yml +137 -0
- data/config/locales/en.yml +151 -161
- data/config/locales/es.yml +37 -35
- data/config/locales/fr.yml +147 -184
- data/config/locales/pt.yml +10 -8
- data/config/locales/rails.tr.yml +211 -0
- data/config/locales/rails.vi.yml +203 -0
- data/config/locales/ru.yml +13 -12
- data/config/locales/tr.yml +160 -0
- data/config/locales/vi.yml +162 -0
- data/config/locales/zh-HK.yml +2 -0
- data/config/routes.rb +4 -3
- data/db/migrate/20170513221300_create_cms.rb +1 -1
- data/lib/pwb/seeder.rb +1 -1
- data/lib/pwb/version.rb +1 -1
- data/spec/dummy/config/routes.rb +3 -4
- data/spec/dummy/db/schema.rb +11 -10
- data/spec/dummy/log/test.log +0 -0
- data/spec/dummy/public/uploads/pwb/content_photo/image/1/carousel_windows.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/content_photo/image/2/carousel_deck_chair.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/content_photo/image/3/carousel_grass.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/content_photo/image/4/carousel_grass.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/1/flat_balcony.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/1/gdaje3atcct1gx2ngv9u.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/1/new_villa.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/2/flat_balcony.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/2/kitchen_modern.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/2/rxo23syongfydjpoizrd.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/3/mansion_front.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/3/vzlptgtccsk2d2ewp4id.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/4/mansion_bedroom.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/4/xwayprwnmmmhrzrgwvch.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/5/flat_window.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/5/ilxn2u37bak0v60u6f8q.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/6/kitchen_classic.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/7/flat_balcony.jpg +0 -0
- data/spec/dummy/public/uploads/pwb/prop_photo/image/8/lounge_cosy.jpg +0 -0
- data/spec/requests/pwb/themes_spec.rb +1 -0
- data/spec/views/pwb/welcome.html.erb_spec.rb +7 -0
- metadata +63 -6
- data/app/assets/javascripts/pwb/themes/berlin/jquery.min.js +0 -5
- data/app/assets/stylesheets/pwb/themes/default/search.scss +0 -8
@@ -19,7 +19,7 @@ $base-border-color:#e0eded;
|
|
19
19
|
|
20
20
|
/* "bootstrap-sprockets" must be imported before "bootstrap" and "bootstrap/variables"
|
21
21
|
*/
|
22
|
-
|
22
|
+
/*@import "bootstrap-sprockets";*/
|
23
23
|
@import "bootstrap";
|
24
24
|
|
25
25
|
@import "bootstrap-select";
|
@@ -32,13 +32,15 @@ https://github.com/bokmann/font-awesome-rails*/
|
|
32
32
|
@import "default/landing_general";
|
33
33
|
@import "default/landing_content_areas";
|
34
34
|
@import "default/contact_us";
|
35
|
-
@import "default/search";
|
36
35
|
@import "default/prop";
|
37
36
|
@import "default/devise";
|
38
37
|
@import "default/language_switcher";
|
39
38
|
@import "default/shame";
|
40
39
|
@import "default/carousel";
|
41
40
|
@import "shared/header_footer";
|
41
|
+
@import "shared/social";
|
42
|
+
@import "shared/gmap";
|
43
|
+
@import "shared/search_box";
|
42
44
|
@import "shared/shame";
|
43
45
|
|
44
46
|
/*@import "default/flags";*/
|
@@ -105,6 +105,26 @@ ul.idiomas .us {
|
|
105
105
|
background-size: cover;
|
106
106
|
}
|
107
107
|
|
108
|
+
ul.idiomas .vi {
|
109
|
+
background: url('https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/vn.svg') no-repeat;
|
110
|
+
background-size: cover;
|
111
|
+
}
|
112
|
+
|
113
|
+
ul.idiomas .tr {
|
114
|
+
background: url('https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/tr.svg') no-repeat;
|
115
|
+
background-size: cover;
|
116
|
+
}
|
117
|
+
|
118
|
+
ul.idiomas .hi {
|
119
|
+
background: url('https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/hi.svg') no-repeat;
|
120
|
+
background-size: cover;
|
121
|
+
}
|
122
|
+
|
123
|
+
ul.idiomas .it {
|
124
|
+
background: url('https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/it.svg') no-repeat;
|
125
|
+
background-size: cover;
|
126
|
+
}
|
127
|
+
|
108
128
|
ul.idiomas li.selected,
|
109
129
|
ul.idiomas li:hover {
|
110
130
|
background: url("/assets/simple-nav-arrow.png") no-repeat top center;
|
@@ -158,29 +158,6 @@ header {
|
|
158
158
|
color: #333 !important;
|
159
159
|
}
|
160
160
|
|
161
|
-
.panel-base {
|
162
|
-
border: 0;
|
163
|
-
background: #3498db;
|
164
|
-
}
|
165
|
-
|
166
|
-
.panel-base .panel-heading {
|
167
|
-
background: #2a8ed1;
|
168
|
-
padding: 25px 15px;
|
169
|
-
color: #fff;
|
170
|
-
border-bottom: 1px solid #2084c7;
|
171
|
-
}
|
172
|
-
|
173
|
-
.panel-base .panel-heading.panel-heading-lg {
|
174
|
-
padding: 25px;
|
175
|
-
font-size: 20px;
|
176
|
-
font-weight: 600;
|
177
|
-
}
|
178
|
-
|
179
|
-
.panel-base .form-base label {
|
180
|
-
color: #fff;
|
181
|
-
margin-bottom: 6px;
|
182
|
-
}
|
183
|
-
|
184
161
|
.body-wrap {
|
185
162
|
position: relative;
|
186
163
|
right: 0;
|
@@ -311,20 +288,6 @@ section.slice {
|
|
311
288
|
font-size: 18px;
|
312
289
|
}
|
313
290
|
|
314
|
-
.panel {
|
315
|
-
border-radius: 0;
|
316
|
-
background-color: #fff;
|
317
|
-
}
|
318
|
-
|
319
|
-
.panel .panel-heading {
|
320
|
-
border-radius: 0;
|
321
|
-
padding: 15px;
|
322
|
-
}
|
323
|
-
|
324
|
-
.panel {
|
325
|
-
-webkit-box-shadow: none;
|
326
|
-
box-shadow: none;
|
327
|
-
}
|
328
291
|
|
329
292
|
@media (min-width: 1200px) {
|
330
293
|
.body-wrap.body-boxed {
|
@@ -404,28 +367,6 @@ a:hover {
|
|
404
367
|
height: 65px;
|
405
368
|
}
|
406
369
|
|
407
|
-
/*div.figure {
|
408
|
-
display: block;
|
409
|
-
height: 300px;
|
410
|
-
position: relative;
|
411
|
-
width: 100%;
|
412
|
-
max-height: 300px;
|
413
|
-
text-align: center;
|
414
|
-
background: #eee;
|
415
|
-
}
|
416
|
-
|
417
|
-
div.figure img {
|
418
|
-
display: block;
|
419
|
-
max-width: 100%;
|
420
|
-
height: 100%;
|
421
|
-
max-height: 300px;
|
422
|
-
margin: 0 auto;
|
423
|
-
}
|
424
|
-
|
425
|
-
form.simple_form.form-base div.panel-body {
|
426
|
-
padding: 25px;
|
427
|
-
min-height: 301px;
|
428
|
-
}*/
|
429
370
|
|
430
371
|
.ss-cont {
|
431
372
|
padding-left: 5px;
|
@@ -0,0 +1,38 @@
|
|
1
|
+
/*http://en.marnoto.com/2014/09/5-formas-de-personalizar-infowindow.html*/
|
2
|
+
.gm-style-iw {
|
3
|
+
/*width: 250px !important;*/
|
4
|
+
/*height: 300px;*/
|
5
|
+
top: 1px !important;
|
6
|
+
/*bottom: 0px !important;*/
|
7
|
+
left: 0px !important;
|
8
|
+
background-color: #fff;
|
9
|
+
}
|
10
|
+
|
11
|
+
#iw-container {
|
12
|
+
margin-bottom: 0px;
|
13
|
+
}
|
14
|
+
|
15
|
+
#iw-container .iw-title {
|
16
|
+
font-family: 'Open Sans Condensed', sans-serif;
|
17
|
+
font-size: 22px;
|
18
|
+
font-weight: 400;
|
19
|
+
padding: 10px;
|
20
|
+
background-color: #48b5e9;
|
21
|
+
color: white;
|
22
|
+
margin: 0;
|
23
|
+
border-radius: 2px 2px 0 0;
|
24
|
+
}
|
25
|
+
|
26
|
+
#iw-container .iw-content {
|
27
|
+
font-size: 13px;
|
28
|
+
line-height: 18px;
|
29
|
+
font-weight: 400;
|
30
|
+
overflow-y: auto;
|
31
|
+
overflow-x: hidden;
|
32
|
+
}
|
33
|
+
|
34
|
+
.iw-subTitle {
|
35
|
+
font-size: 16px;
|
36
|
+
font-weight: 700;
|
37
|
+
padding: 5px;
|
38
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#btn_buscar_inmuebles {
|
2
|
+
width: 100%;
|
3
|
+
}
|
4
|
+
|
5
|
+
.landing-search-container {
|
6
|
+
#btn_buscar_inmuebles {
|
7
|
+
width: 30%;
|
8
|
+
}
|
9
|
+
|
10
|
+
.panel,
|
11
|
+
.panel-footer {
|
12
|
+
border: 0;
|
13
|
+
border-radius: 0;
|
14
|
+
background-color: transparent;
|
15
|
+
}
|
16
|
+
|
17
|
+
.panel .panel-heading {
|
18
|
+
border-radius: 0;
|
19
|
+
padding: 15px;
|
20
|
+
}
|
21
|
+
|
22
|
+
.panel-footer {
|
23
|
+
text-align: center;
|
24
|
+
}
|
25
|
+
|
26
|
+
.panel {
|
27
|
+
-webkit-box-shadow: none;
|
28
|
+
box-shadow: none;
|
29
|
+
}
|
30
|
+
|
31
|
+
.panel-base {
|
32
|
+
border: 0;
|
33
|
+
background: transparent;
|
34
|
+
}
|
35
|
+
|
36
|
+
.panel-base .panel-heading {
|
37
|
+
background: #2a8ed1;
|
38
|
+
padding: 25px 15px;
|
39
|
+
color: #fff;
|
40
|
+
border-bottom: 1px solid #2084c7;
|
41
|
+
}
|
42
|
+
|
43
|
+
.panel-base .panel-heading.panel-heading-lg {
|
44
|
+
padding: 25px;
|
45
|
+
font-size: 20px;
|
46
|
+
font-weight: 600;
|
47
|
+
}
|
48
|
+
|
49
|
+
.panel-base .form-base label {
|
50
|
+
color: #fff;
|
51
|
+
margin-bottom: 6px;
|
52
|
+
}
|
53
|
+
|
54
|
+
.panel-default>.panel-heading h2 {
|
55
|
+
margin: 0;
|
56
|
+
padding: 0;
|
57
|
+
font-size: 16px;
|
58
|
+
font-weight: 500;
|
59
|
+
text-transform: capitalize;
|
60
|
+
color: #333
|
61
|
+
}
|
62
|
+
}
|
@@ -1,3 +1,7 @@
|
|
1
|
+
.center {
|
2
|
+
text-align: center;
|
3
|
+
}
|
4
|
+
|
1
5
|
@media only screen and (min-width: 767px) {
|
2
6
|
/*flex display only needed for larger screens*/
|
3
7
|
.flex-md {
|
@@ -26,6 +30,7 @@
|
|
26
30
|
.contact-info-panel-body {
|
27
31
|
padding: 0px 15px;
|
28
32
|
}
|
33
|
+
|
29
34
|
.contact-info h4 {
|
30
35
|
margin-bottom: 2px;
|
31
36
|
}
|
@@ -40,4 +45,4 @@
|
|
40
45
|
.contact-info h5 i {
|
41
46
|
margin-right: 4px;
|
42
47
|
color: #3498db;
|
43
|
-
}
|
48
|
+
}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
.social-icons .fa {
|
2
|
+
font-size: 1.5em;
|
3
|
+
}
|
4
|
+
/*Change icons circle size and color here*/
|
5
|
+
.social-icons .fa {
|
6
|
+
width: 40px;
|
7
|
+
height: 40px;
|
8
|
+
line-height: 40px;
|
9
|
+
text-align: center;
|
10
|
+
color: #FFF;
|
11
|
+
color: rgba(255, 255, 255, 0.8);
|
12
|
+
-webkit-transition: all 0.3s ease-in-out;
|
13
|
+
-moz-transition: all 0.3s ease-in-out;
|
14
|
+
-ms-transition: all 0.3s ease-in-out;
|
15
|
+
-o-transition: all 0.3s ease-in-out;
|
16
|
+
transition: all 0.3s ease-in-out;
|
17
|
+
cursor: pointer;
|
18
|
+
}
|
19
|
+
|
20
|
+
.social-icons.icon-circle .fa{
|
21
|
+
border-radius: 50%;
|
22
|
+
}
|
23
|
+
.social-icons.icon-rounded .fa{
|
24
|
+
border-radius:5px;
|
25
|
+
}
|
26
|
+
.social-icons.icon-flat .fa{
|
27
|
+
border-radius: 0;
|
28
|
+
}
|
29
|
+
|
30
|
+
.social-icons .fa:hover, .social-icons .fa:active {
|
31
|
+
color: #FFF;
|
32
|
+
-webkit-box-shadow: 1px 1px 3px #333;
|
33
|
+
-moz-box-shadow: 1px 1px 3px #333;
|
34
|
+
box-shadow: 1px 1px 3px #333;
|
35
|
+
}
|
36
|
+
.social-icons.icon-zoom .fa:hover, .social-icons.icon-zoom .fa:active {
|
37
|
+
-webkit-transform: scale(1.1);
|
38
|
+
-moz-transform: scale(1.1);
|
39
|
+
-ms-transform: scale(1.1);
|
40
|
+
-o-transform: scale(1.1);
|
41
|
+
transform: scale(1.1);
|
42
|
+
}
|
43
|
+
.social-icons.icon-rotate .fa:hover, .social-icons.icon-rotate .fa:active {
|
44
|
+
-webkit-transform: scale(1.1) rotate(360deg);
|
45
|
+
-moz-transform: scale(1.1) rotate(360deg);
|
46
|
+
-ms-transform: scale(1.1) rotate(360deg);
|
47
|
+
-o-transform: scale(1.1) rotate(360deg);
|
48
|
+
transform: scale(1.1) rotate(360deg);
|
49
|
+
}
|
50
|
+
|
51
|
+
.social-icons .fa-adn{background-color:#504e54;}
|
52
|
+
.social-icons .fa-apple{background-color:#aeb5c5;}
|
53
|
+
.social-icons .fa-android{background-color:#A5C63B;}
|
54
|
+
.social-icons .fa-bitbucket,.social-icons .fa-bitbucket-square{background-color:#003366;}
|
55
|
+
.social-icons .fa-bitcoin,.social-icons .fa-btc{background-color:#F7931A;}
|
56
|
+
.social-icons .fa-css3{background-color:#1572B7;}
|
57
|
+
.social-icons .fa-dribbble{background-color:#F46899;}
|
58
|
+
.social-icons .fa-dropbox{background-color:#018BD3;}
|
59
|
+
.social-icons .fa-facebook,.social-icons .fa-facebook-square{background-color:#3C599F;}
|
60
|
+
.social-icons .fa-flickr{background-color:#FF0084;}
|
61
|
+
.social-icons .fa-foursquare{background-color:#0086BE;}
|
62
|
+
.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{background-color:#070709;}
|
63
|
+
.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{background-color:#CF3D2E;}
|
64
|
+
.social-icons .fa-html5{background-color:#E54D26;}
|
65
|
+
.social-icons .fa-instagram{background-color:#A1755C;}
|
66
|
+
.social-icons .fa-linkedin,.social-icons .fa-linkedin-square{background-color:#0085AE;}
|
67
|
+
.social-icons .fa-linux{background-color:#FBC002;color:#333;}
|
68
|
+
.social-icons .fa-maxcdn{background-color:#F6AE1C;}
|
69
|
+
.social-icons .fa-pagelines{background-color:#241E20;color:#3984EA;}
|
70
|
+
.social-icons .fa-pinterest,.social-icons .fa-pinterest-square{background-color:#CC2127;}
|
71
|
+
.social-icons .fa-renren{background-color:#025DAC;}
|
72
|
+
.social-icons .fa-skype{background-color:#01AEF2;}
|
73
|
+
.social-icons .fa-stack-exchange{background-color:#245590;}
|
74
|
+
.social-icons .fa-stack-overflow{background-color:#FF7300;}
|
75
|
+
.social-icons .fa-trello{background-color:#265A7F;}
|
76
|
+
.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{background-color:#314E6C;}
|
77
|
+
.social-icons .fa-twitter,.social-icons .fa-twitter-square{background-color:#32CCFE;}
|
78
|
+
.social-icons .fa-vimeo-square{background-color:#229ACC;}
|
79
|
+
.social-icons .fa-vk{background-color:#375474;}
|
80
|
+
.social-icons .fa-weibo{background-color:#D72B2B;}
|
81
|
+
.social-icons .fa-windows{background-color:#12B6F3;}
|
82
|
+
.social-icons .fa-xing,.social-icons .fa-xing-square{background-color:#00555C;}
|
83
|
+
.social-icons .fa-youtube,.social-icons .fa-youtube-play,.social-icons .fa-youtube-square{background-color:#C52F30;}
|
84
|
+
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require_dependency "pwb/application_controller"
|
2
2
|
|
3
3
|
module Pwb
|
4
|
-
class ApiPublic::V1::PropsController <
|
4
|
+
class ApiPublic::V1::PropsController < ActionController::Base
|
5
|
+
# class ApiPublic::V1::PropsController < JSONAPI::ResourceController
|
5
6
|
# Skipping action below allows me to browse to endpoint
|
6
7
|
# without having set mime type
|
7
8
|
# skip_before_action :ensure_valid_accept_media_type
|
@@ -36,5 +37,50 @@ module Pwb
|
|
36
37
|
render text: '', content_type: 'text/plain'
|
37
38
|
end
|
38
39
|
end
|
40
|
+
|
41
|
+
def bulk_create_with_token
|
42
|
+
propertiesJSON = params["propertiesJSON"]
|
43
|
+
unless propertiesJSON.is_a? Array
|
44
|
+
propertiesJSON = JSON.parse propertiesJSON
|
45
|
+
end
|
46
|
+
new_props = []
|
47
|
+
existing_props = []
|
48
|
+
errors = []
|
49
|
+
|
50
|
+
propertiesJSON.each do |propertyJSON|
|
51
|
+
if Pwb::Prop.where(reference: propertyJSON["reference"]).exists?
|
52
|
+
existing_props.push propertyJSON
|
53
|
+
else
|
54
|
+
begin
|
55
|
+
new_prop = Pwb::Prop.create propertyJSON.except "extras", "property_photos"
|
56
|
+
if propertyJSON["extras"]
|
57
|
+
new_prop.set_extras=propertyJSON["extras"]
|
58
|
+
end
|
59
|
+
if propertyJSON["property_photos"]
|
60
|
+
propertyJSON["property_photos"].each do |property_photo|
|
61
|
+
photo = PropPhoto.create
|
62
|
+
photo.sort_order = property_photo["sort_order"] || nil
|
63
|
+
photo.remote_image_url = property_photo["image"]["url"] || property_photo["url"]
|
64
|
+
photo.save!
|
65
|
+
new_prop.prop_photos.push photo
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
new_props.push new_prop
|
70
|
+
rescue => err
|
71
|
+
# binding.pry
|
72
|
+
errors.push err.message
|
73
|
+
# logger.error err.message
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
return render json: {
|
79
|
+
new_props: new_props,
|
80
|
+
existing_props: existing_props,
|
81
|
+
errors: errors
|
82
|
+
}
|
83
|
+
end
|
84
|
+
|
39
85
|
end
|
40
86
|
end
|
@@ -9,18 +9,22 @@ module Pwb
|
|
9
9
|
# gon.property_details =@property_details
|
10
10
|
@operation_type = "for_rent"
|
11
11
|
@operation_type_key = @operation_type.camelize(:lower)
|
12
|
+
@map_markers = []
|
12
13
|
if @property_details && @property_details.visible && @property_details.for_rent
|
14
|
+
set_map_marker
|
13
15
|
# below lets me know what prices to display
|
14
16
|
@show_vacational_rental = @property_details.for_rent_short_term
|
15
17
|
|
16
18
|
js property_details: @property_details
|
17
19
|
js 'Pwb/Props#show'
|
18
|
-
# page_title gets picked up automatically by meta-tags gem
|
19
20
|
@page_title = @property_details.title
|
20
21
|
@page_description = @property_details.description
|
21
22
|
# @page_keywords = 'Site, Login, Members'
|
22
23
|
return render "/pwb/props/show"
|
23
24
|
else
|
25
|
+
@page_title = I18n.t("propertyNotFound")
|
26
|
+
hi_content = Content.where(tag: 'landing-carousel')[0]
|
27
|
+
@header_image = hi_content.present? ? hi_content.default_photo : nil
|
24
28
|
return render "not_found"
|
25
29
|
end
|
26
30
|
end
|
@@ -31,10 +35,11 @@ module Pwb
|
|
31
35
|
@operation_type = "for_sale"
|
32
36
|
@operation_type_key = @operation_type.camelize(:lower)
|
33
37
|
@property_details = Prop.find_by_id(params[:id])
|
38
|
+
@map_markers = []
|
34
39
|
|
35
40
|
if @property_details && @property_details.visible && @property_details.for_sale
|
41
|
+
set_map_marker
|
36
42
|
# gon.property_details =@property_details
|
37
|
-
|
38
43
|
js property_details: @property_details
|
39
44
|
js 'Pwb/Props#show'
|
40
45
|
@page_title = @property_details.title
|
@@ -42,6 +47,9 @@ module Pwb
|
|
42
47
|
# @page_keywords = 'Site, Login, Members'
|
43
48
|
return render "/pwb/props/show"
|
44
49
|
else
|
50
|
+
@page_title = I18n.t("propertyNotFound")
|
51
|
+
hi_content = Content.where(tag: 'landing-carousel')[0]
|
52
|
+
@header_image = hi_content.present? ? hi_content.default_photo : nil
|
45
53
|
return render "not_found"
|
46
54
|
end
|
47
55
|
end
|
@@ -69,7 +77,7 @@ module Pwb
|
|
69
77
|
origin_ip: request.ip,
|
70
78
|
user_agent: request.user_agent,
|
71
79
|
delivery_email: @current_agency.email_for_property_contact_form
|
72
|
-
|
80
|
+
# origin_email: params[:contact][:email]
|
73
81
|
})
|
74
82
|
|
75
83
|
unless @enquiry.save && @client.save
|
@@ -97,5 +105,26 @@ module Pwb
|
|
97
105
|
@error_messages = [I18n.t("contact.error"), e]
|
98
106
|
return render "pwb/ajax/request_info_errors", layout: false
|
99
107
|
end
|
108
|
+
|
109
|
+
private
|
110
|
+
|
111
|
+
def set_map_marker
|
112
|
+
if @property_details.show_map
|
113
|
+
@map_markers.push(
|
114
|
+
{
|
115
|
+
id: @property_details.id,
|
116
|
+
title: @property_details.title,
|
117
|
+
show_url: @property_details.contextual_show_path(@operation_type),
|
118
|
+
image_url: @property_details.primary_image_url,
|
119
|
+
display_price: @property_details.contextual_price_with_currency(@operation_type),
|
120
|
+
position: {
|
121
|
+
lat: @property_details.latitude,
|
122
|
+
lng: @property_details.longitude
|
123
|
+
}
|
124
|
+
}
|
125
|
+
)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
100
129
|
end
|
101
130
|
end
|