--- loncom/homework/bridgetask.pm 2005/04/07 06:56:21 1.11
+++ loncom/homework/bridgetask.pm 2005/05/19 21:28:06 1.26
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: bridgetask.pm,v 1.11 2005/04/07 06:56:21 albertel Exp $
+# $Id: bridgetask.pm,v 1.26 2005/05/19 21:28:06 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -48,14 +48,18 @@ 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
@Apache::bridgetask::instancelist=();
+ # key of queud user data that we are currently grading
+ $Apache::bridgetask::queue_key='';
}
sub proctor_check_auth {
- my ($slot)=@_;
+ my ($slot_name,$slot)=@_;
my $user=$env{'form.proctorname'};
my $domain=$env{'form.proctordomain'};
@@ -65,8 +69,13 @@ 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;
return 1;
}
}
@@ -74,43 +83,86 @@ sub proctor_check_auth {
return 0;
}
+sub get_version {
+ if ($env{'form.previousversion'} &&
+ defined($Apache::lonhomework::history{'resource.'.$env{'form.previousversion'}.'.status'})) {
+ return $env{'form.previousversion'};
+ }
+ return $Apache::lonhomework::history{'resource.version'};
+}
+
sub add_previous_version_button {
+ my ($status)=@_;
my $result;
+ if ($Apache::lonhomework::history{'resource.version'} eq '0') {
+ return '';
+ }
+ my $version=&get_version();
+ if ($version ne $Apache::lonhomework::history{'resource.version'}) {
+ return '';
+ }
+
$result.=&mt(' Show a previously done version: [_1]','');
return $result;
}
+sub add_grading_button {
+ my $result;
+ $result.=' ';
+ $result.='';
+ return $result;
+}
+
+sub add_request_another_attempt_button {
+ my $result;
+ $result.=' ';
+ return $result;
+}
+
sub start_Task {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- &Apache::structuretags::initialize_storage();
- &Apache::lonhomework::showhash(%Apache::lonhomework::history);
-
my ($status,$accessmsg,$slot);
+ if ($target ne 'webgrade') {
+ &Apache::structuretags::initialize_storage();
+ &Apache::lonhomework::showhash(%Apache::lonhomework::history);
+ }
+
$Apache::lonhomework::parsing_a_task=1;
#should get back a or the neccesary stuff to start XML/MathML
my ($result,$head_tag_start,$body_tag_start,$form_tag_start)=
&Apache::structuretags::page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);
-
+
if ($target eq 'web') {
- $body_tag_start.=&add_previous_version_button();
+ if ($Apache::lonhomework::modifygrades) {
+ $body_tag_start.='
'.&mt('Your submission is in the grading queue.').'
';
} elsif ($status ne 'NOT_YET_VIEWED') {
$msg.='
'.&mt('Not open to be viewed').'
';
}
@@ -137,12 +191,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.
}
}
}
@@ -158,6 +215,40 @@ sub start_Task {
'" value="'.$env{"form.grade_$field"}.'" />'."\n";
}
}
+ my $version=&get_version();
+ if ($Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {
+ $result.='
';
+ }
+ my $bodytext=&Apache::lonxml::get_all_text("/task",$parser);
}
} else {
# page_start returned a starting result, delete it if we don't need it
@@ -170,6 +261,7 @@ sub end_Task {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my $result='';
my $status=$Apache::inputtags::status['-1'];
+ my $version=&get_version();
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||
$target eq 'tex') {
if (
@@ -178,24 +270,106 @@ sub end_Task {
) {
if ($target eq 'web') {
if ($status eq 'CAN_ANSWER') {
- $result.='