Sha256: 540c52baf95dbcd60b9a3426cab3c0cdacf6fe8e0bd0e48e4ccbab3ae9089814

Contents?: true

Size: 966 Bytes

Versions: 12

Compression:

Stored size: 966 Bytes

Contents

module CamaleonCms
  module Widget
    class Sidebar < CamaleonCms::TermTaxonomy
      default_scope { where(taxonomy: :sidebar) }

      has_many :metas, lambda {
                         where(object_class: 'Widget::Sidebar')
                       }, class_name: 'CamaleonCms::Meta', foreign_key: :objectid, dependent: :destroy
      has_many :assigned, foreign_key: :post_parent, dependent: :destroy
      belongs_to :site, class_name: 'CamaleonCms::Site', foreign_key: :parent_id

      # scopes
      scope :default_sidebar, -> { where(slug: 'default-sidebar') }
      scope :all_sidebar, -> { where('slug != \'default-sidebar\'') }

      # assign the widget into this sidebar
      # widget: string(slug)/object
      # data: {title, content}
      def add_widget(widget, data = {})
        widget = site.widgets.where(slug: widget).first if widget.is_a?(String)
        data[:widget_id] = widget.id
        assigned.create(data)
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
camaleon_cms-2.9.1 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.9.0 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.8.3 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.8.2 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.8.1 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.8.0 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.7.5 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.7.4 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.7.3 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.7.2 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.7.1 app/models/camaleon_cms/widget/sidebar.rb
camaleon_cms-2.7.0 app/models/camaleon_cms/widget/sidebar.rb