Diff for /rat/lonpage.pm between versions 1.58 and 1.93

version 1.58, 2004/08/29 18:45:52 version 1.93, 2010/03/16 19:56:02
Line 25 Line 25
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
 # (TeX Content Handler  
 #  
 # YEAR=2000  
 # 05/29/00,05/30 Gerd Kortemeyer)  
 # 08/30,08/31,09/06,09/14,09/15,09/16,09/19,09/20,09/21,09/23,  
 # 10/02,10/10,10/14,10/16,10/18,10/19,10/31,11/6,11/14,11/16,  
 # YEAR=2001  
 # 08/13/01,08/30,10/1 Gerd Kortemeyer  
 # YEAR=2002  
 # 03/19 Gerd Kortemeyer  
 #  
 ###  ###
   
   
   
   
 package Apache::lonpage;  package Apache::lonpage;
   
 use strict;  use strict;
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
 use Apache::lonnet();  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonxml();  use Apache::lonxml();
 use Apache::lonlocal;  use Apache::lonlocal;
Line 50  use Apache::lonmenu; Line 42  use Apache::lonmenu;
 use HTML::TokeParser;  use HTML::TokeParser;
 use GDBM_File;  use GDBM_File;
 use Apache::lonsequence;  use Apache::lonsequence;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
    
   
 # -------------------------------------------------------------- Module Globals  # -------------------------------------------------------------- Module Globals
 my %hash;  my %hash;
Line 74  sub tracetable { Line 69  sub tracetable {
     my ($sofar,$rid,$beenhere)=@_;      my ($sofar,$rid,$beenhere)=@_;
     my $further=$sofar;      my $further=$sofar;
     my $randomout=0;      my $randomout=0;
     unless ($ENV{'request.role.adv'}) {      unless ($env{'request.role.adv'}) {
         $randomout = $hash{'randomout_'.$rid};          $randomout = $hash{'randomout_'.$rid};
     }      }
     unless ($beenhere=~/\&$rid\&/) {      unless ($beenhere=~/\&$rid\&/) {
Line 86  sub tracetable { Line 81  sub tracetable {
                     my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}};                      my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}};
             $sofar=              $sofar=
                        &tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}},                         &tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}},
                        '&'.$frid.'&');                         '&'.$frid.$beenhere);
                     $sofar++;                      $sofar++;
                     if ($hash{'src_'.$frid}) {                      if ($hash{'src_'.$frid}) {
                         my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$frid});                          my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$frid});
Line 149  sub handler { Line 144  sub handler {
 # ------------------------------------------- Set document type for header only  # ------------------------------------------- Set document type for header only
   
   if ($r->header_only) {    if ($r->header_only) {
        if ($ENV{'browser.mathml'}) {         if ($env{'browser.mathml'}) {
            &Apache::loncommon::content_type($r,'text/xml');             &Apache::loncommon::content_type($r,'text/xml');
        } else {         } else {
            &Apache::loncommon::content_type($r,'text/html');              &Apache::loncommon::content_type($r,'text/html'); 
Line 162  sub handler { Line 157  sub handler {
                                           ['forceselect','launch']);                                            ['forceselect','launch']);
   my $number_of_columns = 1;    my $number_of_columns = 1;
   my $requrl=$r->uri;      my $requrl=$r->uri;  
   my $target = $ENV{'form.grade_target'};    my $target = $env{'form.grade_target'};
 #  &Apache::lonnet::logthis("Got a target of $target");  #  &Apache::lonnet::logthis("Got a target of $target");
   if ($target eq 'meta') {    if ($target eq 'meta') {
       &Apache::loncommon::content_type($r,'text/html');        &Apache::loncommon::content_type($r,'text/html');
Line 170  sub handler { Line 165  sub handler {
       return OK;        return OK;
   }    }
 # ----------------------------------------------------------------- Tie db file  # ----------------------------------------------------------------- Tie db file
   if (($ENV{'request.course.fn'}) && (!$ENV{'form.forceselect'})) {    if (($env{'request.course.fn'}) && (!$env{'form.forceselect'})) {
       my $fn=$ENV{'request.course.fn'};        my $fn=$env{'request.course.fn'};
       if (-e "$fn.db") {        if (-e "$fn.db") {
           if (tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640)) {            if (tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640)) {
 # ------------------------------------------------------------------- Hash tied  # ------------------------------------------------------------------- Hash tied
Line 191  sub handler { Line 186  sub handler {
                   for ($i=0;$i<=$#rows;$i++) {                    for ($i=0;$i<=$#rows;$i++) {
      if ($rows[$i]) {       if ($rows[$i]) {
                         my @colcont=split(/\&/,$rows[$i]);                          my @colcont=split(/\&/,$rows[$i]);
                         foreach (@colcont) {                          foreach my $rid (@colcont) {
                            $symbhash{$hash{'src_'.$_}}='';      my ($mapid,$resid)=split(/\./,$rid);
       $symbhash{$hash{'src_'.$rid}}=
    [$hash{'src_'.$rid},$resid];
         }          }
      }       }
   }    }
Line 212  sub handler { Line 209  sub handler {
                   my %ssivlink=();                    my %ssivlink=();
                   my %ssialink=();                    my %ssialink=();
             
                   my %metalink=();  
   
                   my %cellemb=();                    my %cellemb=();
   
                   my $allscript='';                    my $allscript='';
Line 232  sub handler { Line 227  sub handler {
                       $lcm*=($#colcont+1)/euclid($lcm,($#colcont+1));                        $lcm*=($#colcont+1)/euclid($lcm,($#colcont+1));
                       foreach (@colcont) {                        foreach (@colcont) {
                           my $src=$hash{'src_'.$_};                            my $src=$hash{'src_'.$_};
                           $src=~/\.(\w+)$/;    my ($extension)=($src=~/\.(\w+)$/);
                           $metalink{$_}=$src.'.meta';    if ($hash{'encrypted_'.$_}) {
                           $cellemb{$_}=Apache::loncommon::fileembstyle($1);        $src=&Apache::lonenc::encrypted($src);
     }
                             $cellemb{$_}=
         &Apache::loncommon::fileembstyle($extension);
                           if ($cellemb{$_} eq 'ssi') {                            if ($cellemb{$_} eq 'ssi') {
 # --------------------------------------------------------- This is an SSI cell  # --------------------------------------------------------- This is an SSI cell
         my ($mapid,$resid)=split(/\./,$_);
         my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$src);
         
       my $prefix=$_.'_';        my $prefix=$_.'_';
                               my %posthash=('request.prefix' => $prefix);                                my %posthash=('request.prefix' => $prefix,
       if ($ENV{'form.grade_target'} eq 'tex') {      'LONCAPA_INTERNAL_no_discussion' => 'true',
   $posthash{'grade_target'}=$ENV{'form.grade_target'};      'symb' => $symb);
   $posthash{'textwidth'}=$ENV{'form.textwidth'};        if ($env{'form.grade_target'} eq 'tex') {
   $posthash{'problem_split'}=$ENV{'form.problem_split'};    $posthash{'grade_target'}=$env{'form.grade_target'};
   $posthash{'latex_type'}=$ENV{'form.latex_type'};    $posthash{'textwidth'}=$env{'form.textwidth'};
   $posthash{'rndseed'}=$ENV{'form.rndseed'};    $posthash{'problem_split'}=$env{'form.problem_split'};
     $posthash{'latex_type'}=$env{'form.latex_type'};
     $posthash{'rndseed'}=$env{'form.rndseed'};
       }        }
                               if (($ENV{'form.'.$prefix.'submit'})         my $submitted=exists($env{'form.all_submit'});
                                || ($ENV{'form.all_submit'})) {        if (!$submitted) {
                                foreach (keys %ENV) {    foreach my $key (keys(%env)) {
   if ($_=~/^form.$prefix/) {        if ($key=~/^form.\Q$prefix\Esubmit_/) {
       my $name=$_;    $submitted=1;last;
                                       $name=~s/^form.$prefix//;        }
                                       $posthash{$name}=$ENV{$_};    }
                                   }        }
                                }                                if ($submitted) {
     foreach my $key (keys(%env)) {
         if ($key=~/^form.\Q$prefix\E/) {
     my $name=$key;
     $name=~s/^form.\Q$prefix\E//;
     $posthash{$name}=$env{$key};
         }
     }
     if (exists($env{'form.all_submit'})) {
         $posthash{'all_submit'}='yes';
     }
       }        }
                               my $output=Apache::lonnet::ssi($src,%posthash);                                my $output=Apache::lonnet::ssi($src,%posthash);
       $output=~        $output=~s|//(\s*<!--)? BEGIN LON-CAPA Internal.+?// END LON-CAPA Internal\s*(-->)?\s||gs;
     s/\/\/ BEGIN LON\-CAPA Internal.+\/\/ END LON\-CAPA Internal\s//gs;  
                               if ($target eq 'tex') {                                if ($target eq 'tex') {
   $output =~ s/^([^&]+)\\begin{document}//;    $output =~ s/^([^&]+)\\begin{document}//;
   $output =~ s/\\end{document}//;    $output =~ s/\\end{document}//;
   $output = '\parbox{\minipagewidth}{ '.$output.' }';  #  $output = '\parbox{\minipagewidth}{ '.$output.' }';
                                   #some additional cleanup necessary for LateX (due to limitations of table environment                                     #some additional cleanup necessary for LateX (due to limitations of table environment 
   $output =~ s/(\\vskip\s*\d+mm)\s*(\\\\)+/$1/g;    $output =~ s/(\\vskip\s*\d+mm)\s*(\\\\)+/$1/g;
       }        }
Line 326  sub handler { Line 338  sub handler {
                                   $output=~s/\<form[^\>]*\>//gsi;                                    $output=~s/\<form[^\>]*\>//gsi;
                                   $output=~s/\<\/form[^\>]*\>//gsi;                                    $output=~s/\<\/form[^\>]*\>//gsi;
                                   $output=~                                    $output=~
       s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([\w\.\:]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi;        s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi;
                               }                                }
                               $thisdir=~s/\/[^\/]*$//;                                $thisdir=~s/\/[^\/]*$//;
       foreach (@rlinks) {        foreach (@rlinks) {
   unless (($_=~/^http:\/\//i) ||    unless (($_=~/^https?\:\/\//i) ||
   ($_=~/^\//) ||    ($_=~/^\//) ||
   ($_=~/^javascript:/i) ||    ($_=~/^javascript:/i) ||
   ($_=~/^mailto:/i) ||    ($_=~/^mailto:/i) ||
Line 351  sub handler { Line 363  sub handler {
                   unless ($contents) {                    unless ($contents) {
                       &Apache::loncommon::content_type($r,'text/html');                        &Apache::loncommon::content_type($r,'text/html');
                       $r->send_http_header;                        $r->send_http_header;
                       $r->print('<html><body>'.&mt('Empty page').'.</body></html>');                        $r->print(&Apache::loncommon::start_page(undef,undef,
          {'force_register' => 1,}));
                         $r->print(&mt('This page is either empty or it only contains resources that are currently hidden').'. ');
                         $r->print('<br /><br />'.&mt('Please use the LON-CAPA navigation arrows to move to another item in the course').
    &Apache::loncommon::end_page());
                   } else {                    } else {
 # ------------------------------------------------------------------ Build page  # ------------------------------------------------------------------ Build page
   
Line 359  sub handler { Line 375  sub handler {
       unless ($target eq 'tex') {        unless ($target eq 'tex') {
   if ($isxml) {    if ($isxml) {
       &Apache::loncommon::content_type($r,'text/xml');        &Apache::loncommon::content_type($r,'text/xml');
       $r->send_http_header;  
       $r->print($xmlheader);  
   } else {    } else {
       &Apache::loncommon::content_type($r,'text/html');        &Apache::loncommon::content_type($r,'text/html');
       $r->send_http_header;  
       $r->print('<html>');  
   }    }
     $r->send_http_header;
 # ------------------------------------------------------------------------ Head  # ------------------------------------------------------------------------ Head
   $r->print("\n<head>\n".$allmeta);  
   if ($allscript) {    if ($allscript) {
       $r->print("\n<script language='JavaScript'>\n".        $allscript = 
  $allscript."\n</script>\n");    "\n".'<script type="text/javascript">'."\n".
     $allscript.
     "\n</script>\n";
   }    }
   $r->print(&Apache::lonmenu::registerurl(1,undef));  
   $r->print("\n</head>\n");  
 # ------------------------------------------------------------------ Start body  # ------------------------------------------------------------------ Start body
   if ($isxml) {    $r->print(&Apache::loncommon::start_page(undef,$allscript,
       $r->print($xmlbody);     {'force_register' => 1,
   } else {      'bgcolor'        => '#ffffff',}));
       $r->print(  
                '<body bgcolor="#FFFFFF" onLoad="'.&Apache::lonmenu::loadevents.  
                '" onUnload="'.&Apache::lonmenu::unloadevents.'">'.  
                               &Apache::lonmenu::menubuttons(undef,$target,1)  
  );  
   }  
 # ------------------------------------------------------------------ Start form  # ------------------------------------------------------------------ Start form
   if ($nforms) {    if ($nforms) {
       $r->print('<form method="post" action="'.        $r->print('<form name="lonhomework" method="post"  enctype="multipart/form-data" action="'.
  $requrl.'">');   &Apache::lonenc::check_encrypt($requrl)
    .'">');
   }    }
       } elsif ($target eq 'tex') {        } elsif ($target eq 'tex') {
   $r->print('\documentclass{article}    #  I think this is not needed as the header
                                  \newcommand{\keephidden}[1]{}               # will be put in for each of the page parts
                                  \usepackage[dvips]{graphicx}    # by the londefdef.pm now that we are opening up
                                  \usepackage{epsfig}    # the parts of a page.
                                  \usepackage{calc}    #$r->print('\documentclass{article}
                                  \usepackage{longtable}                            #       \newcommand{\keephidden}[1]{}           
                                  \begin{document}');                            #       \usepackage[dvips]{graphicx}
                             #       \usepackage{epsfig}
                             #       \usepackage{calc}
                             #       \usepackage{longtable}
                             #       \begin{document}');
       }        }
 # ----------------------------------------------------------------- Start table  # ----------------------------------------------------------------- Start table
       if ($target eq 'tex') {        if ($target eq 'tex') {
   $r->print('\begin{longtable}INSERTTHEHEADOFLONGTABLE\endfirsthead\endhead ');  # #  $r->print('\begin{longtable}INSERTTHEHEADOFLONGTABLE\endfirsthead\endhead ');
   if ($number_of_columns le $lcm) {$number_of_columns=$lcm;};    if ($number_of_columns le $lcm) {$number_of_columns=$lcm;};
       } else {        } else {
   $r->print('<table cols="'.$lcm.'" border="0">');    $r->print('<table width="100%" cols="'.$lcm.'" border="0">');
       }        }
   # generate rows
                       for ($i=0;$i<=$#rows;$i++) {                        for ($i=0;$i<=$#rows;$i++) {
  if ($rows[$i]) {   if ($rows[$i]) {
     unless ($target eq 'tex') {      unless ($target eq 'tex') {
Line 414  sub handler { Line 426  sub handler {
                           my $avespan=$lcm/($#colcont+1);                            my $avespan=$lcm/($#colcont+1);
                           for ($j=0;$j<=$#colcont;$j++) {                            for ($j=0;$j<=$#colcont;$j++) {
                               my $rid=$colcont[$j];                                my $rid=$colcont[$j];
                               my $metainfo='<a name="'.  
   &Apache::lonnet::escape(&Apache::lonnet::declutter($hash{'src_'.$rid})).'" />'.        my $metainfo =&get_buttons(\%hash,$rid).'<br />';
   '<a href="'.  
                                     $metalink{$rid}.'" target="LONcatInfo">'.  
                           '<img src="/adm/lonMisc/cat_button.gif" border=0>'.  
   '</img></a><a href="/adm/evaluate?postdata='.  
       &Apache::lonnet::escape(&Apache::lonnet::declutter($hash{'src_'.$rid}))  
       .'" target="LONcatInfo">'.  
                           '<img src="/adm/lonMisc/eval_button.gif" border=0>'.  
                           '</img></a>';  
                               if (  
  ($hash{'src_'.$rid}=~/\.(problem|exam|quiz|assess|survey|form)$/) &&  
  (&Apache::lonnet::allowed('mgr',$ENV{'request.course.id'}))) {  
   my ($mapid,$resid)=split(/\./,$rid);  
                                  my $symb=  
                 &Apache::lonnet::declutter($hash{'map_id_'.$mapid}).  
                 '___'.$resid.'___'.  
  &Apache::lonnet::declutter($hash{'src_'.$rid});  
                                  $metainfo.=  
                   '<a href="/adm/grades?symb='.&Apache::lonnet::escape($symb).  
 #                 '&command=submission" target="LONcatInfo">'.  
                   '&command=submission">'.  
                           '<img src="/adm/lonMisc/subm_button.gif" border=0>'.  
   '</img></a>'.  
                   '<a href="/adm/grades?symb='.&Apache::lonnet::escape($symb).  
 #                  '&command=gradingmenu" target="LONcatInfo">'.  
                   '&command=gradingmenu">'.  
                           '<img src="/adm/lonMisc/pgrd_button.gif" border=0>'.  
   '</img></a>'.  
                   '<a href="/adm/parmset?symb='.&Apache::lonnet::escape($symb).  
 #                          '" target="LONcatInfo">'.  
                           '" >'.  
                           '<img src="/adm/lonMisc/pprm_button.gif" border=0>'.  
       '</img></a>';  
                               }  
                               $metainfo.='<br></br>';  
     unless ($target eq 'tex') {      unless ($target eq 'tex') {
  $r->print('<td colspan="'.$avespan.'"');   $r->print('<td colspan="'.$avespan.'"');
     }      }
Line 479  sub handler { Line 457  sub handler {
   unless ($target eq 'tex') {    unless ($target eq 'tex') {
       $r->print('</font>');        $r->print('</font>');
                                   }                                    }
                                   if ($ENV{'course.'.                                    if ($env{'course.'.
                                       $ENV{'request.course.id'}.                                        $env{'request.course.id'}.
                                       '.pageseparators'} eq 'yes') {                                        '.pageseparators'} eq 'yes') {
                                       unless($target eq 'tex') {                                        unless($target eq 'tex') {
                                           $r->print('<hr />');                                            $r->print('<hr />');
                                       } else {                                        } 
                                           $r->print('\hline');  
                                       }  
   }    }
       } elsif ($cellemb{$rid} eq 'img') {        } elsif ($cellemb{$rid} eq 'img') {
                                   $r->print('>'.$metainfo.'<img src="'.                                    $r->print('>'.$metainfo.'<img src="'.
                                     $hash{'src_'.$rid}.'"></img>');                                      $hash{'src_'.$rid}.'" />');
       } elsif ($cellemb{$rid} eq 'emb') {        } elsif ($cellemb{$rid} eq 'emb') {
                                   $r->print('>'.$metainfo.'<embed src="'.                                    $r->print('>'.$metainfo.'<embed src="'.
                                     $hash{'src_'.$rid}.'"></embed>');                                      $hash{'src_'.$rid}.'"></embed>');
                                 } elsif (&Apache::lonnet::declutter($hash{'src_'.$rid}) !~/\.(sequence|page)$/) {
                                     $r->print($metainfo.'<b>'.$hash{'title_'.$rid}.'</b><br />'.
                                     &mt('It is recommended that you use an up-to-date virus scanner before handling this file.').'</p><p><table>'.
                                     &Apache::londocs::entryline(0,&mt("Click to download or use your browser's Save Link function"),'/'.&Apache::lonnet::declutter($hash{'src_'.$rid})).'</table></p><br />');
                               }                                }
       unless ($target eq 'tex') {        unless ($target eq 'tex') {
   $r->print('</td>');    $r->print('</td>');
       } else {        } else {
                                   for (my $incol=1;$incol<=$avespan;$incol++) {  #                                  for (my $incol=1;$incol<=$avespan;$incol++) {
       $r->print(' & ');  #      $r->print(' & ');
   }  #  }
       }        }
                           }                            }
       unless ($target eq 'tex') {        unless ($target eq 'tex') {
   $r->print('</tr>');    $r->print('</tr>');
       } else {        } else {
   $r->print('REMOVETHEHEADOFLONGTABLE\\\\');  #  $r->print('REMOVETHEHEADOFLONGTABLE\\\\');
       }        }
         }          }
                       }                        }
       unless ($target eq 'tex') {        unless ($target eq 'tex') {
   $r->print("\n</table>");    $r->print("\n</table>");
       } else {        } else {
   $r->print('\end{longtable}\strut');  #  $r->print('\end{longtable}\strut');
       }        }
 # ---------------------------------------------------------------- Submit, etc.  # ---------------------------------------------------------------- Submit, etc.
                       if ($nforms) {                        if ($nforms) {
Line 522  sub handler { Line 502  sub handler {
   (($nforms>1)?'submit':'hidden').'"></input></form>');    (($nforms>1)?'submit':'hidden').'"></input></form>');
                       }                        }
       unless ($target eq 'tex') {        unless ($target eq 'tex') {
   $r->print('</body>'.&Apache::lonxml::xmlend());    $r->print(&Apache::loncommon::end_page({'discussion'
         => 1,}));
       } else {        } else {
   $r->print('\end{document}'.$number_of_columns);    $r->print('\end{document}'.$number_of_columns);
       }        }
         &Apache::lonnet::symblist($requrl,%symbhash);
         my ($map,$id,$url)=&Apache::lonnet::decode_symb(&Apache::lonnet::symbread());
         &Apache::lonnet::symblist($map,'last_known'=>[$url,$id]);
 # -------------------------------------------------------------------- End page  # -------------------------------------------------------------------- End page
                   }                                      }                  
 # ------------------------------------------------------------- End render page  # ------------------------------------------------------------- End render page
               } else {                } else {
                   $r->content_type('text/html');                    &Apache::loncommon::content_type($r,'text/html');
                   $r->send_http_header;                    $r->send_http_header;
                   &Apache::lonsequence::viewmap($r,$requrl);                    &Apache::lonsequence::viewmap($r,$requrl);
               }                }
Line 545  sub handler { Line 529  sub handler {
           }            }
       }         } 
   }    }
   $r->content_type('text/html');    &Apache::loncommon::content_type($r,'text/html');
   $r->send_http_header;    $r->send_http_header;
   &Apache::lonsequence::viewmap($r,$requrl);    &Apache::lonsequence::viewmap($r,$requrl);
   return OK;     return OK; 
 }  }
   
   sub get_buttons {
       my ($hash,$rid) = @_;
   
       my $metainfo = '';
       my $esrc=&Apache::lonnet::declutter($hash->{'src_'.$rid});
       my ($mapid,$resid)=split(/\./,$rid);
       my $symb=&Apache::lonnet::encode_symb($hash->{'map_id_'.$mapid},
     $resid,
     $hash->{'src_'.$rid});
       if ($hash->{'encrypted_'.$rid}) {
    $symb=&Apache::lonenc::encrypted($symb);
    $esrc=&Apache::lonenc::encrypted($esrc);
       }
       if ($hash->{'src_'.$rid} !~ m-^/uploaded/-
    && !$env{'request.enc'}
    && ($env{'request.role.adv'}
       || !$hash->{'encrypted_'.$rid})) { 
    $metainfo .='<a name="'.&escape($symb).'" />'.
       '<a href="'.$hash->{'src_'.$rid}.'.meta'.'" target="LONcatInfo">'.
       '<img src="/adm/lonMisc/cat_button.png" class="LC_icon" />'.
       '</a>';
       }
       $metainfo .= '<a href="/adm/evaluate?postdata='.
    &escape($esrc).
    '" target="LONcatInfo">'.
    '<img src="/adm/lonMisc/eval_button.png" class="LC_icon" />'.
    '</a>';
       if (($hash->{'src_'.$rid}=~/\.(problem|exam|quiz|assess|survey|form)$/) &&
    ($hash->{'src_'.$rid} !~ m-^/uploaded/-)) {
   
    if (&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) {
       $metainfo.=
    '<a href="/adm/grades?symb='.&escape($symb).
   #               '&command=submission" target="LONcatInfo">'.
    '&command=submission">'.
    '<img src="/adm/lonMisc/subm_button.png" class="LC_icon" />'.
    '</a>'.
    '<a href="/adm/grades?symb='.&escape($symb).
   #               '&command=gradingmenu" target="LONcatInfo">'.
    '&command=gradingmenu">'.
    '<img src="/adm/lonMisc/pgrd_button.png" class="LC_icon" />'.
    '</a>';
    }
    if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) {
       $metainfo.=
    '<a href="/adm/parmset?symb='.&escape($symb).
   #               '" target="LONcatInfo">'.
    '" >'.
    '<img src="/adm/lonMisc/pprm_button.png" class="LC_icon" />'.
    '</a>';
    }
       }
       return $metainfo;
   }
   
 1;  1;
 __END__  __END__
   
   
 =head1 NAME  =head1 NAME
   
 Apache::lonpage - Page Handler  Apache::lonpage - Page Handler
Line 655  tracetable() : Build page table. Line 695  tracetable() : Build page table.
 =cut  =cut
   
   
   
   

Removed from v.1.58  
changed lines
  Added in v.1.93


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.