Diff for /loncom/xml/londefdef.pm between versions 1.447 and 1.458

version 1.447, 2013/09/26 22:03:36 version 1.458, 2016/01/14 19:40:26
Line 92  sub start_m { Line 92  sub start_m {
     my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);      my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);
     if ($target eq 'web' || $target eq 'analyze') {      if ($target eq 'web' || $target eq 'analyze') {
  &Apache::lonxml::debug("M is starting with:$inside:");   &Apache::lonxml::debug("M is starting with:$inside:");
           if (!($inside =~ /^\s*\$.*\$\s*$/ || $inside =~ /^\s*\\[([].*\\[)\]]\s*$/)) {
               # Non-math LaTeX will not be rendered correctly with MathJax
               # and it should be avoided anyway.
               # On top of that, MathJax will render math without $, but
               # it will fail with tth. This is worth a warning.
               # (even though some people might just use latex for printing)
               &Apache::lonxml::warning(&mt("Missing \$ in <m>."));
           }
  my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval);   my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval);
  if ($eval eq 'on') {   if ($eval eq 'on') {
     $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]);      $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]);
Line 585  sub start_body { Line 593  sub start_body {
         # FIXME Where are we?          # FIXME Where are we?
     }      }
   
           my $args = {'add_entries'    => $token->[2],
                       'force_register' => 1,};
           if ($target eq 'web') {
               $args->{'print_suppress'} = 1;
               if ($env{'request.use_absolute'}) {
                   $args->{'use_absolute'} = $env{'request.use_absolute'};
               }
           }
  $currentstring =    $currentstring = 
     &Apache::loncommon::start_page($Apache::londefdef::title,      &Apache::loncommon::start_page($Apache::londefdef::title,
    $Apache::londefdef::head     $Apache::londefdef::head
       .$extra_head,        .$extra_head,$args);
    {'add_entries'    => $token->[2],  
 #    'no_title'       => 1,  
     'force_register' => 1});  
   
         my $header = '';          my $header = '';
         if ($env{'request.state'} ne 'published' &&          if ($env{'request.state'} ne 'published' &&
             $env{'request.state'} ne 'construct') {              $env{'request.state'} ne 'construct') {
Line 634  sub edit_controls { Line 646  sub edit_controls {
     }      }
     $result .= '      $result .= '
 <div><input type="submit" name="editmode" accesskey="e" value="'.&mt('Edit').'" />';  <div><input type="submit" name="editmode" accesskey="e" value="'.&mt('Edit').'" />';
       if ($env{'browser.type'} ne 'explorer' || $env{'browser.version'} > 9) {
           my $uri = $env{'request.uri'};
           my $daxeurl = '/daxepage'.$uri;
           $result .= '<input type="button" value="'.&mt('Edit with Daxe').'" '.
                     'onclick="window.open(\''.$daxeurl.'\',\'_blank\');" />';
       }
     if (($env{'request.course.id'}) && ($env{'form.forceedit'})) {      if (($env{'request.course.id'}) && ($env{'form.forceedit'})) {
         my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'});          my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'});
         if ($url =~ /\.html?$/i) {          if ($url =~ /\.html?$/i) {
Line 1731  sub start_a { Line 1749  sub start_a {
                         } elsif ($env{'request.course.id'}) {                          } elsif ($env{'request.course.id'}) {
                             my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};                              my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                             my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};                              my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                             if ($linkurl =~ m{^([^/]|/uploaded/$cdom/$cnum/docs/)}) {                              if ($linkurl =~ m{^([^/]|/uploaded/$cdom/$cnum/(docs|supplemental)/)}) {
                                 my $cleanhref = &Apache::londefdef::clean_docs_httpref($linkurl,$url,$cdom,$cnum);                                  my $cleanhref = &clean_docs_httpref($linkurl,$url,$cdom,$cnum);
                                 if ($cleanhref) {                                  if ($cleanhref) {
                                     &Apache::lonxml::extlink($cleanhref);                                      &Apache::lonxml::extlink($cleanhref);
                                 }                                  }
Line 2749  sub start_img { Line 2767  sub start_img {
  my $inside = &Apache::lonxml::get_all_text("/img",$parser,$style);   my $inside = &Apache::lonxml::get_all_text("/img",$parser,$style);
  return '';   return '';
     }      }
     &Apache::lonxml::extlink($src);      unless ($src =~ m{^data\:image/gif;base64,}) {
           &Apache::lonxml::extlink($src);
       }
     my $currentstring = '';      my $currentstring = '';
     my $scaling = .3;      my $scaling = .3;
   
Line 2759  sub start_img { Line 2779  sub start_img {
         my $enc = ('yes' eq           my $enc = ('yes' eq 
                    lc(&Apache::lonxml::get_param('encrypturl',$parstack,                     lc(&Apache::lonxml::get_param('encrypturl',$parstack,
                       $safeeval)));                        $safeeval)));
         $currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src},          unless ($src =~ m{^data\:image/gif;base64,}) {
                          $enc);              $currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src},
                               $enc);
           }
   
     # and render unto TeX that which is LaTeX      # and render unto TeX that which is LaTeX
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
Line 2803  sub start_img { Line 2825  sub start_img {
   
  # &Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src");   # &Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src");
   
  #if original bmp/gif/jpg/png file exist do following:   #if original bmp/gif/jpg/png/svg file exist do following:
  my $origsrc=$src;   my $origsrc=$src;
  my ($path,$file) = &get_eps_image($src);   my ($path,$file) = &get_eps_image($src);
  # &Apache::lonnet::logthis("Image source: $src result: $path $file");   # &Apache::lonnet::logthis("Image source: $src result: $path $file");
Line 3442  sub start_caption { Line 3464  sub start_caption {
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  $currentstring = $token->[4];        $currentstring = $token->[4];     
     }       }
     return $currentstring;      return $currentstring;
 }  }
   
Line 3450  sub end_caption { Line 3472  sub end_caption {
     my ($target,$token) = @_;      my ($target,$token) = @_;
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  $currentstring = $token->[2];       $currentstring = $token->[2];
     }       } 
     return $currentstring;      return $currentstring;
 }  }
Line 3615  sub start_iframe { Line 3637  sub start_iframe {
                         }                          }
                     }                      }
                     $currentstring =~ s/\s+$//;                      $currentstring =~ s/\s+$//;
                     $currentstring .= '>';                      if ($token->[4] =~ m{/>$}) {
                           $currentstring .= ' />';
                       } else {
                           $currentstring .= '>';
                       }
                 } else {                  } else {
                     $currentstring = $token->[4];                      $currentstring = $token->[4];
                 }                  }
                 if (($url !~ m{^https?://}) && ($env{'request.course.id'})) {              }
                     my $docuri = &Apache::lonnet::hreflocation('',$env{'request.filename'});              if (($url !~ m{^https?://}) && ($env{'request.course.id'})) {
                     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};                  my $docuri = &Apache::lonnet::hreflocation('',$env{'request.filename'});
                     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};                  my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                     if ($url =~ m{^([^/]|/uploaded/)}) {                  my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                         my $cleanhref = &Apache::londefdef::clean_docs_httpref($url,$docuri,$cdom,$cnum);                  if ($url =~ m{^([^/]|/uploaded/)}) {
                         if ($cleanhref) {                      my $cleanhref = &clean_docs_httpref($url,$docuri,$cdom,$cnum);
                             &Apache::lonxml::extlink($cleanhref);                      if ($cleanhref) {
                         }                          &Apache::lonxml::extlink($cleanhref);
                     } elsif (($url =~ m{/res/$LONCAPA::domain_re/}) && ($docuri =~ m{^\Q/uploaded/$cdom/$cnum/docs/\E})) {                      }
                         if (!&Apache::lonnet::allowed('bre',$url)) {                  } elsif (($url =~ m{/res/$LONCAPA::domain_re/}) && ($docuri =~ m{^\Q/uploaded/$cdom/$cnum/docs/\E})) {
                             if (&Apache::lonnet::is_on_map($url)) {                      if (!&Apache::lonnet::allowed('bre',$url)) {
                                 &Apache::lonxml::extlink($url);                          if (&Apache::lonnet::is_on_map($url)) {
                             }                              &Apache::lonxml::extlink($url);
                         }                          }
                     }                      }
                 }                  }
Line 4313  sub get_eps_image { Line 4339  sub get_eps_image {
  &Apache::lonnet::repcopy($orig_src); # Failure is not completely fatal.   &Apache::lonnet::repcopy($orig_src); # Failure is not completely fatal.
     }      }
     &Apache::lonxml::debug("get_eps_image: Original image: $orig_src");      &Apache::lonxml::debug("get_eps_image: Original image: $orig_src");
     my ($spath, $sname, $sext) = &fileparse($src, qr/\.(bmp|gif|png|jpg|jpeg)/i);      my ($spath, $sname, $sext) = &fileparse($src, qr/\.(bmp|gif|png|jpg|jpeg|svg)/i);
     $src=~s/\.(bmp|gif|png|jpg|jpeg)$/\.eps/i;      $src=~s/\.(bmp|gif|png|jpg|jpeg|svg)$/\.eps/i;
     $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);      $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
     &Apache::lonxml::debug("Filelocation gives: $src");      &Apache::lonxml::debug("Filelocation gives: $src");
     if (! -e $src) {      if (! -e $src) {
Line 4591  sub latex_header { Line 4617  sub latex_header {
 sub clean_docs_httpref {  sub clean_docs_httpref {
     my ($href,$docuri,$cdom,$cnum) = @_;      my ($href,$docuri,$cdom,$cnum) = @_;
     if ($docuri eq '') {      if ($docuri eq '') {
         &Apache::lonnet::hreflocation('',$env{'request.filename'});          $docuri = &Apache::lonnet::hreflocation('',$env{'request.filename'});
     }      }
     if ($cdom eq '') {      if ($cdom eq '') {
         $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};          $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
Line 4600  sub clean_docs_httpref { Line 4626  sub clean_docs_httpref {
         $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};          $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     }      }
     my $cleanhref;      my $cleanhref;
     if ($docuri =~ m{^(\Q/uploaded/$cdom/$cnum/docs/\E)(.+/)[^/]+$}) {      if ($docuri =~ m{^(\Q/uploaded/$cdom/$cnum/\E(?:docs|supplemental)/)(.+/)[^/]+$}) {
         my $prefix = $1;          my $prefix = $1;
         my $relpath = $2;          my $relpath = $2;
         my ($hrefpath,$fname);          my ($hrefpath,$fname);
Line 4612  sub clean_docs_httpref { Line 4638  sub clean_docs_httpref {
                 return $cleanhref;                  return $cleanhref;
             }              }
         } else {          } else {
             (my $path,$fname) = ($href =~ m{^(.+)/([^/]*)$});              if ($href =~ m{/}) {  
             $hrefpath = $relpath.$path;                  (my $path,$fname) = ($href =~ m{^(.*)/([^/]*)$});
                   $hrefpath = $relpath.$path;
                   if ($path eq '') {
                       $hrefpath =~ s{/$}{};
                   }
               } else {
                   $fname = $href;
                   $hrefpath = $relpath;
                   $hrefpath =~ s{/$}{};
               }
         }          }
         if ($fname ne '') {          if ($fname ne '') {
             my $cleanrelpath;              my $cleanrelpath;
Line 4625  sub clean_docs_httpref { Line 4660  sub clean_docs_httpref {
                     $cleanrelpath .= $dir.'/';                      $cleanrelpath .= $dir.'/';
                 }                  }
             }              }
             $cleanrelpath =~ s{/$}{};  
             if ($cleanrelpath ne '') {              if ($cleanrelpath ne '') {
                 $cleanhref = $prefix.'/'.$cleanrelpath.'/'.$fname;                  $cleanhref = $prefix.$cleanrelpath.$fname;
             } else {              } else {
                 $cleanhref = $prefix.'/'.$fname;                  $cleanhref = $prefix.$fname;
             }              }
         }          }
     }      }
Line 4745  described at http://www.lon-capa.org. Line 4779  described at http://www.lon-capa.org.
   
         Output:          Output:
         returns an absolute URL constructed from the href provided, and the calling context.          returns an absolute URL constructed from the href provided, and the calling context.
         (this will be null, if the URL does not begin: /uploaded/$cdom/$cnum/docs/).          (this will be null, if the URL does not begin: /uploaded/$cdom/$cnum/docs/ or
           /uploaded/$cdom/$cnum/supplemental/).
   
 =back  =back
   

Removed from v.1.447  
changed lines
  Added in v.1.458


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