fixed widget text image insert problem with chinese and also page import is changed to per page

This commit is contained in:
Harry Bomrah 2014-09-17 17:25:47 +08:00
parent b94f3ca2a1
commit e558b916fe
4 changed files with 110 additions and 113 deletions

View File

@ -41,11 +41,13 @@ $(document).ready(function(){
t = getUrlParam('CKEditor').split("_"),
language = t[t.length-1];
language = (language == "tw" ? "zh_tw" : language);
language = decodeURIComponent(language);
language = (language == "tw" || language == "tw]" ? "zh_tw" : language);
if(language.endsWith("]")){
var re = ("\\[(.*)]"),
matches = language.match(re);
console.log(matches)
if(matches){
language = matches[1];
}

View File

@ -187,82 +187,71 @@ class Admin::ImportController < OrbitAdminController
bulletin.save!
end
def rss2_pages
delete_import_file
def rss2_pages_info
uri = URI.parse(params['url'])
# @@thread = Thread.new do
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)
pages = data["pages"]
@@import_stats["total_pages"] = data["total_pages"].to_i
@@import_stats["current_status"] = 0
@@import_stats["success"] = true
write_to_file
pages.each do |page|
@@import_stats["current_page"] = page["page_id"]
@@import_stats["current_page_name"] = page["title"]["zh_tw"]
write_to_file
if Page.where(:rss2_id => page["page_id"]).count == 0
page_id = page["page_id"]
number = 0
while page_present?page_id
page_id = page_id + "_" + (number + 1).to_s
end
p = Page.new(:page_id => page_id, :parent_page_id => Page.root.id, :page_type => "page", :url => "/#{page_id}", :module => "page_content", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>page["title"]["en"], "zh_tw" => page["title"]["zh_tw"]},:rss2_id => page["page_id"])
p.save
en = smart_downloader(page["content"]["en"],data["site_url"])
zh_tw = smart_downloader(page["content"]["zh_tw"],data["site_url"])
page_context = PageContext.new(:content_translations => {"en" => en,"zh_tw" => zh_tw}, :version => 1, :update_user_id => current_user.id, :page_id => p.id)
page_context.save
else
p = Page.find_by(:rss2_id => page["page_id"])
page_id = p.page_id
end
@@import_stats["current_status"] = @@import_stats["current_status"] + 1
write_to_file
if !page["childpages"].blank?
childpages = page["childpages"]
childpages.each_with_index do |childpage,i|
@@import_stats["current_page"] = childpage["page_id"]
@@import_stats["current_page_name"] = page["title"]["zh_tw"]
write_to_file
if Page.where(:rss2_id => childpage["page_id"]).count == 0
p_id = page_id + "_" + i.to_s
case childpage["type"]
when "page"
cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "page", :url => "/#{p.page_id}/#{p_id}", :module => "page_content", "enabled_for" => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]},:rss2_id => childpage["page_id"])
cp.save
en = smart_downloader(childpage["content"]["en"],data["site_url"])
zh_tw = smart_downloader(childpage["content"]["zh_tw"],data["site_url"])
page_context = PageContext.new(:content_translations => {"en" => en,"zh_tw" => zh_tw}, :version => 1, :update_user_id => current_user.id, :page_id => cp.id)
page_context.save
when "exturl"
cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "link", "url" => "/#{p.page_id}/#{p_id}", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]}, :external_url_translations => {"en" => childpage["url"], "zh_tw" => childpage["url"]},:rss2_id => childpage["page_id"])
cp.save
when "file"
asset = Asset.new
asset.remote_data_url = childpage["filename"]
asset.title_translations = {"en" => childpage["file_title"], "zh_tw" =>childpage["file_title"]}
asset.save!
@user.assets << asset
@user.save
external_url = asset.data.url
cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "link", "url" => "/#{p.page_id}/#{p_id}", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]}, :external_url_translations => {"en" => external_url, "zh_tw" => external_url},:rss2_id => childpage["page_id"])
cp.save
end
end
@@import_stats["current_status"] = @@import_stats["current_status"] + 1
write_to_file
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)
render :json => {"success" => true, "pages" => data["pages"], "total_pages" => data["totalpages"]}.to_json
end
def rss2_pages
uri = URI.parse(params['url'])
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)
page = data["page"]
if Page.where(:rss2_id => page["page_id"]).count == 0
page_id = page["page_id"]
number = 0
while page_present?page_id
page_id = page_id + "_" + (number + 1).to_s
end
p = Page.new(:page_id => page_id, :parent_page_id => Page.root.id, :page_type => "page", :url => "/#{page_id}", :module => "page_content", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>page["title"]["en"], "zh_tw" => page["title"]["zh_tw"]},:rss2_id => page["page_id"])
p.save
en = smart_downloader(page["content"]["en"],data["site_url"])
zh_tw = smart_downloader(page["content"]["zh_tw"],data["site_url"])
page_context = PageContext.new(:content_translations => {"en" => en,"zh_tw" => zh_tw}, :version => 1, :update_user_id => current_user.id, :page_id => p.id)
page_context.save
else
p = Page.find_by(:rss2_id => page["page_id"])
page_id = p.page_id
end
if !page["childpages"].blank?
childpages = page["childpages"]
childpages.each_with_index do |childpage,i|
if Page.where(:rss2_id => childpage["page_id"]).count == 0
p_id = page_id + "_" + i.to_s
case childpage["type"]
when "page"
cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "page", :url => "/#{p.page_id}/#{p_id}", :module => "page_content", "enabled_for" => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]},:rss2_id => childpage["page_id"])
cp.save
en = smart_downloader(childpage["content"]["en"],data["site_url"])
zh_tw = smart_downloader(childpage["content"]["zh_tw"],data["site_url"])
page_context = PageContext.new(:content_translations => {"en" => en,"zh_tw" => zh_tw}, :version => 1, :update_user_id => current_user.id, :page_id => cp.id)
page_context.save
when "exturl"
cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "link", "url" => "/#{p.page_id}/#{p_id}", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]}, :external_url_translations => {"en" => childpage["url"], "zh_tw" => childpage["url"]},:rss2_id => childpage["page_id"])
cp.save
when "file"
asset = Asset.new
asset.remote_data_url = childpage["filename"]
asset.title_translations = {"en" => childpage["file_title"], "zh_tw" =>childpage["file_title"]}
asset.save!
@user.assets << asset
@user.save
external_url = asset.data.url
cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "link", "url" => "/#{p.page_id}/#{p_id}", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]}, :external_url_translations => {"en" => external_url, "zh_tw" => external_url},:rss2_id => childpage["page_id"])
cp.save
end
end
end
# end
# @@thread.join
# @@thread.abort_on_exception = true
end
render :json => {"success"=>true}.to_json
end

View File

@ -189,7 +189,8 @@
$("#import-start-btn").click(function(){
switch(module){
case "pages":
importPages();
$(this).fadeOut();
getPagesInfo();
break;
case "gallery":
importGallery();
@ -213,21 +214,56 @@
});
});
var importPages = function(){
var pagesData = null;
var getPagesInfo = function(){
$("#import-progress .bar").css('width','0%');
$("#import-progress-text").html("Importing Pages...<br/>");
$.ajax({
type: "post",
type: "get",
dataType: "json",
url: '<%= admin_import_rss2_pages_path %>',
url: '<%= admin_import_rss2_pages_info_path %>',
data : {"url" : url+'?module='+module}
}).done(function(){
}).done(function(data){
if(data.success){
pagesData = data.pages;
importPage(0);
}
}).fail(function(){
$("#import-progress-text").html("Importing failed, click on start to try again.");
$("#alert-msg").text("There was an unknown error");
$(".alert-danger").removeClass("hide").show();
})
startCheckingImportStatus();
}
var importPage = function(number){
var current_page = pagesData[number];
$.ajax({
type : "get",
dataType : "json",
data : {"url" : url+'?module=' + module + "&page_id=" + current_page.ID},
url : "<%= admin_import_rss2_pages_path %>"
}).done(function(status){
if(status.success == true){
var percent = ((number + 1) * 100) / pagesData.length;
$("#import-progress .bar").css('width',percent + "%");
$("#import-progress-text").html("Importing page " + current_page.ID + "<br/>");
if((number + 1) < pagesData.length){
importPage(number + 1);
}else{
$("#import-progress .bar").css('width',"100%");
$("#import-progress-text").html("Finished importing pages.");
}
}
}).fail(function(){
$("#alert-msg").append("Error importing page " + current_page.ID + "<br />");
$(".alert-danger").removeClass("hide").show();
if((number + 1) < pagesData.length){
importPage(number + 1);
}else{
$("#import-progress .bar").css('width',"100%");
$("#import-progress-text").html("Finished importing pages.");
}
})
}
var importLinks = function(){
@ -490,38 +526,7 @@
})
}
var startCheckingImportStatus = function(){
$.ajax({
type : "get",
dataType : "json",
data : {"module" : module},
url : "<%= admin_import_get_import_status_path %>"
}).done(function(status){
if(status.success == true){
if(status.total_pages != null){
var percent = (status.current_status * 100) / status.total_pages;
$("#import-progress .bar").css('width',percent + "%");
$("#import-progress-text").html("Importing page " + status.current_page_name + " .. " + status.current_status + "/" + status.total_pages + "<br/>");
}
if(status.total_pages != status.current_status){
setTimeout("startCheckingImportStatus()",700);
}else{
if(status.total_pages == null){
setTimeout("startCheckingImportStatus()",700);
}
$("#import-progress-text").html("Finished importing pages.<br/>");
}
}else if(status.success == false){
$("#import-progress-text").html("Importing failed, click on start to try again.");
$("#alert-msg").text("Error importing page " + status.current_page_name + " ID : " + status.current_page)
$(".alert-danger").removeClass("hide").show();
}
}).fail(function(){
$("#import-progress-text").html("Importing failed, click on start to try again.");
$("#alert-msg").text("There was an unknown error");
$(".alert-danger").removeClass("hide").show();
})
}
var importModule = function(m){
module = m;

View File

@ -217,7 +217,8 @@ Orbit::Application.routes.draw do
get "import/module_data" => "import#module_data"
post "import/rss2_news" => "import#rss2_news"
post "import/rss2_archive" => "import#rss2_archive"
post "import/rss2_pages" => "import#rss2_pages"
get "import/rss2_pages" => "import#rss2_pages"
get "import/rss2_pages_info" => "import#rss2_pages_info"
get "import/get_import_status" => "import#get_import_status"
post "import/rss2_galleries" => "import#rss2_galleries"
post "import/rss2_album_image" => "import#rss2_album_image"