Module: Alchemy::Page::PageLayouts::ClassMethods

Defined in:
app/models/alchemy/page/page_layouts.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



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.

Parameters:

  • language_id (Fixnum)

    of current used Language.

  • (false) (Boolean)

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



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