diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 8b2cdad2f..493222e21 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -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, :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] - 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 :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] @@ -950,6 +950,19 @@ class StudentWorkController < ApplicationController 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 order = params[:order] || "desc" diff --git a/app/helpers/student_work_helper.rb b/app/helpers/student_work_helper.rb index 08dae571c..119126ffb 100644 --- a/app/helpers/student_work_helper.rb +++ b/app/helpers/student_work_helper.rb @@ -69,12 +69,13 @@ module StudentWorkHelper str end - #获取学生作品的评分记录:同一个教师或教辅只显示最后一次评分 + #获取学生作品的评分记录:同一个教师或教辅只显示未隐藏的评分 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" - tea_ts_ids = StudentWorksScore.find_by_sql sql - 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") + # 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 = 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(:is_hidden => false).order("created_at desc") return scores end diff --git a/app/models/student_works_score.rb b/app/models/student_works_score.rb index 6d08cad04..2c6b461e5 100644 --- a/app/models/student_works_score.rb +++ b/app/models/student_works_score.rb @@ -2,7 +2,7 @@ class StudentWorksScore < ActiveRecord::Base #reviewer_role: 1:教师评分;2:教辅评分;3:学生匿评 #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 :student_work diff --git a/app/views/student_work/_student_work_score.html.erb b/app/views/student_work/_student_work_score.html.erb index 29d1b2003..decc093c8 100644 --- a/app/views/student_work/_student_work_score.html.erb +++ b/app/views/student_work/_student_work_score.html.erb @@ -13,6 +13,13 @@ <%= show_real_score ? score.score : "**" %>分 <% 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 %> + 隐藏 + <% end %> + <% end %> 回复 <% if @homework.anonymous_appeal == 1 %> <% if score.student_work.user == User.current && score.reviewer_role == 3 && score.appeal_status == 0 %> @@ -48,10 +55,10 @@
申诉 <% if score.appeal_status == 1 && score.student_work.user == User.current %> - 撤销申诉 + 撤销申诉 <% elsif @is_teacher && score.appeal_status == 1 %> - 接受 - 拒绝 + 接受 + 拒绝 <% end %> <%=format_time score.student_works_scores_appeal.updated_at %> @@ -73,24 +80,3 @@
- diff --git a/app/views/student_work/hide_score_detail.js.erb b/app/views/student_work/hide_score_detail.js.erb new file mode 100644 index 000000000..95038df8a --- /dev/null +++ b/app/views/student_work/hide_score_detail.js.erb @@ -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}) %>"); \ No newline at end of file diff --git a/app/views/users/_homework_base_info.html.erb b/app/views/users/_homework_base_info.html.erb index 3c4200e9d..83ee74958 100644 --- a/app/views/users/_homework_base_info.html.erb +++ b/app/views/users/_homework_base_info.html.erb @@ -32,8 +32,8 @@ <% unless student_work_scores.empty? %> <% last_score = student_work_scores.first %>
-

# <%=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"%>评阅了作品,优秀排行: +

+ # <%=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"%>评阅了作品,优秀排行:

<% end %> diff --git a/config/routes.rb b/config/routes.rb index 815393403..11898fc2f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -331,6 +331,7 @@ RedmineApp::Application.routes.draw do get 'add_comments_to_work' get 'praise_student_work' get 'forbidden_anonymous_comment' + get 'hide_score_detail' end collection do post 'add_score_reply' diff --git a/db/migrate/20170112082231_add_is_hidden_to_student_works_score.rb b/db/migrate/20170112082231_add_is_hidden_to_student_works_score.rb new file mode 100644 index 000000000..19802a041 --- /dev/null +++ b/db/migrate/20170112082231_add_is_hidden_to_student_works_score.rb @@ -0,0 +1,5 @@ +class AddIsHiddenToStudentWorksScore < ActiveRecord::Migration + def change + add_column :student_works_scores, :is_hidden, :boolean, :default => false + end +end diff --git a/public/javascripts/application.js b/public/javascripts/application.js index a60fa2581..8a3436d64 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1744,7 +1744,7 @@ function expand_course_list(id, target, btnid, count) { //点击删除时的确认弹框: 不走destroy方法 function delete_confirm_box(url, str){ var htmlvalue = '

提示

'+ - '

' + str + '

确定'+ + '

' + str + '

确定'+ '取消
'; pop_box_new(htmlvalue, 300, 140); } @@ -1768,7 +1768,7 @@ function delete_confirm_box_3(url, str){ //提示框:只有一个确定按钮,点击关闭弹框 function notice_box(str){ var htmlvalue = '

提示

'+ - '

' + str + '

'+ + '

' + str + '

'+ '确定
'; pop_box_new(htmlvalue, 300, 140); }