caboose-cms 0.7.62 → 0.7.63
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/caboose/admin_media_index.js +2 -1
- data/app/assets/javascripts/caboose/model/bound_checkbox_multiple.js +5 -6
- data/app/controllers/caboose/login_controller.rb +3 -4
- data/app/controllers/caboose/media_controller.rb +1 -1
- data/app/controllers/caboose/register_controller.rb +3 -1
- data/app/controllers/caboose/sites_controller.rb +1 -0
- data/app/controllers/caboose/users_controller.rb +39 -23
- data/app/mailers/caboose/login_mailer.rb +2 -2
- data/app/models/caboose/page.rb +5 -1
- data/app/models/caboose/schema.rb +1 -0
- data/app/models/caboose/user.rb +19 -0
- data/app/views/caboose/login/index.html.erb +1 -1
- data/app/views/caboose/register/index.html.erb +2 -1
- data/app/views/caboose/sites/admin_edit.html.erb +9 -7
- data/app/views/caboose/users/{edit.html.erb → admin_edit.html.erb} +0 -0
- data/app/views/caboose/users/{edit_password.html.erb → admin_edit_password.html.erb} +0 -0
- data/app/views/caboose/users/{import_form.html.erb → admin_import_form.html.erb} +0 -0
- data/app/views/caboose/users/admin_index.html.erb +41 -0
- data/app/views/caboose/users/{new.html.erb → admin_new.html.erb} +4 -1
- data/app/views/caboose/users/{update_pic.html.erb → admin_update_pic.html.erb} +0 -0
- data/config/routes.rb +15 -13
- data/lib/caboose/version.rb +1 -1
- data/lib/tasks/caboose.rake +11 -1
- metadata +22 -8
- data/app/views/caboose/users/index.html.erb +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be2e150242b80d282f05be0a3e8c1905cf47ee9e
|
4
|
+
data.tar.gz: e255ca6c97cb05fe1ee2d1e90726ef52dbf85cec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffde0cf22e24ae832fdb9d1b0a245df0f2ba9b1f31038a06d0704fbca7636cdb139accfeb331abce2ec8a377462d8f42dc34d433893643cd8e558db90a4cd76d
|
7
|
+
data.tar.gz: 830f370a0f3c92b32c585168e323126842538336271e7e36549256f48ac27bc29eda5a61f45f8dbd892f0a7e5934b6f4d659757cdae4febfc8e45bd971f74a25
|
@@ -63,7 +63,7 @@ MediaController.prototype = {
|
|
63
63
|
key: that.cat_id + '_${filename}', // use filename as a key
|
64
64
|
Filename: that.cat_id + '_${filename}', // adding this to keep consistency across the runtimes
|
65
65
|
acl: 'public-read',
|
66
|
-
|
66
|
+
'Content-Type': '',
|
67
67
|
AWSAccessKeyId: that.aws_access_key_id,
|
68
68
|
policy: that.policy,
|
69
69
|
signature: that.signature
|
@@ -77,6 +77,7 @@ MediaController.prototype = {
|
|
77
77
|
silverlight_xap_url: '../../js/Moxie.xap', // Silverlight settings
|
78
78
|
init: {
|
79
79
|
BeforeUpload: function(up, file) {
|
80
|
+
up.settings.multipart_params["Content-Type"] = file.type;
|
80
81
|
$.ajax({
|
81
82
|
url: '/admin/media/pre-upload',
|
82
83
|
type: 'post',
|
@@ -126,8 +126,7 @@ BoundCheckboxMultiple = BoundControl.extend({
|
|
126
126
|
|
127
127
|
var data = {};
|
128
128
|
data[this.attribute.name] = [value,(checked ? 1 : 0)];
|
129
|
-
|
130
|
-
|
129
|
+
|
131
130
|
$.ajax({
|
132
131
|
url: this.attribute.update_url,
|
133
132
|
type: 'put',
|
@@ -139,10 +138,10 @@ BoundCheckboxMultiple = BoundControl.extend({
|
|
139
138
|
for (var thing in resp.attributes[that.attribute.name])
|
140
139
|
that.attribute[thing] = resp.attributes[that.attribute.name][thing];
|
141
140
|
that.attribute.value_clean = that.attribute.value;
|
142
|
-
|
143
|
-
|
144
|
-
if (
|
145
|
-
|
141
|
+
|
142
|
+
that.binder.active_control = that;
|
143
|
+
if (that.binder.success)
|
144
|
+
that.binder.success(that);
|
146
145
|
}
|
147
146
|
else if (resp.error)
|
148
147
|
that.error(resp.error);
|
@@ -69,12 +69,11 @@ module Caboose
|
|
69
69
|
return
|
70
70
|
end
|
71
71
|
|
72
|
-
bob =
|
73
|
-
bob = Caboose::User.where(:
|
74
|
-
bob = Caboose::User.where(:email => username).first if bob.nil? && bob = Caboose::User.where(:email => username)
|
72
|
+
bob = Caboose::User.where(:site_id => @site.id, :username => username).first
|
73
|
+
bob = Caboose::User.where(:site_id => @site.id, :email => username).first if bob.nil?
|
75
74
|
|
76
75
|
if bob.nil?
|
77
|
-
resp.error = "The given username is not in our system."
|
76
|
+
resp.error = "The given email or username is not in our system."
|
78
77
|
render :json => resp
|
79
78
|
return
|
80
79
|
end
|
@@ -24,7 +24,7 @@ module Caboose
|
|
24
24
|
{ "bucket" => bucket },
|
25
25
|
{ "acl" => "public-read" },
|
26
26
|
[ "starts-with", "$key", '' ],
|
27
|
-
|
27
|
+
[ "starts-with", "$Content-Type", "" ],
|
28
28
|
[ 'starts-with', '$name', '' ],
|
29
29
|
[ 'starts-with', '$Filename', '' ],
|
30
30
|
]
|
@@ -16,8 +16,10 @@ module Caboose
|
|
16
16
|
resp = StdClass.new('error' => '', 'redirect' => '')
|
17
17
|
return_url = params[:return_url].nil? ? "/" : params[:return_url];
|
18
18
|
|
19
|
-
if
|
19
|
+
if logged_in?
|
20
20
|
resp.error = "Already logged in"
|
21
|
+
elsif !@site.allow_self_registration
|
22
|
+
resp.error = "This site doesn't allow self registration."
|
21
23
|
else
|
22
24
|
|
23
25
|
first_name = params[:first_name]
|
@@ -135,6 +135,7 @@ module Caboose
|
|
135
135
|
when 'custom_css' then site.custom_css = value
|
136
136
|
when 'custom_js' then site.custom_js = value
|
137
137
|
when 'default_layout_id' then site.default_layout_id = value
|
138
|
+
when 'allow_self_registration' then site.allow_self_registration = value
|
138
139
|
end
|
139
140
|
end
|
140
141
|
|
@@ -19,10 +19,15 @@ module Caboose
|
|
19
19
|
#===========================================================================
|
20
20
|
|
21
21
|
# GET /admin/users
|
22
|
-
def
|
22
|
+
def admin_index
|
23
|
+
return if !user_is_allowed('users', 'view')
|
24
|
+
end
|
25
|
+
|
26
|
+
# GET /admin/users/json
|
27
|
+
def admin_json
|
23
28
|
return if !user_is_allowed('users', 'view')
|
24
29
|
|
25
|
-
|
30
|
+
pager = PageBarGenerator.new(params, {
|
26
31
|
'site_id' => @site.id,
|
27
32
|
'first_name_like' => '',
|
28
33
|
'last_name_like' => '',
|
@@ -34,32 +39,42 @@ module Caboose
|
|
34
39
|
'desc' => false,
|
35
40
|
'base_url' => '/admin/users',
|
36
41
|
'use_url_params' => false
|
37
|
-
})
|
38
|
-
|
42
|
+
})
|
43
|
+
render :json => {
|
44
|
+
:pages => pager,
|
45
|
+
:models => pager.items.as_json(:include => :roles)
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
# GET /admin/users/:id/json
|
50
|
+
def admin_json_single
|
51
|
+
return if !user_is_allowed('users', 'view')
|
52
|
+
u = User.find(params[:id])
|
53
|
+
render :json => u.as_json(:include => :roles)
|
39
54
|
end
|
40
55
|
|
41
56
|
# GET /admin/users/new
|
42
|
-
def
|
57
|
+
def admin_new
|
43
58
|
return if !user_is_allowed('users', 'add')
|
44
59
|
@newuser = User.new
|
45
60
|
end
|
46
61
|
|
47
|
-
# GET /admin/users
|
48
|
-
def
|
62
|
+
# GET /admin/users/:id
|
63
|
+
def admin_edit
|
49
64
|
return if !user_is_allowed('users', 'edit')
|
50
65
|
@edituser = User.find(params[:id])
|
51
66
|
@all_roles = Role.tree(@site.id)
|
52
67
|
@roles = Role.roles_with_user(@edituser.id)
|
53
68
|
end
|
54
69
|
|
55
|
-
# GET /admin/users/
|
56
|
-
def
|
70
|
+
# GET /admin/users/:id/edit-password
|
71
|
+
def admin_edit_password
|
57
72
|
return if !user_is_allowed('users', 'edit')
|
58
73
|
@edituser = User.find(params[:id])
|
59
74
|
end
|
60
75
|
|
61
76
|
# GET /admin/users/import
|
62
|
-
def
|
77
|
+
def admin_import_form
|
63
78
|
return if !user_is_allowed('users', 'edit')
|
64
79
|
end
|
65
80
|
|
@@ -69,7 +84,7 @@ module Caboose
|
|
69
84
|
end
|
70
85
|
|
71
86
|
# POST /admin/users/import
|
72
|
-
def
|
87
|
+
def admin_import
|
73
88
|
return if !user_is_allowed('users', 'add')
|
74
89
|
|
75
90
|
resp = StdClass.new
|
@@ -133,7 +148,7 @@ module Caboose
|
|
133
148
|
end
|
134
149
|
|
135
150
|
# POST /admin/users
|
136
|
-
def
|
151
|
+
def admin_add
|
137
152
|
return if !user_is_allowed('users', 'add')
|
138
153
|
|
139
154
|
resp = StdClass.new({
|
@@ -147,8 +162,8 @@ module Caboose
|
|
147
162
|
|
148
163
|
if user.email.length == 0
|
149
164
|
resp.error = "Please enter a valid email address."
|
150
|
-
elsif User.where(:email => user.email).exists?
|
151
|
-
resp.error = "That email is already in the system."
|
165
|
+
elsif User.where(:site_id => @site.id, :email => user.email).exists?
|
166
|
+
resp.error = "That email is already in the system for this site."
|
152
167
|
else
|
153
168
|
user.save
|
154
169
|
resp.redirect = "/admin/users/#{user.id}"
|
@@ -157,8 +172,8 @@ module Caboose
|
|
157
172
|
render :json => resp
|
158
173
|
end
|
159
174
|
|
160
|
-
# PUT /admin/users
|
161
|
-
def
|
175
|
+
# PUT /admin/users/:id
|
176
|
+
def admin_update
|
162
177
|
return if !user_is_allowed('users', 'edit')
|
163
178
|
|
164
179
|
resp = StdClass.new
|
@@ -192,6 +207,7 @@ module Caboose
|
|
192
207
|
else
|
193
208
|
user.password = Digest::SHA1.hexdigest(Caboose::salt + value)
|
194
209
|
end
|
210
|
+
when 'role_ids' then user.toggle_roles(value[0], value[1])
|
195
211
|
when "roles"
|
196
212
|
user.roles = [];
|
197
213
|
value.each { |rid| user.roles << Role.find(rid) } unless value.nil?
|
@@ -203,14 +219,14 @@ module Caboose
|
|
203
219
|
render json: resp
|
204
220
|
end
|
205
221
|
|
206
|
-
# POST /admin/users/
|
207
|
-
def
|
222
|
+
# POST /admin/users/:id/update-pic
|
223
|
+
def admin_update_pic
|
208
224
|
@edituser = User.find(params[:id])
|
209
225
|
@new_value = "Testing"
|
210
226
|
end
|
211
227
|
|
212
|
-
# DELETE /admin/users
|
213
|
-
def
|
228
|
+
# DELETE /admin/users/:id
|
229
|
+
def admin_delete
|
214
230
|
return if !user_is_allowed('users', 'delete')
|
215
231
|
user = User.find(params[:id])
|
216
232
|
user.destroy
|
@@ -222,7 +238,7 @@ module Caboose
|
|
222
238
|
end
|
223
239
|
|
224
240
|
# POST /admin/users/:id/roles/:role_id
|
225
|
-
def
|
241
|
+
def admin_add_to_role
|
226
242
|
return if !user_is_allowed('users', 'edit')
|
227
243
|
if !RoleMembership.where(:user_id => params[:id], :role_id => params[:role_id]).exists?
|
228
244
|
RoleMembership.create(:user_id => params[:id], :role_id => params[:role_id])
|
@@ -231,14 +247,14 @@ module Caboose
|
|
231
247
|
end
|
232
248
|
|
233
249
|
# DELETE /admin/users/:id/roles/:role_id
|
234
|
-
def
|
250
|
+
def admin_remove_from_role
|
235
251
|
return if !user_is_allowed('users', 'edit')
|
236
252
|
RoleMembership.where(:user_id => params[:id], :role_id => params[:role_id]).destroy_all
|
237
253
|
render :json => true
|
238
254
|
end
|
239
255
|
|
240
256
|
# GET /admin/users/options
|
241
|
-
def
|
257
|
+
def admin_options
|
242
258
|
return if !user_is_allowed('users', 'view')
|
243
259
|
@users = User.where(:site_id => @site.id).reorder('last_name, first_name').all
|
244
260
|
options = @users.collect { |u| { 'value' => u.id, 'text' => "#{u.first_name} #{u.last_name} (#{u.email})"}}
|
@@ -3,12 +3,12 @@ module Caboose
|
|
3
3
|
|
4
4
|
def forgot_password_email(user)
|
5
5
|
@user = user
|
6
|
-
mail(:to => user.email, :subject => "#{
|
6
|
+
mail(:to => user.email, :subject => "#{user.site.name.capitalize} Forgot Password")
|
7
7
|
end
|
8
8
|
|
9
9
|
def locked_account(user)
|
10
10
|
@user = user
|
11
|
-
mail(:to => user.email, :subject => "#{
|
11
|
+
mail(:to => user.email, :subject => "#{user.site.name.capitalize} Locked Account")
|
12
12
|
end
|
13
13
|
|
14
14
|
end
|
data/app/models/caboose/page.rb
CHANGED
@@ -337,6 +337,10 @@ class Caboose::Page < ActiveRecord::Base
|
|
337
337
|
return true if pid == parent_id
|
338
338
|
return self.is_child(parent_id, pid)
|
339
339
|
end
|
340
|
+
|
341
|
+
def is_child_of?(parent_id)
|
342
|
+
return Caboose::Page.is_child(parent_id, self.id)
|
343
|
+
end
|
340
344
|
|
341
345
|
def linked_resources_map
|
342
346
|
resources = { js: [], css: [] }
|
@@ -431,7 +435,7 @@ class Caboose::Page < ActiveRecord::Base
|
|
431
435
|
|
432
436
|
self.block.duplicate_page_block(site_id, p.id, block_type_id)
|
433
437
|
|
434
|
-
if duplicate_children
|
438
|
+
if duplicate_children && !p.is_child_of?(self.id)
|
435
439
|
self.children.each do |p2|
|
436
440
|
p2.duplicate(site_id, p.id, duplicate_children, child_block_type_id, child_block_type_id)
|
437
441
|
end
|
@@ -681,6 +681,7 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
681
681
|
[ :use_fonts , :boolean , { :default => true }],
|
682
682
|
[ :logo , :attachment ],
|
683
683
|
[ :is_master , :boolean , { :default => false }],
|
684
|
+
[ :allow_self_registration , :boolean , { :default => false }],
|
684
685
|
[ :analytics_id , :string ],
|
685
686
|
[ :use_retargeting , :boolean , { :default => false }],
|
686
687
|
[ :date_js_updated , :datetime ],
|
data/app/models/caboose/user.rb
CHANGED
@@ -99,5 +99,24 @@ class Caboose::User < ActiveRecord::Base
|
|
99
99
|
end
|
100
100
|
return nil
|
101
101
|
end
|
102
|
+
|
103
|
+
def toggle_roles(role_id, value)
|
104
|
+
if value.to_i > 0 # Add to role
|
105
|
+
if role_id == 'all'
|
106
|
+
Caboose::RoleMembership.where(:user_id => self.id).destroy_all
|
107
|
+
Caboose::Role.where(:site_id => self.site_id).reorder(:name).all.each{ |r| RoleMembership.create(:user_id => self.id, :role_id => r.id) }
|
108
|
+
else
|
109
|
+
if !Caboose::RoleMembership.where(:user_id => self.id, :role_id => role_id.to_i).exists?
|
110
|
+
Caboose::RoleMembership.create( :user_id => self.id, :role_id => role_id.to_i)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
else # Remove from role
|
114
|
+
if role_id == 'all'
|
115
|
+
Caboose::RoleMembership.where(:user_id => self.id).destroy_all
|
116
|
+
else
|
117
|
+
Caboose::RoleMembership.where(:user_id => self.id, :role_id => role_id.to_i).destroy_all
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
102
121
|
|
103
122
|
end
|
@@ -18,7 +18,7 @@
|
|
18
18
|
</label>
|
19
19
|
|
20
20
|
<ul id="login-options">
|
21
|
-
|
21
|
+
<% if @site.allow_self_registration %><li><a href="/register?return_url=<%= @return_url %>" class='register'>Need to register?</a></li><% end %>
|
22
22
|
<li><a href="/login/forgot-password?return_url=<%= @return_url %>" class='forgot'>Forgot your password?</a></li>
|
23
23
|
</ul>
|
24
24
|
<div style='clear: both;' id="message"></div>
|
@@ -1,9 +1,10 @@
|
|
1
1
|
|
2
|
+
<h1>Register</h1>
|
3
|
+
|
2
4
|
<form action='/register' method='post' id='register_form'>
|
3
5
|
<p class='other_options'>
|
4
6
|
<a href='/login?return_url=<%= @return_url %>'>Already a member?</a>
|
5
7
|
</p>
|
6
|
-
<h1>Register</h1>
|
7
8
|
<input type='hidden' name='return_url' value='<%= @return_url %>' />
|
8
9
|
<input type='text' name='first_name' id='first_name' placeholder='First name' />
|
9
10
|
<input type='text' name='last_name' id='last_name' placeholder='Last name' />
|
@@ -13,6 +13,7 @@ user_ids = [] if user_ids.nil?
|
|
13
13
|
<p><div id='site_<%= @site.id %>_under_construction_html' ></div></p>
|
14
14
|
<p><div id='site_<%= @site.id %>_use_store' ></div></p>
|
15
15
|
<p><div id='site_<%= @site.id %>_use_fonts' ></div></p>
|
16
|
+
<p><div id='site_<%= @site.id %>_allow_self_registration' ></div></p>
|
16
17
|
<p><div id='site_<%= @site.id %>_default_layout_id' ></div></p>
|
17
18
|
|
18
19
|
<h2>Domains</h2>
|
@@ -71,13 +72,14 @@ $(document).ready(function() {
|
|
71
72
|
update_url: '/admin/sites/<%= @site.id %>',
|
72
73
|
authenticity_token: '<%= form_authenticity_token %>',
|
73
74
|
attributes: [
|
74
|
-
{ name: 'logo' , nice_name: 'Logo' , type: 'image' , value: <%= raw Caboose.json(@site.logo ? @site.logo.url(:thumb) : '')
|
75
|
-
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(@site.name)
|
76
|
-
{ name: 'description' , nice_name: 'Description' , type: 'textarea' , value: <%= raw Caboose.json(@site.description)
|
77
|
-
{ name: 'under_construction_html' , nice_name: 'Under Construction HTML' , type: 'textarea' , value: <%= raw Caboose.json(@site.under_construction_html)
|
78
|
-
{ name: 'use_store' , nice_name: 'Enable Store' , type: 'checkbox' , value: <%= raw Caboose.json(@site.use_store
|
79
|
-
{ name: 'use_fonts' , nice_name: 'Enable Fonts' , type: 'checkbox' , value: <%= raw Caboose.json(@site.use_fonts
|
80
|
-
{ name: '
|
75
|
+
{ name: 'logo' , nice_name: 'Logo' , type: 'image' , value: <%= raw Caboose.json(@site.logo ? @site.logo.url(:thumb) : '') %>, width: 400, update_url: '/admin/sites/<%= @site.id %>/logo' },
|
76
|
+
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(@site.name) %>, width: 400 },
|
77
|
+
{ name: 'description' , nice_name: 'Description' , type: 'textarea' , value: <%= raw Caboose.json(@site.description) %>, width: 600, height: 75 },
|
78
|
+
{ name: 'under_construction_html' , nice_name: 'Under Construction HTML' , type: 'textarea' , value: <%= raw Caboose.json(@site.under_construction_html) %>, width: 600, height: 75 },
|
79
|
+
{ name: 'use_store' , nice_name: 'Enable Store' , type: 'checkbox' , value: <%= raw Caboose.json(@site.use_store ? true : false) %>, width: 400 },
|
80
|
+
{ name: 'use_fonts' , nice_name: 'Enable Fonts' , type: 'checkbox' , value: <%= raw Caboose.json(@site.use_fonts ? true : false) %>, width: 400 },
|
81
|
+
{ name: 'allow_self_registration' , nice_name: 'Allow Self Registration' , type: 'checkbox' , value: <%= raw Caboose.json(@site.allow_self_registration ? true : false) %>, width: 400 },
|
82
|
+
{ name: 'default_layout_id' , nice_name: 'Default Layout' , type: 'select' , value: <%= raw Caboose.json(@site.default_layout_id) %>, width: 600, options_url: "/admin/sites/<%= @site.id %>/default-layout-options" }
|
81
83
|
]
|
82
84
|
});
|
83
85
|
});
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
<h1>Users</h1>
|
3
|
+
<div id='users'></div>
|
4
|
+
|
5
|
+
<% content_for :caboose_js do %>
|
6
|
+
<%= javascript_include_tag 'caboose/model/all' %>
|
7
|
+
<script type='text/javascript'>
|
8
|
+
|
9
|
+
$(document).ready(function() {
|
10
|
+
var that = this;
|
11
|
+
var table = new IndexTable({
|
12
|
+
form_authenticity_token: '<%= form_authenticity_token %>',
|
13
|
+
container: 'users',
|
14
|
+
base_url: '/admin/users',
|
15
|
+
allow_bulk_edit: true,
|
16
|
+
allow_bulk_delete: true,
|
17
|
+
allow_duplicate: false,
|
18
|
+
allow_advanced_edit: true,
|
19
|
+
fields: [
|
20
|
+
{ show: true , bulk_edit: true , name: 'first_name' , nice_name: 'First name' , sort: 'first_name' , type: 'text' , value: function(u) { return u.first_name }, width: 100 },
|
21
|
+
{ show: true , bulk_edit: true , name: 'last_name' , nice_name: 'Last name' , sort: 'last_name' , type: 'text' , value: function(u) { return u.last_name }, width: 100 },
|
22
|
+
{ show: true , bulk_edit: true , name: 'username' , nice_name: 'Username' , sort: 'username' , type: 'text' , value: function(u) { return u.username }, width: 100 },
|
23
|
+
{ show: true , bulk_edit: true , name: 'email' , nice_name: 'Email' , sort: 'email' , type: 'text' , value: function(u) { return u.email }, width: 100 },
|
24
|
+
{ show: true , bulk_edit: true , name: 'locked' , nice_name: 'Locked' , sort: 'locked' , type: 'checkbox' , value: function(u) { return u.locked }, width: 30 },
|
25
|
+
{ show: true , bulk_edit: true , name: 'role_ids' , nice_name: 'Roles' , sort: 'email' , type: 'checkbox-multiple' , value: function(u) { return get_role_ids(u) }, text: function(u) { return get_role_names(u); }, width: 250, options_url: '/admin/roles/options' }
|
26
|
+
],
|
27
|
+
new_model_text: 'New User',
|
28
|
+
no_models_text: 'There are no users right now.',
|
29
|
+
new_model_fields: [
|
30
|
+
{ name: 'email', nice_name: 'Email', type: 'text', width: 400 }
|
31
|
+
],
|
32
|
+
bulk_import_fields: ['email'],
|
33
|
+
bulk_import_url: '/admin/users/bulk'
|
34
|
+
});
|
35
|
+
});
|
36
|
+
|
37
|
+
function get_role_ids(u) { return $(u.roles).map(function(i, r) { return r.id }).get(); }
|
38
|
+
function get_role_names(u) { return $(u.roles).map(function(i, r) { return r.name }).get(); }
|
39
|
+
|
40
|
+
</script>
|
41
|
+
<% end %>
|
@@ -5,7 +5,10 @@
|
|
5
5
|
<input type='hidden' name='authenticity_token' value='<%= form_authenticity_token %>' />
|
6
6
|
<p><input type='text' name='email' id='email' placeholder='Email' value='' style='width: 400px;' /></p>
|
7
7
|
<div id='message'></div>
|
8
|
-
<p
|
8
|
+
<p>
|
9
|
+
<input type='button' value='< Back' onclick="window.location='/admin/users';" />
|
10
|
+
<input type='submit' value='Add User' />
|
11
|
+
</p>
|
9
12
|
</form>
|
10
13
|
|
11
14
|
<% content_for :caboose_js do %>
|
File without changes
|
data/config/routes.rb
CHANGED
@@ -174,21 +174,23 @@ Caboose::Engine.routes.draw do
|
|
174
174
|
# Users
|
175
175
|
#=============================================================================
|
176
176
|
|
177
|
-
get "/admin/users" => "users#
|
178
|
-
get "/admin/users/
|
179
|
-
get "/admin/users/
|
180
|
-
get "/admin/users/
|
181
|
-
|
177
|
+
get "/admin/users" => "users#admin_index"
|
178
|
+
get "/admin/users/json" => "users#admin_json"
|
179
|
+
get "/admin/users/options" => "users#admin_options"
|
180
|
+
get "/admin/users/new" => "users#admin_new"
|
181
|
+
get "/admin/users/import" => "users#admin_import_form"
|
182
|
+
post "/admin/users/import" => "users#admin_import"
|
183
|
+
get "/admin/users/:id/json" => "users#admin_json_single"
|
182
184
|
get "/admin/users/:id/su/:token" => "users#admin_su_token"
|
183
185
|
get "/admin/users/:id/su" => "users#admin_su"
|
184
|
-
get "/admin/users/:id/edit-password" => "users#
|
185
|
-
get "/admin/users/:id" => "users#
|
186
|
-
put "/admin/users/:id" => "users#
|
187
|
-
post "/admin/users" => "users#
|
188
|
-
delete "/admin/users/:id" => "users#
|
189
|
-
|
190
|
-
post "/admin/users/:id/roles/:role_id" => "users#
|
191
|
-
delete "/admin/users/:id/roles/:role_id" => "users#
|
186
|
+
get "/admin/users/:id/edit-password" => "users#admin_edit_password"
|
187
|
+
get "/admin/users/:id" => "users#admin_edit"
|
188
|
+
put "/admin/users/:id" => "users#admin_update"
|
189
|
+
post "/admin/users" => "users#admin_add"
|
190
|
+
delete "/admin/users/:id" => "users#admin_delete"
|
191
|
+
|
192
|
+
post "/admin/users/:id/roles/:role_id" => "users#admin_add_to_role"
|
193
|
+
delete "/admin/users/:id/roles/:role_id" => "users#admin_remove_from_role"
|
192
194
|
|
193
195
|
#=============================================================================
|
194
196
|
# Roles
|
data/lib/caboose/version.rb
CHANGED
data/lib/tasks/caboose.rake
CHANGED
@@ -2,7 +2,17 @@ require "caboose/version"
|
|
2
2
|
require 'aws-sdk'
|
3
3
|
|
4
4
|
namespace :caboose do
|
5
|
-
|
5
|
+
|
6
|
+
desc "Update super admin password"
|
7
|
+
task :update_superadmin_password => :environment do
|
8
|
+
sa = Caboose::User.where(:username => 'superadmin').first
|
9
|
+
print "Enter a new password: "
|
10
|
+
sa.password = STDIN.noecho(&:gets).chomp
|
11
|
+
puts "\n\nThe password has been updated.\n\n"
|
12
|
+
sa.password = Digest::SHA1.hexdigest(Caboose::salt + sa.password)
|
13
|
+
sa.save
|
14
|
+
end
|
15
|
+
|
6
16
|
desc "Show all comment routes in controllers"
|
7
17
|
task :routes, [:arg1] => :environment do |t, args|
|
8
18
|
puts Caboose::CommentRoutes.controller_routes(args ? args.first : nil)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.63
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -346,6 +346,20 @@ dependencies:
|
|
346
346
|
- - ">="
|
347
347
|
- !ruby/object:Gem::Version
|
348
348
|
version: '0'
|
349
|
+
- !ruby/object:Gem::Dependency
|
350
|
+
name: highline
|
351
|
+
requirement: !ruby/object:Gem::Requirement
|
352
|
+
requirements:
|
353
|
+
- - ">="
|
354
|
+
- !ruby/object:Gem::Version
|
355
|
+
version: '0'
|
356
|
+
type: :runtime
|
357
|
+
prerelease: false
|
358
|
+
version_requirements: !ruby/object:Gem::Requirement
|
359
|
+
requirements:
|
360
|
+
- - ">="
|
361
|
+
- !ruby/object:Gem::Version
|
362
|
+
version: '0'
|
349
363
|
- !ruby/object:Gem::Dependency
|
350
364
|
name: rspec-rails
|
351
365
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1126,12 +1140,12 @@ files:
|
|
1126
1140
|
- app/views/caboose/store/admin_edit_tax.html.erb
|
1127
1141
|
- app/views/caboose/users/_admin_footer.html.erb
|
1128
1142
|
- app/views/caboose/users/_admin_header.html.erb
|
1129
|
-
- app/views/caboose/users/
|
1130
|
-
- app/views/caboose/users/
|
1131
|
-
- app/views/caboose/users/
|
1132
|
-
- app/views/caboose/users/
|
1133
|
-
- app/views/caboose/users/
|
1134
|
-
- app/views/caboose/users/
|
1143
|
+
- app/views/caboose/users/admin_edit.html.erb
|
1144
|
+
- app/views/caboose/users/admin_edit_password.html.erb
|
1145
|
+
- app/views/caboose/users/admin_import_form.html.erb
|
1146
|
+
- app/views/caboose/users/admin_index.html.erb
|
1147
|
+
- app/views/caboose/users/admin_new.html.erb
|
1148
|
+
- app/views/caboose/users/admin_update_pic.html.erb
|
1135
1149
|
- app/views/caboose/variants/admin_edit.html.erb
|
1136
1150
|
- app/views/caboose/variants/admin_edit_option1_media.html.erb
|
1137
1151
|
- app/views/caboose/variants/admin_edit_option2_media.html.erb
|
@@ -1,41 +0,0 @@
|
|
1
|
-
<h1>Users</h1>
|
2
|
-
|
3
|
-
<form action='/admin/users' method='get' class='search_form'>
|
4
|
-
<input type='text' name='first_name_like' value="<%= @gen.params['first_name_like'] %>" placeholder='First name' />
|
5
|
-
<input type='text' name='last_name_like' value="<%= @gen.params['last_name_like'] %>" placeholder='Last name' />
|
6
|
-
<input type='text' name='email_like' value="<%= @gen.params['email_like'] %>" placeholder='Email' />
|
7
|
-
<input type='submit' value='Search' />
|
8
|
-
</form>
|
9
|
-
|
10
|
-
<p>
|
11
|
-
<a href='/admin/users/new'>New User</a> |
|
12
|
-
<a href='/admin/users/import'>Import CSV</a>
|
13
|
-
</p>
|
14
|
-
|
15
|
-
<table class='data' id='users_table'>
|
16
|
-
<tr>
|
17
|
-
<%= raw @gen.sortable_table_headings({
|
18
|
-
'first_name' => 'First Name',
|
19
|
-
'last_name, first_name' => 'Last Name',
|
20
|
-
'username' => 'Username',
|
21
|
-
'email' => 'Email'
|
22
|
-
})
|
23
|
-
%>
|
24
|
-
</tr>
|
25
|
-
<% @users.each do |user| %>
|
26
|
-
<tr onclick="window.location='/admin/users/<%= user.id %>';">
|
27
|
-
<td><%= user.first_name %></td>
|
28
|
-
<td><%= user.last_name %></td>
|
29
|
-
<td><%= user.username %></td>
|
30
|
-
<td><%= user.email %></td>
|
31
|
-
</tr>
|
32
|
-
<% end %>
|
33
|
-
</table>
|
34
|
-
|
35
|
-
<p><%= raw @gen.generate %></p>
|
36
|
-
|
37
|
-
<% content_for :caboose_js do %>
|
38
|
-
<script type='text/javascript'>
|
39
|
-
|
40
|
-
</script>
|
41
|
-
<% end %>
|