129 lines
3.9 KiB
Ruby
129 lines
3.9 KiB
Ruby
# 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)
|
||
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> [#{get_course_term course}]<br/>"
|
||
end
|
||
end
|
||
s.html_safe
|
||
end
|
||
|
||
#判断用户是否拥有除current_course以外的课程,需用户在该课程中角色为教师且该课程属于当前学期或下一学期
|
||
def has_course? user,current_course
|
||
result = false
|
||
user.courses.each do |course|
|
||
if current_course.id != course.id && 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
|
||
if contentType != '0' && contentType != attachment.suffix_type
|
||
result = false
|
||
end
|
||
end
|
||
result
|
||
end
|
||
|
||
def visable_attachemnts attachments
|
||
result = []
|
||
attachments.each do |attachment|
|
||
if attachment.is_public? || (attachment.container_type == "Course" && User.current.member_of_course?(Course.find(attachment.container_id)))|| attachment.author_id == User.current.id
|
||
result << attachment
|
||
end
|
||
end
|
||
result
|
||
end
|
||
|
||
def visable_attachemnts_incourse attachments
|
||
result = []
|
||
attachments.each do |attachment|
|
||
if attachment.is_public? || (attachment.author.member_of_course?(Course.find(attachment.container_id)))|| attachment.author_id == User.current.id
|
||
result << attachment
|
||
end
|
||
end
|
||
result
|
||
end
|
||
|
||
def visable_attachemnts_insite attachments,course
|
||
result = []
|
||
attachments.each do |attachment|
|
||
if attachment.is_public? || (attachment.container_type == "Course" && attachment.container_id == course.id && User.current.member_of_course?(Course.find(attachment.container_id)))|| attachment.author_id == User.current.id
|
||
result << attachment
|
||
end
|
||
end
|
||
result
|
||
end
|
||
|
||
|
||
def get_qute_number attachment
|
||
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
|
||
else
|
||
return result[0].number
|
||
end
|
||
end
|
||
end |