Diff for /loncom/homework/essayresponse.pm between versions 1.114 and 1.115

version 1.114, 2011/01/29 19:41:41 version 1.115, 2011/07/26 17:14:51
Line 441  sub file_submission { Line 441  sub file_submission {
         }          }
     }      }
     if ($accepted_upload ne '') {      if ($accepted_upload ne '') {
         my ($map,$resid,$resurl)=&Apache::lonnet::decode_symb($symb);          my ($path,$multiresp) = 
         my $turnindir;              &Apache::loncommon::get_turnedin_filepath($symb,$uname,$udom,
         my %userhash = &Apache::lonnet::userenvironment($udom,$uname,'turnindir');                                                        'submission');
         $turnindir = $userhash{'turnindir'};          if ($path eq '') {
         if ($turnindir eq '') {              $$award = 'INTERNAL_ERROR';
             $turnindir = &mt('turned in');          } else {
             $turnindir =~ s/\W+/_/g;              if ($multiresp) {
             my %newhash = (                  $path .= '/'.$jspart.'_'.$id;
                             'turnindir' => $turnindir,  
                           );  
             &Apache::lonnet::put('environment',\%newhash,$udom,$uname);  
         }  
         my $prefix = 'portfolio';  
         my $path = '/'.$turnindir.'/';  
         my $restitle=&Apache::lonnet::gettitle($symb);  
         $restitle =~ s/\W+/_/g;  
         if ($restitle eq '') {  
             $restitle = ($resurl =~ m{/[^/]+$});  
             if ($restitle eq '') {  
                 $restitle = time;  
             }              }
         }              my $prefix = 'portfolio';
         my @pathitems;              my $formelement = 'HWFILE'.$jspart.'_'.$id;
         my $navmap = Apache::lonnavmaps::navmap->new();              my $fname = &Apache::lonnet::clean_filename($env{'form.'.$formelement.'.filename'});
         if (defined($navmap)) {              my $url = '/uploaded/'.$udom.'/'.$uname.'/'.$prefix.$path.'/'.$fname;
             my $mapres = $navmap->getResourceByUrl($map);              my @stat = &Apache::lonnet::stat_file($url);
             if (ref($mapres)) {              my $conflicts = 0;
                 my $pcslist = $mapres->map_hierarchy();              if (@stat && $stat[0] ne 'no_such_dir') {
                 if ($pcslist ne '') {                  my $current_permissions = 
                     foreach my $pc (split(/,/,$pcslist)) {                      &Apache::lonnet::get_portfile_permissions($udom,$uname);
                         my $res = $navmap->getByMapPc($pc);                  if (ref($current_permissions) eq 'HASH') {
                         if (ref($res)) {                      if (ref($current_permissions->{$path.'/'.$fname}) eq 'ARRAY') {
                             my $title = $res->compTitle();                          foreach my $record (@{$current_permissions->{$path.'/'.$fname}}) {
                             $title =~ s/\W+/_/g;                              if (ref($record) eq 'ARRAY') {
                             if ($title ne '') {                                  next if (($record->[0] eq $symb) && 
                                 push(@pathitems,$title);                                           ($record->[1] eq $crsid));
                             }                                  $conflicts ++;
                               } 
                         }                          }
                     }                      }
                 }                  }
                 my $maptitle = $mapres->compTitle();                  if ($conflicts) {
                 $maptitle =~ s/\W+/_/g;                      $$award = 'FILENAME_INUSE';
                 if ($maptitle ne '') {  
                     push(@pathitems,$maptitle);  
                 }                  }
             } else {  
                 $$award = 'INTERNAL_ERROR';  
             }              }
         } else {              unless ($conflicts) { 
             $$award = 'INTERNAL_ERROR';                  my ($mode,%allfiles,%codebase);
         }                  my $result = &Apache::lonnet::userfileupload($formelement,'',
         push(@pathitems,$restitle);  
         $path .= join('/',@pathitems);  
         my $formelement = 'HWFILE'.$jspart.'_'.$id;  
         my $fname = &Apache::lonnet::clean_filename($env{'form.'.$formelement.'.filename'});  
         my $url = '/uploaded/'.$udom.'/'.$uname.'/'.$prefix.$path.'/'.$fname;  
         my @stat = &Apache::lonnet::stat_file($url);  
         if (@stat && $stat[0] ne 'no_such_dir') {  
             $$award = 'FILENAME_INUSE';  
         } else {  
             my ($mode,%allfiles,%codebase);  
             my $result = &Apache::lonnet::userfileupload($formelement,'',  
                              $prefix.$path,$mode,\%allfiles,\%codebase);                               $prefix.$path,$mode,\%allfiles,\%codebase);
             if ($result =~ m{^/uploaded/}) {                  if ($result =~ m{^/uploaded/}) {
                 $stored_upload = $path.'/'.$fname;                      $stored_upload = $path.'/'.$fname;
                 $Apache::lonhomework::results{"resource.$part.$id.portfiles"} = $stored_upload;                      unless (grep(/^\Q$stored_upload\E$/,@accepted_portfiles)) {
                 push(@tolock,$stored_upload);                          $Apache::lonhomework::results{"resource.$part.$id.portfiles"} = $stored_upload;
             } else {                          push(@tolock,$stored_upload);
                 $$award = 'INTERNAL_ERROR';                      }
                   } else {
                       $$award = 'INTERNAL_ERROR';
                   }
             }              }
         }          }
         delete($env{'form.HWFILE'.$jspart.'_'.$id});          delete($env{'form.HWFILE'.$jspart.'_'.$id});
     }      }
     if (@accepted_portfiles) {      if (@accepted_portfiles) {
         if ($stored_upload) {          if ($Apache::lonhomework::results{"resource.$part.$id.portfiles"}) {
             $Apache::lonhomework::results{"resource.$part.$id.portfiles"} .= ',';              $Apache::lonhomework::results{"resource.$part.$id.portfiles"} .= ',';
         }          }
         $Apache::lonhomework::results{"resource.$part.$id.portfiles"}.=join(',',@accepted_portfiles);          $Apache::lonhomework::results{"resource.$part.$id.portfiles"}.=join(',',@accepted_portfiles);

Removed from v.1.114  
changed lines
  Added in v.1.115


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