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"