From 8b8eff6920ca7112b18e147d3ae7bf812ca986f1 Mon Sep 17 00:00:00 2001 From: chris Date: Tue, 22 Feb 2011 16:00:13 +0800 Subject: [PATCH] replace Liquid by Radius --- Gemfile | 1 - Gemfile.lock | 2 -- app/controllers/application_controller.rb | 39 +++++++++++++++++++---- app/controllers/pages_controller.rb | 4 +-- app/models/i18n_liquid.rb | 13 -------- app/models/snippet_filter.rb | 27 ---------------- lib/snippets/language_bar.snippet | 8 ----- vendor/plugins/radius | 1 + 8 files changed, 36 insertions(+), 59 deletions(-) delete mode 100644 app/models/i18n_liquid.rb delete mode 100644 app/models/snippet_filter.rb delete mode 100644 lib/snippets/language_bar.snippet create mode 160000 vendor/plugins/radius diff --git a/Gemfile b/Gemfile index 649a6c81..c47d4426 100644 --- a/Gemfile +++ b/Gemfile @@ -5,7 +5,6 @@ gem 'rails', '3.0.3' gem 'bson_ext' gem 'carrierwave' gem 'devise' -gem 'liquid' gem 'mini_magick' gem 'mongoid', '2.0.0.rc.6' diff --git a/Gemfile.lock b/Gemfile.lock index 2b2470f6..468e7db2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -41,7 +41,6 @@ GEM erubis (2.6.6) abstract (>= 1.0.0) i18n (0.5.0) - liquid (2.2.2) mail (2.2.15) activesupport (>= 2.3.6) i18n (>= 0.4.0) @@ -93,7 +92,6 @@ DEPENDENCIES bson_ext carrierwave devise - liquid mini_magick mongoid (= 2.0.0.rc.6) rails (= 3.0.3) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d3246e9a..393adec4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -36,14 +36,41 @@ class ApplicationController < ActionController::Base redirect_to root_url unless current_user.admin? end - # Parse and render the pages with liquid - def render_liquid_page + # Parse and render the pages with Radius + def render_page if @page @layout = @page.layout - @page_options ||= {} - @page_content = Liquid::Template.parse( @page.content ).render(@page_options) - @layout_content = (@page.layout)? @layout.content : "{{page_content}}" - render :text => Liquid::Template.parse(@layout_content).render( 'page_content' => @page_content ) + @page_content = @page.content + @layout_content = (@page.layout)? @layout.content : "" + + + context = Radius::Context.new do |c| + c.define_tag 'content' do |tag| + @page_content + end + c.define_tag 'snippet' do |tag| + snippet = Snippet.first(:conditions => {:name => tag.attr['name']}) + if snippet + snippet.content + else + t('nothing') + end + end + c.define_tag 'language_bar' do + @site_in_use_locales.map{ |locale| + lang = I18nVariable.first(:conditions => {:key => locale})[locale] + if I18n.locale.to_s.eql?(locale) + lang + else + "#{lang}" + end + }.join(' | ') + end + end + + parser = Radius::Parser.new(context, :tag_prefix => 'r') + + render :text => parser.parse(@layout_content) else render :text => '404 Not Found' end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 8f68e216..19c69d38 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -3,7 +3,7 @@ class PagesController < ApplicationController def index @page = Home.find_by_name('home') if @page - render_liquid_page + render_page else render :text => 'You need a home page' end @@ -15,7 +15,7 @@ class PagesController < ApplicationController case item._type when 'Page' @page = item - render_liquid_page + render_page when 'Link' redirect_to "http://#{item[:url]}" end diff --git a/app/models/i18n_liquid.rb b/app/models/i18n_liquid.rb deleted file mode 100644 index 10a91178..00000000 --- a/app/models/i18n_liquid.rb +++ /dev/null @@ -1,13 +0,0 @@ -class I18nLiquid < Liquid::Tag - - def initialize(tag_name, value, tokens) - super - @value = value.to_s - end - - def render(context) - I18nVariable.first(:conditions => {:key => @value})[I18n.locale] rescue '' - end -end - -Liquid::Template.register_tag('t', I18nLiquid) diff --git a/app/models/snippet_filter.rb b/app/models/snippet_filter.rb deleted file mode 100644 index e085e7c4..00000000 --- a/app/models/snippet_filter.rb +++ /dev/null @@ -1,27 +0,0 @@ -module SnippetFilter - - def render_snippet(snippet_name) - - snippet = Snippet.first(:conditions => {:name => snippet_name}) - - if snippet - return Liquid::Template.parse( snippet.content ).render - else - return t('nothing') - end - - end - - def ruling_snippet(snippet_name) - case snippet_name - when 'language_bar' - site = Site.first - @site_in_use_locales = site.in_use_locales - @site_valid_locales = site.valid_locales - end - return Liquid::Template.parse( eval(File.open("#{RAILS_ROOT}/lib/snippets/#{snippet_name}.snippet").read) ).render - end - -end - -Liquid::Template.register_filter(SnippetFilter) diff --git a/lib/snippets/language_bar.snippet b/lib/snippets/language_bar.snippet deleted file mode 100644 index c4161352..00000000 --- a/lib/snippets/language_bar.snippet +++ /dev/null @@ -1,8 +0,0 @@ -@site_in_use_locales.map{ |locale| - lang = I18nVariable.first(:conditions => {:key => locale})[locale] - if I18n.locale.to_s.eql?(locale) - lang - else - "#{lang}" - end -}.join(' | ') diff --git a/vendor/plugins/radius b/vendor/plugins/radius new file mode 160000 index 00000000..d312e319 --- /dev/null +++ b/vendor/plugins/radius @@ -0,0 +1 @@ +Subproject commit d312e31954c3dfa5711b06267d79b9ea11c5f059