--- loncom/homework/bridgetask.pm 2005/04/08 19:21:52 1.12 +++ 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.12 2005/04/08 19:21:52 albertel Exp $ +# $Id: bridgetask.pm,v 1.13 2005/04/29 21:22:33 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -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') { @@ -159,6 +172,9 @@ sub start_Task { } } } + } 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,7 +187,7 @@ 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 'answer') || ($target eq 'tex') @@ -184,6 +200,8 @@ sub end_Task { ""; $result.=&Apache::inputtags::gradestatus('0'); } + } + if ($target eq 'web' || $target eq 'webgrade') { $result.=&Apache::lonxml::xmlend().''; } } @@ -210,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; } @@ -218,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; } @@ -233,21 +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 @order=&Math::Random::random_permutation(@{$dimension{'instances'}}); - my $instance=$order[0]; + 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; } @@ -255,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(); } } @@ -266,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(); } } @@ -289,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 ''; @@ -298,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 ''; @@ -306,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 ''; @@ -315,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;