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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bd2a0e29a7da7e51b34b7040faf3554d31c8e3d62782700497283cd1edc5f81
|
4
|
+
data.tar.gz: db5c2b60ddb4511153633c10b1015e54e36f8d6b4d6453d5c093972cccc97fd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
data/lib/tramway/admin.rb
CHANGED
@@ -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
|
22
|
+
@singleton_models&.dig(dependency, role)&.keys
|
23
23
|
end.flatten.compact
|
24
24
|
end
|
25
25
|
models
|
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.
|
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: '
|
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: '
|
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
|