class StudentWorkController < ApplicationController layout "base_courses" include StudentWorkHelper before_filter :find_homework, :only => [:new, :index, :create] before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score] before_filter :member_of_course, :only => [:index, :new, :create, :show, :add_score] before_filter :author_of_work, :only => [:edit, :update, :destroy] def index @stundet_works = @homework.student_works.order("final_score desc") respond_to do |format| format.html end end def new student_work = @homework.student_works.where("user_id = ?",User.current.id).first if student_work.nil? @stundet_work = StudentWork.new respond_to do |format| format.html end else render_403 end end def create if params[:student_work] stundet_work = StudentWork.new stundet_work.name = params[:student_work][:name] stundet_work.description = params[:student_work][:description] stundet_work.project_id = params[:student_work][:project_id] stundet_work.homework_common_id = @homework.id stundet_work.user_id = User.current.id stundet_work.save_attachments(params[:attachments]) render_attachment_warning_if_needed(stundet_work) if stundet_work.save respond_to do |format| format.html { flash[:notice] = l(:notice_successful_create) redirect_to student_work_index_url(:homework => @homework.id) } end return end end respond_to do |format| format.html { flash[:notice] = l(:notice_failed_create) redirect_to new_student_work_url(:homework => @homework.id) } end end def edit end def update end def show @score = student_work_score @work,User.current respond_to do |format| format.js end end def destroy end #添加评分,已评分则为修改评分 def add_score @score = student_work_score @work,User.current if @score @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] @is_new = false else @score = StudentWorksScore.new @score.score = params[:score] if params[:score] @score.comment = params[:new_form][:user_message] if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != "" @score.user_id = User.current.id @score.student_work_id = @work.id role = User.current.members.where("course_id = ?",@course.id).first.roles.first.name @score.reviewer_role = get_role_by_name(role) @is_new = true end @score.save_attachments(params[:attachments]) render_attachment_warning_if_needed(@score) if @score.save case @score.reviewer_role when 1 #教师评分:最后一个教师评分为最终评分 @work.teacher_score = @score.score @work.final_score = @score.score when 2 #教辅评分 教辅评分显示平均分 @work.teaching_asistant_score = @work.student_works_scores.where(:reviewer_role => 2).average(:score).try(:round, 2).to_f if @work.teacher_score.nil? if @work.student_score.nil? @work.final_score = @work.teaching_asistant_score else @work.final_score = format("%.2f",@work.teaching_asistant_score * @homework.homework_detail_manual.ta_proportion + @work.student_score * (1 - @homework.homework_detail_manual.ta_proportion)) end end when 3 #学生评分 学生评分显示平均分 @work.student_score = @work.student_works_scores.where(:reviewer_role => 3).average(:score).try(:round, 2).to_f if @work.teacher_score.nil? if @work.teaching_asistant_score.nil? @work.final_score = @work.student_score else @work.final_score = format("%.2f",@work.teaching_asistant_score * @homework.homework_detail_manual.ta_proportion + @work.student_score * (1 - @homework.homework_detail_manual.ta_proportion)) end end end if @work.save respond_to do |format| format.js end end end end #添加评分的回复 def add_score_reply @score = StudentWorksScore.find params[:score_id] @jour = @score.journals_for_messages.new(:user_id => User.current.id,:notes =>params[:message], :reply_id => 0) if @jour.save respond_to do |format| format.js end end end #删除评分的回复 def destroy_score_reply @jour = JournalsForMessage.find params[:jour_id] if @jour.destroy respond_to do |format| format.js end end end private #获取作业 def find_homework @homework = HomeworkCommon.find params[:homework] @course = @homework.course rescue render_404 end #获取作品 def find_work @work = StudentWork.find params[:id] @homework = @work.homework_common @course = @homework.course rescue render_404 end #是不是当前课程的成员 #当前课程成员才可以看到作品列表 def member_of_course render_403 unless User.current.member_of_course? @course end #判断是不是当前作品的提交者 #提交者可以编辑作品 def author_of_work render_403 unless User.current.id == @work.user_id && (@homework.homework_type != 1 || @homework.homework_detail_manual.comment_status == 1 ) end end