Class: Decidim::DecidimAwesome::MenuHacker

Inherits:
Object
  • Object
show all
Includes:
TranslatableAttributes
Defined in:
lib/decidim/decidim_awesome/menu_hacker.rb

Instance Method Summary collapse

Constructor Details

#initialize(name, view) ⇒ MenuHacker

Returns a new instance of MenuHacker.



8
9
10
11
12
13
# File 'lib/decidim/decidim_awesome/menu_hacker.rb', line 8

def initialize(name, view)
  @name = name
  @organization = view.try(:current_organization)
  @user = view.try(:current_user)
  @view = view
end

Instance Method Details

#items(include_invisible: false) ⇒ Object

returns a combined array of the Decidim defined menu and the hacked stored as config vars



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/decidim/decidim_awesome/menu_hacker.rb', line 16

def items(include_invisible: false)
  return @items if @items

  @items = default_items
  menu_overrides.each do |item|
    default = default_items.find { |i| i.url.gsub(/\?.*/, "") == item.url }
    if default
      item.send("overrided?=", true)
      @items.reject! { |i| i.url.gsub(/\?.*/, "") == item.url }
    end
    @items << item
  end

  @items.select!(&:visible?) unless include_invisible
  @items.sort_by!(&:position)
end