Description:
more styling
git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@158 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r78:822d6c35aada - - 12 files changed: 68 inserted, 45 deleted
@@ -0,0 +1,22 | |||
|
1 | + = user_title_bar(@user) | |
|
2 | + | |
|
3 | + .submitbox | |
|
4 | + = error_messages_for 'submission' | |
|
5 | + = render :partial => 'submission_box' | |
|
6 | + | |
|
7 | + | |
|
8 | + %hr/ | |
|
9 | + | |
|
10 | + %table.info | |
|
11 | + %tr.info-head | |
|
12 | + %th | |
|
13 | + %th Tasks | |
|
14 | + %th # of sub(s) | |
|
15 | + %th Results | |
|
16 | + = render :partial => 'problem', :collection => @problems | |
|
17 | + | |
|
18 | + %hr | |
|
19 | + | |
|
20 | + .submitbox | |
|
21 | + = render :partial => 'submission_box' | |
|
22 | + |
@@ -1,99 +1,96 | |||
|
1 | 1 | class MainController < ApplicationController |
|
2 | 2 | |
|
3 | 3 | before_filter :authenticate, :except => [:index, :login] |
|
4 | 4 | |
|
5 | 5 | verify :method => :post, :only => [:submit], |
|
6 | 6 | :redirect_to => { :action => :index } |
|
7 | 7 | |
|
8 | 8 | |
|
9 | 9 | def index |
|
10 | 10 | redirect_to :action => 'login' |
|
11 | 11 | end |
|
12 | 12 | |
|
13 | 13 | def login |
|
14 | 14 | saved_notice = flash[:notice] |
|
15 | 15 | reset_session |
|
16 | 16 | flash[:notice] = saved_notice |
|
17 | 17 | |
|
18 | - @title = Configuration['ui.front.title'] | |
|
19 | - @welcome = Configuration['ui.front.welcome_message'] | |
|
20 | - | |
|
21 | 18 | render :action => 'login', :layout => 'empty' |
|
22 | 19 | end |
|
23 | 20 | |
|
24 | 21 | def list |
|
25 | 22 | prepare_list_information |
|
26 | 23 | end |
|
27 | 24 | |
|
28 | 25 | def submit |
|
29 | 26 | @submission = Submission.new(params[:submission]) |
|
30 | 27 | @submission.user_id = session[:user_id] |
|
31 | 28 | @submission.language_id = 0 |
|
32 | 29 | @submission.source = params['file'].read if params['file']!='' |
|
33 | 30 | @submission.submitted_at = Time.new |
|
34 | 31 | if @submission.valid? |
|
35 | 32 | if @submission.save == false |
|
36 | 33 | flash[:notice] = 'Error saving your submission' |
|
37 | 34 | elsif Task.create(:submission_id => @submission.id, |
|
38 | 35 | :status => Task::STATUS_INQUEUE) == false |
|
39 | 36 | flash[:notice] = 'Error adding your submission to task queue' |
|
40 | 37 | end |
|
41 | 38 | else |
|
42 | 39 | prepare_list_information |
|
43 | 40 | render :action => 'list' and return |
|
44 | 41 | end |
|
45 | 42 | redirect_to :action => 'list' |
|
46 | 43 | end |
|
47 | 44 | |
|
48 | 45 | def source |
|
49 | 46 | submission = Submission.find(params[:id]) |
|
50 | 47 | if submission.user_id == session[:user_id] |
|
51 | 48 | fname = submission.problem.name + '.' + submission.language.ext |
|
52 | 49 | send_data(submission.source, |
|
53 | 50 | {:filename => fname, |
|
54 | 51 | :type => 'text/plain'}) |
|
55 | 52 | else |
|
56 | 53 | flash[:notice] = 'Error viewing source' |
|
57 | 54 | redirect_to :action => 'list' |
|
58 | 55 | end |
|
59 | 56 | end |
|
60 | 57 | |
|
61 | 58 | def compiler_msg |
|
62 | 59 | @submission = Submission.find(params[:id]) |
|
63 | 60 | if @submission.user_id == session[:user_id] |
|
64 | 61 | render :action => 'compiler_msg', :layout => 'empty' |
|
65 | 62 | else |
|
66 | 63 | flash[:notice] = 'Error viewing source' |
|
67 | 64 | redirect_to :action => 'list' |
|
68 | 65 | end |
|
69 | 66 | end |
|
70 | 67 | |
|
71 | 68 | def submission |
|
72 | 69 | @user = User.find(session[:user_id]) |
|
73 | 70 | @problems = Problem.find_available_problems |
|
74 | 71 | if params[:id]==nil |
|
75 | 72 | @problem = nil |
|
76 | 73 | @submissions = nil |
|
77 | 74 | else |
|
78 | 75 | @problem = Problem.find_by_name(params[:id]) |
|
79 | 76 | @submissions = Submission.find_all_by_user_problem(@user.id, @problem.id) |
|
80 | 77 | end |
|
81 | 78 | end |
|
82 | 79 | |
|
83 | 80 | protected |
|
84 | 81 | def prepare_list_information |
|
85 | 82 | @problems = Problem.find_available_problems |
|
86 | 83 | @prob_submissions = Array.new |
|
87 | 84 | @user = User.find(session[:user_id]) |
|
88 | 85 | @problems.each do |p| |
|
89 | 86 | sub = Submission.find_last_by_user_and_problem(@user.id,p.id) |
|
90 | 87 | if sub!=nil |
|
91 | 88 | @prob_submissions << { :count => sub.number, :submission => sub } |
|
92 | 89 | else |
|
93 | 90 | @prob_submissions << { :count => 0, :submission => nil } |
|
94 | 91 | end |
|
95 | 92 | end |
|
96 | 93 | end |
|
97 | 94 | |
|
98 | 95 | end |
|
99 | 96 |
@@ -1,46 +1,63 | |||
|
1 | 1 | # Methods added to this helper will be available to all templates in the application. |
|
2 | 2 | module ApplicationHelper |
|
3 | 3 | |
|
4 | 4 | def user_header |
|
5 | 5 | menu_items = '' |
|
6 | 6 | user = User.find(session[:user_id]) |
|
7 | 7 | |
|
8 | 8 | if (user!=nil) and (user.admin?) |
|
9 | 9 | # admin menu |
|
10 | 10 | menu_items << "<b>Administrative task:</b> " |
|
11 | 11 | append_to menu_items, '[Problem admin]', 'problems', 'index' |
|
12 | 12 | append_to menu_items, '[User admin]', 'user_admin', 'index' |
|
13 | 13 | append_to menu_items, '[User stat]', 'user_admin', 'user_stat' |
|
14 | 14 | #append_to menu_items, '[Graders]', 'graders', 'list' |
|
15 | 15 | append_to menu_items, '[Site config]', 'configurations', 'index' |
|
16 | 16 | menu_items << "<br/>" |
|
17 | 17 | end |
|
18 | 18 | |
|
19 | 19 | # main page |
|
20 | 20 | append_to menu_items, '[Main]', 'main', 'list' |
|
21 | 21 | append_to menu_items, '[Submissions]', 'main', 'submission' |
|
22 | 22 | append_to menu_items, '[Test]', 'test', 'index' |
|
23 | 23 | append_to menu_items, '[Settings]', 'users', 'index' |
|
24 | 24 | append_to menu_items, '[Log out]', 'main', 'login' |
|
25 | 25 | |
|
26 | 26 | menu_items |
|
27 | 27 | end |
|
28 | 28 | |
|
29 | 29 | def append_to(option,label, controller, action) |
|
30 | 30 | option << ' ' if option!='' |
|
31 | 31 | option << link_to_unless_current(label, |
|
32 | 32 | :controller => controller, |
|
33 | 33 | :action => action) |
|
34 | 34 | end |
|
35 | 35 | |
|
36 | 36 | def format_short_time(time) |
|
37 | 37 | now = Time.now |
|
38 | 38 | st = '' |
|
39 | 39 | if (time.yday != now.yday) or |
|
40 | 40 | (time.year != now.year) |
|
41 | 41 | st = time.strftime("%x ") |
|
42 | 42 | end |
|
43 | 43 | st + time.strftime("%X") |
|
44 | 44 | end |
|
45 | 45 | |
|
46 | + | |
|
47 | + def user_title_bar(user) | |
|
48 | + <<TITLEBAR | |
|
49 | + <div class="title"> | |
|
50 | + <table> | |
|
51 | + <tr> | |
|
52 | + <td class="left-col"> | |
|
53 | + #{user.full_name}<br/> | |
|
54 | + Current time is #{format_short_time(Time.new)}<br/> | |
|
55 | + </td> | |
|
56 | + <td class="right-col">APIO'08</td> | |
|
57 | + </tr> | |
|
58 | + </table> | |
|
59 | + </div> | |
|
60 | + TITLEBAR | |
|
46 | 61 | end |
|
62 | + | |
|
63 | + end |
@@ -1,22 +1,22 | |||
|
1 | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
|
2 | 2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
|
3 | 3 | |
|
4 | 4 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
|
5 | 5 | <head> |
|
6 | 6 | <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> |
|
7 | 7 | <title>Grader!</title> |
|
8 | 8 | <%= stylesheet_link_tag 'application' %> |
|
9 | 9 | <%= yield :head %> |
|
10 | 10 | </head> |
|
11 | 11 | <body> |
|
12 | 12 | |
|
13 | 13 | <div class="userbar"> |
|
14 | 14 | <%= user_header %> |
|
15 | 15 | </div> |
|
16 | 16 | |
|
17 | - <p style="color: green"><%= flash[:notice] %></p> | |
|
17 | + <%= content_tag(:p,flash[:notice],:style => "color:green") if flash[:notice]!=nil %> | |
|
18 | 18 | |
|
19 | 19 | <%= yield %> |
|
20 | 20 | |
|
21 | 21 | </body> |
|
22 | 22 | </html> |
@@ -1,18 +1,18 | |||
|
1 | 1 | |
|
2 | 2 | %tr{:class => ((submission_counter%2==0) ? "info-even" : "info-odd")} |
|
3 | 3 | %td.info{:align => "center"} |
|
4 | 4 | = submission_counter+1 |
|
5 | 5 | %td.info= format_short_time(submission.submitted_at) |
|
6 | 6 | %td.info{:align => "center"} |
|
7 | 7 | = link_to('[load]',{:action => 'source', :id => submission.id}) |
|
8 | 8 | %td.info |
|
9 | 9 | - if submission.graded_at!=nil |
|
10 | 10 | = "Graded at #{format_short_time(submission.graded_at)}." |
|
11 | 11 | %br/ |
|
12 | - = "Score: #{submission.points} " | |
|
12 | + = "Score: #{submission.points} " if Configuration['ui.show_score'] | |
|
13 | 13 | = " [" |
|
14 | 14 | %tt |
|
15 | 15 | = submission.grader_comment |
|
16 | 16 | = "]" |
|
17 | 17 | %td.info |
|
18 | 18 | = render :partial => 'compiler_message', :locals => {:compiler_message => submission.compiler_message } |
@@ -1,20 +1,20 | |||
|
1 | 1 | |
|
2 | 2 | - if submission==nil |
|
3 | 3 | = "-" |
|
4 | 4 | - else |
|
5 | 5 | - if submission.graded_at==nil |
|
6 | 6 | Submitted at |
|
7 | 7 | = format_short_time(submission.submitted_at) |
|
8 | 8 | - else |
|
9 | 9 | = "Graded at #{format_short_time(submission.graded_at)}, " |
|
10 | - = "score: #{submission.points} " | |
|
10 | + = "score: #{submission.points} " if Configuration['ui.show_score'] | |
|
11 | 11 | = " [" |
|
12 | 12 | %tt |
|
13 | 13 | = submission.grader_comment |
|
14 | 14 | = "]" |
|
15 | 15 | = " | " |
|
16 | 16 | = link_to('[msg]', {:action => 'compiler_msg', :id => submission.id}, {:popup => true}) |
|
17 | 17 | = " | " |
|
18 | 18 | = link_to('[source]',{:action => 'source', :id => submission.id}) |
|
19 | 19 | = " | " |
|
20 | 20 | = link_to '[submissions]', :action => 'submission', :id => problem_name |
@@ -1,25 +1,25 | |||
|
1 |
- <h1><%= |
|
|
1 | + <h1><%= Configuration['ui.front.title'] %></h1> | |
|
2 | 2 | |
|
3 | - <b><%= @welcome %></b><br/> | |
|
3 | + <b><%= Configuration['ui.front.welcome_message'] %></b><br/> | |
|
4 | 4 | Please login to see the problem list.<br/><br/> |
|
5 | 5 | |
|
6 | 6 | <% if flash[:notice] %> |
|
7 | 7 | <hr> |
|
8 | 8 | <b><%= flash[:notice] %></b> |
|
9 | 9 | <hr> |
|
10 | 10 | <% end %> |
|
11 | 11 | |
|
12 | 12 | <div style="border: solid 1px gray; padding: 2px; background: #f0f0f0;"> |
|
13 | 13 | <% form_tag :controller => 'login', :action => 'login' do %> |
|
14 | 14 | <table> |
|
15 | 15 | <tr> |
|
16 | 16 | <td align="right">User name:</td><td><%= text_field_tag 'login' %></td> |
|
17 | 17 | </tr> |
|
18 | 18 | <tr> |
|
19 | 19 | <td align="right">Password:</td><td><%= password_field_tag %></td> |
|
20 | 20 | </tr> |
|
21 | 21 | </table> |
|
22 | 22 | <%= submit_tag 'Login' %> |
|
23 | 23 | <% end %> |
|
24 | 24 | </div> |
|
25 | 25 |
@@ -1,30 +1,24 | |||
|
1 | - .title | |
|
2 | - Hello | |
|
3 | - =h @user.full_name | |
|
4 | - | |
|
5 | - Current time is | |
|
6 | - = format_short_time(Time.new) | |
|
7 | - %br/ | |
|
1 | + = user_title_bar(@user) | |
|
8 | 2 | |
|
9 | 3 | .task-menu |
|
10 | 4 | Task List |
|
11 | 5 | %br/ |
|
12 | 6 | - @problems.each do |problem| |
|
13 | 7 | = link_to problem.name, :action => 'submission', :id => problem.name |
|
14 | 8 | |
|
15 | 9 | - if @problem!=nil |
|
16 | 10 | %h2= "Task: #{@problem.full_name} (#{@problem.name})" |
|
17 | 11 | |
|
18 | 12 | - if @submissions!=nil |
|
19 | 13 | - if @submissions.length>0 |
|
20 | 14 | %table.info |
|
21 | 15 | %tr.info-head |
|
22 | 16 | %th.info # |
|
23 | 17 | %th.info At |
|
24 | 18 | %th.info Source |
|
25 | 19 | %th.info Result |
|
26 | 20 | %th.info{:width => "300px"} |
|
27 | 21 | Compiler message |
|
28 | 22 | = render :partial => 'submission', :collection => @submissions |
|
29 | 23 | - else |
|
30 | 24 | No submission |
@@ -1,80 +1,82 | |||
|
1 | + <%= user_title_bar(@user) %> | |
|
2 | + | |
|
1 | 3 | <h2>Test Interface</h2> |
|
2 | 4 | |
|
3 | 5 | <% if @problems.length==0 %> |
|
4 | 6 | There is no submission |
|
5 | 7 | <% else %> |
|
6 | 8 | |
|
7 | 9 | <script type="text/javascript"> |
|
8 | 10 | var submissionCount = new Array(); |
|
9 | 11 | <% @submissions.each do |submission| %> |
|
10 | 12 | submissionCount[<%= submission.problem_id %>]=<%= submission.number %>; |
|
11 | 13 | <% end %> |
|
12 | 14 | |
|
13 | 15 | function updateSubmissionList() { |
|
14 | 16 | currentProb = document.getElementById("test_request_problem_id").value; |
|
15 | 17 | count = submissionCount[currentProb]; |
|
16 | 18 | submissionSelect = document.getElementById("test_request_submission_number"); |
|
17 | 19 | old_len = submissionSelect.length; |
|
18 | 20 | // clear the box |
|
19 | 21 | for(i=0; i<old_len; i++) |
|
20 | 22 | submissionSelect.remove(0); |
|
21 | 23 | for(i=count; i>=1; i--) { |
|
22 | 24 | try { |
|
23 | 25 | submissionSelect.add(new Option(""+i,""+i,false,false),null); |
|
24 | 26 | } catch(ex) { |
|
25 | 27 | submissionSelect.add(new Option(""+i,""+i,false,false)); |
|
26 | 28 | } |
|
27 | 29 | } |
|
28 | 30 | } |
|
29 | 31 | </script> |
|
30 | 32 | |
|
31 | 33 | <% form_for :test_request, nil, |
|
32 | 34 | :url => { :action => 'submit'}, |
|
33 | 35 | :html => { :multipart => true } do |f| %> |
|
34 | 36 | <table> |
|
35 | 37 | <tr> |
|
36 | 38 | <td>Task:</td> |
|
37 | 39 | <td> |
|
38 | 40 | <%= select(:test_request, |
|
39 | 41 | :problem_id, |
|
40 | 42 | @problems.collect {|p| [p.name, p.id]}, {}, |
|
41 | 43 | { :onclick => "updateSubmissionList();" }) %> |
|
42 | 44 | </td> |
|
43 | 45 | </tr> |
|
44 | 46 | <tr> |
|
45 | 47 | <td>Submission:</td> |
|
46 | 48 | <td> |
|
47 | 49 | <%= select(:test_request, |
|
48 | 50 | :submission_number, |
|
49 | 51 | ((1..@submissions[0].number).collect {|n| [n,n]}).reverse) %> |
|
50 | 52 | </td> |
|
51 | 53 | </tr> |
|
52 | 54 | <tr> |
|
53 | 55 | <td>Input data:</td> |
|
54 | 56 | <td><%= f.file_field :input_file %></td> |
|
55 | 57 | <tr> |
|
56 | 58 | <td colspan="2"> |
|
57 | 59 | <%= submit_tag 'submit' %> |
|
58 | 60 | </td> |
|
59 | 61 | </tr> |
|
60 | 62 | </table> |
|
61 | 63 | <% end %> |
|
62 | 64 | |
|
63 | 65 | <h3>Previous requests</h3> |
|
64 | 66 | |
|
65 | 67 | <table class="info"> |
|
66 | 68 | <tr class="info-head"> |
|
67 | 69 | <th>at</th> |
|
68 | 70 | <th>problem</th> |
|
69 | 71 | <th>sub #</th> |
|
70 | 72 | <th>status</th> |
|
71 | 73 | <th>running stat</th> |
|
72 | 74 | <th>output (first 2kb)</th> |
|
73 | 75 | <th>grading comment</th> |
|
74 | 76 | <th>compiler message</th> |
|
75 | 77 | </tr> |
|
76 | 78 | <%= render :partial => 'test_request', :collection => @test_requests %> |
|
77 | 79 | </table> |
|
78 | 80 | |
|
79 | 81 | <% end %> |
|
80 | 82 |
@@ -1,38 +1,39 | |||
|
1 | - | |
|
2 | 1 |
|
|
3 | 2 | = javascript_include_tag :defaults |
|
4 | 3 | |
|
4 | + = user_title_bar(@user) | |
|
5 | + | |
|
5 | 6 | %h1 Your account settings |
|
6 | 7 | |
|
7 | 8 | %p |
|
8 | 9 | You can edit your alias and e-mails. Just click on the text and edit it. |
|
9 | 10 | |
|
10 | 11 | |
|
11 | 12 | %table.uinfo |
|
12 | 13 | %tr |
|
13 | 14 | %th.uinfo Login |
|
14 | 15 | %td.uinfo= @user.login |
|
15 | 16 | %tr |
|
16 | 17 | %th.uinfo Full name |
|
17 | 18 | %td.uinfo= @user.full_name |
|
18 | 19 | %tr |
|
19 | 20 | %th.uinfo Alias |
|
20 | 21 | %td.uinfo= in_place_editor_field :user, 'alias_for_editing', {}, :rows => 1 |
|
21 | 22 | %tr |
|
22 | 23 | %th.uinfo E-mail |
|
23 | 24 | %td.uinfo= in_place_editor_field :user, 'email_for_editing', {}, :rows => 1 |
|
24 | 25 | %tr |
|
25 | 26 | %th.uinfo Password |
|
26 | 27 | %td.uinfo |
|
27 | 28 | - form_tag :action => 'chg_passwd', :method => 'post' do |
|
28 | 29 | %table |
|
29 | 30 | %tr |
|
30 | 31 | %td= password_field_tag 'passwd' |
|
31 | 32 | %td (new) |
|
32 | 33 | %tr |
|
33 | 34 | %td= password_field_tag 'passwd_verify' |
|
34 | 35 | %td (verify) |
|
35 | 36 | %tr |
|
36 | 37 | %td{:colspan => "2"} |
|
37 | 38 | = submit_tag 'change password' |
|
38 | 39 |
@@ -1,101 +1,117 | |||
|
1 | 1 | /* Normal text */ |
|
2 | 2 | p { |
|
3 | 3 | font-size: 12px; |
|
4 | 4 | } |
|
5 | 5 | |
|
6 | 6 | /* This is the main menu bad*/ |
|
7 | 7 | div.userbar { |
|
8 | 8 | border-top: thin solid grey; |
|
9 | 9 | border-bottom: thin solid grey; |
|
10 | 10 | text-align: right; |
|
11 | 11 | font-size: 12px; |
|
12 | 12 | } |
|
13 | 13 | |
|
14 | 14 | /* This is the top bar, displaying user's full name */ |
|
15 | 15 | div.title { |
|
16 |
- font-size: 2 |
|
|
17 | - font-weight: bold; | |
|
18 | - background: lightgreen; | |
|
16 | + font-size: 12px; | |
|
17 | + background: #ddffdd; | |
|
18 | + border: 1px solid black; | |
|
19 | 19 | padding: 2px; |
|
20 | + margin-top: 3px; | |
|
21 | + margin-bottom: 5px; | |
|
22 | + } | |
|
23 | + | |
|
24 | + div.title table { | |
|
25 | + width: 100%; | |
|
26 | + } | |
|
27 | + | |
|
28 | + div.title td.left-col { | |
|
29 | + text-align: left; | |
|
30 | + vertical-align: top; | |
|
31 | + } | |
|
32 | + | |
|
33 | + div.title td.right-col { | |
|
34 | + text-align: right; | |
|
35 | + vertical-align: top; | |
|
20 | 36 | } |
|
21 | 37 | |
|
22 | 38 | /* Standard table with header and rows with alternating background */ |
|
23 | 39 | table.info { |
|
24 | 40 | border: 1px solid black; |
|
25 | 41 | border-collapse: collapse; |
|
26 | 42 | font-size: 12px; |
|
27 | 43 | } |
|
28 | 44 | |
|
29 | 45 | table.info th { |
|
30 | 46 | border: 1px solid black; |
|
31 | 47 | } |
|
32 | 48 | |
|
33 | 49 | table.info td { |
|
34 | 50 | border-left: 1px solid black; |
|
35 | 51 | border-right: 1px solid black; |
|
36 | 52 | } |
|
37 | 53 | |
|
38 | 54 | tr.info-head { |
|
39 | 55 | background: #777777; |
|
40 | 56 | color: white; |
|
41 | 57 | } |
|
42 | 58 | |
|
43 | 59 | tr.info-odd { |
|
44 | 60 | background: #dddddd; |
|
45 | 61 | } |
|
46 | 62 | |
|
47 | 63 | tr.info-even { |
|
48 | 64 | background: #f0f0f0; |
|
49 | 65 | } |
|
50 | 66 | |
|
51 | 67 | /******************************* |
|
52 | 68 | [Main] |
|
53 | 69 | ********************************/ |
|
54 | 70 | div.submitbox { |
|
55 | 71 | border: thin solid black; |
|
56 | 72 | padding: 5px; |
|
57 | 73 | color: white; |
|
58 | 74 | background-color: #777777; |
|
59 | 75 | font-weight: bold; |
|
60 | 76 | font-size: 13px; |
|
61 | 77 | } |
|
62 | 78 | |
|
63 | 79 | /******************************* |
|
64 | 80 | [Settings] |
|
65 | 81 | ********************************/ |
|
66 | 82 | table.uinfo { |
|
67 | 83 | border-collapse: collapse; |
|
68 | 84 | border: 1px solid black; |
|
69 | 85 | font-size: 13px; |
|
70 | 86 | } |
|
71 | 87 | |
|
72 | 88 | td.uinfo { |
|
73 | 89 | vertical-align: top; |
|
74 | 90 | border: 1px solid black; |
|
75 | 91 | padding: 5px; |
|
76 | 92 | } |
|
77 | 93 | |
|
78 | 94 | th.uinfo { |
|
79 | 95 | background: lightgreen; |
|
80 | 96 | vertical-align: top; |
|
81 | 97 | text-align: right; |
|
82 | 98 | border: 1px solid black; |
|
83 | 99 | padding: 5px; |
|
84 | 100 | } |
|
85 | 101 | |
|
86 | 102 | /******************************* |
|
87 | 103 | [Submission] |
|
88 | 104 | ********************************/ |
|
89 | 105 | div.compilermsgbody { |
|
90 | 106 | font-family: monospace; |
|
91 | 107 | } |
|
92 | 108 | |
|
93 | 109 | div.task-menu { |
|
94 | 110 | text-align: center; |
|
95 | 111 | font-size: 13px; |
|
96 | 112 | font-weight: bold; |
|
97 | 113 | border-top: 1px solid black; |
|
98 | 114 | border-bottom: 1px solid black; |
|
99 | 115 | margin-top: 2px; |
|
100 | 116 | margin-bottom: 4px; |
|
101 | 117 | } |
deleted file |
You need to be logged in to leave comments.
Login now