Class: LinkedRails::Menus::Item

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

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, #menu_list

Methods included from LinkedRails::Model::IRI

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

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

#action=(value) ⇒ Object (writeonly)

Sets the attribute action

Parameters:

  • value

    the value to set the attribute action to.



11
12
13
# File 'app/models/linked_rails/menus/item.rb', line 11

def action=(value)
  @action = value
end

#href=(value) ⇒ Object (writeonly)

Sets the attribute href

Parameters:

  • value

    the value to set the attribute href to.



11
12
13
# File 'app/models/linked_rails/menus/item.rb', line 11

def href=(value)
  @href = value
end

#image=(value) ⇒ Object (writeonly)

Sets the attribute image

Parameters:

  • value

    the value to set the attribute image to.



11
12
13
# File 'app/models/linked_rails/menus/item.rb', line 11

def image=(value)
  @image = value
end

#iri_base=(value) ⇒ Object (writeonly)

Sets the attribute iri_base

Parameters:

  • value

    the value to set the attribute iri_base to.



11
12
13
# File 'app/models/linked_rails/menus/item.rb', line 11

def iri_base=(value)
  @iri_base = value
end

#item_typeObject

Returns the value of attribute item_type.



10
11
12
# File 'app/models/linked_rails/menus/item.rb', line 10

def item_type
  @item_type
end

#label=(value) ⇒ Object (writeonly)

Sets the attribute label

Parameters:

  • value

    the value to set the attribute label to.



11
12
13
# File 'app/models/linked_rails/menus/item.rb', line 11

def label=(value)
  @label = value
end


55
56
57
58
59
# File 'app/models/linked_rails/menus/item.rb', line 55

def menus
  return @menus unless @menus.respond_to?(:call)

  @menus = parent.instance_exec(&@menus).compact.each { |menu| menu.parent = self }
end

#parentObject

Returns the value of attribute parent.



10
11
12
# File 'app/models/linked_rails/menus/item.rb', line 10

def parent
  @parent
end

#resourceObject

Returns the value of attribute resource.



10
11
12
# File 'app/models/linked_rails/menus/item.rb', line 10

def resource
  @resource
end

#tagObject

Returns the value of attribute tag.



10
11
12
# File 'app/models/linked_rails/menus/item.rb', line 10

def tag
  @tag
end

#typeObject

Returns the value of attribute type.



10
11
12
# File 'app/models/linked_rails/menus/item.rb', line 10

def type
  @type
end

Class Method Details

.preview_includesObject



76
77
78
# File 'app/models/linked_rails/menus/item.rb', line 76

def preview_includes
  [menu_sequence: [members: [menu_sequence: :members]]]
end

.requested_index_resource(params, user_context) ⇒ Object



80
81
82
83
84
85
# File 'app/models/linked_rails/menus/item.rb', line 80

def requested_index_resource(params, user_context)
  parent = parent_from_params(params, user_context)
  return if parent.blank?

  parent.try(:menu_sequence)
end

Instance Method Details

#iri_optsObject



19
20
21
22
23
24
# File 'app/models/linked_rails/menus/item.rb', line 19

def iri_opts
  parent.iri_opts.merge(
    tag: route_tag,
    fragment: route_fragment
  )
end

#iri_templateObject



26
27
28
29
30
31
32
# File 'app/models/linked_rails/menus/item.rb', line 26

def iri_template
  return parent.send(:iri_template) unless parent.is_a?(LinkedRails::Menus::List)

  return LinkedRails::URITemplate.new("#{iri_base}{/tag}{#fragment}") if iri_base

  iri_template_expand_path(parent.send(:iri_template), '{/tag}')
end


34
35
36
37
38
39
40
41
42
43
44
# File 'app/models/linked_rails/menus/item.rb', line 34

def menu_sequence
  return if @menus.nil?

  @menu_sequence ||=
    LinkedRails::Sequence.new(
      -> { menus },
      id: menu_sequence_iri,
      parent: self,
      scope: false
    )
end


46
47
48
49
50
51
52
53
# File 'app/models/linked_rails/menus/item.rb', line 46

def menu_sequence_iri
  return @menu_sequence_iri if @menu_sequence_iri

  sequence_iri = iri.dup
  sequence_iri.path ||= ''
  sequence_iri.path += '/menu_items'
  sequence_iri
end

#rdf_typeObject



61
62
63
# File 'app/models/linked_rails/menus/item.rb', line 61

def rdf_type
  type || Vocab.ontola[:MenuItem]
end

#route_fragmentObject



65
66
67
68
69
# File 'app/models/linked_rails/menus/item.rb', line 65

def route_fragment
  return if parent.is_a?(LinkedRails::Menus::List)

  [parent.route_fragment, tag].compact.join('.')
end

#route_tagObject



71
72
73
# File 'app/models/linked_rails/menus/item.rb', line 71

def route_tag
  parent.is_a?(LinkedRails::Menus::List) ? tag : parent.route_tag
end