caboose-cms 0.9.100 → 0.9.101
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/assets/stylesheets/caboose/admin_main.css +10 -3
- data/app/assets/stylesheets/caboose/application.css +0 -1
- data/app/assets/stylesheets/caboose/caboose.css +1 -1
- data/app/assets/stylesheets/caboose/model_binder.css +2 -2
- data/app/assets/stylesheets/caboose/my_account.scss +5 -11
- data/app/controllers/caboose/my_account_controller.rb +18 -2
- data/app/controllers/caboose/users_controller.rb +18 -2
- data/app/models/caboose/user.rb +1 -1
- data/app/views/caboose/my_account/index.html.erb +3 -1
- data/app/views/caboose/pages/admin_edit_css.html.erb +12 -1
- data/app/views/caboose/pages/admin_edit_js.html.erb +12 -0
- data/app/views/caboose/pages/admin_edit_seo.html.erb +4 -4
- data/app/views/caboose/users/_admin_header.html.erb +3 -2
- data/app/views/caboose/users/admin_edit.html.erb +30 -11
- data/app/views/caboose/users/admin_index.html.erb +7 -2
- data/lib/caboose/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23ad7f7c31b8ca09193936375beee638295eb7ee
|
4
|
+
data.tar.gz: 78ff33fabda4ec92797cb7b87ed1d8b5747e21ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a31de878a90a6839514b8151c89410ed86d0cc806576a2f2a70f9a06ec825c03a82732a00e08e3268dd367e1acb981c19075ac17017404fd49c2012544d55e23
|
7
|
+
data.tar.gz: fc2a0f77cc0d3c5759a8f899ad4d808e20420c33bdf40ef94497cdd17fca5fb4e77fc2a9588956f5ebfd8efe7970dc7ccb584a841a8b1e7cb1bb168378fa023a
|
@@ -337,14 +337,20 @@ select.fake option {
|
|
337
337
|
width: 20px;
|
338
338
|
}
|
339
339
|
|
340
|
+
#new_form p input[type="text"] {
|
341
|
+
padding: 2px 4px 0 8px;
|
342
|
+
}
|
343
|
+
|
340
344
|
#content .note .label_with_checkbox input[type="checkbox"] {
|
341
345
|
position: relative;
|
342
|
-
top:
|
346
|
+
top: 5px;
|
343
347
|
margin-right: 5px;
|
344
348
|
height: 20px;
|
345
349
|
}
|
346
350
|
.note .label_with_checkbox label {
|
347
|
-
font-
|
351
|
+
font-weight: 400;
|
352
|
+
font-size: 14px;
|
353
|
+
cursor: pointer;
|
348
354
|
}
|
349
355
|
|
350
356
|
#content .search_form {
|
@@ -543,11 +549,12 @@ Page Bar Generator
|
|
543
549
|
#tabs a {
|
544
550
|
display: block;
|
545
551
|
margin: 0;
|
546
|
-
padding:
|
552
|
+
padding: 13px 12px 12px 12px;
|
547
553
|
text-decoration: none;
|
548
554
|
background: #efefef;
|
549
555
|
border-bottom: #ccc 1px solid;
|
550
556
|
color: #000;
|
557
|
+
font-size: 15px;
|
551
558
|
}
|
552
559
|
#tabs a:hover {
|
553
560
|
background: #666;
|
@@ -1,6 +1,6 @@
|
|
1
|
-
@import url('https://fonts.googleapis.com/css?family=
|
1
|
+
@import url('https://fonts.googleapis.com/css?family=Roboto:400');
|
2
2
|
|
3
|
-
$font-card:
|
3
|
+
$font-card: 400 15px "Roboto", sans-serif;
|
4
4
|
$color-main: #5f5f5f;
|
5
5
|
$color-light: #ececec;
|
6
6
|
|
@@ -91,13 +91,6 @@ $color-light: #ececec;
|
|
91
91
|
text-decoration: none;
|
92
92
|
}
|
93
93
|
}
|
94
|
-
.mb_placeholder {
|
95
|
-
top: 7px;
|
96
|
-
left: 7px;
|
97
|
-
span {
|
98
|
-
font-size: 16px;
|
99
|
-
}
|
100
|
-
}
|
101
94
|
}
|
102
95
|
}
|
103
96
|
.buttons {
|
@@ -160,11 +153,12 @@ $color-light: #ececec;
|
|
160
153
|
display: block;
|
161
154
|
width: 100% !important;
|
162
155
|
font: $font-card;
|
163
|
-
line-height:
|
164
|
-
padding:
|
156
|
+
line-height: 20px;
|
157
|
+
padding: 7px 6px 6px 6px;
|
165
158
|
border: 1px solid #dadada;
|
166
159
|
border-radius: 3px;
|
167
160
|
color: #2d2d2d;
|
161
|
+
height: 36px;
|
168
162
|
&.placeholder_js {
|
169
163
|
color: #adadad;
|
170
164
|
}
|
@@ -19,8 +19,24 @@ module Caboose
|
|
19
19
|
case name
|
20
20
|
when "first_name" then user.first_name = value
|
21
21
|
when "last_name" then user.last_name = value
|
22
|
-
when "username"
|
23
|
-
|
22
|
+
when "username"
|
23
|
+
uname = value.strip.downcase
|
24
|
+
if uname.length < 3
|
25
|
+
resp.error = "Username must be at least three characters."
|
26
|
+
elsif Caboose::User.where(:username => uname, :site_id => @site.id).where('id != ?',user.id).exists?
|
27
|
+
resp.error = "That username is already taken."
|
28
|
+
else
|
29
|
+
user.username = uname
|
30
|
+
end
|
31
|
+
when "email"
|
32
|
+
email = value.strip.downcase
|
33
|
+
if !email.include?('@')
|
34
|
+
resp.error = "Invalid email address."
|
35
|
+
elsif Caboose::User.where(:email => email, :site_id => @site.id).where('id != ?',user.id).exists?
|
36
|
+
resp.error = "That email address is already in the system."
|
37
|
+
else
|
38
|
+
user.email = email
|
39
|
+
end
|
24
40
|
when "phone" then user.phone = value
|
25
41
|
when "password"
|
26
42
|
confirm = params[:confirm]
|
@@ -221,8 +221,24 @@ module Caboose
|
|
221
221
|
when 'site_id' then user.site_id = value
|
222
222
|
when 'first_name' then user.first_name = value
|
223
223
|
when 'last_name' then user.last_name = value
|
224
|
-
when
|
225
|
-
|
224
|
+
when "username"
|
225
|
+
uname = value.strip.downcase
|
226
|
+
if uname.length < 3
|
227
|
+
resp.error = "Username must be at least three characters."
|
228
|
+
elsif Caboose::User.where(:username => uname, :site_id => @site.id).where('id != ?',user.id).exists?
|
229
|
+
resp.error = "That username is already taken."
|
230
|
+
else
|
231
|
+
user.username = uname
|
232
|
+
end
|
233
|
+
when "email"
|
234
|
+
email = value.strip.downcase
|
235
|
+
if !email.include?('@')
|
236
|
+
resp.error = "Invalid email address."
|
237
|
+
elsif Caboose::User.where(:email => email, :site_id => @site.id).where('id != ?',user.id).exists?
|
238
|
+
resp.error = "That email address is already in the system."
|
239
|
+
else
|
240
|
+
user.email = email
|
241
|
+
end
|
226
242
|
when 'address' then user.address = value
|
227
243
|
when 'address2' then user.address2 = value
|
228
244
|
when 'city' then user.city = value
|
data/app/models/caboose/user.rb
CHANGED
@@ -131,7 +131,7 @@ class Caboose::User < ActiveRecord::Base
|
|
131
131
|
if value.to_i > 0 # Add to role
|
132
132
|
if role_id == 'all'
|
133
133
|
Caboose::RoleMembership.where(:user_id => self.id).destroy_all
|
134
|
-
Caboose::Role.where(:site_id => self.site_id).reorder(:name).all.each{ |r| RoleMembership.create(:user_id => self.id, :role_id => r.id) }
|
134
|
+
Caboose::Role.where(:site_id => self.site_id).reorder(:name).all.each{ |r| Caboose::RoleMembership.create(:user_id => self.id, :role_id => r.id) }
|
135
135
|
else
|
136
136
|
if !Caboose::RoleMembership.where(:user_id => self.id, :role_id => role_id.to_i).exists?
|
137
137
|
Caboose::RoleMembership.create( :user_id => self.id, :role_id => role_id.to_i)
|
@@ -11,6 +11,7 @@ u = @logged_in_user
|
|
11
11
|
<h4 class="title">Account Information</h4>
|
12
12
|
<div class="input-holder"><div id='user_<%= @user.id %>_first_name' ></div></div>
|
13
13
|
<div class="input-holder"><div id='user_<%= @user.id %>_last_name' ></div></div>
|
14
|
+
<div class="input-holder"><div id='user_<%= @user.id %>_username' ></div></div>
|
14
15
|
<div class="input-holder"><div id='user_<%= @user.id %>_email' ></div></div>
|
15
16
|
<div class="input-holder"><div id='user_<%= @user.id %>_phone' ></div></div>
|
16
17
|
<div id='message2'></div>
|
@@ -87,7 +88,8 @@ $(document).ready(function() {
|
|
87
88
|
authenticity_token: '<%= form_authenticity_token %>',
|
88
89
|
attributes: [
|
89
90
|
{ name: 'first_name' , nice_name: 'First name' , type: 'text', value: <%= raw Caboose.json(@user.first_name) %>, width: 400 },
|
90
|
-
{ name: 'last_name' , nice_name: 'Last name' , type: 'text', value: <%= raw Caboose.json(@user.last_name) %>, width: 400 },
|
91
|
+
{ name: 'last_name' , nice_name: 'Last name' , type: 'text', value: <%= raw Caboose.json(@user.last_name) %>, width: 400 },
|
92
|
+
{ name: 'username' , nice_name: 'Username' , type: 'text', value: <%= raw Caboose.json(@user.username) %>, width: 400 },
|
91
93
|
{ name: 'email' , nice_name: 'Email' , type: 'text', value: <%= raw Caboose.json(@user.email) %>, width: 400 },
|
92
94
|
{ name: 'phone' , nice_name: 'Phone Number' , type: 'text', value: <%= raw Caboose.json(@user.phone) %>, width: 400 }
|
93
95
|
],
|
@@ -8,6 +8,17 @@
|
|
8
8
|
<p><div id='page_<%= @page.id %>_custom_css'></div></p>
|
9
9
|
|
10
10
|
<%= render :partial => 'caboose/pages/admin_footer' %>
|
11
|
+
|
12
|
+
<% content_for :caboose_js do %>
|
13
|
+
<style>
|
14
|
+
textarea {
|
15
|
+
font-family: monospace;
|
16
|
+
font-size: 14px;
|
17
|
+
line-height: 22px;
|
18
|
+
padding: 5px 15px !important;
|
19
|
+
}
|
20
|
+
</style>
|
21
|
+
<% end %>
|
11
22
|
<% content_for :caboose_js do %>
|
12
23
|
<script type='text/javascript'>
|
13
24
|
|
@@ -30,4 +41,4 @@ $(document).ready(function() {
|
|
30
41
|
});
|
31
42
|
|
32
43
|
</script>
|
33
|
-
<% end %>
|
44
|
+
<% end %>
|
@@ -8,6 +8,18 @@
|
|
8
8
|
<p><div id='page_<%= @page.id %>_custom_js'></div></p>
|
9
9
|
|
10
10
|
<%= render :partial => 'caboose/pages/admin_footer' %>
|
11
|
+
|
12
|
+
<% content_for :caboose_js do %>
|
13
|
+
<style>
|
14
|
+
textarea {
|
15
|
+
font-family: monospace;
|
16
|
+
font-size: 14px;
|
17
|
+
line-height: 22px;
|
18
|
+
padding: 5px 15px !important;
|
19
|
+
}
|
20
|
+
</style>
|
21
|
+
<% end %>
|
22
|
+
|
11
23
|
<% content_for :caboose_js do %>
|
12
24
|
<script type='text/javascript'>
|
13
25
|
|
@@ -26,10 +26,10 @@ $(document).ready(function() {
|
|
26
26
|
{ name: 'seo_title' , nice_name: 'SEO Title' , type: 'text' , value: <%= raw Caboose.json(@page.seo_title) %>, width: 580 },
|
27
27
|
{ name: 'meta_robots' , nice_name: 'Meta Robots' , type: 'text' , value: <%= raw Caboose.json(@page.meta_robots) %>, width: 580 },
|
28
28
|
{ name: 'canonical_url' , nice_name: 'Canonical URL' , type: 'text' , value: <%= raw Caboose.json(@page.canonical_url) %>, width: 580 },
|
29
|
-
{ name: 'meta_keywords' , nice_name: 'Meta Keywords' , type: 'textarea' , value: <%= raw Caboose.json(@page.meta_keywords) %>, width: 580, height:
|
30
|
-
{ name: 'meta_description' , nice_name: 'Meta Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.meta_description) %>, width: 580, height:
|
31
|
-
{ name: 'fb_description' , nice_name: 'Facebook Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.fb_description) %>, width: 580, height:
|
32
|
-
{ name: 'gp_description' , nice_name: 'Google+ Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.gp_description) %>, width: 580, height:
|
29
|
+
{ name: 'meta_keywords' , nice_name: 'Meta Keywords' , type: 'textarea' , value: <%= raw Caboose.json(@page.meta_keywords) %>, width: 580, height: 150 },
|
30
|
+
{ name: 'meta_description' , nice_name: 'Meta Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.meta_description) %>, width: 580, height: 150 },
|
31
|
+
{ name: 'fb_description' , nice_name: 'Facebook Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.fb_description) %>, width: 580, height: 150 },
|
32
|
+
{ name: 'gp_description' , nice_name: 'Google+ Description' , type: 'textarea' , value: <%= raw Caboose.json(@page.gp_description) %>, width: 580, height: 150 }
|
33
33
|
],
|
34
34
|
on_load: function() {
|
35
35
|
$('#page_<%= @page.id %>_meta_description').keyup(function() {
|
@@ -9,15 +9,16 @@
|
|
9
9
|
<%
|
10
10
|
tabs = {
|
11
11
|
'General' => "/admin/users/#{@edituser.id}",
|
12
|
-
'Invoices' => "/admin/users/#{@edituser.id}/invoices",
|
13
12
|
'Login Logs' => "/admin/login-logs?user_id=#{@edituser.id}",
|
14
13
|
'Password' => "/admin/users/#{@edituser.id}/password",
|
15
14
|
'Roles' => "/admin/users/#{@edituser.id}/roles",
|
16
15
|
'Delete' => "/admin/users/#{@edituser.id}/delete"
|
17
16
|
}
|
18
|
-
if @site.use_store
|
17
|
+
if @site.use_store || @site.is_master
|
19
18
|
arr = tabs.to_a.insert(1, ['Payment Method', "/admin/users/#{@edituser.id}/payment-method"])
|
20
19
|
tabs = Hash[arr]
|
20
|
+
arr = tabs.to_a.insert(2, ['Invoices', "/admin/users/#{@edituser.id}/invoices"])
|
21
|
+
tabs = Hash[arr]
|
21
22
|
arr = tabs.to_a.insert(5, ['Variant Limits', "/admin/users/#{@edituser.id}/variant-limits"])
|
22
23
|
tabs = Hash[arr]
|
23
24
|
end
|
@@ -5,12 +5,19 @@ pic = "http://gravatar.com/avatar/#{gravatar_id}.png?s=150" #&d=/assets/caboose/
|
|
5
5
|
|
6
6
|
<%= render :partial => 'caboose/users/admin_header' %>
|
7
7
|
|
8
|
-
<
|
9
|
-
<
|
10
|
-
<p
|
11
|
-
|
12
|
-
<
|
13
|
-
<p><div id='user_<%= @edituser.id %>
|
8
|
+
<div class="user-details-wrapper clearfix">
|
9
|
+
<div class="gravatar-holder">
|
10
|
+
<p id='gravatar'><img src='<%= pic %>' /><a href='http://gravatar.com'>Update on gravatar</a></p>
|
11
|
+
</div>
|
12
|
+
<div class="mb-holder">
|
13
|
+
<p><div id='user_<%= @edituser.id %>_first_name' ></div></p>
|
14
|
+
<p><div id='user_<%= @edituser.id %>_last_name' ></div></p>
|
15
|
+
<p><div id='user_<%= @edituser.id %>_username' ></div></p>
|
16
|
+
<p><div id='user_<%= @edituser.id %>_email' ></div></p>
|
17
|
+
<p><div id='user_<%= @edituser.id %>_locked' ></div></p>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
14
21
|
|
15
22
|
<%= render :partial => 'caboose/users/admin_footer' %>
|
16
23
|
|
@@ -18,6 +25,18 @@ pic = "http://gravatar.com/avatar/#{gravatar_id}.png?s=150" #&d=/assets/caboose/
|
|
18
25
|
<style type='text/css'>
|
19
26
|
#content input[type=checkbox] { position: relative; }
|
20
27
|
#roles { height: 200px; overflow-y: scroll; margin-bottom: 20px; }
|
28
|
+
.user-details-wrapper .gravatar-holder {
|
29
|
+
width: 25%;
|
30
|
+
float: right;
|
31
|
+
}
|
32
|
+
.user-details-wrapper .mb-holder {
|
33
|
+
width: 72%;
|
34
|
+
float: left;
|
35
|
+
padding-right: 2%;
|
36
|
+
}
|
37
|
+
#content2 {
|
38
|
+
max-width: 800px;
|
39
|
+
}
|
21
40
|
</style>
|
22
41
|
<% end %>
|
23
42
|
<% content_for :caboose_js do %>
|
@@ -31,11 +50,11 @@ $(document).ready(function() {
|
|
31
50
|
update_url: '/admin/users/<%= @edituser.id %>',
|
32
51
|
authenticity_token: '<%= form_authenticity_token %>',
|
33
52
|
attributes: [
|
34
|
-
{ name: 'first_name' , nice_name: 'First name', type: 'text' , value: <%= raw Caboose.json(@edituser.first_name) %>, width:
|
35
|
-
{ name: 'last_name' , nice_name: 'Last name' , type: 'text' , value: <%= raw Caboose.json(@edituser.last_name) %>, width:
|
36
|
-
{ name: 'username' , nice_name: 'Username' , type: 'text' , value: <%= raw Caboose.json(@edituser.username) %>, width:
|
37
|
-
{ name: 'email' , nice_name: 'Email' , type: 'text' , value: <%= raw Caboose.json(@edituser.email) %>, width:
|
38
|
-
{ name: 'locked' , nice_name: 'Locked' , type: 'checkbox' , value: <%= @edituser.locked ? 1 : 0 %>, width:
|
53
|
+
{ name: 'first_name' , nice_name: 'First name', type: 'text' , value: <%= raw Caboose.json(@edituser.first_name) %>, width: 350 },
|
54
|
+
{ name: 'last_name' , nice_name: 'Last name' , type: 'text' , value: <%= raw Caboose.json(@edituser.last_name) %>, width: 350 },
|
55
|
+
{ name: 'username' , nice_name: 'Username' , type: 'text' , value: <%= raw Caboose.json(@edituser.username) %>, width: 350 },
|
56
|
+
{ name: 'email' , nice_name: 'Email' , type: 'text' , value: <%= raw Caboose.json(@edituser.email) %>, width: 350 },
|
57
|
+
{ name: 'locked' , nice_name: 'Locked' , type: 'checkbox' , value: <%= @edituser.locked ? 1 : 0 %>, width: 350 }
|
39
58
|
]
|
40
59
|
});
|
41
60
|
});
|
@@ -40,8 +40,13 @@ $(document).ready(function() {
|
|
40
40
|
});
|
41
41
|
});
|
42
42
|
|
43
|
-
function get_role_ids(u) { return $(u.roles).map(function(i, r) { return r.id }).get(); }
|
44
|
-
function get_role_names(u) {
|
43
|
+
function get_role_ids(u) { console.dir(u.roles); return $(u.roles).map(function(i, r) { return r.id }).get(); }
|
44
|
+
function get_role_names(u) {
|
45
|
+
seen_roles = [];
|
46
|
+
role_names = [];
|
47
|
+
$(u.roles).map(function(i, r) { if (seen_roles.indexOf(r.id) >= 0) { } else { role_names.push(r.name); seen_roles.push(r.id); } });
|
48
|
+
return role_names.join(', ');
|
49
|
+
}
|
45
50
|
|
46
51
|
</script>
|
47
52
|
<% end %>
|
data/lib/caboose/version.rb
CHANGED