Diff for /rat/lonpage.pm between versions 1.77 and 1.107

version 1.77, 2007/05/22 00:26:31 version 1.107, 2014/12/30 20:03:19
Line 27 Line 27
 #  #
 ###  ###
   
   
   
   
 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::lonhtmlcommon;
 use Apache::lonxml();  use Apache::lonxml();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonmenu;  use Apache::lonmenu;
Line 78  sub tracetable { Line 82  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 155  sub handler { Line 159  sub handler {
   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'};
   
   # Short term solution: define target as 'tex_answer' when retrieving answers
   # for resources in a .page when generating printouts.
   # A better long-term fix would be to modify the way problem rendering, and 
   # answer rendering are retrieved for individual resources when printing a .page,
   # so rendered problem and answer are sequential for individual resources in 
   # the .page
   #
     if ($target eq 'answer') {
         if ($env{'form.answer_output_mode'} eq 'tex') {
             $target = 'tex_answer';
         }
     }
 #  &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 198  sub handler { Line 215  sub handler {
                   my $lcm=1;                    my $lcm=1;
                   my $contents=0;                    my $contents=0;
                   my $nforms=0;                    my $nforms=0;
                     my $nuploads=0;
                     my %turninpaths;
                     my %multiresps;
                     my $turninparent;
                                       
                   my %ssibody=();                    my %ssibody=();
                   my %ssibgcolor=();                    my %ssibgcolor=();
Line 206  sub handler { Line 227  sub handler {
                   my %ssivlink=();                    my %ssivlink=();
                   my %ssialink=();                    my %ssialink=();
             
                   my %metalink=();  
   
                   my %cellemb=();                    my %cellemb=();
                     my %cellexternal=();
   
                   my $allscript='';                    my $allscript='';
                   my $allmeta='';                    my $allmeta='';
Line 226  sub handler { Line 246  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_'.$_};
   my ($extension)=($src=~/\.(\w+)$/);                            my ($extension)=($src=~/\.(\w+)$/);
     $cellexternal{$_}=($hash{'ext_'.$_} eq 'true:');
   if ($hash{'encrypted_'.$_}) {    if ($hash{'encrypted_'.$_}) {
       $src=&Apache::lonenc::encrypted($src);        $src=&Apache::lonenc::encrypted($src);
   }    }
                           $metalink{$_}=$src.'.meta';  
                           $cellemb{$_}=                            $cellemb{$_}=
       &Apache::loncommon::fileembstyle($extension);        &Apache::loncommon::fileembstyle($extension);
                           if ($cellemb{$_} eq 'ssi') {                            if ($cellexternal{$_}) {
                                 unless (($target eq 'tex') || ($target eq 'tex_answer')) {
                                     $ssibody{$_} = <<ENDEXT;
   <iframe src="$src" width="100%">No iframe support!</iframe>
   ENDEXT
                                 }
                             } elsif ($cellemb{$_} eq 'ssi') {
 # --------------------------------------------------------- This is an SSI cell  # --------------------------------------------------------- This is an SSI cell
       my ($mapid,$resid)=split(/\./,$_);        my ($mapid,$resid)=split(/\./,$_);
       my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$src);        my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$src);
               
       my $prefix=$_.'_';        my $prefix=$_.'_';
                                 my $idprefix= join('_',($mapid,$resid,''));
                               my %posthash=('request.prefix' => $prefix,                                my %posthash=('request.prefix' => $prefix,
     'LONCAPA_INTERNAL_no_discussion' => 'true',      'LONCAPA_INTERNAL_no_discussion' => 'true',
     'symb' => $symb);      'symb' => $symb);
       if ($env{'form.grade_target'} eq 'tex') {        if (($env{'form.grade_target'} eq 'tex') ||
                                    ($env{'form.answer_output_mode'} eq 'tex')) {
   $posthash{'grade_target'}=$env{'form.grade_target'};    $posthash{'grade_target'}=$env{'form.grade_target'};
   $posthash{'textwidth'}=$env{'form.textwidth'};    $posthash{'textwidth'}=$env{'form.textwidth'};
   $posthash{'problem_split'}=$env{'form.problem_split'};    $posthash{'problem_split'}=$env{'form.problem_split'};
   $posthash{'latex_type'}=$env{'form.latex_type'};    $posthash{'latex_type'}=$env{'form.latex_type'};
   $posthash{'rndseed'}=$env{'form.rndseed'};    $posthash{'rndseed'}=$env{'form.rndseed'};
                                     $posthash{'answer_output_mode'} = $env{'form.answer_output_mode'};
       }        }
       my $submitted=exists($env{'form.all_submit'});        my $submitted=exists($env{'form.all_submit'});
       if (!$submitted) {        if (!$submitted) {
Line 271  sub handler { Line 300  sub handler {
       }        }
                               my $output=Apache::lonnet::ssi($src,%posthash);                                my $output=Apache::lonnet::ssi($src,%posthash);
       $output=~s|//(\s*<!--)? BEGIN LON-CAPA Internal.+?// END LON-CAPA Internal\s*(-->)?\s||gs;        $output=~s|//(\s*<!--)? BEGIN LON-CAPA Internal.+?// END LON-CAPA Internal\s*(-->)?\s||gs;
                               if ($target eq 'tex') {                                if (($target eq 'tex') || ($target eq 'tex_answer')) {
   $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;
       }        }
                                 my $matheditor;
                                 if ($output =~ /\Qjavascript:LC_mathedit_HWVAL_\E/) {
                                     $matheditor = 'dragmath';
                                 } elsif ($output =~ /LCmathField/) {
                                     $matheditor = 'lcmath';
                                 }
                               my $parser=HTML::TokeParser->new(\$output);                                my $parser=HTML::TokeParser->new(\$output);
                               my $token;                                my $token;
                               my $thisdir=$src;                                my $thisdir=$src;
Line 337  sub handler { Line 372  sub handler {
   $nforms++;    $nforms++;
                                   $output=~s/\<form[^\>]*\>//gsi;                                    $output=~s/\<form[^\>]*\>//gsi;
                                   $output=~s/\<\/form[^\>]*\>//gsi;                                    $output=~s/\<\/form[^\>]*\>//gsi;
                                     if ($output=~/\<input[^\>]+name\s*=\s*[\'\"]*HWFILE/) {
                                         $nuploads++;
                                     }
                                     $output=~
         s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi;
                                   $output=~                                    $output=~
       s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([\w\.\:]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi;                                        s/\<((?:input|select|button|textarea)[^\>]+)id\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 id="$idprefix$2" $3\>/gsi;
                                     if ($matheditor eq 'dragmath') {
                                         $output=~
                                             s/(\Qjavascript:LC_mathedit_\E)(HWVAL_)([^'"]+?)(\(['"]*)(\QHWVAL_\E\3['"]\)\;void\(0\)\;)/$1$idprefix$2$3$4$idprefix$5/g;
                                         $output=~
                                             s/(function\s+LC_mathedit_)(HWVAL_)([^'"]+?)(\s+\(LCtextline\))/$1$idprefix$2$3$4/g;
                                     } elsif ($matheditor eq 'lcmath') {
                                         $output=~
                                             s/(var\s+LCmathField\s+=\s+document\.getElementById\(['"])([^'"]+?)(['"]\)\;)/$1$idprefix$2$3/g;
                                     }
                                     $output=~
                                         s/(\Q<div id="msg_\E)(\Qsubmit_\E)([^"]*)(\Q" style="display:none">\E)/<input type="hidden" name="$prefix$2$3_pressed" id="$idprefix$2$3_pressed" value="" \/>$1$idprefix$2$3$4/g;
                                     $output=~
                                         s/(\Q<td class="LC_status_\E)(\Qsubmit_\E)([^\"]*)(\s*[^\"]*"\>)/$1$idprefix$2$3$4/g;
                                     if ($nuploads) {
                                         $output=~
                                             s/\<(input[^\>]+name=\"\Q$prefix\EHWFILE[^\>]+)\s*id\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\)]*)\>/\<$1 id="$prefix$2" $3\>/gsi;
                                          ($turninpaths{$prefix},$multiresps{$prefix}) = 
                                              &Apache::loncommon::get_turnedin_filepath($symb,$env{'user.name'},$env{'user.domain'});
                                          if ($turninparent eq '') {
                                              $turninparent = $turninpaths{$prefix};
                                              $turninparent =~ s{(/[^/]+)$}{}; 
                                          }
                                     }
                                     $output=~
                                         s/\<((?:input|select)[^\>]+\Qjavascript:setSubmittedPart\E)\(\s*[\'\"]([^\'\"]+)[\'\"]*\s*\)/\<$1('$2','$prefix')/gsi;
                               }                                }
                               $thisdir=~s/\/[^\/]*$//;                                $thisdir=~s/\/[^\/]*$//;
       foreach (@rlinks) {        foreach (@rlinks) {
   unless (($_=~/^http:\/\//i) ||    unless (($_=~/^https?\:\/\//i) ||
   ($_=~/^\//) ||    ($_=~/^\//) ||
   ($_=~/^javascript:/i) ||    ($_=~/^javascript:/i) ||
   ($_=~/^mailto:/i) ||    ($_=~/^mailto:/i) ||
Line 372  sub handler { Line 437  sub handler {
 # ------------------------------------------------------------------ Build page  # ------------------------------------------------------------------ Build page
   
 # ---------------------------------------------------------------- Send headers  # ---------------------------------------------------------------- Send headers
       unless ($target eq 'tex') {        unless (($target eq 'tex') || ($target eq 'tex_answer')) {
   if ($isxml) {    if ($isxml) {
       &Apache::loncommon::content_type($r,'text/xml');        &Apache::loncommon::content_type($r,'text/xml');
   } else {    } else {
Line 381  sub handler { Line 446  sub handler {
   $r->send_http_header;    $r->send_http_header;
 # ------------------------------------------------------------------------ Head  # ------------------------------------------------------------------------ Head
   if ($allscript) {    if ($allscript) {
       $allscript .=         $allscript = 
   "\n<script type=\"text/javascript\">\n".    "\n".'<script type="text/javascript">'."\n".
   $allscript."\n</script>\n";    $allscript.
     "\n</script>\n";
   }    }
                             if (($nforms) && ($nuploads)) {
                                 $allscript .= &Apache::lonhtmlcommon::file_submissionchk_js(\%turninpaths,\%multiresps);
                             }
                             if (($nforms) && (&Apache::lonhtmlcommon::htmlareabrowser())) {
                                 my %textarea_args = (
                                     dragmath => 'math',
                                 );
                                 $allscript .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args);
                             }
 # ------------------------------------------------------------------ Start body  # ------------------------------------------------------------------ Start body
   $r->print(&Apache::loncommon::start_page(undef,undef,    $r->print(&Apache::loncommon::start_page(undef,$allscript,
    {'force_register' => 1,     {'force_register' => 1,
     'bgcolor'        => '#ffffff',}));      'bgcolor'        => '#ffffff',}));
 # ------------------------------------------------------------------ Start form  # ------------------------------------------------------------------ Start form
   if ($nforms) {    if ($nforms) {
       $r->print('<form method="post" action="'.        my $fmtag = '<form name="lonhomework" method="post"  enctype="multipart/form-data"';
                                 if ($nuploads) {
                                     my $multi;
                                     if ($nuploads > 1) {
                                         $multi = 1;
                                     }
                                     $fmtag .= 'onsubmit="return file_submission_check(this,'."'$turninparent','$multi'".');"';
                                 }
                                 $fmtag .= ' action="'.
  &Apache::lonenc::check_encrypt($requrl)   &Apache::lonenc::check_encrypt($requrl)
  .'">');   .'" id="LC_page">';
                                 $r->print($fmtag);
   }    }
       } elsif ($target eq 'tex') {        } elsif (($target eq 'tex') || ($target eq 'tex_answer')) {
   $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') || ($target eq 'tex_answer')) {
   $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 width="100%" 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') || ($target eq 'tex_answer')) {
  $r->print("\n<tr>");   $r->print("\n<tr>");
     }      }
                           my @colcont=split(/\&/,$rows[$i]);                            my @colcont=split(/\&/,$rows[$i]);
                           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 = '';        my $metainfo =&get_buttons(\%hash,$rid).'<br />';
       my $esrc=&Apache::lonnet::declutter($hash{'src_'.$rid});      unless (($target eq 'tex') || ($target eq 'tex_answer')) {
       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);  
       }  
                               unless ($hash{'src_'.$rid} =~ m-^/uploaded/-) {   
                                   $metainfo ='<a name="'.&escape($symb).'" />'.  
                                   '<a href="'.$metalink{$rid}.'" target="LONcatInfo">'.  
                                   '<img src="/adm/lonMisc/cat_button.gif" border=0>'.  
                                   '</img></a>';  
                               }  
                               $metainfo .= '<a href="/adm/evaluate?postdata='.  
   &escape($esrc).  
                                   '" 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'})) &&   
  ($hash{'src_'.$rid} !~ m-^/uploaded/-)) {  
   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='.&escape($symb).  
 #                 '&command=submission" target="LONcatInfo">'.  
                   '&command=submission">'.  
                           '<img src="/adm/lonMisc/subm_button.gif" border=0>'.  
   '</img></a>'.  
                   '<a href="/adm/grades?symb='.&escape($symb).  
 #                  '&command=gradingmenu" target="LONcatInfo">'.  
                   '&command=gradingmenu">'.  
                           '<img src="/adm/lonMisc/pgrd_button.gif" border=0>'.  
   '</img></a>'.  
                   '<a href="/adm/parmset?symb='.&escape($symb).  
 #                          '" target="LONcatInfo">'.  
                           '" >'.  
                           '<img src="/adm/lonMisc/pprm_button.gif" border=0>'.  
       '</img></a>';  
                               }  
                               $metainfo.='<br></br>';  
     unless ($target eq 'tex') {  
  $r->print('<td colspan="'.$avespan.'"');   $r->print('<td colspan="'.$avespan.'"');
     }      }
                               if ($cellemb{$rid} eq 'ssi') {                                if (($cellemb{$rid} eq 'ssi') || ($cellexternal{$rid})) {
   unless ($target eq 'tex') {    unless (($target eq 'tex') || ($target eq 'tex_answer')) {
       if ($ssibgcolor{$rid}) {        if ($ssibgcolor{$rid}) {
   $r->print(' bgcolor="'.    $r->print(' bgcolor="'.
     $ssibgcolor{$rid}.'"');      $ssibgcolor{$rid}.'"');
Line 491  sub handler { Line 535  sub handler {
       }                     }             
       $r->print('>');        $r->print('>');
   }    }
                                   $r->print($ssibody{$rid});                                    unless (($cellexternal{$rid}) && 
   unless ($target eq 'tex') {                                            ($target eq 'tex') && ($target eq 'tex_answer')) {
                                         $r->print($ssibody{$rid});
                                     }
     unless (($target eq 'tex') || ($target eq 'tex_answer')) {
       $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') || ($target eq 'tex_answer')) {
                                           $r->print('<hr />');                                            $r->print('<hr />');
                                       }                                         } 
   }    }
Line 509  sub handler { Line 556  sub handler {
                                   $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)$/) {                                } elsif (&Apache::lonnet::declutter($hash{'src_'.$rid}) !~/\.(sequence|page)$/) {
                                   $r->print($metainfo.'<b>'.$hash{'title_'.$rid}.'</b><br />'.                                    $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>'.                                    unless ($cellemb{$rid} eq 'wrp') {
                                   &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 />');                                        $r->print(&mt('It is recommended that you use an up-to-date virus scanner before handling this file.'));
                                     }
                                     $r->print('</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') || ($target eq 'tex_answer')) {
   $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') || ($target eq 'tex_answer')) {
   $r->print('</tr>');    $r->print('</tr>');
       } else {        } else {
   $r->print('REMOVETHEHEADOFLONGTABLE\\\\');  #  $r->print('REMOVETHEHEADOFLONGTABLE\\\\');
       }        }
         }          }
                       }                        }
       unless ($target eq 'tex') {        unless (($target eq 'tex') || ($target eq 'tex_answer')) {
   $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) {
                             my $class;
                             if ($nforms > 1) {
                                 $class = ' class="LC_hwk_submit"';
                             }
                           $r->print(                            $r->print(
                   '<input name="all_submit" value="Submit All" type="'.                    '<input name="all_submit" value="'.&mt('Submit All').'" type="'.
   (($nforms>1)?'submit':'hidden').'"></input></form>');    (($nforms>1)?'submit':'hidden').'"'.$class.' id="all_submit" />'.
                             '<div id="msg_all_submit" style="display:none">'.
                             &mt('Processing your submission ...').'</div></form>');
                       }                        }
       unless ($target eq 'tex') {        unless (($target eq 'tex') || ($target eq 'tex_answer')) {
   $r->print(&Apache::loncommon::end_page({'discussion'    $r->print(&Apache::loncommon::end_page({'discussion'
       => 1,}));        => 1,}));
       } else {        } else {
Line 573  sub handler { Line 632  sub handler {
   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/-
           && $hash->{'src_'.$rid} !~ m{^https?://}
    && !$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="/res/adm/pages/catalog.png" class="LC_icon"'.
               ' alt="'.&mt('Show Metadata').'"'.
               ' title="'.&mt('Show Metadata').'" />'.
       '</a>';
       }
       if (($hash->{'src_'.$rid} !~ m{^/uploaded/}) &&
           ($hash->{'src_'.$rid} !~ m{^https?://})) {
           $metainfo .= '<a href="/adm/evaluate?postdata='.
       &escape($esrc).
       '" target="LONcatInfo">'.
               '<img src="/res/adm/pages/eval.png" class="LC_icon"'.
               ' alt="'.&mt('Provide my evaluation of this resource').'"'.
               ' title="'.&mt('Provide my evaluation of this resource').'" />'.
       '</a>';
       }
       if (($hash->{'src_'.$rid}=~/$LONCAPA::assess_re/) &&
    ($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"'.
                   ' alt="'.&mt('View Submissions for a Student or a Group of Students').'"'.
                   ' title="'.&mt('View Submissions for a Student or a Group of Students').'" />'.
    '</a>'.
    '<a href="/adm/grades?symb='.&escape($symb).
   #               '&command=gradingmenu" target="LONcatInfo">'.
    '&command=gradingmenu">'.
                   '<img src="/res/adm/pages/pgrd.png" class="LC_icon"'.
                   ' alt="'.&mt('Content Grades').'"'.
                   ' title="'.&mt('Content Grades').'" />'.
    '</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"'.
                   ' alt="'.&mt('Content Settings').'"'.
                   ' title="'.&mt('Content Settings').'" />'.
    '</a>';
    }
       }
       if (($env{'request.course.id'}) && (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) {
           my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
           my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
           my $file=&Apache::lonnet::declutter($hash->{'src_'.$rid});
           my ($cfile,$home,$switchserver,$forceedit,$forceview) =
               &Apache::lonnet::can_edit_resource($file,$cnum,$cdom,$hash->{'src_'.$rid},$symb);
           if ($cfile ne '') {
               my $jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver,
                                                                    $forceedit,1,$symb,undef,
                                                                    &escape($env{'form.title'}));
               if ($jscall) {
                   my $icon = 'pcstr.png';
                   my $label = &mt('Edit');
                   my $title = &mt('Edit this resource');
                   my $pic = '<img src="'.&Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$icon).'"'.
                             ' class="LC_icon" alt="'.$label.'" title="'.$title.'" />';
                   $metainfo .= '&nbsp;<a href="javascript:'.$jscall.';">'.$pic.'</a>';
               }
           }
       }
       return $metainfo;
   }
   
 1;  1;
 __END__  __END__
   
   
 =head1 NAME  =head1 NAME
   
 Apache::lonpage - Page Handler  Apache::lonpage - Page Handler
Line 677  tracetable() : Build page table. Line 826  tracetable() : Build page table.
 =cut  =cut
   
   
   
   

Removed from v.1.77  
changed lines
  Added in v.1.107


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.