tramway-admin 1.25 → 1.26

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: 7852be8e1252b1898b91dfa9d2cb59ea27964a5324dfe28f853b8246c4128f4d
4
- data.tar.gz: 93324c1d3e853a2c2c7f8e44f850af44e1235282b67ae27ea3b3a996fa09bcc6
3
+ metadata.gz: 3bd2a0e29a7da7e51b34b7040faf3554d31c8e3d62782700497283cd1edc5f81
4
+ data.tar.gz: db5c2b60ddb4511153633c10b1015e54e36f8d6b4d6453d5c093972cccc97fd6
5
5
  SHA512:
6
- metadata.gz: c111155d6b7bc46989c9d744e9404a59e7a0a1894d3ad9eabd0e25616891e22368d8602d141c9a9891efe15cf3fc803e0369c23c50f37b031102547672a93622
7
- data.tar.gz: c748a1042f1c39311b6042a4ab79a241b142611182c7c6819ed7ead59896989a8130035575bdf078d4143f14194cea87c2e77e972bc49a49358274fbf2a5da55
6
+ metadata.gz: 07d5ac7855e789ebfc6b119d8e0326762b3ca4f24785fa16890fb75ac6f03abade1cf0db10ea91c8fb4e84a9f3adab8d67707369d093194385cf9a32487daf87
7
+ data.tar.gz: 0c9f8a55011a621d84d13cf720dcb66df5953dec647db2bb4cd1bbf5b1f6cd6b50f5ec3c81fefb5a739593363fe6d23498066b781219d06cf8613640c656557a
@@ -9,10 +9,27 @@
9
9
  .navbar-collapse.collapse#navbar
10
10
  - if signed_in?
11
11
  %ul.navbar-nav
12
- - ::Tramway::Admin.singleton_models_for(@application_engine || @application.name, role: current_user.role)&.each do |model|
13
- = model_menu_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.singleton_path(model: model), pluralize: plural(model.model_name).capitalize
14
- - ::Tramway::Admin.available_models_for(@application_engine || @application.name, role: current_user.role)&.each do |model|
15
- = 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
12
+ - ::Tramway::Admin.navbar_items_for(@application_engine || @application.name, role: current_user.role)&.each do |item|
13
+ - case item.keys.first
14
+ - when Class
15
+ - model = 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
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.model_name).capitalize
32
+
16
33
  %ul.nav.navbar-nav.ml-auto
17
34
  - if signed_in?
18
35
  - if @notifications_count > 0
@@ -6,6 +6,7 @@ require 'tramway/admin/records_models'
6
6
  require 'tramway/admin/additional_buttons'
7
7
  require 'tramway/admin/notifications'
8
8
  require 'tramway/admin/welcome_page_actions'
9
+ require 'tramway/admin/navbar'
9
10
  require 'tramway/error'
10
11
 
11
12
  module Tramway
@@ -18,6 +19,7 @@ module Tramway
18
19
  include ::Tramway::Admin::AdditionalButtons
19
20
  include ::Tramway::Admin::Notifications
20
21
  include ::Tramway::Admin::WelcomePageActions
22
+ include ::Tramway::Admin::Navbar
21
23
 
22
24
  attr_reader :customized_admin_navbar
23
25
 
@@ -0,0 +1,33 @@
1
+ module Tramway::Admin::Navbar
2
+ def navbar_structure(*links)
3
+ @navbar_structure ||= links
4
+ end
5
+
6
+ def navbar_items_for(project, role:)
7
+ @singleton_models_for ||= singleton_models_for(project, role: role)
8
+ @available_models_for ||= available_models_for(project, role: role)
9
+ @navbar_structure ||= {}
10
+ @navbar_structure.map do |item|
11
+ if item.is_a? Class
12
+ should_be_in_navbar_as item
13
+ elsif item.is_a? Hash
14
+ sub_items = item.values.first.map do |sub_item|
15
+ should_be_in_navbar_as sub_item
16
+ end.compact
17
+ { item.keys.first => sub_items } if sub_items.any?
18
+ end
19
+ end.compact
20
+ end
21
+
22
+ private
23
+
24
+ def should_be_in_navbar_as(item)
25
+ if @singleton_models_for.include?(item)
26
+ { item => :singleton }
27
+ elsif @available_models_for.include?(item)
28
+ { item => :record }
29
+ elsif item.is_a? Symbol
30
+ :divider
31
+ end
32
+ end
33
+ end
@@ -19,7 +19,7 @@ module Tramway::Admin::SingletonModels
19
19
  models = get_models_by_key(@singleton_models, project, role)
20
20
  if project_is_engine?(project)
21
21
  models += engine_class(project).dependencies.map do |dependency|
22
- @singleton_models[dependency][role]&.keys
22
+ @singleton_models&.dig(dependency, role)&.keys
23
23
  end.flatten.compact
24
24
  end
25
25
  models
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Admin
5
- VERSION = '1.25'
5
+ VERSION = '1.26'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.25'
4
+ version: '1.26'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
@@ -146,14 +146,14 @@ dependencies:
146
146
  requirements:
147
147
  - - '='
148
148
  - !ruby/object:Gem::Version
149
- version: '2.2'
149
+ version: '3.0'
150
150
  type: :runtime
151
151
  prerelease: false
152
152
  version_requirements: !ruby/object:Gem::Requirement
153
153
  requirements:
154
154
  - - '='
155
155
  - !ruby/object:Gem::Version
156
- version: '2.2'
156
+ version: '3.0'
157
157
  description: Engine for admin
158
158
  email:
159
159
  - kalashnikovisme@gmail.com
@@ -229,6 +229,7 @@ files:
229
229
  - lib/tramway/admin.rb
230
230
  - lib/tramway/admin/additional_buttons.rb
231
231
  - lib/tramway/admin/engine.rb
232
+ - lib/tramway/admin/navbar.rb
232
233
  - lib/tramway/admin/notifications.rb
233
234
  - lib/tramway/admin/record_routes_helper.rb
234
235
  - lib/tramway/admin/records_models.rb