--- loncom/homework/bridgetask.pm 2005/10/01 04:14:51 1.63
+++ loncom/homework/bridgetask.pm 2005/10/12 14:45:44 1.69
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: bridgetask.pm,v 1.63 2005/10/01 04:14:51 albertel Exp $
+# $Id: bridgetask.pm,v 1.69 2005/10/12 14:45:44 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -294,6 +294,7 @@ sub show_task {
( $status eq 'INVALID_ACCESS') )) {
return 0;
}
+ if ($env{'form.donescreen'}) { return 0; }
return 1;
}
@@ -392,6 +393,18 @@ sub start_Task {
''.&proctor_validation_screen($slot);
} elsif ($status eq 'WAITING_FOR_GRADE') {
$msg.='
'.&mt('Your submission is in the grading queue.').'
';
+ } elsif ($env{'form.donescreen'}) {
+ my $title=&Apache::lonnet::gettitle();
+ my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'});
+ my $files='
+DONESCREEN
} elsif ($status ne 'NOT_YET_VIEWED') {
$msg.='
'.&mt('Not open to be viewed').'
';
}
@@ -605,15 +618,13 @@ sub end_Task {
my ($version,$previous)=&get_version();
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||
$target eq 'tex') {
- if (
- (($target eq 'web') && ($env{'request.state'} ne 'construct')) ||
- ($target eq 'answer') || ($target eq 'tex')
- ) {
+ if ($target eq 'web' || $target eq 'answer' || $target eq 'tex') {
if ($target eq 'web') {
if (&show_task($status,$previous)) {
$result.=&Apache::lonxml::endredirection();
}
- if ($status eq 'CAN_ANSWER' && !$previous) {
+ if ($status eq 'CAN_ANSWER' && !$previous &&
+ !$env{'form.donescreen'}) {
$result.="\n".'
'.
&Apache::inputtags::file_selector("$version.0",
"bridgetask","*",
@@ -623,6 +634,13 @@ sub end_Task {
'.&mt('Indicate the files from your portfolio to be evaluated in grading this task.').'
').
"
";
$result.=&Apache::inputtags::gradestatus('0');
+ $result.='';
+ $result.=<
+
+
+
+DONEBUTTON
}
if (&show_task($status,$previous) &&
$Apache::lonhomework::history{"resource.$version.status"} =~ /^(pass|fail)$/) {
@@ -688,6 +706,8 @@ sub end_Task {
$award;
$Apache::lonhomework::results{"resource.0.submission"}=
$Apache::lonhomework::results{"resource.$version.0.submission"}='';
+ } else {
+ delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"});
}
&Apache::lonhomework::showhash(%Apache::lonhomework::results);
&Apache::structuretags::finalize_storage();
@@ -1066,6 +1086,8 @@ sub queue_key_locked {
sub pick_from_queue_data {
my ($queue,$check_section,$queuedata,$cdom,$cnum)=@_;
foreach my $key (keys(%$queuedata)) {
+ if ($key =~ /\0locked$/) { next; }
+ if ($key =~ /\0timestamp$/) { next; }
my ($symb,$uname,$udom)=&decode_queue_key($key);
if ($check_section) {
my $section=&Apache::lonnet::getsection($uname,$udom);
@@ -1380,6 +1402,7 @@ sub get_instance {
$dim_info.='
Question : you did not pass this '.$mandatory.' question
';
}
my $man_count=0;
+ my $man_passed=0;
my $opt_count=0;
my $opt_passed=0;
foreach my $id (@{$dimension{$instance.'.criterias'}}) {
@@ -1391,12 +1414,15 @@ sub get_instance {
}
} else {
$man_count++;
+ if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') {
+ $man_passed++;
+ }
}
}
- my $opt_req=&Apache::lonxml::get_param('OptionalRequired',
- $parstack,$safeeval);
+ if ($man_passed eq $man_count) { $man_passed='all'; }
+ my $opt_req=$dimension{$instance.'.optionalrequired'};
if ($opt_req !~ /\S/) { $opt_req='0'; }
- $dim_info.="\n
".&mt('You passed all of the mandatory components and [_1] of the [_2] optional components, of which you were required to pass [_3].',$opt_passed,$opt_count,$opt_req)."
\n";
+ $dim_info.="\n
".&mt('You passed [_1] of the [_2] mandatory components and [_3] of the [_4] optional components, of which you were required to pass [_5].',$man_passed,$man_count,$opt_passed,$opt_count,$opt_req)."
\n";
my $internal_location=&internal_location($dim);
$result=~s/\Q$internal_location\E/$dim_info/;
@@ -1516,6 +1542,9 @@ sub get_instance {
$Apache::lonhomework::results{"resource.$version.$dim.status"}=
'pass';
}
+ } else {
+ # any other targets no output
+ undef($result);
}
return $result;
}