From: Gavin L. v. a. <we...@ma...> - 2008-06-23 20:15:24
|
Log Message: ----------- ProblemSets: correct display of test times for gateway assignments, allow link to take test before open date if instructors have that permission level. Modified Files: -------------- webwork2/lib/WeBWorK/ContentGenerator: ProblemSets.pm Revision Data ------------- Index: ProblemSets.pm =================================================================== RCS file: /webwork/cvs/system/webwork2/lib/WeBWorK/ContentGenerator/ProblemSets.pm,v retrieving revision 1.91 retrieving revision 1.92 diff -Llib/WeBWorK/ContentGenerator/ProblemSets.pm -Llib/WeBWorK/ContentGenerator/ProblemSets.pm -u -r1.91 -r1.92 --- lib/WeBWorK/ContentGenerator/ProblemSets.pm +++ lib/WeBWorK/ContentGenerator/ProblemSets.pm @@ -389,8 +389,8 @@ my $interactive = CGI::a({-href=>$interactiveURL}, "$name"); # we choose not to display the link to start a new gateway that we've just -# set up in the previous line if that's not available, so we work out here -# if the set is open. for gateways this is a bit more complicated than +# set up in the previous line if that's not available, so we work out here +# if the set is open. for gateways this is a bit more complicated than # for homework sets my $setIsOpen = 0; my $status = ''; @@ -410,17 +410,36 @@ # we let people go back to old tests $setIsOpen = 1; - } else { + # reset the link to give the test number + my $vnum = $set->version_id; + $interactive = CGI::a({-href=>$interactiveURL}, + "$name (test$vnum)"); + } else { my $t = time(); if ( $t < $set->open_date() ) { $status = "will open on " . $self->formatDateTime($set->open_date); - $control = "" unless $preOpenSets; - $interactive = $name unless $preOpenSets; + if ( $preOpenSets ) { + # reset the link + $interactive = CGI::a({-href=>$interactiveURL}, + "Take $name test"); + } else { + $control = ""; + $interactive = "$name test"; + } } elsif ( $t < $set->due_date() ) { $status = "now open, due " . $self->formatDateTime($set->due_date); $setIsOpen = 1; + $interactive = CGI::a({-href=>$interactiveURL}, + "Take $name test"); } else { $status = "closed"; + + if ( $authz->hasPermissions( $user, "record_answers_after_due_date" ) ) { + $interactive = CGI::a({-href=>$interactiveURL}, + "Take $name test"); + } else { + $interactive = "$name test"; + } } } @@ -439,24 +458,7 @@ } else { $status = "closed, answers available"; } - -# now edit the interactive link for gateways - if ( $gwtype ) { - if ( $gwtype == 1 ) { - my $vnum = $set->version_id; - $interactive = CGI::a({-href=>$interactiveURL}, - "$name (test$vnum)"); - } else { # this is the case of a template URL - if ( $setIsOpen ) { - $interactive = CGI::a({-href=>$interactiveURL}, - "Take $name test"); - } else { - $interactive = "$name test"; - } - } - } - my $publishedClass = ($set->published) ? "Published" : "Unpublished"; $status = CGI::font({class=>$publishedClass}, $status) if $preOpenSets; @@ -469,7 +471,7 @@ $status, ])); } else { - my ( $startTime, $score ); + my ( $startTime, $score ); if ( defined( $set->assignment_type() ) && $set->assignment_type() =~ /gateway/ && $gwtype == 1 ) { |