adminsite 2.1.2 → 3.0.0
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/Gemfile.lock +37 -28
- data/adminsite.gemspec +50 -0
- data/app/admin_configs/adminsite/adminsite_admin_user_admin_config.rb +3 -1
- data/app/admin_configs/adminsite/adminsite_admin_user_role_admin_config.rb +10 -0
- data/app/assets/images/adminsite/admin/logo.svg +21 -0
- data/app/assets/stylesheets/adminsite/admin/base.scss +7 -5
- data/app/assets/stylesheets/adminsite/admin/pagination.scss +22 -20
- data/app/controllers/adminsite/admin/adminsite_admin_users_controller.rb +11 -0
- data/app/controllers/adminsite/admin/base_controller.rb +0 -2
- data/app/controllers/adminsite/admin/resources_controller.rb +4 -0
- data/app/controllers/adminsite/admin_application_controller.rb +25 -0
- data/app/helpers/admin/adminsite_application_helper.rb +19 -8
- data/app/models/adminsite/ability.rb +25 -0
- data/app/models/adminsite/admin_config/base.rb +4 -0
- data/app/models/adminsite/admin_user.rb +2 -0
- data/app/models/adminsite/admin_user_role.rb +17 -0
- data/app/views/adminsite/admin/resources/_list.haml +27 -15
- data/app/views/adminsite/admin/resources/_search_form.html.haml +2 -7
- data/db/migrate/20101007000002_create_admin_user_roles.rb +20 -0
- data/lib/adminsite/engine.rb +1 -1
- data/lib/adminsite/version.rb +1 -1
- data/lib/generators/adminsite/install/install_generator.rb +3 -0
- data/lib/tasks/adminsite.rake +2 -1
- metadata +23 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 11c32678a8ab293d0703a6fdc62aa286020c03d6
|
|
4
|
+
data.tar.gz: c35eeb7d4e9826bff2a4abae767b43c489b279d4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 90ce2e5e69b13b7cbcdbd112a64c23b06af461e76d98fd661349c0053c2110f485e9534869cb7e6e3ce20bd51adccf11f1d8eebcf4f35c915c5c5bd39980d49d
|
|
7
|
+
data.tar.gz: db55ffd765b8f17913496be694d79a9c87a94667037775e9b45f0069e4949861198e7549f8f143c062af49e91cba2fed98f45e5bababe7ced1e7919ab474dc69
|
data/Gemfile.lock
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
adminsite (
|
|
4
|
+
adminsite (3.0.0)
|
|
5
5
|
actionpack-page_caching
|
|
6
|
+
cancancan (~> 1.10)
|
|
6
7
|
codemirror-rails (>= 4.8)
|
|
7
8
|
devise (~> 3.4)
|
|
8
9
|
domainatrix
|
|
@@ -56,17 +57,19 @@ GEM
|
|
|
56
57
|
minitest (~> 5.1)
|
|
57
58
|
thread_safe (~> 0.3, >= 0.3.4)
|
|
58
59
|
tzinfo (~> 1.1)
|
|
59
|
-
addressable (2.
|
|
60
|
+
addressable (2.4.0)
|
|
60
61
|
arel (6.0.3)
|
|
61
|
-
bcrypt (3.1.
|
|
62
|
+
bcrypt (3.1.11)
|
|
62
63
|
builder (3.2.2)
|
|
64
|
+
cancancan (1.13.1)
|
|
63
65
|
climate_control (0.0.3)
|
|
64
66
|
activesupport (>= 3.0)
|
|
65
|
-
cocaine (0.5.
|
|
67
|
+
cocaine (0.5.8)
|
|
66
68
|
climate_control (>= 0.0.3, < 1.0)
|
|
67
|
-
codemirror-rails (5.
|
|
69
|
+
codemirror-rails (5.11)
|
|
68
70
|
railties (>= 3.0, < 5)
|
|
69
|
-
|
|
71
|
+
concurrent-ruby (1.0.1)
|
|
72
|
+
devise (3.5.6)
|
|
70
73
|
bcrypt (~> 3.0)
|
|
71
74
|
orm_adapter (~> 0.1)
|
|
72
75
|
railties (>= 3.2.6, < 5)
|
|
@@ -78,15 +81,15 @@ GEM
|
|
|
78
81
|
domainatrix (0.0.11)
|
|
79
82
|
addressable
|
|
80
83
|
erubis (2.7.0)
|
|
81
|
-
formtastic (3.1.
|
|
84
|
+
formtastic (3.1.4)
|
|
82
85
|
actionpack (>= 3.2.13)
|
|
83
86
|
globalid (0.3.6)
|
|
84
87
|
activesupport (>= 4.1.0)
|
|
85
88
|
haml (4.0.7)
|
|
86
89
|
tilt
|
|
87
90
|
i18n (0.7.0)
|
|
88
|
-
jquery-rails (4.
|
|
89
|
-
rails-dom-testing (
|
|
91
|
+
jquery-rails (4.1.1)
|
|
92
|
+
rails-dom-testing (>= 1, < 3)
|
|
90
93
|
railties (>= 4.2.0)
|
|
91
94
|
thor (>= 0.14, < 2.0)
|
|
92
95
|
json (1.8.3)
|
|
@@ -96,22 +99,24 @@ GEM
|
|
|
96
99
|
liquid (3.0.6)
|
|
97
100
|
loofah (2.0.3)
|
|
98
101
|
nokogiri (>= 1.5.9)
|
|
99
|
-
mail (2.6.
|
|
100
|
-
mime-types (>= 1.16, <
|
|
101
|
-
mime-types (
|
|
102
|
+
mail (2.6.4)
|
|
103
|
+
mime-types (>= 1.16, < 4)
|
|
104
|
+
mime-types (3.0)
|
|
105
|
+
mime-types-data (~> 3.2015)
|
|
106
|
+
mime-types-data (3.2016.0221)
|
|
102
107
|
mimemagic (0.3.0)
|
|
103
|
-
|
|
108
|
+
mini_portile2 (2.0.0)
|
|
104
109
|
minitest (5.7.0)
|
|
105
|
-
nokogiri (1.6.
|
|
106
|
-
|
|
110
|
+
nokogiri (1.6.7.2)
|
|
111
|
+
mini_portile2 (~> 2.0.0.rc2)
|
|
107
112
|
orm_adapter (0.5.0)
|
|
108
|
-
paperclip (4.3.
|
|
113
|
+
paperclip (4.3.6)
|
|
109
114
|
activemodel (>= 3.2.0)
|
|
110
115
|
activesupport (>= 3.2.0)
|
|
111
116
|
cocaine (~> 0.5.5)
|
|
112
117
|
mime-types
|
|
113
118
|
mimemagic (= 0.3.0)
|
|
114
|
-
polyamorous (1.
|
|
119
|
+
polyamorous (1.3.0)
|
|
115
120
|
activerecord (>= 3.0)
|
|
116
121
|
rack (1.6.4)
|
|
117
122
|
rack-test (0.6.3)
|
|
@@ -133,7 +138,7 @@ GEM
|
|
|
133
138
|
activesupport (>= 4.2.0.beta, < 5.0)
|
|
134
139
|
nokogiri (~> 1.6.0)
|
|
135
140
|
rails-deprecated_sanitizer (>= 1.0.1)
|
|
136
|
-
rails-html-sanitizer (1.0.
|
|
141
|
+
rails-html-sanitizer (1.0.3)
|
|
137
142
|
loofah (~> 2.0)
|
|
138
143
|
railties (4.2.3)
|
|
139
144
|
actionpack (= 4.2.3)
|
|
@@ -149,8 +154,8 @@ GEM
|
|
|
149
154
|
polyamorous (~> 1.2)
|
|
150
155
|
rdoc (4.2.0)
|
|
151
156
|
json (~> 1.4)
|
|
152
|
-
responders (2.1.
|
|
153
|
-
railties (>= 4.2.0, < 5)
|
|
157
|
+
responders (2.1.2)
|
|
158
|
+
railties (>= 4.2.0, < 5.1)
|
|
154
159
|
rspec (3.3.0)
|
|
155
160
|
rspec-core (~> 3.3.0)
|
|
156
161
|
rspec-expectations (~> 3.3.0)
|
|
@@ -164,7 +169,7 @@ GEM
|
|
|
164
169
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
165
170
|
rspec-support (~> 3.3.0)
|
|
166
171
|
rspec-support (3.3.0)
|
|
167
|
-
sass (3.4.
|
|
172
|
+
sass (3.4.22)
|
|
168
173
|
sass-rails (5.0.4)
|
|
169
174
|
railties (>= 4.0.0, < 5.0)
|
|
170
175
|
sass (~> 3.1)
|
|
@@ -182,18 +187,19 @@ GEM
|
|
|
182
187
|
json (~> 1.8)
|
|
183
188
|
simplecov-html (~> 0.10.0)
|
|
184
189
|
simplecov-html (0.10.0)
|
|
185
|
-
sprockets (3.
|
|
190
|
+
sprockets (3.6.0)
|
|
191
|
+
concurrent-ruby (~> 1.0)
|
|
186
192
|
rack (> 1, < 3)
|
|
187
|
-
sprockets-rails (
|
|
188
|
-
actionpack (>=
|
|
189
|
-
activesupport (>=
|
|
190
|
-
sprockets (>=
|
|
193
|
+
sprockets-rails (3.0.4)
|
|
194
|
+
actionpack (>= 4.0)
|
|
195
|
+
activesupport (>= 4.0)
|
|
196
|
+
sprockets (>= 3.0.0)
|
|
191
197
|
thor (0.19.1)
|
|
192
198
|
thread_safe (0.3.5)
|
|
193
|
-
tilt (2.0.
|
|
199
|
+
tilt (2.0.2)
|
|
194
200
|
tzinfo (1.2.2)
|
|
195
201
|
thread_safe (~> 0.1)
|
|
196
|
-
warden (1.2.
|
|
202
|
+
warden (1.2.6)
|
|
197
203
|
rack (>= 1.0)
|
|
198
204
|
|
|
199
205
|
PLATFORMS
|
|
@@ -207,3 +213,6 @@ DEPENDENCIES
|
|
|
207
213
|
rspec
|
|
208
214
|
shoulda
|
|
209
215
|
simplecov (>= 0.10.0)
|
|
216
|
+
|
|
217
|
+
BUNDLED WITH
|
|
218
|
+
1.10.6
|
data/adminsite.gemspec
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
2
|
+
|
|
3
|
+
# Maintain your gem's version:
|
|
4
|
+
require "adminsite/version"
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |s|
|
|
7
|
+
s.name = "adminsite"
|
|
8
|
+
s.version = Adminsite::VERSION
|
|
9
|
+
s.authors = ["Robin Wunderlin"]
|
|
10
|
+
s.email = "robin@wunderlin.dk"
|
|
11
|
+
s.homepage = "http://www.rhg.dk"
|
|
12
|
+
s.summary = "Basic Admin Backend interface for Ruby on Rails"
|
|
13
|
+
s.description = "Basic Admin Backend interface for Ruby on Rails"
|
|
14
|
+
|
|
15
|
+
s.files = Dir["[A-Z]*", "{app,config,db,public,lib,generators}/**/*"]+ ["LICENSE", "Rakefile", "README.markdown"]
|
|
16
|
+
s.extra_rdoc_files = [
|
|
17
|
+
"README.markdown"
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
s.required_ruby_version = '>= 2.0.0'
|
|
21
|
+
s.require_paths = ["lib"]
|
|
22
|
+
|
|
23
|
+
# s.date = "#{Time.now.to_date}"
|
|
24
|
+
s.post_install_message = File.open('USAGE').read
|
|
25
|
+
|
|
26
|
+
s.add_runtime_dependency(%q<rails>, [">= 4.1"])
|
|
27
|
+
s.add_runtime_dependency(%q<actionpack-page_caching>, [">= 0"])
|
|
28
|
+
s.add_runtime_dependency(%q<jquery-rails>, [">= 0"])
|
|
29
|
+
|
|
30
|
+
s.add_runtime_dependency(%q<domainatrix>, [">= 0"])
|
|
31
|
+
|
|
32
|
+
s.add_runtime_dependency(%q<devise>, ["~> 3.4"])
|
|
33
|
+
s.add_runtime_dependency(%q<cancancan>, ["~> 1.10"])
|
|
34
|
+
s.add_runtime_dependency(%q<kaminari>, [">= 0.15.0"])
|
|
35
|
+
s.add_runtime_dependency(%q<ransack>, [">= 1.3"])
|
|
36
|
+
|
|
37
|
+
s.add_runtime_dependency(%q<haml>, [">= 0"])
|
|
38
|
+
s.add_runtime_dependency(%q<formtastic>, [">= 3.1.3"])
|
|
39
|
+
|
|
40
|
+
s.add_runtime_dependency(%q<sass-rails>, [">= 0"])
|
|
41
|
+
|
|
42
|
+
s.add_dependency "codemirror-rails", '>= 4.8'
|
|
43
|
+
s.add_runtime_dependency(%q<liquid>, [">= 0"])
|
|
44
|
+
|
|
45
|
+
s.add_runtime_dependency(%q<paperclip>, [">= 0"])
|
|
46
|
+
|
|
47
|
+
s.add_development_dependency("bundler", ">= 1.5")
|
|
48
|
+
s.add_development_dependency("rake")
|
|
49
|
+
end
|
|
50
|
+
|
|
@@ -4,6 +4,7 @@ module Adminsite
|
|
|
4
4
|
def attributes_index
|
|
5
5
|
[ :name,
|
|
6
6
|
:email,
|
|
7
|
+
:admin_user_roles,
|
|
7
8
|
:updated_at
|
|
8
9
|
]
|
|
9
10
|
end
|
|
@@ -12,7 +13,8 @@ module Adminsite
|
|
|
12
13
|
[ :name,
|
|
13
14
|
:email,
|
|
14
15
|
:password,
|
|
15
|
-
:password_confirmation
|
|
16
|
+
:password_confirmation,
|
|
17
|
+
:admin_user_roles
|
|
16
18
|
]
|
|
17
19
|
end
|
|
18
20
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 142 142">
|
|
4
|
+
<rect fill="#1D9DD9" width="142" height="142"/>
|
|
5
|
+
<polygon opacity="0.2" fill="#FFFFFF" points="142,142 0,142 142,0 "/>
|
|
6
|
+
<g fill="#FFFFFF">
|
|
7
|
+
<path d="M38,86.9h-3c-0.5,0-0.8-0.3-0.8-0.8V56.7c0-0.5,0.3-0.8,0.8-0.8h11.3c2.3,0,4.2,0.7,5.5,2
|
|
8
|
+
c1.3,1.3,2,3.2,2,5.5v4.1c0,3.7-1.5,6-4.6,7v0.2L54.5,86c0.4,0.6,0.1,1-0.6,1h-3c-0.8,0-1.3-0.3-1.5-0.8L44.3,75h-4.9
|
|
9
|
+
c-0.4,0-0.6,0.2-0.6,0.5v10.6C38.8,86.7,38.5,86.9,38,86.9z M39.3,71.1h6.1c2.4,0,3.6-1.2,3.6-3.5v-4.1c0-2.4-1.2-3.6-3.6-3.6h-6.1
|
|
10
|
+
c-0.4,0-0.5,0.2-0.5,0.5v10.2C38.8,71,39,71.1,39.3,71.1z"/>
|
|
11
|
+
<path d="M64.2,86.9h-3c-0.5,0-0.8-0.3-0.8-0.8V56.7c0-0.5,0.3-0.8,0.8-0.8h3c0.5,0,0.8,0.3,0.8,0.8v12.1
|
|
12
|
+
c0,0.3,0.2,0.5,0.6,0.5h10.2c0.3,0,0.5-0.2,0.5-0.5V56.7c0-0.5,0.3-0.8,0.8-0.8h3.1c0.5,0,0.8,0.3,0.8,0.8v29.4
|
|
13
|
+
c0,0.5-0.3,0.8-0.8,0.8h-3.1c-0.5,0-0.8-0.3-0.8-0.8V73.9c0-0.3-0.2-0.5-0.5-0.5H65.6c-0.4,0-0.6,0.2-0.6,0.5v12.2
|
|
14
|
+
C65.1,86.7,64.8,86.9,64.2,86.9z"/>
|
|
15
|
+
<path d="M100.3,86.9h-5.2c-2.4,0-4.2-0.7-5.5-2c-1.3-1.3-2-3.2-2-5.5V63.4c0-2.4,0.7-4.2,2-5.5c1.3-1.3,3.1-2,5.5-2
|
|
16
|
+
h5.2c2.4,0,4.2,0.7,5.5,2c1.3,1.3,2,3.1,2,5.5v1.7c0,0.6-0.3,0.9-0.8,0.9h-3c-0.5,0-0.8-0.3-0.8-0.9v-1.5c0-2.4-1.2-3.6-3.5-3.6
|
|
17
|
+
h-3.8c-2.3,0-3.5,1.2-3.5,3.6v15.7c0,2.4,1.2,3.6,3.5,3.6h3.8c2.3,0,3.5-1.2,3.5-3.6v-4.3c0-0.3-0.2-0.5-0.5-0.5h-3.9
|
|
18
|
+
c-0.5,0-0.8-0.3-0.8-0.8v-2.5c0-0.5,0.3-0.8,0.8-0.8h8.1c0.7,0,1,0.3,1,1v8.1c0,2.3-0.7,4.2-2,5.5
|
|
19
|
+
C104.5,86.3,102.7,86.9,100.3,86.9z"/>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -60,7 +60,6 @@ body.adminsite {
|
|
|
60
60
|
margin-bottom: 8px;
|
|
61
61
|
}
|
|
62
62
|
#wrapper {
|
|
63
|
-
overflow: auto;
|
|
64
63
|
margin-left: 20px;
|
|
65
64
|
margin-right: 20px;
|
|
66
65
|
}
|
|
@@ -323,7 +322,7 @@ body.adminsite {
|
|
|
323
322
|
margin-bottom: 10px;
|
|
324
323
|
}
|
|
325
324
|
h1 {
|
|
326
|
-
background: asset-url("adminsite/admin/logo.
|
|
325
|
+
background: asset-url("adminsite/admin/logo.svg") no-repeat;
|
|
327
326
|
font-size: 135%;
|
|
328
327
|
font-weight: normal;
|
|
329
328
|
padding-left: 124px;
|
|
@@ -350,12 +349,14 @@ body.adminsite {
|
|
|
350
349
|
padding: 0.2em 0.4em;
|
|
351
350
|
font-weight: bold;
|
|
352
351
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
352
|
+
tbody {
|
|
353
|
+
tr:nth-child(even) {background: #FFF}
|
|
354
|
+
tr:nth-child(odd) {background: #f4f5f5}
|
|
355
|
+
}
|
|
356
356
|
th, td {
|
|
357
357
|
border: 1px solid #cccccc;
|
|
358
358
|
padding: 0.2em 0.4em;
|
|
359
|
+
vertical-align: top;
|
|
359
360
|
}
|
|
360
361
|
th {
|
|
361
362
|
background: #cccccc;
|
|
@@ -363,6 +364,7 @@ body.adminsite {
|
|
|
363
364
|
text-align: left;
|
|
364
365
|
font-weight: normal;
|
|
365
366
|
font-variant: small-caps;
|
|
367
|
+
white-space: nowrap;
|
|
366
368
|
}
|
|
367
369
|
tr.old td {
|
|
368
370
|
opacity: 0.5;
|
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
$position : left ;
|
|
2
2
|
$primary-color: #efefef;
|
|
3
3
|
$secondary-color: #BBB;
|
|
4
|
-
.pagination
|
|
5
|
-
{
|
|
4
|
+
.pagination {
|
|
6
5
|
text-align: $position ;
|
|
7
6
|
color: #666;
|
|
8
|
-
|
|
9
|
-
.pagination a {
|
|
10
|
-
border-radius: 2px;
|
|
11
|
-
padding: 0.5em 0.7em;
|
|
12
|
-
border-color: #aaa;
|
|
13
|
-
border-style: solid;
|
|
14
|
-
background-color: #efefef;
|
|
15
|
-
background-color: $primary-color;
|
|
16
|
-
border-top: 2px solid $secondary-color ;
|
|
17
|
-
border: 1px solid $secondary-color ;
|
|
18
|
-
text-decoration: none;
|
|
7
|
+
margin:1em 0;
|
|
19
8
|
font-size: smaller;
|
|
9
|
+
a {
|
|
10
|
+
border-radius: 2px;
|
|
11
|
+
padding: 0.5em 0.7em;
|
|
12
|
+
background-color: $primary-color;
|
|
13
|
+
border-color: #aaa;
|
|
14
|
+
border-style: solid;
|
|
15
|
+
border-top: 2px solid $secondary-color ;
|
|
16
|
+
border: 1px solid $secondary-color ;
|
|
17
|
+
text-decoration: none;
|
|
18
|
+
&:hover, &:focus {
|
|
19
|
+
background-image: -webkit-linear-gradient(to top, #cfcfcf, #cfcfcf);
|
|
20
|
+
background-image: linear-gradient(to top, #cfcfcf, #cfcfcf);
|
|
21
|
+
}
|
|
22
|
+
&.more {
|
|
23
|
+
box-shadow: 0 0 0 0 transparent;
|
|
24
|
+
background: transparent;
|
|
25
|
+
}
|
|
20
26
|
}
|
|
21
|
-
.
|
|
22
|
-
|
|
23
|
-
background-image: -webkit-linear-gradient(top, #cfcfcf, #cfcfcf);
|
|
24
|
-
}
|
|
25
|
-
.pagination a.more {
|
|
26
|
-
box-shadow: 0 0 0 0 transparent;
|
|
27
|
-
background: transparent;
|
|
27
|
+
.current {
|
|
28
|
+
padding: 0.5em 0.7em;
|
|
28
29
|
}
|
|
30
|
+
}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
module Adminsite
|
|
2
2
|
class Admin::AdminsiteAdminUsersController < Adminsite::Admin::ResourcesController
|
|
3
3
|
|
|
4
|
+
def update
|
|
5
|
+
remove_empty_pw
|
|
6
|
+
super
|
|
7
|
+
end
|
|
8
|
+
|
|
4
9
|
protected
|
|
5
10
|
|
|
11
|
+
def remove_empty_pw
|
|
12
|
+
[:password, :password_confirmation].each do |p|
|
|
13
|
+
params[:adminsite_admin_user][p] = nil if params[:adminsite_admin_user][p].blank?
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
6
17
|
def self.resource_class
|
|
7
18
|
Adminsite::AdminUser
|
|
8
19
|
end
|
|
@@ -4,6 +4,31 @@
|
|
|
4
4
|
class Adminsite::AdminApplicationController < ActionController::Base
|
|
5
5
|
helper :all, "admin/adminsite_application"
|
|
6
6
|
layout 'adminsite/admin'
|
|
7
|
+
|
|
7
8
|
before_filter :authenticate_adminsite_admin_user!
|
|
8
9
|
|
|
10
|
+
include ::CanCan::ControllerAdditions
|
|
11
|
+
authorize_resource class: lambda { |context| context.resource_class }
|
|
12
|
+
# check_authorization
|
|
13
|
+
|
|
14
|
+
rescue_from CanCan::AccessDenied do |exception|
|
|
15
|
+
render text: exception.message
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def authorize!(action, subject, *args)
|
|
19
|
+
subject = subject.call(self) if subject.is_a?(Proc)
|
|
20
|
+
puts "#{self}#authorize!(#{action}, #{subject}, #{args.inspect})" if Rails.env.development?
|
|
21
|
+
super(action, subject, *args)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def resource_class
|
|
25
|
+
self
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
protected
|
|
29
|
+
|
|
30
|
+
def current_ability
|
|
31
|
+
@current_ability ||= ::Adminsite::Ability.new(current_adminsite_admin_user)
|
|
32
|
+
end
|
|
33
|
+
|
|
9
34
|
end
|
|
@@ -36,16 +36,21 @@ module Admin::AdminsiteApplicationHelper
|
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
def format_response_value(value)
|
|
39
|
+
def format_response_value(value, add_td_wrappers = true)
|
|
40
40
|
value = value.url if defined?(PictureUploader) && value.is_a?(PictureUploader)
|
|
41
|
-
response = '
|
|
41
|
+
response = ''
|
|
42
|
+
response = '<td>' if add_td_wrappers
|
|
42
43
|
if is_url?(value)
|
|
43
|
-
response += link_to(value,value, target:
|
|
44
|
-
response += "<br
|
|
44
|
+
response += link_to(value,value, target: '_blank')
|
|
45
|
+
response += "<br>#{image_tag(value)}" if is_image?(value)
|
|
45
46
|
else
|
|
46
47
|
response += h value
|
|
47
48
|
end
|
|
48
|
-
|
|
49
|
+
if add_td_wrappers
|
|
50
|
+
response + '</td>'
|
|
51
|
+
else
|
|
52
|
+
response
|
|
53
|
+
end
|
|
49
54
|
end
|
|
50
55
|
|
|
51
56
|
def is_url?(value)
|
|
@@ -149,7 +154,7 @@ module Admin::AdminsiteApplicationHelper
|
|
|
149
154
|
end
|
|
150
155
|
|
|
151
156
|
def link_to_show(resource)
|
|
152
|
-
link_to image_tag('adminsite/admin/magnifier.png', :size => '16x16'), admin_resource_path(resource.id), target:
|
|
157
|
+
link_to image_tag('adminsite/admin/magnifier.png', :size => '16x16'), admin_resource_path(resource.id), target: '_blank'
|
|
153
158
|
end
|
|
154
159
|
|
|
155
160
|
def link_to_edit(resource)
|
|
@@ -160,11 +165,17 @@ module Admin::AdminsiteApplicationHelper
|
|
|
160
165
|
link_to image_tag('adminsite/admin/cross.png', :size => '16x16'), admin_resource_path(resource.id), data: { :confirm => 'Are you sure?'} , :method => :delete
|
|
161
166
|
end
|
|
162
167
|
|
|
163
|
-
def display_resource_value(resource, attr)
|
|
168
|
+
def display_resource_value(resource, attr, add_td_wrappers = true)
|
|
164
169
|
value = nil
|
|
165
170
|
attr.to_s.split('.').each{|a| value = (value || resource).send(a) }
|
|
166
171
|
value = display_referenced_resource(value) if value.is_a?(ActiveRecord::Base)
|
|
167
|
-
|
|
172
|
+
if value.is_a?(ActiveRecord::Associations::CollectionProxy)
|
|
173
|
+
value = value.collect do |r|
|
|
174
|
+
label = Adminsite::AdminConfig::Base.admin_config_of_class(r.class, nil, current_adminsite_admin_user).label_attribute(r)
|
|
175
|
+
display_resource_value(r, label, false)
|
|
176
|
+
end.join(', ')
|
|
177
|
+
end
|
|
178
|
+
format_response_value(value, add_td_wrappers).html_safe
|
|
168
179
|
end
|
|
169
180
|
|
|
170
181
|
def display_referenced_resource(resource)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Adminsite
|
|
2
|
+
class Ability
|
|
3
|
+
include CanCan::Ability
|
|
4
|
+
|
|
5
|
+
def initialize(user)
|
|
6
|
+
user ||= AdminUser.new
|
|
7
|
+
user.admin_user_roles.each do |role|
|
|
8
|
+
case role.name.to_sym
|
|
9
|
+
when :admin
|
|
10
|
+
can :manage, :all
|
|
11
|
+
when :editor
|
|
12
|
+
can :read, Adminsite::Page
|
|
13
|
+
can :read, Adminsite::PageLayout
|
|
14
|
+
can :read, Adminsite::FileAsset
|
|
15
|
+
can :read, Adminsite::AdminUser
|
|
16
|
+
can :read, Adminsite::AdminUserRole
|
|
17
|
+
when :customer
|
|
18
|
+
# can :read, Adminsite::Page
|
|
19
|
+
# can :read, Adminsite::PageLayout
|
|
20
|
+
# can :read, Adminsite::FileAsset
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Adminsite
|
|
2
|
+
class AdminUserRole < ActiveRecord::Base
|
|
3
|
+
|
|
4
|
+
has_and_belongs_to_many :admin_users
|
|
5
|
+
|
|
6
|
+
validates :name, presence: true, uniqueness: true
|
|
7
|
+
|
|
8
|
+
before_validation :downcase_name
|
|
9
|
+
|
|
10
|
+
protected
|
|
11
|
+
|
|
12
|
+
def downcase_name
|
|
13
|
+
self.name = name.try(:downcase)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,19 +1,31 @@
|
|
|
1
|
+
= paginate(@resources, :window => 2)
|
|
2
|
+
|
|
1
3
|
%table
|
|
2
|
-
%
|
|
3
|
-
%
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
- @resources.each do |resource|
|
|
8
|
-
%tr{onClick: 'Adminsite.selectedRow(this);'}
|
|
9
|
-
%td.resource_selection_cell
|
|
10
|
-
= check_box_tag 'collection_selection[]', resource.id, false, :class => 'collection_selection'
|
|
4
|
+
%thead
|
|
5
|
+
%tr
|
|
6
|
+
- if resource_admin_config.actions_placement == :left
|
|
7
|
+
%th Actions
|
|
8
|
+
%th
|
|
11
9
|
- resource_admin_config.attributes_index.each do |attr|
|
|
12
|
-
=
|
|
13
|
-
|
|
14
|
-
%
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
%th= sort_link(@q, attr)
|
|
11
|
+
- if resource_admin_config.actions_placement == :right
|
|
12
|
+
%th Actions
|
|
13
|
+
%tbody
|
|
14
|
+
- @resources.each do |resource|
|
|
15
|
+
%tr{onclick: 'Adminsite.selectedRow(this);'}
|
|
16
|
+
- if resource_admin_config.actions_placement == :left
|
|
17
|
+
%td.actions
|
|
18
|
+
%ul
|
|
19
|
+
- resource_admin_config.default_member_actions(resource).each do |action|
|
|
20
|
+
%li= send("link_to_#{action}", resource)
|
|
21
|
+
%td.resource_selection_cell
|
|
22
|
+
= check_box_tag 'collection_selection[]', resource.id, false, :class => 'collection_selection'
|
|
23
|
+
- resource_admin_config.attributes_index.each do |attr|
|
|
24
|
+
= display_resource_value(resource, attr)
|
|
25
|
+
- if resource_admin_config.actions_placement == :right
|
|
26
|
+
%td.actions
|
|
27
|
+
%ul
|
|
28
|
+
- resource_admin_config.default_member_actions(resource).each do |action|
|
|
29
|
+
%li= send("link_to_#{action}", resource)
|
|
17
30
|
|
|
18
31
|
= paginate(@resources, :window => 2)
|
|
19
|
-
%br
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
- if resource_admin_config.attributes_search.any?
|
|
2
2
|
.search_form
|
|
3
|
-
%a#show{
|
|
4
|
-
%a#hide{
|
|
3
|
+
%a#show{onclick: 'Adminsite.showSearchForm();', style: "#{'display:none' if @show_search_form}" } Show Filters
|
|
4
|
+
%a#hide{onclick: 'Adminsite.hideSearchForm();', style: "#{'display:none' unless @show_search_form}" } Hide Filters
|
|
5
5
|
= search_form_for(@q, :url => admin_resource_path(nil), method: :get, html: { style: "#{'display:none' unless @show_search_form}"} ) do |f|
|
|
6
6
|
= hidden_field_tag :admin_menu, params[:admin_menu]
|
|
7
7
|
%div{id: "#{controller_name}-search"}
|
|
@@ -30,11 +30,6 @@
|
|
|
30
30
|
predicate_obj.onchange();
|
|
31
31
|
- else
|
|
32
32
|
= f.search_field("#{search_attr}_#{predicates.first}", value: field_value )
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
33
|
.actions
|
|
37
34
|
= f.submit "Search"
|
|
38
35
|
= link_to "Reset" , admin_resource_path(nil)
|
|
39
|
-
|
|
40
|
-
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class CreateAdminUserRoles < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :adminsite_admin_user_roles do |t|
|
|
4
|
+
t.string :name, null: false
|
|
5
|
+
t.timestamps
|
|
6
|
+
end
|
|
7
|
+
add_index :adminsite_admin_user_roles, :name, unique: true
|
|
8
|
+
|
|
9
|
+
create_table :adminsite_admin_user_roles_users, id: false do |t|
|
|
10
|
+
t.references :admin_user, null: false
|
|
11
|
+
t.references :admin_user_role, null: false
|
|
12
|
+
end
|
|
13
|
+
add_index :adminsite_admin_user_roles_users, :admin_user_id
|
|
14
|
+
add_index :adminsite_admin_user_roles_users, :admin_user_role_id
|
|
15
|
+
|
|
16
|
+
Adminsite::AdminUserRole.create [{name: 'admin'}, {name: 'editor'},{name: 'customer'}]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
data/lib/adminsite/engine.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
%w(rails action_controller/page_caching).each{|f| require f }
|
|
2
2
|
%w(paperclip liquid adminsite/liquid/tags/asset).each{|f| require f }
|
|
3
|
-
%w(devise haml formtastic codemirror-rails kaminari ransack).each{|f| require f }
|
|
3
|
+
%w(devise cancancan haml formtastic codemirror-rails kaminari ransack).each{|f| require f }
|
|
4
4
|
|
|
5
5
|
module Adminsite
|
|
6
6
|
class Engine < Rails::Engine
|
data/lib/adminsite/version.rb
CHANGED
|
@@ -32,6 +32,9 @@ module Adminsite
|
|
|
32
32
|
"\n get '/:page_url(.:format)' => 'adminsite/contents#render_404'\n"
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
puts "Setting up CanCan"
|
|
36
|
+
copy_file 'app/models/adminsite/ability.rb', 'app/models/adminsite/ability.rb'
|
|
37
|
+
|
|
35
38
|
# Locales
|
|
36
39
|
copy_file "config/locales/adminsite.da.yml", 'config/locales/adminsite.da.yml'
|
|
37
40
|
copy_file "config/locales/adminsite.en.yml", 'config/locales/adminsite.en.yml'
|
data/lib/tasks/adminsite.rake
CHANGED
|
@@ -13,10 +13,11 @@ namespace :adminsite do
|
|
|
13
13
|
password = Digest::MD5.hexdigest(Time.now.to_s)[0..9]
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
Adminsite::AdminUser.create!( :name
|
|
16
|
+
admin_user = Adminsite::AdminUser.create!( :name => name,
|
|
17
17
|
:email => email,
|
|
18
18
|
:password => password,
|
|
19
19
|
:password_confirmation => password)
|
|
20
|
+
admin_user.admin_user_roles << Adminsite::AdminUserRole.find_by_name('admin')
|
|
20
21
|
puts "#{'*'*70}"
|
|
21
22
|
puts "Done! You can access the admin interface at http://yourapp_url/admin"
|
|
22
23
|
puts "I have created an administrator with these credentials:"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: adminsite
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Robin Wunderlin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-04-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -80,6 +80,20 @@ dependencies:
|
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '3.4'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: cancancan
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '1.10'
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '1.10'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: kaminari
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -233,7 +247,9 @@ files:
|
|
|
233
247
|
- README.markdown
|
|
234
248
|
- Rakefile
|
|
235
249
|
- USAGE
|
|
250
|
+
- adminsite.gemspec
|
|
236
251
|
- app/admin_configs/adminsite/adminsite_admin_user_admin_config.rb
|
|
252
|
+
- app/admin_configs/adminsite/adminsite_admin_user_role_admin_config.rb
|
|
237
253
|
- app/admin_configs/adminsite/adminsite_file_asset_admin_config.rb
|
|
238
254
|
- app/admin_configs/adminsite/adminsite_page_admin_config.rb
|
|
239
255
|
- app/admin_configs/adminsite/adminsite_page_layout_admin_config.rb
|
|
@@ -245,6 +261,7 @@ files:
|
|
|
245
261
|
- app/assets/images/adminsite/admin/cross.png
|
|
246
262
|
- app/assets/images/adminsite/admin/logo.gif
|
|
247
263
|
- app/assets/images/adminsite/admin/logo.png
|
|
264
|
+
- app/assets/images/adminsite/admin/logo.svg
|
|
248
265
|
- app/assets/images/adminsite/admin/magnifier.png
|
|
249
266
|
- app/assets/images/adminsite/admin/newspaper_add.png
|
|
250
267
|
- app/assets/images/adminsite/admin/newspaper_delete.png
|
|
@@ -277,8 +294,10 @@ files:
|
|
|
277
294
|
- app/helpers/admin/adminsite_application_helper.rb
|
|
278
295
|
- app/helpers/admin_application_helper.rb
|
|
279
296
|
- app/inputs/adminsite/multi_select_box_input.rb
|
|
297
|
+
- app/models/adminsite/ability.rb
|
|
280
298
|
- app/models/adminsite/admin_config/base.rb
|
|
281
299
|
- app/models/adminsite/admin_user.rb
|
|
300
|
+
- app/models/adminsite/admin_user_role.rb
|
|
282
301
|
- app/models/adminsite/file_asset.rb
|
|
283
302
|
- app/models/adminsite/page.rb
|
|
284
303
|
- app/models/adminsite/page_layout.rb
|
|
@@ -318,6 +337,7 @@ files:
|
|
|
318
337
|
- config/routes.rb
|
|
319
338
|
- db/migrate/20101007000000_create_admin.rb
|
|
320
339
|
- db/migrate/20101007000001_create_cms_tables.rb
|
|
340
|
+
- db/migrate/20101007000002_create_admin_user_roles.rb
|
|
321
341
|
- lib/adminsite.rb
|
|
322
342
|
- lib/adminsite/configuration.rb
|
|
323
343
|
- lib/adminsite/engine.rb
|
|
@@ -376,7 +396,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
376
396
|
version: '0'
|
|
377
397
|
requirements: []
|
|
378
398
|
rubyforge_project:
|
|
379
|
-
rubygems_version: 2.
|
|
399
|
+
rubygems_version: 2.4.5.1
|
|
380
400
|
signing_key:
|
|
381
401
|
specification_version: 4
|
|
382
402
|
summary: Basic Admin Backend interface for Ruby on Rails
|