Diff for /loncom/xml/lonxml.pm between versions 1.460 and 1.461

version 1.460, 2007/09/12 10:58:18 version 1.461, 2007/09/12 14:34:52
Line 135  $Apache::lonxml::request=''; Line 135  $Apache::lonxml::request='';
 $Apache::lonxml::counter=1;  $Apache::lonxml::counter=1;
 $Apache::lonxml::counter_changed=0;  $Apache::lonxml::counter_changed=0;
   
 # A count of bubble lines needed for a set.. and a check on   
 # whether or not it is ever used too:  
   
 $Apache::lonxml::bubble_line_counter         = 1;  
 $Apache::lonxml::bubble_line_counter_changed = 0;  
   
   
 #internal check on whether to look at style defs  #internal check on whether to look at style defs
 $Apache::lonxml::usestyle=1;  $Apache::lonxml::usestyle=1;
   
Line 365  sub xmlparse { Line 358  sub xmlparse {
  }   }
  &do_registered_ssi();   &do_registered_ssi();
  if ($Apache::lonxml::counter_changed) { &store_counter() }   if ($Apache::lonxml::counter_changed) { &store_counter() }
  if ($Apache::lonxml::bubble_line_counter_changed) {  
      &store_bubble_counter();  
  }  
   
  &clean_safespace($safeeval);   &clean_safespace($safeeval);
   
Line 637  sub setup_globals { Line 627  sub setup_globals {
   $Apache::lonxml::default_homework_loaded=0;    $Apache::lonxml::default_homework_loaded=0;
   $Apache::lonxml::usestyle=1;    $Apache::lonxml::usestyle=1;
   &init_counter();    &init_counter();
   &init_bubble_counter();  
   @Apache::lonxml::pwd=();    @Apache::lonxml::pwd=();
   @Apache::lonxml::extlinks=();    @Apache::lonxml::extlinks=();
   @script_var_displays=();    @script_var_displays=();
Line 1022  sub get_all_text_unbalanced { Line 1011  sub get_all_text_unbalanced {
     return $result      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.bubble_line_counter', and is modifed and handled by   
 the following routines.  
   
 The value of it is stored in $Apache:lonxml::bubble_line_counter when   
 live and stored back to env after done.  
   
 =item &increment_bubble_counter($increment)  
   
 Increments the bubble line counter by the optional value  
 $increment (defaults to 1).  
   
  'bad increments' are also treated as an increment of 1.  
 ('bad' means <=0).  
   
 =cut  
   
 sub increment_bubble_counter {  
     my ($increment) = @_;  
     if (!defined($increment) || $increment le 0) {  
  $increment = 1;  
     }  
     $Apache::lonxml::bubble_line_counter         += $increment;  
     $Apache::lonxml::bubble_line_counter_changed  = 1;  
 }  
 =pod  
       
 =item &init_bubble_counter  
   
 Initialize the internal counter to the env. variable  
 or 1 if we are inconstruction space, or if the env var  
 is not defined.  
   
 =cut  
   
 sub init_bubble_counter {  
     if ($env{'request.state'} eq 'construct') {  
  $Apache::lonxml::bubble_line_counter         = 1;  
  $Apache::lonxml::bubble_line_counter_changed = 1;  
     } elsif (defined($env{'form.bubble_line_counter'})) {  
  $Apache::lonxml::bubble_line_counter         =  
                                    $env{'form.bubble_line_counter'};  
  $Aapche::lonxml::bubble_line_counter_changed = 0;  
     } else {  
  $Apache::lonxml::bubble_line_counter         = 1;  
  $Apache::lonxml::bubble_line_counter_changed = 1;  
     }  
   
 }  
   
 =pod  
   
 =item store_bubble_counter;  
   
    Store the bubble line counter in its env var.  The changed flag  
     is reset indicating the env is up to date with respect to the  
     local variable.  
 =cut  
   
 sub store_bubble_counter {  
     &Apache::lonnet::appenv(('form.bubble.counter' =>   
             $Apache::lonxml::bubble_line_counter));  
     $Apache::lonnet::bubble_line_counter_changed = 0;  
   
     return '';  
 }  
   
 =pod  
     
 The next set of subs allow a single level of save/restore for the  
 bubble_line_counter.  
   
 =cut  
   
 {  
     my $bubble_counter_state;  
   
     sub clear_bubble_counter {  
  undef($bubble_counter_state);  
  &Apache::lonnet::delenv('form.bubble_line_counter');  
  &Apache::lonxml::init_bubble_counter();  
  &Apache::lonxml::store_bubble_counter();  
     }  
   
     sub remember_bubble_counter {  
  &Apache::lonnet::transfer_profile_to_env(undef,undef, 1);  
  $bubble_counter_state = $env{'form.bubble_line_counter'};  
     }  
   
     sub restore_bubble_counter {  
  if (defined($bubble_counter_state)) {  
     &Apache::lonnet::appenv(('form.bubble_line_counter' =>   
                  $bubble_counter_state));  
  }  
     }  
   
     sub get_bubble_counter {  
  if ($Apache::lonxml::bubble_line_counter_changed) {  
     &store_bubble_counter();  
  }  
  &Apache::lonnet::transfer_profile_to_env(undef, undef, 1);  
  return $env{'form.bubble_line_counter'};  
     }  
 }  
   
 =pod  =pod
   
 For bubble grading mode and exam bubble printing mode, the tracking of  For bubble grading mode and exam bubble printing mode, the tracking of
Line 1161  sub increment_counter { Line 1041  sub increment_counter {
   
 =pod  =pod
   
 =item &init_counter;  =item &init_counter($increment);
   
 Initialize the internal counter environment variable  Initialize the internal counter environment variable
   
Line 1205  sub store_counter { Line 1085  sub store_counter {
     &Apache::lonnet::appenv(('form.counter' => $state));      &Apache::lonnet::appenv(('form.counter' => $state));
  }   }
     }      }
   
     sub get_problem_counter {      sub get_problem_counter {
  if ($Apache::lonxml::counter_changed) { &store_counter() }   if ($Apache::lonxml::counter_changed) { &store_counter() }
  &Apache::lonnet::transfer_profile_to_env(undef,undef,1);   &Apache::lonnet::transfer_profile_to_env(undef,undef,1);
  return $env{'form.counter'};   return $env{'form.counter'};
     }      }
   
 }  }
   
 sub get_all_text {  sub get_all_text {

Removed from v.1.460  
changed lines
  Added in v.1.461


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>