captive-admin 0.2.9 → 0.2.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -0
- data/lib/captive/admin.rb +2 -0
- data/lib/generators/admin/USAGE +10 -0
- data/lib/generators/admin/admin_generator.rb +130 -0
- metadata +41 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c539d272b57fc46be2a7de2ab078e1d76d5d01fe7db8985c474e401d678d236
|
4
|
+
data.tar.gz: 421208417f28667ebf7275b56ec4e6bb94e9984ffe36d18d4237d1e115286075
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8ddd2748ace06bef2940986c366048212503555afe7f0bbfc56e15925bd9113e9336d4425c7e5be4c5e394988cc52bae2cac9bdb693bf1cafcb96b42e227232
|
7
|
+
data.tar.gz: b97eba54c879453393654b107460d833476f15c4c6121e9be58f62a7c383e8b9d5d2d06d0a1858a34357af53b3ce17ec1f0ad7aaf586592a432718f33285c407
|
data/README.md
CHANGED
@@ -29,6 +29,14 @@ gem 'captive-admin'
|
|
29
29
|
@import "captive-admin/base";
|
30
30
|
```
|
31
31
|
|
32
|
+
## Usage
|
33
|
+
|
34
|
+
You can use the admin generator. [See the usage doc to read more information](./lib/generators/admin/USAGE) :
|
35
|
+
|
36
|
+
```console
|
37
|
+
bin/rails generate admin Thing
|
38
|
+
```
|
39
|
+
|
32
40
|
## Contributing
|
33
41
|
|
34
42
|
Bug reports and pull requests are welcome on GitHub at https://github.com/Captive-Studio/captive-sdk.
|
data/lib/captive/admin.rb
CHANGED
@@ -0,0 +1,130 @@
|
|
1
|
+
class AdminGenerator < Rails::Generators::NamedBase
|
2
|
+
desc "Créé une resource ActiveAdmin au standard"
|
3
|
+
def create_resource_file
|
4
|
+
say "Voir le Standard : https://captive.notion.site/ActiveAdmin-Personnaliser-l-index-e7869c1bd6064e94a623eb7950d1ca8c?pvs=4",
|
5
|
+
:blue
|
6
|
+
create_resource
|
7
|
+
create_show
|
8
|
+
create_form
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def create_resource
|
14
|
+
create_file "app/admin/#{plural_name}.rb", <<~RUBY
|
15
|
+
# frozen_string_literal: true
|
16
|
+
|
17
|
+
ActiveAdmin.register #{class_name} do
|
18
|
+
config.sort_order = "created_at_desc"
|
19
|
+
|
20
|
+
permit_params #{permit_params.map { |p| ":#{p}" }.join(", ")}
|
21
|
+
#{includes}
|
22
|
+
index do
|
23
|
+
#{index_columns.map { |attr| "column :#{attr}" }.join("\n ")}
|
24
|
+
actions dropdown: true
|
25
|
+
end
|
26
|
+
|
27
|
+
show do
|
28
|
+
render partial: "admin/#{plural_name}/show", locals: { resource: resource }
|
29
|
+
end
|
30
|
+
|
31
|
+
form partial: "admin/#{plural_name}/form"
|
32
|
+
end
|
33
|
+
RUBY
|
34
|
+
end
|
35
|
+
|
36
|
+
def create_show
|
37
|
+
create_file "app/views/admin/#{plural_name}/_show.html.arb", <<~RUBY
|
38
|
+
# frozen_string_literal: true
|
39
|
+
|
40
|
+
panel "Détails #{plural_name}" do
|
41
|
+
attributes_table_for resource do
|
42
|
+
#{show_rows.map { |attr| "row :#{attr}" }.join("\n ")}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
RUBY
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_form
|
49
|
+
create_file "app/views/admin/#{plural_name}/_form.html.arb", <<~RUBY
|
50
|
+
# frozen_string_literal: true
|
51
|
+
|
52
|
+
active_admin_form_for [:admin, resource] do |f|
|
53
|
+
f.semantic_errors
|
54
|
+
f.inputs do
|
55
|
+
#{form_inputs.map { |p| "f.input :#{p}" }.join("\n ")}
|
56
|
+
end
|
57
|
+
f.actions
|
58
|
+
end
|
59
|
+
RUBY
|
60
|
+
end
|
61
|
+
|
62
|
+
def columns
|
63
|
+
@columns ||=
|
64
|
+
class_name.constantize
|
65
|
+
.columns
|
66
|
+
.map(&:name)
|
67
|
+
end
|
68
|
+
|
69
|
+
def columns_with_associations
|
70
|
+
@columns_with_associations ||=
|
71
|
+
columns.map do |c|
|
72
|
+
association =
|
73
|
+
class_name.constantize.reflect_on_all_associations.find do |a|
|
74
|
+
a.association_foreign_key == c
|
75
|
+
end
|
76
|
+
|
77
|
+
next c if association.blank?
|
78
|
+
|
79
|
+
association.name.to_s
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def associations
|
84
|
+
@associations ||=
|
85
|
+
columns.map do |c|
|
86
|
+
class_name.constantize.reflect_on_all_associations.find do |a|
|
87
|
+
a.association_foreign_key == c
|
88
|
+
end&.name
|
89
|
+
end.compact
|
90
|
+
end
|
91
|
+
|
92
|
+
def includes
|
93
|
+
return if associations.blank?
|
94
|
+
|
95
|
+
"\n includes :#{associations.join(", ")}\n"
|
96
|
+
end
|
97
|
+
|
98
|
+
PERMIT_PARAMS_EXCLUDED = [
|
99
|
+
"id",
|
100
|
+
"created_at",
|
101
|
+
"updated_at",
|
102
|
+
"encrypted_password",
|
103
|
+
"reset_password_token",
|
104
|
+
"reset_password_sent_at",
|
105
|
+
"remember_created_at",
|
106
|
+
].freeze
|
107
|
+
def permit_params
|
108
|
+
permit_params = columns.excluding(PERMIT_PARAMS_EXCLUDED)
|
109
|
+
if columns.include?("encrypted_password")
|
110
|
+
permit_params << "password"
|
111
|
+
permit_params << "password_confirmation"
|
112
|
+
end
|
113
|
+
permit_params
|
114
|
+
end
|
115
|
+
|
116
|
+
INDEX_EXCLUDED = PERMIT_PARAMS_EXCLUDED
|
117
|
+
def index_columns
|
118
|
+
columns_with_associations.excluding(INDEX_EXCLUDED)
|
119
|
+
end
|
120
|
+
|
121
|
+
SHOW_EXCLUDED = ["encrypted_password"].freeze
|
122
|
+
def show_rows
|
123
|
+
columns_with_associations.excluding(SHOW_EXCLUDED)
|
124
|
+
end
|
125
|
+
|
126
|
+
INPUT_EXCLUDED = INDEX_EXCLUDED
|
127
|
+
def form_inputs
|
128
|
+
columns_with_associations.excluding(INPUT_EXCLUDED)
|
129
|
+
end
|
130
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: captive-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Captive
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-11-
|
12
|
+
date: 2023-11-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -31,14 +31,48 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - '='
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 0.2.
|
34
|
+
version: 0.2.12
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - '='
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 0.2.
|
41
|
+
version: 0.2.12
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: activeadmin
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 2.0.0
|
49
|
+
- - "<"
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '4.0'
|
52
|
+
type: :runtime
|
53
|
+
prerelease: false
|
54
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 2.0.0
|
59
|
+
- - "<"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: kaminari-i18n
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.5.0
|
69
|
+
type: :runtime
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.5.0
|
42
76
|
- !ruby/object:Gem::Dependency
|
43
77
|
name: rspec-rails
|
44
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,13 +125,15 @@ files:
|
|
91
125
|
- app/assets/stylesheets/captive-admin/structure/_title_bar.scss
|
92
126
|
- lib/captive/admin.rb
|
93
127
|
- lib/captive/admin/engine.rb
|
128
|
+
- lib/generators/admin/USAGE
|
129
|
+
- lib/generators/admin/admin_generator.rb
|
94
130
|
- lib/tasks/captive/admin_tasks.rake
|
95
131
|
homepage: https://captive.fr/
|
96
132
|
licenses:
|
97
133
|
- MIT
|
98
134
|
metadata:
|
99
135
|
homepage_uri: https://captive.fr/
|
100
|
-
source_code_uri: https://github.com/Captive-Studio/captive-sdk/tree/v0.2.
|
136
|
+
source_code_uri: https://github.com/Captive-Studio/captive-sdk/tree/v0.2.12/captive-admin
|
101
137
|
post_install_message:
|
102
138
|
rdoc_options: []
|
103
139
|
require_paths:
|