caboose-rets 0.0.2

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.
Files changed (81) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +4 -0
  4. data/Rakefile +38 -0
  5. data/app/controllers/caboose_rets/agents_controller.rb +169 -0
  6. data/app/controllers/caboose_rets/application_controller.rb +6 -0
  7. data/app/controllers/caboose_rets/commercial_controller.rb +281 -0
  8. data/app/controllers/caboose_rets/land_controller.rb +69 -0
  9. data/app/controllers/caboose_rets/open_houses_controller.rb +60 -0
  10. data/app/controllers/caboose_rets/residential_controller.rb +108 -0
  11. data/app/helpers/caboose_rets/application_helper.rb +4 -0
  12. data/app/models/caboose_rets/agent.rb +65 -0
  13. data/app/models/caboose_rets/commercial_property.rb +214 -0
  14. data/app/models/caboose_rets/land_property.rb +143 -0
  15. data/app/models/caboose_rets/media.rb +23 -0
  16. data/app/models/caboose_rets/multi_family_property.rb +198 -0
  17. data/app/models/caboose_rets/office.rb +27 -0
  18. data/app/models/caboose_rets/open_house.rb +19 -0
  19. data/app/models/caboose_rets/residential_property.rb +236 -0
  20. data/app/models/caboose_rets/rets_importer.rb +303 -0
  21. data/app/models/caboose_rets/rets_plugin.rb +26 -0
  22. data/app/views/caboose_rets/agents/_admin_top_nav.html.erb +7 -0
  23. data/app/views/caboose_rets/agents/admin_edit.html.erb +28 -0
  24. data/app/views/caboose_rets/agents/admin_edit_bio.html.erb +31 -0
  25. data/app/views/caboose_rets/agents/admin_edit_contact_info.html.erb +31 -0
  26. data/app/views/caboose_rets/agents/admin_edit_mls_info.html.erb +71 -0
  27. data/app/views/caboose_rets/agents/admin_index.html.erb +48 -0
  28. data/app/views/caboose_rets/agents/details.html.erb +140 -0
  29. data/app/views/caboose_rets/agents/index.html.erb +163 -0
  30. data/app/views/caboose_rets/agents/listings.html.erb +121 -0
  31. data/app/views/caboose_rets/commercial/admin_edit.html.erb +452 -0
  32. data/app/views/caboose_rets/commercial/admin_index.html.erb +46 -0
  33. data/app/views/caboose_rets/commercial/details.html.erb +134 -0
  34. data/app/views/caboose_rets/commercial/index.html.erb +87 -0
  35. data/app/views/caboose_rets/open_houses/admin_new.html.erb +31 -0
  36. data/app/views/caboose_rets/residential/admin_edit.html.erb +250 -0
  37. data/app/views/caboose_rets/residential/admin_index.html.erb +44 -0
  38. data/app/views/caboose_rets/residential/details.html.erb +139 -0
  39. data/app/views/caboose_rets/residential/index.html.erb +102 -0
  40. data/app/views/caboose_rets/residential/residential_not_exists.html.erb +15 -0
  41. data/app/views/caboose_rets/residential/test_form.html.erb +4 -0
  42. data/config/routes.rb +87 -0
  43. data/lib/caboose-rets.rb +4 -0
  44. data/lib/caboose_rets/caboose_rets_helper.rb +2 -0
  45. data/lib/caboose_rets/engine.rb +7 -0
  46. data/lib/caboose_rets/version.rb +3 -0
  47. data/lib/tasks/caboose_rets.rake +855 -0
  48. data/test/caboose_test.rb +7 -0
  49. data/test/dummy/README.rdoc +261 -0
  50. data/test/dummy/Rakefile +7 -0
  51. data/test/dummy/app/assets/javascripts/application.js +15 -0
  52. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  53. data/test/dummy/app/controllers/application_controller.rb +3 -0
  54. data/test/dummy/app/helpers/application_helper.rb +2 -0
  55. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  56. data/test/dummy/config.ru +4 -0
  57. data/test/dummy/config/application.rb +59 -0
  58. data/test/dummy/config/boot.rb +10 -0
  59. data/test/dummy/config/database.yml +25 -0
  60. data/test/dummy/config/environment.rb +5 -0
  61. data/test/dummy/config/environments/development.rb +37 -0
  62. data/test/dummy/config/environments/production.rb +67 -0
  63. data/test/dummy/config/environments/test.rb +37 -0
  64. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  65. data/test/dummy/config/initializers/inflections.rb +15 -0
  66. data/test/dummy/config/initializers/mime_types.rb +5 -0
  67. data/test/dummy/config/initializers/secret_token.rb +7 -0
  68. data/test/dummy/config/initializers/session_store.rb +8 -0
  69. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  70. data/test/dummy/config/locales/en.yml +5 -0
  71. data/test/dummy/config/routes.rb +4 -0
  72. data/test/dummy/db/test.sqlite3 +0 -0
  73. data/test/dummy/log/test.log +25 -0
  74. data/test/dummy/public/404.html +26 -0
  75. data/test/dummy/public/422.html +26 -0
  76. data/test/dummy/public/500.html +25 -0
  77. data/test/dummy/public/favicon.ico +0 -0
  78. data/test/dummy/script/rails +6 -0
  79. data/test/integration/navigation_test.rb +10 -0
  80. data/test/test_helper.rb +15 -0
  81. metadata +169 -0
@@ -0,0 +1,134 @@
1
+ <% p = @property %>
2
+
3
+ <% content_for :caboose_css do %>
4
+ <style type="text/css">
5
+ .realtor_info { background-color: white; padding: 10px; margin-bottom: 20px; text-align: center; border: 1px solid #d0d0d0;}
6
+ </style>
7
+ <% end %>
8
+
9
+ <div class="l-wrapper">
10
+ <div class="l-section">
11
+ <div class="l-sidebar-border inflate-tenor-baritone">
12
+ <div class="sidebar-aside">
13
+ <% if @agent %>
14
+ <div class="realtor_info">
15
+ <h4>Advantage Agent</h4>
16
+ <img src="https://s3.amazonaws.com/advantagerealtygroup.com/agents/<%= @agent.id %>_thumb.jpg?<%= DateTime.now.strftime('%F') %>" alt="<%= @agent.first_name %> <%= @agent.last_name %>" />
17
+ <br />
18
+ <a href="/agents/<%= @agent.la_code %>"><%= @agent.first_name %> <%= @agent.last_name %></a><br>
19
+ <a href="tel:<%= @agent.car_phone %>"><%= @agent.car_phone %></a>
20
+ </div>
21
+ <% end %>
22
+ <% if p.sale_lease %>
23
+ <h4 class="h-type-highlight"><%= p.sale_lease %></h4>
24
+ <% end %>
25
+
26
+ <address class="h-type-h5">
27
+ <% if p.street_num && p.street_name %> <%= p.street_num %> <%= p.street_name %> <% end %><br />
28
+ <%= p.city %>, <%= p.state %> <% if p.zip != '0' %> <%= p.zip %>
29
+ </address>
30
+
31
+ <p id="price" class="h-space-mvs h-type-highlight h-type-h4"><%=h number_to_currency(p.current_price, :precision => 0) %></p>
32
+
33
+ <% if p.sale_lease %>
34
+ <p id="mls" class="h-space-mvs h-type-highlight h-type-h4">MLS #<%=p.mls_acct%></p>
35
+ <% end %>
36
+
37
+ <% if p.street_num && p.street_name && p.city && p.state && p.zip %>
38
+ <div class="m-map-small h-border h-space-mbm" address="<%=p.street_num%> <%=p.street_name%> <%=p.city%>, <%=p.state%> <%=p.zip%>"></div>
39
+ <% end %>
40
+
41
+
42
+
43
+ <h4 class="h-space-mvt">Directions</h4>
44
+ <p class="paragraph"><%=p.directions%></p>
45
+
46
+ <% if @agent %>
47
+ <h4 class="h-space-mvt">Contact <%= @agent.first_name %> <%= @agent.last_name %> </h4>
48
+ <% else %>
49
+ <h4 class="h-space-mvt">Contact Advantage</h4>
50
+ <% end %>
51
+
52
+ <%= form_for @message, :url => "/contact/create", :html => {:class => "m-form", :'accept-charset' => "utf-8", :method => "POST" } do |f| %>
53
+
54
+ <%= f.text_field :name, :placeholder => "Name", :value => "", :id => "contact_name", :maxlength => "150" %>
55
+ <%= f.text_field :email, :placeholder => "Email", :value => "", :id => "contact_addres", :maxlength => "150" %>
56
+ <%= f.text_area :body, :placeholder => "Message", :cols => "50", :rows => "4", :id => "contact_message", :class => "contact_message" %>
57
+
58
+ <p class="h-space-mvs">
59
+ Please enter the word you see in the image below:
60
+ <img src="/images/captchas/1374955003.9265.jpg" width="140" height="30" style="border:0;" alt=" " />
61
+ </p>
62
+ <p><input type="text" name="captcha" /></p>
63
+
64
+ <input class="m-btn-red btn-large h-float-right h-space-mts" type="submit" value="Send" />
65
+ <% end %>
66
+ </div> <!-- .sidebar-aside -->
67
+
68
+ <div class="sidebar-body">
69
+ <% tiny_img = "https://s3.amazonaws.com/advantagerealtygroup.com/residential/#{@property.mls_acct}_%d_tiny.jpg" %>
70
+ <% large_img = "https://s3.amazonaws.com/advantagerealtygroup.com/residential/#{@property.mls_acct}_%d_large.jpg" %>
71
+
72
+ <% if p.sale_lease %>
73
+ <figure class="m-banner" style="background-image: url('https://s3.amazonaws.com/advantagerealtygroup.com/commercial/<%= p.mls_acct %>_1_thumb.jpg');"> <!-- url(rets_images/$category/{$mls}_1.jpg) -->
74
+ <figure class="banner-sub" style="background-image: url(http://placehold.it/480x320); display:none;"></figure> <!-- url(rets_images/$category/{$mls}_2.jpg) -->
75
+ </figure> <!-- .m-banner -->
76
+ <% else %>
77
+ <div class="photos" style="text-align: center;">
78
+ <% if @property.photo_count.to_i >= 1 %>
79
+ <a class="photo" style="display: block; margin: 25px;" href="<%= large_img % 1 %>"><img src="<%= large_img % 1 %>"/></a>
80
+ <div style="display: block;">
81
+ <% (2..@property.photo_count.to_i).each do |i| %>
82
+ <% if i != 2 && (i - 2) % 8 == 0 %></div><div style="display: block;"><% end %>
83
+ <a class="photo" style="float: left; display: block; width: 12.5%; padding: 2px;" href="<%= large_img % i %>">
84
+ <img style="display: block; width: 100%;" src="<%= tiny_img % i %>"/>
85
+ </a>
86
+ <% end %>
87
+ </div>
88
+ <% end %>
89
+ </div>
90
+ <div style="clear: both;"></div>
91
+ <% end %>
92
+
93
+ <p class="paragraph"><%=p.remarks%></p>
94
+
95
+ <h4 class="h-type-standard h-type-highlight h-type-caps">Property Details</h4>
96
+
97
+ <ul class="m-list-bullet h-space-mts">
98
+ <% if p.price_sqft != "" %><li><strong>Square Footage</strong>: <%=h number_to_currency p.price_sqft%></li><% end %>
99
+ <% if p.acreage != "" %><li><strong>Acreage</strong>: <%=p.acreage%></li><% end %>
100
+ </ul> <!-- .m-list-bullet -->
101
+
102
+ <h4 class="h-type-standard h-type-highlight h-type-caps h-space-mts">Additional Info</h4>
103
+
104
+ <ul>
105
+ <li><strong>Interior</strong>: <%=p.ftr_interior%></li>
106
+ <li><strong>Cooling</strong>: <%=p.ftr_cooling%></li>
107
+ <li><strong>Heating</strong>: <%=p.ftr_heating%></li>
108
+ <li><strong>Year Built</strong>: <%=p.year_built%></li>
109
+ </ul>
110
+ <br>
111
+ <% if p.virtual_tour %><a href='<%= p.virtual_tour %>' target='_blank'>Virtual Tour</a><% end %>
112
+
113
+ <a data-pin-do="buttonPin" data-pin-config="beside" href="//pinterest.com/pin/create/button/?url=<%= request.original_url %>&amp;media=<%= large_img % 1 %>" ></a>
114
+ </div> <!-- .sidebar-body -->
115
+ </div> <!-- .l-sidebar -->
116
+ </div> <!-- .body-section -->
117
+ </div> <!-- .l-wrapper -->
118
+ <% end %>
119
+
120
+
121
+ <div class="body-sink"></div>
122
+
123
+ <% content_for :caboose_js do %>
124
+ <%= javascript_include_tag '//assets.pinterest.com/js/pinit.js' %>
125
+ <script type="text/javascript">
126
+ $(document).ready(function(){
127
+ $('.photo').colorbox({rel:'photo'});
128
+ });
129
+
130
+ <% unless flash[:notice].blank? %>
131
+ alert('<%= flash[:notice] %>');
132
+ <% end %>
133
+ </script>
134
+ <% end %>
@@ -0,0 +1,87 @@
1
+ <div class="l-wrapper">
2
+ <div class="l-sidebar-border inflate-tenor-baritone h-space-pvm">
3
+ <div class="sidebar-body l-grid-border">
4
+ <p></p>
5
+ <a class="m-btn" href="/search/commercial">Search Commercial Listings</a>
6
+ <div class="l-grid inflate-baritone-bass listing">
7
+
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="/commercial/<%= p.mls_acct %>/details"><img src='https://s3.amazonaws.com/advantagerealtygroup.com/commercial/<%= p.mls_acct %>_1_thumb.jpg' width="400" /></a><br>
15
+ <div id='list-meta'>
16
+ <span class='address'><%= p.street_num %> <%= p.street_name.titleize %></span><br> <!-- , {city}, {state} {zip} -->
17
+ </div>
18
+ </div>
19
+ <div class='grid-unit-1of4 list-part' id='list2'>
20
+ <% if p.current_price != 0 %>
21
+ <span class='price'><%=h number_to_currency(p.current_price, :precision => 0) %></span><br>
22
+ <% end %>
23
+ <div class="info-meta">
24
+ <% if p.price_sqft != "" %>
25
+ <span class='list-info'>Price/Sq. ft: <span class='sqftprice'><%=h number_to_currency p.price_sqft %></span></span><br>
26
+ <% end %>
27
+ </div>
28
+ <span>MLS#: <%= p.mls_acct %></span>
29
+ </div>
30
+ <div class='grid-unit-1of4 list-part' id='list3'>
31
+ <div class='desc-container'><span class='description'><%= p.remarks %></span></div>
32
+ </div>
33
+ <div class='grid-unit-1of4 list-part' id='list4'>
34
+ <a href="/commercial/<%= p.mls_acct %>/details" class="m-btn-ornate">
35
+ <div class="btn-inner see-more">MORE DETAILS</div>
36
+ </a>
37
+ <br>
38
+ <% if p.lo_code == '46' && p.agent %>
39
+ <a href="/agents/<%=p.agent.la_code %>" class="m-btn-ornate">
40
+ <div class="btn-inner contact-btn">Contact <%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %></div>
41
+ </a>
42
+ <% else %>
43
+ <a href="/agents/048540000" class="m-btn-ornate"><div class="btn-inner contact-btn">Contact Advantage</div></a>
44
+ <% end %>
45
+ <br>
46
+ <% if p.virtual_tour %>
47
+ <a href="<%= p.virtual_tour %>" class="m-btn-ornate"><div class="btn-inner contact-btn">Take Virtual Tour</div></a>
48
+ <% end %>
49
+ </div>
50
+ </div>
51
+ <% end %>
52
+ <%= @gen.generate.html_safe %>
53
+ <% end %>
54
+
55
+ </div>
56
+ </div> <!-- .sidebar-body -->
57
+ </div> <!-- .l-sidebar -->
58
+ </div> <!-- .l-wrapper -->
59
+
60
+ <% content_for :caboose_js do %>
61
+ <script type='text/javascript'>
62
+ function toTitleCase(str) {
63
+ return str.replace(/\w\S*/g, function(txt) {
64
+ if (txt != "of" && txt != "<br>") {
65
+ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
66
+ } else {
67
+ return txt
68
+ }
69
+ });
70
+ }
71
+
72
+ $.fn.digits = function(){
73
+ return this.each(function(){
74
+ $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") );
75
+ });
76
+ }
77
+ function precise_round(num, decimals){
78
+ return Math.round(num * Math.pow(10, decimals)) / Math.pow(10,decimals);
79
+ }
80
+ $('.price').digits()
81
+ $.each($(".sqftprice") , function() { $(this).text(precise_round($(this).text(),2)) });
82
+ //$.each($(".advantage_agent") , function() { $(this).text(toTitleCase($(this).text())) });
83
+ //$.each($(".contact-btn") , function() { $(this).text(toTitleCase($(this).text())) });
84
+ //$.each($(".address") , function() { $(this).text(toTitleCase($(this).text())) });
85
+ //$.each($(".school") , function() { $(this).text(toTitleCase($(this).text())) });
86
+ </script>
87
+ <% end %>
@@ -0,0 +1,31 @@
1
+
2
+ <h1>New Open House</h1>
3
+ <p><input type='text' id='mls' name='mls' placeholder='Property MLS#' style="width: 400px;" /></p>
4
+ <p>Open House on <input type='text' id='date_time' name='date_time' placeholder='Date and Time' style="width: 400px;" /> at [address]</p>
5
+ <div id='message'></div>
6
+ <p><input type='submit' value='Add Post' onclick='add_open_house();' /></p>
7
+
8
+ <% content_for :caboose_js do %>
9
+ <%= javascript_include_tag "caboose/model/all" %>
10
+ <script type='text/javascript'>
11
+
12
+ function add_open_house()
13
+ {
14
+ $('#message').html("<p class='loading'>Adding post...</p>");
15
+ $.ajax({
16
+ url: '/admin/open-houses',
17
+ type: 'post',
18
+ data: {
19
+ authenticity_token: "<%= form_authenticity_token %>",
20
+ mls: $('#mls').val(),
21
+ date_time: $('#date_time').val()
22
+ },
23
+ success: function(resp) {
24
+ if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
25
+ if (resp.redirect) window.location = resp.redirect
26
+ }
27
+ });
28
+ }
29
+
30
+ </script>
31
+ <% end %>
@@ -0,0 +1,250 @@
1
+ <%
2
+ p = @property
3
+ %>
4
+ <h1>Edit Residential Property</h1>
5
+
6
+ <p>
7
+ <input type='button' value='< Back' onclick="window.location='/admin/residential';" />
8
+ <input type='button' value='Manually Refresh from MLS' onclick="refresh_property_from_mls('<%= p.mls_acct %>');" />
9
+ </p>
10
+ <div id='message'><%= raw flash[:message] ? flash[:message] : "" %></div>
11
+
12
+ <table class='data'>
13
+ <tr><td>acreage </td><td><%= p.acreage %></td></tr>
14
+ <tr><td>agent_notes </td><td><%= p.agent_notes %></td></tr>
15
+ <tr><td>agent_other_contact_desc </td><td><%= p.agent_other_contact_desc %></td></tr>
16
+ <tr><td>agent_other_contact_phone </td><td><%= p.agent_other_contact_phone %></td></tr>
17
+ <tr><td>annual_taxes </td><td><%= p.annual_taxes %></td></tr>
18
+ <tr><td>area </td><td><%= p.area %></td></tr>
19
+ <tr><td>avm_automated_sales_disabled </td><td><%= p.avm_automated_sales_disabled %></td></tr>
20
+ <tr><td>avm_instant_valuation_disabled</td><td><%= p.avm_instant_valuation_disabled %></td></tr>
21
+ <tr><td>basement_yn </td><td><%= p.basement_yn %></td></tr>
22
+ <tr><td>baths </td><td><%= p.baths %></td></tr>
23
+ <tr><td>baths_full </td><td><%= p.baths_full %></td></tr>
24
+ <tr><td>baths_half </td><td><%= p.baths_half %></td></tr>
25
+ <tr><td>bedrooms </td><td><%= p.bedrooms %></td></tr>
26
+ <tr><td>bom_date </td><td><%= p.bom_date %></td></tr>
27
+ <tr><td>book_number </td><td><%= p.book_number %></td></tr>
28
+ <tr><td>book_page </td><td><%= p.book_page %></td></tr>
29
+ <tr><td>book_type </td><td><%= p.book_type %></td></tr>
30
+ <tr><td>buyer_broker </td><td><%= p.buyer_broker %></td></tr>
31
+ <tr><td>buyer_broker_type </td><td><%= p.buyer_broker_type %></td></tr>
32
+ <tr><td>buyer_name </td><td><%= p.buyer_name %></td></tr>
33
+ <tr><td>category </td><td><%= p.category %></td></tr>
34
+ <tr><td>city </td><td><%= p.city %></td></tr>
35
+ <tr><td>city_code </td><td><%= p.city_code %></td></tr>
36
+ <tr><td>co_la_code </td><td><%= p.co_la_code %></td></tr>
37
+ <tr><td>co_lo_code </td><td><%= p.co_lo_code %></td></tr>
38
+ <tr><td>co_sa_code </td><td><%= p.co_sa_code %></td></tr>
39
+ <tr><td>co_so_code </td><td><%= p.co_so_code %></td></tr>
40
+ <tr><td>construction_date_comp </td><td><%= p.construction_date_comp %></td></tr>
41
+ <tr><td>construction_status </td><td><%= p.construction_status %></td></tr>
42
+ <tr><td>contacts </td><td><%= p.contacts %></td></tr>
43
+ <tr><td>contr_broker </td><td><%= p.contr_broker %></td></tr>
44
+ <tr><td>contr_broker_type </td><td><%= p.contr_broker_type %></td></tr>
45
+ <tr><td>converted </td><td><%= p.converted %></td></tr>
46
+ <tr><td>county </td><td><%= p.county %></td></tr>
47
+ <tr><td>current_price </td><td><%= p.current_price %></td></tr>
48
+ <tr><td>currentlease_yn </td><td><%= p.currentlease_yn %></td></tr>
49
+ <tr><td>date_created </td><td><%= p.date_created %></td></tr>
50
+ <tr><td>date_modified </td><td><%= p.date_modified %></td></tr>
51
+ <tr><td>df_yn </td><td><%= p.df_yn %></td></tr>
52
+ <tr><td>directions </td><td><%= p.directions %></td></tr>
53
+ <tr><td>display_address_yn </td><td><%= p.display_address_yn %></td></tr>
54
+ <tr><td>dom </td><td><%= p.dom %></td></tr>
55
+ <tr><td>elem_school </td><td><%= p.elem_school %></td></tr>
56
+ <tr><td>expire_date </td><td><%= p.expire_date %></td></tr>
57
+ <tr><td>flood_plain </td><td><%= p.flood_plain %></td></tr>
58
+ <tr><td>foreclosure_yn </td><td><%= p.foreclosure_yn %></td></tr>
59
+ <tr><td>ftr_age </td><td><%= p.ftr_age %></td></tr>
60
+ <tr><td>ftr_appliances </td><td><%= p.ftr_appliances %></td></tr>
61
+ <tr><td>ftr_attic </td><td><%= p.ftr_attic %></td></tr>
62
+ <tr><td>ftr_basement </td><td><%= p.ftr_basement %></td></tr>
63
+ <tr><td>ftr_citycommunit </td><td><%= p.ftr_citycommunit %></td></tr>
64
+ <tr><td>ftr_construction </td><td><%= p.ftr_construction %></td></tr>
65
+ <tr><td>ftr_cooling </td><td><%= p.ftr_cooling %></td></tr>
66
+ <tr><td>ftr_diningroom </td><td><%= p.ftr_diningroom %></td></tr>
67
+ <tr><td>ftr_docs_on_file </td><td><%= p.ftr_docs_on_file %></td></tr>
68
+ <tr><td>ftr_drive </td><td><%= p.ftr_drive %></td></tr>
69
+ <tr><td>ftr_exterior </td><td><%= p.ftr_exterior %></td></tr>
70
+ <tr><td>ftr_fireplace </td><td><%= p.ftr_fireplace %></td></tr>
71
+ <tr><td>ftr_garage </td><td><%= p.ftr_garage %></td></tr>
72
+ <tr><td>ftr_heating </td><td><%= p.ftr_heating %></td></tr>
73
+ <tr><td>ftr_hoaamenities </td><td><%= p.ftr_hoaamenities %></td></tr>
74
+ <tr><td>ftr_hoaincludes </td><td><%= p.ftr_hoaincludes %></td></tr>
75
+ <tr><td>ftr_interior </td><td><%= p.ftr_interior %></td></tr>
76
+ <tr><td>ftr_landscaping </td><td><%= p.ftr_landscaping %></td></tr>
77
+ <tr><td>ftr_laundry </td><td><%= p.ftr_laundry %></td></tr>
78
+ <tr><td>ftr_lotdesc </td><td><%= p.ftr_lotdesc %></td></tr>
79
+ <tr><td>ftr_miscellaneous </td><td><%= p.ftr_miscellaneous %></td></tr>
80
+ <tr><td>ftr_pool </td><td><%= p.ftr_pool %></td></tr>
81
+ <tr><td>ftr_porchpatio </td><td><%= p.ftr_porchpatio %></td></tr>
82
+ <tr><td>ftr_possession </td><td><%= p.ftr_possession %></td></tr>
83
+ <tr><td>ftr_roof </td><td><%= p.ftr_roof %></td></tr>
84
+ <tr><td>ftr_sewer </td><td><%= p.ftr_sewer %></td></tr>
85
+ <tr><td>ftr_showing </td><td><%= p.ftr_showing %></td></tr>
86
+ <tr><td>ftr_terms </td><td><%= p.ftr_terms %></td></tr>
87
+ <tr><td>ftr_warrantyprogrm </td><td><%= p.ftr_warrantyprogrm %></td></tr>
88
+ <tr><td>ftr_waterheater </td><td><%= p.ftr_waterheater %></td></tr>
89
+ <tr><td>ftr_watersupply </td><td><%= p.ftr_watersupply %></td></tr>
90
+ <tr><td>ftr_window_treat </td><td><%= p.ftr_window_treat %></td></tr>
91
+ <tr><td>ftr_windows </td><td><%= p.ftr_windows %></td></tr>
92
+ <tr><td>geo_precision </td><td><%= p.geo_precision %></td></tr>
93
+ <tr><td>georesult </td><td><%= p.georesult %></td></tr>
94
+ <tr><td>high_school </td><td><%= p.high_school %></td></tr>
95
+ <tr><td>hoa_fee </td><td><%= p.hoa_fee %></td></tr>
96
+ <tr><td>hoa_fee_yn </td><td><%= p.hoa_fee_yn %></td></tr>
97
+ <tr><td>hoa_term </td><td><%= p.hoa_term %></td></tr>
98
+ <tr><td>homestead_yn </td><td><%= p.homestead_yn %></td></tr>
99
+ <tr><td>internet_yn </td><td><%= p.internet_yn %></td></tr>
100
+ <tr><td>la_code </td><td><%= p.la_code %></td></tr>
101
+ <tr><td>lease_exp_date </td><td><%= p.lease_exp_date %></td></tr>
102
+ <tr><td>legals </td><td><%= p.legals %></td></tr>
103
+ <tr><td>levels </td><td><%= p.levels %></td></tr>
104
+ <tr><td>list_date </td><td><%= p.list_date %></td></tr>
105
+ <tr><td>list_price </td><td><%= p.list_price %></td></tr>
106
+ <tr><td>listing_type </td><td><%= p.listing_type %></td></tr>
107
+ <tr><td>lo_code </td><td><%= p.lo_code %></td></tr>
108
+ <tr><td>lot_dimensions </td><td><%= p.lot_dimensions %></td></tr>
109
+ <tr><td>master_bed_lvl </td><td><%= p.master_bed_lvl %></td></tr>
110
+ <tr><td>media_flag </td><td><%= p.media_flag %></td></tr>
111
+ <tr><td>middle_school </td><td><%= p.middle_school %></td></tr>
112
+ <tr><td>mls_acct </td><td><%= p.mls_acct %></td></tr>
113
+ <tr><td>off_mkt_date </td><td><%= p.off_mkt_date %></td></tr>
114
+ <tr><td>off_mkt_days </td><td><%= p.off_mkt_days %></td></tr>
115
+ <tr><td>office_notes </td><td><%= p.office_notes %></td></tr>
116
+ <tr><td>onsite_days_hours </td><td><%= p.onsite_days_hours %></td></tr>
117
+ <tr><td>onsite_yn </td><td><%= p.onsite_yn %></td></tr>
118
+ <tr><td>orig_lp </td><td><%= p.orig_lp %></td></tr>
119
+ <tr><td>other_fee </td><td><%= p.other_fee %></td></tr>
120
+ <tr><td>other_fee_type </td><td><%= p.other_fee_type %></td></tr>
121
+ <tr><td>outlier_yn </td><td><%= p.outlier_yn %></td></tr>
122
+ <tr><td>owner_name </td><td><%= p.owner_name %></td></tr>
123
+ <tr><td>owner_phone </td><td><%= p.owner_phone %></td></tr>
124
+ <tr><td>parcel_id </td><td><%= p.parcel_id %></td></tr>
125
+ <tr><td>pending_date </td><td><%= p.pending_date %></td></tr>
126
+ <tr><td>photo_count </td><td><%= p.photo_count %></td></tr>
127
+ <tr><td>photo_date_modified </td><td><%= p.photo_date_modified %></td></tr>
128
+ <tr><td>price_change_date </td><td><%= p.price_change_date %></td></tr>
129
+ <tr><td>price_sqft </td><td><%= p.price_sqft %></td></tr>
130
+ <tr><td>proj_close_date </td><td><%= p.proj_close_date %></td></tr>
131
+ <tr><td>prop_id </td><td><%= p.prop_id %></td></tr>
132
+ <tr><td>prop_type </td><td><%= p.prop_type %></td></tr>
133
+ <tr><td>remarks </td><td><%= p.remarks %></td></tr>
134
+ <tr><td>right_red_date </td><td><%= p.right_red_date %></td></tr>
135
+ <tr><td>rm_bath1 </td><td><%= p.rm_bath1 %></td></tr>
136
+ <tr><td>rm_bath1_desc </td><td><%= p.rm_bath1_desc %></td></tr>
137
+ <tr><td>rm_bath2 </td><td><%= p.rm_bath2 %></td></tr>
138
+ <tr><td>rm_bath2_desc </td><td><%= p.rm_bath2_desc %></td></tr>
139
+ <tr><td>rm_bath3 </td><td><%= p.rm_bath3 %></td></tr>
140
+ <tr><td>rm_bath3_desc </td><td><%= p.rm_bath3_desc %></td></tr>
141
+ <tr><td>rm_br1 </td><td><%= p.rm_br1 %></td></tr>
142
+ <tr><td>rm_br1_desc </td><td><%= p.rm_br1_desc %></td></tr>
143
+ <tr><td>rm_br2 </td><td><%= p.rm_br2 %></td></tr>
144
+ <tr><td>rm_br2_desc </td><td><%= p.rm_br2_desc %></td></tr>
145
+ <tr><td>rm_br3 </td><td><%= p.rm_br3 %></td></tr>
146
+ <tr><td>rm_br3_desc </td><td><%= p.rm_br3_desc %></td></tr>
147
+ <tr><td>rm_br4 </td><td><%= p.rm_br4 %></td></tr>
148
+ <tr><td>rm_br4_desc </td><td><%= p.rm_br4_desc %></td></tr>
149
+ <tr><td>rm_br5 </td><td><%= p.rm_br5 %></td></tr>
150
+ <tr><td>rm_br5_desc </td><td><%= p.rm_br5_desc %></td></tr>
151
+ <tr><td>rm_brkfst </td><td><%= p.rm_brkfst %></td></tr>
152
+ <tr><td>rm_brkfst_desc </td><td><%= p.rm_brkfst_desc %></td></tr>
153
+ <tr><td>rm_den </td><td><%= p.rm_den %></td></tr>
154
+ <tr><td>rm_den_desc </td><td><%= p.rm_den_desc %></td></tr>
155
+ <tr><td>rm_dining </td><td><%= p.rm_dining %></td></tr>
156
+ <tr><td>rm_dining_desc </td><td><%= p.rm_dining_desc %></td></tr>
157
+ <tr><td>rm_family </td><td><%= p.rm_family %></td></tr>
158
+ <tr><td>rm_family_desc </td><td><%= p.rm_family_desc %></td></tr>
159
+ <tr><td>rm_foyer </td><td><%= p.rm_foyer %></td></tr>
160
+ <tr><td>rm_foyer_desc </td><td><%= p.rm_foyer_desc %></td></tr>
161
+ <tr><td>rm_great </td><td><%= p.rm_great %></td></tr>
162
+ <tr><td>rm_great_desc </td><td><%= p.rm_great_desc %></td></tr>
163
+ <tr><td>rm_kitchen </td><td><%= p.rm_kitchen %></td></tr>
164
+ <tr><td>rm_kitchen_desc </td><td><%= p.rm_kitchen_desc %></td></tr>
165
+ <tr><td>rm_kitchen2 </td><td><%= p.rm_kitchen2 %></td></tr>
166
+ <tr><td>rm_kitchen2_desc </td><td><%= p.rm_kitchen2_desc %></td></tr>
167
+ <tr><td>rm_laundry </td><td><%= p.rm_laundry %></td></tr>
168
+ <tr><td>rm_laundry_desc </td><td><%= p.rm_laundry_desc %></td></tr>
169
+ <tr><td>rm_living </td><td><%= p.rm_living %></td></tr>
170
+ <tr><td>rm_living_desc </td><td><%= p.rm_living_desc %></td></tr>
171
+ <tr><td>rm_lrdr </td><td><%= p.rm_lrdr %></td></tr>
172
+ <tr><td>rm_lrdr_desc </td><td><%= p.rm_lrdr_desc %></td></tr>
173
+ <tr><td>rm_master </td><td><%= p.rm_master %></td></tr>
174
+ <tr><td>rm_master_desc </td><td><%= p.rm_master_desc %></td></tr>
175
+ <tr><td>rm_other1 </td><td><%= p.rm_other1 %></td></tr>
176
+ <tr><td>rm_other1_desc </td><td><%= p.rm_other1_desc %></td></tr>
177
+ <tr><td>rm_other1_name </td><td><%= p.rm_other1_name %></td></tr>
178
+ <tr><td>rm_other2 </td><td><%= p.rm_other2 %></td></tr>
179
+ <tr><td>rm_other2_desc </td><td><%= p.rm_other2_desc %></td></tr>
180
+ <tr><td>rm_other2_name </td><td><%= p.rm_other2_name %></td></tr>
181
+ <tr><td>rm_other3 </td><td><%= p.rm_other3 %></td></tr>
182
+ <tr><td>rm_other3_desc </td><td><%= p.rm_other3_desc %></td></tr>
183
+ <tr><td>rm_other3_name </td><td><%= p.rm_other3_name %></td></tr>
184
+ <tr><td>rm_other4 </td><td><%= p.rm_other4 %></td></tr>
185
+ <tr><td>rm_other4_desc </td><td><%= p.rm_other4_desc %></td></tr>
186
+ <tr><td>rm_other4_name </td><td><%= p.rm_other4_name %></td></tr>
187
+ <tr><td>rm_recrm </td><td><%= p.rm_recrm %></td></tr>
188
+ <tr><td>rm_recrm_desc </td><td><%= p.rm_recrm_desc %></td></tr>
189
+ <tr><td>rm_study </td><td><%= p.rm_study %></td></tr>
190
+ <tr><td>rm_study_desc </td><td><%= p.rm_study_desc %></td></tr>
191
+ <tr><td>rm_sun </td><td><%= p.rm_sun %></td></tr>
192
+ <tr><td>rm_sun_desc </td><td><%= p.rm_sun_desc %></td></tr>
193
+ <tr><td>sa_code </td><td><%= p.sa_code %></td></tr>
194
+ <tr><td>sale_lease </td><td><%= p.sale_lease %></td></tr>
195
+ <tr><td>sale_notes </td><td><%= p.sale_notes %></td></tr>
196
+ <tr><td>so_code </td><td><%= p.so_code %></td></tr>
197
+ <tr><td>sold_date </td><td><%= p.sold_date %></td></tr>
198
+ <tr><td>sold_price </td><td><%= p.sold_price %></td></tr>
199
+ <tr><td>sold_terms </td><td><%= p.sold_terms %></td></tr>
200
+ <tr><td>sqft_source </td><td><%= p.sqft_source %></td></tr>
201
+ <tr><td>state </td><td><%= p.state %></td></tr>
202
+ <tr><td>status </td><td><%= p.status %></td></tr>
203
+ <tr><td>status_date </td><td><%= p.status_date %></td></tr>
204
+ <tr><td>status_flag </td><td><%= p.status_flag %></td></tr>
205
+ <tr><td>street_dir </td><td><%= p.street_dir %></td></tr>
206
+ <tr><td>street_name </td><td><%= p.street_name %></td></tr>
207
+ <tr><td>street_num </td><td><%= p.street_num %></td></tr>
208
+ <tr><td>style </td><td><%= p.style %></td></tr>
209
+ <tr><td>sub_agent </td><td><%= p.sub_agent %></td></tr>
210
+ <tr><td>sub_agent_type </td><td><%= p.sub_agent_type %></td></tr>
211
+ <tr><td>subdivision </td><td><%= p.subdivision %></td></tr>
212
+ <tr><td>take_photo_yn </td><td><%= p.take_photo_yn %></td></tr>
213
+ <tr><td>third_party_comm_yn </td><td><%= p.third_party_comm_yn %></td></tr>
214
+ <tr><td>tot_heat_sqft </td><td><%= p.tot_heat_sqft %></td></tr>
215
+ <tr><td>unit_num </td><td><%= p.unit_num %></td></tr>
216
+ <tr><td>upload_source </td><td><%= p.upload_source %></td></tr>
217
+ <tr><td>valuation_yn </td><td><%= p.valuation_yn %></td></tr>
218
+ <tr><td>vt_yn </td><td><%= p.vt_yn %></td></tr>
219
+ <tr><td>waterfront </td><td><%= p.waterfront %></td></tr>
220
+ <tr><td>wf_feet </td><td><%= p.wf_feet %></td></tr>
221
+ <tr><td>withdrawn_date </td><td><%= p.withdrawn_date %></td></tr>
222
+ <tr><td>year_built </td><td><%= p.year_built %></td></tr>
223
+ <tr><td>year_built_source </td><td><%= p.year_built_source %></td></tr>
224
+ <tr><td>zip </td><td><%= p.zip %></td></tr>
225
+ </table>
226
+
227
+ <% content_for :caboose_js do %>
228
+ <%= javascript_include_tag "caboose/model/all" %>
229
+ <script type='text/javascript'>
230
+
231
+ function refresh_property_from_mls(mls_acct)
232
+ {
233
+ modal.autosize("<p class='loading'>Refreshing property info and images from MLS...</p>");
234
+ $.ajax({
235
+ url: '/admin/residential/' + mls_acct + '/refresh',
236
+ success: function(resp) {
237
+ if (resp.error)
238
+ modal.autosize("<p class='note error'>" + resp.error + "</p>");
239
+ if (resp.reload)
240
+ location.reload();
241
+ }
242
+ });
243
+ }
244
+
245
+ var modal = false;
246
+ $(window).load(function() {
247
+ modal = new CabooseModal(800);
248
+ });
249
+ </script>
250
+ <% end %>