--- loncom/homework/structuretags.pm 2005/11/16 20:37:37 1.322
+++ loncom/homework/structuretags.pm 2005/11/21 21:51:29 1.324
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.322 2005/11/16 20:37:37 albertel Exp $
+# $Id: structuretags.pm,v 1.324 2005/11/21 21:51:29 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -346,6 +346,8 @@ sub initialize_storage {
sub finalize_storage {
my $result;
if (%Apache::lonhomework::results) {
+ my @remove = grep(/^INTERNAL_/,keys(%Apache::lonhomework::results));
+ delete(@Apache::lonhomework::results{@remove});
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
if ($env{'request.state'} eq 'construct' || $symb eq '') {
$Apache::lonhomework::results{'rndseed'}=$env{'form.rndseed'};
@@ -360,6 +362,8 @@ sub finalize_storage {
&store_aggregates($symb,$courseid);
}
}
+ } else {
+ &Apache::lonxml::debug('Nothing to store');
}
return $result;
}
@@ -609,17 +613,22 @@ sub start_problem {
}
$form_tag_start.='
';
}
- ($status,$accessmsg) = &Apache::lonhomework::check_access('0');
+
+ ($status,$accessmsg,my $slot_name,my $slot) =
+ &Apache::lonhomework::check_slot_access('0','problem');
push (@Apache::inputtags::status,$status);
+
my $expression='$external::datestatus="'.$status.'";';
$expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.0.solved"}.'";';
&Apache::run::run($expression,$safeeval);
&Apache::lonxml::debug("Got $status");
+
if (( $status eq 'CLOSED' ) ||
( $status eq 'UNCHECKEDOUT') ||
( $status eq 'NOT_YET_VIEWED') ||
( $status eq 'BANNED') ||
( $status eq 'UNAVAILABLE') ||
+ ( $status eq 'NOT_IN_A_SLOT') ||
( $status eq 'INVALID_ACCESS')) {
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser);
if ( $target eq "web" ) {
@@ -646,6 +655,16 @@ sub start_problem {
$result.=&mt('Problem is not open to be viewed. It')." $accessmsg \\vskip 0 mm ";
}
}
+ } elsif ($status eq 'NEEDS_CHECKIN') {
+ my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser);
+ if ($target eq 'web') {
+ $result .= $head_tag_start.'';
+ $result .= $body_tag_start;
+ $result .= &Apache::bridgetask::proctor_validation_screen();
+ } elsif ($target eq 'grade') {
+ &Apache::bridgetask::proctor_check_auth($slot_name,$slot,
+ 'problem');
+ }
} elsif ($target eq 'web') {
my $name= &get_resource_name($parstack,$safeeval);
$result.="$head_tag_start$name
@@ -788,6 +807,8 @@ sub end_problem {
# if part is zero, no s existed, so we need to the grading
if ($status eq 'CAN_ANSWER' ||$Apache::lonhomework::scantronmode) {
&Apache::inputtags::grade;
+ } elsif ($status eq 'NEEDS_CHECKIN') {
+ # no need to grade, and don't want to hide data
} else {
# move any submission data to .hidden
&Apache::inputtags::hidealldata($Apache::inputtags::part);