Sha256: 5a35a0c0fe3b2ca208cfa39190f042c586e9a76cb5db32cb531c5418734b7d51

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module Decidim
  module Slider
    module Homepage
      class MainCell < Decidim::ViewModel
        include Decidim::LayoutHelper

        def show
          return unless has_slides?

          render
        end

        private

        def settings
          {
            "data-auto-play": model.settings.autoplay
          }.map { |k, v| "#{k}=\"#{v}\"" }.join(" ")
        end

        def cells
          return @cells if defined?(@cells)

          @cells ||= []
          index = 0
          slides.each do |slide|
            cl = cell(slide.manifest.cell, slide, context: { index: index })

            next unless cl.renderable?

            @cells.push(cl)
            index += 1
          end

          @cells
        end

        def has_slides?
          cells.map(&:renderable?).any?
        end

        def slides
          @slides ||= Decidim::ContentBlock.published.for_scope(:slider_tabs, organization: current_organization).order(:weight)
        end

        def cache_hash
          hash = [I18n.locale]
          slides.each do |slide|
            hash.push(slide.cache_key_with_version)
          end
          hash.join(Decidim.cache_key_separator)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
decidim-slider-0.0.3 app/cells/decidim/slider/homepage/main_cell.rb
decidim-slider-0.0.2 app/cells/decidim/slider/homepage/main_cell.rb