caboose-rets 0.0.25 → 0.0.26
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/assets/javascripts/caboose_rets/admin_media.js +78 -28
- data/app/controllers/caboose_rets/commercial_controller.rb +4 -3
- data/app/controllers/caboose_rets/land_controller.rb +3 -2
- data/app/controllers/caboose_rets/media_controller.rb +54 -80
- data/app/controllers/caboose_rets/multi_family_controller.rb +4 -3
- data/app/controllers/caboose_rets/residential_controller.rb +3 -2
- data/app/models/caboose_rets/media.rb +3 -3
- data/app/views/caboose_rets/media/{admin_index.html.erb → admin_property_media.html.erb} +14 -2
- data/config/routes.rb +28 -16
- data/lib/caboose_rets/version.rb +1 -1
- metadata +3 -4
- data/app/views/caboose_rets/media/admin_edit.html.erb +0 -245
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MWEyN2JiOThmNWNkYWE2NTMxOTExOTgzNmZlM2ZlMDA0MjQxYWU1Mw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OGY1MzAzZWRiMjAwZjU5ZGIwNGNlMzA2ODFmNjdjN2QyMjE2MGJkMg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzViZjUwNGY5ZjAzMzMyNjNhN2U2YzY1NmIzMmEzODY0MjAyMGFkYmRiMDRl
|
10
|
+
ZTZkM2RiZjkzZTE0ZmU0MjcxMWNjODVkNmQzMWU0YzVlY2Y4NDc3NjE4ODY0
|
11
|
+
OWJlZWY4Y2NmNDMxMDAzY2RmMzM5MmE2YWZiODFlODA0ZmJiNDA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZDlmZTQ0MWI3NjY0ZmY1NzJiNTRmYzUwMGZjODE2YzI2MmY4NDM3NWU5ODMy
|
14
|
+
YTRhNTQ4ZWU3ODU1YWQ0ZTg1MDE5M2JhMGQ0ZDI0OTQ3MGRkYjMwZDhlODY4
|
15
|
+
NDgyOWZlYTQ3ZTg3NTc2NGU3ODZhNzE4Y2JkYTg3NWVjODI5NTQ=
|
@@ -1,20 +1,27 @@
|
|
1
1
|
|
2
|
-
var MediaController = function(
|
2
|
+
var MediaController = function(options) { this.init(options) };
|
3
3
|
|
4
4
|
MediaController.prototype = {
|
5
|
-
|
5
|
+
|
6
|
+
cdn_domain: false,
|
7
|
+
s3_domain: false,
|
6
8
|
mls_acct: false,
|
7
9
|
|
8
10
|
s3_url: function(url)
|
9
11
|
{
|
10
|
-
|
12
|
+
if (!this.cnd_domain || !this.s3_domain)
|
13
|
+
return url;
|
14
|
+
return url.replace(this.cdn_domain, s3_domain);
|
11
15
|
},
|
12
16
|
|
13
|
-
init: function(
|
17
|
+
init: function(options)
|
14
18
|
{
|
15
|
-
|
19
|
+
for (var thing in options)
|
20
|
+
this[thing] = options[thing];
|
21
|
+
|
16
22
|
var that = this;
|
17
23
|
this.image_add_form();
|
24
|
+
this.file_add_form();
|
18
25
|
this.render_images(function() { that.sortable_images(); });
|
19
26
|
this.render_files(function() { that.sortable_files(); });
|
20
27
|
},
|
@@ -27,7 +34,7 @@ MediaController.prototype = {
|
|
27
34
|
handle: '.sort_handle',
|
28
35
|
update: function(e, ui) {
|
29
36
|
$.ajax({
|
30
|
-
url: '/admin/
|
37
|
+
url: '/admin/properties/' + that.mls_acct + '/media/order',
|
31
38
|
type: 'put',
|
32
39
|
data: $('#images').sortable('serialize', { key: 'sort[]' }),
|
33
40
|
success: function(resp) {}
|
@@ -43,7 +50,7 @@ MediaController.prototype = {
|
|
43
50
|
handle: '.sort_handle',
|
44
51
|
update: function(e, ui) {
|
45
52
|
$.ajax({
|
46
|
-
url: '/admin/
|
53
|
+
url: '/admin/properties/' + that.mls_acct + '/media/order',
|
47
54
|
type: 'put',
|
48
55
|
data: $('#files').sortable('serialize', { key: 'sort[]' }),
|
49
56
|
success: function(resp) {}
|
@@ -66,6 +73,7 @@ MediaController.prototype = {
|
|
66
73
|
$('#image_' + media_id).empty().append(p);
|
67
74
|
return;
|
68
75
|
}
|
76
|
+
$('#image_' + media_id).empty().append($('<p/>').addClass('loading').html('Deleting image...'));
|
69
77
|
$.ajax({
|
70
78
|
url: '/admin/media/' + media_id,
|
71
79
|
type: 'delete',
|
@@ -85,8 +93,8 @@ MediaController.prototype = {
|
|
85
93
|
.append("Are you sure you want to delete the file? ")
|
86
94
|
.append($('<input/>').attr('type', 'button').val('Yes').click(function() { that.delete_file(media_id, true); })).append(" ")
|
87
95
|
.append($('<input/>').attr('type', 'button').val('No').click(function() { that.render_file(media_id); }));
|
88
|
-
$('#
|
89
|
-
$('#
|
96
|
+
$('#file_' + media_id).attr('onclick','').unbind('click');
|
97
|
+
$('#file_' + media_id).empty().append(p);
|
90
98
|
return;
|
91
99
|
}
|
92
100
|
$.ajax({
|
@@ -104,16 +112,17 @@ MediaController.prototype = {
|
|
104
112
|
|
105
113
|
render_images: function(after)
|
106
114
|
{
|
107
|
-
$('#images').empty();
|
115
|
+
$('#images').empty().append($('<p/>').addClass('loading').html('Getting images...'));
|
108
116
|
var that = this;
|
109
117
|
$.ajax({
|
110
|
-
url: '/admin/
|
118
|
+
url: '/admin/properties/' + this.mls_acct + '/photos',
|
111
119
|
success: function(media) {
|
112
|
-
$(
|
120
|
+
$('#images').empty();
|
121
|
+
$(media).each(function(i,m) {
|
113
122
|
$('#images')
|
114
123
|
.append($('<li/>')
|
115
124
|
.attr('id', 'image_container_' + m.id)
|
116
|
-
.append($('<a/>').attr('id', 'image_' + m.id + '_sort_handle' ).addClass('sort_handle' ).append($('<span/>').addClass('ui-icon ui-icon-arrow-
|
125
|
+
.append($('<a/>').attr('id', 'image_' + m.id + '_sort_handle' ).addClass('sort_handle' ).append($('<span/>').addClass('ui-icon ui-icon-arrow-4')))
|
117
126
|
.append($('<a/>').attr('id', 'image_' + m.id + '_delete_handle').addClass('delete_handle').append($('<span/>').addClass('ui-icon ui-icon-close')).click(function(e) { e.preventDefault(); that.delete_image(m.id); }))
|
118
127
|
.append($('<div/>').attr('id', 'image_' + m.id).append($('<img/>').attr('src', that.s3_url(m.image.tiny_url) + '?' + Math.random()).attr('title', m.id + ' ' + m.image.file_name)))
|
119
128
|
);
|
@@ -137,18 +146,21 @@ MediaController.prototype = {
|
|
137
146
|
|
138
147
|
render_files: function(after)
|
139
148
|
{
|
140
|
-
$('#files').empty();
|
149
|
+
$('#files').empty().append($('<p/>').addClass('loading').html('Getting files...'));
|
141
150
|
var that = this;
|
142
151
|
$.ajax({
|
143
|
-
url: '/admin/
|
152
|
+
url: '/admin/properties/' + this.mls_acct + '/files',
|
144
153
|
success: function(media) {
|
154
|
+
$('#files').empty();
|
155
|
+
if (!media || media.length == 0)
|
156
|
+
$('#files').append($('<p/>').html('There are no files right now.'));
|
145
157
|
$(media).each(function(i,m) {
|
146
158
|
$('#files')
|
147
159
|
.append($('<li/>')
|
148
160
|
.attr('id', 'file_container_' + m.id)
|
149
161
|
.append($('<a/>').attr('id', 'file_' + m.id + '_sort_handle' ).addClass('sort_handle' ).append($('<span/>').addClass('ui-icon ui-icon-arrow-2-n-s')))
|
150
162
|
.append($('<a/>').attr('id', 'file_' + m.id + '_delete_handle').addClass('delete_handle').append($('<span/>').addClass('ui-icon ui-icon-close')).click(function(e) { e.preventDefault(); that.delete_file(m.id); }))
|
151
|
-
.append($('<
|
163
|
+
.append($('<div/>').attr('id', 'file_' + m.id).append($('<a/>').attr('href', m.file.url).html(m.file.file_name)))
|
152
164
|
);
|
153
165
|
});
|
154
166
|
if (after) after();
|
@@ -162,7 +174,7 @@ MediaController.prototype = {
|
|
162
174
|
$.ajax({
|
163
175
|
url: '/admin/media/' + media_id,
|
164
176
|
success: function(m) {
|
165
|
-
$('#file_' + m.id).attr('href', m.file.url).html(m.file.file_name);
|
177
|
+
$('#file_' + m.id).empty().append($('<a/>').attr('href', m.file.url).html(m.file.file_name));
|
166
178
|
if (after) after();
|
167
179
|
}
|
168
180
|
});
|
@@ -173,25 +185,63 @@ MediaController.prototype = {
|
|
173
185
|
var that = this;
|
174
186
|
var form = $('<form/>')
|
175
187
|
.attr('id', 'new_image_form')
|
176
|
-
.attr('action', '/admin/
|
188
|
+
.attr('action', '/admin/properties/' + this.mls_acct +'/photos')
|
177
189
|
.attr('method', 'post')
|
178
190
|
.attr('target', 'image_upload_iframe')
|
179
|
-
.attr('enctype', 'multipart/form-data')
|
180
|
-
.append($('<
|
181
|
-
|
182
|
-
$('#
|
183
|
-
$('
|
184
|
-
|
185
|
-
|
191
|
+
.attr('enctype', 'multipart/form-data')
|
192
|
+
.append($('<p/>')
|
193
|
+
.append($('<input/>').attr('type', 'hidden').attr('name', 'authenticity_token').val(this.auth_token))
|
194
|
+
.append($('<input/>').attr('type', 'button').val('Upload New Image').click(function() { $('#image').click(); }))
|
195
|
+
.append($('<input/>').attr('type', 'file').attr('id', 'image').attr('name', 'image')
|
196
|
+
.css({ visibility: 'hidden', width: 0, height: 0 })
|
197
|
+
.change(function() {
|
198
|
+
$('#new_image_form').submit();
|
199
|
+
$('#new_image_form').hide();
|
200
|
+
$('#new_image').append($('<p/>').addClass('loading').html("Adding image..."));
|
201
|
+
})
|
202
|
+
)
|
203
|
+
);
|
186
204
|
$('#new_image').empty()
|
187
|
-
.append(form)
|
188
|
-
.append($('<iframe/>').attr('name', 'image_upload_iframe').css('
|
205
|
+
.append(form)
|
206
|
+
.append($('<iframe/>').attr('name', 'image_upload_iframe').css({ visibility: 'hidden', width: 0, height: 0 }));
|
189
207
|
},
|
190
208
|
|
191
209
|
after_image_upload: function()
|
192
210
|
{
|
193
211
|
this.image_add_form();
|
194
212
|
this.render_images();
|
195
|
-
},
|
213
|
+
},
|
214
|
+
|
215
|
+
file_add_form: function()
|
216
|
+
{
|
217
|
+
var that = this;
|
218
|
+
var form = $('<form/>')
|
219
|
+
.attr('id', 'new_file_form')
|
220
|
+
.attr('action', '/admin/properties/' + this.mls_acct +'/files')
|
221
|
+
.attr('method', 'post')
|
222
|
+
.attr('target', 'file_upload_iframe')
|
223
|
+
.attr('enctype', 'multipart/form-data')
|
224
|
+
.append($('<p/>')
|
225
|
+
.append($('<input/>').attr('type', 'hidden').attr('name', 'authenticity_token').val(this.auth_token))
|
226
|
+
.append($('<input/>').attr('type', 'button').val('Upload New File').click(function() { $('#file').click(); }))
|
227
|
+
.append($('<input/>').attr('type', 'file').attr('id', 'file').attr('name', 'file')
|
228
|
+
.css({ visibility: 'hidden', width: 0, height: 0 })
|
229
|
+
.change(function() {
|
230
|
+
$('#new_file_form').submit();
|
231
|
+
$('#new_file_form').hide();
|
232
|
+
$('#new_file').append($('<p/>').addClass('loading').html("Adding file..."));
|
233
|
+
})
|
234
|
+
)
|
235
|
+
);
|
236
|
+
$('#new_file').empty()
|
237
|
+
.append(form)
|
238
|
+
.append($('<iframe/>').attr('name', 'file_upload_iframe').css({ visibility: 'hidden', width: 0, height: 0 }));
|
239
|
+
},
|
240
|
+
|
241
|
+
after_file_upload: function()
|
242
|
+
{
|
243
|
+
this.file_add_form();
|
244
|
+
this.render_files();
|
245
|
+
}
|
196
246
|
|
197
247
|
};
|
@@ -19,10 +19,11 @@ module CabooseRets
|
|
19
19
|
'address' => '',
|
20
20
|
'status' => 'Active'
|
21
21
|
},{
|
22
|
-
'model' => 'CabooseRets::CommercialProperty',
|
23
|
-
'sort' => 'mls_acct',
|
22
|
+
'model' => 'CabooseRets::CommercialProperty',
|
23
|
+
'sort' => 'current_price DESC, mls_acct',
|
24
24
|
'desc' => false,
|
25
|
-
'
|
25
|
+
'skip' => ['status'],
|
26
|
+
'base_url' => '/commercial/search',
|
26
27
|
'items_per_page' => 10
|
27
28
|
})
|
28
29
|
@properties = @gen.items
|
@@ -59,9 +59,10 @@ module CabooseRets
|
|
59
59
|
'zip' => ''
|
60
60
|
},{
|
61
61
|
'model' => 'CabooseRets::LandProperty',
|
62
|
-
'sort' => 'mls_acct',
|
62
|
+
'sort' => 'current_price DESC, mls_acct',
|
63
63
|
'desc' => false,
|
64
|
-
'
|
64
|
+
'skip' => ['status'],
|
65
|
+
'base_url' => '/land/search',
|
65
66
|
'items_per_page' => 10
|
66
67
|
})
|
67
68
|
|
@@ -2,98 +2,37 @@
|
|
2
2
|
module CabooseRets
|
3
3
|
class MediaController < ApplicationController
|
4
4
|
|
5
|
-
# GET /admin/media/:
|
5
|
+
# GET /admin/media/:id
|
6
6
|
def admin_index
|
7
|
+
return if !user_is_allowed('media', 'view')
|
8
|
+
m = Media.find(params[:id])
|
9
|
+
render :json => media_hash(m)
|
10
|
+
end
|
11
|
+
|
12
|
+
# GET /admin/properties/:mls_acct/media
|
13
|
+
def admin_property_media
|
7
14
|
return if !user_is_allowed('media', 'view')
|
8
15
|
@property = CabooseRets.get_property(params[:mls_acct])
|
9
16
|
render :layout => 'caboose/admin'
|
10
17
|
end
|
11
18
|
|
12
|
-
# GET /admin/
|
19
|
+
# GET /admin/properties/:mls_acct/photos
|
13
20
|
def admin_photos
|
14
21
|
return if !user_is_allowed('media', 'view')
|
15
22
|
media = Media.where(:mls_acct => params[:mls_acct], :media_type => 'Photo').reorder(:media_order).all
|
16
|
-
media2 = media.collect
|
17
|
-
{
|
18
|
-
:id => m.id,
|
19
|
-
:date_modified => m.date_modified,
|
20
|
-
:file_name => m.file_name,
|
21
|
-
:media_id => m.media_id,
|
22
|
-
:media_order => m.media_order,
|
23
|
-
:media_remarks => m.media_remarks,
|
24
|
-
:media_type => m.media_type,
|
25
|
-
:mls_acct => m.mls_acct,
|
26
|
-
:url => m.url,
|
27
|
-
:image => {
|
28
|
-
:file_name => m.image_file_name,
|
29
|
-
:content_type => m.image_content_type,
|
30
|
-
:file_size => m.image_file_size,
|
31
|
-
:update_at => m.image_updated_at,
|
32
|
-
:tiny_url => m.image.url(:tiny),
|
33
|
-
:thumb_url => m.image.url(:thumb),
|
34
|
-
:large_url => m.image.url(:large)
|
35
|
-
},
|
36
|
-
:file => {
|
37
|
-
:file_name => m.file_file_name,
|
38
|
-
:content_type => m.file_content_type,
|
39
|
-
:file_size => m.file_file_size,
|
40
|
-
:update_at => m.file_updated_at,
|
41
|
-
:url => m.file.url
|
42
|
-
}
|
43
|
-
}
|
44
|
-
end
|
23
|
+
media2 = media.collect { |m| media_hash(m) }
|
45
24
|
render :json => media2
|
46
25
|
end
|
47
26
|
|
48
|
-
# GET /admin/
|
27
|
+
# GET /admin/properties/:mls_acct/files
|
49
28
|
def admin_files
|
50
29
|
return if !user_is_allowed('media', 'view')
|
51
30
|
media = Media.where(:mls_acct => params[:mls_acct], :media_type => 'File').reorder(:media_order).all
|
52
|
-
media2 = media.collect
|
53
|
-
{
|
54
|
-
:id => m.id,
|
55
|
-
:date_modified => m.date_modified,
|
56
|
-
:file_name => m.file_name,
|
57
|
-
:media_id => m.media_id,
|
58
|
-
:media_order => m.media_order,
|
59
|
-
:media_remarks => m.media_remarks,
|
60
|
-
:media_type => m.media_type,
|
61
|
-
:mls_acct => m.mls_acct,
|
62
|
-
:url => m.url,
|
63
|
-
:image => {
|
64
|
-
:file_name => m.image_file_name,
|
65
|
-
:content_type => m.image_content_type,
|
66
|
-
:file_size => m.image_file_size,
|
67
|
-
:update_at => m.image_updated_at,
|
68
|
-
:tiny_url => m.image.url(:tiny),
|
69
|
-
:thumb_url => m.image.url(:thumb),
|
70
|
-
:large_url => m.image.url(:large)
|
71
|
-
},
|
72
|
-
:file => {
|
73
|
-
:file_name => m.file_file_name,
|
74
|
-
:content_type => m.file_content_type,
|
75
|
-
:file_size => m.file_file_size,
|
76
|
-
:update_at => m.file_updated_at,
|
77
|
-
:url => m.file.url
|
78
|
-
}
|
79
|
-
}
|
80
|
-
end
|
31
|
+
media2 = media.collect { |m| media_hash(m) }
|
81
32
|
render :json => media2
|
82
33
|
end
|
83
|
-
|
84
|
-
#
|
85
|
-
def admin_new_photo
|
86
|
-
return if !user_is_allowed('media', 'edit')
|
87
|
-
render :layout => 'caboose/admin'
|
88
|
-
end
|
89
|
-
|
90
|
-
# GET /admin/media/:mls_acct/files/new
|
91
|
-
def admin_new_file
|
92
|
-
return if !user_is_allowed('media', 'edit')
|
93
|
-
render :layout => 'caboose/admin'
|
94
|
-
end
|
95
|
-
|
96
|
-
# POST /admin/media/:mls_acct/photos
|
34
|
+
|
35
|
+
# POST /admin/properties/:mls_acct/photos
|
97
36
|
def admin_add_photo
|
98
37
|
return if !user_is_allowed('media', 'edit')
|
99
38
|
|
@@ -112,22 +51,25 @@ module CabooseRets
|
|
112
51
|
render :text => "<script type='text/javascript'>parent.controller.after_image_upload();</script>"
|
113
52
|
end
|
114
53
|
|
115
|
-
# POST /admin/
|
54
|
+
# POST /admin/properties/:msl_acct/files
|
116
55
|
def admin_add_file
|
117
|
-
return if !user_is_allowed('media', 'edit')
|
56
|
+
return if !user_is_allowed('media', 'edit')
|
57
|
+
|
58
|
+
x = Media.maximum(:media_order, :conditions => {:mls_acct => params[:mls_acct]})
|
59
|
+
x = 0 if x.nil?
|
118
60
|
|
119
61
|
m = Media.new
|
120
62
|
m.id = Media.maximum(:id) + 1
|
121
63
|
m.mls_acct = params[:mls_acct]
|
122
64
|
m.date_modified = DateTime.now
|
123
|
-
m.media_order =
|
65
|
+
m.media_order = x + 1
|
124
66
|
m.media_type = 'File'
|
125
67
|
m.file = params[:file]
|
126
68
|
m.save
|
127
69
|
|
128
70
|
render :text => "<script type='text/javascript'>parent.controller.after_file_upload();</script>"
|
129
71
|
end
|
130
|
-
|
72
|
+
|
131
73
|
# DELETE /admin/media/:id
|
132
74
|
def admin_delete
|
133
75
|
return if !user_is_allowed('media', 'delete')
|
@@ -135,12 +77,44 @@ module CabooseRets
|
|
135
77
|
render :json => true
|
136
78
|
end
|
137
79
|
|
138
|
-
# PUT /admin/
|
80
|
+
# PUT /admin/properties/:mls_acct/media/order
|
139
81
|
def admin_update_order
|
140
82
|
return if !user_is_allowed('media', 'delete')
|
141
83
|
Media.reorder(params[:sort], "advantagerealtygroup")
|
142
84
|
render :json => true
|
143
85
|
end
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
def media_hash(m)
|
90
|
+
{
|
91
|
+
:id => m.id,
|
92
|
+
:date_modified => m.date_modified,
|
93
|
+
:file_name => m.file_name,
|
94
|
+
:media_id => m.media_id,
|
95
|
+
:media_order => m.media_order,
|
96
|
+
:media_remarks => m.media_remarks,
|
97
|
+
:media_type => m.media_type,
|
98
|
+
:mls_acct => m.mls_acct,
|
99
|
+
:url => m.url,
|
100
|
+
:image => {
|
101
|
+
:file_name => m.image_file_name,
|
102
|
+
:content_type => m.image_content_type,
|
103
|
+
:file_size => m.image_file_size,
|
104
|
+
:update_at => m.image_updated_at,
|
105
|
+
:tiny_url => m.image.url(:tiny),
|
106
|
+
:thumb_url => m.image.url(:thumb),
|
107
|
+
:large_url => m.image.url(:large)
|
108
|
+
},
|
109
|
+
:file => {
|
110
|
+
:file_name => m.file_file_name,
|
111
|
+
:content_type => m.file_content_type,
|
112
|
+
:file_size => m.file_file_size,
|
113
|
+
:update_at => m.file_updated_at,
|
114
|
+
:url => m.file.url
|
115
|
+
}
|
116
|
+
}
|
117
|
+
end
|
144
118
|
|
145
119
|
end
|
146
120
|
end
|
@@ -41,10 +41,11 @@ module CabooseRets
|
|
41
41
|
'date_modified_lte' => '',
|
42
42
|
'status' => 'Active'
|
43
43
|
},{
|
44
|
-
'model' => 'CabooseRets::MultiFamilyProperty',
|
45
|
-
'sort' => 'current_price
|
44
|
+
'model' => 'CabooseRets::MultiFamilyProperty',
|
45
|
+
'sort' => 'current_price DESC, mls_acct',
|
46
46
|
'desc' => false,
|
47
|
-
'
|
47
|
+
'skip' => ['status'],
|
48
|
+
'base_url' => '/multi-family/search',
|
48
49
|
'items_per_page' => 10
|
49
50
|
})
|
50
51
|
@properties = @gen.items
|
@@ -42,9 +42,10 @@ module CabooseRets
|
|
42
42
|
'status' => 'Active'
|
43
43
|
},{
|
44
44
|
'model' => 'CabooseRets::ResidentialProperty',
|
45
|
-
'sort' => 'current_price
|
45
|
+
'sort' => 'current_price DESC, mls_acct',
|
46
46
|
'desc' => false,
|
47
|
-
'
|
47
|
+
'skip' => ['status'],
|
48
|
+
'base_url' => '/residential/search',
|
48
49
|
'items_per_page' => 10
|
49
50
|
})
|
50
51
|
|
@@ -45,7 +45,7 @@ class CabooseRets::Media < ActiveRecord::Base
|
|
45
45
|
media_ids.each do |id|
|
46
46
|
m = CabooseRets::Media.find(id)
|
47
47
|
(m.image.styles.keys+[:original]).each { |style| b.objects[m.image.path(style)].rename_to "#{m.image.path(style)}.temp" } if m.image
|
48
|
-
|
48
|
+
(m.file.styles.keys+[:original]).each { |style| b.objects[m.file.path(style) ].rename_to "#{m.file.path(style)}.temp" } if m.file
|
49
49
|
end
|
50
50
|
|
51
51
|
# Rename the assets to their new names
|
@@ -53,10 +53,10 @@ class CabooseRets::Media < ActiveRecord::Base
|
|
53
53
|
media_ids.each do |id|
|
54
54
|
m = CabooseRets::Media.find(id)
|
55
55
|
orig_image_name = m.image ? "#{m.image.path}.temp" : nil
|
56
|
-
|
56
|
+
orig_file_name = m.file ? "#{m.image.path}.temp" : nil
|
57
57
|
m.media_order = i
|
58
58
|
(m.image.styles.keys+[:original]).each { |style| b.objects[orig_image_name.gsub("original", style.to_s)].rename_to m.image.path(style) } if m.image
|
59
|
-
|
59
|
+
(m.file.styles.keys+[:original]).each { |style| b.objects[orig_file_name.gsub( "original", style.to_s)].rename_to m.file.path(style) } if m.file
|
60
60
|
m.save
|
61
61
|
i = i + 1
|
62
62
|
end
|
@@ -14,7 +14,14 @@
|
|
14
14
|
<style type="text/css">
|
15
15
|
|
16
16
|
#images { width: 100%; list-style: none; margin: 0; padding: 0; }
|
17
|
-
#images li { background: #fff; position: relative; margin: 3px; padding: 4px; border: 1px solid gray; list-style: none; float: left; }
|
17
|
+
#images li { background: #fff; position: relative; margin: 3px; padding: 4px; border: 1px solid gray; list-style: none; float: left; min-height: 140px; min-width: 100px; }
|
18
|
+
#images li .sort_handle { float: left; }
|
19
|
+
#images li .delete_handle { float: right; }
|
20
|
+
|
21
|
+
#files { width: 100%; list-style: none; margin: 0; padding: 0; }
|
22
|
+
#files li { background: #fff; position: relative; margin: 3px; padding: 4px; border: 1px solid gray; list-style: none; min-height: 20px; }
|
23
|
+
#files li .sort_handle { float: left; margin-right: 4px; }
|
24
|
+
#files li .delete_handle { float: right; }
|
18
25
|
|
19
26
|
</style>
|
20
27
|
<% end %>
|
@@ -24,7 +31,12 @@
|
|
24
31
|
|
25
32
|
var controller = false;
|
26
33
|
$(document).ready(function() {
|
27
|
-
controller = new MediaController(
|
34
|
+
controller = new MediaController({
|
35
|
+
mls_acct: <%= @property.mls_acct %>,
|
36
|
+
auth_token: "<%= raw form_authenticity_token %>",
|
37
|
+
cdn_domain: "d19w6hbyh7z79c.cloudfront.net",
|
38
|
+
s3_domain: "s3.amazonaws.com/advantagerealtygroup"
|
39
|
+
});
|
28
40
|
});
|
29
41
|
|
30
42
|
</script>
|
data/config/routes.rb
CHANGED
@@ -24,9 +24,10 @@ CabooseRets::Engine.routes.draw do
|
|
24
24
|
get "admin/offices/:id" => "offices#admin_edit"
|
25
25
|
get "admin/offices/:id/refresh" => "offices#admin_refresh"
|
26
26
|
|
27
|
-
get "commercial"
|
27
|
+
get "commercial/search:search_params" => "commercial#index", :constraints => {:search_params => /.*/}
|
28
28
|
get "commercial/:mls_acct/details" => "commercial#details"
|
29
29
|
get "commercial/:mls_acct" => "commercial#details"
|
30
|
+
get "commercial" => "commercial#index"
|
30
31
|
get "admin/commercial/new" => "commercial#admin_new"
|
31
32
|
post "admin/commercial" => "commercial#admin_add"
|
32
33
|
get "admin/commercial" => "commercial#admin_index"
|
@@ -35,27 +36,30 @@ CabooseRets::Engine.routes.draw do
|
|
35
36
|
put "admin/commercial/:mls_acct" => "commercial#admin_update"
|
36
37
|
post "admin/commercial/:mls_acct" => "commercial#admin_update"
|
37
38
|
|
38
|
-
get "residential"
|
39
|
+
get "residential/search:search_params" => "residential#index", :constraints => {:search_params => /.*/}
|
39
40
|
get "residential/:mls_acct/details" => "residential#details"
|
40
41
|
get "residential/:mls_acct" => "residential#details"
|
42
|
+
get "residential" => "residential#index"
|
41
43
|
get "admin/residential" => "residential#admin_index"
|
42
44
|
get "admin/residential/:mls_acct/edit" => "residential#admin_edit"
|
43
45
|
get "admin/residential/:mls_acct/refresh" => "residential#admin_refresh"
|
44
46
|
put "admin/residential/:mls_acct" => "residential#admin_update"
|
45
47
|
post "admin/residential/:mls_acct" => "residential#admin_update"
|
46
48
|
|
47
|
-
get "land"
|
49
|
+
get "land/search:search_params" => "land#index", :constraints => {:search_params => /.*/}
|
48
50
|
get "land/:mls_acct/details" => "land#details"
|
49
|
-
get "land/:mls_acct" => "land#details"
|
51
|
+
get "land/:mls_acct" => "land#details"
|
52
|
+
get "land" => "land#index"
|
50
53
|
get "admin/land" => "land#admin_index"
|
51
54
|
get "admin/land/:mls_acct/edit" => "land#admin_edit"
|
52
55
|
get "admin/land/:mls_acct/refresh" => "land#admin_refresh"
|
53
56
|
put "admin/land/:mls_acct" => "land#admin_update"
|
54
57
|
post "admin/land/:mls_acct" => "land#admin_update"
|
55
58
|
|
56
|
-
get "multi-family"
|
59
|
+
get "multi-family/search:search_params" => "multi_family#index", :constraints => {:search_params => /.*/}
|
57
60
|
get "multi-family/:mls_acct/details" => "multi_family#details"
|
58
|
-
get "multi-family/:mls_acct" => "multi_family#details"
|
61
|
+
get "multi-family/:mls_acct" => "multi_family#details"
|
62
|
+
get "multi-family" => "multi_family#index"
|
59
63
|
get "admin/multi-family" => "multi_family#admin_index"
|
60
64
|
get "admin/multi-family/:mls_acct/edit" => "multi_family#admin_edit"
|
61
65
|
get "admin/multi-family/:mls_acct/refresh" => "multi_family#admin_refresh"
|
@@ -74,15 +78,23 @@ CabooseRets::Engine.routes.draw do
|
|
74
78
|
post "saved-properties" => "saved_properties#add"
|
75
79
|
delete "saved-properties/:mls_acct" => "saved_properties#delete"
|
76
80
|
|
77
|
-
get "admin/media/:mls_acct/photos/new" => "media#admin_new_photo"
|
78
|
-
get "admin/media/:mls_acct/files/new" => "media#admin_new_file"
|
79
|
-
get "admin/media/:mls_acct/photos" => "media#admin_photos"
|
80
|
-
get "admin/media/:mls_acct/files" => "media#admin_files"
|
81
|
-
get "admin/media/:mls_acct" => "media#admin_index"
|
82
|
-
put "admin/media/:mls_acct/order" => "media#admin_update_order"
|
83
|
-
post "admin/media/:mls_acct/photos" => "media#admin_add_photo"
|
84
|
-
post "admin/media/:mls_acct/files" => "media#admin_add_file"
|
85
|
-
delete "admin/media/:id" => "media#admin_delete"
|
86
|
-
|
81
|
+
#get "admin/media/:mls_acct/photos/new" => "media#admin_new_photo"
|
82
|
+
#get "admin/media/:mls_acct/files/new" => "media#admin_new_file"
|
83
|
+
#get "admin/media/:mls_acct/photos" => "media#admin_photos"
|
84
|
+
#get "admin/media/:mls_acct/files" => "media#admin_files"
|
85
|
+
#get "admin/media/:mls_acct" => "media#admin_index"
|
86
|
+
#put "admin/media/:mls_acct/order" => "media#admin_update_order"
|
87
|
+
#post "admin/media/:mls_acct/photos" => "media#admin_add_photo"
|
88
|
+
#post "admin/media/:mls_acct/files" => "media#admin_add_file"
|
89
|
+
#delete "admin/media/:id" => "media#admin_delete"
|
90
|
+
|
91
|
+
get "admin/properties/:mls_acct/photos" => "media#admin_photos"
|
92
|
+
get "admin/properties/:mls_acct/files" => "media#admin_files"
|
93
|
+
get "admin/properties/:mls_acct/media" => "media#admin_property_media"
|
94
|
+
put "admin/properties/:mls_acct/media/order" => "media#admin_update_order"
|
95
|
+
post "admin/properties/:mls_acct/photos" => "media#admin_add_photo"
|
96
|
+
post "admin/properties/:mls_acct/files" => "media#admin_add_file"
|
97
|
+
get "admin/media/:id" => "media#admin_index"
|
98
|
+
delete "admin/media/:id" => "media#admin_delete"
|
87
99
|
|
88
100
|
end
|
data/lib/caboose_rets/version.rb
CHANGED
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.
|
4
|
+
version: 0.0.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: caboose-cms
|
@@ -74,8 +74,7 @@ files:
|
|
74
74
|
- app/views/caboose_rets/commercial/index.html.erb
|
75
75
|
- app/views/caboose_rets/land/admin_edit.html.erb
|
76
76
|
- app/views/caboose_rets/land/admin_index.html.erb
|
77
|
-
- app/views/caboose_rets/media/
|
78
|
-
- app/views/caboose_rets/media/admin_index.html.erb
|
77
|
+
- app/views/caboose_rets/media/admin_property_media.html.erb
|
79
78
|
- app/views/caboose_rets/multi_family/admin_edit.html.erb
|
80
79
|
- app/views/caboose_rets/multi_family/admin_index.html.erb
|
81
80
|
- app/views/caboose_rets/offices/admin_edit.html.erb
|
@@ -1,245 +0,0 @@
|
|
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><br />
|
226
|
-
|
227
|
-
<% content_for :caboose_js do %>
|
228
|
-
<%= javascript_include_tag "caboose/model/all" %>
|
229
|
-
<%= javascript_include_tag "caboose_rets/admin_media" %>
|
230
|
-
<script type='text/javascript'>
|
231
|
-
|
232
|
-
function refresh_property_from_mls(mls_acct)
|
233
|
-
{
|
234
|
-
modal.autosize("<p class='loading'>Refreshing property info and images from MLS...</p>");
|
235
|
-
$.ajax({
|
236
|
-
url: '/admin/residential/' + mls_acct + '/refresh',
|
237
|
-
success: function(resp) {
|
238
|
-
if (resp.error) modal.autosize("<p class='note error'>" + resp.error + "</p>");
|
239
|
-
if (resp.success) modal.autosize("<p class='note success'>" + resp.success + "</p>");
|
240
|
-
}
|
241
|
-
});
|
242
|
-
}
|
243
|
-
|
244
|
-
</script>
|
245
|
-
<% end %>
|