--- 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"."$b_tok->[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"."$b_tok->[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 "";
}