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.
		
		
		
		
		
			
		
			
				
					
					
						
							173 lines
						
					
					
						
							6.5 KiB
						
					
					
				
			
		
		
	
	
							173 lines
						
					
					
						
							6.5 KiB
						
					
					
				| module StoresHelper
 | |
| 	def attachFromUrl attachment
 | |
| 		container = attachment.container
 | |
| 		case container.class.to_s
 | |
| 		when 'Message'
 | |
| 			board_message_path(container.board, container)
 | |
| 		when 'Issue'
 | |
| 			issue_path(container)
 | |
| 		when 'Document'
 | |
| 			document_path container
 | |
| 		when 'HomeworkAttach'
 | |
| 			bid_path(container.bid)
 | |
| 		when 'Memo'
 | |
| 			forum_memo_path(container.forum, container)
 | |
| 		when 'News'
 | |
| 			news_path(container)
 | |
| 		when 'Project'
 | |
| 			project_files_path(container)
 | |
|     when 'Course'
 | |
|       course_files_path(container)
 | |
| 		when 'Version'
 | |
| 			# version_path(container)
 | |
| 			project_files_path(container.project)
 | |
| 		when 'WikiPage'
 | |
| 			project_wiki_path(container.project)
 | |
| 		when 'Bid'
 | |
| 			bid_path(container)
 | |
| 		else
 | |
| 			Rails.logger.error "ERROR: StoresHelper#attachUrl unkown type ==> #{container}"
 | |
| 			'#'
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	def result_come_from attachment
 | |
| 		come_from_local(attachment).join(" > ").html_safe
 | |
| 	end
 | |
| 
 | |
| 	private
 | |
| 
 | |
| 	WORD_LIMIT = 100
 | |
| 	def come_from_local attachment
 | |
| 		container = attachment.container
 | |
| 		case container.class.to_s
 | |
| 		when 'Message'
 | |
| 			# '项目 > zzz > 论坛 > 帖子xxx'
 | |
| 			# topic_str = container.project.project_type == 0 ? l(:label_board) : l(:label_new_course)
 | |
| 
 | |
| 			course = container.course
 | |
| 			project = container.project
 | |
| 			if course.nil? # container is belongs to Project
 | |
| 				topic_list = link_to l(:label_board), project_boards_path(container.project)
 | |
| 				topic_item = link_to container.subject.truncate(WORD_LIMIT, omission: '...'), board_message_path(container.board, container), title: container.subject
 | |
| 				project_link(container.project).push(topic_list, topic_item)
 | |
| 			else # container is belongs to Course
 | |
| 				topic_list = link_to l(:label_course_news), course_boards_path(course)
 | |
| 				topic_item = link_to container.try(:subject).to_s.truncate(WORD_LIMIT, omission: '...'), board_message_path(container.board, container), title: container.subject
 | |
| 				project_link(course).push(topic_list, topic_item)
 | |
| 			end
 | |
| 		when 'Issue'
 | |
| 			# '项目 > zzz > 缺陷 > 问题xxx'
 | |
| 			issue_list = link_to l(:label_project_issues),  project_issues_path(container.project)
 | |
| 			issue_item = link_to container.subject.truncate(WORD_LIMIT, omission: '...'), issue_path(container), title: container.subject
 | |
| 			project_link(container.project).push(issue_list, issue_item)
 | |
| 		when 'Document'
 | |
| 			# '项目 > zzz > 文档 > 文档xxx'
 | |
| 			doc_list = link_to l(:label_document), project_documents_path(container.project)
 | |
| 			doc_item = link_to container.title.truncate(WORD_LIMIT, omission: '...'), document_path(container), title: container.title
 | |
| 			project_link(container.project).push(doc_list, doc_item)
 | |
| 		when 'News'
 | |
| 			# '课程 > zzz > 新闻 > 新闻xxx'
 | |
| 			course = container.course
 | |
| 			project = container.project
 | |
| 			if course.nil? # container is belongs to Project
 | |
| 				news_list = link_to l(:label_news), project_news_index_path(container.project)
 | |
| 				news_item = link_to container.title.truncate(WORD_LIMIT, omission: '...'), news_path(container), title: container.title
 | |
| 				project_link(container.project).push(news_list, news_item)
 | |
| 			else # container is belongs to Course
 | |
| 				news_list = link_to l(:label_course_news), course_news_index_path(course)
 | |
| 				news_item = link_to container.title.truncate(WORD_LIMIT, omission: '...'), news_path(container), title: container.title
 | |
| 				project_link(course).push(news_list, news_item)
 | |
| 			end
 | |
| 
 | |
| 		when 'Project'
 | |
| 			# '项目 > zzz '
 | |
| 			file_str = container.project.project_type == 0 ? l(:project_module_files) : l(:label_course_file)
 | |
| 			files_list = link_to file_str, project_files_path(container.project)
 | |
| 			project_link(container).push(files_list)
 | |
| 		when 'Course'
 | |
| 			files_list = link_to l(:label_course_file), course_files_path(container)
 | |
| 			project_link(container).push(files_list)
 | |
| 		when 'Version'
 | |
| 			# '项目 > zzz > 里程碑 > xxx'
 | |
| 			ver_list = link_to l(:label_roadmap), project_roadmap_path(container.project)
 | |
| 			files_list = link_to l(:label_course_file), project_files_path(container.project)
 | |
| 			ver_item = link_to container.name.truncate(WORD_LIMIT, omission: '...'), version_path(container), title: container.name
 | |
| 			project_link(container.project).push(ver_list, files_list, ver_item)
 | |
| 		when 'WikiPage'
 | |
| 			# '项目 > zzz > 维基 > xxx' 有点问题
 | |
| 			wiki_list = link_to l(:label_wiki), project_wiki_path(container.project)
 | |
| 			project_link(container.project).push(wiki_list)
 | |
| 		when 'HomeworkAttach'
 | |
| 			# '课程 > zzz > 作业 > 作业xxx'
 | |
| 			bid_link(container.bid)
 | |
| 		when 'Memo'
 | |
| 			# '贴吧 > 讨论区 > 帖子 xxx'
 | |
| 			return [link_to(attachment.id, '#')] if container.forum.nil?
 | |
| 			forums_list = link_to l(:label_forum), forums_path
 | |
| 			memo_list = link_to container.forum.name, forum_path(container.forum)
 | |
| 			memo_item = link_to container.subject,  forum_memo_path(container.forum, container)
 | |
| 			[forums_list, memo_list, memo_item]
 | |
| 		when 'Bid'
 | |
| 			# '竞赛 > xxx '
 | |
| 			bid_link(container)
 | |
| 		else
 | |
| 			Rails.logger.error "ERROR: attachment type unkown. file:#{__FILE__}, line:#{__LINE__}"
 | |
| 			Rails.logger.error "#{container.class.to_s}"
 | |
| 			[link_to('unkown', '')]
 | |
| 		end
 | |
| 	rescue ActionController::RoutingError => e
 | |
| 		Rails.logger.error "ERROR: RoutingError #{e}"
 | |
| 		[link_to('unkown', '')]
 | |
| 	end
 | |
| 
 | |
| 
 | |
| 	def bid_link bid
 | |
| 		bid_list = nil
 | |
| 		bid_item = nil
 | |
| 		case bid.reward_type
 | |
| 		when 1 # 众包 
 | |
| 			bid_list = link_to l(:label_requirement_enterprise_list), calls_path
 | |
| 			bid_item = link_to bid.name, respond_path(bid)
 | |
| 		when 2 # 竞赛
 | |
| 			bid_list = link_to l(:label_contest_list), contest_path
 | |
| 			bid_item = link_to bid.name, respond_path(bid)
 | |
| 		when 3 # 作业
 | |
| 			if bid.courses.first.nil?
 | |
| 				Rails.logger.error  "ERROR: attachment type unkown #bid_link/when 3" 
 | |
| 				return [link_to('unkown', '#')] 
 | |
| 			end
 | |
| 			bid_list = link_to l(:label_homework), homework_course_path(bid.courses.first)
 | |
| 			bid_item = link_to bid.name, course_for_bid_path(bid)
 | |
| 			return project_link(bid.courses.first).push(bid_list, bid_item)
 | |
| 		else
 | |
| 			xxx
 | |
| 		end
 | |
| 		[bid_list, bid_item]
 | |
| 	end
 | |
| 
 | |
| 
 | |
| 	def project_link project
 | |
| 		if project.nil?
 | |
| 			Rails.logger.error  "ERROR: attachment type unkown #project_link project.nil? file: #{__FILE__}, line: #{__LINE__}" 
 | |
| 			return [link_to('unkown', '')]
 | |
| 		end
 | |
| 		project_list = nil
 | |
| 		klass = project.class.to_s
 | |
| 		case klass
 | |
| 		when "Project"
 | |
| 			project_list = "<lable>#{l(:label_project_plural)}</lable>"
 | |
| 			project_item = link_to project.to_s, project_path(project)
 | |
| 			[project_list, project_item]
 | |
| 		when "Course"
 | |
| 			course_list = "<lable>#{l(:label_new_course)}</lable>"
 | |
| 			course_item = link_to project.name, course_path(project)
 | |
| 			[course_list, course_item]
 | |
| 		else
 | |
| 			Rails.logger.error "[StoresHelper]: #{klass}   ======================================="
 | |
| 			[]
 | |
| 		end
 | |
| 
 | |
| 	end
 | |
| end
 |