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.
		
		
		
		
		
			
		
			
				
					
					
						
							149 lines
						
					
					
						
							6.9 KiB
						
					
					
				
			
		
		
	
	
							149 lines
						
					
					
						
							6.9 KiB
						
					
					
				| module HomeworkAttachHelper
 | |
| #   #判断是否具有删除的权限
 | |
| #   def attach_delete(project)
 | |
| #     if User.current.logged? && (User.current.admin? || (!Member.where('user_id = ? and project_id = ?', User.current.id, project.bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, project.bid.courses.first.id).first.roles&Role.where('id = ? or id = ?', 3, 7)).size >0) || project.user_id == User.current.id)
 | |
| #       true
 | |
| #     else
 | |
| #       false
 | |
| #     end
 | |
| #   end
 | |
| #   #作业添加、编辑界面的tab页
 | |
| #   def homework_settings_tabs f
 | |
| #     @f = f
 | |
| #     tabs = [{:name => 'info',  :partial => 'homework_attach/edit_homework', :label => :label_information_plural},
 | |
| #             {:name => 'members',  :partial => 'homework_attach/homework_member', :label => :label_member_plural}
 | |
| #     ]
 | |
| #   end
 | |
| #
 | |
| #   #作业可选成员列表分页
 | |
| #   def render_new_members_for_homework members
 | |
| #     #scope = Principal.active.sorted.not_member_of(project).like(params[:q])
 | |
| #     #scope = project.members
 | |
| #     #principals = paginateHelper members,10
 | |
| #     #principals = members
 | |
| #     #principal_count = members.count
 | |
| #     #limit = 10
 | |
| #     #principal_pages = Redmine::Pagination::Paginator.new principal_count, limit, params['page'] #by young
 | |
| #     #offset ||= principal_pages.offset
 | |
| #     #principals = members[offset, limit]
 | |
| #     users = members.map(&:user)
 | |
| #     s = content_tag('div', member_check_box_tags_ex('membership[user_ids][]', users), :id => 'principals')
 | |
| #     links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false) {|text, parameters, options|
 | |
| #       link_to text, get_homework_member_list_homework_attach_index_path( parameters.merge(:q => params[:q], bid_id: params[:id]||@homework)), :remote => true }
 | |
| #     return s + content_tag('div', content_tag('ul', links), :class => 'pagination_new')
 | |
| #   end
 | |
| #
 | |
| #   #扩展的checkbox生成
 | |
| #   def member_check_box_tags_ex(name, principals)
 | |
| #     s = ''
 | |
| #     principals.each do |member|
 | |
| #       s << "<label>#{ check_box_tag name, member.id, false, :id => nil } #{h member.name }</label><br/>"
 | |
| #     end
 | |
| #     s.html_safe
 | |
| #   end
 | |
| #
 | |
| #   def paginateHelper obj, pre_size=20
 | |
| #     @obj_count = obj.count
 | |
| #     @obj_pages = Redmine::Pagination::Paginator.new @obj_count, pre_size, params['page']
 | |
| #     if obj.kind_of? ActiveRecord::Base or obj.kind_of?  ActiveRecord::Relation
 | |
| #       obj.limit(@obj_pages.per_page).offset(@obj_pages.offset)
 | |
| #     elsif obj.kind_of? Array
 | |
| #       obj[@obj_pages.offset, @obj_pages.per_page]
 | |
| #     else
 | |
| #       logger.error "[ApplicationController] Error : application_controller#paginateHelper ===> unknow category: #{obj.class}"
 | |
| #       raise RuntimeError, 'unknow type, Please input you type into this helper.'
 | |
| #     end
 | |
| #   end
 | |
| #
 | |
| #   def user_projects_option
 | |
| #     cond = Project.visible_condition(User.current) + " AND projects.project_type <> 1"
 | |
| #     memberships = User.current.memberships.all(:conditions => cond)
 | |
| #     projects = memberships.map(&:project)
 | |
| #     not_have_project = []
 | |
| #     not_have_project << Setting.please_chose
 | |
| #     not_have_project << 0
 | |
| #     type = []
 | |
| #     type << not_have_project
 | |
| #     projects.each do |project|
 | |
| #       if project != nil
 | |
| #         option = []
 | |
| #         option <<  project.name
 | |
| #         option <<  project.id
 | |
| #         type << option
 | |
| #       end
 | |
| #     end
 | |
| #     type
 | |
| #   end
 | |
| #
 | |
| #   #判断指定用户是不是已经赞过该作业
 | |
| #   def is_praise_homework user_id, obj_id
 | |
| #     PraiseTread.where("user_id = #{user_id} AND praise_tread_object_id = #{obj_id} AND praise_tread_object_type = 'HomeworkAttach'").empty?
 | |
| #   end
 | |
| #
 | |
| #   #获取赞的总数
 | |
| #   def praise_homework_count obj_id
 | |
| #     PraiseTread.where("praise_tread_object_id = #{obj_id} AND praise_tread_object_type = 'HomeworkAttach'").count
 | |
| #   end
 | |
| #
 | |
| #   #获取用户对作业的评分
 | |
| #   def get_homework_score user, homework
 | |
| #     temp = HomeworkAttach.find_by_sql("SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = #{homework.id} AND rater_id = #{user.id}").first
 | |
| #     @m_score = temp.nil? ? 0:temp.stars.to_i
 | |
| #   end
 | |
| #
 | |
| #   #获取评分对应的评论
 | |
| #   def get_homework_review homework,is_teacher,user
 | |
| #     homework.journals_for_messages.where("is_comprehensive_evaluation = #{is_teacher ? 1 : 2} and user_id = #{user.id}").order("created_on DESC").first
 | |
| #   end
 | |
| #
 | |
| #   def convert_array array
 | |
| #     ary = "("
 | |
| #     if array.nil? || array.count == 0
 | |
| #       return "()"
 | |
| #     end
 | |
| #     array.length.times do |i|
 | |
| #       if i == array.length - 1
 | |
| #         ary += array[i].id.to_s + ")"
 | |
| #       else
 | |
| #         if  !(array[i].nil? ||  array[i].id.nil? || array[i].id.to_s == "")
 | |
| #           ary +=  array[i].id.to_s + ","
 | |
| #         end
 | |
| #       end
 | |
| #     end
 | |
| #     #array.each do |member|
 | |
| #     #  if member == array.last
 | |
| #     #    ary += member.id.to_s + ")"
 | |
| #     #  else
 | |
| #     #    ary += member.id.to_s + ","
 | |
| #     #  end
 | |
| #     #end
 | |
| #     ary
 | |
| #   end
 | |
| #
 | |
| #   def get_student_batch_homework_list bid,user
 | |
| #     student_batch_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*,
 | |
| #           (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 1 AND stars IS NOT NULL ORDER BY updated_at DESC limit 0,1) AS t_score,
 | |
| #           (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 0) AS s_score,
 | |
| #           (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{User.current.id}  AND is_teacher_score = 0) AS m_score
 | |
| #           FROM homework_attaches
 | |
| #           INNER JOIN homework_evaluations ON homework_evaluations.homework_attach_id = homework_attaches.id
 | |
| #           WHERE homework_attaches.bid_id = #{bid.id} AND homework_evaluations.user_id = #{user.id} ORDER BY m_score DESC")
 | |
| #     student_batch_homework_list
 | |
| #   end
 | |
| #
 | |
| #   #########################################################
 | |
| #   #sw
 | |
| #   #获取学生未进行匿评的数量
 | |
| #   #param: bid => 作业   user => 用户
 | |
| #   #return 指定用户未进行匿评的作业的数量
 | |
| #   #user必须是学生用户
 | |
| #   #######################################################
 | |
| #   def get_student_not_batch_homework_list bid,user
 | |
| #     HomeworkAttach.find_by_sql("SELECT * FROM(SELECT homework_attaches.*,
 | |
| #           (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{user.id}  AND is_teacher_score = 0) AS m_score
 | |
| #           FROM homework_attaches
 | |
| #           INNER JOIN homework_evaluations ON homework_evaluations.homework_attach_id = homework_attaches.id
 | |
| #           WHERE homework_attaches.bid_id = #{bid.id} AND homework_evaluations.user_id = #{user.id}) AS table1
 | |
| #           WHERE table1.m_score IS NULL").count
 | |
| #   end
 | |
| end |