Module: MenuRenderer

Defined in:
app/models/menu_renderer.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exclude(*type_names) ⇒ Object



3
4
5
6
# File 'app/models/menu_renderer.rb', line 3

def exclude(*type_names)
  @excluded_class_names ||= []
  @excluded_class_names.concat(type_names).uniq!
end

.excluded_class_namesObject



9
10
11
# File 'app/models/menu_renderer.rb', line 9

def excluded_class_names
  MenuRenderer.instance_variable_get(:@excluded_class_names)
end

Instance Method Details

#add_child_disabled?Boolean

Returns:

  • (Boolean)


78
79
80
# File 'app/models/menu_renderer.rb', line 78

def add_child_disabled?
  allowed_child_classes.size == 0
end


86
87
88
# File 'app/models/menu_renderer.rb', line 86

def add_child_link
  view.link_to((view.image('plus') + ' Add Child'), view.new_admin_page_child_path(self, :page_class => default_child.name), :class => "action")
end


98
99
100
# File 'app/models/menu_renderer.rb', line 98

def add_child_link_with_menu
  add_child_link_with_menu_hook + add_child_menu
end


90
91
92
# File 'app/models/menu_renderer.rb', line 90

def add_child_link_with_menu_hook
  view.link_to((view.image('plus') + ' Add Child'), "#allowed_children_#{id}", :class => "action dropdown")
end

#add_child_menuObject



94
95
96
# File 'app/models/menu_renderer.rb', line 94

def add_child_menu
  menu_list
end

#add_child_optionObject



102
103
104
105
106
107
108
109
110
111
112
# File 'app/models/menu_renderer.rb', line 102

def add_child_option
  if add_child_disabled?
    disabled_add_child_link
  else
    if allowed_child_classes.size == 1
      add_child_link
    else
      add_child_link_with_menu
    end
  end
end

#additional_menu_features?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'app/models/menu_renderer.rb', line 24

def additional_menu_features?
  @additional_menu_features ||= (menu_renderer_module_name != 'MenuRenderer' && Object.const_defined?(menu_renderer_module_name))
end

#allowed_child_classesObject



37
38
39
40
41
42
43
44
45
# File 'app/models/menu_renderer.rb', line 37

def allowed_child_classes
  (allowed_children_cache.to_s.split(',') - Array(excluded_class_names)).map do |name|
    begin
      name.constantize
    rescue LoadError, NameError => _
      nil
    end
  end.compact
end

#child_itemsObject



56
57
58
59
60
# File 'app/models/menu_renderer.rb', line 56

def child_items
  (allowed_child_classes - [self.class.default_child]).map do |child|
    menu_item(child)
  end
end

#default_child_itemObject



48
49
50
# File 'app/models/menu_renderer.rb', line 48

def default_child_item
  menu_item(default_child)
end


82
83
84
# File 'app/models/menu_renderer.rb', line 82

def disabled_add_child_link
  view. :span, view.image('plus_disabled') + ' Add Child', :class => 'action disabled'
end

#excluded_class_namesObject



9
10
11
# File 'app/models/menu_renderer.rb', line 9

def excluded_class_names
  MenuRenderer.instance_variable_get(:@excluded_class_names)
end


62
63
64
# File 'app/models/menu_renderer.rb', line 62

def menu_items
  [default_child_item, separator_item] + child_items
end


66
67
68
# File 'app/models/menu_renderer.rb', line 66

def menu_list
  view. :ul, menu_items.join.html_safe, :class => 'menu', :id => "allowed_children_#{id}"
end


28
29
30
31
# File 'app/models/menu_renderer.rb', line 28

def menu_renderer_module_name
  simple_name = self.class_name.to_s.sub('Page','')
  "#{simple_name}MenuRenderer"
end


33
34
35
# File 'app/models/menu_renderer.rb', line 33

def menu_renderer_modules
  [Object.const_get(menu_renderer_module_name)]
end


70
71
72
# File 'app/models/menu_renderer.rb', line 70

def remove_link
  view.link_to view.image('minus') + ' ' + I18n.t('remove'), view.remove_admin_page_url(self), :class => "action"
end

#remove_optionObject



74
75
76
# File 'app/models/menu_renderer.rb', line 74

def remove_option
  remove_link
end

#separator_itemObject



52
53
54
# File 'app/models/menu_renderer.rb', line 52

def separator_item
  view. :li, '', :class => 'separator'
end

#viewObject



20
21
22
# File 'app/models/menu_renderer.rb', line 20

def view
  @view
end

#view=(val) ⇒ Object



16
17
18
# File 'app/models/menu_renderer.rb', line 16

def view=(val)
  @view = val
end