book import complete with mobile page enable and disable

This commit is contained in:
Harry Bomrah 2014-07-11 21:06:23 +08:00
parent e94ee50674
commit e00ec26409
8 changed files with 102 additions and 20 deletions

View File

@ -682,6 +682,46 @@ class Admin::ImportController < OrbitAdminController
render :json => {"success" => true}.to_json render :json => {"success" => true}.to_json
end 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 private
def page_present?(page) def page_present?(page)

View File

@ -32,13 +32,7 @@ class PagesController < ApplicationController
impressionist(page) impressionist(page)
OrbitHelper.set_params params OrbitHelper.set_params params
OrbitHelper.set_site_locale locale OrbitHelper.set_site_locale locale
final_page = render_final_page("home",page,true) render :html => render_final_page("home",page,true).html_safe
if session[:zh_cn]
final_page = ZhConv.convert("zh-cn", final_page)
final_page.gsub!('/zh_tw/','/zh_cn/')
final_page.sub!('<a href="/zh_cn/news">繁体中文</a>','<a href="/zh_tw/news">繁体中文</a>')
end
render :html => final_page.html_safe
end end
def show def show
@ -67,6 +61,10 @@ class PagesController < ApplicationController
end end
page = Page.find_by_param(params[:page_id]) page = Page.find_by_param(params[:page_id])
if !page.nil? 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 if page.enabled_for.include? I18n.locale.to_s
module_app = page.module.downcase.pluralize module_app = page.module.downcase.pluralize
params[:target_controller] = "#{module_app}" params[:target_controller] = "#{module_app}"
@ -304,15 +302,16 @@ class PagesController < ApplicationController
page = Page.find(params[:page][:parent_page]) page = Page.find(params[:page][:parent_page])
page.url = page.url == "/" ? "" : page.url page.url = page.url == "/" ? "" : page.url
@url = page.url + "/#{params[:page][:page_id]}" @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["url"] = @url
p p
end end
def page_update_params 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["enabled_for"] = p["enabled_for"] || []
p["menu_enabled_for"] = p["menu_enabled_for"] || [] p["menu_enabled_for"] = p["menu_enabled_for"] || []
p["enabled_for_mobile"] = p["enabled_for_mobile"] || 0
p p
end end
@ -346,8 +345,7 @@ class PagesController < ApplicationController
redirect_to '/admin/dashboards' redirect_to '/admin/dashboards'
end end
end end
private
def change_to_language(final_html) def change_to_language(final_html)
if session[:zh_cn] if session[:zh_cn]
final_html = ZhConv.convert("zh-cn", final_html) final_html = ZhConv.convert("zh-cn", final_html)

View File

@ -1,14 +1,26 @@
class SitemapsController < ApplicationController class SitemapsController < ApplicationController
def index 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) def create_json(pages)
item = {} item = {}
pages.each do |page| pages.each do |page|
if page.child_page.size > 0 if page.child_page.size > 0
if page.page_type == "page" 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 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 end
else else
if page.page_type == "page" if page.page_type == "page"

View File

@ -73,16 +73,28 @@ module ApplicationHelper
def render_menu def render_menu
# json_file = File.read(File.join(Rails.root, 'public', "menu.json")) # json_file = File.read(File.join(Rails.root, 'public', "menu.json"))
# @items = JSON.parse(json_file) # @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) def create_json(pages)
item = {} item = {}
pages.each do |page| pages.each do |page|
if page.child_page.size > 0 if page.child_page.size > 0
if page.page_type == "page" 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" 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 end
else else
if page.page_type == "page" if page.page_type == "page"

View File

@ -13,6 +13,7 @@ class Page
field :layout, type: String, default: "index" field :layout, type: String, default: "index"
field :data_count, type: Integer, default: 10 field :data_count, type: Integer, default: 10
field :enabled_for, type: Array, default: [] field :enabled_for, type: Array, default: []
field :enabled_for_mobile, :type => Boolean, :default => true
field :menu_enabled_for, type: Array, default: [] field :menu_enabled_for, type: Array, default: []
field :categories, type: Array, :default => [] field :categories, type: Array, :default => []
field :enabled_for_sitemap, 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) self.child_page.where(:menu_enabled_for => I18n.locale).asc(:number)
end 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 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 end
def published_child_pages 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
end end

View File

@ -19,7 +19,7 @@
<% end %> <% end %>
<div class="item-menu"> <div class="item-menu">
<%= 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: "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" %> <% 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: "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 %> <%= 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 %>

View File

@ -93,6 +93,12 @@
<% end %> <% end %>
</div> </div>
</div> </div>
<div class="control-group">
<label class="checkbox">
Enable for mobile
<input type="checkbox" name="page[enabled_for_mobile]" value="1" class="main-enable-parent" for="<%= "checkbox_for_enabled_for_mobile" %>" <%= "checked" if @page.enabled_for_mobile %> />
</label>
</div>
<div class="control-group" id="enable-menu"> <div class="control-group" id="enable-menu">
<div class="controls"> <div class="controls">
<label class="control-label">Activation :</label> <label class="control-label">Activation :</label>

View File

@ -223,6 +223,7 @@ Orbit::Application.routes.draw do
post "import/rss2_album_image" => "import#rss2_album_image" post "import/rss2_album_image" => "import#rss2_album_image"
post "import/rss2_links" => "import#rss2_links" post "import/rss2_links" => "import#rss2_links"
post "import/rss2_members" => "import#rss2_members" post "import/rss2_members" => "import#rss2_members"
get "import/import_books" => "import#import_books"
end end
get 'mobile', to: 'pages#home' get 'mobile', to: 'pages#home'