Class: Hyrax::MenuPresenter
- Inherits:
-
Object
- Object
- Hyrax::MenuPresenter
- Defined in:
- app/presenters/hyrax/menu_presenter.rb
Overview
view-model for the admin menu
Instance Attribute Summary collapse
-
#view_context ⇒ Object
readonly
Returns the value of attribute view_context.
Instance Method Summary collapse
-
#collapsable_section(text, id:, icon_class:, open:, &block) ⇒ Object
Draw a collaspable menu section.
-
#initialize(view_context) ⇒ MenuPresenter
constructor
A new instance of MenuPresenter.
- #nav_link(options, also_active_for: nil, **link_html_options) ⇒ Object
-
#settings_section? ⇒ Boolean
Returns true if the current controller happens to be one of the controllers that deals with settings.
-
#show_configuration? ⇒ Boolean
Will the configuration section be displayed to the user.
-
#user_activity_section? ⇒ Boolean
with user activity This is used to keep the parent section on the sidebar open.
Constructor Details
#initialize(view_context) ⇒ MenuPresenter
Returns a new instance of MenuPresenter.
4 5 6 |
# File 'app/presenters/hyrax/menu_presenter.rb', line 4 def initialize(view_context) @view_context = view_context end |
Instance Attribute Details
#view_context ⇒ Object (readonly)
Returns the value of attribute view_context.
8 9 10 |
# File 'app/presenters/hyrax/menu_presenter.rb', line 8 def view_context @view_context end |
Instance Method Details
#collapsable_section(text, id:, icon_class:, open:, &block) ⇒ Object
Draw a collaspable menu section. The passed block should contain <li> items.
46 47 48 49 50 51 52 |
# File 'app/presenters/hyrax/menu_presenter.rb', line 46 def collapsable_section(text, id:, icon_class:, open:, &block) CollapsableSectionPresenter.new(view_context: view_context, text: text, id: id, icon_class: icon_class, open: open).render(&block) end |
#nav_link(options, also_active_for: nil, **link_html_options) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'app/presenters/hyrax/menu_presenter.rb', line 22 def nav_link(, also_active_for: nil, **) active_urls = [, also_active_for].compact = active_urls.any? { |url| current_page?(url) } ? { class: 'active' } : {} content_tag(:li, ) do link_to(, ) do yield end end end |
#settings_section? ⇒ Boolean
Returns true if the current controller happens to be one of the controllers that deals with settings. This is used to keep the parent section on the sidebar open.
15 16 17 |
# File 'app/presenters/hyrax/menu_presenter.rb', line 15 def settings_section? %w[appearances content_blocks features pages].include?(controller_name) end |
#show_configuration? ⇒ Boolean
Returns will the configuration section be displayed to the user.
55 56 57 58 59 |
# File 'app/presenters/hyrax/menu_presenter.rb', line 55 def show_configuration? can?(:update, :appearance) || can?(:manage, Sipity::WorkflowResponsibility) || can?(:manage, Hyrax::Feature) end |
#user_activity_section? ⇒ Boolean
with user activity This is used to keep the parent section on the sidebar open.
34 35 36 37 38 39 40 41 42 43 |
# File 'app/presenters/hyrax/menu_presenter.rb', line 34 def user_activity_section? # we're using a case here because we need to differentiate UsersControllers # in different namespaces (Hyrax & Admin) case controller when Hyrax::UsersController, Hyrax::NotificationsController, Hyrax::TransfersController true else false end end |