diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb --- a/app/controllers/submissions_controller.rb +++ b/app/controllers/submissions_controller.rb @@ -1,6 +1,7 @@ class SubmissionsController < ApplicationController - before_filter :authenticate - before_filter :submission_authorization, only: [:show, :direct_edit_submission] + before_action :authenticate + before_action :submission_authorization, only: [:show, :direct_edit_submission, :download, :edit] + before_action :admin_authorization, only: [:rejudge] # GET /submissions # GET /submissions.json @@ -19,7 +20,7 @@ flash[:notice] = 'Error: submissions for that problem are not viewable.' return end - @submissions = Submission.find_all_by_user_problem(@user.id, @problem.id) + @submissions = Submission.find_all_by_user_problem(@user.id, @problem.id).order(id: :desc) end end @@ -31,6 +32,20 @@ #log the viewing user = User.find(session[:user_id]) SubmissionViewLog.create(user_id: session[:user_id],submission_id: @submission.id) unless user.admin? + + @task = @submission.task + end + + def download + @submission = Submission.find(params[:id]) + send_data(@submission.source, {:filename => @submission.download_filename, :type => 'text/plain'}) + end + + def compiler_msg + @submission = Submission.find(params[:id]) + respond_to do |format| + format.js + end end #on-site new submission on specific problem @@ -60,63 +75,18 @@ end end -# # GET /submissions/new -# # GET /submissions/new.json -# def new -# @submission = Submission.new -# -# respond_to do |format| -# format.html # new.html.erb -# format.json { render json: @submission } -# end -# end -# -# -# # POST /submissions -# # POST /submissions.json -# def create -# @submission = Submission.new(params[:submission]) -# -# respond_to do |format| -# if @submission.save -# format.html { redirect_to @submission, notice: 'Submission was successfully created.' } -# format.json { render json: @submission, status: :created, location: @submission } -# else -# format.html { render action: "new" } -# format.json { render json: @submission.errors, status: :unprocessable_entity } -# end -# end -# end -# -# # PUT /submissions/1 -# # PUT /submissions/1.json -# def update -# @submission = Submission.find(params[:id]) -# -# respond_to do |format| -# if @submission.update_attributes(params[:submission]) -# format.html { redirect_to @submission, notice: 'Submission was successfully updated.' } -# format.json { head :no_content } -# else -# format.html { render action: "edit" } -# format.json { render json: @submission.errors, status: :unprocessable_entity } -# end -# end -# end -# -# # DELETE /submissions/1 -# # DELETE /submissions/1.json -# def destroy -# @submission = Submission.find(params[:id]) -# @submission.destroy -# -# respond_to do |format| -# format.html { redirect_to submissions_url } -# format.json { head :no_content } -# end -# end + # GET /submissions/:id/rejudge + def rejudge + @submission = Submission.find(params[:id]) + @task = @submission.task + @task.status_inqueue! if @task + respond_to do |format| + format.js + end + end protected + def submission_authorization #admin always has privileged if @current_user.admin? @@ -133,5 +103,6 @@ unauthorized_redirect return false end + end