From 84a11d6e67b74e11a231b7b8d67101c998c66234 Mon Sep 17 00:00:00 2001 From: manson Date: Fri, 5 Sep 2014 18:36:37 +0800 Subject: [PATCH] fix some issue in import_controller --- app/controllers/admin/import_controller.rb | 76 +++++++++------------- 1 file changed, 32 insertions(+), 44 deletions(-) diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb index f4b2de8..bf6d4ab 100644 --- a/app/controllers/admin/import_controller.rb +++ b/app/controllers/admin/import_controller.rb @@ -135,32 +135,13 @@ class Admin::ImportController < OrbitAdminController @site_valid_locales.each do |locale| locale = locale.to_s - if news['Content'][locale]=="" and news['Summary'][locale]!="" + if (news['Content'][locale].blank? or (news['Content'][locale].gsub(" \;","").blank? rescue true)) and !news['Summary'][locale].blank? news['Content'][locale] = news['Summary'][locale] news['Summary'][locale] = " " end - temp = news['Content'][locale] - - urls = Nokogiri::HTML(temp).css("img").map do |link| - - if URI.parse(link.attr("src")).host == @host - link.attr("src") - end - end - urls.each do |url| - next if url.nil? - a = Asset.new - a.remote_data_url = url - a.title_translations = {"en" => a.data.filename, "zh_tw" => a.data.filename} - if(a.save! rescue false) - temp.gsub!(CGI::escapeHTML(url), "#") - else - @user.assets << a - temp.gsub!(CGI::escapeHTML(url), a.data.to_s) - end - end - news['Content'][locale] = temp + temp = smart_downloader(news['Content'][locale], @host) + news['Content'][locale] = temp end bulletin.text_translations = news['Content'] @@ -568,7 +549,12 @@ class Admin::ImportController < OrbitAdminController @data_to_send = [] albums.each do |album| if Album.where(:rss2_id => album["albumid"]).count == 0 - newalbum = Album.new(:name_translations => {"en" => album["name"]["en"], "zh_tw" => album["name"]["zh_tw"]}, :description_translations => {"en" => album["description"]["en"], "zh_tw" => album["description"]["zh_tw"]},"rss2_id" => album["albumid"]) + newalbum = Album.new( + :name_translations => {"en" => album["name"]["en"], "zh_tw" => album["name"]["zh_tw"]}, + :description_translations => { + "en" => (album["description"]["en"].nil? ? "" : album["description"]["en"]), + "zh_tw" => (album["description"]["zh_tw"].nil? ? "" : album["description"]["zh_tw"])}, + :rss2_id => album["albumid"]) newalbum.category_id = category.id newalbum.save else @@ -576,7 +562,8 @@ class Admin::ImportController < OrbitAdminController end images = album["images"] images.each do |image| - @data_to_send << {"album_id" => newalbum.id.to_s,"album_name" => newalbum.name_translations["zh_tw"], "url" => image["image"], "description" => {"en" => image["description"]["en"], "zh_tw" => image["description"]["zh_tw"]},"photoid" => image["photoid"]} + next if image.blank? + @data_to_send << {"album_id" => newalbum.id.to_s,"album_name" => newalbum.name_translations["zh_tw"], "url" => image["image"], "description" => {"en" => image["description"]["en"], "zh_tw" => image["description"]["zh_tw"]},"photoid" => image["photoid"]} end end render :json => {"images" => @data_to_send}.to_json @@ -1179,28 +1166,29 @@ class Admin::ImportController < OrbitAdminController end def smart_downloader(data,url) - @data = data - excluded_extensions = ["php","/"] - @links = URI.extract(@data) - @links.each do |link| - if link.include?url - temp = link.gsub(url,"") - extension = temp.split(".").last rescue nil - if extension.nil? || excluded_extensions.include?(extension) - @data = @data.sub(link,"#") - else - a = Asset.new - a.remote_data_url = link - a.title_translations = {"en" => a.data.filename, "zh_tw" => a.data.filename} - if (a.save! rescue false) - @user.assets << a - @user.save - @data = @data.sub(link, a.data.url) - end + @data = data + excluded_extensions = ["php","/"] + @links = URI.extract(@data) rescue [] + @links = @links.map{|link| link if (link.include?url rescue false)}.reject{|link| link.nil?}.uniq + @links.each do |link| + link = link.gsub("\&\;","&") + temp = link.gsub(url,"") + extension = temp.split(".").last rescue nil + if (extension.nil? || excluded_extensions.include?(extension)) and !link.include?("img.php") and !link.include?("download.php") + @data = @data.sub(link,"#") + else + a = Asset.new + a.remote_data_url = link + a.title_translations = {"en" => a.data.filename, "zh_tw" => a.data.filename} + if (a.save! rescue false) + @user.assets << a + @user.save + link = link.gsub("&","\&\;") + @data = @data.sub(link, a.data.url) end end - end - @data + end + @data end def write_to_file