tramway-admin 2.1.3.3 → 4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dcf7895786074971f30f08a973c8bc290a533faff676f5ecc65c444076d7f397
4
- data.tar.gz: 0d445fbf425502399899e0d66be21acb78ee0f673ec06abb94d7f2743a29e239
3
+ metadata.gz: 0da53840f67044b77ccf8d8c37b2dd02d23fde702aa09550182062056032fc5f
4
+ data.tar.gz: 50ae25d697d79b09e8aeb59b19d35a6be14b3b904dfaf0a47562cf5bc3e28401
5
5
  SHA512:
6
- metadata.gz: 9d2619f6ab1f3eef6bc2a330f0dd17f91272fad60c478a07329892fd986bcd13c38bfd5312c69576df533946fca4f20219857ac34a68e8b87aa72e8bebb989f4
7
- data.tar.gz: b1bb886e6bb88028d7665b545c3b8c1550398e19c585cda994e7863a10eeb45dff197837b2a2b5137a5189c47c60103e063695918880adaad097766f1cf8d48d
6
+ metadata.gz: f7f23e28049699b42619820d7c643dcaff51983aa3430da9b5b77d8424e484531fd19f09ba4b07e540ed416c0d3eeb0a12b8551c001fc437634110e0247b0432
7
+ data.tar.gz: af55df2f1614906fd42ca0313e1acf463b08aa78dcb71f4ca1cca50aafe0de8f0f1af20995ea91910b3016d9e062bbdc06bc4dffa8e7f2d09062784a5e360f43
data/README.md CHANGED
@@ -48,7 +48,6 @@ end
48
48
  #### 5. And then execute:
49
49
 
50
50
  ```bash
51
- $ bundle
52
51
  $ rails g tramway:user:install
53
52
  $ rails db:migrate
54
53
  ```
@@ -192,6 +191,9 @@ en:
192
191
  class Admin::YourModelForm < Tramway::Core::ApplicationForm
193
192
  properties :title, :description, :text, :date, :logo
194
193
 
194
+ association :associated
195
+ association :another_polymorphic_associated
196
+
195
197
  def initialize(object)
196
198
  super(object).tap do
197
199
  form_properties title: :string,
@@ -199,6 +201,8 @@ class Admin::YourModelForm < Tramway::Core::ApplicationForm
199
201
  description: :ckeditor,
200
202
  date: :date_picker,
201
203
  text: :text,
204
+ associated: :association,
205
+ another_polymorphic_association: :polymorphic_association,
202
206
  birth_date: {
203
207
  type: :default,
204
208
  input_options: {
@@ -210,6 +214,22 @@ class Admin::YourModelForm < Tramway::Core::ApplicationForm
210
214
  end
211
215
  ```
212
216
 
217
+ **NOTE**
218
+ If you want fill inputs of this form, just send query params
219
+
220
+ ```
221
+ params = {
222
+ your_model: {
223
+ logo: '/file/url',
224
+ description: 'some text',
225
+ text: 'some another text',
226
+ associated_id: 5,
227
+ another_polymorphic_associated: 56,
228
+ another_polymorphic_associated_type: 'AnotherModel'
229
+ }
230
+ }
231
+ ```
232
+
213
233
  #### 10. Add inheritance to YourModel
214
234
 
215
235
  *app/models/your_model.rb*
@@ -465,7 +485,7 @@ To add notification to application, you need just set queries in initializers.
465
485
  # Example from tramway-event gem (you also can push context variables here)
466
486
 
467
487
  ::Tramway::Admin.set_notificable_queries new_participants: -> (current_user) do
468
- ::Tramway::Event::Participant.active.where(participation_state: :requested).send "#{current_user}_scope", current_user.id
488
+ ::Tramway::Event::Participant.where(participation_state: :requested).send "#{current_user}_scope", current_user.id
469
489
  end
470
490
  ```
471
491
 
@@ -11,8 +11,9 @@
11
11
  .container
12
12
  padding-top: 2rem
13
13
 
14
- td.actions
15
- width: 8rem
14
+ td
15
+ &.actions
16
+ width: 8rem
16
17
 
17
18
  .icon-in-navbar
18
19
  font-size: 15pt
@@ -30,7 +30,7 @@ module Tramway
30
30
 
31
31
  def collections_counts
32
32
  @counts = decorator_class.collections.reduce({}) do |hash, collection|
33
- records = model_class.active.send(collection)
33
+ records = model_class.send(collection)
34
34
  records = records.send "#{current_admin.role}_scope", current_admin.id
35
35
  records = records.ransack(params[:filter]).result if params[:filter].present?
36
36
  params[:list_filters]&.each do |filter, value|
@@ -3,7 +3,7 @@
3
3
  class Tramway::Admin::RecordsController < ::Tramway::Admin::ApplicationController
4
4
  def index
5
5
  scope = params[:scope].present? ? params[:scope] : :all
6
- records = model_class.active.order(id: :desc).send scope
6
+ records = model_class.order(id: :desc).send scope
7
7
  records = records.full_text_search params[:search] if params[:search].present?
8
8
  if params[:filter].present?
9
9
  if params[:filter].is_a? String
@@ -30,7 +30,7 @@ class Tramway::Admin::RecordsController < ::Tramway::Admin::ApplicationControlle
30
30
  end
31
31
 
32
32
  def show
33
- @record = decorator_class.decorate model_class.active.find params[:id]
33
+ @record = decorator_class.decorate model_class.find params[:id]
34
34
  end
35
35
 
36
36
  def new
@@ -47,11 +47,11 @@ class Tramway::Admin::RecordsController < ::Tramway::Admin::ApplicationControlle
47
47
  end
48
48
 
49
49
  def edit
50
- @record_form = admin_form_class.new model_class.active.find params[:id]
50
+ @record_form = admin_form_class.new model_class.find params[:id]
51
51
  end
52
52
 
53
53
  def update
54
- @record_form = admin_form_class.new model_class.active.find params[:id]
54
+ @record_form = admin_form_class.new model_class.find params[:id]
55
55
  if params[:record][:aasm_event].present?
56
56
  if @record_form.model.send("may_#{params[:record][:aasm_event]}?")
57
57
  @record_form.model.send("#{params[:record][:aasm_event]}!")
@@ -67,8 +67,8 @@ class Tramway::Admin::RecordsController < ::Tramway::Admin::ApplicationControlle
67
67
  end
68
68
 
69
69
  def destroy
70
- record = model_class.active.find params[:id]
71
- record.remove!
70
+ record = model_class.find params[:id]
71
+ record.destroy
72
72
  redirect_to params[:redirect].present? ? params[:redirect] : records_path
73
73
  end
74
74
  end
@@ -10,7 +10,7 @@ class Tramway::Admin::SessionsController < ::Tramway::Admin::ApplicationControll
10
10
  end
11
11
 
12
12
  def create
13
- @session_form = ::Tramway::Auth::SessionForm.new ::Tramway::User::User.active.find_or_initialize_by email: params[:user][:email]
13
+ @session_form = ::Tramway::Auth::SessionForm.new ::Tramway::User::User.find_or_initialize_by email: params[:user][:email]
14
14
  if @session_form.validate params[:user]
15
15
  admin_sign_in @session_form.model
16
16
  redirect_to Tramway::Admin::Engine.routes.url_helpers.root_path
@@ -3,8 +3,8 @@
3
3
  module Tramway::Admin
4
4
  class SingletonsController < ApplicationController
5
5
  def show
6
- if model_class.active.first.present?
7
- @singleton = decorator_class.decorate model_class.active.first
6
+ if model_class.first.present?
7
+ @singleton = decorator_class.decorate model_class.first
8
8
  else
9
9
  @singleton_form = admin_form_class.new model_class.new
10
10
  render :new
@@ -13,7 +13,7 @@ module Tramway::Admin
13
13
  end
14
14
 
15
15
  def edit
16
- @singleton_form = admin_form_class.new model_class.active.first
16
+ @singleton_form = admin_form_class.new model_class.first
17
17
  end
18
18
 
19
19
  def create
@@ -26,7 +26,7 @@ module Tramway::Admin
26
26
  end
27
27
 
28
28
  def update
29
- @singleton_form = admin_form_class.new model_class.active.first
29
+ @singleton_form = admin_form_class.new model_class.first
30
30
  if @singleton_form.submit params[:singleton]
31
31
  redirect_to params[:redirect] || singleton_path(model: params[:model])
32
32
  else
@@ -3,34 +3,35 @@
3
3
  - if ::Tramway::Admin.customized_admin_navbar.present?
4
4
  = ::Tramway::Admin.customized_admin_navbar
5
5
  - else
6
- = link_to @application&.try(:title) || @application&.public_name || t('aplication.title'), ::Tramway::Admin::Engine.routes.url_helpers.root_path, class: 'navbar-brand'
7
- %button.navbar-toggler.collapsed{ aria: { controls: :navbar, expanded: "false", label: 'Toggle Navigation' }, data: { target: "#navbar", toggle: :collapse }, type: :button }
8
- %span.navbar-toggler-icon
9
- .navbar-collapse.collapse#navbar
10
- - if current_admin
11
- %ul.navbar-nav
12
- - ::Tramway::Admin.navbar_items_for(@application_engine || @application.name, role: current_admin.role)&.each do |item|
13
- - case item.keys.first
14
- - when Class, String
15
- - model = item.keys.first.is_a?(String) ? item.keys.first.constantize : item.keys.first
16
- - case item.values.first
17
- - when :singleton
18
- = model_menu_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.singleton_path(model: model)
19
- - when :record
20
- = model_menu_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.records_path(model: model, scope: decorator_class(model).collections.first), pluralize: plural(model.model_name).capitalize
21
- - when Symbol, String
22
- = dropdown t("admin.navbar.links.#{item.keys.first}") do
23
- - item.values.first.each do |sub_item|
24
- - if sub_item == :divider
25
- = dropdown_divider
26
- - else
27
- - model = sub_item.keys.first
28
- - if sub_item.values.first == :singleton
29
- = dropdown_model_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.singleton_path(model: model)
30
- - if sub_item.values.first == :record
31
- = dropdown_model_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.records_path(model: model, scope: decorator_class(model).collections.first), pluralize: plural(model.constantize.model_name).capitalize
6
+ .container-fluid
7
+ = link_to @application&.try(:title) || @application&.public_name || t('aplication.title'), ::Tramway::Admin::Engine.routes.url_helpers.root_path, class: 'navbar-brand'
8
+ %button.navbar-toggler.collapsed{ aria: { controls: :navbar, expanded: "false", label: 'Toggle Navigation' }, data: { target: "#navbar", toggle: :collapse }, type: :button }
9
+ %span.navbar-toggler-icon
10
+ .navbar-collapse.collapse#navbar
11
+ - if current_admin
12
+ %ul.navbar-nav
13
+ - ::Tramway::Admin.navbar_items_for(@application_engine || @application.name, role: current_admin.role)&.each do |item|
14
+ - case item.keys.first
15
+ - when Class, String
16
+ - model = item.keys.first.is_a?(String) ? item.keys.first.constantize : item.keys.first
17
+ - case item.values.first
18
+ - when :singleton
19
+ = model_menu_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.singleton_path(model: model)
20
+ - when :record
21
+ = model_menu_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.records_path(model: model, scope: decorator_class(model).collections.first), pluralize: plural(model.model_name).capitalize
22
+ - when Symbol, String
23
+ = dropdown t("admin.navbar.links.#{item.keys.first}") do
24
+ - item.values.first.each do |sub_item|
25
+ - if sub_item == :divider
26
+ = dropdown_divider
27
+ - else
28
+ - model = sub_item.keys.first
29
+ - if sub_item.values.first == :singleton
30
+ = dropdown_model_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.singleton_path(model: model)
31
+ - if sub_item.values.first == :record
32
+ = dropdown_model_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.records_path(model: model, scope: decorator_class(model).collections.first), pluralize: plural(model.constantize.model_name).capitalize
32
33
 
33
- %ul.nav.navbar-nav.ml-auto
34
+ %ul.nav.navbar-nav.ml-auto.justify-content-end
34
35
  - if current_admin
35
36
  %li.nav-item
36
37
  %span.nav-link
@@ -12,7 +12,7 @@
12
12
  - @record_form.properties.each do |property, type|
13
13
  = render 'tramway/core/shared/input', property: property, object: :record, type: type, form: f, destination: :admin, value: value_from_params(model_class: model_class, property: property, type: type)
14
14
  = hidden_field_tag :redirect, params[:redirect]
15
- = f.button :submit, t('helpers.links.save'), class: 'btn-success'
15
+ = f.button :submit, t('helpers.links.save'), class: 'btn btn-success'
16
16
  = link_to t('helpers.links.back'), current_model_records_path, class: 'btn btn-secondary'
17
17
 
18
18
  -# NOTES
@@ -1,29 +1,30 @@
1
1
  = paginate @records, theme: 'twitter-bootstrap-4'
2
- %table.table.table-striped.table-bordered
2
+ %table.table.table-striped.table-hover
3
3
  %thead
4
4
  %tr
5
- %th= model_class.human_attribute_name(:id)
6
- %th= model_class.human_attribute_name(:name)
5
+ %th{ scope: :col }
6
+ = model_class.human_attribute_name(:id)
7
+ %th{ scope: :col }
8
+ = model_class.human_attribute_name(:name)
7
9
  - decorator_class.list_attributes.each do |attribute|
8
- %th= model_class.human_attribute_name attribute
9
- %th= t 'helpers.links.actions'
10
+ %th{ scope: :col }
11
+ = model_class.human_attribute_name attribute
12
+ %th{ scope: :col }
13
+ = t 'helpers.links.actions'
10
14
  %tbody
11
15
  - @records.each_with_index do |record, index|
12
16
  %tr
13
- %td
17
+ %th{ scope: :row }
14
18
  = link_to record.id, current_model_record_path(record.id)
15
- %td
19
+ %td.link{ data: { href: current_model_record_path(record.id) } }
16
20
  = link_to record.name, current_model_record_path(record.id)
17
21
  - decorator_class.list_attributes.each do |attribute|
18
22
  %td
19
23
  = record.send attribute
20
24
  %td.actions
21
- .row
22
- &nbsp;&nbsp;&nbsp;
23
- = link_to fa_icon('pencil-alt'), edit_current_model_record_path(record.id), class: 'btn btn-warning btn-xs'
24
- &nbsp;&nbsp;
25
- = delete_button url: current_model_record_path(record.id), form_options: { class: :smart_button }, button_options: { class: 'btn btn-xs btn-danger' } do
26
- = fa_icon 'trash-alt'
25
+ = link_to fa_icon('pencil-alt'), edit_current_model_record_path(record.id, redirect: current_model_records_path(record.id)), class: 'btn btn-warning btn-xs'
26
+ = delete_button url: current_model_record_path(record.id), form_options: { class: :smart_button }, button_options: { class: 'btn btn-xs btn-danger' } do
27
+ = fa_icon 'trash-alt'
27
28
  - if tramway_model?(model_class)
28
29
  %br
29
30
  %br
@@ -4,13 +4,14 @@
4
4
  = association_object.id
5
5
  %td
6
6
  = link_to association_object.name, record_path(association_object.id, model: association.options[:class_name])
7
- %td
8
- - association_object.model.class.state_machines_names.each do |state_method|
9
- - unless state_method == 'default'
10
- = state_events_buttons association_object, state_method: state_method, model_param_name: :record, controller: 'tramway/admin/records', action: :update, parameters: { redirect: current_model_record_path(object.id), model: association_object.class.model_name }, button_options: { class: :smart_button }
11
- %td
7
+ - if association_object.model.class.state_machines_names.count > 1
8
+ %td
9
+ - association_object.model.class.state_machines_names.each do |state_method|
10
+ - unless state_method == 'default'
11
+ = state_events_buttons association_object, state_method: state_method, model_param_name: :record, controller: 'tramway/admin/records', action: :update, parameters: { redirect: current_model_record_path(object.id), model: association_object.class.model_name }, button_options: { class: :smart_button }
12
+ %td{ style: 'display: flex; justify-content: space-evenly' }
12
13
  - if update_is_available? association_object, object
13
- = edit_button url: edit_record_path(association_object.id, model: association.options[:class_name], redirect: current_model_record_path(object.id)), button_options: { class: 'btn btn-xs btn-warning edit' } do
14
+ = edit_button url: edit_record_path(association_object.id, model: association.options[:class_name], redirect: current_model_record_path(object.id)), button_options: { class: 'btn btn-xs btn-warning edit', style: 'height: max-content' } do
14
15
  = fa_icon 'pencil-alt'
15
16
  - if destroy_is_available? association_object, object
16
17
  = delete_button url: record_path(association_object.id, model: association.options[:class_name], redirect: current_model_record_path(object.id)), button_options: { class: 'btn btn-xs btn-danger delete' } do
@@ -11,5 +11,5 @@
11
11
  = simple_form_for @singleton_form.model, url: { controller: :singletons, action: action, model: @singleton_form.model.class }, input_html: { class: 'form-horizontal' } do |f|
12
12
  - @singleton_form.properties.each do |property, type|
13
13
  = render 'tramway/core/shared/input', property: property, object: :singleton, type: type, form: f, destination: :admin, value: value_from_params(model_class: model_class, property: property, type: type)
14
- = f.button :submit, t('helpers.links.save'), class: 'btn-success'
14
+ = f.button :submit, t('helpers.links.save'), class: 'btn btn-success'
15
15
  = link_to t('helpers.links.back'), singleton_path, class: 'btn btn-secondary'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Admin
5
- VERSION = '2.1.3.3'
5
+ VERSION = '4.0'
6
6
  end
7
7
  end
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: 2.1.3.3
4
+ version: '4.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: 2021-11-08 00:00:00.000000000 Z
11
+ date: 2022-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tramway-core
@@ -70,20 +70,20 @@ dependencies:
70
70
  name: copyright_mafa
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.1.2
76
- - - ">="
76
+ - - "~>"
77
77
  - !ruby/object:Gem::Version
78
78
  version: 0.1.2
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - "~>"
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: 0.1.2
86
- - - ">="
86
+ - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: 0.1.2
89
89
  - !ruby/object:Gem::Dependency
@@ -330,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
330
330
  - !ruby/object:Gem::Version
331
331
  version: '0'
332
332
  requirements: []
333
- rubygems_version: 3.1.2
333
+ rubygems_version: 3.0.3.1
334
334
  signing_key:
335
335
  specification_version: 4
336
336
  summary: Engine for admin