Class: Comfy::Cms::Layout

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/comfy/cms/layout.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.app_layouts_for_selectObject

List of available application layouts



48
49
50
51
52
53
# File 'app/models/comfy/cms/layout.rb', line 48

def self.app_layouts_for_select
  Dir.glob(File.expand_path('app/views/layouts/**/*.html.*', Rails.root)).collect do |filename|
    filename.gsub!("#{File.expand_path('app/views/layouts', Rails.root)}/", '')
    filename.split('/').last[0...1] == '_' ? nil : filename.split('.').first
  end.compact.sort
end

.options_for_select(site, layout = nil, current_layout = nil, depth = 0, spacer = '. . ') ⇒ Object

– Class Methods ——————————————————– Tree-like structure for layouts



35
36
37
38
39
40
41
42
43
44
45
# File 'app/models/comfy/cms/layout.rb', line 35

def self.options_for_select(site, layout = nil, current_layout = nil, depth = 0, spacer = '. . ')
  out = []
  [current_layout || site.layouts.roots].flatten.each do |l|
    next if layout == l
    out << [ "#{spacer*depth}#{l.label}", l.id ]
    l.children.each do |child|
      out += options_for_select(site, layout, child, depth + 1, spacer)
    end
  end
  return out.compact
end

Instance Method Details

#cache_busterObject



72
73
74
# File 'app/models/comfy/cms/layout.rb', line 72

def cache_buster
  updated_at.to_i
end

#merged_contentObject

– Instance Methods —————————————————– magical merging tag is cms:page:content If parent layout has this tag defined its content will be merged. If no such tag found, parent content is ignored.



59
60
61
62
63
64
65
66
67
68
69
70
# File 'app/models/comfy/cms/layout.rb', line 59

def merged_content
  if parent
    regex = /\{\{\s*cms:page:content:?(?:(?::text)|(?::rich_text))?\s*\}\}/
    if parent.merged_content.match(regex)
      parent.merged_content.gsub(regex, content.to_s)
    else
      content.to_s
    end
  else
    content.to_s
  end
end