--- loncom/xml/londefdef.pm 2013/09/26 22:03:36 1.447 +++ loncom/xml/londefdef.pm 2015/03/09 19:05:33 1.456 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.447 2013/09/26 22:03:36 raeburn Exp $ +# $Id: londefdef.pm,v 1.456 2015/03/09 19:05:33 raeburn Exp $ # # # Copyright Michigan State University Board of Trustees @@ -585,14 +585,18 @@ sub start_body { # 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 = &Apache::loncommon::start_page($Apache::londefdef::title, $Apache::londefdef::head - .$extra_head, - {'add_entries' => $token->[2], -# 'no_title' => 1, - 'force_register' => 1}); - + .$extra_head,$args); my $header = ''; if ($env{'request.state'} ne 'published' && $env{'request.state'} ne 'construct') { @@ -1731,8 +1735,8 @@ sub start_a { } 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 ($linkurl =~ m{^([^/]|/uploaded/$cdom/$cnum/(docs|supplemental)/)}) { + my $cleanhref = &clean_docs_httpref($linkurl,$url,$cdom,$cnum); if ($cleanhref) { &Apache::lonxml::extlink($cleanhref); } @@ -2749,7 +2753,9 @@ sub start_img { my $inside = &Apache::lonxml::get_all_text("/img",$parser,$style); return ''; } - &Apache::lonxml::extlink($src); + unless ($src =~ m{^data\:image/gif;base64,}) { + &Apache::lonxml::extlink($src); + } my $currentstring = ''; my $scaling = .3; @@ -2759,8 +2765,10 @@ sub start_img { my $enc = ('yes' eq lc(&Apache::lonxml::get_param('encrypturl',$parstack, $safeeval))); - $currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}, - $enc); + unless ($src =~ m{^data\:image/gif;base64,}) { + $currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}, + $enc); + } # and render unto TeX that which is LaTeX } elsif ($target eq 'tex') { @@ -2803,7 +2811,7 @@ sub start_img { # &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 ($path,$file) = &get_eps_image($src); # &Apache::lonnet::logthis("Image source: $src result: $path $file"); @@ -3442,7 +3450,7 @@ sub start_caption { my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[4]; - } + } return $currentstring; } @@ -3450,7 +3458,7 @@ sub end_caption { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { - $currentstring = $token->[2]; + $currentstring = $token->[2]; } return $currentstring; } @@ -3615,24 +3623,28 @@ sub start_iframe { } } $currentstring =~ s/\s+$//; - $currentstring .= '>'; + if ($token->[4] =~ m{/>$}) { + $currentstring .= ' />'; + } else { + $currentstring .= '>'; + } } else { $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); - } + } + 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 = &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); } } } @@ -4313,8 +4325,8 @@ sub get_eps_image { &Apache::lonnet::repcopy($orig_src); # Failure is not completely fatal. } &Apache::lonxml::debug("get_eps_image: Original image: $orig_src"); - my ($spath, $sname, $sext) = &fileparse($src, qr/\.(bmp|gif|png|jpg|jpeg)/i); - $src=~s/\.(bmp|gif|png|jpg|jpeg)$/\.eps/i; + my ($spath, $sname, $sext) = &fileparse($src, qr/\.(bmp|gif|png|jpg|jpeg|svg)/i); + $src=~s/\.(bmp|gif|png|jpg|jpeg|svg)$/\.eps/i; $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); &Apache::lonxml::debug("Filelocation gives: $src"); if (! -e $src) { @@ -4591,7 +4603,7 @@ sub latex_header { sub clean_docs_httpref { my ($href,$docuri,$cdom,$cnum) = @_; if ($docuri eq '') { - &Apache::lonnet::hreflocation('',$env{'request.filename'}); + $docuri = &Apache::lonnet::hreflocation('',$env{'request.filename'}); } if ($cdom eq '') { $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; @@ -4600,7 +4612,7 @@ sub clean_docs_httpref { $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; } 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 $relpath = $2; my ($hrefpath,$fname); @@ -4612,8 +4624,17 @@ sub clean_docs_httpref { return $cleanhref; } } else { - (my $path,$fname) = ($href =~ m{^(.+)/([^/]*)$}); - $hrefpath = $relpath.$path; + if ($href =~ m{/}) { + (my $path,$fname) = ($href =~ m{^(.*)/([^/]*)$}); + $hrefpath = $relpath.$path; + if ($path eq '') { + $hrefpath =~ s{/$}{}; + } + } else { + $fname = $href; + $hrefpath = $relpath; + $hrefpath =~ s{/$}{}; + } } if ($fname ne '') { my $cleanrelpath; @@ -4625,11 +4646,10 @@ sub clean_docs_httpref { $cleanrelpath .= $dir.'/'; } } - $cleanrelpath =~ s{/$}{}; if ($cleanrelpath ne '') { - $cleanhref = $prefix.'/'.$cleanrelpath.'/'.$fname; + $cleanhref = $prefix.$cleanrelpath.$fname; } else { - $cleanhref = $prefix.'/'.$fname; + $cleanhref = $prefix.$fname; } } } @@ -4745,7 +4765,8 @@ described at http://www.lon-capa.org. 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/). + (this will be null, if the URL does not begin: /uploaded/$cdom/$cnum/docs/ or + /uploaded/$cdom/$cnum/supplemental/). =back