--- loncom/homework/structuretags.pm 2005/04/22 17:15:33 1.289 +++ loncom/homework/structuretags.pm 2005/09/23 20:16:50 1.302 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.289 2005/04/22 17:15:33 albertel Exp $ +# $Id: structuretags.pm,v 1.302 2005/09/23 20:16:50 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -68,6 +68,34 @@ sub end_tex { return ''; } +sub body_tag_start { + my ($target,$background,$bgcolor)=@_; + my $body_tag_start=''."\n"; - } - if ($target eq 'web' && $env{'request.state'} ne 'construct') { + my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack, + $safeeval); + $body_tag_start=&body_tag_start($target,$background,$bgcolor); + if ( ($target eq 'web' || $target eq 'webgrade') + && $env{'request.state'} ne 'construct') { my ($symb,undef,undef,undef,$publicuser)= &Apache::lonxml::whichuser(); if ($symb eq '' && !$publicuser) { @@ -365,13 +373,19 @@ sub store_aggregates { } if ($Apache::lonhomework::results{'resource.'.$part.'.tries'} == 1) { $aggregate{$symb."\0".$part."\0users"} = 1; + } else { + my (undef,$last_reset) = &Apache::grades::get_last_resets($symb,$env{'request.course.id'},[$part]); + if ($last_reset) { + if (&Apache::grades::get_num_tries(\%Apache::lonhomework::history,$last_reset,$part) == 0) { + $aggregate{$symb."\0".$part."\0users"} = 1; + } + } } $aggregate{$symb."\0".$part."\0attempts"} = 1; } - if (%aggregate) { + if (keys (%aggregate) > 0) { &Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, - $cdomain,$cname); - + $cdomain,$cname); } } @@ -509,6 +523,7 @@ sub start_problem { &Apache::lonxml::debug("Using default type, problem, :$uri:"); } } + $Apache::lonhomework::default_type = $Apache::lonhomework::type; #added vars to the scripting enviroment my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; @@ -551,11 +566,12 @@ sub start_problem { value="'.$env{'form.username'}.'" />'; if ($env{'user.adv'}) { $form_tag_start.= - ' '; } $form_tag_start.='
'; } @@ -629,6 +645,10 @@ sub start_problem { } my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries"); if (defined($maxtries) && $maxtries < 0) { $allow_print_points=0; } + if (lc($env{'course.'.$env{'request.course.id'}. + '.disableexampointprint'}) eq 'yes') { + $allow_print_points=0; + } my $duedate = &Apache::lonnet::EXT("resource.$id.duedate"); $duedate = POSIX::strftime("%c",localtime($duedate)); my $temp_file; @@ -738,7 +758,8 @@ sub end_problem { } if ($target eq 'answer' && ($env{'request.state'} eq 'construct') && $env{'form.answer_output_mode'} ne 'tex') { - $result.=''; # normally we get it from xmlend, but in CSTR + $result.=&Apache::lonxml::xmlend().''; + # normally we get it from above, but in CSTR # we always show answer mode too. } } elsif ($target eq 'meta') { @@ -1120,7 +1141,7 @@ sub start_part { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result=''; my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); - if ($id eq '') { $id = $Apache::lonxml::curdepth; } + if ($id =~ /^\s*$/) { $id = $Apache::lonxml::curdepth; } $Apache::inputtags::part=$id; push(@Apache::inputtags::partlist,$id); @Apache::inputtags::response=(); @@ -1190,6 +1211,10 @@ sub start_part { if (defined($maxtries) && $maxtries < 0) { $allow_print_points=0; } + if (lc($env{'course.'.$env{'request.course.id'}. + '.disableexampointprint'}) eq 'yes') { + $allow_print_points=0; + } if (($Apache::lonhomework::type eq 'exam') && ($allow_print_points)) { $result .= '\fbox{\textit{'.$weight.' pt}}';} } elsif ($target eq 'web') { $result.=''; @@ -1247,6 +1272,7 @@ sub end_part { } pop @Apache::inputtags::status; $Apache::inputtags::part=''; + $Apache::lonhomework::type = $Apache::lonhomework::default_type; return $result; } @@ -1254,7 +1280,8 @@ sub start_preduedate { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { &Apache::lonxml::debug("State in preduedate is ". $Apache::inputtags::status['-1']); - if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && + if (!$Apache::lonhomework::scantronmode && + $Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') { &Apache::lonxml::debug("Wha? ". ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER')); &Apache::lonxml::get_all_text("/preduedate",$parser); @@ -1270,7 +1297,8 @@ sub end_preduedate { sub start_postanswerdate { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; if ($target eq 'web' || $target eq 'grade') { - if ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') { + if ($Apache::lonhomework::scantronmode || + $Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') { &Apache::lonxml::get_all_text("/postanswerdate",$parser); } } elsif ($target eq 'tex') {