socialforge/app/helpers/files_helper.rb

108 lines
3.1 KiB
Ruby
Raw Normal View History

# encoding: utf-8
module FilesHelper
def downloadAll containers
paths = []
files = []
tmpfile = "tmp.zip"
containers.each do |container|
next if container.attachments.empty?
if container.is_a?(Version);end
container.attachments.each do |attachment|
paths << attachment.diskfile
file = attachment.diskfile
# logger.error "[FilesHelper] downloadAll: #{e}"
begin
File.new(file, "r")
rescue Exception => e
logger.error e
next
end
files << file
# zip.add(file.path.dup.sub(directory, ''), file.path)
end
end
zipfile_name = "archive.zip"
if File.exists? File.open(zipfile_name, "w+")
ff = File.open(zipfile_name, "w+")
ff.close
File.delete ff
end
Zip::ZipFile.open(zipfile_name, Zip::ZipFile::CREATE) do |zipfile|
files.each do |filename|
directory = File.dirname filename
# Two arguments:
# - The name of the file as it will appear in the archive
# - The original file, including the path to find it
dir = filename.sub(directory+"/", '')
zipfile.add(dir, filename)
end
end
File.new(zipfile_name,'w+')
end
def courses_check_box_tags(name,courses,current_course,attachment)
2014-11-20 17:44:30 +08:00
s = ''
courses.each do |course|
if !(attachment.container_type && attachment.container_id == course.id) && is_course_teacher(User.current,course) && course_in_current_or_next_term(course)
s << "<label>#{ check_box_tag name, course.id, false, :id => nil } #{h course.name}</label>&nbsp;[#{get_course_term course}]<br/>"
2014-11-20 17:44:30 +08:00
end
end
s.html_safe
end
#判断用户是否拥有课程,需用户在该课程中角色为教师且该课程属于当前学期或下一学期
def has_course? user
result = false
user.courses.each do |course|
if is_course_teacher(User.current,course) && course_in_current_or_next_term(course)
return true
end
end
result
end
# 判断指定的资源时候符合类型
def isTypeOk(attachment, type, contentType)
result = false
if type != 0
if attachment.attachtype == type
result = true
end
else
result = true
end
if result
2014-05-14 17:12:04 +08:00
if contentType != '0' && contentType != attachment.suffix_type
result = false
2014-05-14 17:12:04 +08:00
end
end
result
end
2014-11-22 13:45:17 +08:00
def visable_attachemnts attachments
result = []
attachments.each do |attachment|
if attachment.is_public? || (attachment.container_type == "Course" && attachment.author.member_of_course?(Course.find(attachment.container_id)))|| attachment.author_id == User.current.id
2014-11-22 13:45:17 +08:00
result << attachment
end
end
result
end
def get_qute_number attachment
2014-11-26 15:26:57 +08:00
if attachment.copy_from
result = Attachment.find_by_sql("select count(*) as number from attachments where copy_from = #{attachment.copy_from}")
else
result = Attachment.find_by_sql("select count(*) as number from attachments where copy_from = #{attachment.id}")
end
if result.nil? || result.count <= 0
return 0
2014-11-26 15:26:57 +08:00
else
return result[0].number
end
end
end