Sha256: 0e5f7bc1a3a06a62fa40eb67a74a50bcdfe696ab87938768d0c176ed1f2e3fd7
Contents?: true
Size: 1.97 KB
Versions: 2
Compression:
Stored size: 1.97 KB
Contents
# encoding: utf-8 module PagesCore module Templateable extend ActiveSupport::Concern included do before_validation :ensure_template end def template_config PagesCore::Templates::TemplateConfiguration.new(template) end def template !self[:template].blank? ? self[:template] : inherited_or_default_template end def default_subtemplate template_config.value(:sub_template) || default_template || subtemplate_with_postfix || singularized_subtemplate || template end private def singularized_subtemplate singularized = ActiveSupport::Inflector.singularize(base_template) return if base_template == singularized find_template_by_expression( Regexp.new("^" + Regexp.quote(singularized)) ) end def subtemplate_with_postfix find_template_by_expression( Regexp.new( "^" + Regexp.quote(base_template) + "_?(post|page|subpage|item)" ) ) end def base_template template .split(/_/) .reject { |w| %w(index list archive liste arkiv).include?(w) } .join(" ") end def default_template configured = PagesCore::Templates.configuration.get( :default, :template, :value ) configured if configured != :autodetect end def find_template_by_expression(expr) PagesCore::Templates .names .select { |t| t.match(expr) } .try(&:first) end def inherited_or_default_template default_options = PagesCore::Templates.configuration.get( :default, :template, :options ) if parent t = parent.default_subtemplate elsif default_options && default_options[:root] t = default_options[:root] elsif default_template t = default_template end t ||= :index t.to_s end def ensure_template self[:template] ||= inherited_or_default_template end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pages_core-3.4.3 | app/models/concerns/pages_core/templateable.rb |
pages_core-3.4.2 | app/models/concerns/pages_core/templateable.rb |