class Mtl::Rails::CardFilePresenter

Private Specialised renderer for the file card element used in a file collection

Attributes

view[R]

Public Class Methods

new(view) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 10
def initialize(view)
  @view = view
end

Public Instance Methods

render(filename, href, params = {}) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 14
def render(filename, href, params = {})
  params = params.reverse_merge type: File.extname(filename).delete('.')
  params[:href] = href
  card_params = { title: params[:title] || filename,
                  class: ['card-panel', params[:preview] ? 'card-panel-image' : nil],
                  data: data(filename, params),
                  style: if params[:preview]
                           "background-image: url(#{URI.encode(params[:preview])})"
                         end }
  if params[:modal]
    view.content_tag :div, render_body(filename, params), card_params
  else
    view.link_to render_body(filename, params), href, card_params.merge(target: '_blank')
  end
end
render_body(filename, params) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 30
def render_body(filename, params)
  view.safe_join [label(filename, params[:title]), infos(params), delete(params), download(filename, params)]
end

Private Instance Methods

data(filename, params) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 70
def data(filename, params)
  data = params[:data] || {}
  data.merge(modal_data(filename, params))
end
delete(params) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 56
def delete(params)
  return unless params[:delete]
  data = { method: :delete, 'mtl-href': params[:delete], confirm: params[:confirm] }
  view.mtl_icon :close, class: 'close', data: data.reject { |_, v| v.blank? }
end
download(filename, params) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 62
def download(filename, params)
  return unless params[:modal]
  view.link_to view.mtl_icon(:file_download), params[:href], title: params[:title] || filename,
                                                             target: '_blank',
                                                             class: 'download-link',
                                                             download: params[:title] || filename
end
filename_tag(filename) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 41
def filename_tag(filename)
  view.content_tag(:span, filename, class: 'truncate')
end
icon(type) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 49
def icon(type)
  icon, icon_class = Mtl.file_icons[type.to_s.downcase] ||
                     Mtl.file_icons['other'] ||
                     [:insert_drive_file, 'blue-text']
  view.mtl_icon(icon, class: icon_class)
end
infos(params) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 45
def infos(params)
  view.content_tag :span, icon(params[:type]) + " #{params[:type].upcase}", class: 'secondary'
end
label(filename, title = nil) click to toggle source
# File lib/mtl/rails/card_file_presenter.rb, line 36
def label(filename, title = nil)
  return filename_tag(filename) unless title
  view.safe_join [view.content_tag(:strong, title, class: 'truncate'), filename_tag(filename)]
end
modal_data(filename, params) click to toggle source