superuser 0.2.6 → 0.3.1
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/lib/generators/superuser/USAGE +16 -16
- data/lib/generators/superuser/init_generator.rb +123 -0
- data/lib/generators/superuser/superuser_generator.rb +86 -155
- data/lib/generators/superuser/templates/base_controller.rb +32 -30
- data/lib/generators/superuser/templates/controller_template.rb +53 -85
- data/lib/generators/superuser/templates/dashboard_controller.rb +3 -5
- data/lib/generators/superuser/templates/superuser_base.scss +215 -246
- data/lib/generators/superuser/templates/views/_form.html.erb +1 -3
- data/lib/generators/superuser/templates/views/_search.html.erb +25 -28
- data/lib/generators/superuser/templates/views/dashboard_index.html.erb +1 -1
- data/lib/generators/superuser/templates/views/edit.html.erb +1 -2
- data/lib/generators/superuser/templates/views/index.html.erb +28 -37
- data/lib/generators/superuser/templates/views/layouts/application.html.erb +52 -51
- data/lib/generators/superuser/templates/views/new.html.erb +1 -2
- data/lib/generators/superuser/templates/views/show.html.erb +1 -2
- data/lib/superuser.rb +1 -0
- data/lib/superuser/version.rb +1 -1
- metadata +21 -9
@@ -3,7 +3,6 @@
|
|
3
3
|
<%= "<% if #{resource}.errors.any? %%>" %>
|
4
4
|
<div id="error_explanation" class="alert alert-danger">
|
5
5
|
<h3 class="error_title"><%= "<%= pluralize(#{resource}.errors.count, 'error') %%>" %> prohibited this resource from being saved:</h3>
|
6
|
-
|
7
6
|
<ul>
|
8
7
|
<%= "<% #{resource}.errors.full_messages.each do |message| %%>" %>
|
9
8
|
<li><%= "<%= message %%>" %></li>
|
@@ -19,7 +18,6 @@
|
|
19
18
|
</div>
|
20
19
|
<% end -%>
|
21
20
|
|
22
|
-
<%= "<%= f.submit (#{resource}.new_record? ? 'Create
|
23
|
-
|
21
|
+
<%= "<%= f.submit (#{resource}.new_record? ? 'Create #{resource}' : 'Update #{resource}'), class: 'btn btn-info btn-lg' %%>" %>
|
24
22
|
|
25
23
|
<%= "<% end %%>" %>
|
@@ -1,31 +1,28 @@
|
|
1
1
|
<div class="card p-2 p-md-4">
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
</div>
|
3
|
+
<div class="card-title">
|
4
|
+
Search :
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="text-center">
|
8
|
+
<%= "<%= form_tag [:superuser, obj], method: :get, class: 'search_form' do %%>" %>
|
9
|
+
|
10
|
+
<span class="condition-label">Condition :</span>
|
11
|
+
|
12
|
+
<%= """
|
13
|
+
<%
|
14
|
+
options = []
|
15
|
+
obj.classify.constantize.column_names.each do |column_name|
|
16
|
+
options << column_name
|
17
|
+
end
|
18
|
+
%%>
|
19
|
+
""" %>
|
20
|
+
<%= "<%= hidden_field_tag :search, 'true' %%>" %>
|
21
|
+
<%= "<%= select_tag :search_field, options_for_select(options, params[:search_field]), class: 'form-control d-inline-block' %%>" %>
|
22
|
+
<%= "<%= select_tag :operator, options_for_select({'Equal': 'equal', 'Like': 'like', '>': 'gt', '<': 'lt', '>=': 'gte', '<=': 'lte'}, params[:operator]), class: 'form-control d-inline-block' %%>" %>
|
23
|
+
<%= "<%= text_field_tag :search_value, params[:search_value], placeholder: 'Search Value...', class: 'form-control d-inline-block' %%>" %>
|
24
|
+
<%= "<%= submit_tag :Search, class: 'btn btn-success' %%>" %>
|
25
|
+
|
26
|
+
<%= "<% end %%>" %>
|
27
|
+
</div>
|
31
28
|
</div>
|
@@ -1 +1 @@
|
|
1
|
-
<h1>
|
1
|
+
<h1>Dashboard</h1>
|
@@ -3,9 +3,8 @@
|
|
3
3
|
<%= "<%= render 'form', #{resource}: @#{resource} %%>" %>
|
4
4
|
|
5
5
|
<br>
|
6
|
-
|
7
6
|
<hr>
|
8
7
|
|
9
8
|
<div class="text-center">
|
10
|
-
|
9
|
+
<%= "<%= link_to 'Back', [:superuser, :#{resources}], class: 'btn btn-outline-secondary' %%>" %>
|
11
10
|
</div>
|
@@ -8,48 +8,39 @@
|
|
8
8
|
<div class="table-responsive">
|
9
9
|
|
10
10
|
<table class="table my-3">
|
11
|
-
|
12
11
|
<thead class="thead-light">
|
13
|
-
|
14
12
|
<tr>
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
<% editable_attributes.each do |attribute| -%>
|
14
|
+
<th><%= attribute[:name] %></th>
|
15
|
+
<% end -%>
|
16
|
+
<th></th>
|
20
17
|
</tr>
|
21
|
-
|
22
18
|
</thead>
|
23
19
|
|
24
20
|
<tbody>
|
25
21
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
</td>
|
49
|
-
|
50
|
-
</tr>
|
51
|
-
|
52
|
-
<%= '<% end %%>' %>
|
22
|
+
<%= "<% @#{resources}.each do |#{resource}| %%>" %>
|
23
|
+
|
24
|
+
<tr>
|
25
|
+
<% editable_attributes.each do |attribute| -%>
|
26
|
+
<td><%= "<%= #{resource}[:#{attribute[:name]}] %%>" %></td>
|
27
|
+
<% end -%>
|
28
|
+
|
29
|
+
<td class="text-right">
|
30
|
+
<div class="dropdown">
|
31
|
+
<button class="btn btn-secondary dropdown-toggle p-1 px-2" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
32
|
+
Actions
|
33
|
+
</button>
|
34
|
+
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
35
|
+
<div><%= "<%= link_to 'Show', [:superuser, #{resource}], class: 'dropdown-item' %%>" %></div>
|
36
|
+
<div><%= "<%= link_to 'Edit', [:edit, :superuser, #{resource}], class: 'dropdown-item' %%>" %></div>
|
37
|
+
<div><%= "<%= link_to 'Delete', [:superuser, #{resource}], method: :delete, data: { confirm: 'Are you sure?' }, class: 'dropdown-item' %%>" %></div>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
</td>
|
41
|
+
</tr>
|
42
|
+
|
43
|
+
<%= '<% end %%>' %>
|
53
44
|
|
54
45
|
</tbody>
|
55
46
|
|
@@ -59,6 +50,6 @@
|
|
59
50
|
|
60
51
|
<hr class="mb-4">
|
61
52
|
|
62
|
-
<div class="
|
63
|
-
|
53
|
+
<div class="pagy_pagination text-center">
|
54
|
+
<%= "<%== pagy_bootstrap_nav(@pagy) %%>" %>
|
64
55
|
</div>
|
@@ -1,61 +1,67 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html>
|
3
3
|
|
4
|
-
<head>
|
4
|
+
<head>
|
5
5
|
<title>Super User <%= '<%= controller_name %%>' %>#<%= '<%= action_name %%>' %></title>
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
7
7
|
|
8
8
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
|
9
|
-
|
10
|
-
|
9
|
+
|
10
|
+
<% if for_webpack_native -%>
|
11
|
+
<%= '<%= webpack_stylesheet_url "superuser", media: "all", "data-turbolinks-track": "reload" %%>' %>
|
12
|
+
<%= '<%= webpack_javascript_url "superuser", "data-turbolinks-track": "reload" %%>' %>
|
13
|
+
<% else -%>
|
14
|
+
<%= '<%= stylesheet_link_tag "superuser", media: "all", "data-turbolinks-track": "reload" %%>' %>
|
15
|
+
<%= '<%= javascript_pack_tag "superuser", "data-turbolinks-track": "reload" %%>' %>
|
16
|
+
<% end -%>
|
17
|
+
|
11
18
|
<!-- CDN for flatpickr.css -->
|
12
19
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
|
13
20
|
<!-- end CDN for flatpickr.css -->
|
14
21
|
<%= '<%= csrf_meta_tags %%>' %>
|
22
|
+
</head>
|
15
23
|
|
16
|
-
|
17
|
-
|
18
|
-
<body>
|
24
|
+
<body class="superuser">
|
19
25
|
|
20
26
|
<header>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
</nav>
|
27
|
+
<nav class="navbar navbar-expand-sm navbar-light fixed-top">
|
28
|
+
<%= '<%= link_to [:superuser, :root], class: "navbar-brand" do %%>' %>
|
29
|
+
<span class="logo_part_1">Super</span><span class="logo_part_2">user</span>
|
30
|
+
<%= '<% end %%>' %>
|
31
|
+
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
32
|
+
<span class="navbar-toggler-icon"></span>
|
33
|
+
</button>
|
34
|
+
</nav>
|
30
35
|
</header>
|
31
36
|
|
32
37
|
<aside class="sidebar">
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
</div>
|
38
|
+
<div class="">
|
39
|
+
<h2 class="sidebar_title">Resources</h2>
|
40
|
+
<div class="sidebar_dashboard_link">
|
41
|
+
</div>
|
42
|
+
<div class="sidebar_item">
|
43
|
+
<%#= link_to resources_name, [:superuser, :resources_name] %>
|
40
44
|
</div>
|
45
|
+
</div>
|
41
46
|
</aside>
|
42
47
|
|
43
48
|
<div class="main-content">
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
<%= '<%= yield %%>' %>
|
52
|
-
</div>
|
49
|
+
<div class="container-fluid">
|
50
|
+
<div class="row">
|
51
|
+
<div class="col">
|
52
|
+
<div class="content">
|
53
|
+
<%= "<% flash.each do |key, value| %%>" %>
|
54
|
+
<div class="alert alert-<%= '<%= flash_class(key) %%>' %>">
|
55
|
+
<%= '<%= value %%>' %>
|
53
56
|
</div>
|
57
|
+
<%= "<% end %%>" %>
|
58
|
+
<%= '<%= yield %%>' %>
|
54
59
|
</div>
|
60
|
+
</div>
|
55
61
|
</div>
|
62
|
+
</div>
|
56
63
|
</div>
|
57
64
|
|
58
|
-
|
59
65
|
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
|
60
66
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
|
61
67
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
|
@@ -65,26 +71,21 @@
|
|
65
71
|
<!-- end CDN for flatpickr.js -->
|
66
72
|
|
67
73
|
<script type="text/javascript">
|
68
|
-
|
69
|
-
(function()
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
enableSeconds: true
|
82
|
-
});
|
83
|
-
|
84
|
-
})();
|
85
|
-
|
74
|
+
(function() {
|
75
|
+
document.querySelector('.navbar-toggler').addEventListener('click', function(){
|
76
|
+
body = document.getElementsByTagName('body')[0];
|
77
|
+
body.classList.toggle('open-sidebar');
|
78
|
+
});
|
79
|
+
// if input has class 'isdate' : show flatpickr < date without time >
|
80
|
+
$(".date-field").flatpickr();
|
81
|
+
// if input has class 'isdatetime' : show flatpickr < date with time (Hours + Minutes + Seconds) >
|
82
|
+
$(".datetime-field").flatpickr({
|
83
|
+
enableTime: true,
|
84
|
+
enableSeconds: true
|
85
|
+
});
|
86
|
+
})();
|
86
87
|
</script>
|
87
88
|
|
88
|
-
</body>
|
89
|
+
</body>
|
89
90
|
|
90
91
|
</html>
|
@@ -5,9 +5,8 @@
|
|
5
5
|
<%= "<%= render 'form', #{resource}: @#{resource} %%>" %>
|
6
6
|
|
7
7
|
<br>
|
8
|
-
|
9
8
|
<hr>
|
10
9
|
|
11
10
|
<div class="text-center">
|
12
|
-
|
11
|
+
<%= "<%= link_to 'Back', [:superuser, :#{resources}], class: 'btn btn-outline-secondary' %%>" %>
|
13
12
|
</div>
|
@@ -4,12 +4,11 @@
|
|
4
4
|
|
5
5
|
<% editable_attributes.each do |attribute| -%>
|
6
6
|
<div class="attribute-line">
|
7
|
-
|
7
|
+
<%= attribute[:name].capitalize %> :
|
8
8
|
<%= "<%= @#{resource}.#{attribute[:name]} %%>" %>
|
9
9
|
</div>
|
10
10
|
<% end -%>
|
11
11
|
|
12
|
-
|
13
12
|
<hr>
|
14
13
|
|
15
14
|
<%= "<%= link_to 'Edit', [:edit, :superuser, @#{resource}], class: 'btn btn-primary' %%>" %>
|
data/lib/superuser.rb
CHANGED
data/lib/superuser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: superuser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mody
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,28 +30,40 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '12.3'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 12.3.3
|
34
37
|
type: :development
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
41
|
- - "~>"
|
39
42
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
43
|
+
version: '12.3'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 12.3.3
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: pagy
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
53
|
+
version: '3.8'
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 3.8.3
|
48
57
|
type: :runtime
|
49
58
|
prerelease: false
|
50
59
|
version_requirements: !ruby/object:Gem::Requirement
|
51
60
|
requirements:
|
52
61
|
- - "~>"
|
53
62
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
63
|
+
version: '3.8'
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 3.8.3
|
55
67
|
description: This gem will help you scaffold an admin area very quickly so you can
|
56
68
|
have full control over your code when you need customization
|
57
69
|
email:
|
@@ -61,6 +73,7 @@ extensions: []
|
|
61
73
|
extra_rdoc_files: []
|
62
74
|
files:
|
63
75
|
- lib/generators/superuser/USAGE
|
76
|
+
- lib/generators/superuser/init_generator.rb
|
64
77
|
- lib/generators/superuser/superuser_generator.rb
|
65
78
|
- lib/generators/superuser/templates/base_controller.rb
|
66
79
|
- lib/generators/superuser/templates/controller_template.rb
|
@@ -96,8 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
109
|
- !ruby/object:Gem::Version
|
97
110
|
version: '0'
|
98
111
|
requirements: []
|
99
|
-
|
100
|
-
rubygems_version: 2.7.7
|
112
|
+
rubygems_version: 3.1.2
|
101
113
|
signing_key:
|
102
114
|
specification_version: 4
|
103
115
|
summary: Build An Admin Area Easily.
|