Log Message:
-----------
Gateway update: change Grades table to display gateway tests better.
Tags:
----
rel-2-1-a1
Modified Files:
--------------
webwork2/lib/WeBWorK/ContentGenerator:
Grades.pm
Revision Data
-------------
Index: Grades.pm
===================================================================
RCS file: /webwork/cvs/system/webwork2/lib/WeBWorK/ContentGenerator/Grades.pm,v
retrieving revision 1.5.2.3
retrieving revision 1.5.2.4
diff -Llib/WeBWorK/ContentGenerator/Grades.pm -Llib/WeBWorK/ContentGenerator/Grades.pm -u -r1.5.2.3 -r1.5.2.4
--- lib/WeBWorK/ContentGenerator/Grades.pm
+++ lib/WeBWorK/ContentGenerator/Grades.pm
@@ -194,8 +194,10 @@
my @setIDs = sort $db->listUserSets($studentName);
my $fullName = join("", $studentRecord->first_name," ", $studentRecord->last_name);
+ my $effectiveUser = $studentRecord->user_id();
+
my $act_as_student_url = "$root/$courseName/?user=".$r->param("user").
- "&effectiveUser=".$studentRecord->user_id()."&key=".$r->param("key");
+ "&effectiveUser=$effectiveUser&key=".$r->param("key");
print CGI::h3($fullName ),
@@ -209,18 +211,34 @@
my @rows;
my $max_problems=0;
-
- # FIXME: we adjust the URL for ALL VERSIONED SETS to point to the gateway quiz module.
- # FIXME: this is a fudge to avoid having to get the actual set data from the database
- # FIXME: to see if it's got $set->assignment_type() =~ /gateway/
- # FIXME: in the long run this is not a good solution
foreach my $setName (@setIDs) {
my $act_as_student_set_url = "$root/$courseName/$setName/?user=".$r->param("user").
- "&effectiveUser=".$studentRecord->user_id()."&key=".$r->param("key");
- if ( $setName =~ /,v\d+$/ ) {
- $act_as_student_set_url =~ s/($courseName)\//$1\/quiz_mode\//;
+ "&effectiveUser=$effectiveUser&key=".$r->param("key");
+
+ # get the set from the database so that we know if it's a gateway
+ # and if it's versioned, which determines how we display it.
+ my $set;
+ if ( $setName =~ /,v\d+$/ ) { # then it's versioned
+ $set = $db->getMergedVersionedSet( $effectiveUser, $setName );
+ } else {
+ $set = $db->getMergedSet( $effectiveUser, $setName );
}
+
+ if ( defined( $set->assignment_type() ) &&
+ $set->assignment_type() =~ /gateway/ ) {
+ # skip template sets
+ next if ( $setName !~ /,v\d+$/ );
+ # reset the URL for gateways
+ if ( $set->assignment_type() eq 'proctored_gateway' ) {
+ $act_as_student_set_url =~
+ s/($courseName)\//$1\/proctored_quiz_mode\//;
+ } else {
+ $act_as_student_set_url =~
+ s/($courseName)\//$1\/quiz_mode\//;
+ }
+ }
+
my $status = 0;
my $attempted = 0;
my $longStatus = '';
|