Class: Merbiful::Controller

Inherits:
Merb::Controller
  • Object
show all
Defined in:
lib/merbiful-release/controller.rb

Defined Under Namespace

Classes: MissingCssError, MissingJsError, MissingLayoutError, MissingPageError

Instance Method Summary collapse

Instance Method Details

#css(id) ⇒ Object

Raises:



22
23
24
25
26
27
# File 'lib/merbiful-release/controller.rb', line 22

def css(id)
  css_version = Css::Version.get(id)
  raise MissingCssError.new(id) unless css_version
  headers["Content-Type"] = "text/css"
  css_version.render(self, css_version.css.path => css_version.css.cached)
end

#js(id) ⇒ Object

Raises:



29
30
31
32
33
34
# File 'lib/merbiful-release/controller.rb', line 29

def js(id)
  js_version = Js::Version.get(id)
  raise MissingJsError.new(id) unless js_version
  headers["Content-Type"] = "text/javascript"
  js_version.render(self, js_version.js.path => js_version.js.cached)
end

#page(what) ⇒ Object

Raises:

  • (NotFound)


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/merbiful-release/controller.rb', line 36

def page(what)
  @page = Page.first(:path => what)
  raise NotFound.new(what.inspect) unless @page
  unless @page.jses.empty?
    throw_content(:for_js, @page.jses.inject([]) do |sum, frozen_js|
                    js = Js.get(frozen_js.id)
                    sum << "<script src='#{js.path}' type='text/javascript'></script>"
                  end.join("\n"))
  end
  unless @page.csses.empty?
    throw_content(:for_css, @page.csses.inject([]) do |sum, frozen_css|
                    css = Css.get(frozen_css.id)
                    sum << "<link href='#{css.path}' #{css.media.blank? ? "" : "media='#{css.media}' "}rel='Stylesheet' type='text/css' />"
                  end.join("\n"))
  end
  if @page.layout
    throw_content :for_layout, @page.render(self)
    @page.layout.render(self, @page.path => @page.cached)
  else
    @page.render(self, @page.path => @page.cached)
  end
end

#rootObject



18
19
20
# File 'lib/merbiful-release/controller.rb', line 18

def root
  Page.root
end