Class: LinkedRails::Actions::Item

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

Overview

rubocop:disable Metrics/ClassLength

Constant Summary

Constants included from Model::Collections

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Model

#build_child

Methods included from Model::Singularable

#singular_iri, #singular_iri?, #singular_iri_opts, #singular_iri_template

Methods included from Model::Serialization

#preview_includes, #show_includes

Methods included from Model::Menuable

#menu, #menu_list, #menus

Methods included from Model::IRI

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

Methods included from Model::Enhancements

#enhanced_with?

Methods included from Model::Dirty

#previously_changed_relations

Methods included from Model::Collections

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

Methods included from Model::Actionable

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

Instance Attribute Details

#inheritObject

Returns the value of attribute inherit.



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

def inherit
  @inherit
end

#listObject

Returns the value of attribute list.



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

def list
  @list
end

#objectObject



63
64
65
66
67
# File 'app/models/linked_rails/actions/item.rb', line 63

def object
  @object = list.instance_exec(&@object) if @object.respond_to?(:call)

  @object || resource
end

#one_clickObject

Returns the value of attribute one_click.



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

def one_click
  @one_click
end

#parentObject



73
74
75
76
77
78
79
80
81
# File 'app/models/linked_rails/actions/item.rb', line 73

def parent
  return @parent if instance_variable_defined?(:@parent)

  if resource.is_a?(LinkedRails.collection_class)
    resource.parent
  else
    resource
  end
end

#policy_argumentsObject

Returns the value of attribute policy_arguments.



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

def policy_arguments
  @policy_arguments
end

#resource=(value) ⇒ Object (writeonly)

Sets the attribute resource

Parameters:

  • value

    the value to set the attribute resource to.



12
13
14
# File 'app/models/linked_rails/actions/item.rb', line 12

def resource=(value)
  @resource = value
end

#root_relative_iri(**_opts) ⇒ Object



87
88
89
90
91
92
93
# File 'app/models/linked_rails/actions/item.rb', line 87

def root_relative_iri(**_opts)
  value = root_relative_iri_from_var
  value = RDF::URI(value) unless value.blank? || value.is_a?(RDF::URI)
  return @root_relative_iri = value if value

  super
end

#submit_labelObject

Returns the value of attribute submit_label.



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

def submit_label
  @submit_label
end

#targetObject



131
132
133
# File 'app/models/linked_rails/actions/item.rb', line 131

def target
  @target ||= LinkedRails.entry_point_class.new(parent: self)
end

#target_pathObject

Returns the value of attribute target_path.



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

def target_path
  @target_path
end

#target_queryObject

Returns the value of attribute target_query.



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

def target_query
  @target_query
end

#user_contextObject



135
136
137
# File 'app/models/linked_rails/actions/item.rb', line 135

def user_context
  @user_context || list.user_context
end

Class Method Details

.app_action_list(user_context) ⇒ Object



206
207
208
209
210
211
# File 'app/models/linked_rails/actions/item.rb', line 206

def app_action_list(user_context)
  app_action_list_class&.new(
    resource: nil,
    user_context: user_context
  )
end

.app_action_list_classObject



200
201
202
203
204
# File 'app/models/linked_rails/actions/item.rb', line 200

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

  @app_action_list_class = 'AppActionList'.safe_constantize
end

.get_action_list(parent, user_context) ⇒ Object



213
214
215
216
217
# File 'app/models/linked_rails/actions/item.rb', line 213

def get_action_list(parent, user_context)
  return parent.action_list(user_context) if parent.respond_to?(:action_list)

  app_action_list(user_context)
end

.requested_index_resource(params, user_context) ⇒ Object



219
220
221
222
223
224
225
226
# File 'app/models/linked_rails/actions/item.rb', line 219

def requested_index_resource(params, user_context)
  parent = parent_from_params!(params, user_context) if params.key?(:parent_iri)

  default_collection_option(:collection_class).collection_or_view(
    default_collection_options.merge(parent: parent),
    index_collection_params(params, user_context)
  )
end

.requested_single_resource(params, user_context) ⇒ Object



228
229
230
231
232
233
234
235
# File 'app/models/linked_rails/actions/item.rb', line 228

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

  parent = parent_from_params!(params, user_context) if params.key?(:parent_iri)
  action_list = get_action_list(parent, user_context)

  action_list&.action(params[:id].to_sym)
end

.route_keyObject



237
238
239
# File 'app/models/linked_rails/actions/item.rb', line 237

def route_key
  :actions
end

Instance Method Details

#action_statusObject



37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/models/linked_rails/actions/item.rb', line 37

def action_status
  @action_status ||=
    if policy_valid?
      Vocab.schema.PotentialActionStatus
    elsif policy_status
      policy_status
    elsif policy_expired?
      Vocab.ontola[:ExpiredActionStatus]
    else
      Vocab.ontola[:DisabledActionStatus]
    end
end

#as_json(**_opts) ⇒ Object



50
51
52
# File 'app/models/linked_rails/actions/item.rb', line 50

def as_json(**_opts)
  {}
end

#available?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'app/models/linked_rails/actions/item.rb', line 54

def available?
  @condition.nil? || condition
end

#errorObject



58
59
60
61
# File 'app/models/linked_rails/actions/item.rb', line 58

def error
  policy_message ||
    I18n.t("actions.status.#{action_status.to_s.split('#').last}", default: nil)
end

#iri_optsObject



109
110
111
112
113
# File 'app/models/linked_rails/actions/item.rb', line 109

def iri_opts
  return {} if resource.blank?

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

#iri_templateObject



115
116
117
118
119
120
121
122
123
124
125
# File 'app/models/linked_rails/actions/item.rb', line 115

def iri_template
  path_suffix = "/#{action_path || tag}"

  return @iri_template ||= LinkedRails::URITemplate.new(path_suffix) if resource.blank?

  base_template = resource.send(resource.try(:singular_resource?) ? :singular_iri_template : :iri_template)
  @iri_template ||= iri_template_expand_path(
    base_template.to_s.sub('display,', '').sub('sort%5B%5D*,', ''),
    path_suffix
  )
end

#object_iriObject



69
70
71
# File 'app/models/linked_rails/actions/item.rb', line 69

def object_iri
  object&.iri&.anonymous? ? anonymous_object_iri : object&.iri
end

#policy_messageObject



83
84
85
# File 'app/models/linked_rails/actions/item.rb', line 83

def policy_message
  resource_policy.try(:message) unless policy_valid?
end

#policy_statusObject



105
106
107
# File 'app/models/linked_rails/actions/item.rb', line 105

def policy_status
  resource_policy.try(:action_status)
end

#rdf_typeObject



127
128
129
# File 'app/models/linked_rails/actions/item.rb', line 127

def rdf_type
  type
end

#root_relative_singular_iriObject



95
96
97
98
99
# File 'app/models/linked_rails/actions/item.rb', line 95

def root_relative_singular_iri
  value = root_relative_iri.to_s.sub(resource.root_relative_iri, resource.root_relative_singular_iri)

  RDF::URI(value)
end

#singular_resource?Boolean

Returns:

  • (Boolean)


101
102
103
# File 'app/models/linked_rails/actions/item.rb', line 101

def singular_resource?
  resource.try(:singular_resource?)
end