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
# File lib/mtl/rails/card_file_presenter.rb, line 75 def modal_data(filename, params) return {} unless params[:modal] { mtl_document_modal: 'open', mtl_document_name: filename, href: params[:href] } end