class Spina::Theme
Attributes
config[RW]
custom_pages[RW]
layout_parts[RW]
name[RW]
page_parts[RW]
parts[RW]
plugins[RW]
public_theme[RW]
resources[RW]
structures[RW]
title[RW]
view_templates[RW]
Public Class Methods
all()
click to toggle source
# File lib/spina/theme.rb, line 8 def all ::Spina::THEMES end
find_by_name(name)
click to toggle source
# File lib/spina/theme.rb, line 12 def find_by_name(name) all.find { |theme| theme.name == name } end
new()
click to toggle source
# File lib/spina/theme.rb, line 28 def initialize @page_parts = [] @structures = [] @layout_parts = [] @view_templates = [] @custom_pages = [] @navigations = [] @resources = [] @public_theme = false end
register() { |theme| ... }
click to toggle source
# File lib/spina/theme.rb, line 16 def register theme = ::Spina::Theme.new yield theme raise 'Missing theme name' if theme.name.nil? if theme.plugins.nil? theme.plugins = ::Spina::Plugin.all.map { |plugin| plugin.name } end all << theme end
Public Instance Methods
is_custom_undeletable_page?(view_template_name)
click to toggle source
Check if view_template is defined as a custom undeletable page
# File lib/spina/theme.rb, line 57 def is_custom_undeletable_page?(view_template_name) @custom_pages.any? { |page| page[:view_template] == view_template_name && !page[:deletable] } end
new_page_templates(resource: nil)
click to toggle source
# File lib/spina/theme.rb, line 39 def new_page_templates(resource: nil) page_collection = resource&.name || "main" @view_templates.map do |view_template| next if is_custom_undeletable_page?(view_template[:name]) next if view_template[:exclude_from]&.include?(page_collection) OpenStruct.new({ name: view_template[:name], title: view_template[:title], description: view_template[:description], recommended: view_template[:name] == resource&.view_template }) end.compact.sort_by do |page_template| [page_template.recommended ? 0 : 1] end end