caboose-rets 0.1.142 → 0.1.143

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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