Description:
- fix pdf loading fail
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r634:56cf4357ce2a - - 4 files changed: 11 inserted, 4 deleted
@@ -67,49 +67,49 | |||||
|
67 | @problem = Problem.find(params[:id]) |
|
67 | @problem = Problem.find(params[:id]) |
|
68 | @description = @problem.description |
|
68 | @description = @problem.description |
|
69 | end |
|
69 | end |
|
70 |
|
70 | ||
|
71 | def update |
|
71 | def update |
|
72 | @problem = Problem.find(params[:id]) |
|
72 | @problem = Problem.find(params[:id]) |
|
73 | @description = @problem.description |
|
73 | @description = @problem.description |
|
74 | if @description.nil? and params[:description][:body]!='' |
|
74 | if @description.nil? and params[:description][:body]!='' |
|
75 | @description = Description.new(params[:description]) |
|
75 | @description = Description.new(params[:description]) |
|
76 | if !@description.save |
|
76 | if !@description.save |
|
77 | flash[:notice] = 'Error saving description' |
|
77 | flash[:notice] = 'Error saving description' |
|
78 | render :action => 'edit' and return |
|
78 | render :action => 'edit' and return |
|
79 | end |
|
79 | end |
|
80 | @problem.description = @description |
|
80 | @problem.description = @description |
|
81 | elsif @description |
|
81 | elsif @description |
|
82 | if !@description.update_attributes(params[:description]) |
|
82 | if !@description.update_attributes(params[:description]) |
|
83 | flash[:notice] = 'Error saving description' |
|
83 | flash[:notice] = 'Error saving description' |
|
84 | render :action => 'edit' and return |
|
84 | render :action => 'edit' and return |
|
85 | end |
|
85 | end |
|
86 | end |
|
86 | end |
|
87 | if params[:file] and params[:file].content_type != 'application/pdf' |
|
87 | if params[:file] and params[:file].content_type != 'application/pdf' |
|
88 | flash[:notice] = 'Error: Uploaded file is not PDF' |
|
88 | flash[:notice] = 'Error: Uploaded file is not PDF' |
|
89 | render :action => 'edit' and return |
|
89 | render :action => 'edit' and return |
|
90 | end |
|
90 | end |
|
91 |
- if @problem.update_attributes( |
|
91 | + if @problem.update_attributes(problem_params) |
|
92 | flash[:notice] = 'Problem was successfully updated.' |
|
92 | flash[:notice] = 'Problem was successfully updated.' |
|
93 | unless params[:file] == nil or params[:file] == '' |
|
93 | unless params[:file] == nil or params[:file] == '' |
|
94 | flash[:notice] = 'Problem was successfully updated and a new PDF file is uploaded.' |
|
94 | flash[:notice] = 'Problem was successfully updated and a new PDF file is uploaded.' |
|
95 | out_dirname = "#{Problem.download_file_basedir}/#{@problem.id}" |
|
95 | out_dirname = "#{Problem.download_file_basedir}/#{@problem.id}" |
|
96 | if not FileTest.exists? out_dirname |
|
96 | if not FileTest.exists? out_dirname |
|
97 | Dir.mkdir out_dirname |
|
97 | Dir.mkdir out_dirname |
|
98 | end |
|
98 | end |
|
99 |
|
99 | ||
|
100 | out_filename = "#{out_dirname}/#{@problem.name}.pdf" |
|
100 | out_filename = "#{out_dirname}/#{@problem.name}.pdf" |
|
101 | if FileTest.exists? out_filename |
|
101 | if FileTest.exists? out_filename |
|
102 | File.delete out_filename |
|
102 | File.delete out_filename |
|
103 | end |
|
103 | end |
|
104 |
|
104 | ||
|
105 | File.open(out_filename,"wb") do |file| |
|
105 | File.open(out_filename,"wb") do |file| |
|
106 | file.write(params[:file].read) |
|
106 | file.write(params[:file].read) |
|
107 | end |
|
107 | end |
|
108 | @problem.description_filename = "#{@problem.name}.pdf" |
|
108 | @problem.description_filename = "#{@problem.name}.pdf" |
|
109 | @problem.save |
|
109 | @problem.save |
|
110 | end |
|
110 | end |
|
111 | redirect_to :action => 'show', :id => @problem |
|
111 | redirect_to :action => 'show', :id => @problem |
|
112 | else |
|
112 | else |
|
113 | render :action => 'edit' |
|
113 | render :action => 'edit' |
|
114 | end |
|
114 | end |
|
115 | end |
|
115 | end |
@@ -264,25 +264,31 | |||||
|
264 | end |
|
264 | end |
|
265 |
|
265 | ||
|
266 | def set_available(avail) |
|
266 | def set_available(avail) |
|
267 | problems = get_problems_from_params |
|
267 | problems = get_problems_from_params |
|
268 | problems.each do |p| |
|
268 | problems.each do |p| |
|
269 | p.available = avail |
|
269 | p.available = avail |
|
270 | p.save |
|
270 | p.save |
|
271 | end |
|
271 | end |
|
272 | end |
|
272 | end |
|
273 |
|
273 | ||
|
274 | def get_problems_from_params |
|
274 | def get_problems_from_params |
|
275 | problems = [] |
|
275 | problems = [] |
|
276 | params.keys.each do |k| |
|
276 | params.keys.each do |k| |
|
277 | if k.index('prob-')==0 |
|
277 | if k.index('prob-')==0 |
|
278 | name, id, order = k.split('-') |
|
278 | name, id, order = k.split('-') |
|
279 | problems << Problem.find(id) |
|
279 | problems << Problem.find(id) |
|
280 | end |
|
280 | end |
|
281 | end |
|
281 | end |
|
282 | problems |
|
282 | problems |
|
283 | end |
|
283 | end |
|
284 |
|
284 | ||
|
285 | def get_problems_stat |
|
285 | def get_problems_stat |
|
286 | end |
|
286 | end |
|
287 |
|
287 | ||
|
|
288 | + private | ||
|
|
289 | + | ||
|
|
290 | + def problem_params | ||
|
|
291 | + params.require(:problem).permit(:name, :full_name, :full_score, :date_added, :available, :test_allowed,:output_only, :url, :description) | ||
|
|
292 | + end | ||
|
|
293 | + | ||
|
288 | end |
|
294 | end |
@@ -97,49 +97,49 | |||||
|
97 |
|
97 | ||
|
98 | user = User.find_by_login(login) |
|
98 | user = User.find_by_login(login) |
|
99 | if (user) |
|
99 | if (user) |
|
100 | user.full_name = full_name |
|
100 | user.full_name = full_name |
|
101 | user.password = password |
|
101 | user.password = password |
|
102 | user.remark = remark |
|
102 | user.remark = remark |
|
103 | else |
|
103 | else |
|
104 | user = User.new({:login => login, |
|
104 | user = User.new({:login => login, |
|
105 | :full_name => full_name, |
|
105 | :full_name => full_name, |
|
106 | :password => password, |
|
106 | :password => password, |
|
107 | :password_confirmation => password, |
|
107 | :password_confirmation => password, |
|
108 | :alias => user_alias, |
|
108 | :alias => user_alias, |
|
109 | :remark => remark}) |
|
109 | :remark => remark}) |
|
110 | end |
|
110 | end |
|
111 | user.activated = true |
|
111 | user.activated = true |
|
112 | user.save |
|
112 | user.save |
|
113 |
|
113 | ||
|
114 | if added_random_password |
|
114 | if added_random_password |
|
115 | note << "'#{login}' (+)" |
|
115 | note << "'#{login}' (+)" |
|
116 | else |
|
116 | else |
|
117 | note << login |
|
117 | note << login |
|
118 | end |
|
118 | end |
|
119 | end |
|
119 | end |
|
120 | end |
|
120 | end |
|
121 |
- flash[: |
|
121 | + flash[:success] = 'User(s) ' + note.join(', ') + |
|
122 | ' were successfully created. ' + |
|
122 | ' were successfully created. ' + |
|
123 | '( (+) - created with random passwords.)' |
|
123 | '( (+) - created with random passwords.)' |
|
124 | redirect_to :action => 'index' |
|
124 | redirect_to :action => 'index' |
|
125 | end |
|
125 | end |
|
126 |
|
126 | ||
|
127 | def edit |
|
127 | def edit |
|
128 | @user = User.find(params[:id]) |
|
128 | @user = User.find(params[:id]) |
|
129 | end |
|
129 | end |
|
130 |
|
130 | ||
|
131 | def update |
|
131 | def update |
|
132 | @user = User.find(params[:id]) |
|
132 | @user = User.find(params[:id]) |
|
133 | if @user.update_attributes(user_params) |
|
133 | if @user.update_attributes(user_params) |
|
134 | flash[:notice] = 'User was successfully updated.' |
|
134 | flash[:notice] = 'User was successfully updated.' |
|
135 | redirect_to :action => 'show', :id => @user |
|
135 | redirect_to :action => 'show', :id => @user |
|
136 | else |
|
136 | else |
|
137 | render :action => 'edit' |
|
137 | render :action => 'edit' |
|
138 | end |
|
138 | end |
|
139 | end |
|
139 | end |
|
140 |
|
140 | ||
|
141 | def destroy |
|
141 | def destroy |
|
142 | User.find(params[:id]).destroy |
|
142 | User.find(params[:id]).destroy |
|
143 | redirect_to :action => 'index' |
|
143 | redirect_to :action => 'index' |
|
144 | end |
|
144 | end |
|
145 |
|
145 |
@@ -1,29 +1,30 | |||||
|
1 | <%= error_messages_for 'problem' %> |
|
1 | <%= error_messages_for 'problem' %> |
|
2 |
|
2 | ||
|
3 | <!--[form:problem]--> |
|
3 | <!--[form:problem]--> |
|
4 | <p><label for="problem_name">Name</label><br/> |
|
4 | <p><label for="problem_name">Name</label><br/> |
|
5 | - <%= text_field 'problem', 'name' %></p> |
|
5 | + <%= text_field 'problem', 'name' %> Do not directly edit the problem name, unless you know what you are doing. If you want to change the name, use the name change button in the problem management menu instead. |
|
|
6 | + </p> | ||
|
6 |
|
7 | ||
|
7 | <p><label for="problem_full_name">Full name</label><br/> |
|
8 | <p><label for="problem_full_name">Full name</label><br/> |
|
8 | <%= text_field 'problem', 'full_name' %></p> |
|
9 | <%= text_field 'problem', 'full_name' %></p> |
|
9 |
|
10 | ||
|
10 | <p><label for="problem_full_score">Full score</label><br/> |
|
11 | <p><label for="problem_full_score">Full score</label><br/> |
|
11 | <%= text_field 'problem', 'full_score' %></p> |
|
12 | <%= text_field 'problem', 'full_score' %></p> |
|
12 |
|
13 | ||
|
13 | <p><label for="problem_date_added">Date added</label><br/> |
|
14 | <p><label for="problem_date_added">Date added</label><br/> |
|
14 | <%= date_select 'problem', 'date_added' %></p> |
|
15 | <%= date_select 'problem', 'date_added' %></p> |
|
15 |
|
16 | ||
|
16 | <% |
|
17 | <% |
|
17 | # TODO: these should be put in model Problem, but I can't think of |
|
18 | # TODO: these should be put in model Problem, but I can't think of |
|
18 | # nice default values for them. These values look fine only |
|
19 | # nice default values for them. These values look fine only |
|
19 | # in this case (of lazily adding new problems). |
|
20 | # in this case (of lazily adding new problems). |
|
20 | @problem.available = true if @problem!=nil and @problem.available==nil |
|
21 | @problem.available = true if @problem!=nil and @problem.available==nil |
|
21 | @problem.test_allowed = true if @problem!=nil and @problem.test_allowed==nil |
|
22 | @problem.test_allowed = true if @problem!=nil and @problem.test_allowed==nil |
|
22 | @problem.output_only = false if @problem!=nil and @problem.output_only==nil |
|
23 | @problem.output_only = false if @problem!=nil and @problem.output_only==nil |
|
23 | %> |
|
24 | %> |
|
24 |
|
25 | ||
|
25 | <p> |
|
26 | <p> |
|
26 | <label for="problem_available">Available?</label> |
|
27 | <label for="problem_available">Available?</label> |
|
27 | <%= check_box :problem, :available %> |
|
28 | <%= check_box :problem, :available %> |
|
28 |
|
29 | ||
|
29 | <label for="problem_test_allowed">Test allowed?</label> |
|
30 | <label for="problem_test_allowed">Test allowed?</label> |
@@ -1,24 +1,24 | |||||
|
1 | <% for column in Problem.content_columns %> |
|
1 | <% for column in Problem.content_columns %> |
|
2 | <p> |
|
2 | <p> |
|
3 | <b><%= column.human_name %>:</b> |
|
3 | <b><%= column.human_name %>:</b> |
|
4 | <%=h @problem.send(column.name) %> |
|
4 | <%=h @problem.send(column.name) %> |
|
5 | </p> |
|
5 | </p> |
|
6 | <% end %> |
|
6 | <% end %> |
|
7 |
|
7 | ||
|
8 | <p> |
|
8 | <p> |
|
9 | <b>Description:</b><br/> |
|
9 | <b>Description:</b><br/> |
|
10 | <% if @problem.description!=nil %> |
|
10 | <% if @problem.description!=nil %> |
|
11 | <% if @problem.description.markdowned %> |
|
11 | <% if @problem.description.markdowned %> |
|
12 | <%= markdown(@problem.description.body) %> |
|
12 | <%= markdown(@problem.description.body) %> |
|
13 | <% else %> |
|
13 | <% else %> |
|
14 | <pre> |
|
14 | <pre> |
|
15 | <%= @problem.description.body %> |
|
15 | <%= @problem.description.body %> |
|
16 | </pre> |
|
16 | </pre> |
|
17 | <% end %> |
|
17 | <% end %> |
|
18 | <% else %> |
|
18 | <% else %> |
|
19 | (not available) |
|
19 | (not available) |
|
20 | <% end %> |
|
20 | <% end %> |
|
21 | </p> |
|
21 | </p> |
|
22 |
|
22 | ||
|
23 | <%= link_to 'Edit', :action => 'edit', :id => @problem %> | |
|
23 | <%= link_to 'Edit', :action => 'edit', :id => @problem %> | |
|
24 |
- <%= link_to 'Back', |
|
24 | + <%= link_to 'Back', problems_path %> |
You need to be logged in to leave comments.
Login now