From e3b25c1ae5ebcab98d1aa3d74ac56bc780837005 Mon Sep 17 00:00:00 2001 From: Manson Wang Date: Tue, 1 Apr 2014 16:37:43 +0800 Subject: [PATCH] Fix routes and url schema and UTF-8 --- .gitignore | 2 ++ Gemfile | 4 ++-- app/controllers/pages_controller.rb | 22 +++++++--------------- app/helpers/application_helper.rb | 8 ++++---- app/helpers/orbit_helper.rb | 2 +- app/helpers/pages_helper.rb | 4 ++-- config/routes.rb | 6 +----- 7 files changed, 19 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index 6a502e9..5112e49 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ # Ignore all logfiles and tempfiles. /log/*.log /tmp + +/Gemfile.lock diff --git a/Gemfile b/Gemfile index 807b315..c382961 100644 --- a/Gemfile +++ b/Gemfile @@ -14,7 +14,7 @@ gem 'uglifier', '>= 1.3.0' # Use CoffeeScript for .js.coffee assets and views gem 'coffee-rails', '~> 4.0.0' -gem 'announcement', path: '/Volumes/MyData/github/orbit4.5/announcement' +gem 'announcement', git: 'git@gitlab.tp.rulingcom.com:saurabh/announcement-test.git' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', platforms: :ruby @@ -43,4 +43,4 @@ end # gem 'capistrano', group: :development # Use debugger -gem 'debugger', group: [:development, :test] +gem 'debugger', '>= 1.6.6', group: [:development, :test] diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 4788d04..29c035a 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -17,29 +17,21 @@ class PagesController < ApplicationController end def show - page = Page.find_by_param(params[:page_id]) rescue nil + page = Page.find_by_param(params[:page_id]) module_app = page.module.downcase.pluralize params[:target_controller] = "#{module_app}" @manifest = @key @dataApi = nil - OrbitHelper.set_params params - OrbitHelper.set_site_locale locale + if params[:slug] + params[:target_action] = "show" + params[:uid] = params[:slug].split("-").last + else params[:target_action] = "index" params[:url] = page.url - render render_final_page("#{module_app}/show",page) end - - def moduleShow - page = Page.find_by_param(params[:page_id]) - params[:target_action] = "show" - params[:uid] = params[:uid] - module_app = page.module.downcase.pluralize - params[:target_controller] = "#{module_app}" - @manifest = @key - @dataApi = nil OrbitHelper.set_params params OrbitHelper.set_site_locale locale - render render_final_page("#{module_app}/show",page) + render render_final_page("#{module_app}/#{params[:target_action]}",page) end def preview @@ -82,7 +74,7 @@ class PagesController < ApplicationController @layout_html = nil @file = File.join('../templates', "#{@key}", '/home/page.html.erb') @layout_html = render_to_string(@file) - doc = Nokogiri::HTML(@layout_html) + doc = Nokogiri::HTML(@layout_html, nil, "UTF-8") @part_partials.each do |key, partial| html_string = "" diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index b487258..6f248a8 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -32,7 +32,7 @@ module ApplicationHelper key = Template::KEY menu_file = File.open(File.join(Rails.root, 'app', 'templates', "#{key}", '/home/menu.html.erb')) - doc = Nokogiri::HTML(menu_file) + doc = Nokogiri::HTML(menu_file, nil, "UTF-8") menu_file.close temp = [] @@ -50,7 +50,7 @@ module ApplicationHelper temp.each_with_index do |menu,i| - t = Nokogiri::HTML(menu) + t = Nokogiri::HTML(menu, nil, "UTF-8") a = t.css("*[data-menu-link='true']") a[0]["href"] = "href_here" li = t.css("*[data-menu-level='#{i}'] > *") @@ -83,7 +83,7 @@ module ApplicationHelper def render_view if params[:target_action] == "index" file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller], "#{params[:target_action]}.html.erb")) - doc = Nokogiri::HTML(file) + doc = Nokogiri::HTML(file, nil, "UTF-8") file.close wrap_elements = doc.css("*[data-module]") controller = "#{params[:target_controller].capitalize}Controller".classify.constantize.new @@ -103,7 +103,7 @@ module ApplicationHelper doc.to_s.html_safe elsif params[:target_action] == "show" file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller], "#{params[:target_action]}.html.erb")) - doc = Nokogiri::HTML(file) + doc = Nokogiri::HTML(file, nil, "UTF-8") file.close wrap_element_html = doc.to_s html_to_render = "" diff --git a/app/helpers/orbit_helper.rb b/app/helpers/orbit_helper.rb index 5b17191..7e351e0 100644 --- a/app/helpers/orbit_helper.rb +++ b/app/helpers/orbit_helper.rb @@ -8,7 +8,7 @@ module OrbitHelper end def self.url_to_show(uid,title) - "/#{self.get_site_locale.to_s}#{@params[:url]}/#{uid}/#{title.parameterize}" + "/#{self.get_site_locale.to_s}#{@params[:url]}/#{title}--#{uid}" end def self.set_site_locale(locale) diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb index 3c5053a..2d6bad6 100644 --- a/app/helpers/pages_helper.rb +++ b/app/helpers/pages_helper.rb @@ -2,7 +2,7 @@ module PagesHelper def parse_pp_tags(file) opened_file = File.open(file) - doc = Nokogiri::HTML(opened_file) + doc = Nokogiri::HTML(opened_file, nil, "UTF-8") opened_file.close pps = doc.css("*[data-pp]") pps.each do |pp| @@ -13,7 +13,7 @@ module PagesHelper def render_widget_for_frontend(controller_name, widget_method, widget_file) file = File.open(File.join(Rails.root, 'app', 'templates', "#{Template::KEY}", 'modules', "#{controller_name}", "_#{widget_file}.html.erb")) - doc = Nokogiri::HTML(file) + doc = Nokogiri::HTML(file, nil, "UTF-8") file.close wrap_elements = doc.css("*[data-repeat]") controller = "#{controller_name.capitalize}Controller".classify.constantize.new diff --git a/config/routes.rb b/config/routes.rb index 096de3e..33b0129 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,11 +18,7 @@ OrbitStore::Application.routes.draw do # You can have the root of your site routed with "root" root 'home#index' scope "(:locale)", locale: /en|zh_tw/ do - - get ':page_id(/:page_id(/:page_id))', to: 'pages#show' - get ':page_id(/:uid(/:slug))', to: 'pages#moduleShow' - get ':page_id(/:page_id(/:uid(/:slug)))', to: 'pages#moduleShow' - get ':page_id(/:page_id(/:page_id(/:uid(/:slug))))', to: 'pages#moduleShow' + get ':page_id(/:page_id((/:page_id)/:slug))', to: 'pages#show' resources :pages end # Example of regular route: