--- loncom/homework/structuretags.pm 2007/10/09 23:32:57 1.401 +++ loncom/homework/structuretags.pm 2007/10/16 23:20:25 1.404 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.401 2007/10/09 23:32:57 albertel Exp $ +# $Id: structuretags.pm,v 1.404 2007/10/16 23:20:25 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -158,7 +158,9 @@ sub page_start { } elsif (!defined($found{'body'}) && $env{'request.state'} eq 'construct') { if ($target eq 'web' || $target eq 'edit') { - # no extra args to bodytag + if ($env{'environment.remote'} ne 'off') { + $body_args{'only_body'} = 1; + } } } elsif (!defined($found{'body'})) { my %add_entries; @@ -1487,6 +1489,8 @@ sub start_part { @Apache::inputtags::previous=(); @Apache::inputtags::previous_version=(); $Apache::lonhomework::problemstatus=&get_problem_status($id); + &Apache::response::reset_params(); + my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part); my $newtype=&Apache::lonnet::EXT("resource.$id.type"); if ($newtype) { $Apache::lonhomework::type=$newtype; } @@ -1743,6 +1747,13 @@ sub start_startouttext { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my @result=(''.''); if ($target eq 'edit' || $target eq 'modified' ) { @result=('','no'); } + + my $nesting = + &Apache::lonxml::set_state('outtext', + &Apache::lonxml::get_state('outtext')+1); + if ($nesting > 1 && $env{'request.state'} eq 'construct') { + &Apache::lonxml::error("Nesting of <startouttext /> not allowed, on line ".$token->[5]); + } return (@result); } @@ -1782,6 +1793,14 @@ sub start_endouttext { $result=''. &Apache::edit::handle_insertafter('startouttext'); } + + my $nesting = + &Apache::lonxml::set_state('outtext', + &Apache::lonxml::get_state('outtext')-1); + if ($nesting < 0 && $env{'request.state'} eq 'construct') { + &Apache::lonxml::error(" Extraneous <endouttext /> not allowed on line ".$token->[5]); + &Apache::lonxml::set_state('outtext', 0); + } return $result; }