Class: Occams::Content::Tag::Asset

Inherits:
Occams::Content::Tag show all
Defined in:
lib/occams/content/tags/asset.rb

Overview

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

Instance Attribute Summary collapse

Attributes inherited from Occams::Content::Tag

#context, #params, #source

Instance Method Summary collapse

Methods inherited from Occams::Content::Tag

#allow_erb?, #nodes, #render

Constructor Details

#initialize(context:, params: [], source: nil) ⇒ Asset

Returns a new instance of Asset.

Raises:



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/occams/content/tags/asset.rb', line 13

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

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

  return if @identifier.present?

  raise Error, 'Missing layout identifier for asset tag'
end

Instance Attribute Details

#asObject (readonly)

Returns the value of attribute as.



11
12
13
# File 'lib/occams/content/tags/asset.rb', line 11

def as
  @as
end

#identifierObject (readonly)

Returns the value of attribute identifier.



11
12
13
# File 'lib/occams/content/tags/asset.rb', line 11

def identifier
  @identifier
end

#typeObject (readonly)

Returns the value of attribute type.



11
12
13
# File 'lib/occams/content/tags/asset.rb', line 11

def type
  @type
end

Instance Method Details

#contentObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/occams/content/tags/asset.rb', line 30

def content
  return '' unless layout

  base = Occams.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

#layoutObject



26
27
28
# File 'lib/occams/content/tags/asset.rb', line 26

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