diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb
index bf6d4ab..850263b 100644
--- a/app/controllers/admin/import_controller.rb
+++ b/app/controllers/admin/import_controller.rb
@@ -271,18 +271,14 @@ class Admin::ImportController < OrbitAdminController
render :json => settings.to_json
end
- def rss2_members
- uri = URI.parse(params['url'])
+ def rss2_members_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)
- @@import_stats["total_members"] = data["users"].count
- @@import_stats["current_status"] = 0
- @@import_stats["success"] = true
- write_to_file
rss2_roles = data["attributes"]
rss2_roles.each do |key,rss2_role|
@@ -327,13 +323,22 @@ class Admin::ImportController < OrbitAdminController
end
end
+ render :json => {"success" => true, "total_users" => data["total_users"]}.to_json
+ end
+
+ def rss2_members
+ 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)
+
members = data["users"]
data_to_send = []
members.each do |member|
- @@import_stats["current_member"] = member["user_id"]
- @@import_stats["current_member_name"] = member["primary_email"]
- write_to_file
new_member = MemberProfile.find_by(rss2_id: member["rss2_id"]) rescue nil
if new_member.nil?
@@ -505,8 +510,6 @@ class Admin::ImportController < OrbitAdminController
end
new_member.save
- @@import_stats["current_status"] = @@import_stats["current_status"] + 1
- write_to_file
if member["user_id"].present?
user = User.new
user.user_name = member["user_id"]
@@ -897,8 +900,8 @@ class Admin::ImportController < OrbitAdminController
"en" => diploma["degree"]["en"],
"zh_tw" => diploma["degree"]["zh-tw"]},
:language => diploma["language"].gsub('-','_'),
- :start_date => Date.strptime(diploma["start_date"], '%Y-%m'),
- :end_date => Date.strptime(diploma["end_date"], '%Y-%m'),
+ :start_date => (Date.strptime(diploma["start_date"], '%Y-%m') rescue nil),
+ :end_date => (Date.strptime(diploma["end_date"], '%Y-%m') rescue nil),
:rss2_id => diploma["rss2_id"])
new_diploma.member_profile = member
new_diploma.save
diff --git a/app/views/admin/import/index.html.erb b/app/views/admin/import/index.html.erb
index e70767f..2c6a0da 100644
--- a/app/views/admin/import/index.html.erb
+++ b/app/views/admin/import/index.html.erb
@@ -198,7 +198,8 @@
importLinks();
break;
case "members":
- importMembers();
+ $(this).fadeOut();
+ importMembersInfo();
break;
default:
getModuleCategories();
@@ -280,7 +281,7 @@
var percent = ((number + 1) * 100) / total;
$("#import-progress .bar").css('width',percent + "%");
if(number != (total - 1)){
- setTimeout(importImagesForAlbums(number + 1),300)
+ setTimeout(importImagesForAlbums(number + 1),300);
}else{
$("#import-progress-text").html("Finished importing albums.");
}
@@ -294,30 +295,57 @@
}
- var sto = null;
- var new_members_data = null;
- var importMembers = function(){
+ var sto = null,
+ new_members_data = [],
+ number_of_members_to_import = 5,
+ total_members = 0,
+ maximum_member_pages = 0;
+
+ var importMembersInfo = function(){
$("#import-progress .bar").css('width', '0%');
- $("#import-progress-text").html("Importing Member..
");
+ $("#import-progress-text").html("Getting Member Info..
");
$.ajax({
type: "post",
- url: '<%= admin_import_rss2_members_path %>',
+ url: '<%= admin_import_rss2_members_info_path %>',
data : {"url" : url+'?module='+module}
}).done(function(data){
if(data.success == true){
- // clearTimeout(sto);
- $("#import-progress-text").html("Finished importing Members.
");
- $("#import-progress .bar").css('width', '100%');
- new_members_data = data.members;
- importPlugins(0);
+ $("#import-progress-text").html("Now importing Members.
");
+ total_members = parseInt(data.total_users);
+ maximum_member_pages = Math.ceil(total_members / number_of_members_to_import) - 1;
+ importMembers(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();
+ })
+ }
+
+ var importMembers = function(page_number){
+ $("#import-progress-text").html("Importing Members..
");
+ $.ajax({
+ type: "post",
+ url: '<%= admin_import_rss2_members_path %>',
+ data : {"url" : url+'?module='+module+"&page=" + page_number + "&total=" + number_of_members_to_import}
+ }).done(function(data){
+ if(data.success == true){
+ var percent = ((number_of_members_to_import * (page_number + 1)) * 100) / total_members;
+ $("#import-progress .bar").css('width', percent + "%");
+ new_members_data = new_members_data.concat(data.members);
+ if(page_number < maximum_member_pages){
+ importMembers(page_number + 1);
+ }else{
+ $("#import-progress .bar").css('width', '100%');
+ importPlugins(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();
- clearTimeout(sto);
})
- // sto = setTimeout("startCheckingMemberImportStatus()",700);
}
var plugins = ["patents","books", "projects", "researches", "honors", "diplomas", "experiences", "journalpapers", "conferencespapers"];
var failed_plugins = [];
@@ -326,10 +354,11 @@
member_status = (member.name == null ? "Importing plugins for id " + member.rss2_id : "Importing plugins for member " + member.name);
$("#import-progress .bar").css('width', '0%');
$("#import-progress-text").html(member_status + "