Diff for /loncom/xml/lonxml.pm between versions 1.221 and 1.230

version 1.221, 2002/12/13 21:39:19 version 1.230, 2003/02/12 22:04:34
Line 41 Line 41
 # 6/1/1 Gerd Kortemeyer  # 6/1/1 Gerd Kortemeyer
 # 2/21,3/13 Guy  # 2/21,3/13 Guy
 # 3/29,5/4 Gerd Kortemeyer  # 3/29,5/4 Gerd Kortemeyer
 # 5/10 Scott Harrison  
 # 5/26 Gerd Kortemeyer  # 5/26 Gerd Kortemeyer
 # 5/27 H. K. Ng  # 5/27 H. K. Ng
 # 6/2,6/3,6/8,6/9 Gerd Kortemeyer  # 6/2,6/3,6/8,6/9 Gerd Kortemeyer
Line 146  $Apache::lonxml::registered=0; Line 145  $Apache::lonxml::registered=0;
 $Apache::lonxml::request='';  $Apache::lonxml::request='';
   
 # a problem number counter, and check on ether it is used  # a problem number counter, and check on ether it is used
 $Apache::lonxml::counter=1;  $Apache::lonxml::counter=4;
 $Apache::lonxml::counter_changed=0;  $Apache::lonxml::counter_changed=0;
   
 #internal check on whether to look at style defs  #internal check on whether to look at style defs
Line 192  sub xmlend { Line 191  sub xmlend {
               my $idx;                my $idx;
               for ($idx=1;$idx<=$contrib{'version'};$idx++) {                for ($idx=1;$idx<=$contrib{'version'};$idx++) {
  my $hidden=($contrib{'hidden'}=~/\.$idx\./);   my $hidden=($contrib{'hidden'}=~/\.$idx\./);
  unless (($hidden) && (!$seeid)) {   my $deleted=($contrib{'deleted'}=~/\.$idx\./);
    unless ((($hidden) && (!$seeid)) || ($deleted)) {
                  my $message=$contrib{$idx.':message'};                   my $message=$contrib{$idx.':message'};
                  $message=~s/\n/\<br \/\>/g;                   $message=~s/\n/\<br \/\>/g;
  $message=&Apache::lontexconvert::msgtexconverted($message);   $message=&Apache::lontexconvert::msgtexconverted($message);
Line 226  sub xmlend { Line 226  sub xmlend {
                           } else {                            } else {
                              $sender.=' <a href="/adm/feedback?hide='.                               $sender.=' <a href="/adm/feedback?hide='.
  $symb.':::'.$idx.'">Hide</a>';   $symb.':::'.$idx.'">Hide</a>';
   }    }                     
                       }                                               $sender.=' <a href="/adm/feedback?deldisc='.
    $symb.':::'.$idx.'">Delete</a>';
                         }
                   } else {                    } else {
                       if ($screenname) {                        if ($screenname) {
   $sender='<i>'.$screenname.'</i>';    $sender='<i>'.$screenname.'</i>';
Line 268  sub tokeninputfield { Line 270  sub tokeninputfield {
     my $defhost=$Apache::lonnet::perlvar{'lonHostID'};      my $defhost=$Apache::lonnet::perlvar{'lonHostID'};
     $defhost=~tr/a-z/A-Z/;      $defhost=~tr/a-z/A-Z/;
     return (<<ENDINPUTFIELD)      return (<<ENDINPUTFIELD)
 <script>  <script type="text/javascript">
     function updatetoken() {      function updatetoken() {
  var comp=new Array;   var comp=new Array;
         var barcode=unescape(document.tokeninput.barcode.value);          var barcode=unescape(document.tokeninput.barcode.value);
Line 392  sub registerurl { Line 394  sub registerurl {
     my $result = '';      my $result = '';
           
     if ($target eq 'edit') {      if ($target eq 'edit') {
         $result .="<script>\n".          $result .="<script type=\"text/javascrtipt\">\n".
             "if (typeof menu != 'undefined') {menu.currentURL=null;}\n".              "if (typeof menu != 'undefined') {menu.currentURL=null;}\n".
             &Apache::loncommon::browser_and_searcher_javascript().              &Apache::loncommon::browser_and_searcher_javascript().
                 "\n</script>\n";                  "\n</script>\n";
Line 401  sub registerurl { Line 403  sub registerurl {
          (!&Apache::lonnet::is_on_map($ENV{'REQUEST_URI'}))) &&           (!&Apache::lonnet::is_on_map($ENV{'REQUEST_URI'}))) &&
         (!$forcereg)) {          (!$forcereg)) {
  return $result.   return $result.
          '<script>function LONCAPAreg(){} function LONCAPAstale(){}</script>';           '<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>';
     }      }
     if ($Apache::lonxml::registered && !$forcereg) { return ''; }      if ($Apache::lonxml::registered && !$forcereg) { return ''; }
     $Apache::lonxml::registered=1;      $Apache::lonxml::registered=1;
     my $nothing='';      my $reopen=&Apache::lonmenu::reopenmenu();
     if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; }  
     my $newmail='';      my $newmail='';
     if (&Apache::lonmsg::newmail()) {       if (&Apache::lonmsg::newmail()) { 
        $newmail='menu.setstatus("you have","messages");';         $newmail='menu.setstatus("you have","messages");';
Line 496  ENDPARM Line 497  ENDPARM
 // BEGIN LON-CAPA Internal  // BEGIN LON-CAPA Internal
   
     function LONCAPAreg() {      function LONCAPAreg() {
   menu=window.open("$nothing","LONCAPAmenu","",false);    menu=$reopen;
           menu.clearTimeout(menu.menucltim);            menu.clearTimeout(menu.menucltim);
           $timesync            $timesync
           $newmail            $newmail
Line 507  ENDPARM Line 508  ENDPARM
           menu.currentStale=0;            menu.currentStale=0;
           menu.clearbut(3,1);            menu.clearbut(3,1);
           menu.switchbutton            menu.switchbutton
        (6,3,'catalog.gif','catalog','info','catalog_info()');         (6,3,'catalog.gif','catalog','info','catalog_info()','Show catalog information');
           menu.switchbutton            menu.switchbutton
        (8,1,'eval.gif','evaluate','this','gopost("/adm/evaluate",currentURL)','Provide my evaluation of this resource');         (8,1,'eval.gif','evaluate','this','gopost("/adm/evaluate",currentURL)','Provide my evaluation of this resource');
           menu.switchbutton            menu.switchbutton
Line 529  ENDPARM Line 530  ENDPARM
     }      }
   
     function LONCAPAstale() {      function LONCAPAstale() {
   menu=window.open("$nothing","LONCAPAmenu","",false);    menu=$reopen
           menu.currentStale=1;            menu.currentStale=1;
           if (menu.reloadURL!='' && menu.reloadURL!= null) {             if (menu.reloadURL!='' && menu.reloadURL!= null) { 
              menu.switchbutton               menu.switchbutton
Line 556  ENDREGTHIS Line 557  ENDREGTHIS
 // BEGIN LON-CAPA Internal  // BEGIN LON-CAPA Internal
   
     function LONCAPAreg() {      function LONCAPAreg() {
   menu=window.open("$nothing","LONCAPAmenu","",false);    menu=$reopen
           $timesync            $timesync
           menu.currentStale=1;            menu.currentStale=1;
           menu.clearbut(2,1);            menu.clearbut(2,1);
Line 667  sub htmlclean { Line 668  sub htmlclean {
 }  }
   
 sub latex_special_symbols {  sub latex_special_symbols {
     my ($current_token,$stack,$parstack)=@_;      my ($current_token,$stack,$parstack,$where)=@_;
     $current_token=~s/\\ /\\char92 /g;      if ($where=='header') {
     $current_token=~s/\^/\\char94 /g;        $current_token =~ s/_/ /g;
     $current_token=~s/\~/\\char126 /g;        $current_token =~ s/\^/ /g;
     $current_token=~s/(&[^a-z\#])/\\$1/g;        $current_token =~ s/&/\\&/g;
     $current_token=~s/([^&])\#/$1\\#/g;      } else {
     $current_token=~s/(\$|_|{|})/\\$1/g;       $current_token=~s/\\ /\\char92 /g;
     $current_token=~s/\\char92 /\\texttt{\\char92}/g;       $current_token=~s/\^/\\char94 /g;
     $current_token=~s/>/\$>\$/g; #more       $current_token=~s/\~/\\char126 /g;
     $current_token=~s/</\$<\$/g; #less       $current_token=~s/(&[^a-z\#])/\\$1/g;
     if ($current_token=~m/\d%/) {$current_token =~ s/(\d)%/$1\\%/g;} #percent after digit       $current_token=~s/([^&])\#/$1\\#/g;
     if ($current_token=~m/\s%/) {$current_token =~ s/(\s)%/$1\\%/g;} #persent after space       $current_token=~s/(\$|_|{|})/\\$1/g;
        $current_token=~s/\\char92 /\\texttt{\\char92}/g;
        $current_token=~s/>/\$>\$/g; #more
        $current_token=~s/</\$<\$/g; #less
        if ($current_token=~m/\d%/) {$current_token =~ s/(\d)%/$1\\%/g;} #percent after digit
        if ($current_token=~m/\s%/) {$current_token =~ s/(\s)%/$1\\%/g;} #persent after space
       }
     return $current_token;      return $current_token;
 }  }
   
Line 771  sub inner_xmlparse { Line 778  sub inner_xmlparse {
       if ($token->[0] eq 'E') {         if ($token->[0] eq 'E') { 
  &end_tag($stack,$parstack,$token);   &end_tag($stack,$parstack,$token);
       }        }
     }      }
     if ($#$pars > -1) {      if ($#$pars > -1) {
  pop @$pars;   pop @$pars;
  pop @Apache::lonxml::pwd;   pop @Apache::lonxml::pwd;
Line 1113  sub store_counter { Line 1120  sub store_counter {
 sub get_all_text {  sub get_all_text {
  my($tag,$pars)= @_;   my($tag,$pars)= @_;
  &Apache::lonxml::debug("Got a ".ref($pars));   &Apache::lonxml::debug("Got a ".ref($pars));
    my $gotfullstack=1;
  if (ref($pars) ne 'ARRAY') {   if (ref($pars) ne 'ARRAY') {
        $gotfullstack=0;
      $pars=[$pars];       $pars=[$pars];
  }   }
  my $depth=0;   my $depth=0;
Line 1122  sub get_all_text { Line 1131  sub get_all_text {
  if ( $tag =~ m:^/: ) {    if ( $tag =~ m:^/: ) { 
    my $tag=substr($tag,1);      my $tag=substr($tag,1); 
    #&Apache::lonxml::debug("have:$tag:");     #&Apache::lonxml::debug("have:$tag:");
    while (($depth >=0) && ($#$pars > -1)) {     my $top_empty=0;
      while (($depth >=0) && ($#$pars > -1) && (!$top_empty)) {
      while (($depth >=0) && ($token = $$pars[-1]->get_token)) {       while (($depth >=0) && ($token = $$pars[-1]->get_token)) {
        #&Apache::lonxml::debug("e token:$token->[0]:$depth:$token->[1]:".$#$pars.":".$#Apache::lonxml::pwd);         #&Apache::lonxml::debug("e token:$token->[0]:$depth:$token->[1]:".$#$pars.":".$#Apache::lonxml::pwd);
        if (($token->[0] eq 'T')||($token->[0] eq 'C')||($token->[0] eq 'D')) {         if (($token->[0] eq 'T')||($token->[0] eq 'C')||($token->[0] eq 'D')) {
Line 1140  sub get_all_text { Line 1150  sub get_all_text {
  }   }
        }         }
      }       }
        if (($depth >=0) && ($#$pars == 0) ) { $top_empty=1; }
      if (($depth >=0) && ($#$pars > 0) ) {       if (($depth >=0) && ($#$pars > 0) ) {
        pop(@$pars);         pop(@$pars);
        pop(@Apache::lonxml::pwd);         pop(@Apache::lonxml::pwd);
      }       }
    }     }
      if ($top_empty && $depth >= 0) {
          #never found the end tag ran out of text, throw error send back blank
          &error('Never found end tag for &lt;'.$tag.'&gt;');
          if ($gotfullstack) {
      my $newstring='</'.$tag.'>'.$result;
      &Apache::lonxml::newparser($pars,\$newstring);
          }
          $result='';
      }
  } else {   } else {
      while ($#$pars > -1) {       while ($#$pars > -1) {
  while ($token = $$pars[-1]->get_token) {   while ($token = $$pars[-1]->get_token) {
Line 1250  sub afterburn { Line 1270  sub afterburn {
         $matchthis=~s/\_+/\\s\+/g;          $matchthis=~s/\_+/\\s\+/g;
         $result=~s/($matchthis)/\<a name=\"$anchorname\"\>$1\<\/a\>/s;          $result=~s/($matchthis)/\<a name=\"$anchorname\"\>$1\<\/a\>/s;
         $result.=(<<"ENDSCRIPT");          $result.=(<<"ENDSCRIPT");
 <script>  <script type="text/javascript">
     document.location.hash='$anchorname';      document.location.hash='$anchorname';
 </script>  </script>
 ENDSCRIPT  ENDSCRIPT
Line 1486  sub get_param_var { Line 1506  sub get_param_var {
   if ( ! $context ) { $context = -1; }    if ( ! $context ) { $context = -1; }
   my $args ='';    my $args ='';
   if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; }    if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; }
     &Apache::lonxml::debug("Args are $args param is $param");
   if ($case_insensitive) {    if ($case_insensitive) {
       if (! ($args=~s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei)) {        if (! ($args=~s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei)) {
   return undef;    return undef;
       }        }
   } elsif ( $args !~ /my \$\Q$param\E=\"/ ) { return undef; }    } elsif ( $args !~ /my \$\Q$param\E=\"/ ) { return undef; }
   my $value=&Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #'    my $value=&Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #'
   if ($value =~ /^[\$\@\%]/) {    &Apache::lonxml::debug("first run is $value");
     return &Apache::run::run("return $value",$safeeval,1);    if ($value =~ /^[\$\@\%]\w+$/) {
         &Apache::lonxml::debug("doing second");
         my @result=&Apache::run::run("return $value",$safeeval,1);
         if (!defined($result[0])) {
     return $value
         } else {
     if (wantarray) { return @result; } else { return $result[0]; }
         }
   } else {    } else {
     return $value;      return $value;
   }    }

Removed from v.1.221  
changed lines
  Added in v.1.230


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