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

Instance Method Details

#display_nameObject

Returns the translated name

See Also:

  • #display_name_for


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 ...

Parameters:

  • maxlength (Fixnum) (defaults to: 30)

    (30) Length of characters after the text will be cut off.



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_idObject

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_contentAlchemy::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.

Returns:



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.

Parameters:

  • maxlength (Fixnum) (defaults to: 60)

    (60) Length of characters after the text will be cut off.



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