Sha256: e38fdaf2330944e88ac2365bb6e0fff98d34ddd0dd0a45cc1f18e18abc6a377a

Contents?: true

Size: 1.58 KB

Versions: 17

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true

# This tag allows for linking of js and css content defined on the layout.
# Looks something like this:
#   {{cms:asset layout_identifier, type: css, as: tag}}
#
# `type` - css | js - what we're outputting here
# `as`   - url (default) | tag - output url or wrap it in the appropriate tag
#
class ComfortableMexicanSofa::Content::Tag::Asset < ComfortableMexicanSofa::Content::Tag

  attr_reader :identifier, :type, :as

  def initialize(context:, params: [], source: nil)
    super

    options = params.extract_options!
    @identifier = params[0]
    @type       = options["type"]
    @as         = options["as"] || "url"

    unless @identifier.present?
      raise Error, "Missing layout identifier for asset tag"
    end
  end

  def layout
    @layout ||= context.site.layouts.find_by(identifier: @identifier)
  end

  def content
    return "" unless layout

    base = ComfortableMexicanSofa.config.public_cms_path || ""
    unless base.ends_with?("/")
      base += "/"
    end

    case @type
    when "css"
      out = "#{base}cms-css/#{context.site.id}/#{@identifier}/#{layout.cache_buster}.css"
      if @as == "tag"
        out = "<link href='#{out}' media='screen' rel='stylesheet' type='text/css' />"
      end
      out
    when "js"
      out = "#{base}cms-js/#{context.site.id}/#{@identifier}/#{layout.cache_buster}.js"
      if @as == "tag"
        out = "<script src='#{out}' type='text/javascript'></script>"
      end
      out
    end
  end

end

ComfortableMexicanSofa::Content::Renderer.register_tag(
  :asset, ComfortableMexicanSofa::Content::Tag::Asset
)

Version data entries

17 entries across 17 versions & 6 rubygems

Version Path
comfortable_mexican_sofa-2.0.19 lib/comfortable_mexican_sofa/content/tags/asset.rb
PixelForce_ETS-0.0.2 lib/comfortable_mexican_sofa/content/tags/asset.rb
PixelForce_ETS-0.0.1 lib/comfortable_mexican_sofa/content/tags/asset.rb
kcyEtsTest2-0.0.4 lib/comfortable_mexican_sofa/content/tags/asset.rb
kcyEtsTest2-0.0.3 lib/comfortable_mexican_sofa/content/tags/asset.rb
kcyEtsTest2-0.0.2 lib/comfortable_mexican_sofa/content/tags/asset.rb
kcyEtsTest2-0.0.1 lib/comfortable_mexican_sofa/content/tags/asset.rb
kcyEtsTest-0.0.1 lib/comfortable_mexican_sofa/content/tags/asset.rb
kcyEtsTest-2.2.19 lib/comfortable_mexican_sofa/content/tags/asset.rb
ComfortableMexicanSofa-2.0.18 lib/comfortable_mexican_sofa/content/tags/asset.rb
kcy1-1.0 lib/comfortable_mexican_sofa/content/tags/asset.rb
comfortable_mexican_sofa-2.0.18 lib/comfortable_mexican_sofa/content/tags/asset.rb
comfortable_mexican_sofa-2.0.17 lib/comfortable_mexican_sofa/content/tags/asset.rb
comfortable_mexican_sofa-2.0.16 lib/comfortable_mexican_sofa/content/tags/asset.rb
comfortable_mexican_sofa-2.0.15 lib/comfortable_mexican_sofa/content/tags/asset.rb
comfortable_mexican_sofa-2.0.14 lib/comfortable_mexican_sofa/content/tags/asset.rb
comfortable_mexican_sofa-2.0.13 lib/comfortable_mexican_sofa/content/tags/asset.rb