class ComfortableMexicanSofa::Content::Tag::PageFileLink

This tag allows you to link page-level files from within the page content.

E.g. if your layout has:

{{ cms:file graphic, render: false }}
{{ cms:files attachments, redner: false }}

You can link to the files from an individual page (or snippet rendered in the context of the page) like so:

{{ cms:page_file_link graphic }}
{{ cms:page_file_link attachments, filename: "cat.jpg" }}

`as` - url (default) | link | image - how file gets rendered out `label` - attach label attribute to link or image tag `resize` - imagemagick option. For example: “100x50>” `gravity` - imagemagick option. For example: “center” `crop` - imagemagick option. For example: “100x50+0+0” `class` - any html classes that you want on the result link or image tag. For example “class1 class2”

Attributes

as[R]

@type [“url”, “link”, “image”]

filename[R]

@return [String] Used to refer to a file in a {{ cms:files }} tag.

identifier[R]

@return [String] A `cms:file(s)` identifier.

variant_attrs[R]

@type [{String => String}]

Public Class Methods

new(context:, params: [], source: nil) click to toggle source

@param (see ComfortableMexicanSofa::Content::Tag#initialize)

# File lib/comfortable_mexican_sofa/content/tags/page_file_link.rb, line 42
def initialize(context:, params: [], source: nil)
  super

  options = params.extract_options!
  @identifier     = params[0]
  @as             = options["as"] || "url"
  @class          = options["class"]
  @variant_attrs  = options.slice("resize", "gravity", "crop")
  @filename       = options["filename"]

  unless @identifier.present?
    raise Error, "Missing identifier for page file link tag"
  end
end

Public Instance Methods

file() click to toggle source

@return [ActiveStorage::Blob]

# File lib/comfortable_mexican_sofa/content/tags/page_file_link.rb, line 63
def file
  @file ||=
    if fragment.nil?
      nil
    elsif filename.nil?
      fragment.attachments.first
    else
      fragment.attachments.detect { |a| a.filename.to_s == filename }
    end
end
fragment() click to toggle source

@return [Comfy::Cms::Fragment]

# File lib/comfortable_mexican_sofa/content/tags/page_file_link.rb, line 58
def fragment
  @fragment ||= context.fragments.detect { |f| f.identifier == identifier }
end
label() click to toggle source

@return [String]

# File lib/comfortable_mexican_sofa/content/tags/page_file_link.rb, line 75
def label
  return if file.nil?
  file.filename.to_s
end