pwb 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -3
  3. data/app/assets/javascripts/pwb/{application.js → application.js.erb} +19 -2
  4. data/app/assets/javascripts/pwb/paloma/landing.js +10 -10
  5. data/app/assets/javascripts/pwb/paloma/prop.js +14 -22
  6. data/app/assets/javascripts/pwb/paloma/sections.js +15 -15
  7. data/app/assets/javascripts/pwb/shared/inmo-map.js +121 -0
  8. data/app/assets/javascripts/pwb/shared/select-picker.js +15 -0
  9. data/app/assets/javascripts/pwb/shared/slick-carousel.js +10 -0
  10. data/app/assets/javascripts/pwb/shared/vue-main.js +31 -0
  11. data/app/assets/javascripts/pwb/themes/{berlin.js → berlin.js.erb} +61 -5
  12. data/app/assets/stylesheets/pwb/themes/berlin.scss +3 -0
  13. data/app/assets/stylesheets/pwb/themes/default.scss +4 -2
  14. data/app/assets/stylesheets/pwb/themes/default/landing_general.scss +1 -1
  15. data/app/assets/stylesheets/pwb/themes/default/language_switcher.scss +20 -0
  16. data/app/assets/stylesheets/pwb/themes/default/prop.scss +0 -4
  17. data/app/assets/stylesheets/pwb/themes/default/shame.scss +0 -59
  18. data/app/assets/stylesheets/pwb/themes/shared/gmap.scss +38 -0
  19. data/app/assets/stylesheets/pwb/themes/shared/search_box.scss +62 -0
  20. data/app/assets/stylesheets/pwb/themes/shared/shame.scss +6 -1
  21. data/app/assets/stylesheets/pwb/themes/shared/social.scss +84 -0
  22. data/app/controllers/pwb/api_public/v1/props_controller.rb +47 -1
  23. data/app/controllers/pwb/props_controller.rb +32 -3
  24. data/app/controllers/pwb/search_controller.rb +35 -3
  25. data/app/controllers/pwb/sections_controller.rb +24 -7
  26. data/app/controllers/pwb/welcome_controller.rb +2 -0
  27. data/app/helpers/pwb/application_helper.rb +16 -31
  28. data/app/helpers/pwb/images_helper.rb +43 -0
  29. data/app/models/pwb/agency.rb +2 -2
  30. data/app/models/pwb/content.rb +3 -2
  31. data/app/models/pwb/content_photo.rb +1 -1
  32. data/app/models/pwb/feature.rb +2 -2
  33. data/app/models/pwb/message.rb +1 -1
  34. data/app/models/pwb/prop.rb +10 -1
  35. data/app/models/pwb/prop_photo.rb +1 -1
  36. data/app/models/pwb/section.rb +2 -1
  37. data/app/models/pwb/website.rb +1 -1
  38. data/app/themes/berlin/views/layouts/pwb/application.html.erb +9 -4
  39. data/app/themes/berlin/views/pwb/props/not_found.html.erb +37 -0
  40. data/app/themes/berlin/views/pwb/props/show.html.erb +44 -11
  41. data/app/themes/berlin/views/pwb/search/buy.html.erb +15 -8
  42. data/app/themes/berlin/views/pwb/search/rent.html.erb +13 -6
  43. data/app/themes/berlin/views/pwb/sections/about_us.html.erb +25 -34
  44. data/app/themes/berlin/views/pwb/sections/contact_us.html.erb +23 -24
  45. data/app/themes/berlin/views/pwb/sections/static.html.erb +26 -26
  46. data/app/themes/berlin/views/pwb/welcome/_landing_carousel.html.erb +27 -18
  47. data/app/themes/berlin/views/pwb/welcome/_service.html.erb +2 -2
  48. data/app/themes/berlin/views/pwb/welcome/index.html.erb +5 -2
  49. data/app/themes/default/views/layouts/pwb/application.html.erb +15 -12
  50. data/app/themes/default/views/pwb/props/show.html.erb +29 -8
  51. data/app/themes/default/views/pwb/search/buy.html.erb +44 -48
  52. data/app/themes/default/views/pwb/search/rent.html.erb +44 -48
  53. data/app/themes/default/views/pwb/sections/about_us.html.erb +1 -0
  54. data/app/themes/default/views/pwb/sections/contact_us.html.erb +4 -0
  55. data/app/themes/default/views/pwb/sections/static.html.erb +1 -0
  56. data/app/themes/default/views/pwb/welcome/index.html.erb +14 -4
  57. data/app/views/pwb/_meta_tags.html.erb +10 -0
  58. data/app/views/pwb/props/_meta_tags.html.erb +8 -0
  59. data/app/views/pwb/search/_search_form_for_rent.html.erb +19 -16
  60. data/app/views/pwb/search/_search_form_landing.html.erb +35 -0
  61. data/app/views/pwb/search/search_ajax.js.erb +3 -1
  62. data/config/client_setups/default.json +113 -55
  63. data/config/initializers/i18n.rb +1 -0
  64. data/config/locales/admin.en.yml +19 -10
  65. data/config/locales/admin.es.yml +18 -0
  66. data/config/locales/de.yml +9 -6
  67. data/config/locales/devise.tr.yml +135 -0
  68. data/config/locales/devise.vi.yml +137 -0
  69. data/config/locales/en.yml +151 -161
  70. data/config/locales/es.yml +37 -35
  71. data/config/locales/fr.yml +147 -184
  72. data/config/locales/pt.yml +10 -8
  73. data/config/locales/rails.tr.yml +211 -0
  74. data/config/locales/rails.vi.yml +203 -0
  75. data/config/locales/ru.yml +13 -12
  76. data/config/locales/tr.yml +160 -0
  77. data/config/locales/vi.yml +162 -0
  78. data/config/locales/zh-HK.yml +2 -0
  79. data/config/routes.rb +4 -3
  80. data/db/migrate/20170513221300_create_cms.rb +1 -1
  81. data/lib/pwb/seeder.rb +1 -1
  82. data/lib/pwb/version.rb +1 -1
  83. data/spec/dummy/config/routes.rb +3 -4
  84. data/spec/dummy/db/schema.rb +11 -10
  85. data/spec/dummy/log/test.log +0 -0
  86. data/spec/dummy/public/uploads/pwb/content_photo/image/1/carousel_windows.jpg +0 -0
  87. data/spec/dummy/public/uploads/pwb/content_photo/image/2/carousel_deck_chair.jpg +0 -0
  88. data/spec/dummy/public/uploads/pwb/content_photo/image/3/carousel_grass.jpg +0 -0
  89. data/spec/dummy/public/uploads/pwb/content_photo/image/4/carousel_grass.jpg +0 -0
  90. data/spec/dummy/public/uploads/pwb/prop_photo/image/1/flat_balcony.jpg +0 -0
  91. data/spec/dummy/public/uploads/pwb/prop_photo/image/1/gdaje3atcct1gx2ngv9u.jpg +0 -0
  92. data/spec/dummy/public/uploads/pwb/prop_photo/image/1/new_villa.jpg +0 -0
  93. data/spec/dummy/public/uploads/pwb/prop_photo/image/2/flat_balcony.jpg +0 -0
  94. data/spec/dummy/public/uploads/pwb/prop_photo/image/2/kitchen_modern.jpg +0 -0
  95. data/spec/dummy/public/uploads/pwb/prop_photo/image/2/rxo23syongfydjpoizrd.jpg +0 -0
  96. data/spec/dummy/public/uploads/pwb/prop_photo/image/3/mansion_front.jpg +0 -0
  97. data/spec/dummy/public/uploads/pwb/prop_photo/image/3/vzlptgtccsk2d2ewp4id.jpg +0 -0
  98. data/spec/dummy/public/uploads/pwb/prop_photo/image/4/mansion_bedroom.jpg +0 -0
  99. data/spec/dummy/public/uploads/pwb/prop_photo/image/4/xwayprwnmmmhrzrgwvch.jpg +0 -0
  100. data/spec/dummy/public/uploads/pwb/prop_photo/image/5/flat_window.jpg +0 -0
  101. data/spec/dummy/public/uploads/pwb/prop_photo/image/5/ilxn2u37bak0v60u6f8q.jpg +0 -0
  102. data/spec/dummy/public/uploads/pwb/prop_photo/image/6/kitchen_classic.jpg +0 -0
  103. data/spec/dummy/public/uploads/pwb/prop_photo/image/7/flat_balcony.jpg +0 -0
  104. data/spec/dummy/public/uploads/pwb/prop_photo/image/8/lounge_cosy.jpg +0 -0
  105. data/spec/requests/pwb/themes_spec.rb +1 -0
  106. data/spec/views/pwb/welcome.html.erb_spec.rb +7 -0
  107. metadata +63 -6
  108. data/app/assets/javascripts/pwb/themes/berlin/jquery.min.js +0 -5
  109. data/app/assets/stylesheets/pwb/themes/default/search.scss +0 -8
@@ -25,6 +25,9 @@ $base-border-color:#e0eded;
25
25
  @import "default/devise";
26
26
  @import "default/language_switcher";
27
27
  @import "shared/header_footer";
28
+ @import "shared/social";
29
+ @import "shared/gmap";
30
+ @import "shared/search_box";
28
31
  @import "shared/shame";
29
32
 
30
33
 
@@ -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
- @import "bootstrap-sprockets";
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";*/
@@ -83,7 +83,7 @@ div.figure img {
83
83
 
84
84
  form.simple_form.form-base div.panel-body {
85
85
  padding: 25px;
86
- min-height: 301px;
86
+ /*min-height: 301px;*/
87
87
  }
88
88
 
89
89
 
@@ -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;
@@ -421,10 +421,6 @@ nav.venta_alquiler a.selected {
421
421
  text-transform: uppercase;
422
422
  }
423
423
 
424
- #btn_buscar_inmuebles {
425
- width: 100%;
426
- }
427
-
428
424
  .btn-group.bootstrap-select button {
429
425
  border: 1px solid #ddd;
430
426
  }
@@ -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 < JSONAPI::ResourceController
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
- # origin_email: params[:contact][:email]
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