Module: Alchemy::Page::PageLayouts::ClassMethods
- Defined in:
- app/models/alchemy/page/page_layouts.rb
Instance Method Summary collapse
-
#human_layout_name(layout) ⇒ Object
Translates name for given layout.
-
#layouts_for_select(language_id, layoutpages: false) ⇒ Object
Returns page layouts ready for Rails’ select form helper.
-
#layouts_repository=(klass) ⇒ Object
Register a custom page layouts repository.
-
#layouts_with_own_for_select(page_layout_name, language_id, layoutpages: false) ⇒ Object
Returns page layouts including given layout ready for Rails’ select form helper.
-
#selectable_layouts(language_id, layoutpages: false) ⇒ Object
Returns all layouts that can be used for creating a new page.
Instance Method Details
#human_layout_name(layout) ⇒ Object
Translates name for given layout
Translation example
en:
alchemy:
page_layout_names:
products_overview: Products Overview
72 73 74 |
# File 'app/models/alchemy/page/page_layouts.rb', line 72 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 |
# File 'app/models/alchemy/page/page_layouts.rb', line 21 def layouts_for_select(language_id, layoutpages: false) @map_array = [] mapped_layouts_for_select(selectable_layouts(language_id, layoutpages: layoutpages)) end |
#layouts_repository=(klass) ⇒ Object
Register a custom page layouts repository
The default repository is Alchemy::PageLayout
15 16 17 |
# File 'app/models/alchemy/page/page_layouts.rb', line 15 def layouts_repository=(klass) @_layouts_repository = klass end |
#layouts_with_own_for_select(page_layout_name, language_id, layoutpages: false) ⇒ Object
Returns page layouts including given layout ready for Rails’ select form helper.
28 29 30 31 32 33 34 35 36 |
# File 'app/models/alchemy/page/page_layouts.rb', line 28 def layouts_with_own_for_select(page_layout_name, language_id, layoutpages: false) layouts = selectable_layouts(language_id, layoutpages: layoutpages) if layouts.detect { |l| l["name"] == page_layout_name }.nil? @map_array = [[human_layout_name(page_layout_name), page_layout_name]] else @map_array = [] end mapped_layouts_for_select(layouts) 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.
49 50 51 52 53 54 55 56 57 58 |
# File 'app/models/alchemy/page/page_layouts.rb', line 49 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 |