diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index c0e54df70..3c103f98b 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -613,51 +613,39 @@ class StudentWorkController < ApplicationController #老师、教辅可以随时评分,学生只能在匿评作业的匿评阶段进行评分 render_403 and return unless @is_teacher || @homework.homework_detail_manual.comment_status == 2 @score = student_work_score @work,User.current + #@score.comment = params[:new_form][:user_message] if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != "" + #@score.score = params[:score] if params[:score] + #if User.current.admin? + # @score.reviewer_role = 1 + #else + # role = User.current.members.where("course_id = ?",@course.id).first.roles.first.name + # @score.reviewer_role = get_role_by_name(role) + #end + #@is_new = false + @is_last_a = @work.student_works_scores.empty? + @new_score = StudentWorksScore.new + if @score && params[:score] + @new_score.score = params[:score].to_i == -1 ? @score.score : params[:score] + elsif @score.nil? && params[:score] + @new_score.score = params[:score].to_i == -1 ? nil : params[:score] + end + @new_score.comment = params[:new_form][:user_message] if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != "" + @new_score.user_id = User.current.id + @new_score.student_work_id = @work.id + if User.current.admin? + @new_score.reviewer_role = 1 + else + role = User.current.members.where("course_id = ?",@course.id).first.roles.first.name + @new_score.reviewer_role = get_role_by_name(role) + end if @score - @new_score = StudentWorksScore.new - if params[:score] - @new_score.score = params[:score].to_i == -1 ? @score.score : params[:score] - end - @new_score.comment = params[:new_form][:user_message] if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != "" - @new_score.user_id = User.current.id - @new_score.student_work_id = @work.id - if User.current.admin? - @new_score.reviewer_role = 1 - else - role = User.current.members.where("course_id = ?",@course.id).first.roles.first.name - @new_score.reviewer_role = get_role_by_name(role) - end if @is_teacher @is_new = true @is_last_a = false else @is_new = false end - - #@score.comment = params[:new_form][:user_message] if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != "" - #@score.score = params[:score] if params[:score] - #if User.current.admin? - # @score.reviewer_role = 1 - #else - # role = User.current.members.where("course_id = ?",@course.id).first.roles.first.name - # @score.reviewer_role = get_role_by_name(role) - #end - #@is_new = false else - @is_last_a = @work.student_works_scores.empty? - @new_score = StudentWorksScore.new - if params[:score] - @new_score.score = params[:score].to_i == -1 ? nil : params[:score] - end - @new_score.comment = params[:new_form][:user_message] if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != "" - @new_score.user_id = User.current.id - @new_score.student_work_id = @work.id - if User.current.admin? - @new_score.reviewer_role = 1 - else - role = User.current.members.where("course_id = ?",@course.id).first.roles.first.name - @new_score.reviewer_role = get_role_by_name(role) - end @is_new = true end @@ -669,15 +657,20 @@ class StudentWorkController < ApplicationController when 1 #教师评分:最后一个教师评分为最终评分 @work.teacher_score = @new_score.score when 2 #教辅评分 教辅评分显示平均分 - @work.teaching_asistant_score = @work.student_works_scores.where(:reviewer_role => 2).average(:score).try(:round, 2).to_f + #@work.teaching_asistant_score = @work.student_works_scores.where(:reviewer_role => 2).average(:score).try(:round, 2).to_f + ts_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{@work.id} AND reviewer_role = 2 AND score IS NOT NULL ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") + @work.teaching_asistant_score = ts_score.first.score.nil? ? nil : ts_score.first.score.try(:round, 2).to_f when 3 #学生评分 学生评分显示平均分 - @work.student_score = @work.student_works_scores.where(:reviewer_role => 3).average(:score).try(:round, 2).to_f + #@work.student_score = @work.student_works_scores.where(:reviewer_role => 3).average(:score).try(:round, 2).to_f + stu_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{@work.id} AND reviewer_role = 3 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") + @work.student_score = stu_score.first.score.try(:round, 2).to_f end @homework.update_attributes(:updated_at => Time.now) update_course_activity(@homework.class,@homework.id) update_user_activity(@homework.class,@homework.id) update_org_activity(@homework.class,@homework.id) if @work.save + @work = @homework.student_works.select("student_works.*,student_works.work_score as score").where(:id => @work.id).first respond_to do |format| format.js end @@ -710,6 +703,14 @@ class StudentWorkController < ApplicationController end end + #提交未评分的评语 + def add_comments_to_work + @work = StudentWork.find params[:id] + respond_to do |format| + format.js + end + end + #为作品点赞 def praise_student_work pt = PraiseTread.new diff --git a/app/views/organizations/_org_course_homework.html.erb b/app/views/organizations/_org_course_homework.html.erb index 179e4678e..8a780ea78 100644 --- a/app/views/organizations/_org_course_homework.html.erb +++ b/app/views/organizations/_org_course_homework.html.erb @@ -140,8 +140,8 @@
<% if activity.student_works.count != 0 %> <% sw_id = "("+activity.student_works.map{|sw| sw.id}.join(",")+")" %> - <% student_work_scores = StudentWorksScore.find_by_sql("select max(created_at) as created_at, student_work_id, user_id from student_works_scores where student_work_id in #{sw_id} group by student_work_id order by max(created_at) desc") %> - <%# student_work_scores = StudentWorksScore.where("student_work_id in #{sw_id}").reorder("created_at desc") %> + <%# student_work_scores = StudentWorksScore.find_by_sql("select max(created_at) as created_at, student_work_id, user_id from student_works_scores where student_work_id in #{sw_id} group by student_work_id order by max(created_at) desc") %> + <% student_work_scores = StudentWorksScore.where("student_work_id in #{sw_id} and score is not null").reorder("created_at desc") %> <% unless student_work_scores.empty? %> <% last_score = student_work_scores.first %>
diff --git a/app/views/student_work/_add_score.html.erb b/app/views/student_work/_add_score.html.erb index 74f81a30b..8dfc0a171 100644 --- a/app/views/student_work/_add_score.html.erb +++ b/app/views/student_work/_add_score.html.erb @@ -7,7 +7,7 @@

  • 评分: - +
  • @@ -44,19 +44,21 @@ if($.trim($('#score_comment_'+id).val()) == "" && parseFloat($("#score_"+id).val()) == -1 && $("#attachments_fields"+id).children().length == 0){ $("#none_notice_"+id).show(); } else if(parseFloat($("#score_"+id).val()) == -1) { - $('#ajax-modal').html('<%= escape_javascript(render :partial => 'student_work/no_teacher_score_notice') %>'); - showModal('ajax-modal', '500px'); - $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before("" + - ""); - $('#ajax-modal').parent().css("top","30%").css("left","30%").css("position","fixed").css("border","3px solid #269ac9"); + $.ajax({ + type: "GET", + url: "/student_work/"+id+"/add_comments_to_work", + data: 'text', + success: function (data) { + } + }); } else { $("#work_submit_" + id).parent().parent().submit(); } <% end %> } - function submit_teacher_score(){ - $("#work_submit_<%=work.id %>").parent().parent().submit(); + function submit_teacher_score(id){ + $("#work_submit_"+id).parent().parent().submit(); + hideModal(); } \ No newline at end of file diff --git a/app/views/student_work/_evaluation_un_work.html.erb b/app/views/student_work/_evaluation_un_work.html.erb index 8e1c16264..965d126ee 100644 --- a/app/views/student_work/_evaluation_un_work.html.erb +++ b/app/views/student_work/_evaluation_un_work.html.erb @@ -70,11 +70,11 @@ <% end %> <% unless student_work.student_score.nil?%> - (<%= student_work.student_works_scores.where(:reviewer_role => 3).count%>) + (<%= student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count%>)
    现共有 -  <%= student_work.student_works_scores.where(:reviewer_role => 3).count%>  +  <%= student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count%>  名学生进行了匿评,平均分为  <%= format("%.1f",student_work.student_score)%> 分。
    diff --git a/app/views/student_work/_no_teacher_score_notice.html.erb b/app/views/student_work/_no_teacher_score_notice.html.erb index 02febb5d5..5a8c768cc 100644 --- a/app/views/student_work/_no_teacher_score_notice.html.erb +++ b/app/views/student_work/_no_teacher_score_notice.html.erb @@ -4,7 +4,7 @@ 当前作品未进行评分,是否确定提交?

    - + 确  定 diff --git a/app/views/student_work/_student_work_score.html.erb b/app/views/student_work/_student_work_score.html.erb index c800ae8d0..64e5ffa01 100644 --- a/app/views/student_work/_student_work_score.html.erb +++ b/app/views/student_work/_student_work_score.html.erb @@ -6,10 +6,12 @@ (<%= student_work_score_role score%>) - 评分: - - <%= score.score%>分 - + <% unless score.score.nil? %> + 评分: + + <%= score.score%>分 + + <% end %> 回复 <%=format_time score.updated_at %> diff --git a/app/views/student_work/add_comments_to_work.js.erb b/app/views/student_work/add_comments_to_work.js.erb new file mode 100644 index 000000000..c14986c81 --- /dev/null +++ b/app/views/student_work/add_comments_to_work.js.erb @@ -0,0 +1,6 @@ +$('#ajax-modal').html('<%= escape_javascript(render :partial => 'student_work/no_teacher_score_notice', :locals => {:work => @work}) %>'); +showModal('ajax-modal', '500px'); +$('#ajax-modal').siblings().remove(); +$('#ajax-modal').before("" + + ""); +$('#ajax-modal').parent().css("top","30%").css("left","30%").css("position","fixed").css("border","3px solid #269ac9"); \ No newline at end of file diff --git a/app/views/users/_course_homework.html.erb b/app/views/users/_course_homework.html.erb index a96ae5d74..232a58700 100644 --- a/app/views/users/_course_homework.html.erb +++ b/app/views/users/_course_homework.html.erb @@ -140,7 +140,8 @@
    <% if activity.student_works.count != 0 %> <% sw_id = "("+activity.student_works.map{|sw| sw.id}.join(",")+")" %> - <% student_work_scores = StudentWorksScore.find_by_sql("select max(created_at) as created_at, student_work_id, user_id from student_works_scores where student_work_id in #{sw_id} group by student_work_id order by max(created_at) desc") %> + <%# student_work_scores = StudentWorksScore.find_by_sql("select max(created_at) as created_at, student_work_id, user_id from student_works_scores where student_work_id in #{sw_id} group by student_work_id order by max(created_at) desc") %> + <% student_work_scores = StudentWorksScore.where("student_work_id in #{sw_id} and score is not null").reorder("created_at desc") %> <% unless student_work_scores.empty? %> <% last_score = student_work_scores.first %>
    diff --git a/app/views/users/_user_homework_detail.html.erb b/app/views/users/_user_homework_detail.html.erb index fde67f472..6eb52f9d4 100644 --- a/app/views/users/_user_homework_detail.html.erb +++ b/app/views/users/_user_homework_detail.html.erb @@ -144,8 +144,8 @@
    <% if homework_common.student_works.count != 0 %> <% sw_id = "("+homework_common.student_works.map{|sw| sw.id}.join(",")+")" %> - <% student_work_scores = StudentWorksScore.find_by_sql("select max(created_at) as created_at, student_work_id, user_id from student_works_scores where student_work_id in #{sw_id} group by student_work_id order by max(created_at) desc") %> - <%# student_work_scores = StudentWorksScore.where("student_work_id in #{sw_id}").reorder("created_at desc") %> + <%# student_work_scores = StudentWorksScore.find_by_sql("select max(created_at) as created_at, student_work_id, user_id from student_works_scores where student_work_id in #{sw_id} group by student_work_id order by max(created_at) desc") %> + <% student_work_scores = StudentWorksScore.where("student_work_id in #{sw_id} and score is not null").reorder("created_at desc") %> <% unless student_work_scores.empty? %> <% last_score = student_work_scores.first %>
    diff --git a/config/routes.rb b/config/routes.rb index 6b06feebc..37cdeb22a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -266,6 +266,7 @@ RedmineApp::Application.routes.draw do post 'add_score' post 'revise_attachment' get 'retry_work' + get 'add_comments_to_work' get 'praise_student_work' get 'forbidden_anonymous_comment' end