--- loncom/homework/bridgetask.pm 2005/04/04 18:14:58 1.9 +++ loncom/homework/bridgetask.pm 2005/04/29 21:22:33 1.13 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.9 2005/04/04 18:14:58 albertel Exp $ +# $Id: bridgetask.pm,v 1.13 2005/04/29 21:22:33 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -56,14 +56,14 @@ sub initialize_bridgetask { sub proctor_check_auth { my ($slot)=@_; - my $user=$ENV{'form.proctorname'}; - my $domain=$ENV{'form.proctordomain'}; + my $user=$env{'form.proctorname'}; + my $domain=$env{'form.proctordomain'}; my @allowed=split(",",$slot->{'proctor'}); 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); + my $authhost=&Apache::lonnet::authenticate($puser,$env{'form.proctorpassword'},$pdom); if ($authhost ne 'no_host') { $Apache::lonhomework::results{'resource.checkedin'}= $user.'@'.$domain; @@ -82,12 +82,19 @@ sub add_previous_version_button { return $result; } +sub add_grading_button { + my $result; + $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); $Apache::lonhomework::parsing_a_task=1; #should get back a or the neccesary stuff to start XML/MathML @@ -96,6 +103,12 @@ sub start_Task { if ($target eq 'web') { $body_tag_start.=&add_previous_version_button(); + if ($Apache::lonhomework::modifygrades) { + $body_tag_start.='
'.&add_grading_button()."
"; + } } if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { @@ -152,13 +165,16 @@ sub start_Task { $body_tag_start \n $form_tag_start". ''; # if we are viewing someone else preserve that info - if (defined $ENV{'form.grade_symb'}) { + if (defined $env{'form.grade_symb'}) { foreach my $field ('symb','courseid','domain','username') { $result .= ''."\n"; + '" value="'.$env{"form.grade_$field"}.'" />'."\n"; } } } + } elsif ($target eq 'webgrade') { + $result.=$head_tag_start.$body_tag_start.$form_tag_start. + 'Yahoo!'; } else { # page_start returned a starting result, delete it if we don't need it $result = ''; @@ -171,9 +187,9 @@ sub end_Task { my $result=''; my $status=$Apache::inputtags::status['-1']; if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || - $target eq 'tex') { + $target eq 'tex' || $target eq 'webgrade') { if ( - (($target eq 'web') && ($ENV{'request.state'} ne 'construct')) || + (($target eq 'web') && ($env{'request.state'} ne 'construct')) || ($target eq 'answer') || ($target eq 'tex') ) { if ($target eq 'web') { @@ -184,10 +200,18 @@ sub end_Task { ""; $result.=&Apache::inputtags::gradestatus('0'); } + } + if ($target eq 'web' || $target eq 'webgrade') { $result.=&Apache::lonxml::xmlend().''; } } if ($target eq 'grade') { + my $award='SUBMITTED'; + &Apache::essayresponse::file_submission('0','bridgetask','portfiles',$award); + if ($Apache::lonhomework::results{"resource.0.bridgetask.portfiles"}) { + $Apache::lonhomework::results{"resource.0.tries"}= + 1+$Apache::lonhomework::history{"resource.0.tries"}; + } &Apache::lonhomework::showhash(%Apache::lonhomework::results); &Apache::structuretags::finalize_storage(); } @@ -204,6 +228,8 @@ sub start_ClosingParagraph { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result; if ($target eq 'web') { + } elsif ($target eq 'webgrade') { + &Apache::lonxml::startredirection(); } return $result; } @@ -212,6 +238,8 @@ sub end_ClosingParagraph { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result; if ($target eq 'web') { + } elsif ($target eq 'webgrade') { + &Apache::lonxml::endredirection(); } return $result; } @@ -227,22 +255,29 @@ sub start_Dimension { return ''; } +sub get_instance { + #FIXME just grabbing the first one for now, need + #to randomly pick one until all have been seen + #then start repicking + &Apache::response::pushrandomnumber(); + my @order=&Math::Random::random_permutation(@{$dimension{'instances'}}); + return $order[0]; +} + sub end_Dimension { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result; if ($target eq 'web') { - #FIXME just grabbing the first one for now, need - #to randomly pick one until all have been seen - #then start repicking - &Apache::response::pushrandomnumber(); - my $num_instances=scalar(@{$dimension{'instances'}}); - my $which=&Math::Random::random_uniform_integer(1,0,$num_instances-1); - my $instance=$dimension{'instances'}->[$which]; + my $instance=&get_instance(); $result=$dimension{'intro'}.$dimension{$instance.'.text'}; - #FIXME: don't show the criteria yet - #foreach my $id (@{$dimension{$instance.'.criterias'}}) { - # $result.=$dimension{$instance.'.criteria.'.$id}; - #} + } elsif ($target eq 'webgrade') { + my $instance=&get_instance(); + $result.=''; + foreach my $id (@{$dimension{$instance.'.criterias'}}) { + $result.=''; + } + $result.='
'. + $dimension{$instance.'.criteria.'.$id}.'
'; } return $result; } @@ -250,8 +285,8 @@ sub end_Dimension { sub start_IntroParagraph { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result; - if ($target eq 'web') { - if ($tagstack->[-2] eq 'Dimension') { + if ($target eq 'web' || $target eq 'webgrade') { + if ($tagstack->[-2] eq 'Dimension' || $target eq 'webgrade') { &Apache::lonxml::startredirection(); } } @@ -261,8 +296,8 @@ sub start_IntroParagraph { sub end_IntroParagraph { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result; - if ($target eq 'web') { - if ($tagstack->[-2] eq 'Dimension') { + if ($target eq 'web' || $target eq 'webgrade') { + if ($tagstack->[-2] eq 'Dimension' || $target eq 'webgrade') { $dimension{'intro'}=&Apache::lonxml::endredirection(); } } @@ -284,7 +319,7 @@ sub end_Instance { sub start_InstanceText { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; - if ($target eq 'web') { + if ($target eq 'web' || $target eq 'webgrade') { &Apache::lonxml::startredirection(); } return ''; @@ -293,7 +328,7 @@ sub start_InstanceText { sub end_InstanceText { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $instance_id=$Apache::bridgetask::instance[-1]; - if ($target eq 'web') { + if ($target eq 'web' || $target eq 'webgrade') { $dimension{$instance_id.'.text'}=&Apache::lonxml::endredirection(); } return ''; @@ -301,7 +336,7 @@ sub end_InstanceText { sub start_Criteria { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; - if ($target eq 'web') { + if ($target eq 'web' || $target eq 'webgrade') { &Apache::lonxml::startredirection(); } return ''; @@ -310,7 +345,7 @@ sub start_Criteria { sub end_Criteria { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $instance_id=$Apache::bridgetask::instance[-1]; - if ($target eq 'web') { + if ($target eq 'web' || $target eq 'webgrade') { my $criteria=&Apache::lonxml::endredirection(); my $id=$Apache::lonxml::curdepth; $dimension{$instance_id.'.criteria.'.$id}=$criteria; @@ -323,10 +358,10 @@ sub proctor_validation_screen { my ($slot) = @_; my (undef,undef,$domain,$user) = &Apache::lonxml::whichuser(); my $url=&Apache::lonnet::studentphoto($domain,$user,'jpg'); - $user=$ENV{'form.proctorname'}; - if ($ENV{'form.proctordomain'}) { $domain=$ENV{'form.proctordomain'}; } + $user=$env{'form.proctorname'}; + if ($env{'form.proctordomain'}) { $domain=$env{'form.proctordomain'}; } my $msg; - if ($ENV{'form.proctorpassword'}) { + if ($env{'form.proctorpassword'}) { $msg='

'.&mt("Failed to authenticate the proctor.") .'

'; } @@ -334,7 +369,7 @@ sub proctor_validation_screen {

Proctor Validation

Your room's proctor needs to validate your access to this resource.

$msg -
+