Skip to content

Commit b8a9603

Browse files
committed
Only show the archive file name for archive files that contain duplicate course ids.
1 parent 3f758aa commit b8a9603

3 files changed

Lines changed: 32 additions & 6 deletions

File tree

lib/WeBWorK/Utils/CourseManagement.pm

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ containing the C<courseID>, file C<size>, and C<lastModified> time. For example,
123123
}
124124
}
125125
126+
Note that archive files that contain the same C<courseID> will also have the
127+
C<duplicateCourseID> key set to 1.
128+
126129
=cut
127130

128131
sub listArchivedCourses {
@@ -135,6 +138,7 @@ sub listArchivedCourses {
135138
my $archiveDataFile = $archivesDir->child('archive-cache.json');
136139
my $archiveData = eval { decode_json($archiveDataFile->slurp) } || {};
137140

141+
my %seenCourseIDs;
138142
my %updatedArchiveData;
139143
my %return;
140144
for (@$archives) {
@@ -143,7 +147,16 @@ sub listArchivedCourses {
143147

144148
if ($archiveData->{$basename} && $archiveData->{$basename}{lastModified} >= $lastModified) {
145149
$updatedArchiveData{$basename} = $archiveData->{$basename};
146-
$return{$basename} = $updatedArchiveData{$basename} if defined $archiveData->{$basename}{courseID};
150+
if (defined $archiveData->{$basename}{courseID}) {
151+
$return{$basename} = { %{ $updatedArchiveData{$basename} } };
152+
153+
if ($seenCourseIDs{ $updatedArchiveData{$basename}{courseID} }) {
154+
$return{$basename}{duplicateCourseID} = 1;
155+
$return{ $seenCourseIDs{ $updatedArchiveData{$basename}{courseID} } }{duplicateCourseID} = 1;
156+
} else {
157+
$seenCourseIDs{ $updatedArchiveData{$basename}{courseID} } = $basename;
158+
}
159+
}
147160
next;
148161
}
149162

@@ -163,7 +176,14 @@ sub listArchivedCourses {
163176

164177
$updatedArchiveData{$basename}{courseID} = $currCourseID;
165178
$updatedArchiveData{$basename}{size} = getHumanReadableFileSize($_);
166-
$return{$basename} = $updatedArchiveData{$basename};
179+
$return{$basename} = { %{ $updatedArchiveData{$basename} } };
180+
181+
if ($seenCourseIDs{ $updatedArchiveData{$basename}{courseID} }) {
182+
$return{$basename}{duplicateCourseID} = 1;
183+
$return{ $seenCourseIDs{ $updatedArchiveData{$basename}{courseID} } }{duplicateCourseID} = 1;
184+
} else {
185+
$seenCourseIDs{ $updatedArchiveData{$basename}{courseID} } = $basename;
186+
}
167187
}
168188

169189
$archiveDataFile->spew(encode_json(\%updatedArchiveData));

templates/ContentGenerator/CourseAdmin.html.ep

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,11 @@
6767
<ol>
6868
% my %courseArchives = listArchivedCourses($ce);
6969
% for (sort { lc($a) cmp lc($b) } keys %courseArchives) {
70-
<li><%= "$courseArchives{$_}{courseID} ($_, $courseArchives{$_}{size})" %></li>
70+
<li>
71+
<%= "$courseArchives{$_}{courseID} ("
72+
. ($courseArchives{$_}{duplicateCourseID} ? "$_, " : "")
73+
. "$courseArchives{$_}{size})" %>
74+
</li>
7175
% }
7276
</ol>
7377
% }

templates/ContentGenerator/CourseAdmin/unarchive_course_form.html.ep

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@
1919
class => 'col-md-2 pe-0 col-form-label fw-bold' =%>
2020
<div class="col-lg-9 col-md-8">
2121
<%= select_field
22-
unarchive_courseID =>
23-
[ map { [ "$courseArchives{$_}{courseID} ($_, $courseArchives{$_}{size})" => $_ ] }
24-
@archiveFiles ],
22+
unarchive_courseID => [
23+
map { [ "$courseArchives{$_}{courseID} ("
24+
. ($courseArchives{$_}{duplicateCourseID} ? "$_, " : "")
25+
. "$courseArchives{$_}{size})" => $_ ] } @archiveFiles
26+
],
2527
id => 'unarchive_courseID',
2628
class => 'form-select',
2729
size => 10

0 commit comments

Comments
 (0)