Class: Hyrax::Forms::ResourceForm

Inherits:
ChangeSet
  • Object
show all
Defined in:
app/forms/hyrax/forms/resource_form.rb

Overview

This form wraps ‘Hyrax::ChangeSet` in the `HydraEditor::Form` interface.

Constant Summary collapse

InWorksPopulator =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

lambda do |_options|
  self.in_works_ids =
    if persisted?
      Hyrax.query_service
           .find_inverse_references_by(resource: model, property: :member_ids)
           .select(&:work?)
           .map(&:id)
    else
      []
    end
end
LockKeyPopulator =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Note:

includes special handling for Wings, to support compatibility with ‘etag`-driven, application-side lock checks. for non-wings adapters we want to move away from application side lock validation and rely on the adapter/database features instead.

lambda do |_options|
  if Hyrax.config.disable_wings || !Hyrax..is_a?(Wings::Valkyrie::MetadataAdapter)
    Hyrax.logger.info "trying to prepopulate a lock token for " \
                      "#{self.class.inspect}, but optimistic locking isn't " \
                      "supported for the configured adapter: #{Hyrax..class}"
    self.version = ''
  else
    self.version =
      model.persisted? ? Wings::ActiveFedoraConverter.convert(resource: model).etag : ''
  end
end

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.for(resource) ⇒ Object

Factory for generic, per-work froms

Examples:

monograph  = Monograph.new
change_set = Hyrax::Forms::ResourceForm.for(monograph)


130
131
132
133
134
135
136
137
138
139
140
141
# File 'app/forms/hyrax/forms/resource_form.rb', line 130

def for(resource)
  "#{resource.class.name}Form".constantize.new(resource)
rescue NameError => _err
  case resource
  when Hyrax::FileSet
    Hyrax::Forms::FileSetForm.new(resource)
  when Hyrax::PcdmCollection
    Hyrax::Forms::PcdmCollectionForm.new(resource)
  else
    Hyrax::Forms::ResourceForm(resource.class).new(resource)
  end
end

.required_fieldsArray<Symbol>

Returns list of required field names as symbols.

Returns:

  • (Array<Symbol>)

    list of required field names as symbols



145
146
147
148
149
# File 'app/forms/hyrax/forms/resource_form.rb', line 145

def required_fields
  definitions
    .select { |_, definition| definition[:required] }
    .keys.map(&:to_sym)
end

.required_fields=(fields) ⇒ Array<Symbol>

Returns list of required field names as symbols.

Parameters:

  • fields (Enumerable<#to_s>)

Returns:

  • (Array<Symbol>)

    list of required field names as symbols

Raises:

  • (KeyError)


155
156
157
158
159
160
161
162
# File 'app/forms/hyrax/forms/resource_form.rb', line 155

def required_fields=(fields)
  fields = fields.map(&:to_s)
  raise(KeyError) unless fields.all? { |f| definitions.key?(f) }

  fields.each { |field| definitions[field].merge!(required: true) }

  required_fields
end

Instance Method Details

#[]=(attr, value) ⇒ Object

Returns the set value.

Parameters:

  • attr (#to_s)
  • value (Object)

Returns:

  • (Object)

    the set value



170
171
172
# File 'app/forms/hyrax/forms/resource_form.rb', line 170

def []=(attr, value)
  public_send("#{attr}=".to_sym, value)
end

#display_additional_fields?Boolean

Returns whether there are terms to display ‘below-the-fold’.

Returns:

  • (Boolean)

    whether there are terms to display ‘below-the-fold’



201
202
203
# File 'app/forms/hyrax/forms/resource_form.rb', line 201

def display_additional_fields?
  secondary_terms.any?
end

#model_classClass

Deprecated.

use model.class instead

Returns:

  • (Class)


178
179
180
# File 'app/forms/hyrax/forms/resource_form.rb', line 178

def model_class # rubocop:disable Rails/Delegate
  model.class
end

#primary_termsArray<Symbol>

Returns terms for display ‘above-the-fold’, or in the most prominent form real estate.

Returns:

  • (Array<Symbol>)

    terms for display ‘above-the-fold’, or in the most prominent form real estate



185
186
187
188
189
# File 'app/forms/hyrax/forms/resource_form.rb', line 185

def primary_terms
  _form_field_definitions
    .select { |_, definition| definition[:primary] }
    .keys.map(&:to_sym)
end

#secondary_termsArray<Symbol>

Returns terms for display ‘below-the-fold’.

Returns:

  • (Array<Symbol>)

    terms for display ‘below-the-fold’



193
194
195
196
197
# File 'app/forms/hyrax/forms/resource_form.rb', line 193

def secondary_terms
  _form_field_definitions
    .select { |_, definition| definition[:display] && !definition[:primary] }
    .keys.map(&:to_sym)
end