| … | |
… | |
| 72 | |
72 | |
| 73 | my $ce = $self->{ce}; |
73 | my $ce = $self->{ce}; |
| 74 | my $db = $self->{db}; |
74 | my $db = $self->{db}; |
| 75 | my $root = $ce->{webworkURLs}->{root}; |
75 | my $root = $ce->{webworkURLs}->{root}; |
| 76 | my $courseName = $ce->{courseName}; |
76 | my $courseName = $ce->{courseName}; |
|
|
77 | my $effectiveUser = $self->{r}->param("effectiveUser"); |
| 77 | |
78 | |
| 78 | print CGI::strong("Problem Sets"), CGI::br(); |
79 | print CGI::strong("Problem Sets"), CGI::br(); |
| 79 | |
80 | |
| 80 | my $effectiveUser = $self->{r}->param("effectiveUser"); |
|
|
| 81 | my @sets; |
81 | my @sets; |
| 82 | push @sets, $db->getMergedSet($effectiveUser, $_) |
82 | push @sets, $db->getMergedSet($effectiveUser, $_) |
| 83 | foreach ($db->listUserSets($effectiveUser)); |
83 | foreach ($db->listUserSets($effectiveUser)); |
| 84 | # foreach my $set (sort { $a->open_date <=> $b->open_date } @sets) { |
84 | |
| 85 | # FIXME only experience will tell us the best sorting procedure |
85 | # FIXME only experience will tell us the best sorting procedure. |
| 86 | # due_date seems right for students, but alphabetically is more useful for professors?; |
86 | # due_date seems right for students, but alphabetically may be more |
| 87 | |
87 | # useful for professors? |
|
|
88 | |
|
|
89 | my @sorted_sets; |
|
|
90 | |
| 88 | # sort by set name |
91 | # sort by set name |
| 89 | #@sets = sort { $a->set_id cmp $b->set_id } @sets; |
92 | #@sorted_sets = sort { $a->set_id cmp $b->set_id } @sets; |
| 90 | |
93 | |
| 91 | # sort by set due date |
94 | # sort by set due date |
| 92 | my @sorted_sets = sort { $a->due_date <=> $b->due_date } @sets; |
95 | @sorted_sets = sort { $a->due_date <=> $b->due_date } @sets; |
| 93 | # put closed sets last; |
96 | # ...and put closed sets last; |
| 94 | my $now = time(); |
97 | my $now = time(); |
| 95 | my @open_sets = grep {$_->due_date>$now} @sorted_sets; |
98 | my @open_sets = grep { $_->due_date > $now } @sorted_sets; |
| 96 | my @closed_sets = grep {$_->due_date<=$now} @sorted_sets; |
99 | my @closed_sets = grep { $_->due_date <= $now } @sorted_sets; |
| 97 | @sorted_sets = (@open_sets,@closed_sets); |
100 | @sorted_sets = (@open_sets,@closed_sets); |
| 98 | |
101 | |
| 99 | foreach my $set (@sorted_sets) { |
102 | foreach my $set (@sorted_sets) { |
| 100 | if (time >= $set->open_date) { |
103 | if (time >= $set->open_date) { |
| 101 | print CGI::a({-href=>"$root/$courseName/".$set->set_id."/?" |
104 | print CGI::a({-href=>"$root/$courseName/".$set->set_id."/?" |