Class: LinkedRails::Menus::List

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model, LinkedRails::Model
Defined in:
app/models/linked_rails/menus/list.rb

Direct Known Subclasses

ApplicationMenuList

Constant Summary

Constants included from LinkedRails::Model::Collections

LinkedRails::Model::Collections::COLLECTION_CUSTOMIZABLE_OPTIONS, LinkedRails::Model::Collections::COLLECTION_OPTIONS, LinkedRails::Model::Collections::COLLECTION_STATIC_OPTIONS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from LinkedRails::Model

#build_child

Methods included from LinkedRails::Model::Singularable

#root_relative_iri, #root_relative_singular_iri, #singular_iri, #singular_iri?, #singular_iri_opts, #singular_iri_template, #singular_resource?

Methods included from LinkedRails::Model::Serialization

#preview_includes, #show_includes

Methods included from LinkedRails::Model::Menuable

#menu_list

Methods included from LinkedRails::Model::IRI

#anonymous_iri, #anonymous_iri?, #iri, #iri_elements, #rdf_type, #reload, #root_relative_iri, #route_fragment

Methods included from LinkedRails::Model::Enhancements

#enhanced_with?

Methods included from LinkedRails::Model::Dirty

#previously_changed_relations

Methods included from LinkedRails::Model::Collections

#collection_for, #collection_iri, #collection_options_for, #collection_root_relative_iri, #parent_collections

Methods included from LinkedRails::Model::Actionable

#action, #action_list, #action_triples, #actions, #collection_actions, #favorite_actions

Instance Attribute Details

#resourceObject

Returns the value of attribute resource.



9
10
11
# File 'app/models/linked_rails/menus/list.rb', line 9

def resource
  @resource
end

#user_contextObject

Returns the value of attribute user_context.



9
10
11
# File 'app/models/linked_rails/menus/list.rb', line 9

def user_context
  @user_context
end

Class Method Details

.allObject



92
93
94
# File 'app/models/linked_rails/menus/list.rb', line 92

def all
  []
end

.app_menu_list(user_context) ⇒ Object



85
86
87
88
89
90
# File 'app/models/linked_rails/menus/list.rb', line 85

def app_menu_list(user_context)
  app_menu_list_class&.new(
    resource: nil,
    user_context: user_context
  )
end

.app_menu_list_classObject



79
80
81
82
83
# File 'app/models/linked_rails/menus/list.rb', line 79

def app_menu_list_class
  return @app_menu_list_class if instance_variables.include?(:@app_menu_list_class)

  @app_menu_list_class = 'AppMenuList'.safe_constantize
end

.defined_menusObject



96
97
98
99
# File 'app/models/linked_rails/menus/list.rb', line 96

def defined_menus
  initialize_menus
  _defined_menus || {}
end

.has_menu(tag, **opts) ⇒ Object



101
102
103
# File 'app/models/linked_rails/menus/list.rb', line 101

def has_menu(tag, **opts)
  defined_menus[tag] = opts
end

.requested_index_resource(params, user_context) ⇒ Object



105
106
107
108
109
110
111
112
113
114
115
# File 'app/models/linked_rails/menus/list.rb', line 105

def requested_index_resource(params, user_context)
  menu_list = menu_list_from_params(params, user_context)

  return if menu_list.blank?

  LinkedRails::Sequence.new(
    menu_list.menus,
    id: menu_list.iri,
    scope: false
  )
end

.requested_single_resource(params, user_context) ⇒ Object



117
118
119
120
121
122
123
# File 'app/models/linked_rails/menus/list.rb', line 117

def requested_single_resource(params, user_context)
  return nil if params[:id].blank?

  menu_list = menu_list_from_params(params, user_context)

  menu_list&.menu(params[:id].to_sym)
end

Instance Method Details

#available_menusObject



12
13
14
15
16
# File 'app/models/linked_rails/menus/list.rb', line 12

def available_menus
  return {} if defined_menus.blank?

  @available_menus ||= defined_menus.select(&method(:menu_available?)).compact
end

#defined_menusObject



18
19
20
# File 'app/models/linked_rails/menus/list.rb', line 18

def defined_menus
  self.class.defined_menus
end

#iri_optsObject



22
23
24
25
26
# File 'app/models/linked_rails/menus/list.rb', line 22

def iri_opts
  return {} if resource.blank?

  resource.try(:singular_resource?) ? resource.singular_iri_opts : resource.iri_opts
end


32
33
34
# File 'app/models/linked_rails/menus/list.rb', line 32

def menu(tag)
  memoized_menu_item(tag, available_menus[tag].dup) if available_menus.key?(tag)
end


28
29
30
# File 'app/models/linked_rails/menus/list.rb', line 28

def menus
  @menus ||= available_menus.map(&method(:memoized_menu_item))
end