Sha256: 6e64c39dee3daad23c03ba13a93eb01ac6178396aabf613be6200cb3e5dc4b5f

Contents?: true

Size: 1.69 KB

Versions: 14

Compression:

Stored size: 1.69 KB

Contents

module Locomotive
  module Liquid
    module Tags
      module Editable
        class Base < ::Liquid::Block

          Syntax = /(#{::Liquid::QuotedFragment})(\s*,\s*#{::Liquid::Expression}+)?/

          def initialize(tag_name, markup, tokens, context)
            if markup =~ Syntax
              @slug = $1.gsub('\'', '')
              @options = {}
              markup.scan(::Liquid::TagAttributes) { |key, value| @options[key.to_sym] = value.gsub(/^'/, '').gsub(/'$/, '') }
            else
              raise ::Liquid::SyntaxError.new("Syntax Error in 'editable_xxx' - Valid syntax: editable_xxx <slug>(, <options>)")
            end

            super
          end

          def end_tag
            @context[:page].add_or_update_editable_element({
              :block => @context[:current_block].try(:name),
              :slug => @slug,
              :hint => @options[:hint],
              :default_content => @nodelist.first.to_s,
              :disabled => false,
              :from_parent => false
            }, document_type)
          end

          def render(context)
            current_page = context.registers[:page]

            element = current_page.find_editable_element(context['block'].try(:name), @slug)

            if element
              render_element(context, element)
            else
              Locomotive.logger "[editable element] missing element #{context[:block].name} / #{@slug}"
              ''
            end
          end

          protected

          def render_element(element)
            raise 'FIXME: has to be overidden'
          end

          def document_type
            raise 'FIXME: has to be overidden'
          end

        end

      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
locomotive_cms-1.0.0.beta.2 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-1.0.0.beta lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta12 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta11 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta10 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta9 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta8 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta7 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta5 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta4 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta3 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta2 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4.beta1 lib/locomotive/liquid/tags/editable/base.rb
locomotive_cms-0.0.4 lib/locomotive/liquid/tags/editable/base.rb