fix for upgrading 4.2 to 4.5

This commit is contained in:
Harry Bomrah 2014-10-16 18:35:23 +08:00
parent e27192295d
commit b4533a1720
3 changed files with 77 additions and 1 deletions

View File

@ -21,6 +21,29 @@ class AssetUploader < CarrierWave::Uploader::Base
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# override
def filename
@original_filename
end
# override
def original_filename=(filename)
@original_filename = super(filename)
if(@original_filename.bytesize > 200)
original_file_extension = File.extname(@original_filename)
@original_filename.force_encoding("ascii-8bit")
@original_filename = @original_filename[0, (200 - original_file_extension.bytesize)]
@original_filename.encode!("UTF-16BE", "UTF-8", :invalid => :replace, :undef => :replace, :replace => '')
@original_filename.encode!("UTF-8")
@original_filename += original_file_extension
end
@original_filename
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')

View File

@ -19,6 +19,28 @@ class ImageUploader < CarrierWave::Uploader::Base
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# override
def filename
@original_filename
end
# override
def original_filename=(filename)
@original_filename = super(filename)
if(@original_filename.bytesize > 200)
original_file_extension = File.extname(@original_filename)
@original_filename.force_encoding("ascii-8bit")
@original_filename = @original_filename[0, (200 - original_file_extension.bytesize)]
@original_filename.encode!("UTF-16BE", "UTF-8", :invalid => :replace, :undef => :replace, :replace => '')
@original_filename.encode!("UTF-8")
@original_filename += original_file_extension
end
@original_filename
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url
# # For Rails 3.1+ asset pipeline compatibility:

View File

@ -50,6 +50,8 @@ namespace :upgrade do
bulletin.other_mailaddress = announcement["other_mailaddress"]
bulletin.public = announcement["public"]
bulletin.subtitle_translations = announcement["subtitle"]
announcement["text"]["en"] = smart_downloader(announcement["text"]["en"], args.url.chomp("/"))
announcement["text"]["zh_tw"] = smart_downloader(announcement["text"]["zh_tw"], args.url.chomp("/"))
bulletin.text_translations = announcement["text"]
bulletin.title_translations = announcement["title"]
bulletin.remote_image_url = announcement["image"]
@ -84,4 +86,33 @@ namespace :upgrade do
puts "Import has some problem."
end
end
end
end
def smart_downloader(data,url)
@data = data
@user = User.where(:user_name => "rulingcom").first
excluded_extensions = ["php","/"]
regex = /https?:\/\/[\S]+/
# @links = URI.extract(@data) rescue []
@links = @data.scan(regex) rescue []
@links = @links.map{|link| link.chomp("\"") 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))
@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