Description:
reorder submission and remove duplicate code for submission
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r644:6431e2ef4265 - - 7 files changed: 8 inserted, 55 deleted

@@ -103,65 +103,48
103 103 def source
104 104 submission = Submission.find(params[:id])
105 105 if ((submission.user_id == session[:user_id]) and
106 106 (submission.problem != nil) and
107 107 (submission.problem.available))
108 108 send_data(submission.source,
109 109 {:filename => submission.download_filename,
110 110 :type => 'text/plain'})
111 111 else
112 112 flash[:notice] = 'Error viewing source'
113 113 redirect_to :action => 'list'
114 114 end
115 115 end
116 116
117 117 def compiler_msg
118 118 @submission = Submission.find(params[:id])
119 119 if @submission.user_id == session[:user_id]
120 120 render :action => 'compiler_msg', :layout => 'empty'
121 121 else
122 122 flash[:notice] = 'Error viewing source'
123 123 redirect_to :action => 'list'
124 124 end
125 125 end
126 126
127 - def submission
128 - @user = User.find(session[:user_id])
129 - @problems = @user.available_problems
130 - if params[:id]==nil
131 - @problem = nil
132 - @submissions = nil
133 - else
134 - @problem = Problem.find_by_id(params[:id])
135 - if (@problem == nil) or (not @problem.available)
136 - redirect_to :action => 'list'
137 - flash[:notice] = 'Error: submissions for that problem are not viewable.'
138 - return
139 - end
140 - @submissions = Submission.find_all_by_user_problem(@user.id, @problem.id)
141 - end
142 - end
143 -
144 127 def result
145 128 if !GraderConfiguration.show_grading_result
146 129 redirect_to :action => 'list' and return
147 130 end
148 131 @user = User.find(session[:user_id])
149 132 @submission = Submission.find(params[:id])
150 133 if @submission.user!=@user
151 134 flash[:notice] = 'You are not allowed to view result of other users.'
152 135 redirect_to :action => 'list' and return
153 136 end
154 137 prepare_grading_result(@submission)
155 138 end
156 139
157 140 def load_output
158 141 if !GraderConfiguration.show_grading_result or params[:num]==nil
159 142 redirect_to :action => 'list' and return
160 143 end
161 144 @user = User.find(session[:user_id])
162 145 @submission = Submission.find(params[:id])
163 146 if @submission.user!=@user
164 147 flash[:notice] = 'You are not allowed to view result of other users.'
165 148 redirect_to :action => 'list' and return
166 149 end
167 150 case_num = params[:num].to_i
@@ -1,46 +1,46
1 1 class SubmissionsController < ApplicationController
2 2 before_filter :authenticate
3 3 before_filter :submission_authorization, only: [:show, :direct_edit_submission, :download, :edit]
4 4
5 5 # GET /submissions
6 6 # GET /submissions.json
7 7 # Show problem selection and user's submission of that problem
8 8 def index
9 9 @user = @current_user
10 10 @problems = @user.available_problems
11 11
12 12 if params[:problem_id]==nil
13 13 @problem = nil
14 14 @submissions = nil
15 15 else
16 16 @problem = Problem.find_by_id(params[:problem_id])
17 17 if (@problem == nil) or (not @problem.available)
18 18 redirect_to main_list_path
19 19 flash[:notice] = 'Error: submissions for that problem are not viewable.'
20 20 return
21 21 end
22 - @submissions = Submission.find_all_by_user_problem(@user.id, @problem.id)
22 + @submissions = Submission.find_all_by_user_problem(@user.id, @problem.id).order(id: :desc)
23 23 end
24 24 end
25 25
26 26 # GET /submissions/1
27 27 # GET /submissions/1.json
28 28 def show
29 29 @submission = Submission.find(params[:id])
30 30
31 31 #log the viewing
32 32 user = User.find(session[:user_id])
33 33 SubmissionViewLog.create(user_id: session[:user_id],submission_id: @submission.id) unless user.admin?
34 34 end
35 35
36 36 def download
37 37 @submission = Submission.find(params[:id])
38 38 send_data(@submission.source, {:filename => @submission.download_filename, :type => 'text/plain'})
39 39 end
40 40
41 41 def compiler_msg
42 42 @submission = Submission.find(params[:id])
43 43 respond_to do |format|
44 44 format.js
45 45 end
46 46 end
@@ -7,49 +7,49
7 7 right_menu = ''
8 8 user = User.find(session[:user_id])
9 9
10 10 if (user!=nil) and (GraderConfiguration.show_tasks_to?(user))
11 11 left_menu << add_menu("#{I18n.t 'menu.tasks'}", 'tasks', 'list')
12 12 left_menu << add_menu("#{I18n.t 'menu.submissions'}", 'main', 'submission')
13 13 left_menu << add_menu("#{I18n.t 'menu.test'}", 'test', 'index')
14 14 end
15 15
16 16 if GraderConfiguration['right.user_hall_of_fame']
17 17 left_menu << add_menu("#{I18n.t 'menu.hall_of_fame'}", 'report', 'problem_hof')
18 18 end
19 19
20 20 right_menu << add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-question-sign')}".html_safe, 'main', 'help')
21 21 right_menu << add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-comment')}".html_safe, 'messages', 'list', {title: I18n.t('menu.messages'), data: {toggle: 'tooltip'}})
22 22 if GraderConfiguration['system.user_setting_enabled']
23 23 right_menu << add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-cog')}".html_safe, 'users', 'index', {title: I18n.t('menu.settings'), data: {toggle: 'tooltip'}})
24 24 end
25 25 right_menu << add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-log-out')} #{user.full_name}".html_safe, 'main', 'login', {title: I18n.t('menu.log_out'), data: {toggle: 'tooltip'}})
26 26
27 27
28 28 result = content_tag(:ul,left_menu.html_safe,class: 'nav navbar-nav') + content_tag(:ul,right_menu.html_safe,class: 'nav navbar-nav navbar-right')
29 29 end
30 30
31 - def add_menu(title, controller, action,html_option = {})
31 + def add_menu(title, controller, action, html_option = {})
32 32 link_option = {controller: controller, action: action}
33 33 html_option[:class] = (html_option[:class] || '') + " active" if current_page?(link_option)
34 34 content_tag(:li, link_to(title,link_option),html_option)
35 35 end
36 36
37 37 def user_header
38 38 menu_items = ''
39 39 user = User.find(session[:user_id])
40 40
41 41 if (user!=nil) and (session[:admin])
42 42 # admin menu
43 43 menu_items << "<b>Administrative task:</b> "
44 44 append_to menu_items, '[Announcements]', 'announcements', 'index'
45 45 append_to menu_items, '[Msg console]', 'messages', 'console'
46 46 append_to menu_items, '[Problems]', 'problems', 'index'
47 47 append_to menu_items, '[Users]', 'user_admin', 'index'
48 48 append_to menu_items, '[Results]', 'user_admin', 'user_stat'
49 49 append_to menu_items, '[Report]', 'report', 'multiple_login'
50 50 append_to menu_items, '[Graders]', 'graders', 'list'
51 51 append_to menu_items, '[Contests]', 'contest_management', 'index'
52 52 append_to menu_items, '[Sites]', 'sites', 'index'
53 53 append_to menu_items, '[System config]', 'configurations', 'index'
54 54 menu_items << "<br/>"
55 55 end
@@ -1,26 +1,26
1 1
2 2 %tr
3 3 %td{:align => "center"}
4 - = submission_counter+1
5 - %td{:align => "center"}
4 + = submission.number
5 + %td.text-right
6 6 = link_to "##{submission.id}", submission_path(submission.id)
7 7 %td
8 8 = l submission.submitted_at, format: :long
9 9 = "( #{time_ago_in_words(submission.submitted_at)} ago)"
10 10 %td
11 11 = submission.source_filename
12 12 = " (#{submission.language.pretty_name}) "
13 13 = link_to('[load]',{:action => 'source', :id => submission.id})
14 14 %td
15 15 - if submission.graded_at
16 16 = "Graded at #{format_short_time(submission.graded_at)}."
17 17 %br/
18 18 = "Score: #{(submission.points*100/submission.problem.full_score).to_i} " if GraderConfiguration['ui.show_score']
19 19 = " ["
20 20 %tt
21 21 = submission.grader_comment
22 22 = "]"
23 23 %td
24 24 = render :partial => 'compiler_message', :locals => {:compiler_message => submission.compiler_message }
25 25 %td
26 26 = link_to 'Edit', edit_submission_path(submission.id), class: 'btn btn-success'
@@ -1,47 +1,48
1 1 %header.navbar.navbar-default.navbar-fixed-top
2 2 %nav
3 3 .container-fluid
4 4 .navbar-header
5 5 %button.navbar-toggle.collapsed{ data: {toggle: 'collapse', target: '#navbar-collapse'} }
6 6 %span.sr-only Togggle Navigation
7 7 %span.icon-bar
8 8 %span.icon-bar
9 9 %span.icon-bar
10 10 %a.navbar-brand{href: main_list_path}
11 11 %span.glyphicon.glyphicon-home
12 12 MAIN
13 13 .collapse.navbar-collapse#navbar-collapse
14 14 %ul.nav.navbar-nav
15 + / submission
15 16 - if (@current_user!=nil) and (GraderConfiguration.show_tasks_to?(@current_user))
16 - //= add_menu("#{I18n.t 'menu.tasks'}", 'tasks', 'list')
17 17 %li.dropdown
18 18 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
19 19 = "#{I18n.t 'menu.submissions'}"
20 20 %span.caret
21 21 %ul.dropdown-menu
22 - = add_menu("View", 'main', 'submission')
22 + = add_menu("View", 'submissions', 'index')
23 23 = add_menu("Self Test", 'test', 'index')
24 + / hall of fame
24 25 - if GraderConfiguration['right.user_hall_of_fame']
25 26 = add_menu("#{I18n.t 'menu.hall_of_fame'}", 'report', 'problem_hof')
26 27 / display MODE button (with countdown in contest mode)
27 28 - if GraderConfiguration.analysis_mode?
28 29 %div.navbar-btn.btn.btn-success#countdown= "ANALYSIS MODE"
29 30 - elsif GraderConfiguration.time_limit_mode?
30 31 - if @current_user.contest_finished?
31 32 %div.navbar-btn.btn.btn-danger#countdown= "Contest is over"
32 33 - elsif !@current_user.contest_started?
33 34 %div.navbar-btn.btn.btn-primary#countdown= (t 'title_bar.contest_not_started')
34 35 - else
35 36 %div.navbar-btn.btn.btn-primary#countdown asdf
36 37 :javascript
37 38 $("#countdown").countdown({until: "+#{@current_user.contest_time_left.to_i}s", layout: 'Time left: {hnn}:{mnn}:{snn}'});
38 39 / admin section
39 40 - if (@current_user!=nil) and (session[:admin])
40 41 / management
41 42 %li.dropdown
42 43 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
43 44 Manage
44 45 %span.caret
45 46 %ul.dropdown-menu
46 47 = add_menu( 'Announcements', 'announcements', 'index')
47 48 = add_menu( 'Problems', 'problems', 'index')
@@ -1,29 +1,29
1 1 .panel.panel-info
2 2 .panel-heading
3 3 Select Problems
4 4 .panel-body
5 5 .form-inline
6 6 = select 'submission',
7 7 'problem_id',
8 8 @problems.collect {|p| ["[#{p.name}] #{p.full_name}", problem_submissions_url(p.id)]},
9 9 { selected: (@problem ? problem_submissions_url(@problem) : -1) },
10 10 { class: 'select2 form-control'}
11 11 %button.btn.btn-primary.btn-sm.go-button#problem_go{data: {source: '#submission_problem_id'}} Go
12 12
13 13 - if @problem!=nil
14 14 %h2= "Task: #{@problem.full_name} (#{@problem.name})"
15 15
16 16 - if @submissions!=nil
17 17 - if @submissions.length>0
18 18 %table.table
19 19 %thead
20 20 %th No.
21 - %th #
21 + %th.text-right #
22 22 %th At
23 23 %th Source
24 24 %th Result
25 25 %th{:width => "300px"} Compiler message
26 26 %th
27 27 = render :partial => 'submission', :collection => @submissions
28 28 - else
29 29 No submission
deleted file
You need to be logged in to leave comments. Login now