Skip to content

Commit 67f6644

Browse files
Improve attachments interface and error handling (#1682)
* Add "Add Attachment" button for instructors when viewing a course * Decouple create attachment logic from update attachment * Move "add attachment" to top, wrap in <p> to be consistent * Use modern syntax for building routes * Make attachment list appearance consistent across course and assessment attachments * Remove more dead code * Make assessment list page appearance consistent Co-authored-by: Joey Wildman <[email protected]>
1 parent da5ca2b commit 67f6644

File tree

7 files changed

+79
-70
lines changed

7 files changed

+79
-70
lines changed

app/controllers/attachments_controller.rb

+31-12
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,28 @@ def create
3131
@course.attachments.new
3232
end
3333

34-
update
34+
if @attachment.update(attachment_params)
35+
flash[:success] = "Attachment created"
36+
redirect_to_attachment_list
37+
else
38+
error_msg = "Attachment create failed:"
39+
if !@attachment.valid?
40+
@attachment.errors.full_messages.each do |msg|
41+
error_msg += "<br>#{msg}"
42+
end
43+
else
44+
error_msg += "<br>Unknown error"
45+
end
46+
flash[:error] = error_msg
47+
flash[:html_safe] = true
48+
COURSE_LOGGER.log("Failed to create attachment: #{error_msg}")
49+
50+
if @is_assessment
51+
redirect_to new_course_assessment_attachment_path(@course, @assessment)
52+
else
53+
redirect_to new_course_attachment_path(@course)
54+
end
55+
end
3556
end
3657

3758
action_auth_level :show, :student
@@ -61,11 +82,9 @@ def edit; end
6182
action_auth_level :update, :instructor
6283
def update
6384
if @attachment.update(attachment_params)
64-
# is successful
6585
flash[:success] = "Attachment updated"
66-
redirect_to_attachment_list && return
86+
redirect_to_attachment_list
6787
else
68-
# not successful, go back to edit page
6988
error_msg = "Attachment update failed:"
7089
if !@attachment.valid?
7190
@attachment.errors.full_messages.each do |msg|
@@ -79,18 +98,18 @@ def update
7998
COURSE_LOGGER.log("Failed to update attachment: #{error_msg}")
8099

81100
if @is_assessment
82-
redirect_to([:edit, @course, @assessment, @attachment]) && return
101+
redirect_to edit_course_assessment_attachment_path(@course, @assessment, @attachment)
102+
else
103+
redirect_to edit_course_attachment_path(@course, @attachment)
83104
end
84-
85-
redirect_to([:edit, @course, @attachment]) && return
86105
end
87106
end
88107

89108
action_auth_level :destroy, :instructor
90109
def destroy
91110
@attachment.destroy
92111
flash[:success] = "Attachment deleted"
93-
redirect_to_attachment_list && return
112+
redirect_to_attachment_list
94113
end
95114

96115
private
@@ -110,15 +129,15 @@ def set_attachment
110129

111130
COURSE_LOGGER.log("Cannot find attachment with id: #{params[:id]}")
112131
flash[:error] = "Could not find Attachment \# #{params[:id]}"
113-
redirect_to_attachment_list && return
132+
redirect_to_attachment_list
114133
end
115134

116135
def redirect_to_attachment_list
117136
if @is_assessment
118-
(redirect_to([@course, @assessment]) && return)
137+
redirect_to course_assessment_path(@course, @assessment)
138+
else
139+
redirect_to course_path(@course)
119140
end
120-
121-
redirect_to([@course, :attachments]) && return
122141
end
123142

124143
def add_attachments_breadcrumb

app/views/assessments/index.html.erb

+11-1
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,20 @@
121121
</div>
122122
</div>
123123

124-
<% if @attachments.any? %>
124+
<% if @attachments.any? or @cud.instructor? %>
125125
<div class="section">
126126
<h3 class="section-title"><span class="white">Attachments</span></h3>
127127
<ul class="collection with-header attachments">
128+
<% if @cud.instructor? %>
129+
<li class="collection-item add">
130+
<p>
131+
<%= link_to new_course_attachment_path(@course) do %>
132+
<i class="material-icons left">note_add</i>Add Attachment
133+
<% end %>
134+
<span class="secondary-content"></span>
135+
</p>
136+
</li>
137+
<% end %>
128138
<%= render @attachments %>
129139
</ul>
130140
</div>

app/views/assessments/show.html.erb

+11-10
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,6 @@
195195
<div class="section">
196196
<h4 class="section-title"><span class="white">Attachments</span></h4>
197197
<ul class="collection with-header attachments">
198-
<%= render @attachments %>
199-
200198
<% # this code is temporarily "commented out" because Dan wants to preserve the logic for future changes to _attachment.html.erb %>
201199
<% if false then %>
202200
<% for a in @assessment.attachments do %>
@@ -211,14 +209,17 @@
211209
<% end %>
212210
<% end %>
213211
<% end %>
214-
<% if @cud.instructor? then %>
215-
<li class="collection-item add">
216-
<%= link_to new_course_assessment_attachment_path(@course, @assessment) do %>
217-
<i class="material-icons left">note_add</i>Add Attachment
218-
<% end %>
219-
<span class="secondary-content"></span>
220-
</li>
221-
<% end %>
212+
<% if @cud.instructor? %>
213+
<li class="collection-item add">
214+
<p>
215+
<%= link_to new_course_assessment_attachment_path(@course, @assessment) do %>
216+
<i class="material-icons left">note_add</i>Add Attachment
217+
<% end %>
218+
<span class="secondary-content"></span>
219+
</p>
220+
</li>
221+
<% end %>
222+
<%= render @attachments %>
222223
</ul>
223224
</div>
224225
<hr>

app/views/attachments/_assessment_attachment.html.erb

-12
This file was deleted.

app/views/attachments/_attachment.html.erb

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,31 @@
11

22
<li class="collection-item">
33
<p>
4-
<% if attachment.assessment.nil? then %>
5-
<i class="material-icons left">file_download</i>
4+
<% if attachment.assessment.nil? %>
65
<%= link_to [@course, attachment] do %>
6+
<i class="material-icons left">file_download</i>
77
<%= attachment.name %>
8+
<% unless attachment.released %>
9+
<b>(Not Released)</b>
10+
<% end %>
811
<% end %>
912
<% else %>
1013
<%= link_to [@course, attachment.assessment, attachment] do %>
1114
<i class="material-icons left">file_download</i>
1215
<%= attachment.name %>
1316
<% unless attachment.released %>
1417
<b>(Not Released)</b>
15-
<% end %>
18+
<% end %>
1619
<% end %>
1720
<% end %>
1821

19-
<% if !attachment.assessment.nil? && @assessment.nil? then %>
22+
<% if !attachment.assessment.nil? && @assessment.nil? %>
2023
(<%= attachment.assessment.display_name %>)
2124
<% end %>
2225

2326
<span class="secondary-content">
24-
<% if @cud.instructor? then %>
25-
<% if attachment.assessment.nil? then %>
27+
<% if @cud.instructor? %>
28+
<% if attachment.assessment.nil? %>
2629
<%= link_to '<i class="material-icons left">mode_edit</i>'.html_safe, [:edit, @course, attachment], {class:"small"} %>
2730
<%= link_to '<i class="material-icons left">delete</i>'.html_safe, [@course, attachment], {method: :delete, class:"small"} %>
2831
<% else %>

app/views/attachments/_course_attachment.html.erb

-12
This file was deleted.

app/views/attachments/index.html.erb

+17-17
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
<% if @is_assessment then %>
1+
<% if @is_assessment %>
22
<h2>Listing <%= link_to @assessment.display_name, [@course, @assessment] %> Attachments</h2>
33
<% else %>
44
<h2>Listing <%= link_to @course.full_name, @course %> Attachments</h2>
55
<% end %>
66

7-
8-
<p>
9-
<% if @is_assessment then %>
10-
<%= link_to 'Add '+@assessment.display_name+' Attachment', new_course_assessment_attachment_path(@course, @assessment) %>
11-
<% else %>
12-
<%= link_to 'Add Course Attachment', new_course_attachment_path(@course) %>
13-
<% end %>
14-
</p>
15-
16-
<% if @attachments.any? then %>
17-
<ul>
18-
<%= render @attachments %>
19-
</ul>
20-
<% else %>
21-
There are no attachments yet.
22-
<% end %>
7+
<ul class="collection with-header attachments">
8+
<li class="collection-item add">
9+
<p>
10+
<% if @is_assessment %>
11+
<%= link_to new_course_assessment_attachment_path(@course, @assessment) do %>
12+
<i class="material-icons left">note_add</i>Add <%= @assessment.display_name %> Attachment
13+
<% end %>
14+
<% else %>
15+
<%= link_to new_course_attachment_path(@course) do %>
16+
<i class="material-icons left">note_add</i>Add Course Attachment
17+
<% end %>
18+
<% end %>
19+
</p>
20+
</li>
21+
<%= render @attachments %>
22+
</ul>
2323

0 commit comments

Comments
 (0)