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 ) {
|