tramway-admin 1.25 → 1.26

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: 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