caboose-rets 0.1.142 → 0.1.143

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c9ceb8dade99cf969ac74235807f780a6a138baec88aa9f39a6e59d253c2e40
4
- data.tar.gz: 4c7e46c031dde36185b8779bafe4e6e5a67ffcb4b238d3f977821e65ef237b52
3
+ metadata.gz: f60a523bb556feaa9f6e1751710c433ccc5325830b44a4d7911a8e3885b73a19
4
+ data.tar.gz: bcd69542de602c3e1f87f51d8e343cdf21343373ad5f8687a847854ebaeb33e2
5
5
  SHA512:
6
- metadata.gz: 39303ffe01c86af8b41ff2463ffdf100c3bee9ad6d6b62516cb37589e277464b36d30f94ddcd5423b1ec62db35690ab745861bd3401bb3191448e6324f38abf9
7
- data.tar.gz: 4d072e4caf204db267508db41f132043b21d14764accdb83939220ee3a5982d6961c563c7a79b4673250e3752e6e7e2684261007dd23402a5c86c0471a34acdf
6
+ metadata.gz: 8d143b528b11c14cd256ba3498e4231aabe0887e4ab5eccf680a34ad5a64dbfc8e812bf9d9ba5b89408938c28b21047844e7a55b794b86fdaa17934a82e934c0
7
+ data.tar.gz: 640ffe8ec5a0df1452de20ac3cfb599af84f90b832b037323694127ff33d136221f15fedfdac0b469cd417d7d470eca5195e9df470ba14c15fef1ca1aba61648
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by Fontastic.me</metadata>
5
+ <defs>
6
+ <font id="rets" horiz-adv-x="512">
7
+ <font-face font-family="rets" units-per-em="512" ascent="480" descent="-32"/>
8
+ <missing-glyph horiz-adv-x="512" />
9
+
10
+ <glyph glyph-name="heart" unicode="&#97;" d="M475 342c0 15-2 29-6 41-4 11-9 21-15 28-7 7-15 12-24 17-9 4-18 7-27 9-8 1-18 2-28 2-9 0-20-3-32-7-11-5-22-11-31-19-10-7-18-14-25-20-7-7-12-13-17-18-3-4-8-6-14-6-6 0-11 2-14 6-5 5-10 11-17 18-7 6-15 13-25 20-9 8-20 14-31 19-12 4-23 7-32 7-10 0-20-1-28-2-9-2-18-5-27-9-9-5-17-10-24-17-6-7-11-17-15-28-4-12-6-26-6-41 0-32 17-66 53-102l166-160 166 160c36 36 53 70 53 102z m37 0c0-42-22-85-65-129l-178-171c-4-4-8-5-13-5-5 0-9 1-13 5l-178 172c-2 1-4 4-8 7-3 4-8 10-16 19-7 9-13 18-19 28-6 9-11 21-15 34-5 14-7 27-7 40 0 42 12 74 36 98 24 24 58 35 101 35 11 0 23-2 36-6 12-4 23-9 34-16 11-7 20-14 27-20 8-6 15-12 22-19 7 7 14 13 22 19 7 6 16 13 27 20 11 7 22 12 34 16 13 4 25 6 36 6 43 0 77-11 101-35 24-24 36-56 36-98z"/>
11
+ <glyph glyph-name="heart2" unicode="&#98;" d="M256 37c-5 0-9 1-13 5l-178 172c-2 1-4 4-8 7-3 4-8 10-16 19-7 9-13 18-19 28-6 9-11 21-15 34-5 14-7 27-7 40 0 42 12 74 36 98 24 24 58 35 101 35 11 0 23-2 36-6 12-4 23-9 34-16 11-7 20-14 27-20 8-6 15-12 22-19 7 7 14 13 22 19 7 6 16 13 27 20 11 7 22 12 34 16 13 4 25 6 36 6 43 0 77-11 101-35 24-24 36-56 36-98 0-42-22-85-65-129l-178-171c-4-4-8-5-13-5z"/>
12
+ <glyph glyph-name="house" unicode="&#99;" d="M256 400l-160-128 0-208 112 0 0 128 96 0 0-128 112 0 0 208z m144-320l-80 0 0 128-128 0 0-128-80 0 0 184 144 116 144-116z m-144 368l-96-77 0 45-64 0 0-96-32-25 12-12 180 145 180-145 12 12z m-112-90l-32-25 0 67 32 0z"/>
13
+ <glyph glyph-name="house2" unicode="&#100;" d="M256 400l-160-128 0-208 112 0 0 128 96 0 0-128 112 0 0 208z m0 48l-96-77 0 45-64 0 0-96-32-25 12-12 180 145 180-145 12 12z"/>
14
+ </font></defs></svg>
@@ -0,0 +1,45 @@
1
+ function rets_save_property(mls_number) {
2
+ $.ajax({
3
+ url: '/api/save-property',
4
+ type: 'put',
5
+ data: {
6
+ mls: mls_number
7
+ },
8
+ success: function(resp) {
9
+ if (resp && resp.success) {
10
+ $.each( $("a[data-mls='" + mls_number + "']"), function(k,v) {
11
+ var oldoc = $(v).attr("onclick");
12
+ var newoc = $(v).attr("onclick2");
13
+ $(v).attr("onclick",newoc).attr("onclick2",oldoc);
14
+ $(v).mouseleave(function() {
15
+ $(v).addClass("active");
16
+ });
17
+ });
18
+ }
19
+ }
20
+ });
21
+ }
22
+
23
+ function rets_unsave_property(mls_number) {
24
+ $.ajax({
25
+ url: '/api/unsave-property',
26
+ type: 'put',
27
+ data: {
28
+ mls: mls_number
29
+ },
30
+ success: function(resp) {
31
+ if (resp && resp.success) {
32
+ $.each( $("a[data-mls='" + mls_number + "']"), function(k,v) {
33
+ var oldoc = $(v).attr("onclick");
34
+ var newoc = $(v).attr("onclick2");
35
+ $(v).attr("onclick",newoc).attr("onclick2",oldoc);
36
+ $(v).mouseleave(function() {
37
+ $(v).removeClass("active");
38
+ });
39
+ if ( $(v).closest(".saved-list").length > 0 )
40
+ $(v).closest(".property").remove();
41
+ });
42
+ }
43
+ }
44
+ });
45
+ }
@@ -0,0 +1,52 @@
1
+ @charset "UTF-8";
2
+
3
+ @font-face {
4
+ font-family: "rets";
5
+ src:url("/assets/caboose_rets/rets.eot");
6
+ src:url("/assets/caboose_rets/rets.eot?#iefix") format("embedded-opentype"),
7
+ url("/assets/caboose_rets/rets.woff") format("woff"),
8
+ url("/assets/caboose_rets/rets.ttf") format("truetype"),
9
+ url("/assets/caboose_rets/rets.svg#rets") format("svg");
10
+ font-weight: normal;
11
+ font-style: normal;
12
+
13
+ }
14
+
15
+ [data-icon]:before {
16
+ font-family: "rets" !important;
17
+ content: attr(data-icon);
18
+ font-style: normal !important;
19
+ font-weight: normal !important;
20
+ font-variant: normal !important;
21
+ text-transform: none !important;
22
+ speak: none;
23
+ line-height: 1;
24
+ -webkit-font-smoothing: antialiased;
25
+ -moz-osx-font-smoothing: grayscale;
26
+ }
27
+
28
+ [class^="retsicon-"]:before,
29
+ [class*=" retsicon-"]:before {
30
+ font-family: "rets" !important;
31
+ font-style: normal !important;
32
+ font-weight: normal !important;
33
+ font-variant: normal !important;
34
+ text-transform: none !important;
35
+ speak: none;
36
+ line-height: 1;
37
+ -webkit-font-smoothing: antialiased;
38
+ -moz-osx-font-smoothing: grayscale;
39
+ }
40
+
41
+ .retsicon-heart:before {
42
+ content: "\61";
43
+ }
44
+ .retsicon-heart2:before {
45
+ content: "\62";
46
+ }
47
+ .retsicon-house:before {
48
+ content: "\63";
49
+ }
50
+ .retsicon-house2:before {
51
+ content: "\64";
52
+ }
@@ -24,6 +24,7 @@ module CabooseRets
24
24
  end
25
25
  where = @site && @site.id == 558 ? "(style ILIKE '%condo%' OR res_style ILIKE '%condo%' OR property_subtype ILIKE '%condo%' OR property_subtype ILIKE '%townhouse%')" : "(id is not null)"
26
26
  sortby = @site && @site.id == 558 ? "original_entry_timestamp" : CabooseRets::default_property_sort
27
+ @saved_properties = CabooseRets::SavedProperty.where(:user_id => logged_in_user.id).pluck(:mls_number)
27
28
  @pager = Caboose::PageBarGenerator.new(params, {
28
29
  'area' => '',
29
30
  'area_like' => '',
@@ -98,7 +99,6 @@ module CabooseRets
98
99
  @property = Property.where(:mls_number => params[:mls_number]).first
99
100
  @agent = Agent.where(:matrix_unique_id => @property.list_agent_mui).where("office_mls_id ILIKE ?", @site.rets_office_id).first if @property
100
101
  @saved = logged_in? && SavedProperty.where(:user_id => logged_in_user.id, :mls_number => params[:mls_number]).exists?
101
-
102
102
  price_where = "list_price is not null and (list_price >= ? AND list_price <= ?)"
103
103
  beds_where = "beds_total is not null and (beds_total >= ? AND beds_total <= ?)"
104
104
  price_min = @property.list_price * 0.8 if @property && @property.list_price
@@ -4,27 +4,28 @@ module CabooseRets
4
4
  # GET /saved-properties
5
5
  def index
6
6
  return if !verify_logged_in
7
- @properties = SavedProperty.where(:user_id => logged_in_user.id).all
7
+ @page.title = "Saved Listings"
8
+ @saved = SavedProperty.where(:user_id => logged_in_user.id).all
8
9
  end
9
10
 
10
11
  # GET /admin/users/:id/mls
11
12
  def rets_info
12
13
  @edituser = Caboose::User.where(:id => params[:id], :site_id => @site.id).first
14
+ @saved = SavedProperty.where(:user_id => @edituser.id).order('date_saved desc').all
13
15
  render :layout => 'caboose/admin'
14
16
  end
15
17
 
16
- # POST /saved-properties
17
- def add
18
+ # PUT /api/save-property
19
+ def save
18
20
  return if !verify_logged_in
19
-
20
21
  resp = Caboose::StdClass.new
21
-
22
- if SavedProperty.exists?(:user_id => logged_in_user.id, :mls => params[:mls])
22
+ if SavedProperty.exists?(:user_id => logged_in_user.id, :mls_number => params[:mls])
23
23
  resp.success = true
24
24
  else
25
25
  p = SavedProperty.new(
26
26
  :user_id => logged_in_user.id,
27
- :mls => params[:mls]
27
+ :mls_number => params[:mls],
28
+ :date_saved => DateTime.now
28
29
  )
29
30
  if p.save
30
31
  resp.success = true
@@ -35,53 +36,30 @@ module CabooseRets
35
36
  render :json => resp
36
37
  end
37
38
 
38
- # DELETE /saved-properties/:mls
39
- def delete
39
+ # PUT /api/unsave-property
40
+ def unsave
40
41
  return if !verify_logged_in
41
- SavedProperty.where(:user_id => logged_in_user.id, :mls => params[:mls]).destroy_all
42
+ SavedProperty.where(:user_id => logged_in_user.id, :mls_number => params[:mls]).destroy_all
42
43
  render :json => Caboose::StdClass.new('success' => true)
43
44
  end
44
45
 
45
- # POST /saved-properties
46
- def add
47
- return if !verify_logged_in
48
-
49
- resp = Caboose::StdClass.new
50
-
51
- if SavedProperty.exists?(:user_id => logged_in_user.id, :mls => params[:mls])
52
- resp.success = true
53
- else
54
- p = SavedProperty.new(
55
- :user_id => logged_in_user.id,
56
- :mls => params[:mls]
57
- )
58
- if p.save
59
- resp.success = true
60
- else
61
- resp.error = "There was an error saving your property."
62
- end
63
- end
64
- render :json => resp
65
- end
66
-
67
46
  # GET /saved-properties/:mls/toggle
68
- def toggle_save
69
- return if !verify_logged_in
47
+ # def toggle_save
48
+ # return if !verify_logged_in
49
+ # resp = Caboose::StdClass.new
50
+ # if SavedProperty.where(:user_id => logged_in_user.id, :mls => params[:mls]).exists?
51
+ # SavedProperty.where(:user_id => logged_in_user.id, :mls => params[:mls]).destroy_all
52
+ # resp.saved = false
53
+ # else
54
+ # p = SavedProperty.new
55
+ # p.user_id = logged_in_user.id
56
+ # p.mls = params[:mls]
57
+ # p.save
58
+ # resp.saved = true
59
+ # end
70
60
 
71
- resp = Caboose::StdClass.new
72
- if SavedProperty.where(:user_id => logged_in_user.id, :mls => params[:mls]).exists?
73
- SavedProperty.where(:user_id => logged_in_user.id, :mls => params[:mls]).destroy_all
74
- resp.saved = false
75
- else
76
- p = SavedProperty.new
77
- p.user_id = logged_in_user.id
78
- p.mls = params[:mls]
79
- p.save
80
- resp.saved = true
81
- end
82
-
83
- render :json => resp
84
- end
61
+ # render :json => resp
62
+ # end
85
63
 
86
64
  # GET /saved-properties/:mls/status
87
65
  def status
@@ -19,9 +19,7 @@ class CabooseRets::RetsPlugin < Caboose::CaboosePlugin
19
19
  # item['children'] << { 'id' => 'commercial' , 'href' => '/admin/multi-family' , 'text' => 'Multi-Family Property' , 'modal' => false }
20
20
  # item['children'] << { 'id' => 'land' , 'href' => '/admin/land' , 'text' => 'Land Property' , 'modal' => false }
21
21
  # item['children'] << { 'id' => 'saved-properties' , 'href' => '/saved-properties' , 'text' => 'Saved Properties' , 'modal' => false }
22
- # item['children'] << { 'id' => 'saved-searches' , 'href' => '/saved-searches' , 'text' => 'Saved Searches' , 'modal' => false }
23
-
24
-
22
+ # item['children'] << { 'id' => 'saved-searches' , 'href' => '/saved-searches' , 'text' => 'Saved Searches' , 'modal' => false }
25
23
  nav << item
26
24
 
27
25
  return nav
@@ -37,4 +35,4 @@ class CabooseRets::RetsPlugin < Caboose::CaboosePlugin
37
35
  end
38
36
  end
39
37
 
40
- end
38
+ end
@@ -2,7 +2,7 @@ class CabooseRets::SavedProperty < ActiveRecord::Base
2
2
  self.table_name = "rets_saved_properties"
3
3
 
4
4
  belongs_to :user, :class_name => 'Caboose::User'
5
- attr_accessible :user_id, :mls_number
5
+ attr_accessible :user_id, :mls_number, :date_saved
6
6
 
7
7
  def property
8
8
  return CabooseRets::Property.where(:mls_number => self.mls_number).first
@@ -321,7 +321,8 @@ class CabooseRets::Schema < Caboose::Utilities::Schema
321
321
  ],
322
322
  CabooseRets::SavedProperty => [
323
323
  [ :user_id , :integer ],
324
- [ :mls_number , :string ]
324
+ [ :mls_number , :string ],
325
+ [ :date_saved, :datetime ]
325
326
  ],
326
327
  CabooseRets::SavedSearch => [
327
328
  [ :user_id , :integer ],
@@ -8,10 +8,42 @@
8
8
  <p><div id='user_<%= @edituser.id %>_rets_agent_mls_id' ></div></p>
9
9
  </div>
10
10
 
11
-
11
+ <% if @saved.count > 0 %>
12
+ <h3 class="sp">Saved Properties</h3>
13
+ <ul class="saved">
14
+ <% @saved.each do |sp| %>
15
+ <% prop = CabooseRets::Property.where(:mls_number => sp.mls_number).first %>
16
+ <% next if prop.nil? || prop.status != 'Active' %>
17
+ <li>
18
+ <a href="/properties/<%= sp.mls_number %>/details" target="_blank">MLS #<%= sp.mls_number %> - <%= prop.full_address %></a>
19
+ <% if !sp.date_saved.blank? %><span> - saved on <%= sp.date_saved.in_time_zone('Central Time (US & Canada)').strftime('%B %-d, %Y') %></span><% end %>
20
+ </li>
21
+ <% end %>
22
+ </ul>
23
+ <% end %>
12
24
 
13
25
  <%= render :partial => 'caboose/users/admin_footer' %>
14
26
 
27
+ <% content_for :caboose_css do %>
28
+ <style>
29
+ h3.sp {
30
+ margin: 30px 0 10px 0;
31
+ }
32
+ ul.saved {
33
+ padding-left: 0;
34
+ list-style-type: none;
35
+ }
36
+ ul.saved li {
37
+ display: block;
38
+ margin-bottom: 3px;
39
+ }
40
+ ul.saved li a {
41
+ text-decoration: none;
42
+ }
43
+ </style>
44
+ <% end %>
45
+
46
+
15
47
  <% content_for :caboose_js do %>
16
48
  <%= javascript_include_tag "caboose/model/all" %>
17
49
  <script type="text/javascript">
data/config/routes.rb CHANGED
@@ -93,10 +93,10 @@ CabooseRets::Engine.routes.draw do
93
93
 
94
94
  get "/saved-properties/:mls/status" => "saved_properties#status"
95
95
  get "/saved-properties/:mls/toggle" => "saved_properties#toggle_save"
96
- get "/saved-properties" => "saved_properties#index"
97
- post "/saved-properties" => "saved_properties#add"
98
- delete "/saved-properties/:mls" => "saved_properties#delete"
99
- get "/admin/users/:id/mls" => "saved_properties#rets_info"
96
+ get "/saved-properties" => "saved_properties#index"
97
+ put "/api/save-property" => "saved_properties#save"
98
+ put "/api/unsave-property" => "saved_properties#unsave"
99
+ get "/admin/users/:id/mls" => "saved_properties#rets_info"
100
100
 
101
101
  get "/admin/properties/:mls/photos" => "rets_media#admin_photos"
102
102
  get "/admin/properties/:mls/files" => "rets_media#admin_files"
@@ -21,7 +21,13 @@ module CabooseRets
21
21
  initializer 'caboose_rets.assets.precompile' do |app|
22
22
  app.config.assets.precompile += [
23
23
  'caboose_rets/admin_media.js',
24
- 'caboose_rets/caboose_rets.js'
24
+ 'caboose_rets/caboose_rets.js',
25
+ 'caboose_rets/rets_functions.js',
26
+ 'caboose_rets/retsicons.css',
27
+ 'caboose_rets/rets.eot',
28
+ 'caboose_rets/rets.svg',
29
+ 'caboose_rets/rets.ttf',
30
+ 'caboose_rets/rets.woff'
25
31
  ]
26
32
  end
27
33
  end
@@ -1,3 +1,3 @@
1
1
  module CabooseRets
2
- VERSION = '0.1.142'
2
+ VERSION = '0.1.143'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-rets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.142
4
+ version: 0.1.143
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-22 00:00:00.000000000 Z
11
+ date: 2019-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: caboose-cms
@@ -48,8 +48,14 @@ files:
48
48
  - MIT-LICENSE
49
49
  - README.md
50
50
  - Rakefile
51
+ - app/assets/fonts/caboose_rets/rets.eot
52
+ - app/assets/fonts/caboose_rets/rets.svg
53
+ - app/assets/fonts/caboose_rets/rets.ttf
54
+ - app/assets/fonts/caboose_rets/rets.woff
51
55
  - app/assets/javascripts/caboose_rets/admin_media.js
52
56
  - app/assets/javascripts/caboose_rets/caboose_rets.js
57
+ - app/assets/javascripts/caboose_rets/rets_functions.js
58
+ - app/assets/stylesheets/caboose_rets/retsicons.css
53
59
  - app/controllers/caboose_rets/agents_controller.rb
54
60
  - app/controllers/caboose_rets/application_controller.rb
55
61
  - app/controllers/caboose_rets/offices_controller.rb
@@ -100,6 +106,7 @@ files:
100
106
  - app/views/caboose_rets/properties/property_not_exists.html.erb
101
107
  - app/views/caboose_rets/properties/test_form.html.erb
102
108
  - app/views/caboose_rets/rets/admin_import_form.html.erb
109
+ - app/views/caboose_rets/saved_properties/index.html.erb
103
110
  - app/views/caboose_rets/saved_properties/rets_info.html.erb
104
111
  - app/views/caboose_rets/saved_searches/edit.html.erb
105
112
  - app/views/caboose_rets/saved_searches/index.html.erb