Diff for /loncom/xml/lonxml.pm between versions 1.438 and 1.442

version 1.438, 2007/02/18 02:07:11 version 1.442, 2007/04/07 00:04:40
Line 585  sub callsub { Line 585  sub callsub {
   } elsif ($token->[0] eq 'E') {    } elsif ($token->[0] eq 'E') {
     $currentstring = &Apache::edit::tag_end($target,$token);      $currentstring = &Apache::edit::tag_end($target,$token);
   }    }
  } elsif ($target eq 'modified') {   }
         }
         if ($target eq 'modified' && $nodefault eq '') {
     if ($currentstring eq '') {
         if ($token->[0] eq 'S') {
     $currentstring = $token->[4];
         } elsif ($token->[0] eq 'E') {
     $currentstring = $token->[2];
         } else {
     $currentstring = $token->[2];
         }
     }
   if ($token->[0] eq 'S') {    if ($token->[0] eq 'S') {
     $currentstring = $token->[4];  
     $currentstring.=&Apache::edit::handle_insert();      $currentstring.=&Apache::edit::handle_insert();
   } elsif ($token->[0] eq 'E') {    } elsif ($token->[0] eq 'E') {
     $currentstring = $token->[2];  
             $currentstring.=&Apache::edit::handle_insertafter($token->[1]);              $currentstring.=&Apache::edit::handle_insertafter($token->[1]);
   } else {  
     $currentstring = $token->[2];  
   }    }
  }  
       }        }
     }      }
     use strict 'refs';      use strict 'refs';
Line 901  sub end_tag { Line 907  sub end_tag {
   
 sub initdepth {  sub initdepth {
   @Apache::lonxml::depthcounter=();    @Apache::lonxml::depthcounter=();
   $Apache::lonxml::depth=-1;    undef($Apache::lonxml::last_depth_count);
   $Apache::lonxml::olddepth=-1;  
 }  }
   
   
 my @timers;  my @timers;
 my $lasttime;  my $lasttime;
 # $Apache::lonxml::depth -> current stack depth  
 # @Apache::lonxml::depthcounter -> count of tags that exist so  # @Apache::lonxml::depthcounter -> count of tags that exist so
 #                                  far at each level  #                                  far at each level
 # $Apache::lonxml::olddepth -> when ascending, need to remember the count for the level below the current level (for example going from 1_2 -> 1 -> 1_3 need to rember that )   # $Apache::lonxml::last_depth_count -> when ascending, need to
   # remember the count for the level below the current level (for
   # example going from 1_2 -> 1 -> 1_3 need to remember the 2 )
   
 sub increasedepth {  sub increasedepth {
   my ($token) = @_;    my ($token) = @_;
   $Apache::lonxml::depth++;    push(@Apache::lonxml::depthcounter,$Apache::lonxml::last_depth_count+1);
   $Apache::lonxml::depthcounter[$Apache::lonxml::depth]++;    undef($Apache::lonxml::last_depth_count);
   if ($Apache::lonxml::depthcounter[$Apache::lonxml::depth]==1) {  
     $Apache::lonxml::olddepth=$Apache::lonxml::depth;  
   }  
   my $time;    my $time;
   if ($Apache::lonxml::debug eq "1") {    if ($Apache::lonxml::debug eq "1") {
       push(@timers,[&gettimeofday()]);        push(@timers,[&gettimeofday()]);
       $time=&tv_interval($lasttime);        $time=&tv_interval($lasttime);
       $lasttime=[&gettimeofday()];        $lasttime=[&gettimeofday()];
   }    }
   my $spacing='  'x($Apache::lonxml::depth-1);    my $spacing='  'x($#Apache::lonxml::depthcounter);
   $Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter);    $Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter);
   &Apache::lonxml::debug("s$spacing$Apache::lonxml::depth : $Apache::lonxml::olddepth : $Apache::lonxml::curdepth : $token->[1] : $time");  #  &Apache::lonxml::debug("s$spacing$Apache::lonxml::depth : $Apache::lonxml::olddepth : $Apache::lonxml::curdepth : $token->[1] : $time");
 #print "<br />s $Apache::lonxml::depth : $Apache::lonxml::olddepth : $curdepth : $token->[1]\n";  #print "<br />s $Apache::lonxml::depth : $Apache::lonxml::olddepth : $curdepth : $token->[1]\n";
 }  }
   
 sub decreasedepth {  sub decreasedepth {
   my ($token) = @_;    my ($token) = @_;
   $Apache::lonxml::depth--;    if (  $#Apache::lonxml::depthcounter == -1) {
   if ($Apache::lonxml::depth<$Apache::lonxml::olddepth-1) {        &Apache::lonxml::warning(&mt("Missing tags, unable to properly run file."));
     $#Apache::lonxml::depthcounter--;  
     $Apache::lonxml::olddepth=$Apache::lonxml::depth+1;  
   }  
   if (  $Apache::lonxml::depth < -1) {  
     &Apache::lonxml::warning(&mt("Missing tags, unable to properly run file."));  
     $Apache::lonxml::depth='-1';  
   }    }
     $Apache::lonxml::last_depth_count = pop(@Apache::lonxml::depthcounter);
   
   my ($timer,$time);    my ($timer,$time);
   if ($Apache::lonxml::debug eq "1") {    if ($Apache::lonxml::debug eq "1") {
       $timer=pop(@timers);        $timer=pop(@timers);
       $time=&tv_interval($lasttime);        $time=&tv_interval($lasttime);
       $lasttime=[&gettimeofday()];        $lasttime=[&gettimeofday()];
   }    }
   my $spacing='  'x$Apache::lonxml::depth;    my $spacing='  'x($#Apache::lonxml::depthcounter);
   $Apache::lonxml::curdepth=    $Apache::lonxml::curdepth = join('_',@Apache::lonxml::depthcounter);
       join('_',@Apache::lonxml::depthcounter[0..$Apache::lonxml::depth]);  #  &Apache::lonxml::debug("e$spacing$Apache::lonxml::depth : $Apache::lonxml::olddepth : $Apache::lonxml::curdepth : $token->[1] : $time : ".&tv_interval($timer));
   &Apache::lonxml::debug("e$spacing$Apache::lonxml::depth : $Apache::lonxml::olddepth : $Apache::lonxml::curdepth : $token->[1] : $time : ".&tv_interval($timer));  
 #print "<br />e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n";  #print "<br />e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n";
 }  }
   
Line 1575  sub error { Line 1573  sub error {
  if ( $symb && $env{'request.course.id'} ) {   if ( $symb && $env{'request.course.id'} ) {
     my $cnum=$env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum=$env{'course.'.$env{'request.course.id'}.'.num'};
     my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'};
     my (undef,%users)=&Apache::lonfeedback::decide_receiver(undef,0,1,1,1);      my (undef,%users)=&Apache::lonmsg::decide_receiver(undef,0,1,1,1);
     my $declutter=&Apache::lonnet::declutter($env{'request.filename'});      my $declutter=&Apache::lonnet::declutter($env{'request.filename'});
             my $baseurl = &Apache::lonnet::clutter($declutter);              my $baseurl = &Apache::lonnet::clutter($declutter);
     my @userlist;      my @userlist;
Line 1744  sub register_insert_xml { Line 1742  sub register_insert_xml {
     my $parser = HTML::LCParser->new($Apache::lonnet::perlvar{'lonTabDir'}      my $parser = HTML::LCParser->new($Apache::lonnet::perlvar{'lonTabDir'}
      .'/insertlist.xml');       .'/insertlist.xml');
     my ($tagnum,$in_help)=(0,0);      my ($tagnum,$in_help)=(0,0);
       my @alltags;
     my $tag;      my $tag;
     while (my $token = $parser->get_token()) {      while (my $token = $parser->get_token()) {
  if ($token->[0] eq 'S') {   if ($token->[0] eq 'S') {
Line 1752  sub register_insert_xml { Line 1751  sub register_insert_xml {
  $tag = $token->[2]{'name'};   $tag = $token->[2]{'name'};
  $insertlist{"$tagnum.tag"} = $tag;   $insertlist{"$tagnum.tag"} = $tag;
  $insertlist{"$tag.num"}   = $tagnum;   $insertlist{"$tag.num"}   = $tagnum;
    push(@alltags,$tag);
     } elsif ($in_help && $token->[1] eq 'file') {      } elsif ($in_help && $token->[1] eq 'file') {
  $key = $tag.'.helpfile';   $key = $tag.'.helpfile';
     } elsif ($in_help && $token->[1] eq 'description') {      } elsif ($in_help && $token->[1] eq 'description') {
Line 1765  sub register_insert_xml { Line 1765  sub register_insert_xml {
     } elsif ($token->[1] eq 'help') {      } elsif ($token->[1] eq 'help') {
  $in_help=1;   $in_help=1;
     } elsif ($token->[1] eq 'allow') {      } elsif ($token->[1] eq 'allow') {
  my $allow = $parser->get_text();   $key = $tag.'.allow';
  foreach my $element (split(',',$allow)) {  
     $element =~ s/(^\s*|\s*$ )//gx;  
     push(@{ $insertlist{$tag.'.which'} },$element);  
  }  
     }      }
     if (defined($key)) {      if (defined($key)) {
  $insertlist{$key} = $parser->get_text();   $insertlist{$key} = $parser->get_text();
Line 1784  sub register_insert_xml { Line 1780  sub register_insert_xml {
     }      }
  }   }
     }      }
       
       # parse the allows and ignore tags set to <show>no</show>
       foreach my $tag (@alltags) {
    my $allow =  $insertlist{"$tag.allow"};
           foreach my $element (split(',',$allow)) {
       $element =~ s/(^\s*|\s*$ )//gx;
       if ($insertlist{"$element.show"} ne 'no') {
    push(@{ $insertlist{$tag.'.which'} },$element);
       }
    }
       }
 }  }
   
 sub register_insert {  sub register_insert {

Removed from v.1.438  
changed lines
  Added in v.1.442


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