Diff for /rat/lonpage.pm between versions 1.138 and 1.143

version 1.138, 2020/03/06 20:04:01 version 1.143, 2023/09/10 18:12:55
Line 102  sub tracetable { Line 102  sub tracetable {
             } else {              } else {
                 $sofar++;                  $sofar++;
                 if ($hash{'src_'.$rid}) {                  if ($hash{'src_'.$rid}) {
                     my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$rid});                      my ($mapid,$resid)=split(/\./,$rid);
                       my $symb = &Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$hash{'src_'.$rid});
                       my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$rid},$symb);
                     if (($brepriv eq '2') || ($brepriv eq 'F')) {                      if (($brepriv eq '2') || ($brepriv eq 'F')) {
                         if (defined($rows[$sofar])) {                          if (defined($rows[$sofar])) {
                             $rows[$sofar].='&'.$rid;                              $rows[$sofar].='&'.$rid;
Line 266  sub handler { Line 268  sub handler {
                   my $nforms=0;                    my $nforms=0;
                   my $nuploads=0;                    my $nuploads=0;
                   my $ntimers=0;                    my $ntimers=0;
                     my $hasnumresp;
                   my %turninpaths;                    my %turninpaths;
                   my %multiresps;                    my %multiresps;
                   my $turninparent;                    my $turninparent;
Line 276  sub handler { Line 279  sub handler {
                   my %ssilink=();                    my %ssilink=();
                   my %ssivlink=();                    my %ssivlink=();
                   my %ssialink=();                    my %ssialink=();
                     my %cssrefs=();
                     my %httpref=();
             
                   my %cellemb=();                    my %cellemb=();
                   my %cellexternal=();                    my %cellexternal=();
Line 438  ENDEXT Line 443  ENDEXT
                               my $bodydef=0;                                my $bodydef=0;
                               my $thisxml=0;                                my $thisxml=0;
                               my @rlinks=();                                my @rlinks=();
                                 my @css_hrefs=();
                               if ($output=~/\?xml/) {                                if ($output=~/\?xml/) {
                                  $isxml=1;                                   $isxml=1;
                                  $thisxml=1;                                   $thisxml=1;
Line 480  ENDEXT Line 486  ENDEXT
                                            ($bodydef==0)) {                                             ($bodydef==0)) {
       $allscript.="\n\n"        $allscript.="\n\n"
                                                 .$parser->get_text('/script');                                                  .$parser->get_text('/script');
                                     } elsif (($token->[1] eq 'link') &&
                                              ($bodydef==0)) {
                                         if (($token->[2]->{'href'} !~ m{^/adm/}) &&
                                             ($token->[2]->{'rel'} eq 'stylesheet')) {
                                                 $css_hrefs[$#css_hrefs+1]=
                                                     $token->[2]->{'href'};
   
                                         }
                                   }                                    }
         }          }
       }        }
Line 499  ENDEXT Line 513  ENDEXT
                                       $ntimers++;                                        $ntimers++;
                                       $hastimer = 1;                                        $hastimer = 1;
                                   }                                    }
                                     unless ($hasnumresp) {
                                         if ($output=~/\<input[^\>]+class\s*=\s*[\'\"]*([^\'\"\>]+|)LC_numresponse_text/) {
                                             $hasnumresp = 1;
                                         }
                                     }
                                   $output=~                                    $output=~
       s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi;        s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi;
                                   $output=~                                    $output=~
Line 642  ENDEXT Line 661  ENDEXT
                      $output=~s/(\"|\'|\=\s*)$_(\"|\'|\s|\>)/$1$newlocation$2/;                       $output=~s/(\"|\'|\=\s*)$_(\"|\'|\s|\>)/$1$newlocation$2/;
   }    }
       }        }
                                 foreach my $css_href (@css_hrefs) {
                                     next if ($css_href eq '');
                                     unless ($css_href =~ m{https?://}) {
                                         my $proburl = &Apache::lonnet::clutter($plainsrc);
                                         unless ($css_href =~ m{^/}) {
                                             my $probdir = $proburl;
                                             $probdir=~s/\/[^\/]*$//;
                                             $css_href = &Apache::lonnet::hreflocation($probdir,$css_href);
                                         }
                                         if ($css_href =~ m{^/(res|uploaded)/}) {
                                             unless (($env{'httpref.'.$css_href}) ||
                                                     ($httpref{'httpref.'.$css_href}) ||
                                                     (&Apache::lonnet::is_on_map($css_href))) {
                                                 if ($env{'httpref.'.$proburl}) {
                                                     $proburl = $env{'httpref.'.$proburl};
                                                 }
                                                 $httpref{'httpref.'.$css_href} = $proburl;
                                             }
                                         }
                                     }
                                     $cssrefs{$css_href} = 1;
                                 }
 # -------------------------------------------------- Deal with Applet codebases  # -------------------------------------------------- Deal with Applet codebases
   $output=~s/(\<applet[^\>]+)(codebase\=[^\S\>]+)*([^\>]*)\>/$1.($2?$2:' codebase="'.$thisdir.'"').$3.'>'/gei;    $output=~s/(\<applet[^\>]+)(codebase\=[^\S\>]+)*([^\>]*)\>/$1.($2?$2:' codebase="'.$thisdir.'"').$3.'>'/gei;
       $ssibody{$_}=$output;        $ssibody{$_}=$output;
 # ---------------------------------------------------------------- End SSI cell  # ---------------------------------------------------------------- End SSI cell
                           }                            }
                       }                        }
                      }                        }
                   }                    }
                   unless ($contents) {                    unless ($contents) {
                       &Apache::loncommon::content_type($r,'text/html');                        &Apache::loncommon::content_type($r,'text/html');
Line 760  ENDEXT Line 801  ENDEXT
                                   }                                    }
                               }                                }
                           }                            }
                             if (keys(%cssrefs)) {
                                 my $links;
                                 if (keys(%cssrefs)) {
                                     foreach my $css_href (keys(%cssrefs)) {
                                         next unless ($css_href =~ m{^(/res/|/uploaded/|https?://)});
                                         $links .= '<link rel="stylesheet" type="text/css" href="'.$css_href.'" />'."\n";
                                     }
                                 }
                                 if ($links) {
                                     if (keys(%httpref)) {
                                         &Apache::lonnet::appenv(\%httpref);
                                     }
                                     $allscript .= "\n$links";
                                 }
                             }
 # ------------------------------------------------------------------ Start body  # ------------------------------------------------------------------ Start body
   $r->print(&Apache::loncommon::start_page(undef,$allscript,    $r->print(&Apache::loncommon::start_page(undef,$allscript,
    {'force_register' => 1,     {'force_register' => 1,
Line 903  ENDEXT Line 959  ENDEXT
                           &mt('Processing your submission ...').'</div></form>');                            &mt('Processing your submission ...').'</div></form>');
                       }                        }
       unless (($target eq 'tex') || ($target eq 'tex_answer')) {        unless (($target eq 'tex') || ($target eq 'tex_answer')) {
   $r->print(&Apache::loncommon::end_page({'discussion'                            my $args = {'discussion' => 1};
       => 1,}));                            if ($hasnumresp) {
                                 $args->{'dashjs'} = 1;
                             }
     $r->print(&Apache::loncommon::end_page($args));
       } else {        } else {
   $r->print('\end{document}'.$number_of_columns);    $r->print('\end{document}'.$number_of_columns);
       }        }
Line 915  ENDEXT Line 974  ENDEXT
                   }                                      }                  
 # ------------------------------------------------------------- End render page  # ------------------------------------------------------------- End render page
               } else {                } else {
                   &Apache::loncommon::content_type($r,'text/html');                    if ($hash{'map_type_'.$hash{'map_pc_'.$requrl}} eq 'none') {
                   $r->send_http_header;                        &Apache::loncommon::content_type($r,'text/html');
                   &Apache::lonsequence::viewmap($r,$requrl);                        $r->send_http_header;
                         $r->print(&Apache::loncommon::start_page(undef,undef,
                                                                  {'force_register' => 1,}));
                         my $crstype = &Apache::loncommon::course_type();
                         if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
                             $r->print('<span class="LC_warning">'.&mt('Missing composite page file.').'</span><br />'.
                                       &mt("You may want to use the $crstype Editor to remove this item."));
                         } else {
                             if ($crstype eq 'Placement') {
                                 $r->print('<span class="LC_warning">'.&mt('Missing page').'</span>');
                             } else {
                                 $r->print('<span class="LC_info">'.
                                           &mt('This resource was unavailable when your '.lc($crstype).' session was loaded').'<br />'.
                                           &mt("Please use 'Contents' to list items available in the $crstype.").'</span>');
                             }
                         }
                         $r->print(&Apache::loncommon::end_page());
                     } else {
                         &Apache::loncommon::content_type($r,'text/html');
                         $r->send_http_header;
                         &Apache::lonsequence::viewmap($r,$requrl);
                     }
               }                }
 # ------------------------------------------------------------------ Untie hash  # ------------------------------------------------------------------ Untie hash
               unless (untie(%hash)) {                unless (untie(%hash)) {
Line 943  sub get_buttons { Line 1023  sub get_buttons {
     my $symb=&Apache::lonnet::encode_symb($hash->{'map_id_'.$mapid},      my $symb=&Apache::lonnet::encode_symb($hash->{'map_id_'.$mapid},
   $resid,    $resid,
   $hash->{'src_'.$rid});    $hash->{'src_'.$rid});
     my $aname;      my ($aname,$shownsymb);
     if (($hash->{'encrypted_'.$rid}) && (!$env{'request.role.adv'})) {      if (($hash->{'encrypted_'.$rid}) && (!$env{'request.role.adv'})) {
         $aname = 'LC_'.$rid;          $aname = 'LC_'.$rid;
           $shownsymb = &Apache::lonenc::encrypted($symb);
     } else {      } else {
         my $shownsymb = $symb;          $shownsymb = $symb;
           my $dispsymb = $symb;
         if ($symb =~ /\#([^\#]+)$/) {          if ($symb =~ /\#([^\#]+)$/) {
             my $escan = &escape('#');              my $escan = &escape('#');
             $shownsymb =~ s/#([^\#]+)$/$escan$1/;              $dispsymb =~ s/#([^\#]+)$/$escan$1/;
         }          }
         $aname = &escape($shownsymb);          $aname = &escape($dispsymb);
     }      }
     my $metainfo = '<a name="'.$aname.'"></a>';      my $metainfo = '<a name="'.$aname.'"></a>';
     unless ($env{'request.role.adv'}) {      unless ($env{'request.role.adv'}) {
Line 1035  sub get_buttons { Line 1117  sub get_buttons {
                 &Apache::lonnet::can_edit_resource($file,$cnum,$cdom,$hash->{'src_'.$rid},$symb);                  &Apache::lonnet::can_edit_resource($file,$cnum,$cdom,$hash->{'src_'.$rid},$symb);
             if ($cfile ne '') {              if ($cfile ne '') {
                 my $jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver,                  my $jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver,
                                                                      $forceedit,1,$symb,undef,                                                                       $forceedit,1,$symb,$shownsymb,
                                                                      &escape($env{'form.title'}),                                                                       undef,&escape($env{'form.title'}),
                                                                      $hostname);                                                                       $hostname);
                 if ($jscall) {                  if ($jscall) {
                     $editbutton = 1;                      $editbutton = 1;

Removed from v.1.138  
changed lines
  Added in v.1.143


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