Module: Alchemy::Page::Definitions::ClassMethods

Defined in:
app/models/alchemy/page/definitions.rb

Instance Method Summary collapse

Instance Method Details

#human_layout_name(layout) ⇒ Object

Translates name for given layout

Translation example

en:
  alchemy:
    page_layout_names:
      products_overview: Products Overview

Parameters:

  • The (String)

    layout name



60
61
62
# File 'app/models/alchemy/page/definitions.rb', line 60

def human_layout_name(layout)
  Alchemy.t(layout, scope: "page_layout_names", default: layout.to_s.humanize)
end

#layouts_for_select(language_id, layoutpages: false) ⇒ Object

Returns page layouts ready for Rails’ select form helper.



21
22
23
24
25
26
# File 'app/models/alchemy/page/definitions.rb', line 21

def layouts_for_select(language_id, layoutpages: false)
  layouts = selectable_layouts(language_id, layoutpages: layoutpages)
  layouts.map do |layout|
    [layout.human_name, layout.name]
  end
end

#layouts_repository=(klass) ⇒ Object

Register a custom page layouts repository

The default repository is Alchemy::PageDefinition



15
16
17
# File 'app/models/alchemy/page/definitions.rb', line 15

def layouts_repository=(klass)
  @_layouts_repository = klass
end

#selectable_layouts(language_id, layoutpages: false) ⇒ Object

Returns all layouts that can be used for creating a new page.

It removes all layouts from available layouts that are unique and already taken and that are marked as hide.

Parameters:

  • language_id (Fixnum)

    of current used Language.

  • (false) (Boolean)

    Pass true to only select layouts for global/layout pages.



37
38
39
40
41
42
43
44
45
46
# File 'app/models/alchemy/page/definitions.rb', line 37

def selectable_layouts(language_id, layoutpages: false)
  @language_id = language_id
  layouts_repository.all.select do |layout|
    if layoutpages
      layout.layoutpage && layout_available?(layout)
    else
      !layout.layoutpage && layout_available?(layout)
    end
  end
end