fix some issue in import_controller

This commit is contained in:
manson 2014-09-05 18:36:37 +08:00
parent 3dafcf37bc
commit 84a11d6e67
1 changed files with 32 additions and 44 deletions

View File

@ -135,31 +135,12 @@ class Admin::ImportController < OrbitAdminController
@site_valid_locales.each do |locale| @site_valid_locales.each do |locale|
locale = locale.to_s locale = locale.to_s
if news['Content'][locale]=="" and news['Summary'][locale]!="" if (news['Content'][locale].blank? or (news['Content'][locale].gsub("&nbsp\;","").blank? rescue true)) and !news['Summary'][locale].blank?
news['Content'][locale] = news['Summary'][locale] news['Content'][locale] = news['Summary'][locale]
news['Summary'][locale] = " " news['Summary'][locale] = " "
end end
temp = news['Content'][locale] temp = smart_downloader(news['Content'][locale], @host)
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 news['Content'][locale] = temp
end end
@ -568,7 +549,12 @@ class Admin::ImportController < OrbitAdminController
@data_to_send = [] @data_to_send = []
albums.each do |album| albums.each do |album|
if Album.where(:rss2_id => album["albumid"]).count == 0 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.category_id = category.id
newalbum.save newalbum.save
else else
@ -576,6 +562,7 @@ class Admin::ImportController < OrbitAdminController
end end
images = album["images"] images = album["images"]
images.each do |image| images.each do |image|
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"]} @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
end end
@ -1181,12 +1168,13 @@ class Admin::ImportController < OrbitAdminController
def smart_downloader(data,url) def smart_downloader(data,url)
@data = data @data = data
excluded_extensions = ["php","/"] excluded_extensions = ["php","/"]
@links = URI.extract(@data) @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| @links.each do |link|
if link.include?url link = link.gsub("\&amp\;","&")
temp = link.gsub(url,"") temp = link.gsub(url,"")
extension = temp.split(".").last rescue nil extension = temp.split(".").last rescue nil
if extension.nil? || excluded_extensions.include?(extension) if (extension.nil? || excluded_extensions.include?(extension)) and !link.include?("img.php") and !link.include?("download.php")
@data = @data.sub(link,"#") @data = @data.sub(link,"#")
else else
a = Asset.new a = Asset.new
@ -1195,11 +1183,11 @@ class Admin::ImportController < OrbitAdminController
if (a.save! rescue false) if (a.save! rescue false)
@user.assets << a @user.assets << a
@user.save @user.save
link = link.gsub("&","\&amp\;")
@data = @data.sub(link, a.data.url) @data = @data.sub(link, a.data.url)
end end
end end
end end
end
@data @data
end end