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

version 1.446, 2013/09/22 15:35:45 version 1.447, 2013/09/26 22:03:36
Line 1728  sub start_a { Line 1728  sub start_a {
                     if (!&Apache::lonnet::allowed('bre',$linkurl)) {                      if (!&Apache::lonnet::allowed('bre',$linkurl)) {
                         if (&Apache::lonnet::is_on_map($url)) {                          if (&Apache::lonnet::is_on_map($url)) {
                             &Apache::lonxml::extlink($linkurl);                              &Apache::lonxml::extlink($linkurl);
                           } elsif ($env{'request.course.id'}) {
                               my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                               my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                               if ($linkurl =~ m{^([^/]|/uploaded/$cdom/$cnum/docs/)}) {
                                   my $cleanhref = &Apache::londefdef::clean_docs_httpref($linkurl,$url,$cdom,$cnum);
                                   if ($cleanhref) {
                                       &Apache::lonxml::extlink($cleanhref);
                                   }
                               }
                         }                          }
                     }                      }
                 }                  }
Line 3610  sub start_iframe { Line 3619  sub start_iframe {
                 } else {                  } else {
                     $currentstring = $token->[4];                      $currentstring = $token->[4];
                 }                  }
                   if (($url !~ m{^https?://}) && ($env{'request.course.id'})) {
                       my $docuri = &Apache::lonnet::hreflocation('',$env{'request.filename'});
                       my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                       my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                       if ($url =~ m{^([^/]|/uploaded/)}) {
                           my $cleanhref = &Apache::londefdef::clean_docs_httpref($url,$docuri,$cdom,$cnum);
                           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)) {
                               if (&Apache::lonnet::is_on_map($url)) {
                                   &Apache::lonxml::extlink($url);
                               }
                           }
                       }
                   }
             }              }
         } else {          } else {
             $currentstring = $token->[4];              $currentstring = $token->[4];
Line 4562  sub latex_header { Line 4588  sub latex_header {
   
 }  }
   
   sub clean_docs_httpref {
       my ($href,$docuri,$cdom,$cnum) = @_;
       if ($docuri eq '') {
           &Apache::lonnet::hreflocation('',$env{'request.filename'});
       }
       if ($cdom eq '') {
           $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       }
       if ($cnum eq '') {
           $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
       }
       my $cleanhref;
       if ($docuri =~ m{^(\Q/uploaded/$cdom/$cnum/docs/\E)(.+/)[^/]+$}) {
           my $prefix = $1;
           my $relpath = $2;
           my ($hrefpath,$fname);
           if ($href =~ m{^/}) {
               if ($href =~ m{^\Q$prefix\E(.+/)([^/]+)$}) {
                   $hrefpath = $1;
                   $fname = $2;
               } else {
                   return $cleanhref;
               }
           } else {
               (my $path,$fname) = ($href =~ m{^(.+)/([^/]*)$});
               $hrefpath = $relpath.$path;
           }
           if ($fname ne '') {
               my $cleanrelpath;
               foreach my $dir (split(/\//,$hrefpath)) {
                   next if ($dir eq '.');
                   if ($dir eq '..') {
                       $cleanrelpath =~ s{([^/]+/)$}{};
                   } else {
                       $cleanrelpath .= $dir.'/';
                   }
               }
               $cleanrelpath =~ s{/$}{};
               if ($cleanrelpath ne '') {
                   $cleanhref = $prefix.'/'.$cleanrelpath.'/'.$fname;
               } else {
                   $cleanhref = $prefix.'/'.$fname;
               }
           }
       }
       return $cleanhref;
   }
   
 =pod  =pod
   
 =head1 NAME  =head1 NAME
Line 4656  described at http://www.lon-capa.org. Line 4730  described at http://www.lon-capa.org.
         I'm in a table....          I'm in a table....
       }        }
   
   =item clean_docs_httpref($href,$docuri,$cdom,$cnum)
           HTML pages uploaded to a course which contain dependencies either from iframes,
           javascript files or objects (FlashPlayerSwf, MediaSrc, XMPSrc, ConfigurationSrc,
           and PosterImageSrc) for which dependency is another file uploaded to the same
           course.
   
           Required input: 
           href - dependency (either a relative URL, or an absolute URL)
           Optional inputs:
           docuri - URL of HTML page containing the dependency
           cdom - Course domain
           cnum - CourseID
   
           Output:
           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/).
   
 =back  =back
   

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


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