slash_admin 1.3.2 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 60a62e71df7ce85dd3b7a4ec43387b2487e6b785173efe76bf68af86f9ebc0f3
4
- data.tar.gz: '0280264757dfe91230cdf5b359b577fe1bfdaf0914bc255593e92da0e98595b4'
3
+ metadata.gz: 11e65af2390efad19838b6a296c332d2390f7db2cc19d5e7fb3b194a20764e02
4
+ data.tar.gz: 6b8d9aeb8534270f7edf23f56a13d8284ed791d3fc08a85a5577adada253e075
5
5
  SHA512:
6
- metadata.gz: c02ac33b7adeeb9fb6dfe8b9986ff253b66fee5dc23674587eb27db2ff16c5997dfa2ac14e578f56e5d3b0a0410f56594a93b37be586be1aa0584ee40b3b1682
7
- data.tar.gz: c4153fff71a6d0fe535ddeb0992feed99388a31a73b661de066139f32e75247998d4f21fcbfcf05ca222b57c181474bd7f32793f351f95dc42779841a43f0621
6
+ metadata.gz: 3198056fa8a35ae1d9e0005d86b44ef6e382675b63073deeb7974862a73b100cdeadef0ab6cd0f8f7ccf150c11ea0a38e95a42c149f41626393ba318144f33cf
7
+ data.tar.gz: e7e82ddba2244e1ca4c65d6f39cf8627793182bf36b709adae59f7b385364eeeeed4bee13d1fe2dade6b0edb295bdc1c03181921bae6c6449df84d42bc2da1f7
data/README.md CHANGED
@@ -1,15 +1,14 @@
1
1
  <p align="center">
2
- <img width="250" src="https://i.imgur.com/Rok5Ocf.png" />
2
+ <img width="250" src="https://i.imgur.com/mm9gXtL.png" />
3
3
  </p>
4
4
 
5
5
  # SlashAdmin
6
6
 
7
7
  [![Gem Version](https://badge.fury.io/rb/slash_admin.svg)](https://badge.fury.io/rb/slash_admin)
8
- [![Code Climate](https://codeclimate.com/github/nicovak/slash_admin/badges/gpa.svg)](https://codeclimate.com/github/nicovak/slash_admin)
9
8
  [![CircleCI](https://circleci.com/gh/nicovak/slash_admin/tree/master.svg?style=svg&circle-token=6e9ebd7fef3ebc881c75a769b0970808024a2ae9)](https://circleci.com/gh/nicovak/slash_admin/tree/master)
10
9
 
11
- A modern and fully overridable admin, just the rails way.
12
- Embeded admin user and authentication system, devise is not needed.
10
+ A modern and fully customizable admin, just the rails way.
11
+ Embedded admin user and authentication system, devise is not needded.
13
12
 
14
13
  ❤️ [Demo repository](https://github.com/nicovak/slash_admin_demo)
15
14
  🚀 [Live running](https://slashadmin.herokuapp.com/admin)
@@ -21,7 +20,7 @@ Password
21
20
  `admin@admin`
22
21
 
23
22
  #### Motivation:
24
- - Provide to rails the admin it deserves without DSL or obscure logic.
23
+ - Provide to Ruby On Rails the admin it deserves without DSL or obscure logic.
25
24
  - Provide an easy to use and modern experience to final users.
26
25
 
27
26
  I tried to take the best from two greats existing gem:
@@ -34,37 +33,42 @@ Design inspired from the awesome metronic admin theme:
34
33
  #### Screenshots
35
34
 
36
35
  ##### Login
37
- ![Image of Login screen](https://i.imgur.com/MJerQSR.jpg)
36
+ ![Image of Login screen](https://i.imgur.com/ftwC0rF.png)
38
37
  ##### Dashboard
39
- ![Image of Dashboard](https://i.imgur.com/0g3wSjw.png)
38
+ ![Image of Dashboard](https://i.imgur.com/3JzkvoT.png)
40
39
  ##### List
41
- ![Image of List](https://i.imgur.com/s1egSS3.png)
40
+ ![Image of List](https://i.imgur.com/y6Vz6S1.png)
42
41
  ##### Edit / Create
43
- ![Image of Create / Edit](https://i.imgur.com/wf72pZz.png)
42
+ ![Image of Create / Edit](https://i.imgur.com/S2QqHWF.png)
44
43
 
45
44
  ### Installation
46
45
 
47
46
  Add this line to your application's Gemfile:
47
+
48
48
  ```ruby
49
49
  gem 'slash_admin'
50
50
  ```
51
51
 
52
- And then execute:
52
+ Then execute:
53
+
53
54
  ```bash
54
55
  $ bundle install
55
56
  ```
56
57
 
57
58
  Or install it yourself as:
59
+
58
60
  ```bash
59
61
  $ gem install slash_admin
60
62
  ```
61
63
 
62
64
  Gemfile
65
+
63
66
  ```
64
67
  gem 'carrierwave'
65
68
  ```
66
69
 
67
70
  Then:
71
+
68
72
  ```bash
69
73
  $ rails g slash_admin:install
70
74
  $ rails slash_admin:install:migrations
@@ -77,13 +81,36 @@ $ rails db:migrate
77
81
  Mime::Type.register "application/xls", :xls
78
82
  ```
79
83
 
84
+ If your apps uses Sprockets 4+, you'll need to add SlashAdmin assets to your `manifest.js` file. To do this, add these two lines to the file:
85
+
86
+ `app/assets/config/manifest.js`
87
+
88
+ ```
89
+ //= link slash_admin/application.css
90
+ //= link slash_admin/application.js
91
+ ```
92
+
93
+ `config/routes.rb`
94
+
80
95
  ```ruby
81
96
  Rails.application.routes.draw do
82
97
  mount SlashAdmin::Engine => "/"
83
98
  end
84
99
  ```
85
100
 
86
- Mounted as '/' but prefixed in the gem and in routes definition of models admin. See above.
101
+ Mounted as '/' but prefixed in the gem and in routes definition of models admin. See the full example above.
102
+
103
+ ```ruby
104
+ Rails.application.routes.draw do
105
+ mount SlashAdmin::Engine => "/"
106
+
107
+ namespace :slash_admin, path: "/admin" do
108
+ scope module: 'models' do
109
+ resources :pages # assume Page model
110
+ end
111
+ end
112
+ end
113
+ ```
87
114
 
88
115
  ### Important
89
116
 
@@ -1,3 +1,3 @@
1
1
  //= link_tree ../images
2
- //= link_directory ../javascripts/slash_admin .js
3
- //= link_directory ../stylesheets/slash_admin scss
2
+ //= link_tree ../javascripts
3
+ //= link_tree ../stylesheets
@@ -207,7 +207,7 @@ function init() {
207
207
 
208
208
 
209
209
  $(".select2-single, .select2-multiple").each (function() {
210
- let initialPlaceholder = $(this).attr('data-placeholder') || I18n.t('slash_admin.view.select');
210
+ var initialPlaceholder = $(this).attr('data-placeholder') || I18n.t('slash_admin.view.select');
211
211
 
212
212
  $(this).select2({
213
213
  placeholder: initialPlaceholder,
@@ -228,7 +228,7 @@ function init() {
228
228
  });
229
229
 
230
230
  $(".select2-model-multiple, .select2-model-single").each(function() {
231
- let initialPlaceholder = $(this).attr('data-placeholder') || I18n.t('slash_admin.view.select');
231
+ var initialPlaceholder = $(this).attr('data-placeholder') || I18n.t('slash_admin.view.select');
232
232
 
233
233
  $(this).select2({
234
234
  placeholder: initialPlaceholder,
@@ -1,37 +1,21 @@
1
- /*
2
- * This is a manifest file that'll be compiled into application.css, which will include all the files
3
- * listed below.
4
- *
5
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
- * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
- *
8
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
- * files in this directory. Styles in this file should be added after the last require_* statement.
11
- * It is generally better to create a new file per style scope.
12
- *
13
- *= require animate
14
- *= require toastr
15
- *= require jquery.nestable
16
- *= require sweetalert
17
- *= require select2/select2.min
18
- *= require select2/select2-bootstrap4
19
- *= require bootstrap-datepicker.min
20
- *= require bootstrap-material-datetimepicker
21
- *= require jquery.tagsinput-revisited.min
22
- *= require jquery.minicolors
23
- *= require slash_admin/colors
24
- *= require slash_admin/alert
25
- *= require codemirror/codemirror
26
- *= require codemirror/theme/relax-seti
27
- *= require codemirror/lint/lint
28
- *= require_self
29
- *= require slash_admin/custom
30
- *= require_tree .
31
- */
32
-
33
- @import "./colors";
34
- @import "./alert";
1
+ @import "animate";
2
+ @import "toastr";
3
+ @import "jquery.nestable";
4
+ @import "sweetalert";
5
+ @import "select2/select2.min";
6
+ @import "select2/select2-bootstrap4";
7
+ @import "bootstrap-datepicker.min";
8
+ @import "bootstrap-material-datetimepicker";
9
+ @import "jquery.tagsinput-revisited.min";
10
+ @import "jquery.minicolors";
11
+ @import "slash_admin/colors";
12
+ @import "slash_admin/alert";
13
+ @import "slash_admin/custom";
14
+ @import "codemirror/codemirror";
15
+ @import "codemirror/theme/relax-seti";
16
+ @import "codemirror/lint/lint";
17
+ @import "colors";
18
+ @import "alert";
35
19
 
36
20
  $pagination-padding-y: 0.4rem !default;
37
21
  $pagination-border-width: 0 !default;
@@ -107,7 +91,7 @@ p[data-f-id="pbf"] {
107
91
  margin: 0;
108
92
 
109
93
  label.form-control-label {
110
- display: block;
94
+ display: inline-block;
111
95
  font-weight: 600;
112
96
  }
113
97
 
@@ -155,7 +139,8 @@ p[data-f-id="pbf"] {
155
139
  }
156
140
 
157
141
  .select2-container--bootstrap4 .select2-results__option--highlighted,
158
- .select2-container--bootstrap4 .select2-results__option--highlighted.select2-results__option[aria-selected=true] {
142
+ .select2-container--bootstrap4
143
+ .select2-results__option--highlighted.select2-results__option[aria-selected="true"] {
159
144
  background-color: $primary;
160
145
  color: white;
161
146
  }
@@ -178,20 +163,27 @@ p[data-f-id="pbf"] {
178
163
  background: $input;
179
164
  }
180
165
 
181
- .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice {
166
+ .select2-container--bootstrap4
167
+ .select2-selection--multiple
168
+ .select2-selection__choice {
182
169
  word-break: break-all;
183
170
  background: white;
184
171
  }
185
172
 
186
173
  .select2-container .select2-results__option--highlighted,
187
- .select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true],
188
- .select2-container--bootstrap4 .select2-dropdown .select2-results__option[aria-selected=true] {
174
+ .select2-container
175
+ .select2-results__option--highlighted.select2-results__option[aria-selected="true"],
176
+ .select2-container--bootstrap4
177
+ .select2-dropdown
178
+ .select2-results__option[aria-selected="true"] {
189
179
  background-color: $primary;
190
180
  color: white;
191
181
  }
192
182
 
193
- .select2-container--bootstrap4.select2-container--focus .select2-selection--multiple,
194
- .select2-container--bootstrap4.select2-container--focus .select2-selection--single {
183
+ .select2-container--bootstrap4.select2-container--focus
184
+ .select2-selection--multiple,
185
+ .select2-container--bootstrap4.select2-container--focus
186
+ .select2-selection--single {
195
187
  border: 1px solid $border;
196
188
  background: $input;
197
189
  }
@@ -211,7 +203,9 @@ p[data-f-id="pbf"] {
211
203
  background: none;
212
204
  }
213
205
 
214
- .select2-container--bootstrap4 .select2-search--dropdown .select2-search__field {
206
+ .select2-container--bootstrap4
207
+ .select2-search--dropdown
208
+ .select2-search__field {
215
209
  border-color: $border;
216
210
  }
217
211
 
@@ -272,20 +266,6 @@ p[data-f-id="pbf"] {
272
266
  }
273
267
  }
274
268
 
275
- .field_with_errors {
276
- label {
277
- color: $red;
278
- }
279
-
280
- input {
281
- border-color: $red !important;
282
- }
283
-
284
- & + .form-control-feedback {
285
- color: $red;
286
- }
287
- }
288
-
289
269
  .block-language {
290
270
  display: block;
291
271
  margin: 15px 0;
@@ -397,18 +377,18 @@ p[data-f-id="pbf"] {
397
377
  position: relative;
398
378
  height: 80px;
399
379
  width: 100%;
400
- transition: all ease .6s;
380
+ transition: all ease 0.6s;
401
381
  }
402
382
 
403
383
  .image-overlay {
404
- transition: all ease .6s;
384
+ transition: all ease 0.6s;
405
385
  position: absolute;
406
386
  width: 100%;
407
387
  height: 100%;
408
- background: rgba($primary, .0);
388
+ background: rgba($primary, 0);
409
389
 
410
390
  .icon-zoom-image {
411
- transition: all ease .6s;
391
+ transition: all ease 0.6s;
412
392
  position: absolute;
413
393
  top: 50%;
414
394
  left: 50%;
@@ -418,7 +398,7 @@ p[data-f-id="pbf"] {
418
398
  }
419
399
 
420
400
  &:hover {
421
- background: rgba($primary, .4);
401
+ background: rgba($primary, 0.4);
422
402
 
423
403
  .icon-zoom-image {
424
404
  opacity: 1;
@@ -442,6 +422,16 @@ p[data-f-id="pbf"] {
442
422
  color: $primary;
443
423
  }
444
424
 
425
+ .has-danger {
426
+ .form-control, input, select, textarea {
427
+ border-color: $error !important;
428
+ }
429
+
430
+ label, .form-control-feedback {
431
+ color: $error !important;
432
+ }
433
+ }
434
+
445
435
  .scroll-to-top {
446
436
  text-align: center;
447
437
  position: fixed;
@@ -589,10 +579,6 @@ p[data-f-id="pbf"] {
589
579
  display: flex;
590
580
  align-items: center;
591
581
 
592
- &:hover {
593
- background: #f9fafc;
594
- }
595
-
596
582
  &.active {
597
583
  color: $textColorHover;
598
584
  }
@@ -869,9 +855,10 @@ p[data-f-id="pbf"] {
869
855
  display: none;
870
856
  padding: 9px 15px;
871
857
 
872
- tr, a {
858
+ tr,
859
+ a {
873
860
  color: $textColor;
874
- transition: all .6s ease;
861
+ transition: all 0.6s ease;
875
862
  cursor: pointer;
876
863
 
877
864
  &.active {
@@ -1051,7 +1038,7 @@ p[data-f-id="pbf"] {
1051
1038
  border-color: rgba(121, 133, 166, 0.1) !important;
1052
1039
  margin-top: 1rem;
1053
1040
  background: #fff;
1054
- font-size: .9em;
1041
+ font-size: 0.9em;
1055
1042
 
1056
1043
  .fit {
1057
1044
  white-space: nowrap;
@@ -1085,8 +1072,12 @@ p[data-f-id="pbf"] {
1085
1072
  margin-top: 0.5rem;
1086
1073
  }
1087
1074
 
1088
- .select2-container--bootstrap4 .select2-selection--single .select2-selection__choice,
1089
- .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice {
1075
+ .select2-container--bootstrap4
1076
+ .select2-selection--single
1077
+ .select2-selection__choice,
1078
+ .select2-container--bootstrap4
1079
+ .select2-selection--multiple
1080
+ .select2-selection__choice {
1090
1081
  display: flex;
1091
1082
  clear: both;
1092
1083
  }
@@ -1350,7 +1341,9 @@ p[data-f-id="pbf"] {
1350
1341
  height: 45px;
1351
1342
  }
1352
1343
 
1353
- .cookies-eu, .cookies-eu-button-holder, .cookies-eu-content-holder {
1344
+ .cookies-eu,
1345
+ .cookies-eu-button-holder,
1346
+ .cookies-eu-content-holder {
1354
1347
  display: flex;
1355
1348
  line-height: normal;
1356
1349
  }
@@ -1397,7 +1390,7 @@ p[data-f-id="pbf"] {
1397
1390
  }
1398
1391
 
1399
1392
  label {
1400
- font-size: .85em;
1393
+ font-size: 0.85em;
1401
1394
  color: $textColor;
1402
1395
  text-transform: uppercase;
1403
1396
  margin-bottom: 0.25rem;
@@ -1411,7 +1404,9 @@ p[data-f-id="pbf"] {
1411
1404
  a {
1412
1405
  color: $textColor;
1413
1406
 
1414
- &:hover, &:focus, &:active {
1407
+ &:hover,
1408
+ &:focus,
1409
+ &:active {
1415
1410
  color: $primary;
1416
1411
  }
1417
1412
  }
@@ -1439,7 +1434,7 @@ p[data-f-id="pbf"] {
1439
1434
  }
1440
1435
 
1441
1436
  .sub-title {
1442
- font-size: .9em;
1437
+ font-size: 0.9em;
1443
1438
  color: $textColor;
1444
1439
  }
1445
1440
 
@@ -9,9 +9,9 @@ module SlashAdmin
9
9
  before_action :handle_default
10
10
  before_action :nestable_config
11
11
  before_action :handle_default_params
12
- before_action :handle_assocations
12
+ before_action :handle_associations
13
13
 
14
- helper_method :list_params, :export_params, :create_params, :update_params, :show_params, :nested_params, :should_add_translatable?, :translatable_params, :tooltips
14
+ helper_method :list_params, :export_params, :create_params, :update_params, :show_params, :nested_params, :should_add_translatable?, :translatable_params, :available_locales, :tooltips
15
15
 
16
16
  def index
17
17
  authorize! :index, @model_class
@@ -386,7 +386,7 @@ module SlashAdmin
386
386
  end
387
387
 
388
388
  def handle_default_translations
389
- I18n.available_locales.reject { |key| key == :root }.each do |locale|
389
+ available_locales.reject { |key| key == :root }.each do |locale|
390
390
  translation = @model.translations.find_by_locale locale.to_s
391
391
  if translation.nil?
392
392
  @model.translations.build locale: locale
@@ -402,7 +402,11 @@ module SlashAdmin
402
402
  params[:filters] ||= []
403
403
  end
404
404
 
405
- def handle_assocations
405
+ def available_locales
406
+ SlashAdmin.configuration.available_locales
407
+ end
408
+
409
+ def handle_associations
406
410
  @belongs_to_fields = @model_class.reflect_on_all_associations(:belongs_to).map(&:name)
407
411
  @has_many_fields = @model_class.reflect_on_all_associations(:has_many).map(&:name)
408
412
  @has_one_fields = @model_class.reflect_on_all_associations(:has_one).map(&:name)
@@ -2,6 +2,8 @@
2
2
 
3
3
  module SlashAdmin
4
4
  module ApplicationHelper
5
+ include Pagy::Frontend
6
+
5
7
  def page_title(content)
6
8
  content_for :page_title, content
7
9
  end
@@ -75,7 +75,9 @@
75
75
  <% end %>
76
76
  </td>
77
77
  <% else %>
78
- <td class="<%= attr.to_s.parameterize.underscore.downcase %>"><%= render attr.keys.first.to_s, model: m %></td>
78
+ <td class="<%= attr.to_s.parameterize.underscore.downcase %>">
79
+ <%= render attr[attr.keys.first][:type].to_s, model: m, attr: attr.keys.first %>
80
+ </td>
79
81
  <% end %>
80
82
  <% else %>
81
83
  <% if m.send(attr).is_a?(TrueClass) || m.send(attr).is_a?(FalseClass) %>
@@ -1,15 +1,15 @@
1
1
  <% if should_add_translatable? %>
2
2
  <h3 class="translations"><%= t('slash_admin.view.translations') %></h3>
3
3
  <nav class="nav nav-tabs" id="language-tabs" role="tablist">
4
- <% I18n.available_locales.each do |locale| %>
5
- <a class="nav-item nav-link <%= I18n.available_locales.first == locale ? 'active' : '' %>" id="nav-language-<%= locale %>" data-toggle="tab" href="#language-<%= locale %>" role="tab" aria-controls="language-<%= locale %>">
4
+ <% available_locales.each do |locale| %>
5
+ <a class="nav-item nav-link <%= available_locales.first == locale ? 'active' : '' %>" id="nav-language-<%= locale %>" data-toggle="tab" href="#language-<%= locale %>" role="tab" aria-controls="language-<%= locale %>">
6
6
  <img src='<%= image_path("slash_admin/#{locale.to_s}.png") %>' style="margin-right: 5px; max-width: 25px;">
7
7
  </a>
8
8
  <% end %>
9
9
  </nav>
10
10
  <div class="tab-content">
11
- <% I18n.available_locales.each do |locale| %>
12
- <div class="tab-pane fade <%= I18n.available_locales.first == locale ? 'show active' : '' %>" id="language-<%= locale %>" role="tabpanel" aria-labelledby="language-<%= locale %>-tab">
11
+ <% available_locales.each do |locale| %>
12
+ <div class="tab-pane fade <%= available_locales.first == locale ? 'show active' : '' %>" id="language-<%= locale %>" role="tabpanel" aria-labelledby="language-<%= locale %>-tab">
13
13
  <%= f.globalize_fields_for locale do |g| %>
14
14
  <% translatable_params.each do |a| %>
15
15
  <%= render 'slash_admin/fields/form_group', f: g, a: a %>
@@ -0,0 +1 @@
1
+ <%= truncate(strip_tags(model.send(attr)), length: 50) %>
@@ -27,7 +27,7 @@
27
27
  </div>
28
28
  </div>
29
29
  <div class="col-lg-6 col-md-4 d-none d-sm-none d-md-flex ">
30
- <div class="container-fluid container-fluid-devise bckg-login" align="center" style="background: url(https://source.unsplash.com/1920x1080/?nature) no-repeat; background-size: cover;">
30
+ <div class="container-fluid container-fluid-devise bckg-login" align="center" style="background: url(https://source.unsplash.com/collection/827743/960x1080) no-repeat; background-size: cover;">
31
31
  </div>
32
32
  </div>
33
33
  </div>
@@ -10,8 +10,8 @@
10
10
  <div class="navbar-nav mr-auto mt-2 mt-lg-0">
11
11
  </div>
12
12
  <ul class="nav right-nav-fix">
13
- <li class="nav-item dropdown">
14
- <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
13
+ <li class="nav-item">
14
+ <a class="nav-link">
15
15
  <% if current_admin.avatar.present? %>
16
16
  <img src="<%= current_admin.avatar.url %>" class="rounded-circle"/>
17
17
  <% else %>
@@ -74,8 +74,8 @@
74
74
  <script type="text/javascript">
75
75
  $(function() {
76
76
  $(".clickable-row").click(function() {
77
- let href = $(this).data("href");
78
- let blank = $(this).data("blank");
77
+ var href = $(this).data("href");
78
+ var blank = $(this).data("blank");
79
79
 
80
80
  if (blank === true) {
81
81
  window.open = href;
@@ -8,6 +8,8 @@ module SlashAdmin
8
8
  def install
9
9
  template "install.erb",
10
10
  "app/helpers/slash_admin/menu_helper.rb"
11
+ template "initializer.rb",
12
+ "config/initializers/slash_admin.rb"
11
13
  end
12
14
  end
13
15
  end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ SlashAdmin.configure do |config|
4
+ # Do some config
5
+ # config.available_locales = I18n.available_locales
6
+ end
@@ -23,4 +23,20 @@ require "http_accept_language"
23
23
  require "batch_translation"
24
24
 
25
25
  module SlashAdmin
26
+ class << self
27
+ attr_accessor :configuration
28
+ end
29
+
30
+ def self.configure
31
+ self.configuration ||= Configuration.new
32
+ yield(configuration)
33
+ end
34
+
35
+ class Configuration
36
+ attr_accessor :available_locales
37
+
38
+ def initialize
39
+ @available_locales = I18n.available_locales
40
+ end
41
+ end
26
42
  end
@@ -1,9 +1,15 @@
1
+ require "pagy"
2
+ require "pagy/extras/bootstrap"
3
+ require "pagy/extras/i18n"
4
+ require "pagy/extras/array"
5
+
1
6
  module SlashAdmin
2
7
  class Engine < ::Rails::Engine
3
8
  isolate_namespace SlashAdmin
4
9
 
5
10
  initializer "slash_admin.assets.precompile" do |app|
6
- app.config.assets.precompile += %w[slash_admin/*]
11
+ app.config.assets.precompile += %w(slash_admin slash_admin_manifest.js)
12
+ app.config.assets.paths << Pagy.root.join("javascripts")
7
13
  end
8
14
  end
9
15
  end
@@ -1,3 +1,3 @@
1
1
  module SlashAdmin
2
- VERSION = "1.3.2"
2
+ VERSION = "1.4.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slash_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - KOVACS Nicolas
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-07 00:00:00.000000000 Z
11
+ date: 2020-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -342,6 +342,7 @@ files:
342
342
  - app/views/slash_admin/base/_data_show.html.erb
343
343
  - app/views/slash_admin/base/_filters.html.erb
344
344
  - app/views/slash_admin/base/_translatable_fields.html.erb
345
+ - app/views/slash_admin/base/_wysiwyg.html.erb
345
346
  - app/views/slash_admin/base/edit.html.erb
346
347
  - app/views/slash_admin/base/index.html.erb
347
348
  - app/views/slash_admin/base/index.xls.erb
@@ -389,7 +390,6 @@ files:
389
390
  - app/views/slash_admin/shared/_new_form_buttons.html.erb
390
391
  - app/views/slash_admin/shared/_sub_header.html.erb
391
392
  - app/views/slash_admin/shared/_tooltip.html.erb
392
- - config/initializers/pagy.rb
393
393
  - config/initializers/validators.rb
394
394
  - config/locales/en.yml
395
395
  - config/locales/fr.yml
@@ -399,6 +399,7 @@ files:
399
399
  - lib/generators/slash_admin/controllers/controllers_generator.rb
400
400
  - lib/generators/slash_admin/controllers/templates/controllers.erb
401
401
  - lib/generators/slash_admin/install/install_generator.rb
402
+ - lib/generators/slash_admin/install/templates/initializer.rb
402
403
  - lib/generators/slash_admin/install/templates/install.erb
403
404
  - lib/generators/slash_admin/override_admin/override_admin_generator.rb
404
405
  - lib/generators/slash_admin/override_admin/templates/admin.erb
@@ -440,7 +441,7 @@ homepage: https://github.com/nicovak/slash_admin
440
441
  licenses:
441
442
  - MIT
442
443
  metadata: {}
443
- post_install_message:
444
+ post_install_message:
444
445
  rdoc_options: []
445
446
  require_paths:
446
447
  - lib
@@ -456,7 +457,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
456
457
  version: '0'
457
458
  requirements: []
458
459
  rubygems_version: 3.1.2
459
- signing_key:
460
+ signing_key:
460
461
  specification_version: 4
461
462
  summary: A modern and overridable admin gem, just the rails way.
462
463
  test_files: []
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "pagy/extras/bootstrap"
4
- require "pagy/extras/i18n"
5
- require "pagy/extras/array"
6
- require "pagy/extras/searchkick"
7
-
8
- Rails.application.config.assets.paths << Pagy.root.join("javascripts")