Module: Alchemy::EssencesHelper
- Included in:
- Admin::EssencesHelper, ElementsHelper
- Defined in:
- app/helpers/alchemy/essences_helper.rb
Overview
This helper contains methods to render the essence
from an Element
Content
.
Essences have two kinds of partials. An editor
and a view
partial.
They both resist in ‘app/views/alchemy/essences’
The partials are suffixed with the type of part.
Example:
For an EssenceText
The view partial is:
_essence_text_view.html.erb
The editor partial is:
_essence_text_editor.html.erb
Usage:
For front end web development you should mostly use the render_essence_view_by_name
helper.
And the render_essence_editor_by_name
helper for Alchemy backend views.
Instance Method Summary collapse
-
#content_settings_value(content, key, options = {}) ⇒ Object
Fetches value from settings of given content.
-
#render_essence(content, part = :view, options = {}, html_options = {}) ⇒ Object
Renders the
Esssence
partial for givenContent
. -
#render_essence_picture_view(content, options, html_options) ⇒ Object
Renders a essence picture.
-
#render_essence_view(content, options = {}, html_options = {}) ⇒ Object
Renders the
Esssence
view partial for givenContent
. -
#render_essence_view_by_name(element, name, options = {}, html_options = {}) ⇒ Object
Renders the
Essence
view partial fromElement
by name.
Instance Method Details
#content_settings_value(content, key, options = {}) ⇒ Object
Fetches value from settings of given content
133 134 135 |
# File 'app/helpers/alchemy/essences_helper.rb', line 133 def content_settings_value(content, key, = {}) content.settings.update( || {}).symbolize_keys[key.to_sym] end |
#render_essence(content, part = :view, options = {}, html_options = {}) ⇒ Object
Renders the Esssence
partial for given Content
.
The helper renders the view partial as default.
Pass :editor
as second argument to render the editor partial
Options:
You can pass a options Hash to each type of essence partial as third argument.
This Hash is available as options
local variable.
for_view: {}
for_editor: {}
65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'app/helpers/alchemy/essences_helper.rb', line 65 def render_essence(content, part = :view, = {}, = {}) = {for_view: {}, for_editor: {}}.update() if content.nil? return part == :view ? "" : warning('Content is nil', _t(:content_not_found)) elsif content.essence.nil? return part == :view ? "" : warning('Essence is nil', _t(:content_essence_not_found)) end render partial: "alchemy/essences/#{content.essence_partial_name}_#{part}", locals: { content: content, options: ["for_#{part}".to_sym], html_options: } end |
#render_essence_picture_view(content, options, html_options) ⇒ Object
Renders a essence picture
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'app/helpers/alchemy/essences_helper.rb', line 94 def render_essence_picture_view(content, , ) = { show_caption: true, disable_link: false }.update(content.settings).update() return if content.ingredient.blank? if content.essence..present? && [:show_caption] = content_tag(:figcaption, content.essence., id: "#{dom_id(content.ingredient)}_caption", class: "image_caption") end img_tag = image_tag( content.essence.picture_url(), { alt: (content.essence.alt_tag.blank? ? nil : content.essence.alt_tag), title: (content.essence.title.blank? ? nil : content.essence.title), class: ( || content.essence.css_class.blank? ? nil : content.essence.css_class) }.merge( ? {} : ) ) output = ? img_tag + : img_tag if content.essence.link.present? && ![:disable_link] output = link_to(url_for(content.essence.link), { title: content.essence.link_title.blank? ? nil : content.essence.link_title, target: (content.essence.link_target == "blank" ? "_blank" : nil), 'data-link-target' => content.essence.link_target.blank? ? nil : content.essence.link_target }) do output end end if content_tag(:figure, output, {class: content.essence.css_class.blank? ? nil : content.essence.css_class}.merge()) else output end end |
#render_essence_view(content, options = {}, html_options = {}) ⇒ Object
Renders the Esssence
view partial for given Content
.
Options:
:image_size => "111x93" # Used by EssencePicture to render the image via RMagick to that size. [Default nil]
:date_format => "Am %d. %m. %Y, um %H:%Mh" # Especially for EssenceDate. See Rubys Date.strftime for date formatting options. [Default nil]
:show_caption => false # Pass Boolean to show/hide the caption of an EssencePicture. [Default true]
:disable_link => true # You can surpress the link of an EssencePicture. Default false
88 89 90 |
# File 'app/helpers/alchemy/essences_helper.rb', line 88 def render_essence_view(content, = {}, = {}) render_essence(content, :view, {:for_view => }, ) end |
#render_essence_view_by_name(element, name, options = {}, html_options = {}) ⇒ Object
Renders the Essence
view partial from Element
by name.
Pass the name of the Content
from Element
as second argument.
Example:
This renders the Content
named “intro” from element.
<%= render_essence_view_by_name(element, "intro") %>
41 42 43 44 45 46 47 48 |
# File 'app/helpers/alchemy/essences_helper.rb', line 41 def render_essence_view_by_name(element, name, = {}, = {}) if element.blank? warning('Element is nil') return "" end content = element.content_by_name(name) render_essence_view(content, , ) end |