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("_"), t = getUrlParam('CKEditor').split("_"),
language = t[t.length-1]; language = t[t.length-1];
language = (language == "tw" ? "zh_tw" : language);
language = decodeURIComponent(language); language = decodeURIComponent(language);
language = (language == "tw" || language == "tw]" ? "zh_tw" : language);
if(language.endsWith("]")){ if(language.endsWith("]")){
var re = ("\\[(.*)]"), var re = ("\\[(.*)]"),
matches = language.match(re); matches = language.match(re);
console.log(matches)
if(matches){ if(matches){
language = matches[1]; language = matches[1];
} }

View File

@ -187,24 +187,25 @@ class Admin::ImportController < OrbitAdminController
bulletin.save! bulletin.save!
end end
def rss2_pages def rss2_pages_info
delete_import_file
uri = URI.parse(params['url']) uri = URI.parse(params['url'])
# @@thread = Thread.new do
http = Net::HTTP.new(uri.host, uri.port) http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri) request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request) response = http.request(request)
data = response.body data = response.body
data = JSON.parse(data) data = JSON.parse(data)
pages = data["pages"] render :json => {"success" => true, "pages" => data["pages"], "total_pages" => data["totalpages"]}.to_json
@@import_stats["total_pages"] = data["total_pages"].to_i end
@@import_stats["current_status"] = 0
@@import_stats["success"] = true def rss2_pages
write_to_file uri = URI.parse(params['url'])
pages.each do |page| http = Net::HTTP.new(uri.host, uri.port)
@@import_stats["current_page"] = page["page_id"] request = Net::HTTP::Get.new(uri.request_uri)
@@import_stats["current_page_name"] = page["title"]["zh_tw"] response = http.request(request)
write_to_file data = response.body
data = JSON.parse(data)
page = data["page"]
if Page.where(:rss2_id => page["page_id"]).count == 0 if Page.where(:rss2_id => page["page_id"]).count == 0
page_id = page["page_id"] page_id = page["page_id"]
number = 0 number = 0
@ -221,14 +222,9 @@ class Admin::ImportController < OrbitAdminController
p = Page.find_by(:rss2_id => page["page_id"]) p = Page.find_by(:rss2_id => page["page_id"])
page_id = p.page_id page_id = p.page_id
end end
@@import_stats["current_status"] = @@import_stats["current_status"] + 1
write_to_file
if !page["childpages"].blank? if !page["childpages"].blank?
childpages = page["childpages"] childpages = page["childpages"]
childpages.each_with_index do |childpage,i| 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 if Page.where(:rss2_id => childpage["page_id"]).count == 0
p_id = page_id + "_" + i.to_s p_id = page_id + "_" + i.to_s
case childpage["type"] case childpage["type"]
@ -254,15 +250,8 @@ class Admin::ImportController < OrbitAdminController
cp.save cp.save
end end
end end
@@import_stats["current_status"] = @@import_stats["current_status"] + 1
write_to_file
end end
end end
end
# end
# @@thread.join
# @@thread.abort_on_exception = true
render :json => {"success"=>true}.to_json render :json => {"success"=>true}.to_json
end end

View File

@ -189,7 +189,8 @@
$("#import-start-btn").click(function(){ $("#import-start-btn").click(function(){
switch(module){ switch(module){
case "pages": case "pages":
importPages(); $(this).fadeOut();
getPagesInfo();
break; break;
case "gallery": case "gallery":
importGallery(); importGallery();
@ -213,21 +214,56 @@
}); });
}); });
var importPages = function(){ var pagesData = null;
var getPagesInfo = function(){
$("#import-progress .bar").css('width','0%'); $("#import-progress .bar").css('width','0%');
$("#import-progress-text").html("Importing Pages...<br/>"); $("#import-progress-text").html("Importing Pages...<br/>");
$.ajax({ $.ajax({
type: "post", type: "get",
dataType: "json", dataType: "json",
url: '<%= admin_import_rss2_pages_path %>', url: '<%= admin_import_rss2_pages_info_path %>',
data : {"url" : url+'?module='+module} data : {"url" : url+'?module='+module}
}).done(function(){ }).done(function(data){
if(data.success){
pagesData = data.pages;
importPage(0);
}
}).fail(function(){ }).fail(function(){
$("#import-progress-text").html("Importing failed, click on start to try again."); $("#import-progress-text").html("Importing failed, click on start to try again.");
$("#alert-msg").text("There was an unknown error"); $("#alert-msg").text("There was an unknown error");
$(".alert-danger").removeClass("hide").show(); $(".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(){ 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){ var importModule = function(m){
module = m; module = m;

View File

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