Sha256: 70f710b6ef5bdafd314bca3ed0d789301cfe8b91a231ecb33a5f22220801fc59

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 & 2 rubygems

Version Path
locomotive_cms-2.0.3 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.0.2 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.0.1 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.0.0 lib/locomotive/liquid/drops/content_entry.rb
tribeca_cms-0.1.1 lib/locomotive/liquid/drops/content_entry.rb
tribeca_cms-2.0.0.rc12 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.0.0.rc12 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.0.0.rc11 lib/locomotive/liquid/drops/content_entry.rb
locomotive_cms-2.0.0.rc10 lib/locomotive/liquid/drops/content_entry.rb