omegainteractive/comfypress

View on GitHub
lib/comfypress/view_methods.rb

Summary

Maintainability
A
1 hr
Test Coverage
module ComfyPress::ViewMethods
  
  # Wrapper around ComfyPress::FormBuilder
  def comfy_form_for(record, options = {}, &proc)
    options[:builder] = ComfyPress::FormBuilder
    options[:type] ||= :horizontal
    formatted_form_for(record, options, &proc)
  end
  
  # Injects some content somewhere inside cms admin area
  def cms_hook(name, options = {})
    ComfyPress::ViewHooks.render(name, self, options)
  end
  
  # Content of a snippet. Example:
  #   cms_snippet_content(:my_snippet)
  def cms_snippet_content(identifier, cms_site = nil)
    unless cms_site
      host, path = request.host.downcase, request.fullpath if respond_to?(:request) && request
      cms_site ||= (@cms_site || Cms::Site.find_site(host, path))
    end
    return '' unless cms_site 
    case identifier
    when Cms::Snippet
      snippet = identifier
    else
      return '' unless snippet = cms_site.snippets.find_by_identifier(identifier)
    end
    render :inline => ComfyPress::Tag.process_content(cms_site.pages.build, snippet.content)
  end
  
  # Content of a page block. This is how you get content from page:field
  # Example:
  #   cms_page_content(:left_column, CmsPage.first)
  #   cms_page_content(:left_column) # if @cms_page is present
  def cms_page_content(identifier, page = nil)
    return '' unless page ||= @cms_page
    return '' unless block = page.blocks.find_by_identifier(identifier)
    # If block is a page_file(s) we will return objects instead of attempting
    # to render them out
    case block.tag
    when ComfyPress::Tag::PageFile
      block.files.first
    when ComfyPress::Tag::PageFiles
      block.files
    else
      render :inline => ComfyPress::Tag.process_content(page, block.content)
    end
  end
end

ActionView::Base.send :include, ComfyPress::ViewMethods