Skip to content
Snippets Groups Projects
gallery.rb 629 B
Newer Older
Arnaud Levy's avatar
Arnaud Levy committed
class Communication::Block::Template::Gallery < Communication::Block::Template::Base
Arnaud Levy's avatar
Arnaud Levy committed

  LAYOUTS = [:grid, :carousel].freeze
Arnaud Levy's avatar
Arnaud Levy committed

Arnaud Levy's avatar
Arnaud Levy committed
  has_select :layout, options: LAYOUTS, default: LAYOUTS.first

Arnaud Levy's avatar
Arnaud Levy committed
  def build_git_dependencies
Sébastien Gaya's avatar
Sébastien Gaya committed
    add_dependency active_storage_blobs
Arnaud Levy's avatar
Arnaud Levy committed
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def layout
Arnaud Levy's avatar
Arnaud Levy committed
    data['layout'] || LAYOUTS.first
Arnaud Levy's avatar
Arnaud Levy committed
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def images_with_alt
Arnaud Levy's avatar
Arnaud Levy committed
    @images_with_alt ||= elements.map { |element|
      extract_image_alt_and_credit element, 'file'
    }.compact
Arnaud Levy's avatar
Arnaud Levy committed
  end

  def active_storage_blobs
    @active_storage_blobs ||=  images_with_alt.map { |hash| hash.blob }
                                              .compact
  end
Arnaud Levy's avatar
Arnaud Levy committed
end