From e00ec264090f463330c02933a3cae008a260c981 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Fri, 11 Jul 2014 21:06:23 +0800 Subject: [PATCH] book import complete with mobile page enable and disable --- app/controllers/admin/import_controller.rb | 40 ++++++++++++++++++++++ app/controllers/pages_controller.rb | 20 +++++------ app/controllers/sitemaps_controller.rb | 18 ++++++++-- app/helpers/application_helper.rb | 18 ++++++++-- app/models/page.rb | 17 +++++++-- app/views/admin/items/_node.html.erb | 2 +- app/views/pages/_form.html.erb | 6 ++++ config/routes.rb | 1 + 8 files changed, 102 insertions(+), 20 deletions(-) diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb index 9255158..e248042 100644 --- a/app/controllers/admin/import_controller.rb +++ b/app/controllers/admin/import_controller.rb @@ -682,6 +682,46 @@ class Admin::ImportController < OrbitAdminController render :json => {"success" => true}.to_json end + def import_books + uri = URI.parse("http://192.168.1.5/DEMO24_Manson/R2/export/?module=plugin&id=1&plugin=book") + http = Net::HTTP.new(uri.host, uri.port) + request = Net::HTTP::Get.new(uri.request_uri) + response = http.request(request) + data = response.body + data = JSON.parse(data) + books = data["books"] + member = MemberProfile.where(:rss2_id => "1").first + books.each do |book| + author_types = book["author_type"] + book_types = book["book_types"] + + new_book = Book.new(:book_title_translations => {"en" => book["book_title"]["en"], "zh_tw" => book["book_title"]["zh-tw"]}, :extracted_chapters_translations => {"en" => book["extracted_chapters"]["en"], "zh_tw" => book["extracted_chapters"]["zh-tw"]}, :publisher_translations => {"en" => book["publishers"]["en"], "zh_tw" => book["publishers"]["zh-tw"]}, :editor_translations => {"en" => book["editor"]["en"], "zh_tw" => book["editor"]["zh-tw"]}, :year => book["year"], :language => book["language"].sub("-","_"), :pages => book["number_of_pages"], :isbn => book["issn"], :publication_date => book["publication_date"], :url => book["reference_url"], :note => book["note"], :rss2_id => book["rss2_id"]) + new_book.member_profile = member + book_file = new_book.book_files.new + book_file.remote_member_book_file_url = book["file"]["file"] + book_file.title_translations = {"en" => book["file"]["name"], "zh_tw" => book["file"]["name"]} + book_file.save + author_types.each do |author| + bat = BookAuthorType.where(:title => author).first + if bat.nil? + bat = BookAuthorType.new(:title_translations => {"en" => author, "zh_tw" => author}) + bat.save + end + new_book.book_author_types << bat + end + book_types.each do |type| + bt = BookType.where(:title => type["zh-tw"]).first + if bt.nil? + bt = BookType.new(:title_translations => {"en" => type["en"], "zh_tw" => type["zh-tw"]}) + bt.save + end + new_book.book_type = bt + end + new_book.save + end + render :json => {"succes" => true}.to_json + end + private def page_present?(page) diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 30fa63a..25d09fc 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -32,13 +32,7 @@ class PagesController < ApplicationController impressionist(page) OrbitHelper.set_params params OrbitHelper.set_site_locale locale - final_page = render_final_page("home",page,true) - if session[:zh_cn] - final_page = ZhConv.convert("zh-cn", final_page) - final_page.gsub!('/zh_tw/','/zh_cn/') - final_page.sub!('繁体中文','繁体中文') - end - render :html => final_page.html_safe + render :html => render_final_page("home",page,true).html_safe end def show @@ -67,6 +61,10 @@ class PagesController < ApplicationController end page = Page.find_by_param(params[:page_id]) if !page.nil? + if !page.enabled_for_mobile && !$mobile.blank? + render :file => "#{Rails.root}/public/404.html", :layout => false, :status => :not_found + return + end if page.enabled_for.include? I18n.locale.to_s module_app = page.module.downcase.pluralize params[:target_controller] = "#{module_app}" @@ -304,15 +302,16 @@ class PagesController < ApplicationController page = Page.find(params[:page][:parent_page]) page.url = page.url == "/" ? "" : page.url @url = page.url + "/#{params[:page][:page_id]}" - p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, enabled_for_sitemap: [], enabled_for: [], menu_enabled_for: [], categories: [], name_translations: [:en, :zh_tw],external_url_translations: [:en, :zh_tw]) + p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, enabled_for_sitemap: [], enabled_for: [], menu_enabled_for: [], categories: [], name_translations: [:en, :zh_tw],external_url_translations: [:en, :zh_tw]) p["url"] = @url p end def page_update_params - p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, enabled_for_sitemap: [], enabled_for: [],menu_enabled_for: [], categories: [], name_translations: [:en, :zh_tw], external_url_translations: [:en, :zh_tw]) + p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, enabled_for_sitemap: [], enabled_for: [],menu_enabled_for: [], categories: [], name_translations: [:en, :zh_tw], external_url_translations: [:en, :zh_tw]) p["enabled_for"] = p["enabled_for"] || [] p["menu_enabled_for"] = p["menu_enabled_for"] || [] + p["enabled_for_mobile"] = p["enabled_for_mobile"] || 0 p end @@ -346,8 +345,7 @@ class PagesController < ApplicationController redirect_to '/admin/dashboards' end end - - private + def change_to_language(final_html) if session[:zh_cn] final_html = ZhConv.convert("zh-cn", final_html) diff --git a/app/controllers/sitemaps_controller.rb b/app/controllers/sitemaps_controller.rb index a34e230..243db1e 100644 --- a/app/controllers/sitemaps_controller.rb +++ b/app/controllers/sitemaps_controller.rb @@ -1,14 +1,26 @@ class SitemapsController < ApplicationController def index - pages = Page.root.child_pages_enabled_for_sitemap + if $mobile.blank? + pages = Page.root.child_pages_enabled_for_sitemap + else + pages = Page.root.child_pages_enabled_for_sitemap_for_mobile + end def create_json(pages) item = {} pages.each do |page| if page.child_page.size > 0 if page.page_type == "page" - item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages), "target"=>"_self"} + if $mobile.blank? + item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages), "target"=>"_self"} + else + item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target"=>"_self"} + end else - item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target"=>"_blank"} + if $mobile.blank? + item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target"=>"_blank"} + else + item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target"=>"_blank"} + end end else if page.page_type == "page" diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index da1ab52..5abd85e 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -73,16 +73,28 @@ module ApplicationHelper def render_menu # json_file = File.read(File.join(Rails.root, 'public', "menu.json")) # @items = JSON.parse(json_file) - @pages = Page.root.sorted_published_child_pages + if $mobile.blank? + @pages = Page.root.sorted_published_child_pages + else + @pages = Page.root.sorted_published_child_pages_for_mobile + end def create_json(pages) item = {} pages.each do |page| if page.child_page.size > 0 if page.page_type == "page" - item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_self"} + if $mobile.blank? + item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_self"} + else + item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => "_self"} + end elsif page.page_type == "link" - item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_blank"} + if $mobile.blank? + item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_blank"} + else + item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => "_blank"} + end end else if page.page_type == "page" diff --git a/app/models/page.rb b/app/models/page.rb index e6f781c..71caeda 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -13,6 +13,7 @@ class Page field :layout, type: String, default: "index" field :data_count, type: Integer, default: 10 field :enabled_for, type: Array, default: [] + field :enabled_for_mobile, :type => Boolean, :default => true field :menu_enabled_for, type: Array, default: [] field :categories, type: Array, :default => [] field :enabled_for_sitemap, type: Array, :default => [] @@ -46,11 +47,23 @@ class Page self.child_page.where(:menu_enabled_for => I18n.locale).asc(:number) end + def sorted_published_child_pages_for_mobile + self.child_page.where(:menu_enabled_for => I18n.locale).and(:enabled_for_mobile => true).asc(:number) + end + def child_pages_enabled_for_sitemap - self.child_page.where(:enabled_for_sitemap => I18n.locale) + self.child_page.where(:enabled_for_sitemap => I18n.locale).asc(:number) + end + + def child_pages_enabled_for_sitemap_for_mobile + self.child_page.where(:enabled_for_sitemap => I18n.locale).and(:enabled_for_mobile => true).asc(:number) end def published_child_pages - self.child_page.where(:menu_enabled_for => I18n.locale) + self.child_page.where(:menu_enabled_for => I18n.locale).asc(:number) + end + + def published_child_pages_for_mobile + self.child_page.where(:menu_enabled_for => I18n.locale).and(:enabled_for_mobile => true).asc(:number) end end \ No newline at end of file diff --git a/app/views/admin/items/_node.html.erb b/app/views/admin/items/_node.html.erb index d1f6ad2..a92d6f5 100644 --- a/app/views/admin/items/_node.html.erb +++ b/app/views/admin/items/_node.html.erb @@ -19,7 +19,7 @@ <% end %>
<%= link_to content_tag(:i, nil, class: "icon-eye-open"), pages_edit_view_path(:id => node.id.to_s), class: "view-page open-slide tip", title: "View", data: {title: node.name} if node.page_type.eql?('page') %> - <%= link_to content_tag(:i, nil, class: "icons-mobile"), pages_edit_view_path(:id => node.id.to_s, :mobile_view=>1), class: "view-page open-slide tip mobile-view-btn", title: "Edit Mobile Page", data: {title: "Edit Mobile Page"} if node.page_type.eql?("page") && current_site.mobile_on%> + <%= link_to content_tag(:i, nil, class: "icons-mobile"), pages_edit_view_path(:id => node.id.to_s, :mobile_view=>1), class: "view-page open-slide tip mobile-view-btn", title: "Edit Mobile Page", data: {title: "Edit Mobile Page"} if node.page_type.eql?("page") && current_site.mobile_on && node.enabled_for_mobile %> <% unless name.eql? "sitemap" %> <%= link_to content_tag(:i, nil, class: "icon-edit"), edit_page_path(node.id,:type => node.page_type), class: "open-slide tip page edit", title: "Edit #{node.page_type.capitalize}", data: {title: "Edit #{node.page_type.capitalize}"} if node.class.to_s.downcase.eql?("page") && !node.root? %> <%= link_to content_tag(:i, nil, class: "icons-link"), new_page_path(:parent_page => node.id.to_s,:type => "link"), class: "open-slide tip link", title: "Add Link", data: {title: "Add Link", id: 'new', parent: node.id.to_s} if node.class.to_s.eql?('Page') && level < 3 %> diff --git a/app/views/pages/_form.html.erb b/app/views/pages/_form.html.erb index dbbb859..c0c33ec 100644 --- a/app/views/pages/_form.html.erb +++ b/app/views/pages/_form.html.erb @@ -93,6 +93,12 @@ <% end %>
+
+ +
diff --git a/config/routes.rb b/config/routes.rb index 8055990..65da508 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -223,6 +223,7 @@ Orbit::Application.routes.draw do post "import/rss2_album_image" => "import#rss2_album_image" post "import/rss2_links" => "import#rss2_links" post "import/rss2_members" => "import#rss2_members" + get "import/import_books" => "import#import_books" end get 'mobile', to: 'pages#home'