You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							154 lines
						
					
					
						
							5.8 KiB
						
					
					
				
			
		
		
	
	
							154 lines
						
					
					
						
							5.8 KiB
						
					
					
				| # encoding: utf-8
 | |
| module FilesHelper
 | |
|   include AttachmentsHelper
 | |
| 
 | |
|   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
 | |
| 
 | |
|   #判断用户是否拥有不包含当前资源的课程,需用户在该课程中角色为教师且该课程属于当前学期或下一学期
 | |
|   def has_course? user,file
 | |
|     result = false
 | |
|     user.courses.each do |course|
 | |
|       if !course_contains_attachment?(course,file) && 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 attachment_candown attachment
 | |
|     candown = false
 | |
|     if attachment.container
 | |
|     if attachment.container.class.to_s != "HomeworkAttach" && (attachment.container.has_attribute?(:project) || attachment.container.has_attribute?(:project_id)) && attachment.container.project
 | |
|       project = attachment.container.project
 | |
|       candown= User.current.member_of?(project) || (project.is_public && attachment.is_public == 1)
 | |
|     elsif attachment.container.is_a?(Project)
 | |
|       project = attachment.container
 | |
|       candown= User.current.member_of?(project) || (project.is_public && attachment.is_public == 1)
 | |
|     elsif (attachment.container.has_attribute?(:board) || attachment.container.has_attribute?(:board_id)) && attachment.container.board &&
 | |
|         attachment.container.board.project
 | |
|       project = attachment.container.board.project
 | |
|       candown = User.current.member_of?(project) || (project.is_public && attachment.is_public == 1)
 | |
|     elsif (attachment.container.has_attribute?(:course) ||attachment.container.has_attribute?(:course_id) ) && attachment.container.course
 | |
|       course = attachment.container.course
 | |
|       candown = User.current.member_of_course?(course) || (course.is_public==1 && attachment.is_public == 1)
 | |
|     elsif attachment.container.is_a?(Course)
 | |
|       course = attachment.container
 | |
|       candown= User.current.member_of_course?(course) || (course.is_public==1 && attachment.is_public == 1)
 | |
|     elsif (attachment.container.has_attribute?(:board) || attachment.container.has_attribute?(:board_id)) && attachment.container.board &&
 | |
|         attachment.container.board.course
 | |
|       course = attachment.container.board.course
 | |
|       candown= User.current.member_of_course?(course) || (course.is_public==1 && attachment.is_public == 1)
 | |
|     elsif attachment.container.class.to_s=="HomeworkAttach" && attachment.container.bid.reward_type == 3
 | |
|       candown = true
 | |
|     elsif  attachment.container_type == "Bid" && attachment.container && attachment.container.courses
 | |
|       course = attachment.container.courses.first
 | |
|       candown = User.current.member_of_course?(attachment.container.courses.first) || (course.is_public == 1 && attachment.is_public == 1)
 | |
|     else
 | |
|       candown = (attachment.is_public == 1 || attachment.is_public == true)
 | |
|     end
 | |
|     end
 | |
|     candown
 | |
|   end
 | |
| 
 | |
| 
 | |
| 
 | |
| end |