cm-admin 0.1.0 → 0.4.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.
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