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

version 1.459, 2007/09/11 23:53:13 version 1.460, 2007/09/12 10:58:18
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 358  sub xmlparse { Line 365  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 627  sub setup_globals { Line 637  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 1011  sub get_all_text_unbalanced { Line 1022  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 1041  sub increment_counter { Line 1161  sub increment_counter {
   
 =pod  =pod
   
 =item &init_counter($increment);  =item &init_counter;
   
 Initialize the internal counter environment variable  Initialize the internal counter environment variable
   
Line 1085  sub store_counter { Line 1205  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.459  
changed lines
  Added in v.1.460


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