cm-admin 0.1.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +12 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +7 -1
  6. data/Gemfile.lock +121 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +20 -21
  9. data/app/assets/images/logo.png +0 -0
  10. data/app/assets/stylesheets/cm_admin/base/auth.scss +73 -0
  11. data/app/assets/stylesheets/cm_admin/base/common.scss +237 -0
  12. data/app/assets/stylesheets/cm_admin/base/filters.scss +200 -0
  13. data/app/assets/stylesheets/cm_admin/base/form.scss +197 -0
  14. data/app/assets/stylesheets/cm_admin/base/main-nav.scss +47 -0
  15. data/app/assets/stylesheets/cm_admin/base/navbar.scss +65 -0
  16. data/app/assets/stylesheets/cm_admin/base/quicksearch.scss +76 -0
  17. data/app/assets/stylesheets/cm_admin/base/scaffold.scss +96 -0
  18. data/app/assets/stylesheets/cm_admin/base/show.scss +76 -0
  19. data/app/assets/stylesheets/cm_admin/base/sidebar.scss +225 -0
  20. data/app/assets/stylesheets/cm_admin/base/table.scss +320 -0
  21. data/app/assets/stylesheets/cm_admin/base/tabs.scss +26 -0
  22. data/{lib/generators/cm_admin/templates/assets/stylesheets/application.css.scss → app/assets/stylesheets/cm_admin/cm_admin.css.scss} +12 -16
  23. data/app/assets/stylesheets/cm_admin/components/_alerts.scss +101 -0
  24. data/app/assets/stylesheets/cm_admin/components/_buttons.scss +135 -0
  25. data/app/assets/stylesheets/cm_admin/components/_dropdown-popup.scss +153 -0
  26. data/app/assets/stylesheets/cm_admin/components/_input.scss +274 -0
  27. data/app/assets/stylesheets/cm_admin/components/_modal.scss +34 -0
  28. data/app/assets/stylesheets/cm_admin/components/_range.scss +31 -0
  29. data/app/assets/stylesheets/cm_admin/components/_status-tag.scss +68 -0
  30. data/app/assets/stylesheets/cm_admin/components/index.scss +7 -0
  31. data/app/assets/stylesheets/cm_admin/dependency/bootstrap.min.css +7 -0
  32. data/app/assets/stylesheets/cm_admin/helpers/_mixins.scss +20 -0
  33. data/app/assets/stylesheets/cm_admin/helpers/_variable.scss +87 -0
  34. data/app/assets/stylesheets/cm_admin/helpers/index.scss +2 -0
  35. data/app/controllers/cm_admin/application_controller.rb +11 -0
  36. data/app/controllers/cm_admin/exports_controller.rb +16 -0
  37. data/app/controllers/cm_admin/static_controller.rb +12 -0
  38. data/app/helpers/cm_admin/application_helper.rb +11 -0
  39. data/app/helpers/cm_admin/custom_helper.rb +4 -0
  40. data/app/javascript/packs/cm_admin/application.js +22 -0
  41. data/app/javascript/packs/cm_admin/filters.js +347 -0
  42. data/app/javascript/packs/cm_admin/quick_search.js +67 -0
  43. data/app/javascript/packs/cm_admin/scaffolds.js +43 -0
  44. data/app/javascript/stylesheets/cm_admin/application.scss +3 -0
  45. data/app/views/cm_admin/main/_associated_table.html.slim +60 -0
  46. data/app/views/cm_admin/main/_cm_pagy_nav.html.slim +23 -0
  47. data/app/views/cm_admin/main/_filters.html.slim +1 -0
  48. data/app/views/cm_admin/main/_nested_fields.html.slim +7 -0
  49. data/app/views/cm_admin/main/_nested_table_form.html.slim +6 -0
  50. data/app/views/cm_admin/main/_table.html.slim +60 -0
  51. data/app/views/cm_admin/main/_tabs.html.slim +5 -0
  52. data/app/views/cm_admin/main/_top_navbar.html.slim +25 -0
  53. data/app/views/cm_admin/main/associated_index.html.slim +6 -0
  54. data/app/views/cm_admin/main/associated_show.html.slim +6 -0
  55. data/app/views/cm_admin/main/dashboard.html.slim +1 -0
  56. data/app/views/cm_admin/main/edit.html.slim +19 -0
  57. data/app/views/cm_admin/main/index.html.slim +12 -0
  58. data/app/views/cm_admin/main/new.html.slim +22 -0
  59. data/app/views/cm_admin/main/show.html.slim +12 -0
  60. data/app/views/cm_admin/static/error_401.html.slim +4 -0
  61. data/app/views/layouts/_left_sidebar_nav.html.slim +34 -0
  62. data/app/views/layouts/_quick_links.html.slim +25 -0
  63. data/app/views/layouts/cm_admin.html.slim +41 -0
  64. data/app/views/layouts/static.html.slim +18 -0
  65. data/bin/webpack +18 -0
  66. data/bin/webpack-dev-server +18 -0
  67. data/cm_admin.gemspec +21 -31
  68. data/config/.DS_Store +0 -0
  69. data/config/initializers/active_record_extension.rb +9 -0
  70. data/config/routes.rb +19 -0
  71. data/config/webpack/development.js +5 -0
  72. data/config/webpack/environment.js +13 -0
  73. data/config/webpack/production.js +5 -0
  74. data/config/webpack/test.js +5 -0
  75. data/config/webpacker.yml +92 -0
  76. data/lib/cm_admin/constants.rb +33 -0
  77. data/lib/cm_admin/engine.rb +38 -0
  78. data/lib/cm_admin/model.rb +152 -0
  79. data/lib/cm_admin/models/action.rb +36 -0
  80. data/lib/cm_admin/models/actions/blocks.rb +25 -0
  81. data/lib/cm_admin/models/blocks.rb +19 -0
  82. data/lib/cm_admin/models/cm_show_section.rb +20 -0
  83. data/lib/cm_admin/models/column.rb +61 -0
  84. data/lib/cm_admin/models/controller_method.rb +75 -0
  85. data/lib/cm_admin/models/dsl_method.rb +122 -0
  86. data/lib/cm_admin/models/export.rb +54 -0
  87. data/lib/cm_admin/models/field.rb +15 -0
  88. data/lib/cm_admin/models/filter.rb +95 -0
  89. data/lib/cm_admin/models/form_field.rb +21 -0
  90. data/lib/cm_admin/models/tab.rb +13 -0
  91. data/lib/cm_admin/utils.rb +67 -0
  92. data/lib/cm_admin/version.rb +1 -1
  93. data/lib/cm_admin/view_helpers/column_field_helper.rb +29 -0
  94. data/lib/cm_admin/view_helpers/field_display_helper.rb +65 -0
  95. data/lib/cm_admin/view_helpers/filter_helper.rb +190 -0
  96. data/lib/cm_admin/view_helpers/form_field_helper.rb +33 -0
  97. data/lib/cm_admin/view_helpers/form_helper.rb +65 -0
  98. data/lib/cm_admin/view_helpers/manage_column_popup_helper.rb +75 -0
  99. data/lib/cm_admin/view_helpers/navigation_helper.rb +34 -0
  100. data/lib/cm_admin/view_helpers/page_info_helper.rb +57 -0
  101. data/lib/cm_admin/view_helpers.rb +74 -0
  102. data/lib/cm_admin.rb +33 -2
  103. data/lib/generators/cm_admin/install_generator.rb +11 -13
  104. data/lib/tasks/webpack_install.rake +63 -0
  105. data/package.json +23 -0
  106. data/postcss.config.js +12 -0
  107. data/tmp/cache/webpacker/last-compilation-digest-development +1 -0
  108. data/yarn.lock +6933 -0
  109. metadata +155 -42
  110. data/lib/generators/cm_admin/USAGE +0 -8
  111. data/lib/generators/cm_admin/templates/assets/images/same-logo.png +0 -0
  112. data/lib/generators/cm_admin/templates/assets/stylesheets/_variable.scss +0 -11
  113. data/lib/generators/cm_admin/templates/assets/stylesheets/alignment.scss +0 -111
  114. data/lib/generators/cm_admin/templates/assets/stylesheets/devise.scss +0 -98
  115. data/lib/generators/cm_admin/templates/assets/stylesheets/form.scss +0 -131
  116. data/lib/generators/cm_admin/templates/assets/stylesheets/products.scss +0 -21
  117. data/lib/generators/cm_admin/templates/assets/stylesheets/scaffold.scss +0 -241
  118. data/lib/generators/cm_admin/templates/assets/stylesheets/table.scss +0 -90
  119. data/lib/generators/cm_admin/templates/assets/stylesheets/user.scss +0 -25
  120. data/lib/generators/cm_admin/templates/layouts/_navbar.html.slim +0 -9
  121. data/lib/generators/cm_admin/templates/layouts/_side_navbar.html.slim +0 -16
  122. data/lib/generators/cm_admin/templates/layouts/application.html.slim +0 -25
  123. data/lib/generators/cm_admin/templates/layouts/initializer.rb +0 -2
  124. data/lib/generators/cm_admin/templates/views/_filters.html.slim +0 -0
  125. data/lib/generators/cm_admin/templates/views/_form.erb +0 -38
  126. data/lib/generators/cm_admin/templates/views/_table.erb +0 -14
  127. data/lib/generators/cm_admin/templates/views/index.erb +0 -11
  128. data/lib/generators/cm_admin/templates/views/show.erb +0 -8
  129. data/lib/generators/cm_admin/view_generator.rb +0 -57
@@ -1,241 +0,0 @@
1
- @import '_variable.scss';
2
- .layout-container{
3
- height: 100%;
4
- .side-navbar {
5
- height: 100%;
6
- width: 250px;
7
- position: fixed;
8
- z-index: 1;
9
- top: 0;
10
- left: 0;
11
- background-color: $background;
12
- overflow-x: hidden;
13
-
14
- .logo-section{
15
- background-color: $active-bg;
16
- margin-bottom: 20px;
17
- height: 60px;
18
- display: flex;
19
- justify-content: center;
20
- align-items: center;
21
- }
22
-
23
- .nav-link {
24
- padding: 0;
25
- text-decoration: none;
26
- color: $nav-text-color;
27
- cursor: pointer;
28
- .nav-item {
29
- font-family: 'Lato', sans-serif;
30
- padding-bottom: 10px;
31
- padding-top: 10px;
32
- position: relative;
33
- .nav-heading {
34
- color: $nav-text-color;
35
- }
36
- }
37
- }
38
-
39
- .nav-item.active {
40
- background-color: $active-bg;
41
- border-left: $nav-active-border;
42
- .nav-heading {
43
- color: $nav-text-color;
44
- }
45
- }
46
- .nav-item:hover{
47
- background-color: #4b4b4b;
48
- .nav-heading {
49
- color: $nav-text-color;
50
- }
51
- }
52
- .arrow-right {
53
- width: 0;
54
- height: 0;
55
- border-top: 8px solid transparent;
56
- border-bottom: 8px solid transparent;
57
- border-left: 10px solid #1A1D1F;
58
- position: absolute;
59
- left: 10px;
60
- top: 17px;
61
- }
62
- }
63
- .main {
64
- margin-left: 250px;
65
- overflow-y: auto;
66
- overflow-x: hidden;
67
- background-color: $main-background;
68
- display: flex;
69
- flex-direction: column;
70
-
71
- .main-container {
72
- }
73
-
74
- .nav-link, .nav-link:hover, .nav-link:visited {
75
- color: #188EFB;
76
- text-decoration: none;
77
- cursor: pointer;
78
- }
79
- }
80
- }
81
-
82
- body {
83
- width: 100%;
84
- margin: 0px;
85
- padding: 0px;
86
- font-family: 'Lato', sans-serif;
87
- }
88
-
89
- .btn-default, .btn.btn-default {
90
- background-color: $nav-btn-color;
91
- padding: 12px 30px;
92
- color: black;
93
- font-size: 16px;
94
- width: fit-content;
95
- text-transform: none;
96
- display: block;
97
- text-align: center;
98
- font-weight: bold;
99
- border-radius: 0.5rem;
100
- border: none;
101
- cursor: pointer;
102
- }
103
-
104
- .circular-border {
105
- border-radius: 50%;
106
- }
107
-
108
- .f12 {
109
- font-size: 12px;
110
- }
111
-
112
- .f14 {
113
- font-size: 14px;
114
- }
115
-
116
-
117
- .f16 {
118
- font-size: 16px;
119
- }
120
-
121
- .f20 {
122
- font-size: 20px;
123
- }
124
- .f24 {
125
- font-size: 24px;
126
- }
127
-
128
- //Line Height
129
- .lh-32{
130
- line-height: 32px;
131
- }
132
-
133
- a:hover, a {
134
- text-decoration: none !important;
135
- }
136
-
137
- #notice {
138
- color: #36B37E;
139
- font-weight: bold;
140
- font-size: 14px;
141
- padding-left: 10px;
142
- }
143
-
144
- .error_message_div {
145
- color: #ff6700;
146
- padding-top: 5px;
147
- font-weight: bold;
148
- }
149
- .border-top{
150
- border-top: 1px solid #ccc;
151
-
152
- }
153
- .border-bottom{
154
- border-bottom: 1px solid #ccc;
155
- }
156
-
157
- h6 a{
158
- color: white !important;
159
- }
160
- a:hover{
161
- color: lightgrey !important;
162
- }
163
-
164
- .breadcrumb-nav {
165
- a {
166
- color: lightgrey !important;
167
- }
168
- }
169
-
170
- .active{
171
- a{
172
- color: white !important;
173
- }
174
- }
175
- .add-new-btn{
176
- background-color: $nav-btn-color;
177
- height: 50px;
178
- position: fixed;
179
- right: 30px;
180
- bottom: 30px;
181
- box-shadow: -1px 4px 12px -3px rgba(0,0,0,0.75);
182
-
183
- z-index: 3;
184
- width: 50px;
185
- display: flex;
186
- justify-content: center;
187
- align-items: center;
188
- border-radius: 50%;
189
- }
190
-
191
- //Show page Tabs
192
-
193
-
194
- #nav-tab{
195
- padding-top: 10px;
196
- padding-left: 30px;
197
- background-color: #ffffff;
198
- a{
199
- color: #000000;
200
- }
201
- a:hover{
202
- background-color: white !important;
203
- color: black !important;
204
- }
205
- .active{
206
- background-color: #ffffff;
207
- border: none;
208
- border-bottom: $nav-active-border !important;
209
- }
210
- }
211
- .hidden {
212
- display: none !important;
213
- }
214
- .parts-pagination {
215
- display: flex;
216
- flex-direction: row;
217
- justify-content: space-between;
218
- width: 100%;
219
- }
220
- .footer-section {
221
- padding: 0px 24px;
222
- display: flex;
223
- justify-content: space-between;
224
- align-items: center;
225
- background-color: white;
226
- font-size: 14px;
227
- color: black;
228
- box-shadow: inset 0px 1px 0px rgba(148, 151, 155, 0.3);
229
- .next-page:hover, .previous-page:hover {
230
- background-color: $nav-btn-color;
231
- }
232
- .previous-page {
233
- .icon-Arrow {
234
- transform: rotate(180deg);
235
- display: inline-block;
236
- }
237
- }
238
- }
239
- .pointer {
240
- cursor: pointer;
241
- }
@@ -1,90 +0,0 @@
1
- @import '_variable.scss';
2
-
3
- .admin-table{
4
- display: flex;
5
- flex-flow: column;
6
- width:95% !important;
7
- background-color: $table-background;
8
- margin: 0 auto;
9
- margin-top: 20px;
10
- border-radius: 10px;
11
- margin-bottom: 20px;
12
- }
13
- .table-container{
14
- position: relative;
15
- height: 80%;
16
- background-color: $table-background;
17
- z-index: 1;
18
- .table-hover{
19
- width: 100%;
20
- }
21
- .table-div {
22
- height: 100%;
23
- overflow-y: auto;
24
- }
25
- .table-div::-webkit-scrollbar {
26
- display: none;
27
- }
28
- .cm-pagination {
29
- padding: 5px;
30
- padding-bottom: 30px;
31
- .footer-text {
32
- font-size: 14px;
33
- color: #000;
34
- padding: 10px;
35
- font-weight: bold;
36
- border-radius: 0.3rem;
37
- }
38
- .next-page, .previous-page {
39
- font-size: 20px;
40
- padding: 10px 50px;
41
- }
42
- }
43
- }
44
-
45
- .heading-container, .container, .filter-container{
46
- background-color: #fff;
47
- width: 100% !important;
48
- }
49
-
50
- .filter-container {
51
- .filters {
52
- display: flex;
53
- flex-direction: row;
54
- overflow-x: visible;
55
- margin-right: 20px;
56
- padding-bottom: 10px;
57
- .input-group {
58
- margin: 10px 0px 0px 10px;
59
- min-width: 300px;
60
- .form-control:focus {
61
- padding: 6px 12px;
62
- background-image: none;
63
- box-shadow: none;
64
- border: 1px solid #d5d5d5;
65
- }
66
- .form-control {
67
- box-shadow: none;
68
- border: 1px solid #d5d5d5;
69
- border-radius: 0;
70
- color: #1A1D1F;
71
- }
72
-
73
- select.form-control {
74
- border-radius: 0;
75
- border: 1px solid #d5d5d5;
76
- }
77
- }
78
- }
79
- .filters::-webkit-scrollbar {
80
- display: none;
81
- }
82
- }
83
-
84
- .heading-container {
85
- background-color: $background;
86
- height: 60px;
87
- .container-header {
88
- padding: 20px 20px;
89
- }
90
- }
@@ -1,25 +0,0 @@
1
- // Place all the styles related to the user controller here.
2
- // They will automatically be included in application.css.
3
- // You can use Sass (SCSS) here: https://sass-lang.com/
4
- @import '_variable.scss';
5
-
6
- .user-foreground{
7
- background-color: $table-background !important;
8
- width: 95% !important;
9
- z-index: 1;
10
- border-radius: 7px;
11
- margin: 20px auto;
12
- height: 60vh;
13
- box-shadow: -1px 4px 12px -3px rgba(0,0,0,0.18);
14
-
15
- .user-details{
16
- display: grid;
17
- position: relative;
18
- grid-template-columns: 1fr 1fr;
19
- width: 40%;
20
- margin-top: 65px;
21
-
22
- }
23
-
24
- }
25
-
@@ -1,9 +0,0 @@
1
- .heading-container
2
- .row.container-header
3
- .col-md-8
4
- = yield :bread_crumb
5
- .dropdown-icon
6
- .dropbtn
7
- p.text-light AM
8
- .dropdown-content
9
- p = link_to "Log out", '/sign-out', method: :delete
@@ -1,16 +0,0 @@
1
- .side-navbar
2
-
3
- .logo-section
4
- .tw-logo = image_tag('same-logo.png', alt: 'logo image', width: '24px', height: '24px')
5
-
6
-
7
- .nav-tabs-section
8
- = link_to '/', class: 'nav-link'
9
- .nav-item class="#{(controller_name == 'users') ? 'active' : ''}"
10
- span.p-4.nav-heading.f14 Users
11
-
12
-
13
- .sidenav-footer-section
14
- = link_to '/sign-out', method: :delete, class: 'nav-link'
15
- .nav-item
16
- span.p-4.nav-heading.f14 Logout
@@ -1,25 +0,0 @@
1
- doctype html
2
- html
3
- head
4
- title
5
- | TishWish
6
- = csrf_meta_tags
7
- = csp_meta_tag
8
- = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
9
- = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
10
-
11
- body
12
- - unless controller_path.include?('devise')
13
- .layout-container
14
- = render 'layouts/side_navbar'
15
- .main
16
- .main-container
17
- = render 'layouts/navbar'
18
- = yield
19
- - else
20
- .main
21
- .heading
22
- h3
23
- span TishWish Admin Panel
24
- .devise-form-container
25
- = yield
@@ -1,2 +0,0 @@
1
-
2
- # Add initialization content here
@@ -1,38 +0,0 @@
1
- .form-container
2
- = simple_form_for(@template,:url => admin_product_templates_path(@product), html: { class: "new product_template-form", autocomplete: "off" }) do |f|
3
- = f.error_notification
4
- .custom-validations.error-color
5
- <% options[:column_names].each do |column_name| %>
6
- <% column_name_arr = column_name.split(':') %>
7
- <% case 'string'
8
- when 'integer' %>
9
- = f.input :<%= column_name_arr[0] %>, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, wrapper: :form_string_custom, placeholder: '<%= column_name_arr[0] %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
10
- .<%= column_name_arr[0] %>.error-color.hidden
11
- p Please fill height
12
- <% when 'string' %>
13
- = f.input :<%= column_name_arr[0] %>, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, wrapper: :form_string_custom, placeholder: '<%= column_name_arr[0] %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
14
- .<%= column_name_arr[0] %>.error-color.hidden
15
- p Please fill height
16
- <% when 'select_multiple' %>
17
- = f.input :<%= column_name_arr[0] %>, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, wrapper: :form_string_custom, placeholder: '<%= column_name_arr[0] %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
18
- .<%= column_name_arr[0] %>.error-color.hidden
19
- p Please fill height
20
- <% when 'select_single' %>
21
- = f.input :<%= column_name_arr[0] %>, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, wrapper: :form_string_custom, placeholder: '<%= column_name_arr[0] %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
22
- .<%= column_name_arr[0] %>.error-color.hidden
23
- p Please fill height
24
- <% when 'checkbox' %>
25
- = f.input :<%= column_name_arr[0] %>, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, wrapper: :form_string_custom, placeholder: '<%= column_name_arr[0] %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
26
- .<%= column_name_arr[0] %>.error-color.hidden
27
- p Please fill height
28
- <% when 'datetime' %>
29
- = f.input :<%= column_name_arr[0] %>, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, wrapper: :form_string_custom, placeholder: '<%= column_name_arr[0] %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
30
- .<%= column_name_arr[0] %>.error-color.hidden
31
- p Please fill height
32
- <% when 'file' %>
33
- = f.label :file, "Upload .pdf or .ai "
34
- = f.file_field :file, input_html: {}
35
- <% end %>
36
- <% end %>
37
-
38
- = f.button :submit, "Create new Template", class: "float-right", data: {class_name: 'product_template-form',path_name: "admin/products/#{@product.id}/templates", button_name: 'Create new template'}
@@ -1,14 +0,0 @@
1
- table.table-hover
2
- thead
3
- tr.border-bottom.border-top
4
- <% options[:column_names].each do |column_name| %>
5
- th.p-3 <%= column_name.titleize %>
6
- <% end %>
7
- tbody
8
- - @filtered_result.data.each do |<%= name.singularize %>|
9
- tr.border-bottom
10
- <% options[:column_names].each do |column_name| %>
11
- td.p-3 = <%= name.singularize %>.<%= column_name %>
12
- <% end %>
13
-
14
- = cm_paginate(@filtered_result.facets)
@@ -1,11 +0,0 @@
1
- - content_for :bread_crumb do
2
- h6.text-light.breadcrumb-nav
3
- = link_to "Home ", admin_<%= name %>_path
4
- '/
5
- span.active = link_to "<%= name.titleize %>", admin_<%= name %>_path
6
-
7
- .admin-table
8
- == render 'filters'
9
-
10
- .table-container
11
- == render 'table'
@@ -1,8 +0,0 @@
1
- .container
2
- h2 Coupon
3
-
4
- .d-flex.flex-column
5
- <% options[:column_names].each do |column_name| %>
6
- .attribute.mr-4 <%= name.singularize.titleize %>
7
- .value = @<%= name.singularize %>.<%= column_name %>
8
- <% end %>
@@ -1,57 +0,0 @@
1
- module CmAdmin
2
- module ViewActionTemplate
3
- def copy_index_files
4
- template "views/index.erb", "app/views/admin/#{name}/index.html.slim"
5
- template "views/_table.erb", "app/views/admin/#{name}/_table.html.slim"
6
- copy_file "views/_filters.html.slim", "app/views/admin/#{name}/_filters.html.slim"
7
- end
8
-
9
- def copy_show_files
10
- template "views/show.erb", "app/views/admin/#{name}/show.html.slim"
11
- end
12
-
13
- def copy_form_files
14
- template "views/_form.erb", "app/views/admin/#{name}/_form.html.slim"
15
- end
16
- end
17
-
18
- class ViewGenerator < Rails::Generators::NamedBase
19
- include ViewActionTemplate
20
- desc <<-DESC.strip_heredoc
21
- Generate views for specific action of the model in admin
22
- Use -c to specify which column names you want to be present on page.
23
- Atleast one option is mandatory.
24
- For example:
25
- rails g cm_admin:view NAME page_type -c options
26
- rails g cm_admin:view products form -c title:string price:integer
27
- rails g cm_admin:view products index -c title price
28
-
29
- NAME is the table name
30
- page_type is the page you want to copy files. It can be the following
31
- index, show, form.
32
-
33
- This will create a files respectively at app/views/admin/#{name}/***.html.slim
34
-
35
- DESC
36
-
37
- source_root File.expand_path('templates', __dir__)
38
-
39
- argument :page_type, required: true, default: nil,
40
- desc: "The scope to copy views to"
41
- class_option :column_names, aliases: "-c", type: :array,
42
- desc: "Select specific columns in the files to be be added."
43
-
44
- def create_new_file
45
- if page_type == 'index'
46
- copy_index_files
47
- elsif page_type == 'form'
48
- copy_form_files
49
- elsif page_type == 'show'
50
- copy_show_files
51
- else
52
- puts "Wrong page_type provided. It can be either index or show"
53
- end
54
- end
55
-
56
- end
57
- end