caboose-rets 0.1.26 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/caboose_rets/agents_controller.rb +76 -119
- data/app/models/caboose_rets/agent.rb +2 -2
- data/app/models/caboose_rets/agent_meta.rb +5 -3
- data/app/models/caboose_rets/media.rb +2 -1
- data/app/models/caboose_rets/rets_importer.rb +2 -2
- data/app/models/caboose_rets/rets_plugin.rb +10 -10
- data/app/models/caboose_rets/schema.rb +2 -1
- data/app/views/caboose_rets/agents/admin_edit.html.erb +69 -14
- data/app/views/caboose_rets/agents/admin_edit_sort.html.erb +82 -0
- data/app/views/caboose_rets/agents/admin_index.html.erb +49 -39
- data/app/views/caboose_rets/agents/details.html.erb +8 -139
- data/app/views/caboose_rets/agents/index.html.erb +12 -144
- data/config/routes.rb +13 -13
- data/lib/caboose_rets/version.rb +1 -1
- metadata +21 -25
- data/app/views/caboose_rets/agents/_admin_top_nav.html.erb +0 -7
- data/app/views/caboose_rets/agents/admin_edit_bio.html.erb +0 -31
- data/app/views/caboose_rets/agents/admin_edit_contact_info.html.erb +0 -31
- data/app/views/caboose_rets/agents/admin_edit_mls_info.html.erb +0 -69
- data/app/views/caboose_rets/agents/listings.html.erb +0 -121
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0bc1dc509dbedeb670087ec95587d543a2770385
|
4
|
+
data.tar.gz: 2c9e4966408f300681b39bacb9839d309595a062
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5f8fe88bc6038c340f13e4784cdbf91e6d4c0a12710ae9c82e07286f0ce1c070a717804f435fb745e878dec54fe92995d3948a753a4046689d0e4cefb7a45b4
|
7
|
+
data.tar.gz: c7a33eabf5167212b311b06349c89861ddf090af236ccca1c9e05d235acf7a84197f16bd93e7455ace19afde3eeb70688a98444576392edd394d82f8f930bdb8
|
@@ -2,160 +2,117 @@
|
|
2
2
|
module CabooseRets
|
3
3
|
class AgentsController < ApplicationController
|
4
4
|
|
5
|
-
# GET /agents
|
5
|
+
# @route GET /agents
|
6
6
|
def index
|
7
|
-
@agents
|
8
|
-
@agent = Agent.where(:mls_id => '048540000').first
|
9
|
-
@assistants = Agent.where(:assistant_to => '048540000').order("last_name, first_name")
|
7
|
+
@agents = Agent.where(:office_mls_id => @site.rets_office_id).order(:sort_order).reject{ |a| (a.meta && a.meta.hide == true) }
|
10
8
|
end
|
11
9
|
|
12
|
-
# GET /agents/:mls_id
|
10
|
+
# @route GET /agents/:mls_id
|
13
11
|
def details
|
14
|
-
mls_id = params[:mls_id]
|
15
|
-
@agents = Agent.where("mls_id = '46'").order("last_name, first_name")
|
16
|
-
@agent = Agent.where(:mls_id => mls_id).first || Agent.where(:mls_id => '048540000').first
|
17
|
-
# @assistants = Agent.where(:assistant_to => la_code).order("last_name, first_name")
|
18
|
-
@next = Agent.where("\'mls_id\' > \'#{mls_id}\' AND \'mls_id\' <> \'048540000\' AND \'office_mls_id\' = \'46\'").order("last_name, first_name").first
|
19
|
-
@prev = Agent.where("\'mls_id\' < \'#{mls_id}\' AND \'mls_id\' <> \'048540000\' AND \'office_mls_id\' = \'46\'").order("last_name, first_name").first
|
20
|
-
end
|
21
|
-
|
22
|
-
# GET /agents/:mls_id/listings
|
23
|
-
def listings
|
24
12
|
@agent = Agent.where(:mls_id => params[:mls_id]).first
|
25
|
-
is_agents = "mls_id = ? AND status = 'Active'"
|
26
|
-
# is_coagents = "co_la_code = ? AND status = 'Active'"
|
27
|
-
|
28
|
-
properties = Property.where(is_agents, params[:mls_id])
|
29
|
-
# residential_properties += Property.where(is_coagents, params[:mls_id]).select{ |p| defined? p && p.mls_acct }
|
30
|
-
|
31
|
-
@property_groups = [
|
32
|
-
{ type: 'Listing' , title: 'Property Listings' , url_prefix: 'properties' , properties: properties }
|
33
|
-
]
|
34
13
|
end
|
35
14
|
|
36
15
|
#=============================================================================
|
37
16
|
# Admin functions
|
38
17
|
#=============================================================================
|
39
18
|
|
40
|
-
# GET /admin/agents
|
19
|
+
# @route GET /admin/agents
|
41
20
|
def admin_index
|
42
|
-
return
|
21
|
+
return unless (user_is_allowed_to 'view', 'agents')
|
22
|
+
render :layout => 'caboose/admin'
|
23
|
+
end
|
43
24
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
25
|
+
# @route GET /admin/agents/json
|
26
|
+
def admin_json
|
27
|
+
render :json => false and return if !user_is_allowed_to 'view', 'agents'
|
28
|
+
where = "(office_mls_id = '#{@site.rets_office_id}')"
|
29
|
+
pager = Caboose::Pager.new(params, {
|
30
|
+
'first_name_like' => '',
|
31
|
+
'last_name_like' => ''
|
32
|
+
}, {
|
33
|
+
'model' => 'CabooseRets::Agent',
|
34
|
+
'sort' => 'last_name',
|
35
|
+
'desc' => 'false',
|
36
|
+
'base_url' => '/admin/agents',
|
37
|
+
'items_per_page' => 50,
|
38
|
+
'additional_where' => [ (where) ],
|
55
39
|
})
|
56
|
-
|
57
|
-
|
40
|
+
render :json => {
|
41
|
+
:pager => pager,
|
42
|
+
:models => pager.items
|
43
|
+
}
|
58
44
|
end
|
59
45
|
|
60
|
-
# GET /admin/agents/:id/
|
61
|
-
def
|
62
|
-
return if !
|
63
|
-
|
64
|
-
|
65
|
-
render :layout => 'caboose/admin'
|
46
|
+
# @route GET /admin/agents/:id/json
|
47
|
+
def admin_json_single
|
48
|
+
render :json => false and return if !user_is_allowed_to 'edit', 'agents'
|
49
|
+
prop = Agent.find(params[:id])
|
50
|
+
render :json => prop
|
66
51
|
end
|
67
52
|
|
68
|
-
# GET /admin/agents
|
69
|
-
def
|
70
|
-
|
71
|
-
|
72
|
-
|
53
|
+
# @route GET /admin/agents/edit-sort
|
54
|
+
def admin_edit_sort
|
55
|
+
if !user_is_allowed_to 'edit', 'agents'
|
56
|
+
Caboose.log("invalid permissions")
|
57
|
+
else
|
58
|
+
@agents = Agent.where(:office_mls_id => @site.rets_office_id).order(:sort_order).all
|
59
|
+
render :layout => 'caboose/admin'
|
60
|
+
end
|
73
61
|
end
|
74
62
|
|
75
|
-
#
|
76
|
-
def
|
77
|
-
|
78
|
-
|
79
|
-
|
63
|
+
# @route PUT /admin/agents/update-sort
|
64
|
+
def admin_update_sort
|
65
|
+
resp = Caboose::StdClass.new
|
66
|
+
if !user_is_allowed_to 'edit', 'agents'
|
67
|
+
Caboose.log("invalid permissions")
|
68
|
+
else
|
69
|
+
pa = Agent.find(params[:pa_id])
|
70
|
+
pa.sort_order = params[:sort_order]
|
71
|
+
pa.save
|
72
|
+
resp.success = true
|
73
|
+
end
|
74
|
+
render :json => resp
|
80
75
|
end
|
81
76
|
|
82
|
-
# GET /admin/agents/:id
|
83
|
-
def
|
84
|
-
return
|
77
|
+
# @route GET /admin/agents/:id
|
78
|
+
def admin_edit
|
79
|
+
return unless (user_is_allowed_to 'edit', 'agents')
|
85
80
|
@agent = Agent.find(params[:id])
|
86
|
-
|
81
|
+
@agent_meta = @agent.meta ? @agent.meta : AgentMeta.create(:la_code => @agent.matrix_unique_id) if @agent
|
82
|
+
render :layout => 'caboose/admin'
|
87
83
|
end
|
88
84
|
|
89
|
-
#
|
85
|
+
# @route PUT /admin/agents/:id
|
90
86
|
def admin_update
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
resp = Caboose::StdClass.new({'attributes' => {}})
|
87
|
+
return unless (user_is_allowed_to 'edit', 'agents')
|
88
|
+
resp = Caboose::StdClass.new
|
95
89
|
agent = Agent.find(params[:id])
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
when
|
101
|
-
agent.hide = value
|
102
|
-
when 'contact_info'
|
103
|
-
agent.contact_info = value
|
104
|
-
when 'bio'
|
105
|
-
agent.bio = value
|
106
|
-
when 'designation'
|
107
|
-
agent.designation = value
|
108
|
-
when 'assistant_to'
|
109
|
-
agent.assistant_to = value
|
110
|
-
if !value.nil? && value.length > 0 && Agent.exists?(:mls_id => value)
|
111
|
-
boss = Agent.where(:mls_id => value).first
|
112
|
-
resp.attributes['assistant_to'] = { 'text' => "#{boss.first_name} #{boss.last_name}" }
|
113
|
-
else
|
114
|
-
resp.attributes['assistant_to'] = { 'text' => "Not an assistant" }
|
115
|
-
end
|
90
|
+
meta = agent.meta ? agent.meta : AgentMeta.create(:la_code => agent.matrix_unique_id)
|
91
|
+
params.each do |k,v|
|
92
|
+
case k
|
93
|
+
when "bio" then meta.bio = v
|
94
|
+
when "hide" then meta.hide = v
|
116
95
|
end
|
117
96
|
end
|
118
|
-
|
97
|
+
agent.save
|
98
|
+
meta.save
|
99
|
+
resp.success = true
|
119
100
|
render :json => resp
|
120
101
|
end
|
121
102
|
|
122
|
-
# GET /admin/agents/:id/refresh
|
123
|
-
def admin_refresh
|
124
|
-
agent = Agent.find(params[:id])
|
125
|
-
RetsImporter.import("(LA_LA_CODE=#{agent.mls_id})", 'Agent', 'AGT')
|
126
|
-
RetsImporter.download_agent_images(agent)
|
127
|
-
render :json => Caboose::StdClass.new({ 'success' => "The agent's info has been updated from MLS." })
|
128
|
-
end
|
129
103
|
|
130
|
-
#
|
131
|
-
def
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
}
|
141
|
-
end
|
142
|
-
render :json => options
|
104
|
+
# @route POST /admin/agents/:id/image
|
105
|
+
def admin_update_image
|
106
|
+
render :json => false and return unless user_is_allowed_to 'edit', 'agents'
|
107
|
+
resp = Caboose::StdClass.new({ 'attributes' => {} })
|
108
|
+
agent = Agent.find(params[:id])
|
109
|
+
meta = agent.meta ? agent.meta : AgentMeta.create(:la_code => agent.matrix_unique_id) if agent
|
110
|
+
meta.image = params[:image]
|
111
|
+
meta.save
|
112
|
+
resp.attributes['image'] = { 'value' => meta.image.url(:thumb) }
|
113
|
+
render :text => resp.to_json
|
143
114
|
end
|
144
115
|
|
145
|
-
# GET /admin/agents/agent_options
|
146
|
-
def agent_options
|
147
|
-
options = [{
|
148
|
-
'value' => '',
|
149
|
-
'text' => '-- No Agent --'
|
150
|
-
}]
|
151
|
-
Agent.where(:office_mls_id => '46').reorder('last_name, first_name').all.each do |a|
|
152
|
-
options << {
|
153
|
-
'value' => a.mls_id,
|
154
|
-
'text' => "#{a.first_name} #{a.last_name}"
|
155
|
-
}
|
156
|
-
end
|
157
|
-
render :json => options
|
158
|
-
end
|
159
116
|
|
160
117
|
end
|
161
118
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
class CabooseRets::Agent < ActiveRecord::Base
|
2
2
|
self.table_name = "rets_agents"
|
3
3
|
|
4
|
-
has_one :meta, :class_name => 'AgentMeta', :primary_key => 'matrix_unique_id', :foreign_key => '
|
4
|
+
has_one :meta, :class_name => 'AgentMeta', :primary_key => 'matrix_unique_id', :foreign_key => 'la_code'
|
5
5
|
has_many :properties
|
6
|
-
attr_accessible :id, :agent_number, :matrix_unique_id
|
6
|
+
attr_accessible :id, :agent_number, :matrix_unique_id, :sort_order
|
7
7
|
after_initialize :fix_name
|
8
8
|
|
9
9
|
def image
|
@@ -3,10 +3,12 @@ class CabooseRets::AgentMeta < ActiveRecord::Base
|
|
3
3
|
self.table_name = "rets_agents_meta"
|
4
4
|
belongs_to :agent, :foreign_key => 'matrix_unique_id', :primary_key => 'la_code'
|
5
5
|
has_attached_file :image,
|
6
|
-
:path => 'rets/
|
6
|
+
:path => 'rets/agent_meta/:id_:style.:extension',
|
7
|
+
:default_url => "https://cabooseit.s3.amazonaws.com/assets/shared/default_profile.png",
|
7
8
|
:styles => {
|
8
|
-
:thumb => '
|
9
|
-
:
|
9
|
+
:thumb => '300x300>',
|
10
|
+
:medium => '600x600>',
|
11
|
+
:large => '900x900>'
|
10
12
|
}
|
11
13
|
do_not_validate_attachment_file_type :image
|
12
14
|
attr_accessible :id,
|
@@ -9,7 +9,8 @@ class CabooseRets::Media < ActiveRecord::Base
|
|
9
9
|
:styles => {
|
10
10
|
:tiny => '160x120>',
|
11
11
|
:thumb => '400x300>',
|
12
|
-
:large => '640x480>'
|
12
|
+
:large => '640x480>',
|
13
|
+
:huge => '1200x1200>'
|
13
14
|
}
|
14
15
|
do_not_validate_attachment_file_type :image
|
15
16
|
attr_accessible :date_modified, :file_name, :media_id, :media_order, :media_remarks, :media_type, :mls, :url
|
@@ -239,7 +239,7 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
239
239
|
self.log "Saving images for #{p.matrix_unique_id}..."
|
240
240
|
begin
|
241
241
|
# url = "http://rets.wamls.mlsmatrix.com/rets/GetObject.ashx?Type=Photo&Resource=Property&ID=1026514:1"
|
242
|
-
self.client.get_object(:resource => 'Property', :type => '
|
242
|
+
self.client.get_object(:resource => 'Property', :type => 'LargePhoto', :location=> false, :id => "#{p.matrix_unique_id}:*") do |headers, content|
|
243
243
|
m = CabooseRets::Media.where(:media_mui => headers['content-id'], :media_order => headers['object-id']).first
|
244
244
|
m = CabooseRets::Media.new if m.nil?
|
245
245
|
|
@@ -532,7 +532,7 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
532
532
|
self.unlock_task_if_last_updated(task_started)
|
533
533
|
end
|
534
534
|
|
535
|
-
# Start the same update process in
|
535
|
+
# Start the same update process in 20 minutes
|
536
536
|
self.log2("Adding the update rets task for 20 minutes from now...")
|
537
537
|
q = "handler like '%update_rets%'"
|
538
538
|
count = Delayed::Job.where(q).count
|
@@ -7,19 +7,19 @@ class CabooseRets::RetsPlugin < Caboose::CaboosePlugin
|
|
7
7
|
|
8
8
|
item = {
|
9
9
|
'id' => 'rets',
|
10
|
-
'text' => '
|
10
|
+
'text' => 'Real Estate',
|
11
11
|
'children' => [],
|
12
12
|
'modal' => true
|
13
13
|
}
|
14
|
-
item['children'] << { 'id' => 'agents'
|
15
|
-
item['children'] << { 'id' => 'offices' , 'href' => '/admin/offices' , 'text' => 'Offices' , 'modal' => false }
|
16
|
-
item['children'] << { 'id' => 'open-houses' , 'href' => '/admin/open-houses' , 'text' => 'Open Houses' , 'modal' => false }
|
17
|
-
item['children'] << { 'id' => 'residential' , 'href' => '/admin/residential' , 'text' => 'Residential Property' , 'modal' => false }
|
18
|
-
item['children'] << { 'id' => 'commercial' , 'href' => '/admin/commercial' , 'text' => 'Commercial Property' , 'modal' => false }
|
19
|
-
item['children'] << { 'id' => 'commercial' , 'href' => '/admin/multi-family' , 'text' => 'Multi-Family Property' , 'modal' => false }
|
20
|
-
item['children'] << { 'id' => 'land' , 'href' => '/admin/land' , 'text' => 'Land Property' , 'modal' => false }
|
21
|
-
item['children'] << { 'id' => 'saved-properties' , 'href' => '/saved-properties' , 'text' => 'Saved Properties' , 'modal' => false }
|
22
|
-
item['children'] << { 'id' => 'saved-searches' , 'href' => '/saved-searches' , 'text' => 'Saved Searches' , 'modal' => false }
|
14
|
+
item['children'] << { 'id' => 'agents', 'icon' => 'users', 'href' => '/admin/agents' , 'text' => 'Agents' , 'modal' => false }
|
15
|
+
# item['children'] << { 'id' => 'offices' , 'href' => '/admin/offices' , 'text' => 'Offices' , 'modal' => false }
|
16
|
+
# item['children'] << { 'id' => 'open-houses' , 'href' => '/admin/open-houses' , 'text' => 'Open Houses' , 'modal' => false }
|
17
|
+
# item['children'] << { 'id' => 'residential' , 'href' => '/admin/residential' , 'text' => 'Residential Property' , 'modal' => false }
|
18
|
+
# item['children'] << { 'id' => 'commercial' , 'href' => '/admin/commercial' , 'text' => 'Commercial Property' , 'modal' => false }
|
19
|
+
# item['children'] << { 'id' => 'commercial' , 'href' => '/admin/multi-family' , 'text' => 'Multi-Family Property' , 'modal' => false }
|
20
|
+
# item['children'] << { 'id' => 'land' , 'href' => '/admin/land' , 'text' => 'Land Property' , 'modal' => false }
|
21
|
+
# item['children'] << { 'id' => 'saved-properties' , 'href' => '/saved-properties' , 'text' => 'Saved Properties' , 'modal' => false }
|
22
|
+
# item['children'] << { 'id' => 'saved-searches' , 'href' => '/saved-searches' , 'text' => 'Saved Searches' , 'modal' => false }
|
23
23
|
|
24
24
|
nav << item
|
25
25
|
|
@@ -33,7 +33,8 @@ class CabooseRets::Schema < Caboose::Utilities::Schema
|
|
33
33
|
[ :phone_toll_free , :text ],
|
34
34
|
[ :phone_voice_mail , :text ],
|
35
35
|
[ :photo_count , :text ],
|
36
|
-
[ :photo_modification_timestamp , :text ]
|
36
|
+
[ :photo_modification_timestamp , :text ],
|
37
|
+
[ :sort_order , :integer ]
|
37
38
|
],
|
38
39
|
CabooseRets::AgentMeta => [
|
39
40
|
[ :la_code , :string ],
|
@@ -1,15 +1,72 @@
|
|
1
1
|
<h1>Edit Agent</h1>
|
2
|
-
<%= render :partial => 'caboose_rets/agents/admin_top_nav' %>
|
3
2
|
|
4
|
-
<
|
5
|
-
<
|
6
|
-
<
|
3
|
+
<p class="fixed">
|
4
|
+
<span class="title">First Name</span>
|
5
|
+
<span class="value"><%= @agent.first_name %></span>
|
6
|
+
</p>
|
7
7
|
|
8
|
-
<p
|
8
|
+
<p class="fixed">
|
9
|
+
<span class="title">Last Name</span>
|
10
|
+
<span class="value"><%= @agent.last_name %></span>
|
11
|
+
</p>
|
12
|
+
<p class="fixed">
|
13
|
+
<span class="title"><%= 'email'.titleize %></span>
|
14
|
+
<span class="value"><%= @agent.email %></span>
|
15
|
+
</p>
|
16
|
+
<p class="fixed">
|
17
|
+
<span class="title"><%= 'cell_phone'.titleize %></span>
|
18
|
+
<span class="value"><%= @agent.cell_phone %></span>
|
19
|
+
</p>
|
20
|
+
<p class="fixed">
|
21
|
+
<span class="title"><%= 'office_phone'.titleize %></span>
|
22
|
+
<span class="value"><%= @agent.office_phone %></span>
|
23
|
+
</p>
|
24
|
+
<p class="fixed">
|
25
|
+
<span class="title"><%= 'direct_work_phone'.titleize %></span>
|
26
|
+
<span class="value"><%= @agent.direct_work_phone %></span>
|
27
|
+
</p>
|
28
|
+
<p class="fixed">
|
29
|
+
<span class="title"><%= 'fax_phone'.titleize %></span>
|
30
|
+
<span class="value"><%= @agent.fax_phone %></span>
|
31
|
+
</p>
|
32
|
+
<p class="fixed">
|
33
|
+
<span class="title">MLS ID</span>
|
34
|
+
<span class="value"><%= @agent.mls_id %></span>
|
35
|
+
</p>
|
36
|
+
|
37
|
+
|
38
|
+
<div id="agent_<%= @agent.id %>_hide"></div>
|
39
|
+
|
40
|
+
<div class="richtext-holder">
|
41
|
+
<h5>Bio</h5>
|
42
|
+
<div id="agent_<%= @agent.id %>_bio"></div>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<div id="agent_<%= @agent.id %>_image"></div>
|
46
|
+
|
47
|
+
<div id="message"></div>
|
48
|
+
|
49
|
+
<% content_for :caboose_css do %>
|
50
|
+
<style>
|
51
|
+
p.fixed span.title {
|
52
|
+
font-weight: bold;
|
53
|
+
}
|
54
|
+
span.title::after {
|
55
|
+
content: ":";
|
56
|
+
}
|
57
|
+
.richtext-holder {
|
58
|
+
margin: 20px 0;
|
59
|
+
}
|
60
|
+
.richtext-holder h5 {
|
61
|
+
font-size: 1.1em;
|
62
|
+
margin: 0 0 5px 0;
|
63
|
+
}
|
64
|
+
</style>
|
65
|
+
<% end %>
|
9
66
|
|
10
67
|
<% content_for :caboose_js do %>
|
11
68
|
<%= javascript_include_tag "caboose/model/all" %>
|
12
|
-
<script type=
|
69
|
+
<script type="text/javascript">
|
13
70
|
$(document).ready(function() {
|
14
71
|
m = new ModelBinder({
|
15
72
|
name: 'Agent',
|
@@ -17,14 +74,12 @@ $(document).ready(function() {
|
|
17
74
|
update_url: '/admin/agents/<%= @agent.id %>',
|
18
75
|
authenticity_token: '<%= form_authenticity_token %>',
|
19
76
|
attributes: [
|
20
|
-
{ name: 'hide'
|
21
|
-
{ name: '
|
22
|
-
{ name: '
|
77
|
+
{ name: 'hide', nice_name: 'Hide', type: 'checkbox', value: <%== Caboose.json(@agent_meta.hide) %>, width: 500, height: 300 },
|
78
|
+
{ name: 'bio', nice_name: 'Bio', type: 'richtext', value: <%== Caboose.json(@agent_meta.bio) %>, width: 500, height: 300 },
|
79
|
+
{ name: 'image' , nice_name: 'Image' , type: 'image' , value: <%= raw Caboose.json(@agent_meta.image ? @agent_meta.image.url(:thumb) : 'http://placehold.it?300x300') %>, width: 800, update_url: '/admin/agents/<%= @agent.id %>/image' }
|
23
80
|
]
|
24
|
-
});
|
25
|
-
});
|
26
|
-
$(window).load(function() {
|
27
|
-
var modal = new CabooseModal(800);
|
81
|
+
});
|
28
82
|
});
|
29
83
|
</script>
|
30
|
-
|
84
|
+
<%== caboose_tinymce %>
|
85
|
+
<% end %>
|
@@ -0,0 +1,82 @@
|
|
1
|
+
<h1>Edit Sort Order</h1>
|
2
|
+
|
3
|
+
<a href="/admin/agents" class="caboose-btn">Back to Agents</a>
|
4
|
+
|
5
|
+
|
6
|
+
<ul class="sortable" id="sortable_agents">
|
7
|
+
|
8
|
+
<% @agents.each do |agent| %>
|
9
|
+
|
10
|
+
<li class="clearfix ui-state-default" data-paid="<%= agent.id %>">
|
11
|
+
<span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
|
12
|
+
<span class="resource-title"><%= agent.full_name %></span>
|
13
|
+
</li>
|
14
|
+
|
15
|
+
<% end %>
|
16
|
+
</ul>
|
17
|
+
|
18
|
+
<% content_for :caboose_css do %>
|
19
|
+
<%= stylesheet_link_tag "jquery-ui/sortable" %>
|
20
|
+
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
|
21
|
+
<style>
|
22
|
+
.sortable {
|
23
|
+
list-style-type: none;
|
24
|
+
padding-left: 0;
|
25
|
+
}
|
26
|
+
.sortable li {
|
27
|
+
cursor: ns-resize;
|
28
|
+
width: 800px;
|
29
|
+
padding: 3px 6px;
|
30
|
+
}
|
31
|
+
.sortable li a {
|
32
|
+
color: #0357FF;
|
33
|
+
font-size: 14px;
|
34
|
+
}
|
35
|
+
.sortable li a:hover {
|
36
|
+
text-decoration: underline;
|
37
|
+
}
|
38
|
+
.ui-state-default .ui-icon {
|
39
|
+
display: inline-block;
|
40
|
+
}
|
41
|
+
</style>
|
42
|
+
<% end %>
|
43
|
+
|
44
|
+
<% content_for :caboose_js do %>
|
45
|
+
<script>
|
46
|
+
function change_sort_order(pa_id, sort_order) {
|
47
|
+
$.ajax({
|
48
|
+
url: '/admin/agents/update-sort',
|
49
|
+
type: 'put',
|
50
|
+
data: {
|
51
|
+
pa_id: pa_id,
|
52
|
+
sort_order: sort_order
|
53
|
+
},
|
54
|
+
success: function(resp) {
|
55
|
+
if (resp.success) {
|
56
|
+
|
57
|
+
}
|
58
|
+
}
|
59
|
+
});
|
60
|
+
}
|
61
|
+
$(document).ready(function() {
|
62
|
+
|
63
|
+
$.each( $(".sortable"), function(k,v) {
|
64
|
+
var sort = $(v);
|
65
|
+
sort.sortable({
|
66
|
+
update: function(event, ui) {
|
67
|
+
var index = ui.item.index();
|
68
|
+
var start = ui.item.data('start');
|
69
|
+
var pa = ui.item.data('paid');
|
70
|
+
for(var i=0;i <= sort.find("li").length; i++){
|
71
|
+
var res = sort.find('li:nth-child(' + i + ')').data('paid');
|
72
|
+
if (res)
|
73
|
+
change_sort_order(res, i);
|
74
|
+
}
|
75
|
+
}
|
76
|
+
});
|
77
|
+
|
78
|
+
});
|
79
|
+
|
80
|
+
});
|
81
|
+
</script>
|
82
|
+
<% end %>
|