diff --git a/app/assets/javascripts/admin/filemanager.js b/app/assets/javascripts/admin/filemanager.js
index 8df9841..df98b25 100644
--- a/app/assets/javascripts/admin/filemanager.js
+++ b/app/assets/javascripts/admin/filemanager.js
@@ -40,12 +40,14 @@ $(document).ready(function(){
funcNum = getUrlParam( 'CKEditorFuncNum' ),
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];
}
diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb
index 850263b..ff838e6 100644
--- a/app/controllers/admin/import_controller.rb
+++ b/app/controllers/admin/import_controller.rb
@@ -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
diff --git a/app/views/admin/import/index.html.erb b/app/views/admin/import/index.html.erb
index 2c6a0da..eca6d12 100644
--- a/app/views/admin/import/index.html.erb
+++ b/app/views/admin/import/index.html.erb
@@ -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...
");
$.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 + "
");
+ 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 + "
");
+ $(".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 + "
");
- }
- 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.
");
- }
- }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;
diff --git a/config/routes.rb b/config/routes.rb
index 57b00ff..8e1ad7b 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -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"