Module: Cul::Hydra::Controllers::Helpers::HydraAutocompleteHelperBehavior

Defined in:
lib/cul_hydra/controllers/helpers/hydra_autocomplete_helper_behavior.rb

Instance Method Summary collapse

Instance Method Details

#autocomplete_fedora_text_field(resource, datastream_name, field_key, opts = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/cul_hydra/controllers/helpers/hydra_autocomplete_helper_behavior.rb', line 3

def autocomplete_fedora_text_field(resource, datastream_name, field_key, opts={})
  field_name = field_name_for(field_key)
  field_values = get_values_from_datastream(resource, datastream_name, field_key, opts)
  field_values = [""] if field_values.empty?
  field_values = [field_values.first] unless opts.fetch(:multiple, true)
  required = opts.fetch(:required, true) ? "required" : ""
  body = ""
  field_values.each_with_index do |current_value, z|
    base_id = generate_base_id(field_name, current_value, field_values, opts)
    name = "asset[#{datastream_name}][#{field_name}][#{z}]"
    body << "<input class=\"editable-edit edit autocomplete\" id=\"#{base_id}\" data-datastream-name=\"#{datastream_name}\" name=\"#{name}\" value=\"#{h(current_value.strip)}\" #{required} type=\"text\" />"
    body << "<a href=\"\" title=\"Delete '#{h(current_value)}'\" class=\"destructive field\">Delete</a>" if opts.fetch(:multiple, true) && !current_value.empty?
  end
  result = field_selectors_for(datastream_name, field_key)
  result << body
  return body
end

#field_name_for(field_key) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/cul_hydra/controllers/helpers/hydra_autocomplete_helper_behavior.rb', line 20

def field_name_for(field_key)
  if field_key.kind_of?(Array)
    return OM::XML::Terminology.pointers_to_flat_array(field_key, true).join("__")
  else
    return field_key.to_s
  end
end

#generate_base_id(field_name, current_value, values, opts) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/cul_hydra/controllers/helpers/hydra_autocomplete_helper_behavior.rb', line 27

def generate_base_id(field_name, current_value, values, opts)
  if opts.fetch(:multiple, true)
    return field_name+"__"+values.index(current_value).to_s
  else
    return field_name
  end
end