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_content ⇒ Alchemy::Content
The content 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
32 33 34 |
# File 'app/models/alchemy/element/presenters.rb', line 32 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
contents:
- name: headline
type: EssenceText
- name: text
type EssenceRichtext
as_element_title: true
With “I want to tell you a funky story” as stripped_body for the EssenceRichtext Content produces:
Funky Element: I want to tell ...
73 74 75 |
# File 'app/models/alchemy/element/presenters.rb', line 73 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.
79 80 81 |
# File 'app/models/alchemy/element/presenters.rb', line 79 def dom_id "#{name}_#{id}" end |
#preview_content ⇒ Alchemy::Content
The content that’s used for element’s preview text.
It tries to find one of element’s contents that is defined as_element_title
. Takes element’s first content if no content is defined as_element_title
.
90 91 92 |
# File 'app/models/alchemy/element/presenters.rb', line 90 def preview_content @_preview_content ||= contents.detect(&:preview_content?) || contents.first end |
#preview_text(maxlength = 60) ⇒ Object
Returns a preview text for element.
It’s taken from the first Content found in the elements.yml
definition file.
You can flag a Content as as_element_title
to take this as preview.
45 46 47 |
# File 'app/models/alchemy/element/presenters.rb', line 45 def preview_text(maxlength = 60) preview_text_from_preview_content(maxlength) || preview_text_from_nested_elements(maxlength) end |