tramway-admin 1.33 → 2.0
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/README.md +60 -4
- data/app/controllers/tramway/admin/application_controller.rb +0 -9
- data/app/controllers/tramway/admin/records_controller.rb +10 -4
- data/app/models/tramway/user/user.rb +1 -0
- data/app/views/tramway/admin/records/_list.html.haml +3 -3
- data/app/views/tramway/admin/records/_search.html.haml +6 -6
- data/app/views/tramway/admin/records/index.html.haml +2 -1
- data/app/views/tramway/admin/shared/show/_attribute_tr.html.haml +1 -1
- data/lib/tramway/admin/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5390a8ac2ff22518ce7381eda5eec47f0ede410e0cdcbcbf2ad4577a2e6d7869
|
4
|
+
data.tar.gz: 1599e0b6a50ef1f67df55a47d22ce29dc7438bf35d19f127d373d3594de9248a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 296ebeca8c4c69f989c4240e3348f2ec47c77f29d8a2066eb9ce233479e78241f29da09619de0d228332d3cef79f299bc9229008bfa841ca7629d0d782b43cc7
|
7
|
+
data.tar.gz: 8fe4ca13d159e6953157ed082caf92a5b5aede82aca7ac609cc00a24be067d3e580c9b1c3625b5736414504bb3a53bd4667cd7704a880c11750155e501366306
|
data/README.md
CHANGED
@@ -10,7 +10,6 @@ How to use my plugin.
|
|
10
10
|
*Gemfile*
|
11
11
|
```ruby
|
12
12
|
gem 'tramway-admin'
|
13
|
-
gem 'tramway-auth'
|
14
13
|
gem 'tramway-user'
|
15
14
|
gem 'state_machine', github: 'seuros/state_machine'
|
16
15
|
gem 'bcrypt'
|
@@ -239,7 +238,6 @@ class YourModel < Tramway::Core::ApplicationRecord
|
|
239
238
|
#### 12. Run server `rails s`
|
240
239
|
#### 13. Launch `localhost:3000/admin`
|
241
240
|
|
242
|
-
|
243
241
|
### CRUDs for models
|
244
242
|
|
245
243
|
By default users with role `admin` have access to all models used as arguments in method `::Tramway::Admin.set_available_models`. If you want specify models by roles, use them as keys
|
@@ -393,6 +391,64 @@ window.current_locale = window.i18n_locale 'en'
|
|
393
391
|
```
|
394
392
|
to the `app/assets/javascripts/admin/application.js.coffee` file
|
395
393
|
|
394
|
+
### Decorator Helper methods
|
395
|
+
|
396
|
+
#### date_view
|
397
|
+
Returns a date in the format depending on localization
|
398
|
+
|
399
|
+
*app/decorators/\*_decorator.rb*
|
400
|
+
```ruby
|
401
|
+
def created_at
|
402
|
+
date_view object.created_at
|
403
|
+
end
|
404
|
+
```
|
405
|
+
#### datetime_view
|
406
|
+
Returns a date and time in the format depending on localization
|
407
|
+
|
408
|
+
*app/decorators/*_decorator.rb*
|
409
|
+
```ruby
|
410
|
+
def created_at
|
411
|
+
datetime_view object.created_at
|
412
|
+
end
|
413
|
+
```
|
414
|
+
#### state_machine_view
|
415
|
+
Returns the state of an object according to a state machine
|
416
|
+
|
417
|
+
*app/decorators/*_decorator.rb*
|
418
|
+
```ruby
|
419
|
+
def state
|
420
|
+
state_machine_view object, :state
|
421
|
+
end
|
422
|
+
```
|
423
|
+
#### image_view
|
424
|
+
Returns an image in a particular format depending on the parameters of the original image file
|
425
|
+
|
426
|
+
*app/decorators/\*_decorator.rb*
|
427
|
+
```ruby
|
428
|
+
def avatar
|
429
|
+
image_view object.avatar
|
430
|
+
end
|
431
|
+
```
|
432
|
+
#### enumerize_view
|
433
|
+
Returns object enumerations as text
|
434
|
+
|
435
|
+
*app/decorators/\*_decorator.rb*
|
436
|
+
```ruby
|
437
|
+
def field_type
|
438
|
+
enumerize_view object.field_type
|
439
|
+
end
|
440
|
+
```
|
441
|
+
|
442
|
+
#### file_view
|
443
|
+
Returns file name and button to download it
|
444
|
+
|
445
|
+
*app/decorators/\*_decorator.rb*
|
446
|
+
```ruby
|
447
|
+
def file_download
|
448
|
+
file_view object.file
|
449
|
+
end
|
450
|
+
```
|
451
|
+
|
396
452
|
## Notifications
|
397
453
|
|
398
454
|
You can add notification to your admin panel to the navbar.
|
@@ -480,7 +536,7 @@ Tramway uses [audited](https://github.com/collectiveidea/audited) to log actions
|
|
480
536
|
#### 1. Add Audited::Audit model to available models
|
481
537
|
|
482
538
|
*config/initializers/tramway.rb*
|
483
|
-
```
|
539
|
+
```ruby
|
484
540
|
Tramway::Admin.set_available_models(
|
485
541
|
Audited::Audit,
|
486
542
|
project: :your_project_name
|
@@ -489,7 +545,7 @@ Tramway::Admin.set_available_models(
|
|
489
545
|
|
490
546
|
#### 2. Add this model to navbar
|
491
547
|
|
492
|
-
```
|
548
|
+
```ruby
|
493
549
|
Tramway::Admin.set_navbar_structure(
|
494
550
|
Audited::Audit,
|
495
551
|
project: :your_project_name
|
@@ -72,15 +72,6 @@ module Tramway
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
-
if Rails.env.production?
|
76
|
-
rescue_from StandardError do |exception|
|
77
|
-
Rails.logger.warn "ERROR MESSAGE: #{exception.message}"
|
78
|
-
Rails.logger.warn "BACKTRACE: #{exception.backtrace.first(30).join("\n")}"
|
79
|
-
@exception = exception
|
80
|
-
render 'tramway/admin/shared/errors/server_error', status: 500, layout: false
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
75
|
include Tramway::ClassNameHelpers
|
85
76
|
|
86
77
|
def model_class
|
@@ -52,16 +52,22 @@ class Tramway::Admin::RecordsController < ::Tramway::Admin::ApplicationControlle
|
|
52
52
|
|
53
53
|
def update
|
54
54
|
@record_form = admin_form_class.new model_class.active.find params[:id]
|
55
|
-
if
|
56
|
-
|
55
|
+
if params[:record][:aasm_event].present?
|
56
|
+
if @record_form.model.send("may_#{params[:record][:aasm_event]}?")
|
57
|
+
@record_form.model.send("#{params[:record][:aasm_event]}!")
|
58
|
+
end
|
57
59
|
else
|
58
|
-
|
60
|
+
if @record_form.submit params[:record]
|
61
|
+
redirect_to params[:redirect].present? ? params[:redirect] : record_path(@record_form.model)
|
62
|
+
else
|
63
|
+
render :edit
|
64
|
+
end
|
59
65
|
end
|
60
66
|
end
|
61
67
|
|
62
68
|
def destroy
|
63
69
|
record = model_class.active.find params[:id]
|
64
|
-
record.remove
|
70
|
+
record.remove!
|
65
71
|
redirect_to params[:redirect].present? ? params[:redirect] : records_path
|
66
72
|
end
|
67
73
|
end
|
@@ -28,7 +28,7 @@
|
|
28
28
|
%br
|
29
29
|
%br
|
30
30
|
.btn-group{ data: { toggle: :buttons } }
|
31
|
-
- record.model.class.
|
32
|
-
- unless
|
33
|
-
= state_events_buttons record, state_method:
|
31
|
+
- record.model.class.state_machines_names.each do |state_machine_name|
|
32
|
+
- unless state_machine_name == 'default'
|
33
|
+
= state_events_buttons record, state_method: state_machine_name, model_param_name: :record, controller: 'tramway/admin/records', action: :update, parameters: { redirect: current_model_records_path(page: params[:page], scope: params[:scope], filter: params[:filter], focus: focus_selector(index)), model: record.class.model_name }, button_options: { class: :smart_button }
|
34
34
|
= paginate @records, theme: 'twitter-bootstrap-4'
|
@@ -1,9 +1,10 @@
|
|
1
1
|
- if searchable_model?(model_class) || is_there_any_filters?(model_class)
|
2
|
-
.
|
3
|
-
.
|
2
|
+
.search
|
3
|
+
.d-flex.flex-row-reverse.filters
|
4
4
|
= form_tag records_path, class: 'form-inline', method: :get do |f|
|
5
5
|
- if searchable_model?(model_class)
|
6
|
-
|
6
|
+
.col-md-8
|
7
|
+
= text_field_tag :search, params[:search], class: 'text form-control'
|
7
8
|
= hidden_field_tag :model, params[:model]
|
8
9
|
= hidden_field_tag :scope, params[:scope]
|
9
10
|
= hidden_field_tag :filter, (params[:filter].is_a?(ActionController::Parameters) ? params[:filter].permit!.to_h.to_json : params[:filter])
|
@@ -30,6 +31,5 @@
|
|
30
31
|
$('#filter_datepicker_begin_date').datepicker();
|
31
32
|
$('#filter_datepicker_end_date').datepicker();
|
32
33
|
});
|
33
|
-
.
|
34
|
-
.
|
35
|
-
= submit_tag t('helpers.actions.search'), class: 'btn btn-primary'
|
34
|
+
.col-md-4.submit
|
35
|
+
= submit_tag t('helpers.actions.search'), class: 'btn btn-primary'
|
@@ -12,7 +12,8 @@
|
|
12
12
|
= link_to fa_icon(:plus), new_current_model_record_path, class: 'btn btn-primary'
|
13
13
|
- if defined? Tramway::Export::Engine
|
14
14
|
= render 'tramway/export/button'
|
15
|
-
|
15
|
+
.col
|
16
|
+
= render 'search', model_class: model_class
|
16
17
|
%hr
|
17
18
|
%ul.nav.nav-tabs
|
18
19
|
- if params[:search].present?
|
@@ -5,5 +5,5 @@
|
|
5
5
|
= value
|
6
6
|
%td
|
7
7
|
- if tramway_model?(model_class)
|
8
|
-
- if attribute_name.to_s != 'state' && object.model.class.
|
8
|
+
- if attribute_name.to_s != 'state' && object.model.class.aasm.states.map(&:name).include?(attribute_name.to_sym)
|
9
9
|
= state_events_buttons object, state_method: attribute_name, model_param_name: :record, controller: 'tramway/admin/records', action: :update, parameters: { model: object.class.model_name }, button_options: { class: :smart_button }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tramway-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '
|
4
|
+
version: '2.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Kalashnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tramway-core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.18.
|
19
|
+
version: 1.18.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.18.
|
26
|
+
version: 1.18.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: tramway-auth
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -196,6 +196,20 @@ dependencies:
|
|
196
196
|
- - '='
|
197
197
|
- !ruby/object:Gem::Version
|
198
198
|
version: '3.0'
|
199
|
+
- !ruby/object:Gem::Dependency
|
200
|
+
name: aasm
|
201
|
+
requirement: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - ">="
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
type: :runtime
|
207
|
+
prerelease: false
|
208
|
+
version_requirements: !ruby/object:Gem::Requirement
|
209
|
+
requirements:
|
210
|
+
- - ">="
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: '0'
|
199
213
|
- !ruby/object:Gem::Dependency
|
200
214
|
name: pg
|
201
215
|
requirement: !ruby/object:Gem::Requirement
|