[LON-CAPA-cvs] cvs: loncom /homework bridgetask.pm lonhomework.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Tue, 10 May 2005 20:29:26 -0000
This is a MIME encoded message
--albertel1115756966
Content-Type: text/plain
albertel Tue May 10 16:29:26 2005 EDT
Modified files:
/loncom/homework lonhomework.pm bridgetask.pm
Log:
- properly detect state of 'in grading queue' and show info screen
- properly detect state of graded and show criteria and pass/failed status
- grade things correctly
--albertel1115756966
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20050510162926.txt"
Index: loncom/homework/lonhomework.pm
diff -u loncom/homework/lonhomework.pm:1.206 loncom/homework/lonhomework.pm:1.207
--- loncom/homework/lonhomework.pm:1.206 Mon May 2 20:05:41 2005
+++ loncom/homework/lonhomework.pm Tue May 10 16:29:26 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.206 2005/05/03 00:05:41 albertel Exp $
+# $Id: lonhomework.pm,v 1.207 2005/05/10 20:29:26 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -85,13 +85,11 @@
return ($env{'form.grade_target'});
} elsif ( defined($env{'form.grade_target'} )
&& ($Apache::lonhomework::viewgrades eq 'F' )) {
- if ($env{'form.grade_target'} eq 'webgrade') {
- if ($Apache::lonhomework::modifygrades eq 'F' ) {
- return ($env{'form.grade_target'});
- }
- } else {
- return ($env{'form.grade_target'});
- }
+ return ($env{'form.grade_target'});
+ }
+ if ($env{'form.webgrade'} &&
+ $Apache::lonhomework::modifygrades eq 'F') {
+ return ('grade','webgrade');
}
if ( defined($env{'form.submitted'}) &&
( !defined($env{'form.resetdata'})) &&
@@ -168,10 +166,12 @@
}
sub proctor_checked_in {
- my ($slot)=@_;
+ my ($slot_name,$slot)=@_;
my @allowed=split(",",$slot->{'proctor'});
foreach my $possible (@allowed) {
- if ($Apache::lonhomework::history{'resource.checkedin'} eq $possible) {
+ if ($Apache::lonhomework::history{'resource.checkedin'} eq $possible &&
+ $Apache::lonhomework::history{'resource.checkedin.slot'} eq
+ $slot_name ) {
return 1;
}
}
@@ -226,7 +226,8 @@
}
sub check_task_access {
- #does it pass normal muster
+ # does it pass normal muster
+ # yes we really do want the default args passing
my ($status,$datemsg)=&check_access;
if ($status eq 'SHOW_ANSWER' ||
$status eq 'CLOSED' ||
@@ -239,6 +240,12 @@
return ($status,$datemsg);
}
+ if ($Apache::lonhomework::history{'resource.checkedin'}) {
+ if ($Apache::lonhomework::history{'resource.status'} eq 'pass' ||
+ $Apache::lonhomework::history{'resource.status'} eq 'fail') {
+ return ('SHOW_ANSWER');
+ }
+ }
my ($id)=@_;
my @slots=split(':',&Apache::lonnet::EXT("resource.$id.available"));
# if (!@slots) {
@@ -246,7 +253,7 @@
# }
my $slotstatus='NOT_IN_A_SLOT';
my ($returned_slot,$slot_name);
- foreach my $slot (@slots) {
+ foreach my $slot (sort(@slots)) {
&Apache::lonxml::debug("getting $slot");
my %slot=&Apache::lonnet::get_slot($slot);
&Apache::lonhomework::showhash(%slot);
@@ -261,10 +268,14 @@
}
}
if ($slotstatus eq 'NEEDS_CHECKIN' &&
- &proctor_checked_in($returned_slot)) {
+ &proctor_checked_in($slot_name,$returned_slot)) {
&Apache::lonxml::debug("protoctor checked in");
$slotstatus='CAN_ANSWER';
}
+ if ( ($slotstatus eq 'NOT_IN_A_SLOT' || $slotstatus eq 'NEEDS_CHECKIN') &&
+ $Apache::lonhomework::history{'resource.checkedin'}) {
+ return ('WAITING_FOR_GRADE');
+ }
return ($slotstatus,$datemsg,$slot_name,$returned_slot);
}
Index: loncom/homework/bridgetask.pm
diff -u loncom/homework/bridgetask.pm:1.21 loncom/homework/bridgetask.pm:1.22
--- loncom/homework/bridgetask.pm:1.21 Tue May 10 12:44:35 2005
+++ loncom/homework/bridgetask.pm Tue May 10 16:29:26 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: bridgetask.pm,v 1.21 2005/05/10 16:44:35 albertel Exp $
+# $Id: bridgetask.pm,v 1.22 2005/05/10 20:29:26 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -59,7 +59,7 @@
}
sub proctor_check_auth {
- my ($slot)=@_;
+ my ($slot_name,$slot)=@_;
my $user=$env{'form.proctorname'};
my $domain=$env{'form.proctordomain'};
@@ -71,6 +71,8 @@
if ($authhost ne 'no_host') {
$Apache::lonhomework::results{'resource.checkedin'}=
$user.'@'.$domain;
+ $Apache::lonhomework::results{'resource.checkedin.slot'}=
+ $slot_name;
return 1;
}
}
@@ -94,6 +96,10 @@
return $result;
}
+sub add_request_another_attempt_button {
+
+}
+
sub start_Task {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
@@ -132,6 +138,7 @@
( $status eq 'UNAVAILABLE') ||
( $status eq 'NOT_IN_A_SLOT') ||
( $status eq 'NEEDS_CHECKIN') ||
+ ( $status eq 'WAITING_FOR_GRADE') ||
( $status eq 'INVALID_ACCESS')) {
my $bodytext=&Apache::lonxml::get_all_text("/task",$parser);
if ( $target eq "web" ) {
@@ -144,6 +151,8 @@
} elsif ($status eq 'NEEDS_CHECKIN') {
$msg.='<h1>'.&mt('You need the Proctor to validate you.').
'</h1>'.&proctor_validation_screen($slot);
+ } elsif ($status eq 'WAITING_FOR_GRADE') {
+ $msg.='<h1>'.&mt('Your submission is in the grading queue.').'</h1>';
} elsif ($status ne 'NOT_YET_VIEWED') {
$msg.='<h1>'.&mt('Not open to be viewed').'</h1>';
}
@@ -158,12 +167,15 @@
} 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.
}
}
}
@@ -179,6 +191,13 @@
'" value="'.$env{"form.grade_$field"}.'" />'."\n";
}
}
+ if ($Apache::lonhomework::history{'resource.status'} eq 'fail') {
+ $result.='<h1><font color="red">'.&mt('Did not pass').'</font></h1>';
+ $result.=&request_another_attempt_button();
+ }
+ if ($Apache::lonhomework::history{'resource.status'} eq 'pass') {
+ $result.='<h1><font color="green">'.&mt('Passed').'</font></h1>';
+ }
}
} elsif ( ($target eq 'grade' && $env{'form.webgrade'}) ||
$target eq 'webgrade') {
@@ -577,10 +596,31 @@
my $instance=&get_instance();
if ($target eq 'web') {
$result=$dimension{'intro'}.$dimension{$instance.'.text'};
+ if ($Apache::lonhomework::history{'resource.status'} eq 'pass' ||
+ $Apache::lonhomework::history{'resource.status'} eq 'fail') {
+ foreach my $id (@{$dimension{$instance.'.criterias'}}) {
+ my $status=$Apache::lonhomework::history{"resource.$dim_id.$instance.$id.status"};
+ my $comment=$Apache::lonhomework::history{"resource.$dim_id.$instance.$id.comment"};
+ $result.='<table border="1"><tr><td>';
+ if ($status eq 'fail') {
+ $result.='<font color="red">'.&mt('Did not pass').'</font>';
+ } elsif ($status eq 'pass') {
+ $result.='<font color="green">'.&mt('Passed').'</font>';
+ } else {
+ &Apache::lonxml::error("Student viewing a graded bridgetask was show a status of $status");
+ }
+ $result.='</td></tr><tr><td>';
+ if ($Apache::lonhomework::history{"resource.$dim_id.$instance.$id.comment"}) {
+ $result.=&mt('Comment from grader: ').$Apache::lonhomework::history{"resource.$dim_id.$instance.$id.comment"}.'</td></tr><tr><td>';
+ }
+ $result.=$dimension{$instance.'.criteria.'.$id}.
+ '</td></tr></table>';
+ }
+ }
} elsif ($target eq 'webgrade') {
foreach my $id (@{$dimension{$instance.'.criterias'}}) {
my $link='criteria_'.$instance.'_'.$id;
- my $status=$Apache::lonhomework::history{'resource.'.$instance.'.'.$id.'.status'};
+ my $status=$Apache::lonhomework::history{"resource.$dim_id.$instance.$id.status"};
$result.='<tr><td width="100%" valign="top">'.
'<a name="'.$link.'" />'.
'<a name="next_'.$last_link.'" />'.
@@ -588,7 +628,7 @@
#$dimension{$instance.'.criteria.'.$id}.
'</td>'.
'<td><nobr>Additional Comment for Student</nobr> <br />'.
- '<textarea style="width:100%" rows="8" width="25" wrap="hard" name="HWVAL_comment_'.$link.'">'.&HTML::Entities::encode($Apache::lonhomework::history{'resource.'.$instance.'.'.$id.'.comment'}).'</textarea>'.
+ '<textarea style="width:100%" rows="8" width="25" wrap="hard" name="HWVAL_comment_'.$link.'">'.&HTML::Entities::encode($Apache::lonhomework::history{"resource.$dim_id.$instance.$id.comment"}).'</textarea>'.
'</td>'.
'<td>'.
'<nobr><label><input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').'/>Ungraded</label></nobr><br />'.
@@ -602,16 +642,27 @@
'<input type="submit" name="next" value="'.
&mt('Done').'" /> '.
'</td></tr>';
+ $result.='<tr><td colspan="4">';
+ my (undef,undef,$udom,$uname) = &Apache::lonxml::whichuser();
+ my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio';
+ foreach my $partial_file (split(',',$Apache::lonhomework::history{"resource.0.bridgetask.portfiles"})) {
+ my $file=$file_url.$partial_file;
+ &Apache::lonnet::allowuploaded('/adm/bridgetask',$file);
+ $result.='<a href="'.$file.'" target="lonGRDs"><img src="'.
+ &Apache::loncommon::icon($file).'" border=0"> '.$file.
+ '</a>';
+ }
+ $result.='</td></tr>';
$last_link=$link;
}
- } elsif ($target eq 'grade') {
+ } elsif ($target eq 'grade' && $env{'form.webgrade'}) {
my $optional_passed=0;
my $mandatory_failed=0;
my $ungraded=0;
my $review=0;
foreach my $id (@{$dimension{$instance.'.criterias'}}) {
- my $status=$Apache::lonhomework::results{'resource.'.$instance.'.'.$id.'.status'}=$env{'form.HWVAL_criteria_'.$instance.'_'.$id};
- $Apache::lonhomework::results{'resource.'.$instance.'.'.$id.'.comment'}=$env{'form.HWVAL_comment_criteria_'.$instance.'_'.$id};
+ my $status=$Apache::lonhomework::results{"resource.$dim_id.$instance.$id.status"}=$env{'form.HWVAL_criteria_'.$instance.'_'.$id};
+ $Apache::lonhomework::results{"resource.$dim_id.$instance.$id.comment"}=$env{'form.HWVAL_comment_criteria_'.$instance.'_'.$id};
my $mandatory=($dimension{$instance.'.criteria.'.$id.'.mandatory'} ne 'N');
if ($status eq 'pass') {
if (!$mandatory) { $optional_passed++; }
@@ -622,7 +673,7 @@
} elsif ($status eq 'ungraded') {
$ungraded++;
} else {
- &Apache::lonxml::error("got wierd status --$status--");
+ &Apache::lonxml::error("got weird status --$status--");
}
}
if ($optional_passed < $dimension{$instance.'.optionalrequired'}) {
@@ -630,13 +681,17 @@
}
&Apache::lonxml::debug("all instance ".join(':',@{$dimension{$instance.'.criterias'}})." results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review");
if ($review) {
- $Apache::lonhomework::results{'resource.'.$dim_id.'.status'}='review';
+ $Apache::lonhomework::results{"resource.$dim_id.status"}=
+ 'review';
} elsif ($ungraded) {
- $Apache::lonhomework::results{'resource.'.$dim_id.'.status'}='ungraded';
+ $Apache::lonhomework::results{"resource.$dim_id.status"}=
+ 'ungraded';
} elsif ($mandatory_failed) {
- $Apache::lonhomework::results{'resource.'.$dim_id.'.status'}='fail';
+ $Apache::lonhomework::results{"resource.$dim_id.status"}=
+ 'fail';
} else {
- $Apache::lonhomework::results{'resource.'.$dim_id.'.status'}='pass';
+ $Apache::lonhomework::results{"resource.$dim_id.status"}=
+ 'pass';
}
}
return $result;
--albertel1115756966--