Sha256: 5f8600e51246b514fa409f757141f6cfbd4367532dbe374f922ffe16f42afdb1

Contents?: true

Size: 1.55 KB

Versions: 4

Compression:

Stored size: 1.55 KB

Contents

module Ecm
  module Pictures
    class Gallery < ActiveRecord::Base
      # associations
      has_many :pictures, -> { order :position },
               dependent: :destroy

      # attributes
      accepts_nested_attributes_for :pictures, allow_destroy: true

      # acts as list
      acts_as_list
      default_scope { order(:position) }

      # acts as markup
      acts_as_markup language: :variable, columns: [:description]

      # callbacks
      after_initialize :set_defaults

      # friendly id
      extend FriendlyId
      friendly_id :name, use: [:slugged, :finders]

      # tagging
      acts_as_taggable if respond_to?(:acts_as_taggable)

      # validations
      validates :markup_language, presence: true,
                                  inclusion: Ecm::Pictures::Configuration.markup_languages
      validates :name, presence: true,
                       uniqueness: true

      def display_code_for_erb
        "<%= render_picture_gallery '#{name}' %>"
      end

      def picture_images=(picture_images)
        picture_images.each do |image|
          next if image.respond_to?(:empty?) && image.empty?
          pictures.build(image: image)
        end
      end

      def to_s
        name
      end

      def human
        name
      end

      def preview_picture
        pictures.first
      end

      private

      def set_defaults
        if self.new_record?
          self.link_images = true if link_images.nil?
          self.markup_language ||= Ecm::Pictures::Configuration.default_markup_language
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ecm_pictures2-5.1.0 app/models/ecm/pictures/gallery.rb
ecm_pictures2-5.0.1 app/models/ecm/pictures/gallery.rb
ecm_pictures2-5.0.0 app/models/ecm/pictures/gallery.rb
ecm_pictures2-4.0.1 app/models/ecm/pictures/gallery.rb