From fe1a87aae468a4dd85d5b9ea85d00680d06f0052 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Thu, 25 Sep 2014 17:57:46 +0800 Subject: [PATCH] important update with some fixes in member import and also site preferences and page imports --- app/controllers/admin/import_controller.rb | 69 ++++++++++++---------- app/helpers/attribute_fields_helper.rb | 2 +- app/models/site.rb | 7 +-- app/views/admin/import/index.html.erb | 43 +++++++++++++- config/routes.rb | 1 + 5 files changed, 83 insertions(+), 39 deletions(-) diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb index ff838e6..ae97f3f 100644 --- a/app/controllers/admin/import_controller.rb +++ b/app/controllers/admin/import_controller.rb @@ -197,6 +197,7 @@ class Admin::ImportController < OrbitAdminController 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) @@ -222,37 +223,41 @@ class Admin::ImportController < OrbitAdminController 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 + render :json => {"success"=>true,"childpages" => page["childpages"],"page_id" => p.id.to_s,"site_url" => data["site_url"]}.to_json + end + + def rss2_child_page + childpage = params["childpage"] + page_id = params["page_id"] + site_url = params["site_url"] + current_index = params["current_index"] + page = Page.find(page_id) + if !childpage.blank? + p_id = page.page_id + "_" + current_index + case childpage["type"] + when "page" + cp = Page.new(:page_id => p_id, :parent_page_id => page.id, :page_type => "page", :url => "/#{page.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"],site_url) + zh_tw = smart_downloader(childpage["content"]["zh_tw"],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 => page.id, :page_type => "link", "url" => "/#{page.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 => page.id, :page_type => "link", "url" => "/#{page.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 - render :json => {"success"=>true}.to_json + render :json => {"success"=>true}.to_json end def get_import_status @@ -457,7 +462,7 @@ class Admin::ImportController < OrbitAdminController if field.nil? field = AttributeField.new(key: key, title_translations: {"en"=>rss2_field["name"]["en"],"zh_tw"=>rss2_field["name"]["zh-tw"]}) - field["markup"] = rss2_field["type"] + field["markup"] = rss2_field["type"] || "text_field" role.attribute_fields << field field.save end @@ -484,6 +489,10 @@ class Admin::ImportController < OrbitAdminController value = new_member.attribute_values.build(key: key, attribute_field_id: field.id, value: index) value.save end + else + field_value = rss2_field["value"].is_a?(Hash) ? {"en"=>rss2_field["value"]["en"],"zh_tw"=>rss2_field["value"]["zh-tw"]} : {"en"=>rss2_field["value"],"zh_tw"=>rss2_field["value"]} rescue nil + value = new_member.attribute_values.build(key: field.key, attribute_field_id: field.id, value: field_value) + value.save end else # Role status diff --git a/app/helpers/attribute_fields_helper.rb b/app/helpers/attribute_fields_helper.rb index 49b975d..c472a26 100644 --- a/app/helpers/attribute_fields_helper.rb +++ b/app/helpers/attribute_fields_helper.rb @@ -20,7 +20,7 @@ module AttributeFieldsHelper @new_attribute = @attribute_value.nil? @attribute_value = @attribute_value || (attribute_type.eql?("role") ? @member.attribute_values.build(attribute_field_id: id) : @member.member_profile_field_values.build(member_profile_field: id)) @prefiled_value = @attribute_value.value rescue nil - return instance_eval("render_#{markup}") #rescue "" + return instance_eval("render_#{markup}") rescue "" end end diff --git a/app/models/site.rb b/app/models/site.rb index a35518d..cfe8242 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -1,8 +1,9 @@ class Site include Mongoid::Document include Mongoid::Timestamps + include Slug - field :title, type: String, localize: true + field :title, as: :slug_title, type: String, localize: true field :school, type: String field :department, type: String field :address, type: String @@ -40,10 +41,6 @@ class Site mount_uploader :site_logo, ImageUploader mount_uploader :favicon, ImageUploader mount_uploader :mobile_icon, ImageUploader - def to_param - I18n.locale = :en - title.parameterize - end def confirm_store(site_token) if self.site_token.eql?(site_token) diff --git a/app/views/admin/import/index.html.erb b/app/views/admin/import/index.html.erb index ff11f90..74a083c 100644 --- a/app/views/admin/import/index.html.erb +++ b/app/views/admin/import/index.html.erb @@ -217,6 +217,7 @@ }); var pagesData = null; + var childPagesData = null; var getPagesInfo = function(){ $("#import-progress .bar").css('width','0%'); $("#import-progress-text").html("Importing Pages...
"); @@ -249,12 +250,15 @@ 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){ + }).done(function(data){ + if(data.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){ + if(data.childpages.length > 0){ + childPagesData = data.childpages; + importChildPage(0,number,data.site_url,data.page_id, current_page.ID); + }else if((number + 1) < pagesData.length){ importPage(number + 1); }else{ $("#import-progress .bar").css('width',"100%"); @@ -273,6 +277,39 @@ }) } + var importChildPage = function(childPageNumber, parentPageNumber, site_url, page_id, current_page_id){ + var current_page = childPagesData[childPageNumber]; + $("#import-progress-text").html("Importing child pages for page " + current_page_id + ". This may take a while.
"); + $.ajax({ + type : "post", + dataType : "json", + data : {"childpage" : current_page, "site_url" : site_url, "page_id" : page_id, "current_index" : childPageNumber}, + url : "<%= admin_import_rss2_child_page_path %>" + }).done(function(data){ + if(data.success == true){ + if((childPageNumber + 1) < childPagesData.length){ + importChildPage((childPageNumber + 1), parentPageNumber, site_url, page_id, current_page_id); + }else if((parentPageNumber + 1) < pagesData.length){ + importPage(parentPageNumber + 1) + }else{ + $("#import-progress .bar").css('width',"100%"); + $("#import-progress-text").html("Finished importing pages."); + } + } + }).fail(function(){ + $("#alert-msg").append("Importing failed for page " + current_page[title][zh_tw] + ", please try manually or retry.
"); + $(".alert-danger").removeClass("hide").show(); + if((childPageNumber + 1) < childPagesData.length){ + importChildPage((childPageNumber + 1), parentPageNumber); + }else if((parentPageNumber + 1) < pagesData.length){ + importPage(parentPageNumber + 1) + }else{ + $("#import-progress .bar").css('width',"100%"); + $("#import-progress-text").html("Finished importing pages."); + } + }) + } + var importLinks = function(){ $("#import-progress .bar").css('width','0%'); $("#import-progress-text").html("Importing Links...
"); diff --git a/config/routes.rb b/config/routes.rb index 8e1ad7b..611d6d0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -218,6 +218,7 @@ Orbit::Application.routes.draw do post "import/rss2_news" => "import#rss2_news" post "import/rss2_archive" => "import#rss2_archive" get "import/rss2_pages" => "import#rss2_pages" + post "import/rss2_child_page" => "import#rss2_child_page" 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"