--- loncom/homework/structuretags.pm 2001/10/13 05:59:18 1.70 +++ loncom/homework/structuretags.pm 2001/10/30 19:18:15 1.71 @@ -379,38 +379,39 @@ sub end_while { # sub start_randomlist { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; - my $body= &Apache::lonxml::get_all_text("/randomlist",$$parser[$#$parser]); - my $b_parser= HTML::TokeParser->new(\$body); - my $b_tok; - my @randomlist; - my $list_item; - - while($b_tok = $b_parser->get_token() ) { - if($b_tok->[0] eq 'S') { # start tag - # get content of the tag until matching end tag - # get all text upto the matching tag - # and push the content into @randomlist - $list_item = &Apache::lonxml::get_all_text('/'.$b_tok->[1],$b_parser); - $list_item = "$b_tok->[4]"."$list_item"."[1]>"; - push(@randomlist,$list_item); - # print "
START-TAG $b_tok->[1], $b_tok->[4], $list_item"; + if ($target eq 'answer' || $target eq 'grade' || $target eq 'web') { + my $body= &Apache::lonxml::get_all_text("/randomlist",$$parser[$#$parser]); + my $b_parser= HTML::TokeParser->new(\$body); + my $b_tok; + my @randomlist; + my $list_item; + while($b_tok = $b_parser->get_token() ) { + if($b_tok->[0] eq 'S') { # start tag + # get content of the tag until matching end tag + # get all text upto the matching tag + # and push the content into @randomlist + $list_item = &Apache::lonxml::get_all_text('/'.$b_tok->[1],$b_parser); + $list_item = "$b_tok->[4]"."$list_item"."[1]>"; + push(@randomlist,$list_item); + # print "
START-TAG $b_tok->[1], $b_tok->[4], $list_item"; + } + if($b_tok->[0] eq 'T') { # text + # what to do with text in between tags? + # print "TEXT $b_tok->[1]
"; + } + # if($b_tok->[0] eq 'E') { # end tag, should not happen + # print "END-TAG $b_tok->[1]
"; + # } } - if($b_tok->[0] eq 'T') { # text - # what to do with text in between tags? - # print "TEXT $b_tok->[1]
"; + + my @idx_arr = (0 .. $#randomlist); + &Apache::structuretags::shuffle(\@idx_arr); + my $bodytext = ''; + for(0 .. $#randomlist) { + $bodytext .= "$randomlist[ $idx_arr[$_] ]"; } - # if($b_tok->[0] eq 'E') { # end tag, should not happen - # print "END-TAG $b_tok->[1]
"; - # } - } - my @idx_arr = (0 .. $#randomlist); - &Apache::structuretags::shuffle(\@idx_arr); - my $bodytext = ''; - for(0 .. $#randomlist) { - $bodytext .= "$randomlist[ $idx_arr[$_] ]"; + &Apache::lonxml::newparser($parser,\$bodytext); } - - &Apache::lonxml::newparser($parser,\$bodytext); return ""; }