--- loncom/homework/bridgetask.pm 2005/10/01 03:27:44 1.59 +++ loncom/homework/bridgetask.pm 2005/12/01 18:46:31 1.87 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.59 2005/10/01 03:27:44 albertel Exp $ +# $Id: bridgetask.pm,v 1.87 2005/12/01 18:46:31 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -60,7 +60,7 @@ sub initialize_bridgetask { } sub proctor_check_auth { - my ($slot_name,$slot)=@_; + my ($slot_name,$slot,$type)=@_; my $user=$env{'form.proctorname'}; my $domain=$env{'form.proctordomain'}; @@ -68,8 +68,18 @@ sub proctor_check_auth { foreach my $possible (@allowed) { my ($puser,$pdom)=(split('@',$possible)); if ($puser eq $user && $pdom eq $domain) { - my $authhost=&Apache::lonnet::authenticate($puser,$env{'form.proctorpassword'},$pdom); - if ($authhost ne 'no_host') { + my $authenticated=0; + if ( $slot->{'secret'} =~ /\S/ && + $env{'form.proctorpassword'} eq $slot->{'secret'} ) { + $authenticated=1; + } else { + + my $authhost=&Apache::lonnet::authenticate($puser,$env{'form.proctorpassword'},$pdom); + if ($authhost ne 'no_host') { + $authenticated=1; + } + } + if ($authenticated && $type eq 'Task') { my $version= $Apache::lonhomework::results{'resource.version'}= ++$Apache::lonhomework::history{'resource.version'}; @@ -83,6 +93,12 @@ sub proctor_check_auth { } } return 1; + } elsif ($authenticated && $type eq 'problem') { + &Apache::lonxml::debug("authed #slot_name"); + $Apache::lonhomework::results{"resource.0.checkedin"}= + $user.'@'.$domain; + $Apache::lonhomework::results{"resource.0.checkedin.slot"}= + $slot_name; } } } @@ -294,6 +310,7 @@ sub show_task { ( $status eq 'INVALID_ACCESS') )) { return 0; } + if ($env{'form.donescreen'}) { return 0; } return 1; } @@ -302,13 +319,78 @@ sub internal_location { return ''; } +sub submission_time_stamp { + my ($symb,$courseid,$udom,$uname)=&Apache::lonxml::whichuser(); + my $submissiontime; + my $version=$Apache::lonhomework::history{'resource.version'}; + for (my $v=$Apache::lonhomework::history{'version'};$v>0;$v--) { + if (defined($Apache::lonhomework::history{$v.':resource.'.$version.'.0.bridgetask.portfiles'})) { + $submissiontime=$Apache::lonhomework::history{$v.':timestamp'}; + } + } + my $result; + if ($submissiontime) { + my $slot_name=$Apache::lonhomework::history{'resource.'.$version.'.checkedin.slot'}; + my %slot=&Apache::lonnet::get_slot($slot_name); + my $diff = $slot{'endtime'} - $submissiontime; + my ($color,$when)=('#FF6666','after'); + if ($diff > 0) { ($color,$when)=('#336600','before'); } + my $info; + if ($diff%60) { $info=($diff%60).' seconds'; } + $diff=int($diff/60); + if ($diff%60) { $info=($diff%60).' minutes '.$info; } + $diff=int($diff/60); + if ($diff) { $info=$diff.' hours '.$info; } + $result='
'. + &mt('Student submitted [_1] [_2] the deadline. + (Submission was at [_3], end of period was [_4].)', + $info,$when,scalar(localtime($submissiontime)), + scalar(localtime($slot{'endtime'}))). + '
'; + } + return $result; +} + +sub webgrade_standard_info { + my ($version)=&get_version(); + my (undef,undef,$udom,$uname) = &Apache::lonxml::whichuser(); + my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/'; + my $file_list="