Module: FormDataHelper

Defined in:
app/helpers/form_data_helper.rb

Instance Method Summary collapse

Instance Method Details

#current_value(submission, field) ⇒ Object



142
143
144
145
146
147
148
149
150
151
# File 'app/helpers/form_data_helper.rb', line 142

def current_value(submission, field)
  return params[field.code_name.to_sym] if params[field.code_name.to_sym]
  return field.default_value unless submission

  field_submission = submission.form_submission_fields.where(:form_field_id=>field.id).first

  return "" unless field_submission

  return decode_submission_field(field_submission.value, field)
end

#decode_submission_field(value, field) ⇒ Object



132
133
134
135
136
137
138
139
140
# File 'app/helpers/form_data_helper.rb', line 132

def decode_submission_field(value, field)
  if field.field_type=='multicheckbox'
    return Hash[*value.split('|').collect { |v| [v, true] }.flatten]
  elsif field.field_type=='multiselect'
    return value.split('|')
  else
    return value
  end
end

#form_record(id) ⇒ Object



109
110
111
112
113
# File 'app/helpers/form_data_helper.rb', line 109

def form_record(id)
  record = FormSubmission.sys(_sid).where(:id=>id).includes([:form_submission_fields, {:form=>[:ungrouped_form_fields, {:form_field_groups=>:form_fields}]}]).first
  return "[record not found]" unless record
  return record
end

#form_records(form_id, options = {}) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'app/helpers/form_data_helper.rb', line 91

def form_records(form_id, options = {})
  form = load_form(form_id)
  return "[form not found '#{form_id}']" unless form
 
  begin 
  options[:enforce_permissions] = true if options[:enforce_permissions]==nil && (current_user==nil || !current_user.admin?)
  options[:per_page] ||= 50
  options[:field_conditions] = nil
  options[:only_visible] = true if options[:only_visible]==nil
  options[:user_id] = current_user ? current_user.id : nil
  records = form.records(options).page(params[:page]).per(options[:per_page])

  kit_render :partial=>"form/records", :locals=>{:records=>records, :form=>form, :options=>options}
  rescue Exception => e
    e.message
  end
end

#form_search(search_for, page, per, form_ids = nil, location = nil, distance = 10) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/helpers/form_data_helper.rb', line 8

def form_search(search_for, page, per, form_ids = nil, location = nil, distance = 10)
  form_ids = Form.pluck(:id) unless form_ids
  form_ids = [form_ids] unless form_ids.is_a?(Array)
  system_id = _sid

    search_size = (params[:per] || "25").to_i
    the_page = (params[:page] || "1").to_i 

    if location.not_blank?
      geo_loc = Geocoder.search(location)
      lat = geo_loc[0].latitude
      lon = geo_loc[0].longitude
    end

    search = Tire.search "#{index_name}_form_submissions" do 
      query do
        boolean do 
          must do 
            string search_for
          end
          must do 
            string "form_id:#{form_ids.join(' ')}"
          end
        end
      end
      if location.not_blank?
        filter :geo_distance, :distance=>distance, :location=>"#{lat}, #{lon}"
      end
      filter :term, :system_id=>system_id
      unless @mod
        filter :term, :visible=>1 
      end
      from (the_page-1)*search_size 
      size search_size
    end

    return search.results
end

#form_search_structure(search_for, page, per, form_ids = nil, location = nil, distance = 10) ⇒ Object



3
4
5
6
# File 'app/helpers/form_data_helper.rb', line 3

def form_search_structure(search_for, page, per, form_ids = nil, location = nil, distance = 10) 
  ss = search_for.collect { |key,value| key.not_blank? ? "+#{key}:#{value}" : "#{value}" }.join(' ')
  form_search(ss, page, per, form_ids, location, distance)
end

#format_submission_field(field, options = {}) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'app/helpers/form_data_helper.rb', line 115

def format_submission_field(field, options = {})

#    unless options[:noimage]
#      if field.field_type=='image'
#        return image_tag(field.url(:thumb))
#      end
#    end

  if field.field_type=='multicheckbox' || field.field_type=='multiselect'
    return field.value.split('|').join(', ')
  elsif field.field_type=='url' && options[:dont_do_urls]!=true
    return link_to(field.value, field.value)
  else
   return field.value
  end 
end

#letter_pagination(base_url, join = ' | ', options = {}) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'app/helpers/form_data_helper.rb', line 51

def letter_pagination(base_url, join = ' | ', options = {})
  begin
    output = []
    for index in "A".."Z" do
      output << link_to(index, "#{base_url}#{index}")
    end unless options[:exclude_letters]
    for index in "0".."9" do 
      output << link_to(index, "#{base_url}#{index}") 
    end unless options[:exclude_numbers]

    output.join(join).html_safe
  rescue Exception => e
    e.message
  end
end

#load_form(id) ⇒ Object



47
48
49
# File 'app/helpers/form_data_helper.rb', line 47

def load_form(id)
  Form.find_sys_id(_sid, id, "title")
end

#show_form_record(id_or_form_submission, options = {}) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'app/helpers/form_data_helper.rb', line 67

def show_form_record(id_or_form_submission, options = {})
  if id_or_form_submission.is_a?(FormSubmission)
    sub = id_or_form_submission
  else
    id = id_or_form_submission.to_i
    sub = FormSubmission.sys(_sid).where(:id=>id).first
  end

  return "[record not found '#{id}']" unless sub
  options[:enforce_permissions] = true if options[:enforce_permissions]==nil

  if options[:enforce_permissions]
   unless sub.can_see?(current_user)
     return "<!-- not visible -->".html_safe
    end
  end

  begin
    render partial:"form/record", :locals=>{:record=>sub, :options=>options}
  rescue Exception => e
    e.message
  end
end