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

version 1.447, 2013/09/26 22:03:36 version 1.457, 2016/01/06 16:44:37
Line 585  sub start_body { Line 585  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 638  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 1741  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 2759  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 2771  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 2817  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 3456  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 3464  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 3629  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 4331  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 4609  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 4618  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 4630  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 4652  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 4771  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.457


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