Description:
added quick new problem git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@369 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r171:1a5685d096bd - - 3 files changed: 31 inserted, 0 deleted

@@ -1,116 +1,133
1 1 class ProblemsController < ApplicationController
2 2
3 3 before_filter :authenticate, :authorization
4 4
5 5 in_place_edit_for :problem, :name
6 6 in_place_edit_for :problem, :full_name
7 7 in_place_edit_for :problem, :full_score
8 8
9 9 def index
10 10 list
11 11 render :action => 'list'
12 12 end
13 13
14 14 # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
15 15 verify :method => :post, :only => [ :destroy, :create, :update ],
16 16 :redirect_to => { :action => :list }
17 17
18 18 def list
19 19 @problems = Problem.find(:all, :order => 'date_added DESC')
20 20 end
21 21
22 22 def show
23 23 @problem = Problem.find(params[:id])
24 24 end
25 25
26 26 def new
27 27 @problem = Problem.new
28 28 @description = nil
29 29 end
30 30
31 31 def create
32 32 @problem = Problem.new(params[:problem])
33 33 @description = Description.new(params[:description])
34 34 if @description.body!=''
35 35 if !@description.save
36 36 render :action => new and return
37 37 end
38 38 else
39 39 @description = nil
40 40 end
41 41 @problem.description = @description
42 42 if @problem.save
43 43 flash[:notice] = 'Problem was successfully created.'
44 44 redirect_to :action => 'list'
45 45 else
46 46 render :action => 'new'
47 47 end
48 48 end
49 49
50 + def quick_create
51 + @problem = Problem.new(params[:problem])
52 + @problem.full_name = @problem.name if @problem.full_name == ''
53 + @problem.full_score = 100
54 + @problem.available = false
55 + @problem.test_allowed = true
56 + @problem.output_only = false
57 + @problem.date_added = Time.new
58 + if @problem.save
59 + flash[:notice] = 'Problem was successfully created.'
60 + redirect_to :action => 'list'
61 + else
62 + flash[:notice] = 'Error saving problem'
63 + redirect_to :action => 'list'
64 + end
65 + end
66 +
50 67 def edit
51 68 @problem = Problem.find(params[:id])
52 69 @description = @problem.description
53 70 end
54 71
55 72 def update
56 73 @problem = Problem.find(params[:id])
57 74 @description = @problem.description
58 75 if @description == nil and params[:description][:body]!=''
59 76 @description = Description.new(params[:description])
60 77 if !@description.save
61 78 flash[:notice] = 'Error saving description'
62 79 render :action => 'edit' and return
63 80 end
64 81 @problem.description = @description
65 82 elsif @description!=nil
66 83 if !@description.update_attributes(params[:description])
67 84 flash[:notice] = 'Error saving description'
68 85 render :action => 'edit' and return
69 86 end
70 87 end
71 88 if @problem.update_attributes(params[:problem])
72 89 flash[:notice] = 'Problem was successfully updated.'
73 90 redirect_to :action => 'show', :id => @problem
74 91 else
75 92 render :action => 'edit'
76 93 end
77 94 end
78 95
79 96 def destroy
80 97 Problem.find(params[:id]).destroy
81 98 redirect_to :action => 'list'
82 99 end
83 100
84 101 def toggle
85 102 @problem = Problem.find(params[:id])
86 103 @problem.available = !(@problem.available)
87 104 @problem.save
88 105 end
89 106
90 107 def turn_all_off
91 108 Problem.find(:all,
92 109 :conditions => "available = 1").each do |problem|
93 110 problem.available = false
94 111 problem.save
95 112 end
96 113 redirect_to :action => 'list'
97 114 end
98 115
99 116 def turn_all_on
100 117 Problem.find(:all,
101 118 :conditions => "available = 0").each do |problem|
102 119 problem.available = true
103 120 problem.save
104 121 end
105 122 redirect_to :action => 'list'
106 123 end
107 124
108 125 def stat
109 126 @problem = Problem.find(params[:id])
110 127 if !@problem.available
111 128 redirect_to :controller => 'main', :action => 'list'
112 129 else
113 130 @submissions = Submission.find_all_last_by_problem(params[:id])
114 131 end
115 132 end
116 133 end
@@ -1,9 +1,12
1 1 class Problem < ActiveRecord::Base
2 2
3 3 belongs_to :description
4 4
5 + validates_presence_of :name
6 + validates_presence_of :full_name
7 +
5 8 def self.find_available_problems
6 9 find(:all, :conditions => {:available => true}, :order => "date_added DESC")
7 10 end
8 11
9 12 end
@@ -1,45 +1,56
1 1 <% content_for :head do %>
2 2 <%= stylesheet_link_tag 'problems' %>
3 3 <%= javascript_include_tag :defaults %>
4 4 <% end %>
5 5
6 6 <h1>Listing problems</h1>
7 7
8 8 <p>
9 9 <%= link_to 'New problem', :action => 'new' %>
10 10 <%= link_to 'Turn off all problems', :action => 'turn_all_off' %>
11 11 <%= link_to 'Turn on all problems', :action => 'turn_all_on' %>
12 12 </p>
13 13
14 + <div class="submitbox">
15 + <% form_tag :action => 'quick_create' do %>
16 + <b>Quick New:</b>
17 + <label for="problem_name">Name</label>
18 + <%= text_field 'problem', 'name' %> |
19 + <label for="problem_full_name">Full name</label>
20 + <%= text_field 'problem', 'full_name' %>
21 + <%= submit_tag "Create" %>
22 + <% end %>
23 + </div>
24 +
14 25 <table>
15 26 <tr>
16 27 <th>Name</th>
17 28 <th>Full name</th>
18 29 <th>Full score</th>
19 30 <th>Date added</th>
20 31 <th>Avail?</th>
21 32 <th>Test?</th>
22 33 </tr>
23 34
24 35 <% for problem in @problems %>
25 36 <tr id="prob-<%= problem.id %>" name="prob-<%= problem.id %>" class="<%= (problem.available) ? "available" : "not-available" %>">
26 37 <% @problem=problem %>
27 38 <td><%= in_place_editor_field :problem, :name, {}, :rows=>1 %></td>
28 39 <td><%= in_place_editor_field :problem, :full_name, {}, :rows=>1 %></td>
29 40 <td><%= in_place_editor_field :problem, :full_score, {}, :rows=>1 %></td>
30 41 <td><%= problem.date_added %></td>
31 42 <td id="prob-<%= problem.id %>-avail"><%= problem.available %></td>
32 43 <td><%= problem.test_allowed %></td>
33 44
34 45 <td><%= link_to_remote '[Toggle]', :url => {:action => 'toggle', :id => problem.id } %></td>
35 46 <td><%= link_to '[Stat]', :action => 'stat', :id => problem.id %></td>
36 47 <td><%= link_to '[Show]', :action => 'show', :id => problem %></td>
37 48 <td><%= link_to '[Edit]', :action => 'edit', :id => problem %></td>
38 49 <td><%= link_to '[Destroy]', { :action => 'destroy', :id => problem }, :confirm => 'Are you sure?', :method => :post %></td>
39 50 </tr>
40 51 <% end %>
41 52 </table>
42 53
43 54 <br />
44 55
45 56 <%= link_to 'New problem', :action => 'new' %>
You need to be logged in to leave comments. Login now