diff --git a/app/helpers/homework_attach_helper.rb b/app/helpers/homework_attach_helper.rb index 72d381b28..bd2bec80c 100644 --- a/app/helpers/homework_attach_helper.rb +++ b/app/helpers/homework_attach_helper.rb @@ -1,149 +1,149 @@ 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 << "
" - 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 +# #判断是否具有删除的权限 +# 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 << "
" +# 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 \ No newline at end of file