Description:
- fix pdf loading fail
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

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(params[:problem])
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[:notice] = 'User(s) ' + note.join(', ') +
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', :action => 'list' %>
24 + <%= link_to 'Back', problems_path %>
You need to be logged in to leave comments. Login now