| … | |
… | |
| 13 | =cut |
13 | =cut |
| 14 | |
14 | |
| 15 | use strict; |
15 | use strict; |
| 16 | use warnings; |
16 | use warnings; |
| 17 | use CGI qw(); |
17 | use CGI qw(); |
| 18 | use WeBWorK::Utils qw(readFile formatDateTime); |
18 | use WeBWorK::Utils qw(readFile formatDateTime sortByName); |
| 19 | |
19 | |
| 20 | sub path { |
20 | sub path { |
| 21 | my ($self, $args) = @_; |
21 | my ($self, $args) = @_; |
| 22 | |
22 | |
| 23 | my $ce = $self->{ce}; |
23 | my $ce = $self->{ce}; |
| … | |
… | |
| 67 | |
67 | |
| 68 | my @sets; |
68 | my @sets; |
| 69 | foreach my $setID ($db->listUserSets($effectiveUser)) { |
69 | foreach my $setID ($db->listUserSets($effectiveUser)) { |
| 70 | push @sets, $db->getMergedSet($effectiveUser, $setID); |
70 | push @sets, $db->getMergedSet($effectiveUser, $setID); |
| 71 | } |
71 | } |
| 72 | @sets = sort byname @sets if $sort eq "name"; |
72 | @sets = sortByName("set_id", @sets) if $sort eq "name"; |
| 73 | @sets = sort byduedate @sets if $sort eq "status"; |
73 | @sets = sort byduedate @sets if $sort eq "status"; |
| 74 | foreach my $set (@sets) { |
74 | foreach my $set (@sets) { |
| 75 | print $self->setListRow($set, ($permissionLevel > 0), |
75 | print $self->setListRow($set, ($permissionLevel > 0), |
| 76 | ($permissionLevel > 0)); |
76 | ($permissionLevel > 0)); |
| 77 | } |
77 | } |
| … | |
… | |
| 127 | -labels=>{$name => ""}, |
127 | -labels=>{$name => ""}, |
| 128 | ); |
128 | ); |
| 129 | } |
129 | } |
| 130 | |
130 | |
| 131 | my $interactive = CGI::a({-href=>$interactiveURL}, $name); |
131 | my $interactive = CGI::a({-href=>$interactiveURL}, $name); |
| 132 | #my $hardcopy = CGI::a({-href=>$hardcopyURL}, "download"); |
|
|
| 133 | |
132 | |
| 134 | my $status; |
133 | my $status; |
| 135 | if (time < $set->open_date) { |
134 | if (time < $set->open_date) { |
| 136 | $status = "opens at $openDate"; |
135 | $status = "opens at $openDate"; |
| 137 | $control = "" unless $preOpenSets; |
136 | $control = "" unless $preOpenSets; |
| 138 | $interactive = $name unless $preOpenSets; |
137 | $interactive = $name unless $preOpenSets; |
| 139 | #$hardcopy = ""; |
|
|
| 140 | } elsif (time < $set->due_date) { |
138 | } elsif (time < $set->due_date) { |
| 141 | $status = "open, due at $dueDate"; |
139 | $status = "open, due at $dueDate"; |
| 142 | } elsif (time < $set->answer_date) { |
140 | } elsif (time < $set->answer_date) { |
| 143 | $status = "closed, answers at $answerDate"; |
141 | $status = "closed, answers at $answerDate"; |
| 144 | } else { |
142 | } else { |
| … | |
… | |
| 147 | |
145 | |
| 148 | return CGI::Tr(CGI::td([ |
146 | return CGI::Tr(CGI::td([ |
| 149 | $control, |
147 | $control, |
| 150 | $interactive, |
148 | $interactive, |
| 151 | $status, |
149 | $status, |
| 152 | #$hardcopy, |
|
|
| 153 | ])); |
150 | ])); |
| 154 | } |
151 | } |
| 155 | |
152 | |
| 156 | sub byname { $a->set_id cmp $b->set_id; } |
153 | sub byname { $a->set_id cmp $b->set_id; } |
| 157 | sub byduedate { $a->due_date <=> $b->due_date; } |
154 | sub byduedate { $a->due_date <=> $b->due_date; } |