--- loncom/xml/lonxml.pm 2007/05/14 08:42:13 1.445 +++ loncom/xml/lonxml.pm 2007/06/11 20:52:40 1.448 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.445 2007/05/14 08:42:13 albertel Exp $ +# $Id: lonxml.pm,v 1.448 2007/06/11 20:52:40 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -125,6 +125,9 @@ $evaluate = 1; # stores the list of active tag namespaces @namespace=(); +# stores all Scrit Vars displays for later showing +my @script_var_displays=(); + # a pointer the the Apache request object $Apache::lonxml::request=''; @@ -357,6 +360,11 @@ sub xmlparse { &clean_safespace($safeeval); + if (@script_var_displays) { + $finaloutput .= join('',@script_var_displays); + undef(@script_var_displays); + } + if ($env{'form.return_only_error_and_warning_counts'}) { return "$errorcount:$warningcount"; } @@ -599,9 +607,9 @@ sub callsub { } } if ($token->[0] eq 'S') { - $currentstring.=&Apache::edit::handle_insert(); + $currentstring.=&Apache::edit::handle_insert(); } elsif ($token->[0] eq 'E') { - $currentstring.=&Apache::edit::handle_insertafter($token->[1]); + $currentstring.=&Apache::edit::handle_insertafter($token->[1]); } } } @@ -620,6 +628,7 @@ sub setup_globals { &init_counter(); @Apache::lonxml::pwd=(); @Apache::lonxml::extlinks=(); + @script_var_displays=(); @Apache::lonxml::ssi_info=(); $Apache::lonxml::post_evaluate=1; $Apache::lonxml::warnings_error_header=''; @@ -997,6 +1006,24 @@ sub get_all_text_unbalanced { return $result } +=pod + +For bubble grading mode and exam bubble printing mode, the tracking of +the current 'bubble line number' is stored in the %env element +'form.counter', and is modifed and handled by the following routines. + +The value of it is stored in $Apache:lonxml::counter when live and +stored back to env after done. + +=item &increment_counter($increment); + +Increments the internal counter environment variable a specified amount + +Optional Arguments: + $increment - amount to increment by (defaults to 1) + +=cut + sub increment_counter { my ($increment) = @_; if (defined($increment) && $increment gt 0) { @@ -1007,6 +1034,14 @@ sub increment_counter { $Apache::lonxml::counter_changed=1; } +=pod + +=item &init_counter($increment); + +Initialize the internal counter environment variable + +=cut + sub init_counter { if ($env{'request.state'} eq 'construct') { $Apache::lonxml::counter=1; @@ -1228,6 +1263,12 @@ sub do_registered_ssi { &Apache::lonnet::ssi($url,%form); } } + +sub add_script_result { + my ($display) = @_; + push(@script_var_displays, $display); +} + # # Afterburner handles anchors, highlights and links # @@ -1748,8 +1789,8 @@ sub register_insert_xml { my $allow = $insertlist{"$tag.allow"}; foreach my $element (split(',',$allow)) { $element =~ s/(^\s*|\s*$ )//gx; - if (exists($insertlist{"$element.show"}) - && $insertlist{"$element.show"} ne 'no') { + if (!exists($insertlist{"$element.show"}) + || $insertlist{"$element.show"} ne 'no') { push(@{ $insertlist{$tag.'.which'} },$element); } }