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,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("&nbsp\;","").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("\&amp\;","&")
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("&","\&amp\;")
@data = @data.sub(link, a.data.url)
end
end
end
@data
end
@data
end
def write_to_file