caboose-rets 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWU1ZDdiMDI1Mjk0NDE5ZTExNWJmZTc4ZGIyMDUyNDNhN2VhOTIzYw==
4
+ NDY2ZmI0MGRhMDAxODUxNjg0ZTczMjA4YzJmYjNkNzE1N2YyY2IyZg==
5
5
  data.tar.gz: !binary |-
6
- ZTQwYWY0YjJlYTM3ZGUyNDNmN2E1YmUyMzJiMmFiNzE2MTQwZWEyZg==
6
+ ZTUyZjkzOGY4MDFjM2VjMDA4M2VmNWIxZDQ2OGEzOTMwODM4ZGQyNQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NjU5MjdlZWYwNWYzMzRlZjIyNjAxMTc0MGU0ZDQxNGQ4YzY5YTRjNTQ2ZjRk
10
- OGI4MWM5ZTFmZjIwYTkzYWRiMTE4OTc5YTIxNmRiMGVkNGI4OGE4YTAyODUw
11
- ZGJhNDAwMGZiNTQ3MjkwMzA2OGZkMThhZDUzMmE2MGM0ZWRmZTc=
9
+ ZjM0YWEyZjEwZDM2NDFmNWQ2YjUyZmQzNDI2NjM1ZGIyNmQ1ZGE3MDAyYmQ3
10
+ ODBiNjQ1Y2VmNjk0YjAwZTMyMDZkMjI1ZjllODJjNTc3NmQwNmM2M2Y4MzIx
11
+ NWM2ZjhlYTE0ODZlNDdiMGI0NWFkNzU0MDZkMmViZDI5MjI5OGE=
12
12
  data.tar.gz: !binary |-
13
- ZTE0ZTAxNDU4YTRmZGJjYjFlYTgzOTIwYzY0NjkyNjI3NDVmODQ3OWYzZDAx
14
- OTEzOTg4YmY2MjRiODM0NDVjMWFmNTk2ZTMzZmIyNjdjNDJhYTZhZTg1ZTJh
15
- ODQxZDY3ODJkY2VlNzA2NTI3YWE1ZGYwYzFiMDY3NWVjYTkxOTM=
13
+ ODc1ODE5MTU3YmU1ODRmMzYyODkwMGVhODQ2MGEzYzQwYjdlYzU1Mjk2NGYy
14
+ ZTExZmE3ZjIwMjQxZDk3ZTM5ZGRkNzc5ZDk4NTllZWVmMmQ5MmRkODkxOWQ3
15
+ Y2UwZmZkZDE1Yjc3YWQwMWJjZDgwY2JmZDUzY2RjM2IyZWY5YWM=
@@ -1,5 +1,5 @@
1
1
 
2
- class CabooseRets
2
+ module CabooseRets
3
3
  class CommercialController < ApplicationController
4
4
 
5
5
  # GET /commercial
@@ -18,7 +18,7 @@ class CabooseRets
18
18
  'lo_code' => '',
19
19
  'address' => '',
20
20
  },{
21
- 'model' => 'CommercialProperty',
21
+ 'model' => 'CabooseRets::CommercialProperty',
22
22
  'sort' => 'mls_acct',
23
23
  'desc' => false,
24
24
  'base_url' => '/commercial',
@@ -29,11 +29,7 @@ class CabooseRets
29
29
 
30
30
  # GET /commercial/:mls_acct/details
31
31
  def details
32
- @property = CommercialProperty.where(:mls_acct => params[:mls_acct]).first
33
- if @property.lo_code == '46'
34
- @agent = Agent.where(:la_code => @property.la_code).first
35
- end
36
- @message = Message.new
32
+ @property = CommercialProperty.where(:mls_acct => params[:mls_acct]).first
37
33
  end
38
34
 
39
35
  #=============================================================================
@@ -4,31 +4,79 @@ module CabooseRets
4
4
 
5
5
  # GET /land
6
6
  def index
7
- @gen = Caboose::PageBarGenerator.new(params, {
8
- 'mls_acct' => ''
7
+ @gen = Caboose::PageBarGenerator.new(params, {
8
+ 'acreage' => '',
9
+ 'acreage_gte' => '',
10
+ 'acreage_lte' => '',
11
+ 'acreage_source' => '',
12
+ 'adjoining_land_use' => '',
13
+ 'agent_notes_like' => '',
14
+ 'area' => '',
15
+ 'bom_date' => '',
16
+ 'city' => '',
17
+ 'city_code' => '',
18
+ 'co_la_code' => '',
19
+ 'co_lo_code' => '',
20
+ 'co_sa_code' => '',
21
+ 'co_so_code' => '',
22
+ 'converted' => '',
23
+ 'county' => '',
24
+ 'current_price_gte' => '',
25
+ 'current_price_lte' => '',
26
+ 'date_created_gte' => '',
27
+ 'date_created_lte' => '',
28
+ 'date_modified_gte' => '',
29
+ 'date_modified_lte' => '',
30
+ 'elem_school' => '',
31
+ 'ftr_access_like' => '',
32
+ 'ftr_lotdesc_like' => '',
33
+ 'ftr_mineralrights' => '',
34
+ 'ftr_zoning' => '',
35
+ 'high_school' => '',
36
+ 'internet_yn' => '',
37
+ 'la_code' => '',
38
+ 'list_date_gte' => '',
39
+ 'list_date_lte' => '',
40
+ 'list_price_gte' => '',
41
+ 'list_price_lte' => '',
42
+ 'lo_code' => '',
43
+ 'middle_school' => '',
44
+ 'mls_acct' => '',
45
+ 'municipality' => '',
46
+ 'parcel_id' => '',
47
+ 'prop_type' => '',
48
+ 'remarks_like' => '',
49
+ 'sa_code' => '',
50
+ 'so_code' => '',
51
+ 'state' => '',
52
+ 'status' => '',
53
+ 'street_name_like' => '',
54
+ 'street_num_like' => '',
55
+ 'subdivision' => '',
56
+ 'unit_num' => '',
57
+ 'waterfront' => '',
58
+ 'waterfront_yn' => '',
59
+ 'zip' => ''
9
60
  },{
10
- 'model' => 'ResidentialProperty',
61
+ 'model' => 'CabooseRets::LandProperty',
11
62
  'sort' => 'mls_acct',
12
63
  'desc' => false,
13
64
  'base_url' => '/land',
14
65
  'items_per_page' => 10
15
66
  })
16
- Caboose.log(@gen.where)
67
+
17
68
  @properties = @gen.items
18
69
  if params[:waterfront].present? then @properties.reject!{|p| p.waterfront.blank?} end
19
- if params[:ftr_lotdesc] == 'golf' then @properties.reject!{|p| p.ftr_lotdesc != 'golf'} end
20
- #if params[:foreclosure] then @properties.reject!{|p| p.foreclosure_yn != "Y"} end
21
70
  end
22
71
 
23
72
  # GET /land/:mls_acct/details
24
73
  def details
25
- @property = ResidentialProperty.where(:mls_acct => params[:mls_acct]).first
74
+ @property = CabooseRets::LandProperty.where(:mls_acct => params[:mls_acct]).first
26
75
  if @property.nil?
27
76
  @mls_acct = params[:mls_acct]
28
- render 'land/land_not_exists'
77
+ render 'land/not_exists'
29
78
  return
30
- end
31
- @message = Message.new
79
+ end
32
80
  end
33
81
 
34
82
  #=============================================================================
@@ -0,0 +1,98 @@
1
+
2
+ module CabooseRets
3
+ class MultiFamilyController < ApplicationController
4
+
5
+ # GET /multi-family
6
+ def index
7
+ params[:street_num_like] = params[:street_name_like].tr('A-z', '').tr(' ', '') unless params[:street_name_like].nil?
8
+ unless params[:street_name_like].nil?
9
+ params[:street_name_like] = params[:street_name_like].tr('0-9', "")
10
+ until params[:street_name_like][0] != " " || params[:street_name_like] == ''
11
+ params[:street_name_like][0] = '' if params[:street_name_like][0].to_i == 0
12
+ end
13
+ end
14
+
15
+ @gen = Caboose::PageBarGenerator.new(params, {
16
+ 'name' => '',
17
+ 'current_price_gte' => '',
18
+ 'current_price_lte' => '',
19
+ 'bedrooms_gte' => '',
20
+ 'bedrooms_lte' => '',
21
+ 'prop_type' => '',
22
+ 'tot_heat_sqft_gte' => '',
23
+ 'tot_heat_sqft_lte' => '',
24
+ 'neighborhood' => '',
25
+ 'elem_school' => '',
26
+ 'middle_school' => '',
27
+ 'high_school' => '',
28
+ 'address' => '',
29
+ 'lo_lo_code' => '',
30
+ 'remarks_like' => '',
31
+ 'waterfront' => '',
32
+ 'ftr_lotdesc_like' => '',
33
+ 'mls_acct' => '',
34
+ 'subdivision' => '',
35
+ 'foreclosure_yn' => '',
36
+ 'street_name_like' => '',
37
+ 'street_num_like' => '',
38
+ 'date_created_gte' => '',
39
+ 'date_created_lte' => '',
40
+ 'date_modified_gte' => '',
41
+ 'date_modified_lte' => '',
42
+ 'status' => ['active', 'pending']
43
+ },{
44
+ 'model' => 'CabooseRets::MultiFamilyProperty',
45
+ 'sort' => 'current_price ASC, mls_acct',
46
+ 'desc' => false,
47
+ 'base_url' => '/multi-family',
48
+ 'items_per_page' => 10
49
+ })
50
+ @properties = @gen.items
51
+ end
52
+
53
+ # GET /multi_family/:mls_acct/details
54
+ def details
55
+ @property = MultiFamilyProperty.where(:mls_acct => params[:mls_acct]).first
56
+ if @property.nil?
57
+ @mls_acct = params[:mls_acct]
58
+ render 'multi_family/not_exists'
59
+ return
60
+ end
61
+ end
62
+
63
+ #=============================================================================
64
+ # Admin actions
65
+ #=============================================================================
66
+
67
+ # GET /admin/multi_family
68
+ def admin_index
69
+ return if !user_is_allowed('properties', 'view')
70
+
71
+ @gen = Caboose::PageBarGenerator.new(params, {
72
+ 'mls_acct' => ''
73
+ },{
74
+ 'model' => 'MultiFamilyProperty',
75
+ 'sort' => 'mls_acct',
76
+ 'desc' => false,
77
+ 'base_url' => '/admin/multi_family'
78
+ })
79
+ @properties = @gen.items
80
+ render :layout => 'caboose/admin'
81
+ end
82
+
83
+ # GET /admin/multi_family/:mls_acct/edit
84
+ def admin_edit
85
+ return if !user_is_allowed('properties', 'edit')
86
+ @property = MultiFamilyProperty.where(:mls_acct => params[:mls_acct]).first
87
+ render :layout => 'caboose/admin'
88
+ end
89
+
90
+ # GET /admin/multi_family/:mls_acct/refresh
91
+ def admin_refresh
92
+ RetsMultiFamilyImporter.import_property(params[:mls_acct])
93
+ flash[:message] = "<p class='note success'>The property info has been updated from MLS.</p>"
94
+ render :json => Caboose::StdClass.new({ 'reload' => true })
95
+ end
96
+
97
+ end
98
+ end
@@ -26,7 +26,7 @@ module CabooseRets
26
26
  'middle_school' => '',
27
27
  'high_school' => '',
28
28
  'address' => '',
29
- 'lo_code' => '',
29
+ 'lo_lo_code' => '',
30
30
  'remarks_like' => '',
31
31
  'waterfront' => '',
32
32
  'ftr_lotdesc_like' => '',
@@ -41,16 +41,15 @@ module CabooseRets
41
41
  'date_modified_lte' => '',
42
42
  'status' => ['active', 'pending']
43
43
  },{
44
- 'model' => 'ResidentialProperty',
44
+ 'model' => 'CabooseRets::ResidentialProperty',
45
45
  'sort' => 'current_price ASC, mls_acct',
46
46
  'desc' => false,
47
47
  'base_url' => '/residential',
48
48
  'items_per_page' => 10
49
49
  })
50
-
51
-
52
- Caboose.log(@gen.where)
53
- @properties = @gen.items
50
+
51
+ @properties = @gen.items
52
+
54
53
  if params[:waterfront].present? then @properties.reject!{|p| p.waterfront.blank?} end
55
54
  if params[:ftr_lotdesc] == 'golf' then @properties.reject!{|p| p.ftr_lotdesc != 'golf'} end
56
55
  #if params[:foreclosure] then @properties.reject!{|p| p.foreclosure_yn != "Y"} end
@@ -67,7 +66,7 @@ module CabooseRets
67
66
  render 'residential/residential_not_exists'
68
67
  return
69
68
  end
70
- @message = Message.new
69
+ #@message = Message.new
71
70
  end
72
71
 
73
72
  #=============================================================================
@@ -2,21 +2,20 @@
2
2
  class CabooseRets::CommercialProperty < ActiveRecord::Base
3
3
  self.table_name = "rets_commercial"
4
4
 
5
- def agent
6
- return Agent.where(:la_code => self.la_code).first
7
- end
8
-
9
- def office
10
- return Office.where(:lo_code => self.lo_code).first
11
- end
5
+ def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
6
+ def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
7
+ def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
12
8
 
13
- def images
14
- return Media.where(:mls_acct => self.id).order(:media_order).all
15
- end
16
-
17
- def self.geolocatable
18
- all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL")
19
- end
9
+ def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
10
+ #def self.property_types() self.pucs("prop_type" ).reject(&:empty?).sort end
11
+ #def self.statuses() self.pucs("status" ).reject(&:empty?).sort end
12
+ #def self.zips() self.pucs("zip" ).reject(&:empty?).sort end
13
+ #def self.cities() self.pucs("city" ).reject(&:empty?).sort end
14
+ #def self.counties() self.pucs("county" ).reject(&:empty?).sort end
15
+ #def self.subdivisions() self.pucs("subdivision" ).reject(&:empty?).sort end
16
+ #def self.elem_schools() self.pucs("elem_school" ).reject(&:empty?).sort end
17
+ #def self.middle_schools() self.pucs("middle_school" ).reject(&:empty?).sort end
18
+ #def self.high_schools() self.pucs("high_school" ).reject(&:empty?).sort end
20
19
 
21
20
  def parse(data)
22
21
  self.acreage = data['ACREAGE']
@@ -2,21 +2,20 @@
2
2
  class CabooseRets::LandProperty < ActiveRecord::Base
3
3
  self.table_name = "rets_land"
4
4
 
5
- def agent
6
- return Agent.where(:la_code => self.la_code).first
7
- end
5
+ def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
6
+ def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
7
+ def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
8
8
 
9
- def office
10
- return Office.where(:lo_code => self.lo_code).first
11
- end
12
-
13
- def images
14
- return Media.where(:mls_acct => self.id).order(:media_order).all
15
- end
16
-
17
- def self.geolocatable
18
- all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL")
19
- end
9
+ def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
10
+ #def self.property_types() self.unique_field("prop_type" ) end
11
+ #def self.statuses() self.unique_field("status" ) end
12
+ #def self.zips() self.unique_field("zip" ) end
13
+ #def self.cities() self.unique_field("city" ) end
14
+ #def self.counties() self.unique_field("county" ) end
15
+ #def self.subdivisions() self.unique_field("subdivision" ) end
16
+ #def self.elem_schools() self.unique_field("elem_school" ) end
17
+ #def self.middle_schools() self.unique_field("middle_school" ) end
18
+ #def self.high_schools() self.unique_field("high_school" ) end
20
19
 
21
20
  def parse(data)
22
21
  self.acreage = data['ACREAGE']
@@ -2,22 +2,12 @@
2
2
  class CabooseRets::MultiFamilyProperty < ActiveRecord::Base
3
3
  self.table_name = "rets_multi_family"
4
4
 
5
- def agent
6
- return Agent.where(:la_code => self.la_code).first
7
- end
8
-
9
- def office
10
- return Office.where(:lo_code => self.lo_code).first
11
- end
5
+ def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
6
+ def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
7
+ def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
8
+
9
+ def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
12
10
 
13
- def images
14
- return Media.where(:mls_acct => self.id).order(:media_order).all
15
- end
16
-
17
- def self.geolocatable
18
- all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL")
19
- end
20
-
21
11
  def parse(data)
22
12
  self.acreage = data['ACREAGE']
23
13
  self.agent_notes = data['AGENT_NOTES']
@@ -9,7 +9,7 @@ class CabooseRets::Office < ActiveRecord::Base
9
9
  self.lo_email = data['LO_EMAIL']
10
10
  self.lo_fax_phone = data['LO_FAX_PHONE']
11
11
  self.lo_idx_yn = data['LO_IDX_YN']
12
- self.lo_lo_code = data['LO_LO_CODE']
12
+ self.lo_code = data['LO_LO_CODE']
13
13
  self.lo_mailaddr1 = data['LO_MAILADDR1']
14
14
  self.lo_mailaddr2 = data['LO_MAILADDR2']
15
15
  self.lo_mailcity = data['LO_MAILCITY']
@@ -2,21 +2,20 @@
2
2
  class CabooseRets::ResidentialProperty < ActiveRecord::Base
3
3
  self.table_name = "rets_residential"
4
4
 
5
- def agent
6
- return Agent.where(:la_code => self.la_code).first
7
- end
5
+ def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
6
+ def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
7
+ def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
8
8
 
9
- def office
10
- return Office.where(:lo_code => self.lo_code).first
11
- end
12
-
13
- def images
14
- return Media.where(:mls_acct => self.id).order(:media_order).all
15
- end
16
-
17
- def self.geolocatable
18
- all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL")
19
- end
9
+ def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
10
+ #def self.property_types() self.uniq.pluck("prop_type" ).reject(&:empty?).sort end
11
+ #def self.statuses() self.uniq.pluck("status" ).reject(&:empty?).sort end
12
+ #def self.zips() self.uniq.pluck("zip" ).reject(&:empty?).sort end
13
+ #def self.cities() self.uniq.pluck("city" ).reject(&:empty?).sort end
14
+ #def self.counties() self.uniq.pluck("county" ).reject(&:empty?).sort end
15
+ #def self.subdivisions() self.uniq.pluck("subdivision" ).reject(&:empty?).sort end
16
+ #def self.elem_schools() self.uniq.pluck("elem_school" ).reject(&:empty?).sort end
17
+ #def self.middle_schools() self.uniq.pluck("middle_school" ).reject(&:empty?).sort end
18
+ #def self.high_schools() self.uniq.pluck("high_school" ).reject(&:empty?).sort end
20
19
 
21
20
  def parse(data)
22
21
  self.bedrooms = data['BEDROOMS']
@@ -2,10 +2,7 @@ require 'ruby-rets'
2
2
  require 'httparty'
3
3
  require 'json'
4
4
 
5
- # Check for examples:
6
5
  # http://rets.solidearth.com/ClientHome.aspx
7
- # https://www.flexmls.com/developers/rets/tutorials/dmql-tutorial/
8
- # https://www.flexmls.com/developers/rets/tutorials/how-to-efficiently-replicate-rets-data/
9
6
 
10
7
  class CabooseRets::RetsImporter # < ActiveRecord::Base
11
8
 
@@ -83,10 +80,13 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
83
80
  # Main updater
84
81
  #=============================================================================
85
82
 
86
- def self.update_after(date_modified)
87
- self.get_config if @@config.nil? || @@config['url'].nil?
88
-
89
- # Import the data
83
+ def self.update_after(date_modified)
84
+ self.update_data_after(date_modified)
85
+ self.update_images_after(date_modified)
86
+ end
87
+
88
+ def self.update_data_after(date_modified)
89
+ self.get_config if @@config.nil? || @@config['url'].nil?
90
90
  self.import_modified_after(date_modified, 'Agent' , 'AGT')
91
91
  self.import_modified_after(date_modified, 'Office' , 'OFF')
92
92
  self.import_modified_after(date_modified, 'OpenHouse' , 'OPH')
@@ -94,9 +94,11 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
94
94
  self.import_modified_after(date_modified, 'Property' , 'LND')
95
95
  self.import_modified_after(date_modified, 'Property' , 'MUL')
96
96
  self.import_modified_after(date_modified, 'Property' , 'RES')
97
- #self.update_coords(obj)
98
-
99
- # Import the images
97
+ self.update_coords
98
+ end
99
+
100
+ def self.update_images_after(date_modified)
101
+ self.get_config if @@config.nil? || @@config['url'].nil?
100
102
  self.download_agent_images_modified_after(date_modified)
101
103
  self.download_property_images_modified_after(date_modified)
102
104
  end
@@ -197,7 +199,8 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
197
199
  #=============================================================================
198
200
 
199
201
  def self.download_property_images_modified_after(date_modified)
200
- [CommercialProperty, LandProperty, MultiFamilyProperty, ResidentialProperty].each do |model|
202
+ models = [CabooseRets::CommercialProperty, CabooseRets::LandProperty, CabooseRets::MultiFamilyProperty, CabooseRets::ResidentialProperty]
203
+ models.each do |model|
201
204
  model.where("photo_date_modified > ?", date_modified.strftime('%FT%T')).each do |p|
202
205
  self.download_property_images(p)
203
206
  end
@@ -243,29 +246,16 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
243
246
  # GPS
244
247
  #=============================================================================
245
248
 
246
- def self.update_coords(p, type = 'RES')
247
- if type == 'RES'
248
- self.update_property_coords(ResidentialProperty, 'residential', p)
249
- elsif type == 'COM'
250
- self.update_property_coords(CommercialProperty, 'commercial', p)
251
- elsif type == 'LND'
252
- self.update_property_coords(LandProperty, 'land', p)
253
- end
254
- end
255
-
256
- def self.update_property_coords(property_class, symbolic_name, property = nil)
257
- if (property.nil?)
258
- if (property_class.where(:latitude => nil).count == 0)
259
- self.log "All #{symbolic_name} properties have GPS coordinates."
260
- return
249
+ def self.update_coords(p = nil)
250
+ if p.nil?
251
+ models = [CabooseRets::CommercialProperty, CabooseRets::LandProperty, CabooseRets::MultiFamilyProperty, CabooseRets::ResidentialProperty]
252
+ models.each do |model|
253
+ model.where(:latitude => nil).reorder(:mls_acct).each do |p|
254
+ self.update_coords(p)
255
+ end
261
256
  end
262
- property_class.where(:latitude => nil).reorder(:mls_acct).each do |p|
263
- self.update_property_coords(property_class, symbolic_name, p)
264
- end
265
- self.update_property_coords(property_class, symbolic_name, nil)
266
257
  return
267
258
  end
268
- p = property
269
259
 
270
260
  coords = self.coords_from_address(CGI::escape "#{p.street_num} #{p.street_name}, #{p.city}, #{p.state} #{p.zip}")
271
261
  return if coords.nil? || coords == false
@@ -273,14 +263,13 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
273
263
  p.latitude = coords['lat']
274
264
  p.longitude = coords['lng']
275
265
  p.save
276
- self.log "Saved #{symbolic_name} property #{p.mls_acct} coords"
266
+ self.log "Saved coords for mls_acct #{p.mls_acct}"
277
267
  end
278
268
 
279
269
  def self.coords_from_address(address)
280
270
  begin
281
271
  uri = "https://maps.googleapis.com/maps/api/geocode/json?address=#{address}&sensor=false"
282
- uri.gsub!(" ", "+")
283
-
272
+ uri.gsub!(" ", "+")
284
273
  resp = HTTParty.get(uri)
285
274
  json = JSON.parse(resp.body)
286
275
  return json['results'][0]['geometry']['location']
@@ -298,6 +287,5 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
298
287
  def self.log(msg)
299
288
  puts "[rets_importer] #{msg}"
300
289
  Rails.logger.info("[rets_importer] #{msg}")
301
- end
302
-
290
+ end
303
291
  end
@@ -0,0 +1,201 @@
1
+
2
+ <label onclick="toggle_slide('residential_search_form');">Search Form</label>
3
+
4
+ <div class='search_form' id='residential_search_form' style='display: none;'>
5
+ <form action="/residential" method="get" id='search_form'>
6
+ <ul>
7
+ <li class='price_range'>
8
+ <label>Price Range</label>
9
+ <div>
10
+ <select id="current_price_gte" name="current_price_gte">
11
+ <option value="" selected="selected">Select</option>
12
+ <% (10000..50000).step(10000) do |x| %><option value="<%= x %>"><%= number_to_currency(x, :precision => 0) %></option><% end %>
13
+ <% (100000..950000).step(50000) do |x| %><option value="<%= x %>"><%= number_to_currency(x, :precision => 0) %></option><% end %>
14
+ <option value="1000000">$1,000,000+</option>
15
+ </select>
16
+ <span>To</span>
17
+ <select id="current_price_lte" name="current_price_lte">
18
+ <option value="" selected="selected">Select</option>
19
+ <% (10000..50000).step(10000) do |x| %><option value="<%= x %>"><%= number_to_currency(x, :precision => 0) %></option><% end %>
20
+ <% (100000..950000).step(50000) do |x| %><option value="<%= x %>"><%= number_to_currency(x, :precision => 0) %></option><% end %>
21
+ <option value="1000000">$1,000,000+</option>
22
+ </select>
23
+ </div>
24
+ </li>
25
+
26
+ <li class='bedroom_count'>
27
+ <label>How Many Beds?</label>
28
+ <div>
29
+ <select id="bedrooms_gte" name="bedrooms_gte">
30
+ <option value="">Any</option>
31
+ <% (1..5).each do |x| %><option value="<%= x %>"><%= x %></option><% end %>
32
+ </select>
33
+ <span>To</span>
34
+ <select id="bedrooms_lte" name="bedrooms_lte">
35
+ <option value="">Any</option>
36
+ <% (1..5).each do |x| %><option value="<%= x %>"><%= x %></option><% end %>
37
+ </select>
38
+ </div>
39
+ </li>
40
+
41
+ <li class='property_type'>
42
+ <label>Property Type</label>
43
+ <div>
44
+ <select id="prop_type" name="prop_type">
45
+ <option value="">Select</option>
46
+ <% @types.each do |f| %><option value="<%= f %>"> <%= f.titleize %></option><% end %>
47
+ </select>
48
+ </div>
49
+ </li>
50
+
51
+ <li class='mls_acct'>
52
+ <label>MLS #</label>
53
+ <div><input class="search-input" id="mls_acct" name="mls_acct" type="text" placeholder="Enter Here" /></div>
54
+ </li>
55
+
56
+ <li class='square_footage'>
57
+ <label>Square Feet</label>
58
+ <div>
59
+ <select id="tot_heat_sqft_gte" name="tot_heat_sqft_gte">
60
+ <option value="" selected="selected">Select</option>
61
+ <% (250..4000).step(250) do |x| %><option value="<%= x %>"><%= x %></option><% end %>
62
+ </select>
63
+ <span>To</span>
64
+ <select id="tot_heat_sqft_lte" name="tot_heat_sqft_lte">
65
+ <option value="" selected="selected">Select</option>
66
+ <% (250..4000).step(250) do |x| %><option value="<%= x %>"><%= x %></option><% end %>
67
+ </select>
68
+ </div>
69
+ </li>
70
+
71
+ <li class='neighborhood'>
72
+ <label>Neighborhood</label>
73
+ <div>
74
+ <select id="subdivision" name="subdivision">
75
+ <option value="">Neighborhood</option>
76
+ <% @subdivisions.each do |f| %><option value="<%= f %>"><%= f.titleize %></option><% end %>
77
+ </select>
78
+ </div>
79
+ </li>
80
+
81
+ <li class='elem_school'>
82
+ <label>Elementary School</label>
83
+ <div>
84
+ <select id="elem_school" name="elem_school">
85
+ <option value="">Select</option>
86
+ <% @elem_schools.each do |f| %><option value="<%= f %>"><%= f.titleize %></option><% end %>
87
+ </select>
88
+ </div>
89
+ </li>
90
+
91
+ <li class='middle_school'>
92
+ <label>Middle School</label>
93
+ <div>
94
+ <select id="middle_school" name="middle_school">
95
+ <option value="">Select</option>
96
+ <% @middle_schools.each do |f| %><option value="<%= f %>"><%= f.titleize %></option><% end %>
97
+ </select>
98
+ </div>
99
+ </li>
100
+
101
+ <li class='high_school'>
102
+ <label>High School</label>
103
+ <div>
104
+ <select id="high_school" name="high_school">
105
+ <option value="">Select</option>
106
+ <% @high_schools.each do |f| %><option value="<%= f %>"><%= f.titleize %></option><% end %>
107
+ </select>
108
+ </div>
109
+ </li>
110
+
111
+ <li class='street'>
112
+ <label>Street</label>
113
+ <div><input id="street_name_like" name="street_name_like" type="text" placeholder="Street" /></div>
114
+ </li>
115
+
116
+ <li class='remarks'>
117
+ <label>Search Keyword</label>
118
+ <div><input id="remarks" name="remarks_like" type="text" placeholder="Keywords" /></div>
119
+ </li>
120
+
121
+ <li class='waterfront'>
122
+ <label>Waterfront</label>
123
+ <div>
124
+ <select id="waterfront" name="waterfront">
125
+ <option value="" selected="selected">Select</option>
126
+ <option value="Y">Yes</option>
127
+ <option value="">No</option>
128
+ </select>
129
+ </div>
130
+ </li>
131
+
132
+ <li class='golf'>
133
+ <label class="h-float-right">Golf Course</label>
134
+ <div>
135
+ <select id="ftr_lotdesc_like" name="ftr_lotdesc_like">
136
+ <option value="" selected="selected">Select</option>
137
+ <option value="golf">Yes</option>
138
+ <option value="">No</option>
139
+ </select>
140
+ </div>
141
+ </li>
142
+
143
+ <li class='latest'>
144
+ <label>Show listings created when?</label>
145
+ <div>
146
+ <select id="date_created_gte" name="date_created_gte">
147
+ <option value="">All Listings</option>
148
+ <% d = DateTime.now - 3 %><option value="<%= d.strftime('%F') %>">In the past 3 days</option>
149
+ <% d = DateTime.now - 7 %><option value="<%= d.strftime('%F') %>">In the past 7 days</option>
150
+ <% d = DateTime.now - 30 %><option value="<%= d.strftime('%F') %>">In the past month</option>
151
+ </select>
152
+ </div>
153
+ </li>
154
+
155
+ <li class='property_status'>
156
+ <label>Property Status</label>
157
+ <div>
158
+ <select id="status" name="status">
159
+ <option value="">All</option>
160
+ <% @statuses.each do |x| %><option value="<%= x %>" <% if x == 'Active'%> selected="selected" <% end %> ><%= x %></option><% end %>
161
+ </select>
162
+ </div>
163
+ </li>
164
+ </ul>
165
+
166
+ <p><input type="submit" value="Search" onclick='search_properties(); return false;' /></p>
167
+ </form>
168
+ </div>
169
+
170
+ <% content_for :js do %>
171
+ <script type='text/javascript'>
172
+
173
+ function input_val(el) {
174
+ t = $(el).attr('type');
175
+ if (t == 'button' || t == 'submit')
176
+ return false;
177
+ val = $(el).val();
178
+ if (val.length > 0)
179
+ return "" + $(el).attr('id') + "=" + val;
180
+ }
181
+ function search_properties() {
182
+ data = []
183
+ $('#search_form input' ).each(function(i, el) { v = input_val(el); if (v) data[data.length] = v; });
184
+ $('#search_form select' ).each(function(i, el) { v = input_val(el); if (v) data[data.length] = v; });
185
+ data = data.join('&');
186
+ if (data.length > 0)
187
+ data = "?" + data
188
+ window.location = '/residential' + data
189
+ }
190
+
191
+ function toggle_slide(el)
192
+ {
193
+ var div = $('#' + el);
194
+ if (div.is(":visible"))
195
+ div.slideUp();
196
+ else
197
+ div.slideDown();
198
+ }
199
+
200
+ </script>
201
+ <% end %>
@@ -1,102 +1,49 @@
1
- <div class="l-wrapper">
2
- <a class="m-btn h-space-mtm" href="/search/residential">Search Residential Listings</a>
3
-
4
- <div class="l-sidebar-border inflate-tenor-baritone h-space-pvm">
5
- <div class="sidebar-body l-grid-border">
6
- <p></p>
7
- <div class="l-grid inflate-baritone-bass listing">
8
- <% if @properties.nil? || @properties == [] %>
9
- <div class='no-results'>No results found</div>
10
- <% else %>
11
- <% @properties.each do |p| %>
12
- <div class='grid-row'>
13
- <div class='grid-unit-1of4 list-part' id='list1'>
14
- <a href="/residential/<%= p.mls_acct %>/details"><img src='https://s3.amazonaws.com/advantagerealtygroup.com/residential/<%= p.mls_acct %>_1_thumb.jpg' width="400" /></a><br>
15
- <div id='list-meta'>
16
- <span class='address'><% if !p.unit_num.nil? && p.unit_num.strip.length > 0 %>Unit <%= p.unit_num %>, <% end %><%= p.street_num %> <%= p.street_name.titleize %></span><br> <!-- , {city}, {state} {zip} -->
17
- <% if p.lo_code != '46' %>
18
- <span class="nonadvantage_agent"><% if p.owner_name && p.office && p.office.name %>Listing Courtesy of <%= p.office.name.titleize %><% end %></span>
19
- <% else %>
20
- <span class="advantage_agent"><% if p.agent %>Listing Courtesy of <%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %><% end %></span>
21
- <% end %>
22
- </div>
23
- </div>
24
-
25
- <div class='grid-unit-1of4 list-part' id='list2'>
26
- <% if p.current_price != 0 %><span class='price'><%=h number_to_currency(p.current_price, :precision => 0) %></span><br><% end %>
27
- <% if p.foreclosure_yn == 'Y' %> <span class='list-info' style='font-size: 0.8em;'>(Foreclosure)</span><br> <% end %>
28
- <div class="info-meta">
29
- <span class='list-info'>Sq. footage: <span class='sqfeet'> <%= p.tot_heat_sqft %></span></span> <br>
30
- <span class='list-info'>Bedrooms: <%= p.bedrooms %></span> <br>
31
- <span class='list-info'>Full baths: <%= p.baths_full %></span> <br>
32
- <span class='list-info'>Half baths: <%= p.baths_half %></span> <br>
33
- </div>
34
- <span>MLS#: <%= p.mls_acct %></span>
35
- </div>
36
1
 
37
- <div class='grid-unit-1of4 list-part' id='list3'>
38
- <div class="list-schools">
39
- Schools:<br>
40
- <span class="school"> Elementary - <%= p.elem_school.titleize %></span> <br>
41
- <span class="school">Middle - <%= p.middle_school.titleize %></span> <br>
42
- <span class="school">High - <%= p.high_school.titleize %></span> <br>
43
- </div>
44
- <div class='desc-container'>
45
- <span class='description'><%= p.remarks %></span>
46
- </div>
47
- </div>
2
+ <%= render :partial => 'caboose_rets/residential/search_form' %>
48
3
 
49
- <div class='grid-unit-1of4 list-part' id='list4'>
50
- <a href="/residential/<%= p.mls_acct %>/details" class="m-btn-ornate">
51
- <div class="btn-inner see-more">MORE DETAILS</div>
52
- </a>
53
- <br>
54
- <% if p.lo_code == '46' && p.agent %>
55
- <a href="/agents/<%= p.la_code %>" class="m-btn-ornate">
56
- <div class="btn-inner contact-btn">Contact <%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %></div>
57
- </a>
58
- <% else %>
59
- <a href="/agents/048540000" class="m-btn-ornate">
60
- <div class="btn-inner contact-btn">Contact Advantage</div>
61
- </a>
62
- <% end %>
63
- <br>
64
- <% unless defined? p.virtual_tour && p.virtual_tour %>
65
- <a href="<%= p.virtual_tour %>" class="m-btn-ornate">
66
- <div class="btn-inner contact-btn">Take Virtual Tour</div>
67
- </a>
68
- <% end %>
69
- </div>
70
- </div>
71
- <% end %>
72
- <%= @gen.generate.html_safe %>
4
+ <div class='listings'>
5
+ <% if @properties.nil? || @properties == [] %>
6
+ <div class='no-results'>No results found</div>
7
+ <% else %>
8
+ <ul>
9
+ <% @properties.each do |p| %>
10
+ <li>
11
+ <% if p.images && p.images.count > 0 %>
12
+ <div class='image'><a href="/residential/<%= p.mls_acct %>/details"><img src="<%= p.images[0].url(:thumb) %>" /></a></div>
73
13
  <% end %>
74
- </div>
75
- </div> <!-- .sidebar-body -->
76
- </div> <!-- .l-sidebar -->
77
- </div> <!-- .l-wrapper -->
78
-
79
- <% content_for :caboose_js do %>
80
- <script style="text/javascript">
81
- function toTitleCase(str) {
82
- return str.replace(/\w\S*/g, function(txt) {
83
- if (txt != "of" && txt != "<br>") {
84
- return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
85
- } else {
86
- return txt;
87
- }
88
- });
89
- }
90
- $.fn.digits = function() {
91
- return this.each(function(){
92
- $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") );
93
- })
94
- }
95
- $('.price').digits();
96
- $('.sqfeet').digits();
97
- //$.each( $(".advantage_agent"), function() { $(this).text( toTitleCase( $(this).text() ))});
98
- //$.each( $(".contact-btn"), function() { $(this).text( toTitleCase( $(this).text() ))});
99
- //$.each( $(".address"), function() { $(this).text( toTitleCase( $(this).text() ))});
100
- //$.each( $(".school"), function() { $(this).text( toTitleCase( $(this).text() ))});
101
- </script>
102
- <% end %>
14
+ <div class="address"><% if !p.unit_num.nil? && p.unit_num.strip.length > 0 %>Unit <%= p.unit_num %>, <% end %><%= p.street_num %> <%= p.street_name.titleize %></div>
15
+ <% if p.agent %>
16
+ <div class="agent">
17
+ Listing Courtesy of <%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %>
18
+ <% if p.office %> with <%= p.office.name.titleize %><% end %>
19
+ </div>
20
+ <% end %>
21
+ <% if p.current_price != 0 %><span class='price' >$<%= p.current_price %></span><% end %>
22
+ <% if p.foreclosure_yn == 'Y' %><span class='foreclosure' >(Foreclosure)</span><% end %>
23
+ <ul class="meta">
24
+ <li class='sq_footage' ><label>Sq. footage: </label><span><%= p.tot_heat_sqft %></span></li>
25
+ <li class='bedrooms' ><label>Bedrooms: </label><span><%= p.bedrooms %></span></li>
26
+ <li class='full_baths' ><label>Full baths: </label><span><%= p.baths_full %></span></li>
27
+ <li class='half_baths' ><label>Half baths: </label><span><%= p.baths_half %></span></li>
28
+ </div>
29
+ <ul class='schools'>
30
+ <li><label>Elementary: </label><span><%= p.elem_school.titleize %><span></li>
31
+ <li><label>Middle: </label><span><%= p.middle_school.titleize %><span></li>
32
+ <li><label>High: </label><span><%= p.high_school.titleize %><span></li>
33
+ </ul>
34
+ <div class='mls_acct'><label>MLS#: </label><span><%= p.mls_acct %></span></div>
35
+ <div class='remarks'><%= p.remarks %></div>
36
+ <div class='more_details'><a href='/residential/<%= p.mls_acct %>/details'>MORE DETAILS</a></div>
37
+ <% if p.agent || p.office %>
38
+ <div class='contact lo_code_<%= p.lo_code %>'>Contact
39
+ <% if p.agent %><a href="/agents/<%= p.la_code %>"><%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %></a>
40
+ <% else %><a href="/offices/<%= p.lo_code %>"><%= p.office.name %></a><% end %>
41
+ </div>
42
+ <% end %>
43
+ <% if p.virtual_tour %><div class='virtual_tour'><a href="<%= p.virtual_tour %>">Take Virtual Tour</a></div><% end %>
44
+ </li>
45
+ <% end %>
46
+ </ul>
47
+ <%= @gen.generate.html_safe %>
48
+ <% end %>
49
+ </div>
data/config/routes.rb CHANGED
@@ -1,87 +1,58 @@
1
- Caboose::Engine.routes.draw do
2
-
3
- get "admin" => "admin#index"
4
- put "admin/station" => "station#index_admin"
5
- get "station" => "station#index"
6
- get "station/plugin-count" => "station#plugin_count"
7
-
8
- get "login" => "login#index"
9
- post "login" => "login#login"
10
- get "logout" => "logout#index"
11
- get "register" => "register#index"
12
- post "register" => "register#register"
1
+ CabooseRets::Engine.routes.draw do
2
+
3
+ get "agents" => "agents#index"
4
+ get "agents/:la_code" => "agents#details"
5
+ get "agents/:la_code/listings" => "agents#listings"
6
+ get "admin/agents" => "agents#admin_index"
7
+ get "admin/agents/assistant-to-options" => "agents#admin_assistant_to_options"
8
+ get "admin/agents/agent_options" => "agents#agent_options"
9
+ get "admin/agents/:id/edit" => "agents#admin_edit"
10
+ get "admin/agents/:id/edit-bio" => "agents#admin_edit_bio"
11
+ get "admin/agents/:id/edit-contact-info" => "agents#admin_edit_contact_info"
12
+ get "admin/agents/:id/edit-mls-info" => "agents#admin_edit_mls_info"
13
+ get "admin/agents/:id/refresh" => "agents#admin_refresh"
14
+ put "admin/agents/:id" => "agents#admin_update"
15
+ post "admin/agents/:id" => "agents#admin_update"
16
+
17
+ get "open-houses" => "open_houses#index"
18
+ get "open-houses/:id" => "open_houses#details"
19
+ get "admin/open-houses/new" => "open_houses#admin_new"
20
+ post "admin/open-houses" => "open_houses#admin_add"
21
+
22
+ get "commercial" => "commercial#index"
23
+ get "commercial/:mls_acct/details" => "commercial#details"
24
+ get "commercial/:mls_acct" => "commercial#details"
25
+ get "admin/commercial" => "commercial#admin_index"
26
+ get "admin/commercial/:mls_acct/edit" => "commercial#admin_edit"
27
+ get "admin/commercial/:mls_acct/refresh" => "commercial#admin_refresh"
28
+ put "admin/commercial/:mls_acct" => "commercial#admin_update"
29
+ post "admin/commercial/:mls_acct" => "commercial#admin_update"
30
+
31
+ get "residential" => "residential#index"
32
+ get "residential/:mls_acct/details" => "residential#details"
33
+ get "residential/:mls_acct" => "residential#details"
34
+ get "admin/residential" => "residential#admin_index"
35
+ get "admin/residential/:mls_acct/edit" => "residential#admin_edit"
36
+ get "admin/residential/:mls_acct/refresh" => "residential#admin_refresh"
37
+ put "admin/residential/:mls_acct" => "residential#admin_update"
38
+ post "admin/residential/:mls_acct" => "residential#admin_update"
39
+
40
+ get "land" => "land#index"
41
+ get "land/:mls_acct/details" => "land#details"
42
+ get "land/:mls_acct" => "land#details"
43
+ get "admin/land" => "land#admin_index"
44
+ get "admin/land/:mls_acct/edit" => "land#admin_edit"
45
+ get "admin/land/:mls_acct/refresh" => "land#admin_refresh"
46
+ put "admin/land/:mls_acct" => "land#admin_update"
47
+ post "admin/land/:mls_acct" => "land#admin_update"
48
+
49
+ get "multi-family" => "multi_family#index"
50
+ get "multi-family/:mls_acct/details" => "multi_family#details"
51
+ get "multi-family/:mls_acct" => "multi_family#details"
52
+ get "admin/multi-family" => "multi_family#admin_index"
53
+ get "admin/multi-family/:mls_acct/edit" => "multi_family#admin_edit"
54
+ get "admin/multi-family/:mls_acct/refresh" => "multi_family#admin_refresh"
55
+ put "admin/multi-family/:mls_acct" => "multi_family#admin_update"
56
+ post "admin/multi-family/:mls_acct" => "multi_family#admin_update"
13
57
 
14
- get "admin/users" => "users#index"
15
- get "admin/users/options" => "users#options"
16
- get "admin/users/new" => "users#new"
17
- get "admin/users/:id/edit-password" => "users#edit_password"
18
- get "admin/users/:id/edit" => "users#edit"
19
- put "admin/users/:id" => "users#update"
20
- post "admin/users" => "users#create"
21
- delete "admin/users/:id" => "users#destroy"
22
-
23
- get "admin/roles" => "roles#index"
24
- get "admin/roles/options" => "roles#options"
25
- get "admin/roles/new" => "roles#new"
26
- get "admin/roles/:id/edit" => "roles#edit"
27
- put "admin/roles/:id" => "roles#update"
28
- post "admin/roles" => "roles#create"
29
- delete "admin/roles/:id" => "roles#destroy"
30
-
31
- get "admin/permissions" => "permissions#index"
32
- get "admin/permissions/options" => "permissions#options"
33
- get "admin/permissions/new" => "permissions#new"
34
- get "admin/permissions/:id/edit" => "permissions#edit"
35
- put "admin/permissions/:id" => "permissions#update"
36
- post "admin/permissions" => "permissions#create"
37
- delete "admin/permissions/:id" => "permissions#destroy"
38
-
39
- get "admin/settings" => "settings#index"
40
- get "admin/settings/options" => "settings#options"
41
- get "admin/settings/new" => "settings#new"
42
- get "admin/settings/:id/edit" => "settings#edit"
43
- put "admin/settings/:id" => "settings#update"
44
- post "admin/settings" => "settings#create"
45
- delete "admin/settings/:id" => "settings#destroy"
46
-
47
- #get "pages" => "pages#index"
48
- get "pages/:id" => "pages#show"
49
- get "pages/:id/redirect" => "pages#redirect"
50
- get "admin/pages/sitemap-options" => "pages#admin_sitemap_options"
51
- get "admin/pages/robots-options" => "pages#admin_robots_options"
52
- get "admin/pages/format-options" => "pages#admin_content_format_options"
53
- get "admin/pages/new" => "pages#admin_new"
54
- get "admin/pages/:id/uri" => "pages#admin_page_uri"
55
- get "admin/pages/:id/delete" => "pages#admin_delete_form"
56
- get "admin/pages/:id/sitemap" => "pages#admin_sitemap"
57
- get "admin/pages/:id/edit" => "pages#admin_edit_general"
58
- get "admin/pages/:id/css" => "pages#admin_edit_css"
59
- get "admin/pages/:id/js" => "pages#admin_edit_js"
60
- get "admin/pages/:id/seo" => "pages#admin_edit_seo"
61
- get "admin/pages/:id/content" => "pages#admin_edit_content"
62
- put "admin/pages/:id" => "pages#admin_update"
63
- get "admin/pages" => "pages#admin_index"
64
- post "admin/pages" => "pages#admin_create"
65
- delete "admin/pages/:id" => "pages#admin_delete"
66
-
67
- get "posts" => "posts#index"
68
- get "posts/:id" => "posts#detail"
69
- get "admin/posts/category-options" => "posts#admin_category_options"
70
- get "admin/posts/new" => "posts#admin_new"
71
- get "admin/posts/:id/delete" => "posts#admin_delete_form"
72
- get "admin/posts/:id/edit" => "posts#admin_edit_general"
73
- get "admin/posts/:id/content" => "posts#admin_edit_content"
74
- get "admin/posts/:id/categories" => "posts#admin_edit_categories"
75
- get "admin/posts/:id/add-to-category" => "posts#admin_add_to_category"
76
- get "admin/posts/:id/remove-from-category" => "posts#admin_remove_from_category"
77
- get "admin/posts/:id/delete" => "posts#admin_delete_form"
78
- put "admin/posts/:id" => "posts#admin_update"
79
- post "admin/posts/:id" => "posts#admin_update"
80
- get "admin/posts" => "posts#admin_index"
81
- post "admin/posts" => "posts#admin_add"
82
- delete "admin/posts/:id" => "posts#admin_delete"
83
-
84
- match '*path' => 'pages#show'
85
- root :to => 'pages#show'
86
-
87
58
  end
@@ -1,3 +1,3 @@
1
1
  module CabooseRets
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -67,7 +67,7 @@ namespace :caboose_rets do
67
67
  t.string :lo_email
68
68
  t.string :lo_fax_phone
69
69
  t.string :lo_idx_yn
70
- t.string :lo_lo_code
70
+ t.string :lo_code
71
71
  t.string :lo_mailaddr1
72
72
  t.string :lo_mailaddr2
73
73
  t.string :lo_mailcity
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.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-31 00:00:00.000000000 Z
11
+ date: 2013-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: caboose-cms
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.77
19
+ version: 0.2.81
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.77
26
+ version: 0.2.81
27
27
  description: Library to download RETS data to a local website for easy use.
28
28
  email:
29
29
  - william@nine.is
@@ -35,6 +35,7 @@ files:
35
35
  - app/controllers/caboose_rets/application_controller.rb
36
36
  - app/controllers/caboose_rets/commercial_controller.rb
37
37
  - app/controllers/caboose_rets/land_controller.rb
38
+ - app/controllers/caboose_rets/multi_family_controller.rb
38
39
  - app/controllers/caboose_rets/open_houses_controller.rb
39
40
  - app/controllers/caboose_rets/residential_controller.rb
40
41
  - app/helpers/caboose_rets/application_helper.rb
@@ -62,6 +63,7 @@ files:
62
63
  - app/views/caboose_rets/commercial/details.html.erb
63
64
  - app/views/caboose_rets/commercial/index.html.erb
64
65
  - app/views/caboose_rets/open_houses/admin_new.html.erb
66
+ - app/views/caboose_rets/residential/_search_form.html.erb
65
67
  - app/views/caboose_rets/residential/admin_edit.html.erb
66
68
  - app/views/caboose_rets/residential/admin_index.html.erb
67
69
  - app/views/caboose_rets/residential/details.html.erb
@@ -111,7 +113,8 @@ files:
111
113
  - test/integration/navigation_test.rb
112
114
  - test/test_helper.rb
113
115
  homepage: http://github.com/williambarry007/caboose-rets
114
- licenses: []
116
+ licenses:
117
+ - MIT
115
118
  metadata: {}
116
119
  post_install_message:
117
120
  rdoc_options: []