Trying nokogiri

This commit is contained in:
Christophe Vilayphiou committed 2012-03-27 18:42:22 +08:00
1 parent f9c5ee5d18
commit f5fd3dec7a
10 files changed
+172 -75

No files matched your search

+1 -1
View File
@@ -47,7 +47,7 @@ class ApplicationController < ActionController::Base
# Render the page
def render_page(id = nil)
if @item
render :text => parse_page(@item, id)
render :text => process_page(@item, id), :layout => 'page_layout'
else
render :text => '404 Not Found'
end
+2
View File
@@ -1,5 +1,7 @@
class PagesController < ApplicationController
include ApplicationHelper
before_filter :get_item, :only => [:index_from_link, :show_from_link]
def index
+47
View File
@@ -107,4 +107,51 @@ module ApplicationHelper
end
end
def process_page(page, id)
parse_page_noko(page, id)
end
def page_metas(page)
metas = ''
@site.page_metas.each do |meta|
name, content = meta.get_name_content
metas << "<meta name=#{name} content=#{content} />\n"
end rescue nil
return metas
end
def page_title(page)
"<title>#{page.title ? page.title[I18n.locale] : page.i18n_variable[I18n.locale]}</title>\n"
end
def page_stylesheets(page)
stylesheets = ''
stylesheets << "<link href='/assets/bootstrap.css.erb' rel='stylesheet' type='text/css' />\n"
stylesheets << "<link href='/assets/bootstrap-orbit.css' rel='stylesheet' type='text/css' />\n"
stylesheets << "<link href='/assets/style.css.erb' rel='stylesheet' type='text/css' />\n"
stylesheets << "<link href='#{page.design.reset_css.file.url}' rel='stylesheet' type='text/css' />\n" if page.design.reset_css
stylesheets << "<link href='#{page.design.default_css.file.url}' rel='stylesheet' type='text/css' />\n" if page.design.default_css
theme = page.design.themes.detect{ |d| d.id == page.theme_id }
stylesheets << "<link href='#{theme.file.url}' rel='stylesheet' type='text/css' />\n" if theme
stylesheets
end
def page_javascripts(page)
javascripts = ''
javascripts << "<script type='text/javascript' src='/static/jquery.js'></script>\n"
javascripts << "<script type='text/javascript' src='/static/jquery.cycle.all.latest.js'></script>\n"
javascripts << "<script type='text/javascript' src='/static/kernel.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/bootstrap.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/jquery.tinyscrollbar.min.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/jquery.isotope.min.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/orbit-1.0.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/orbit_bar.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n"
page.design.javascripts.each do |js|
# javascripts << "<script type='text/javascript' src='#{js.file.url}'></script>"
end
javascripts
end
end
+6 -2
View File
@@ -2,6 +2,8 @@ class Layout < DesignFile
include ParserLayout
attr_reader :content
field :body
embeds_one :menu
embedded_in :design
@@ -17,8 +19,10 @@ class Layout < DesignFile
Layout.count > 0
end
def parse_layout
parse_layout_contents(self)
def parse_layout
html = Nokogiri::HTML(self.file.read)
self.body = html.at_css("body").inner_html
parse_body(self)
end
end
+4
View File
@@ -7,5 +7,9 @@ class Meta
field :value, :default => nil
has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy
def get_name_content
[self.key, self.value ? self.value : self.i18n_variable[I18n.locale]]
end
end
+17
View File
@@ -0,0 +1,17 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<%= page_title(@item).html_safe %>
<%= page_metas(@item).html_safe %>
<%= @metas %>
<!--[if lt IE 9]>
<%= javascript_include_tag "html5" %>
<![endif]-->
<%= page_stylesheets(@item).html_safe %>
<%= page_javascripts(@item).html_safe %>
</head>
<body>
<%= yield %>
</body>
</html>