Module: Alchemy::Element::Presenters
- Extended by:
- ActiveSupport::Concern
- Included in:
- Alchemy::Element
- Defined in:
- app/models/alchemy/element/presenters.rb
Overview
Methods used for presenting an Alchemy Element.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#display_name ⇒ Object
Returns the translated name.
-
#display_name_with_preview_text(maxlength = 30) ⇒ Object
Generates a preview text containing Element#display_name and Element#preview_text.
-
#dom_id ⇒ Object
Returns a dom id used for elements html id tag.
-
#preview_ingredient ⇒ Alchemy::Ingredient
The ingredient that’s used for element’s preview text.
-
#preview_text(maxlength = 60) ⇒ Object
Returns a preview text for element.
Instance Method Details
#display_name ⇒ Object
Returns the translated name
35 36 37 |
# File 'app/models/alchemy/element/presenters.rb', line 35 def display_name self.class.display_name_for(definition["name"] || name) end |
#display_name_with_preview_text(maxlength = 30) ⇒ Object
Generates a preview text containing Element#display_name and Element#preview_text.
It is displayed inside the head of the Element in the Elements.list overlay window from the Alchemy Admin::Page#edit view.
Example
A Element described as:
- name: funky_element
display_name: Funky Element
ingredients:
- role: headline
type: Text
- role: text
type: Richtext
as_element_title: true
With “I want to tell you a funky story” as stripped_body for the Richtext ingredient produces:
Funky Element: I want to tell ...
77 78 79 |
# File 'app/models/alchemy/element/presenters.rb', line 77 def display_name_with_preview_text(maxlength = 30) "#{display_name}: #{preview_text(maxlength)}" end |
#dom_id ⇒ Object
Returns a dom id used for elements html id tag.
83 84 85 |
# File 'app/models/alchemy/element/presenters.rb', line 83 def dom_id self.class.dom_id_class.new(self).call end |
#preview_ingredient ⇒ Alchemy::Ingredient
The ingredient that’s used for element’s preview text.
It tries to find one of element’s ingredients that is defined as_element_title
. Takes element’s first defined ingredient if no ingredient is defined as_element_title
.
94 95 96 |
# File 'app/models/alchemy/element/presenters.rb', line 94 def preview_ingredient @_preview_ingredient ||= ingredients.detect(&:preview_ingredient?) || first_ingredient_by_definition end |
#preview_text(maxlength = 60) ⇒ Object
Returns a preview text for element.
It’s taken from the first Ingredient found in the elements.yml
definition file.
You can flag a Ingredient as as_element_title
to take this as preview.
48 49 50 51 |
# File 'app/models/alchemy/element/presenters.rb', line 48 def preview_text(maxlength = 60) preview_text_from_preview_ingredient(maxlength) || preview_text_from_nested_elements(maxlength) end |