Diff for /rat/lonpage.pm between versions 1.134 and 1.135

version 1.134, 2020/03/03 01:16:31 version 1.135, 2020/03/04 16:33:31
Line 44  use Apache::lonhomework; Line 44  use Apache::lonhomework;
 use Apache::lonparmset;  use Apache::lonparmset;
 use Apache::lonenc();  use Apache::lonenc();
 use HTML::TokeParser;  use HTML::TokeParser;
   use HTML::Entities();
 use GDBM_File;  use GDBM_File;
 use Apache::lonsequence;  use Apache::lonsequence;
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
Line 187  sub handler { Line 188  sub handler {
       if (-e "$fn.db") {        if (-e "$fn.db") {
           my %buttonshide;            my %buttonshide;
           my $hostname = $r->hostname();            my $hostname = $r->hostname();
             my $lonhost = $r->dir_config('lonHostID');
             my $ip = &Apache::lonnet::get_host_ip($lonhost);
           if (tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640)) {            if (tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640)) {
 # ------------------------------------------------------------------- Hash tied  # ------------------------------------------------------------------- Hash tied
               my $firstres=$hash{'map_start_'.$requrl};                my $firstres=$hash{'map_start_'.$requrl};
Line 304  sub handler { Line 307  sub handler {
                       foreach (@colcont) {                        foreach (@colcont) {
                           my $src=$hash{'src_'.$_};                            my $src=$hash{'src_'.$_};
                           my $plainsrc = $src;                            my $plainsrc = $src;
                             my $anchor;
                           if ($hash{'ext_'.$_} eq 'true:') {                            if ($hash{'ext_'.$_} eq 'true:') {
                               $cellexternal{$_}=($hash{'ext_'.$_} eq 'true:');                                $cellexternal{$_}=($hash{'ext_'.$_} eq 'true:');
                               $src =~ s{^/ext/}{http://};                                $src =~ s{^/ext/}{http://};
                               $src =~ s{http://https://}{https://};                                $src =~ s{http://https://}{https://};
                                 if ($src =~ /(\#[^#]+)$/) {
                                     $anchor = $1;
                                     $src =~ s/\#[^#]+$//;
                                 }
                           }                            }
                             my $unencsrc = $src;
                           my ($extension)=($src=~/\.(\w+)$/);                            my ($extension)=($src=~/\.(\w+)$/);
   if ($hash{'encrypted_'.$_}) {    if ($hash{'encrypted_'.$_}) {
       $src=&Apache::lonenc::encrypted($src);        $src=&Apache::lonenc::encrypted($src);
Line 322  sub handler { Line 331  sub handler {
       &Apache::loncommon::fileembstyle($extension);        &Apache::loncommon::fileembstyle($extension);
                           if ($cellexternal{$_}) {                            if ($cellexternal{$_}) {
                               if (($target eq 'tex') || ($target eq 'tex_answer')) {                                if (($target eq 'tex') || ($target eq 'tex_answer')) {
                                   my $shown = $src;                                    my $shown = $src.$anchor;
                                   if ($hash{'encrypted_'.$_}) {                                    if (($hash{'encrypted_'.$_}) && (!$env{'request.role.adv'})) {
                                       $shown = &mt('URL not shown (encrypted)');                                        $shown = &mt('URL not shown (encrypted)');
                                   }                                    }
                                   my $title=&Apache::lonnet::gettitle($symb);                                    my $title=&Apache::lonnet::gettitle($symb);
                                   $title = &Apache::lonxml::latex_special_symbols($title);                                    $title = &Apache::lonxml::latex_special_symbols($title);
                                     $shown = &Apache::lonxml::latex_special_symbols($shown);
                                   $ssibody{$_} = ' \strut \\\\ \textit{'.$title.'} \strut \\\\ '.$shown.'\\\\';                                    $ssibody{$_} = ' \strut \\\\ \textit{'.$title.'} \strut \\\\ '.$shown.'\\\\';
                               } else {                                } else {
                                   my $showsrc = $src;                                    my $showsrc = $src;
                                     my ($is_pdf,$title,$linktext);
                                     if ($unencsrc =~ /\.pdf$/i) {
                                         $is_pdf = 1;
                                     }
                                   if (($hash{'encrypted_'.$_}) && ($symb)) {                                    if (($hash{'encrypted_'.$_}) && ($symb)) {
                                       $showsrc .= '?symb='.&Apache::lonenc::encrypted($symb);                                        $title=&Apache::lonnet::gettitle(&Apache::lonenc::encrypted($symb));
                                     } else {
                                         $title=&Apache::lonnet::gettitle($symb);
                                   }                                    }
                                   $ssibody{$_} = <<ENDEXT;                                    if ($env{'browser.mobile'}) {
 <iframe src="$showsrc" width="100%">No iframe support!</iframe>                                        if ($is_pdf) {
                                             $linktext = &mt('Link to PDF (for mobile devices)');
                                             $ssibody{$_} = &create_extlink($unencsrc,$anchor,$title,$linktext);
                                         } else {
                                             $linktext = &mt('Link to resource');
                                             $ssibody{$_} = &create_extlink($unencsrc,$anchor,$title,$linktext);
                                         }
                                     } else {
                                         my $absolute = $env{'request.use_absolute'};
                                         my $uselink = &Apache::loncommon::is_nonframeable($unencsrc,$absolute,$hostname,$ip);
                                         if (($uselink) || (($ENV{'SERVER_PORT'} == 443) && ($unencsrc =~ m{^http://}))) {
                                             $linktext = &mt('Link to resource');
                                             $ssibody{$_} =  &create_extlink($unencsrc,$anchor,$title,$linktext);
                                         } else {
                                             if (($hash{'encrypted_'.$_}) && ($symb) && (!$env{'request.role.adv'})) {
                                                 $showsrc .= '?symb='.&Apache::lonenc::encrypted($symb);
                                             } elsif ($anchor) {
                                                 $showsrc .= $anchor
                                             }
                                             $ssibody{$_} = <<ENDEXT;
   <iframe src="$showsrc" width="100%" height="300px">No iframe support!</iframe>
 ENDEXT  ENDEXT
                                         }
                                     }
                               }                                }
                           } elsif ($cellemb{$_} eq 'ssi') {                            } elsif ($cellemb{$_} eq 'ssi') {
 # --------------------------------------------------------- This is an SSI cell  # --------------------------------------------------------- This is an SSI cell
Line 798  ENDEXT Line 836  ENDEXT
       }                     }             
       $r->print('>');        $r->print('>');
   }    }
                                   unless (($cellexternal{$rid}) &&                                     $r->print($ssibody{$rid});
                                           ($target eq 'tex') && ($target eq 'tex_answer')) {  
                                       $r->print($ssibody{$rid});  
                                   }  
   unless (($target eq 'tex') || ($target eq 'tex_answer')) {    unless (($target eq 'tex') || ($target eq 'tex_answer')) {
       $r->print('</font>');        $r->print('</font>');
                                   }                                    }
Line 1084  END Line 1119  END
     return;      return;
 }  }
   
   sub create_extlink {
       my ($url,$anchor,$title,$linktext) = @_;
       my $shownlink;
       unless ($title eq '') {
           $shownlink = '<span style="font-weight:bold;">'.$title.'</span><br />';
       }
       my $dest = &HTML::Entities::encode($url.$anchor,'&<>"');
       $shownlink .= '<a href="'.$dest.'">'.$linktext.'</a>';
       return $shownlink;
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.134  
changed lines
  Added in v.1.135


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