Diff for /loncom/homework/inputtags.pm between versions 1.264 and 1.265

version 1.264, 2010/06/17 00:13:20 version 1.265, 2010/06/21 02:15:37
Line 53  package Apache::inputtags; Line 53  package Apache::inputtags;
 use HTML::Entities();  use HTML::Entities();
 use strict;  use strict;
 use Apache::loncommon;  use Apache::loncommon;
   use Apache::lonhtmlcommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
 use LONCAPA;  use LONCAPA;
Line 479  sub file_selector { Line 480  sub file_selector {
     $jspart=~s/\./_/g;      $jspart=~s/\./_/g;
   
     my $result;      my $result;
           my $current_files_display = &current_file_submissions($part,$id);
     $result.='<tr><td>';      my $addfiles;
     if (($uploadedfiletypes ne '*') || ($maxfilesize)) {      if ($current_files_display) {
         if ($uploadedfiletypes ne '*') {          $result .= &Apache::lonhtmlcommon::row_title(&mt('Currently submitted files:')).
     $result.=                     $current_files_display.
         &mt('Allowed filetypes: [_1]','<b>'.$uploadedfiletypes.'</b>').'<br />';                     &Apache::lonhtmlcommon::row_closure();
         }          $addfiles = &mt('Submit other file(s)');
         if ($maxfilesize) {      } else {
             $result.=&mt('Combined size of files not to exceed: [_1] MB[_2].',          $addfiles = &mt('Choose file(s) to submit');
                          '<b>'.$maxfilesize.'</b>').'<br />';      }
         }      $result .= &Apache::lonhtmlcommon::row_title($addfiles);
         $result .= '<br />';      my $constraints;
       if ($uploadedfiletypes ne '*') {
    $constraints =
       &mt('Allowed filetypes: [_1]','<b>'.$uploadedfiletypes.'</b>').'<br />';
       }
       if ($maxfilesize) {
           $constraints .= &mt('Combined size of all files not to exceed: [_1] MB[_2].',
                           '<b>'.$maxfilesize.'</b>').'<br />';
       }
       if ($constraints) {
           $result .= $constraints.'<br />';
     }      }
     if ($which eq 'uploadonly' || $which eq 'both') {       if ($which eq 'uploadonly' || $which eq 'both') { 
  $result.=&mt('Submit a file: (only one file can be uploaded)').   $result.=&mt('Submit a file: (only one file per submission)').
     ' <br /><input type="file" size="50" name="HWFILE'.      ' <br /><input type="file" size="50" name="HWFILE'.
     $jspart.'_'.$id.'" /><br />';      $jspart.'_'.$id.'" /><br />';
  $result .= &show_past_file_submission($part,$id);  
     }      }
     if ( $which eq 'both') {       if ( $which eq 'both') {
  $result.='<br />'.'<strong>'.&mt('OR:').'</strong><br />';   $result.='<br />'.'<strong>'.&mt('OR:').'</strong><br />';
     }      }
     if ($which eq 'portfolioonly' || $which eq 'both') {       if ($which eq 'portfolioonly' || $which eq 'both') { 
  $result.=$extratext.'<a href='."'".'javascript:void(window.open("/adm/portfolio?mode=selectfile&amp;fieldname='.$env{'form.request.prefix'}.'HWPORT'.$jspart.'_'.$id.'","cat","height=600,width=800,scrollbars=1,resizable=1,menubar=2,location=1"))'."'".'>'.   $result.=$extratext.'<a href='."'".'javascript:void(window.open("/adm/portfolio?mode=selectfile&amp;fieldname='.$env{'form.request.prefix'}.'HWPORT'.$jspart.'_'.$id.'","cat","height=600,width=800,scrollbars=1,resizable=1,menubar=2,location=1"))'."'".'>'.
     &mt('Select Portfolio Files').'</a><br />'.      &mt('Select Portfolio Files: (one or more files per submission)').'</a><br />'.
     '<input type="text" size="50" name="HWPORT'.$jspart.'_'.$id.'" value="" />'.      '<input type="text" size="50" name="HWPORT'.$jspart.'_'.$id.'" value="" />'.
     '<br />';      '<br />';
  $result .= &show_past_portfile_submission($part,$id);  
     }      }
     $result.='</td></tr>';       $result.=&Apache::lonhtmlcommon::row_closure(1);
     return $result;      return $result;
 }  }
   
 sub show_past_file_submission {  sub current_file_submissions {
     my ($part,$id) = @_;      my ($part,$id) = @_;
     my $uploadedfile= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.uploadedfile"},'<>&"');      my $jspart=$part;
       $jspart=~s/\./_/g;
     return if (!$uploadedfile);      my $uploadedfile=&HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.uploadedfile"},'<>&"');
       my $portfiles=$Apache::lonhomework::history{"resource.$part.$id.portfiles"};
     my $url=$Apache::lonhomework::history{"resource.$part.$id.uploadedurl"};      return if (($uploadedfile eq '') && ($portfiles !~/[^\s]/));
     &Apache::lonxml::extlink($url);      my $header = &Apache::loncommon::start_data_table().
     &Apache::lonnet::allowuploaded('/adm/essayresponse',$url);                   &Apache::loncommon::start_data_table_header_row().
     my $icon=&Apache::loncommon::icon($url);                   '<th>'.&mt('Delete?').'</th>'.
     my $curfile='<a href="'.$url.'"><img src="'.$icon.                   '<th>'.&mt('Name').'</th>'.
  '" border="0" />'.$uploadedfile.'</a>';                   '<th>'.&mt('Size (MB)').'</th>'.
     return &mt('Currently submitted: [_1]','<tt>'.$curfile.'</tt>');                   '<th>'.&mt('Last Modified').'</th>'.
                    &Apache::loncommon::end_data_table_header_row();
 }      my (undef,$crsid,$udom,$uname)=&Apache::lonnet::whichuser();
       my ($cdom,$cnum) = ($crsid =~ /^($LONCAPA::match_domain)_($LONCAPA::match_courseid)$/);
 sub show_past_portfile_submission {      my ($result,$header_shown,%okfiles,%rows,@bad_file_list);
     my ($part,$id) = @_;      if ($uploadedfile) {
     if ($Apache::lonhomework::history{"resource.$part.$id.portfiles"}!~/[^\s]/){          my $url=$Apache::lonhomework::history{"resource.$part.$id.uploadedurl"};
  return;          my ($path,$name) = ($url =~ m{^/uploaded/\Q$cdom\E/\Q$cnum\E/(essayresponse/.+/)([^/]+))});
           my ($status,$hashref,$error) =
               &current_file_info($url,$uploadedfile,$name,$path);
           if ($status eq 'ok') {
               push(@{$okfiles{$name}},$url);
               $rows{$url} = $hashref;
               &Apache::lonxml::extlink($url);
               &Apache::lonnet::allowuploaded('/adm/essayresponse',$url);
           } else {
               push(@bad_file_list,$error);
           }
     }      }
     my (@file_list,@bad_file_list);      if ($portfiles =~ /[^\s]/) {
     foreach my $file (split(/\s*,\s*/,&unescape($Apache::lonhomework::history{"resource.$part.$id.portfiles"}))) {          my $prefix = "/uploaded/$udom/$uname/portfolio";
  my (undef,undef,$domain,$user)=&Apache::lonnet::whichuser();          foreach my $file (split(/\s*,\s*/,&unescape($portfiles))) {
  my $url="/uploaded/$domain/$user/portfolio$file";              my ($path,$name) = ($file =~ m{^(.*/)([^/]+)$});
  my $icon=&Apache::loncommon::icon($url);              my $url = $prefix.$path.$name;
  push(@file_list,'<a href="'.$url.'"><img src="'.$icon.              my $uploadedfile = &HTML::Entities::encode($url,'<>&"');
      '" border="0" />'.$file.'</a>');              my ($status,$hashref,$error) =
  if (! &Apache::lonnet::stat_file($url)) {                  &current_file_info($url,$uploadedfile,$name,$path);
     &Apache::lonnet::logthis("bad file is $url");              if ($status eq 'ok') {
     push(@bad_file_list,'<a href="'.$url.'"><img src="'.$icon.                  push(@{$okfiles{$name}},$url);
  '" border="0" />'.$file.'</a>');                  $rows{$url} = $hashref;
  }              } else {
                   push(@bad_file_list,$error);
               }
           }
       }
       foreach my $name (sort(keys(%okfiles))) {
           if (ref($okfiles{$name}) eq 'ARRAY') {
               foreach my $url (@{$okfiles{$name}}) {
                   if (ref($rows{$url}) eq 'HASH') {
                       my $link = $rows{$url}{link};
                       my $portfile = $rows{$url}{path}.$rows{$url}{name};
                       $portfile = &HTML::Entities::encode($portfile,'<>&"');
                       if ($link) {
                           my $icon=&Apache::loncommon::icon($url);
                           unless ($header_shown) {
                               $result .= $header;
                               $header_shown = 1;
                           }
                           $result.=
                               &Apache::loncommon::start_data_table_row()."\n".
                               '<td valign="bottom"><input type="checkbox" name="HWFILE'.$jspart.'_'.$id.'_delete" value="'.
                               $portfile.'" /></td>'."\n".
                               '<td><a href="'.$link.'"><img src="'.$icon.
                               '" border="0" />'.$name.'</a></td>'."\n".
                               '<td align="right" valign="bottom">'.$rows{$url}{size}.'</td>'."\n".
                               '<td align="right" valign="bottom">'.$rows{$url}{lastmodified}.'</td>'."\n".
                               &Apache::loncommon::end_data_table_row();
                       }
                   }
               }
           }
       }
       if ($header_shown) {
           $result .= &Apache::loncommon::end_data_table();
     }      }
     my $files = '<span class="LC_filename">'.  
  join('</span>, <span class="LC_filename">',@file_list).  
  '</span>';  
     my $result = &mt("Portfolio files previously selected: [_1]",$files);  
     if (@bad_file_list) {      if (@bad_file_list) {
  my $bad_files = '<span class="LC_filename">'.          my $bad_files = '<span class="LC_filename">'.
     join('</span>, <span class="LC_filename">',@bad_file_list).              join('</span>, <span class="LC_filename">',@bad_file_list).
     '</span>';              '</span>';
  $result.='<p><span class="LC_error">'          $result.='<p class="LC_error">'.
                 .&mt("These file(s) don't exist: [_1]",$bad_files)                   &mt("These file(s) don't exist: [_1]",$bad_files).
                 .'</span></p>';                   '</p>';
     }      }
     return $result;      return $result;
   }
   
   sub current_file_info {
       my ($url,$uploadedfile,$name,$path) = @_;
       my ($status,$error,%info);
       my @stat = &Apache::lonnet::stat_file($url);
       if ((@stat) && ($stat[0] ne 'no_such_dir')) {
           my ($lastmod,$size);
           if ($stat[9] =~ /^\d+$/) {
               $lastmod = &Apache::lonlocal::locallocaltime($stat[9]);
           }
           $size = $stat[7]/(1024*1024);
           $size = sprintf("%.3f",$size);
           %info = (
                       link         => $uploadedfile,
                       name         => $name,
                       path         => $path,
                       size         => $size,
                       lastmodified => $lastmod,
                   );
           $status = 'ok';
       } else {
           &Apache::lonnet::logthis("bad file is $url");
           my $icon=&Apache::loncommon::icon($url);
           $error = '<a href="'.$url.'"><img src="'.$icon.
                    '" border="0" />'.$uploadedfile.'</a>';
       }
       return ($status,\%info,$error);
 }  }
   
 sub valid_award {  sub valid_award {

Removed from v.1.264  
changed lines
  Added in v.1.265


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