Class: PagesCore::Templates::Configuration
- Inherits:
-
ConfigurationHandler
- Object
- ConfigurationHandler
- PagesCore::Templates::Configuration
- Defined in:
- lib/pages_core/templates/configuration.rb
Overview
Template configuration
Configuration DSL for the page templates. Can be accessed through PagesCore::Templates.configure
.
PagesCore::Templates.configure do |config|
# Configuration goes here
end
Configuring templates
Defaults for all templates can be configured with:
config.default do |default|
default.enabled_blocks %i[name headline body]
default.files :disabled
end
Individual template configurations override the defaults.
config.template(:article, :article_alt) do |t|
t.enabled_blocks %i[name headline excerpt body boxout]
t.files :enabled
end
Options
- blocks
-
Yields the block configuration.
- enabled_blocks
-
List of enabled blocks. Default: %i[headline excerpt body]
- template
-
Template for all pages, unless overridden with
sub_template
. It will attempt to guess based on the parent page if set to:autodetect
, which is the default value. Pass the:root
option to set template at root level. - image
-
Enable images. Default:
:enabled
- files
-
Enable file uploads. Default:
:disabled
- tags
-
Enable tags. Default:
:disabled
- dates
-
Enable dates. Default:
:disabled
- sub_template
-
Children of the page will automatically have this template if configured. Defaults to
nil
, which fall back to the behaviour oftemplate
.
Block configuration
Blocks can be configured at top level, or per template:
config.default do |default|
default.blocks do |block|
block.("Byline", size: :field)
block.("Video embed", size: :small, description: "Embed code")
end
default.enabled_blocks %i[headline byline body embed]
end
Valid sizes for text blocks are :field
(single line), :small
and :large
.
Select blocks
Blocks can also be selects:
block.("Foobar", type: :select, options: %w[Foo Bar Baz])
Pass a hash for multiple localizations:
block.("Foobar", type: :select,
options: { en: %w[Foo Bar Baz],
nb: %w[Fuu Baer Baez] })
Options can be set at runtime using a Proc:
block.("Foobar", type: :select,
options: -> { FooBar. })
Instance Attribute Summary
Attributes inherited from ConfigurationHandler
Instance Method Summary collapse
- #blocks(template_name = :_defaults, &block) ⇒ Object
- #configure_block(tpl_name, block_name, title = nil, options = {}) ⇒ Object
- #configure_template(template_name, setting, value, options = {}) ⇒ Object
- #templates(*tpl_args, &block) ⇒ Object (also: #template)
- #valid_template_options ⇒ Object
Methods inherited from ConfigurationHandler
#get, handle, handle_blocks, #initialize, #method_missing, #proxy, #respond_to_missing?, #set
Constructor Details
This class inherits a constructor from PagesCore::Templates::ConfigurationHandler
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class PagesCore::Templates::ConfigurationHandler
Instance Method Details
#blocks(template_name = :_defaults, &block) ⇒ Object
127 128 129 130 131 |
# File 'lib/pages_core/templates/configuration.rb', line 127 def blocks(template_name = :_defaults, &block) proxy(block) do |name, *args| configure_block(template_name, name, *args) end end |
#configure_block(tpl_name, block_name, title = nil, options = {}) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/pages_core/templates/configuration.rb', line 101 def configure_block(tpl_name, block_name, title = nil, = {}) block_name = block_name.to_sym opts = { title: title || block_name.to_s.humanize, localized: true }.merge() if tpl_name == :_defaults set([:default, :blocks, block_name], opts) else set([:templates, tpl_name, :blocks, block_name], opts) end end |
#configure_template(template_name, setting, value, options = {}) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/pages_core/templates/configuration.rb', line 114 def configure_template(template_name, setting, value, = {}) template_name = template_name.to_sym setting = setting.to_sym unless .include?(setting) raise "Invalid template configuration value: #{setting.inspect}" end set( template_path(template_name), template_config(setting, value, ) ) end |
#templates(*tpl_args, &block) ⇒ Object Also known as: template
133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/pages_core/templates/configuration.rb', line 133 def templates(*tpl_args, &block) names = tpl_args.flatten.map(&:to_sym) proxy(block) do |name, *args| if name == :blocks proxy(args.first.is_a?(Proc) ? args.first : nil) do |n2, *a2| names.each { |t| configure_block(t, n2, *a2) } end else names.each { |t| configure_template(t, name, *args) } end end end |
#valid_template_options ⇒ Object
96 97 98 99 |
# File 'lib/pages_core/templates/configuration.rb', line 96 def %i[template image images files text_filter blocks enabled_blocks sub_template tags dates] end |