67 lines
2.0 KiB
Ruby
67 lines
2.0 KiB
Ruby
module Locomotive
|
|
module PagesHelper
|
|
|
|
def css_for_page(page)
|
|
%w(index not_found templatized redirect).inject([]) do |memo, state|
|
|
memo << state.dasherize if page.send(:"#{state}?")
|
|
memo
|
|
end.join(' ')
|
|
end
|
|
|
|
def page_toggler(page)
|
|
image_tag("locomotive/list/icons/node_#{(cookies["folder-#{page._id}"] != 'none') ? 'open' : 'closed'}.png", :class => 'toggler')
|
|
end
|
|
|
|
def parent_pages_options
|
|
roots = current_site.pages.roots.where(:slug.ne => '404').and(:_id.ne => @page.id)
|
|
|
|
[].tap do |list|
|
|
roots.each do |page|
|
|
list = add_children_to_options(page, list)
|
|
end
|
|
end
|
|
end
|
|
|
|
def add_children_to_options(page, list)
|
|
return list if page.parent_ids.include?(@page.id) || page == @page
|
|
|
|
offset = '- ' * (page.depth || 0) * 2
|
|
|
|
list << ["#{offset}#{page.title}", page.id]
|
|
page.children.each { |child| add_children_to_options(child, list) }
|
|
list
|
|
end
|
|
|
|
def options_for_target_klass_name
|
|
base_models = current_site.content_types.map do |type|
|
|
[type.name.humanize, type.klass_with_custom_fields(:entries)]
|
|
end
|
|
base_models + Locomotive.config.models_for_templatization.map { |name| [name.underscore.humanize, name] }
|
|
end
|
|
|
|
def options_for_page_cache_strategy
|
|
[
|
|
[t('.cache_strategy.none'), 'none'],
|
|
[t('.cache_strategy.simple'), 'simple'],
|
|
[t('.cache_strategy.hour'), 1.hour.to_s],
|
|
[t('.cache_strategy.day'), 1.day.to_s],
|
|
[t('.cache_strategy.week'), 1.week.to_s],
|
|
[t('.cache_strategy.month'), 1.month.to_s]
|
|
]
|
|
end
|
|
|
|
def options_for_page_response_type
|
|
[
|
|
['HTML', 'text/html'],
|
|
['RSS', 'application/rss+xml'],
|
|
['XML', 'text/xml'],
|
|
['JSON', 'application/json']
|
|
]
|
|
end
|
|
|
|
def page_response_type_to_string(page)
|
|
options_for_page_response_type.detect { |t| t.last == page.response_type }.try(:first) || '—'
|
|
end
|
|
|
|
end
|
|
end |