admin_help 0.1.2 → 0.1.3
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 +1 -1
- data/README.md +7 -1
- data/app/assets/fonts/FontAwesome.otf +0 -0
- data/app/assets/fonts/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/fontawesome-webfont.svg +2671 -0
- data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff2 +0 -0
- data/app/assets/stylesheets/admin_help.css +3 -0
- data/app/assets/stylesheets/font-awesome.css.erb +2342 -0
- data/lib/admin_help/version.rb +1 -1
- data/lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb +60 -4
- data/lib/generators/admin/scaffold_controller/templates/controllers/controller.rb.erb +59 -0
- data/lib/generators/admin/scaffold_controller/templates/tests/test_unit/functional_test.rb.erb +50 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/_form.html.erb.erb +38 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/edit.html.erb.erb +6 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/index.html.erb.erb +31 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/new.html.erb.erb +5 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/show.html.erb.erb +11 -0
- metadata +16 -2
data/lib/admin_help/version.rb
CHANGED
@@ -15,6 +15,15 @@ module Admin
|
|
15
15
|
class_option :parent_controller, banner: "admin", type: :string, default: "application",
|
16
16
|
desc: "Define the parent controller"
|
17
17
|
|
18
|
+
class_option :orm, banner: "NAME", type: :string, required: true,
|
19
|
+
desc: "ORM to generate the controller for"
|
20
|
+
|
21
|
+
argument :attributes, type: :array, default: [], banner: "field:type field:type"
|
22
|
+
|
23
|
+
hook_for :resource_route, in: :rails do |resource_route|
|
24
|
+
invoke resource_route, [prefixed_class_name]
|
25
|
+
end
|
26
|
+
|
18
27
|
def create_controller_files
|
19
28
|
# I think there should be a better way to detect if jbuilder is in use
|
20
29
|
# If you know it, please let me know
|
@@ -22,20 +31,67 @@ module Admin
|
|
22
31
|
# create_file "app/controllers/a.rb", "# Add initialization content here"
|
23
32
|
end
|
24
33
|
|
34
|
+
def copy_view_files
|
35
|
+
available_views.each do |view|
|
36
|
+
template_path = "views/erb/#{view}.html.erb.erb"
|
37
|
+
template template_path, File.join("app/views", prefix, controller_file_path, "#{view}.html.erb")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_test_files
|
42
|
+
template "tests/test_unit/functional_test.rb.erb", File.join("test/controllers", prefix, controller_class_path, "#{controller_file_name}_controller_test.rb")
|
43
|
+
end
|
44
|
+
|
45
|
+
def attributes_hash
|
46
|
+
return if attributes_names.empty?
|
47
|
+
|
48
|
+
attributes_names.map do |name|
|
49
|
+
if %w(password password_confirmation).include?(name) && attributes.any?(&:password_digest?)
|
50
|
+
"#{name}: 'secret'"
|
51
|
+
else
|
52
|
+
"#{name}: @#{singular_table_name}.#{name}"
|
53
|
+
end
|
54
|
+
end.sort.join(', ')
|
55
|
+
end
|
56
|
+
|
25
57
|
def prefix
|
26
58
|
options[:prefix_name]
|
27
59
|
end
|
28
60
|
|
61
|
+
def prefixed_controller_class_name
|
62
|
+
"#{prefix.camelcase}::#{controller_class_name}"
|
63
|
+
end
|
64
|
+
|
65
|
+
def parent_controller_class_name
|
66
|
+
options[:parent_controller].camelcase
|
67
|
+
end
|
68
|
+
|
29
69
|
def prefixed_class_name
|
30
70
|
"#{prefix.capitalize}::#{class_name}"
|
31
71
|
end
|
32
72
|
|
33
|
-
def
|
34
|
-
"
|
73
|
+
def prefixed_route_url
|
74
|
+
"/#{prefix}#{route_url}"
|
35
75
|
end
|
36
76
|
|
37
|
-
def
|
38
|
-
|
77
|
+
def prefixed_plain_model_url
|
78
|
+
"#{prefix}_#{singular_table_name}"
|
79
|
+
end
|
80
|
+
|
81
|
+
def prefixed_index_helper
|
82
|
+
"#{prefix}_#{index_helper}"
|
83
|
+
end
|
84
|
+
|
85
|
+
def available_views
|
86
|
+
%w(index edit show new _form)
|
87
|
+
end
|
88
|
+
|
89
|
+
def plural_table_name_camelcase
|
90
|
+
plural_table_name.camelcase
|
91
|
+
end
|
92
|
+
|
93
|
+
def singular_table_name_camelcase
|
94
|
+
singular_table_name.camelcase
|
39
95
|
end
|
40
96
|
|
41
97
|
end
|
@@ -4,6 +4,65 @@ require_dependency "<%= namespaced_file_path %>/application_controller"
|
|
4
4
|
<% end -%>
|
5
5
|
<% module_namespacing do -%>
|
6
6
|
class <%= prefixed_controller_class_name %>Controller < <%= parent_controller_class_name %>Controller
|
7
|
+
before_action :set_<%= singular_table_name %>, only: [:show, :edit, :update, :destroy]
|
7
8
|
|
9
|
+
# GET <%= prefixed_route_url %>
|
10
|
+
def index
|
11
|
+
@<%= plural_table_name %> = <%= orm_class.all(class_name) %>
|
12
|
+
end
|
13
|
+
|
14
|
+
# GET <%= prefixed_route_url %>/1
|
15
|
+
def show
|
16
|
+
end
|
17
|
+
|
18
|
+
# GET <%= prefixed_route_url %>/new
|
19
|
+
def new
|
20
|
+
@<%= singular_table_name %> = <%= orm_class.build(class_name) %>
|
21
|
+
end
|
22
|
+
|
23
|
+
# GET <%= prefixed_route_url %>/1/edit
|
24
|
+
def edit
|
25
|
+
end
|
26
|
+
|
27
|
+
# POST <%= prefixed_route_url %>
|
28
|
+
def create
|
29
|
+
@<%= singular_table_name %> = <%= orm_class.build(class_name, "#{singular_table_name}_params") %>
|
30
|
+
|
31
|
+
if @<%= orm_instance.save %>
|
32
|
+
redirect_to <%= "[:#{prefix}, @#{singular_table_name}]" %>, notice: <%= "'#{human_name} was successfully created.'" %>
|
33
|
+
else
|
34
|
+
render :new
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# PATCH/PUT <%= prefixed_route_url %>/1
|
39
|
+
def update
|
40
|
+
if @<%= orm_instance.update("#{singular_table_name}_params") %>
|
41
|
+
redirect_to <%= "[:#{prefix}, @#{singular_table_name}]" %>, notice: <%= "'#{human_name} was successfully updated.'" %>
|
42
|
+
else
|
43
|
+
render :edit
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# DELETE <%= prefixed_route_url %>/1
|
48
|
+
def destroy
|
49
|
+
@<%= orm_instance.destroy %>
|
50
|
+
redirect_to <%= prefixed_index_helper %>_url, notice: <%= "'#{human_name} was successfully destroyed.'" %>
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
# Use callbacks to share common setup or constraints between actions.
|
55
|
+
def set_<%= singular_table_name %>
|
56
|
+
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
|
57
|
+
end
|
58
|
+
|
59
|
+
# Only allow a trusted parameter "white list" through.
|
60
|
+
def <%= "#{singular_table_name}_params" %>
|
61
|
+
<%- if attributes_names.empty? -%>
|
62
|
+
params[<%= ":#{singular_table_name}" %>]
|
63
|
+
<%- else -%>
|
64
|
+
params.require(<%= ":#{singular_table_name}" %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
|
65
|
+
<%- end -%>
|
66
|
+
end
|
8
67
|
end
|
9
68
|
<% end -%>
|
data/lib/generators/admin/scaffold_controller/templates/tests/test_unit/functional_test.rb.erb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
<% module_namespacing do -%>
|
4
|
+
class <%= prefixed_controller_class_name %>ControllerTest < ActionDispatch::IntegrationTest
|
5
|
+
setup do
|
6
|
+
@<%= singular_table_name %> = <%= table_name %>(:one)
|
7
|
+
end
|
8
|
+
|
9
|
+
test "should get index" do
|
10
|
+
get <%= prefixed_index_helper %>_url
|
11
|
+
assert_response :success
|
12
|
+
end
|
13
|
+
|
14
|
+
test "should get new" do
|
15
|
+
get new_<%= prefixed_plain_model_url %>_url
|
16
|
+
assert_response :success
|
17
|
+
end
|
18
|
+
|
19
|
+
test "should create <%= singular_table_name %>" do
|
20
|
+
assert_difference('<%= class_name %>.count') do
|
21
|
+
post <%= prefixed_index_helper %>_url, params: { <%= "#{singular_table_name}: { #{attributes_hash} }" %> }
|
22
|
+
end
|
23
|
+
|
24
|
+
assert_redirected_to <%= prefixed_plain_model_url %>_url(<%= singular_table_name_camelcase %>.last)
|
25
|
+
end
|
26
|
+
|
27
|
+
test "should show <%= singular_table_name %>" do
|
28
|
+
get <%= prefixed_plain_model_url %>_url(@<%= singular_table_name %>)
|
29
|
+
assert_response :success
|
30
|
+
end
|
31
|
+
|
32
|
+
test "should get edit" do
|
33
|
+
get edit_<%= prefixed_plain_model_url %>_url(@<%= singular_table_name %>)
|
34
|
+
assert_response :success
|
35
|
+
end
|
36
|
+
|
37
|
+
test "should update <%= singular_table_name %>" do
|
38
|
+
patch <%= prefixed_plain_model_url %>_url(@<%= singular_table_name %>), params: { <%= "#{singular_table_name}: { #{attributes_hash} }" %> }
|
39
|
+
assert_redirected_to <%= prefixed_plain_model_url %>_url(<%= singular_table_name_camelcase %>.last)
|
40
|
+
end
|
41
|
+
|
42
|
+
test "should destroy <%= singular_table_name %>" do
|
43
|
+
assert_difference('<%= class_name %>.count', -1) do
|
44
|
+
delete <%= prefixed_plain_model_url %>_url(@<%= singular_table_name %>)
|
45
|
+
end
|
46
|
+
|
47
|
+
assert_redirected_to <%= prefixed_index_helper %>_url
|
48
|
+
end
|
49
|
+
end
|
50
|
+
<% end -%>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<%%= form_with(model: <%= "[:#{prefix}, #{singular_table_name}]" %>, local: true) do |form| %>
|
2
|
+
<%% if @<%= singular_table_name %>.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%%= pluralize(@<%= singular_table_name %>.errors.count, "error") %> prohibited this <%= singular_table_name %> from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<%% @<%= singular_table_name %>.errors.full_messages.each do |message| %>
|
8
|
+
<li><%%= message %></li>
|
9
|
+
<%% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<%% end %>
|
13
|
+
|
14
|
+
<% attributes.each do |attribute| -%>
|
15
|
+
<div class="field">
|
16
|
+
<% if attribute.password_digest? -%>
|
17
|
+
<%%= form.label :password %>
|
18
|
+
<%%= form.password_field :password %>
|
19
|
+
</div>
|
20
|
+
<div>
|
21
|
+
<%%= form.label :password_confirmation %>
|
22
|
+
<%%= form.password_field :password_confirmation %>
|
23
|
+
<% else -%>
|
24
|
+
<% if attribute.reference? -%>
|
25
|
+
<%%= form.label :<%= attribute.column_name %> %>
|
26
|
+
<%%= form.<%= attribute.field_type %> :<%= attribute.column_name %> %>
|
27
|
+
<% else -%>
|
28
|
+
<%%= form.label :<%= attribute.name %> %>
|
29
|
+
<%%= form.<%= attribute.field_type %> :<%= attribute.name %> %>
|
30
|
+
<% end -%>
|
31
|
+
<% end -%>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<% end -%>
|
35
|
+
<div class="actions">
|
36
|
+
<%%= form.submit %>
|
37
|
+
</div>
|
38
|
+
<%% end %>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<p id="notice"><%%= notice %></p>
|
2
|
+
|
3
|
+
<h1><%= plural_table_name_camelcase %></h1>
|
4
|
+
|
5
|
+
<table>
|
6
|
+
<thead>
|
7
|
+
<tr>
|
8
|
+
<% attributes.reject(&:password_digest?).each do |attribute| -%>
|
9
|
+
<th><%= attribute.human_name %></th>
|
10
|
+
<% end -%>
|
11
|
+
<th colspan="3"></th>
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
|
15
|
+
<tbody>
|
16
|
+
<%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
|
17
|
+
<tr>
|
18
|
+
<% attributes.reject(&:password_digest?).each do |attribute| -%>
|
19
|
+
<td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
|
20
|
+
<% end -%>
|
21
|
+
<td><%%= link_to 'Show', <%= "[:#{prefix}, #{singular_table_name}]" %> %></td>
|
22
|
+
<td><%%= link_to 'Edit', edit_<%= prefixed_plain_model_url %>_path(<%= singular_table_name %>) %></td>
|
23
|
+
<td><%%= link_to 'Destroy', <%= "[:#{prefix}, #{singular_table_name}]" %>, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
24
|
+
</tr>
|
25
|
+
<%% end %>
|
26
|
+
</tbody>
|
27
|
+
</table>
|
28
|
+
|
29
|
+
<br>
|
30
|
+
|
31
|
+
<%%= link_to 'New <%= human_name %>', new_<%= prefixed_plain_model_url %>_path %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<p id="notice"><%%= notice %></p>
|
2
|
+
|
3
|
+
<% attributes.reject(&:password_digest?).each do |attribute| -%>
|
4
|
+
<p>
|
5
|
+
<strong><%= attribute.human_name %>:</strong>
|
6
|
+
<%%= @<%= singular_table_name %>.<%= attribute.name %> %>
|
7
|
+
</p>
|
8
|
+
|
9
|
+
<% end -%>
|
10
|
+
<%%= link_to 'Edit', edit_<%= prefixed_plain_model_url %>_path(@<%= singular_table_name %>) %> |
|
11
|
+
<%%= link_to 'Back', <%= prefixed_index_helper %>_path %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: admin_help
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- aiyuhang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-08-
|
11
|
+
date: 2019-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,11 +52,25 @@ files:
|
|
52
52
|
- README.md
|
53
53
|
- Rakefile
|
54
54
|
- admin_help.gemspec
|
55
|
+
- app/assets/fonts/FontAwesome.otf
|
56
|
+
- app/assets/fonts/fontawesome-webfont.eot
|
57
|
+
- app/assets/fonts/fontawesome-webfont.svg
|
58
|
+
- app/assets/fonts/fontawesome-webfont.ttf
|
59
|
+
- app/assets/fonts/fontawesome-webfont.woff
|
60
|
+
- app/assets/fonts/fontawesome-webfont.woff2
|
61
|
+
- app/assets/stylesheets/admin_help.css
|
62
|
+
- app/assets/stylesheets/font-awesome.css.erb
|
55
63
|
- lib/admin_help.rb
|
56
64
|
- lib/admin_help/version.rb
|
57
65
|
- lib/generators/admin/scaffold_controller/USAGE
|
58
66
|
- lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb
|
59
67
|
- lib/generators/admin/scaffold_controller/templates/controllers/controller.rb.erb
|
68
|
+
- lib/generators/admin/scaffold_controller/templates/tests/test_unit/functional_test.rb.erb
|
69
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/_form.html.erb.erb
|
70
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/edit.html.erb.erb
|
71
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/index.html.erb.erb
|
72
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/new.html.erb.erb
|
73
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/show.html.erb.erb
|
60
74
|
homepage: https://witcan.com
|
61
75
|
licenses:
|
62
76
|
- MIT
|