--- loncom/homework/bridgetask.pm 2005/05/09 21:55:01 1.19
+++ loncom/homework/bridgetask.pm 2005/05/20 21:23:42 1.29
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: bridgetask.pm,v 1.19 2005/05/09 21:55:01 albertel Exp $
+# $Id: bridgetask.pm,v 1.29 2005/05/20 21:23:42 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -48,6 +48,8 @@ sub initialize_bridgetask {
$Apache::bridgetask::dimension='';
# list of all Dimension ids seen
@Apache::bridgetask::dimensionlist=();
+ # mandatory attribute of all Dimensions seen
+ %Apache::bridgetask::dimensionmandatory=();
# list of all current Instance ids
@Apache::bridgetask::instance=();
# list of all Instance ids seen in this problem
@@ -57,7 +59,7 @@ sub initialize_bridgetask {
}
sub proctor_check_auth {
- my ($slot)=@_;
+ my ($slot_name,$slot)=@_;
my $user=$env{'form.proctorname'};
my $domain=$env{'form.proctordomain'};
@@ -67,8 +69,18 @@ sub proctor_check_auth {
if ($puser eq $user && $pdom eq $domain) {
my $authhost=&Apache::lonnet::authenticate($puser,$env{'form.proctorpassword'},$pdom);
if ($authhost ne 'no_host') {
- $Apache::lonhomework::results{'resource.checkedin'}=
+ my $version=
+ $Apache::lonhomework::results{'resource.version'}=
+ ++$Apache::lonhomework::history{'resource.version'};
+ $Apache::lonhomework::results{"resource.$version.checkedin"}=
$user.'@'.$domain;
+ $Apache::lonhomework::results{"resource.$version.checkedin.slot"}=
+ $slot_name;
+ foreach my $key (keys(%Apache::lonhomework::history)) {
+ if ($key=~/^resource\.0\./) {
+ $Apache::lonhomework::results{$key}='';
+ }
+ }
return 1;
}
}
@@ -76,22 +88,72 @@ sub proctor_check_auth {
return 0;
}
+sub get_version {
+ my ($version,$previous);
+ if ($env{'form.previousversion'} &&
+ defined($Apache::lonhomework::history{'resource.'.$env{'form.previousversion'}.'.status'})) {
+ $version=$env{'form.previousversion'};
+ $previous=1;
+ } else {
+ $version=$Apache::lonhomework::history{'resource.version'};
+ $previous=0;
+ }
+ if (wantarray) {
+ return ($version,$previous);
+ }
+ return $version;
+}
+
sub add_previous_version_button {
+ my ($status)=@_;
my $result;
- $result.=&mt(' Show a previously done version: [_1]','');
+ if ($Apache::lonhomework::history{'resource.version'} eq '') {
+ return '';
+ }
+ if ($Apache::lonhomework::history{'resource.version'} < 2 &&
+ $status ne 'NEEDS_CHECKIN') {
+ return '';
+ }
+ my $version=&get_version();
+ if ($env{'form.previousversion'} ne '' &&
+ $env{'form.previousversion'} eq $version) {
+ $result.="
".&mt("Showing previous version [_1]",$version).
+ "
'.&mt('Your submission is in the grading queue.').'
';
} elsif ($status ne 'NOT_YET_VIEWED') {
$msg.='
'.&mt('Not open to be viewed').'
';
}
@@ -156,12 +223,15 @@ sub start_Task {
} else {
$result.=&mt('Problem is not open to be viewed. It')." $accessmsg \\vskip 0 mm ";
}
- } elsif ($target eq 'grade') {
+ } elsif ($target eq 'grade' && !$env{'form.webgrade'}) {
if ($status eq 'NEEDS_CHECKIN') {
- if (&proctor_check_auth($slot)) {
+ if (&proctor_check_auth($slot_name,$slot)) {
#FIXME immeadiatly add this to the grading queue
# with slot->{'endtime'} for when grading can
# begin on this resource
+ # FIXME I think the above is done by default,
+ # need to check that
+ # failure doesn't do this.
}
}
}
@@ -177,12 +247,24 @@ sub start_Task {
'" value="'.$env{"form.grade_$field"}.'" />'."\n";
}
}
+ my ($version,$previous)=&get_version();
+ if ($Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {
+ $result.='
'.&mt('Did not pass').'
';
+ if (!$previous) {
+ $result.=&add_request_another_attempt_button();
+ }
+ }
+ if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass') {
+ $result.='