Module: SimpleFormExtension::FileConcern

Included in:
Inputs::FileInput, Inputs::ImageInput
Defined in:
lib/simple_form_extension/file_concern.rb

Instance Method Summary collapse

Instance Method Details

#activestorage_attachment_attached?Boolean

Returns:

  • (Boolean)


68
69
70
71
72
# File 'lib/simple_form_extension/file_concern.rb', line 68

def activestorage_attachment_attached?
  @activestorage_attachment_attached ||=
    object.try(attribute_name).try(:attached?) &&
    object.try(attribute_name).blob&.persisted?
end

#existing_file_nameObject



30
31
32
33
34
35
36
37
# File 'lib/simple_form_extension/file_concern.rb', line 30

def existing_file_name
  if paperclip_attachment_attached?
    object.send(:"#{ attribute_name }_file_name").html_safe
  elsif activestorage_attachment_attached?
    attachment = object.send(attribute_name)
    attachment.filename.to_s
  end
end

#existing_file_tagObject



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/simple_form_extension/file_concern.rb', line 3

def existing_file_tag
  return '' unless file_exists?

  (:div, class: 'input-group help-block existing-file', data: { provides: 'existing-file'}) do
    (:span, class: 'input-group-addon') do
      "#{ _translate('file.existing_file') } : ".html_safe
    end +

    file_preview_and_remove_button
  end
end

#file_exists?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/simple_form_extension/file_concern.rb', line 52

def file_exists?
  @file_exists ||= paperclip_attachment_attached? || activestorage_attachment_attached?
end

#file_preview_and_remove_buttonObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/simple_form_extension/file_concern.rb', line 15

def file_preview_and_remove_button
  return '' unless file_exists?
  
  (:div, class: 'btn-group') do
    template.link_to(file_url, class: 'btn btn-default ', target: '_blank', data: { toggle: 'existing-file' }) do
      (:i, '', class: 'fa fa-file') +
      " ".html_safe +

      existing_file_name
    end +

    remove_file_button
  end
end

#file_urlObject



56
57
58
59
60
61
62
# File 'lib/simple_form_extension/file_concern.rb', line 56

def file_url
  if paperclip_attachment_attached?
    object.send(attribute_name)
  elsif activestorage_attachment_attached?
    template.polymorphic_url(object.send(attribute_name))
  end
end

#paperclip_attachment_attached?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/simple_form_extension/file_concern.rb', line 64

def paperclip_attachment_attached?
  @paperclip_attachment_attached ||= object.try(:"#{ attribute_name }?")
end

#remove_attachment_methodObject



48
49
50
# File 'lib/simple_form_extension/file_concern.rb', line 48

def remove_attachment_method
  options[:remove_method] || :"remove_#{ attribute_name }"
end

#remove_file_buttonObject



39
40
41
42
43
44
45
46
# File 'lib/simple_form_extension/file_concern.rb', line 39

def remove_file_button
  return unless object.respond_to?(:"#{ remove_attachment_method }=")

  (:button, class: 'btn btn-default', type: 'button', data: { dismiss: 'existing-file' }) do
    (:i, '', class: 'fa fa-remove', data: { :'removed-class' => 'fa fa-refresh' }) +
    @builder.hidden_field(remove_attachment_method, class: 'remove-file-input', value: nil)
  end
end