作业评价时,此次评价会覆盖该账号上传评价的信息,请在评分详情的页面上增加历史评分的隐藏功能

This commit is contained in:
cxt 2017-01-12 17:25:16 +08:00
parent 80401154bc
commit cd23ba37b5
9 changed files with 43 additions and 35 deletions

View File

@ -8,7 +8,7 @@ class StudentWorkController < ApplicationController
before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex, before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex,
:set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project, :set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project,
:search_course_students,:work_canrepeat,:add_group_member,:change_project] :search_course_students,:work_canrepeat,:add_group_member,:change_project]
before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work,:retry_work,:revise_attachment] before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work, :retry_work, :revise_attachment, :hide_score_detail]
before_filter :member_of_course, :only => [:new, :create, :show, :add_score, :praise_student_work] before_filter :member_of_course, :only => [:new, :create, :show, :add_score, :praise_student_work]
before_filter :author_of_work, :only => [:edit, :update, :destroy] before_filter :author_of_work, :only => [:edit, :update, :destroy]
before_filter :teacher_of_course, :only => [:student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :set_score_rule, :forbidden_anonymous_comment] before_filter :teacher_of_course, :only => [:student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :set_score_rule, :forbidden_anonymous_comment]
@ -950,6 +950,19 @@ class StudentWorkController < ApplicationController
end end
end end
def hide_score_detail
student_work_score = StudentWorksScore.where(:id => params[:score_id]).first
if student_work_score
student_work_score.update_attributes(:is_hidden => 1)
end
@is_member_work = @homework.homework_type == 3 && @work.student_work_projects.empty?
@student_work_scores = student_work_score_record(@work)
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
respond_to do |format|
format.js
end
end
#缺评列表显示 #缺评列表显示
def student_work_absence_penalty def student_work_absence_penalty
order = params[:order] || "desc" order = params[:order] || "desc"

View File

@ -69,12 +69,13 @@ module StudentWorkHelper
str str
end end
#获取学生作品的评分记录:同一个教师或教辅只显示最后一次评分 #获取学生作品的评分记录:同一个教师或教辅只显示未隐藏的评分
def student_work_score_record work def student_work_score_record work
sql = "SELECT MAX(id) id FROM student_works_scores WHERE (reviewer_role = 2 OR reviewer_role = 1) AND score IS NOT NULL AND student_work_id = #{work.id} GROUP BY user_id" # sql = "SELECT MAX(id) id FROM student_works_scores WHERE (reviewer_role = 2 OR reviewer_role = 1) AND score IS NOT NULL AND is_hidden = 0 AND student_work_id = #{work.id} GROUP BY user_id"
tea_ts_ids = StudentWorksScore.find_by_sql sql # tea_ts_ids = StudentWorksScore.find_by_sql sql
tea_ts_ids = tea_ts_ids.empty? ? "(-1)" : "(" + tea_ts_ids.map{|tea| tea.id}.join(",") + ")" # tea_ts_ids = tea_ts_ids.empty? ? "(-1)" : "(" + tea_ts_ids.map{|tea| tea.id}.join(",") + ")"
scores = work.student_works_scores.where("score IS NULL or reviewer_role = 3 or id in #{tea_ts_ids}").order("updated_at desc") # scores = work.student_works_scores.where("score IS NULL or reviewer_role = 3 or id in #{tea_ts_ids}").order("updated_at desc")
scores = work.student_works_scores.where(:is_hidden => false).order("created_at desc")
return scores return scores
end end

View File

@ -2,7 +2,7 @@
class StudentWorksScore < ActiveRecord::Base class StudentWorksScore < ActiveRecord::Base
#reviewer_role: 1:教师评分;2:教辅评分;3:学生匿评 #reviewer_role: 1:教师评分;2:教辅评分;3:学生匿评
#appeal_status: 0正常1申诉中2撤销申诉3申诉成功4申诉被拒绝 #appeal_status: 0正常1申诉中2撤销申诉3申诉成功4申诉被拒绝
attr_accessible :student_work_id, :user_id, :score, :comment, :reviewer_role attr_accessible :student_work_id, :user_id, :score, :comment, :reviewer_role, :is_hidden
belongs_to :user belongs_to :user
belongs_to :student_work belongs_to :student_work

View File

@ -13,6 +13,13 @@
<%= show_real_score ? score.score : "**" %>分 <%= show_real_score ? score.score : "**" %>分
</a> </a>
<% end %> <% end %>
<% if @is_teacher && score.user == User.current && score.reviewer_role != 3 %>
<% scores = User.current.student_works_scores.where("student_work_id = #{score.student_work_id} and reviewer_role != 3").order("created_at desc") %>
<% if scores.first != score %>
<a onclick="delete_confirm_box('<%=hide_score_detail_student_work_path(score.student_work_id, :score_id => score.id) %>', '本条评分详情将不再显示<br/>您是否确定隐藏')"
href="javascript:void(0);" class="fr linkBlue ml10 mr5">隐藏</a>
<% end %>
<% end %>
<a href="javascript:void(0);" class="fr linkBlue mr5" onclick="$('#add_score_reply_<%= score.id%>').slideToggle();">回复</a> <a href="javascript:void(0);" class="fr linkBlue mr5" onclick="$('#add_score_reply_<%= score.id%>').slideToggle();">回复</a>
<% if @homework.anonymous_appeal == 1 %> <% if @homework.anonymous_appeal == 1 %>
<% if score.student_work.user == User.current && score.reviewer_role == 3 && score.appeal_status == 0 %> <% if score.student_work.user == User.current && score.reviewer_role == 3 && score.appeal_status == 0 %>
@ -48,10 +55,10 @@
<div class="ping_back mt10" style="border-top: 1px dashed #CCCCCC; padding-top: 10px;"> <div class="ping_back mt10" style="border-top: 1px dashed #CCCCCC; padding-top: 10px;">
<span class="fl">申诉</span> <span class="fl">申诉</span>
<% if score.appeal_status == 1 && score.student_work.user == User.current %> <% if score.appeal_status == 1 && score.student_work.user == User.current %>
<a href="javascript:void(0)" onclick="deal_appeal_score(<%=score.id %>, 2);" class="fr linkBlue mr5 ml20">撤销申诉</a> <a href="javascript:void(0)" onclick="delete_confirm_box('<%=deal_appeal_score_student_work_index_path(:is_last=>true,:score_id=>score.id,:status=>2) %>', '撤销后将不能再对该成绩发起申诉<br/>您是否确认撤销申诉');" class="fr linkBlue mr5 ml20">撤销申诉</a>
<% elsif @is_teacher && score.appeal_status == 1 %> <% elsif @is_teacher && score.appeal_status == 1 %>
<a href="javascript:void(0)" onclick="deal_appeal_score(<%=score.id %>, 3);" class="fr linkBlue mr5">接受</a> <a href="javascript:void(0)" onclick="delete_confirm_box('<%=deal_appeal_score_student_work_index_path(:is_last=>true,:score_id=>score.id,:status=>3) %>', '此匿评成绩将被废弃,且评阅人的作品将被违规扣分<br/>您是否确定接受');" class="fr linkBlue mr5">接受</a>
<a href="javascript:void(0)" onclick="deal_appeal_score(<%=score.id %>, 4);" class="fr linkBlue mr10 ml20">拒绝</a> <a href="javascript:void(0)" onclick="delete_confirm_box('<%=deal_appeal_score_student_work_index_path(:is_last=>true,:score_id=>score.id,:status=>4) %>', '此匿评成绩将被认为合理<br/>您是否确定拒绝');" class="fr linkBlue mr10 ml20">拒绝</a>
<% end %> <% end %>
<span class="fr c_grey"> <span class="fr c_grey">
<%=format_time score.student_works_scores_appeal.updated_at %> <%=format_time score.student_works_scores_appeal.updated_at %>
@ -73,24 +80,3 @@
</div> </div>
</ul> </ul>
<script>
function deal_appeal_score(score_id, status){
if(status == '2'){
var htmlvalue = '<div id="muban_popup_box" style="width:400px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f14">撤销后将不能再对该成绩发起申诉</p><p class="text_c mt10 f14">您是否确认撤销申诉</p><div class="cl"></div>'+
'<a href="/student_work/deal_appeal_score?is_last=true&score_id='+ score_id + '&status=2" class="fr sy_btn_blue mr135 mt10" data-remote="true">确&nbsp;&nbsp;定</a>'+
'<a href="javascript:void(0);" class="fr sy_btn_grey mt10 mr10" onclick="hideModal();">取&nbsp;&nbsp;消</a></div></div>';
}else if(status == '3'){
var htmlvalue = '<div id="muban_popup_box" style="width:400px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f14">此匿评成绩将被废弃,且评阅人的作品将被违规扣分</p><p class="text_c mt10 f14">您是否确定接受</p><div class="cl"></div>'+
'<a href="/student_work/deal_appeal_score?is_last=true&score_id='+ score_id + '&status=3" class="fr sy_btn_blue mr135 mt10" data-remote="true">确&nbsp;&nbsp;定</a>'+
'<a href="javascript:void(0);" class="fr sy_btn_grey mt10 mr10" onclick="hideModal();">取&nbsp;&nbsp;消</a></div></div>';
}else if(status == '4'){
var htmlvalue = '<div id="muban_popup_box" style="width:400px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f14">此匿评成绩将被认为合理</p><p class="text_c mt10 f14">您是否确定拒绝</p><div class="cl"></div>'+
'<a href="/student_work/deal_appeal_score?is_last=true&score_id='+ score_id + '&status=4" class="fr sy_btn_blue mr135 mt10" data-remote="true">确&nbsp;&nbsp;定</a>'+
'<a href="javascript:void(0);" class="fr sy_btn_grey mt10 mr10" onclick="hideModal();">取&nbsp;&nbsp;消</a></div></div>';
}
pop_box_new(htmlvalue, 400, 180);
}
</script>

View File

@ -0,0 +1,2 @@
hideModal();
$("#score_list_<%= @work.id%>").html("<%=escape_javascript(render :partial => 'student_work_score_records', :locals => {:student_work_scores => @student_work_scores, :is_member_work => @is_member_work}) %>");

View File

@ -32,8 +32,8 @@
<% unless student_work_scores.empty? %> <% unless student_work_scores.empty? %>
<% last_score = student_work_scores.first %> <% last_score = student_work_scores.first %>
<div class="mt10"> <div class="mt10">
<p class="fontGrey2">#&nbsp;<%=time_from_now last_score.created_at %> <p class="fontGrey2">
<%= link_to last_score.reviewer_role == 3 && !is_teacher ? '学生匿名' : last_score.user.show_name, last_score.reviewer_role == 3 && !is_teacher ? "javascript:void(0)" : user_activities_path(last_score.user_id), :class => "newsBlue ml5 mr5"%>评阅了作品,优秀排行: #&nbsp;<%=time_from_now last_score.created_at %><%= link_to last_score.reviewer_role == 3 && !is_teacher ? '学生匿名' : last_score.user.show_name, last_score.reviewer_role == 3 && !is_teacher ? "javascript:void(0)" : user_activities_path(last_score.user_id), :class => "newsBlue ml5 mr5"%>评阅了作品,优秀排行:
</p> </p>
</div> </div>
<% end %> <% end %>

View File

@ -331,6 +331,7 @@ RedmineApp::Application.routes.draw do
get 'add_comments_to_work' get 'add_comments_to_work'
get 'praise_student_work' get 'praise_student_work'
get 'forbidden_anonymous_comment' get 'forbidden_anonymous_comment'
get 'hide_score_detail'
end end
collection do collection do
post 'add_score_reply' post 'add_score_reply'

View File

@ -0,0 +1,5 @@
class AddIsHiddenToStudentWorksScore < ActiveRecord::Migration
def change
add_column :student_works_scores, :is_hidden, :boolean, :default => false
end
end

View File

@ -1744,7 +1744,7 @@ function expand_course_list(id, target, btnid, count) {
//点击删除时的确认弹框: 不走destroy方法 //点击删除时的确认弹框: 不走destroy方法
function delete_confirm_box(url, str){ function delete_confirm_box(url, str){
var htmlvalue = '<div id="muban_popup_box" style="width:300px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+ var htmlvalue = '<div id="muban_popup_box" style="width:300px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f16 fontGrey7">' + str + '</p><div class="cl"></div><a href="'+ url +'" class="fr sy_btn_blue mt10" style="margin-right: 92px;" data-remote="true">确定</a>'+ '<div class="clear mt15"><p class="text_c f14 fontGrey7">' + str + '</p><div class="cl"></div><a href="'+ url +'" class="fr sy_btn_blue mt10" style="margin-right: 92px;" data-remote="true">确定</a>'+
'<a href="javascript:void(0);" class="fr sy_btn_grey mt10 mr10" onclick="hideModal();">取消</a></div></div>'; '<a href="javascript:void(0);" class="fr sy_btn_grey mt10 mr10" onclick="hideModal();">取消</a></div></div>';
pop_box_new(htmlvalue, 300, 140); pop_box_new(htmlvalue, 300, 140);
} }
@ -1768,7 +1768,7 @@ function delete_confirm_box_3(url, str){
//提示框:只有一个确定按钮,点击关闭弹框 //提示框:只有一个确定按钮,点击关闭弹框
function notice_box(str){ function notice_box(str){
var htmlvalue = '<div id="muban_popup_box" style="width:300px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+ var htmlvalue = '<div id="muban_popup_box" style="width:300px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f16">' + str + '</p><div class="cl"></div>'+ '<div class="clear mt15"><p class="text_c f14">' + str + '</p><div class="cl"></div>'+
'<a href="javascript:void(0);" class="fr sy_btn_blue mt10 mr10" onclick="hideModal();" style="margin-right: 124px;">确定</a></div></div>'; '<a href="javascript:void(0);" class="fr sy_btn_blue mt10 mr10" onclick="hideModal();" style="margin-right: 124px;">确定</a></div></div>';
pop_box_new(htmlvalue, 300, 140); pop_box_new(htmlvalue, 300, 140);
} }