Sha256: 5dfb309b32d6912cbb2599e6340fa3f92b7431aa9f5df4cafca9d1e01062455e

Contents?: true

Size: 1.9 KB

Versions: 9

Compression:

Stored size: 1.9 KB

Contents

module Locomotive
  module Liquid
    module Drops
      class ContentEntry < Base

        delegate :_slug, :_permalink, :seo_title, :meta_keywords, :meta_description, to: '_source'

        def _id
          self._source._id.to_s
        end

        def _label
          @_label ||= self._source._label
        end

        # Returns the next content for the parent content type.
        # If no content is found, nil is returned.
        #
        # Usage:
        #
        # {% if article.next %}
        # <a href="/articles/{{ article.next._permalink }}">Read next article</a>
        # {% endif %}
        #
        def next
          @next ||= self._source.next.to_liquid
        end

        # Returns the previous content for the parent content type.
        # If no content is found, nil is returned.
        #
        # Usage:
        #
        # {% if article.previous %}
        # <a href="/articles/{{ article.previous._permalink }}">Read previous article</a>
        # {% endif %}
        #
        def previous
          @previous ||= self._source.previous.to_liquid
        end

        def before_method(meth)
          return '' if self._source.nil?

          if not @@forbidden_attributes.include?(meth.to_s)
            value = self._source.send(meth)

            if value.respond_to?(:all) # check for an association
              filter_and_order_list(value)
            else
              value
            end
          else
            nil
          end
        end

        protected

        def filter_and_order_list(list)
          # filter ?
          if @context['with_scope']
            conditions  = HashWithIndifferentAccess.new(@context['with_scope'])
            order_by    = conditions.delete(:order_by).try(:split)

            list.filtered(conditions, order_by)
          else
            # no filter, default order
            list.ordered
          end
        end

      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
locomotive_cms-2.2.3 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.2.2 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.2.1 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.2.0 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.1.4 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.1.3 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.1.2 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.1.1 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.1.0 lib/locomotive/liquid/drops/content_entry.rb