--- trunk/webwork/system/cgi/cgi-scripts/processProblem8.pl 2003/02/28 16:32:13 751 +++ trunk/webwork/system/cgi/cgi-scripts/processProblem8.pl 2003/02/28 16:33:25 752 @@ -436,13 +436,21 @@ $envir{imagegen} = $imgen; $pt -> environment(\%envir); - $pt -> initialize(); - $pt -> set_mask(); - $pt -> source_string($source); - $pt -> unrestricted_load("${courseScriptsDirectory}PG.pl"); - $pt -> unrestricted_load("${courseScriptsDirectory}dangerousMacros.pl"); - $pt -> rf_safety_filter( \&safetyFilter); # install blank safety filter - $pt -> translate(); + $pt -> initialize(); + $pt -> set_mask(); + $pt -> source_string($source); + $pt -> unrestricted_load("${courseScriptsDirectory}PG.pl"); + $pt -> unrestricted_load("${courseScriptsDirectory}dangerousMacros.pl"); + $pt -> rf_safety_filter( \&safetyFilter); # install blank safety filter + $pt -> translate(); + +# Code for logging students's answers to allow inspection of answer history. + logCourseData($User,$setNumber,$probNum,\%inputs,$pt) if ($answers_submitted && + ($permissions != $Global::instructor_permissions) and + ($permissions != $Global::TA_permissions)); +# $Global::logCourseAccessData must be 1 in order to activate this subroutine. +# End student answer logging code. + # dereference some flags returned by createPGtext; if ( defined( $pt ->rh_flags ) ) { @@ -884,6 +892,7 @@ if ($insertSourceIntoFormQ) { print "\n\n\n"; + print "
\n\n\n
"; print $cgi -> startform(-action=>"$Global::problemEditor_CGI", -target=>'editor'), &sessionKeyInputs(\%inputs), @@ -896,8 +905,23 @@ $cgi -> hidden( -name =>'seed', -value => $seed, -override =>1), "\r\n", $cgi -> endform(); + # Code for logging students's answers to allow inspection of answer history. + if ($Global::logCourseAccessData) { + print ""; + print $cgi->startform(-action=>"$Global::showPastAnswers_CGI", -target=>'information'), + &sessionKeyInputs(\%inputs), + $cgi->hidden(-name => 'probNum', -value=>$probNum), "\n", + $cgi->hidden(-name => 'setNum', -value=>$setNumber), "\n", + $cgi->hidden(-name => 'User', -value=>getStudentLogin($psvn)), "\n", + $cgi->submit(-name => 'action', -value=>'Show Past Answers'), "\n", + $cgi->endform(); + print "
\n"; + } + # End code for logging students's answers } + + ############################################################# ## End "Show editor" form ################################################################ @@ -1547,6 +1571,39 @@ print " $key => ",$rh->{$key},"\n"; } } + +# Code for logging students's answers to allow inspection of answer history. +sub logCourseData { + return unless ($Global::logCourseAccessData); + + my $user = shift; + my $setNum = shift; + my $probNum = shift; + my $inputs = shift; + my $pt = shift; + my @answers = (defined($pt->{PG_FLAGS_REF}->{ANSWER_ENTRY_ORDER})) ? + @{$pt->{PG_FLAGS_REF}->{ANSWER_ENTRY_ORDER}} : + keys %{$pt->rh_evaluated_answers}; + my ($id,$string); + + my @ans = ("|$user|$setNum|$probNum|",time()); + foreach $id (@answers) { + $string = $inputs->{$id}; $string = "" unless defined($string); + $string =~ s!\t! !g; # just in case + push (@ans,$string); + } + + my $accessLog = getCourseLogsDirectory()."access_log"; + open(LOG, ">>$accessLog") or warn "Can't open course access log $accessLog"; + print LOG join("\t",@ans),"\n"; # data is tab-separated fields + close(LOG); +} +# End code for logging students's answers + + + + + END { if (defined($main::SIG_TIME_OUT) && $main::SIG_TIME_OUT == 1) { alarm(0); # turn off the alarm