socialforge/app/controllers/contestant_works_controller.rb

120 lines
3.1 KiB
Ruby
Raw Normal View History

2016-12-22 10:01:37 +08:00
#encoding: utf-8
class ContestantWorksController < ApplicationController
include ContestantWorksHelper
include ApplicationHelper
require 'bigdecimal'
require "base64"
before_filter :find_contestwork, :only => [:new, :index, :create, :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 :member_of_contest, :only => [:new, :create, :show]
before_filter :author_of_work, :only => [:edit, :update, :destroy]
before_filter :admin_of_contest, :only => []
before_filter :is_logged, :only => [:index]
def new
end
def index
end
def show
end
def create
end
def edit
end
def update
end
def destroy
end
def new_student_work_project
@user_activity_id = params[:user_activity_id].to_i
@hw_status = params[:hw_status].to_i
respond_to do |format|
format.js
end
end
#创建作业的关联项目
def student_work_project
@project = ContestantWorkProject.new
@project.work_id = @contestwork.id
@project.project_id = params[:projectName].to_i
@project.user_id = User.current.id
@project.is_leader = 1
@project.contest_id = @contestwork.contest_id
if @project.save
@user_activity_id = params[:user_activity_id].to_i
@hw_status = params[:hw_status].to_i
@is_teacher = User.current.admin_of_contest?(@contestwork.contest) || User.current.admin?
respond_to do |format|
format.js
end
end
end
# 取消关联项目
def cancel_relate_project
relate_pro = ContestantWorkProject.where("user_id = #{User.current.id} and work_id = #{@contestwork.id}").first
if relate_pro.destroy
@user_activity_id = params[:user_activity_id].to_i
@hw_status = params[:hw_status].to_i
@is_teacher = User.current.admin_of_contest?(@contestwork.contest) || User.current.admin?
respond_to do |format|
format.js
end
end
end
private
#获取题目
def find_contestwork
@contestwork = Work.find params[:work]
@contest = @contestwork.contest
rescue
render_404
end
#获取作品
def find_work
@work = ContestantWork.find params[:id]
@contestwork = @work.work
@contest = @contestwork.contest
rescue
render_404
end
#是不是当前竞赛的成员
#当前竞赛成员才可以看到作品列表
def member_of_contest
render_403 unless User.current.member_of_contest?(@contest) || User.current.admin?
end
#判断是不是当前作品的提交者
#提交者 && (非匿评作业 || 未开启匿评) 可以编辑作品
def author_of_work
render_403 unless User.current.admin? || User.current.id == @work.user_id
end
def admin_of_contest
render_403 unless User.current.admin_of_contest?(@contest) || User.current.admin?
end
def is_logged
redirect_to signin_path unless User.current.logged?
end
end