Diff for /loncom/interface/portfolio.pm between versions 1.175 and 1.176

version 1.175, 2006/12/11 03:43:15 version 1.176, 2007/01/29 21:18:53
Line 147  TABLE Line 147  TABLE
     );      );
     $r->print('<span class="LC_current_location">'.&make_anchor($url,\%anchor_fields,$port_path).'/');      $r->print('<span class="LC_current_location">'.&make_anchor($url,\%anchor_fields,$port_path).'/');
     if (@tree > 1){      if (@tree > 1){
         my $newCurrentPath = '';          my $newCurrentPath = '/';
         for (my $i = 1; $i< @tree; $i++){          for (my $i = 1; $i< @tree; $i++){
             $newCurrentPath .= $tree[$i].'/';              $newCurrentPath .= $tree[$i].'/';
             my %anchor_fields = (              my %anchor_fields = (
                 'selectfile' => $tree[$i],                  'selectfile' => $tree[$i],
                 'currentpath' => '/',                  'currentpath' => $newCurrentPath,
                 'mode' => $env{"form.mode"},                  'mode' => $env{"form.mode"},
                 'fieldname' => $env{"form.fieldname"},                  'fieldname' => $env{"form.fieldname"},
                 'continue' => $env{"form.continue"}                  'continue' => $env{"form.continue"}
Line 1750  ENDSMP Line 1750  ENDSMP
     }      }
 }  }
   
 sub upload {  
     my ($r,$url,$group)=@_;  sub check_for_upload {
     my $fname=$env{'form.uploaddoc.filename'};      my ($path,$fname,$group,$element) = @_;
     my $filesize = (length($env{'form.uploaddoc'})) / 1000; #express in k (1024?)  
     my $disk_quota = &get_quota($group);      my $disk_quota = &get_quota($group);
     $fname=&Apache::lonnet::clean_filename($fname);      my $filesize = (length($env{'form.'.$element})) / 1000; #express in k (1024?)
   
     my $portfolio_root=&get_portfolio_root();      my $portfolio_root = &get_portfolio_root();
     my ($uname,$udom) = &get_name_dom();  
     my $port_path = &get_port_path();      my $port_path = &get_port_path();
       my ($uname,$udom) = &get_name_dom();
     # Fixme --- Move the checking for existing file to LOND error return      # Fixme --- Move the checking for existing file to LOND error return
     my @dir_list=&get_dir_list($portfolio_root);      my @dir_list=&get_dir_list($portfolio_root,$path);
     my $found_file = 0;      my $found_file = 0;
     my $locked_file = 0;      my $locked_file = 0;
     foreach my $line (@dir_list) {      foreach my $line (@dir_list) {
         my ($file_name)=split(/\&/,$line,2);          my ($file_name)=split(/\&/,$line,2);
         if ($file_name eq $fname){          if ($file_name eq $fname){
             $file_name = $env{'form.currentpath'}.$file_name;              $file_name = $path.$file_name;
             $file_name = &prepend_group($file_name);              $file_name = &prepend_group($file_name);
             $found_file = 1;              $found_file = 1;
             if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {              if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {
Line 1776  sub upload { Line 1775  sub upload {
         }          }
     }      }
     my $current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$portfolio_root);      my $current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$portfolio_root);
   
     if (($current_disk_usage + $filesize) > $disk_quota){      if (($current_disk_usage + $filesize) > $disk_quota){
         $r->print('<span class="LC_error">Unable to upload <strong>'.$fname.' (size = '.$filesize.' kilobytes)</strong>. Disk quota will be exceeded.</span>'.          my $msg = '<span class="LC_error">Unable to upload <strong>'.$fname.' (size = '.$filesize.' kilobytes)</strong>. Disk quota will be exceeded.</span>'.
                   '<br />Disk quota is '.$disk_quota.' kilobytes. Your current disk usage is '.$current_disk_usage.' kilobytes.');      '<br />Disk quota is '.$disk_quota.' kilobytes. Your current disk usage is '.$current_disk_usage.' kilobytes.';
         $r->print(&done('Back',$url));   return ('will_exceed_quota',$msg);
     }       } elsif ($found_file) {
     elsif ($found_file){          if ($locked_file) {
         if ($locked_file){              my $msg = '<span class="LC_error">'.'Unable to upload <strong>'.$fname.'</strong>, a <strong>locked</strong> file by that name was found in <strong>'.$port_path.$path.'</strong></span>'.
             $r->print('<span class="LC_error">'.'Unable to upload <strong>'.$fname.'</strong>, a <strong>locked</strong> file by that name was found in <strong>'.$port_path.$env{'form.currentpath'}.'</strong></span>'.   '<br />You will be able to rename or delete existing '.$fname.' after a grade has been assigned.';
                   '<br />You will be able to rename or delete existing '.$fname.' after a grade has been assigned.');      return ('file_locked',$msg);
             $r->print(&done('Back',$url));         } else {
         } else {                 my $msg = '<span class="LC_error">'.'Unable to upload <strong>'.$fname.'</strong>, a file by that name was found in <strong>'.$port_path.$path.'</strong></span>'.
             $r->print('<span class="LC_error">'.'Unable to upload <strong>'.$fname.'</strong>, a file by that name was found in <strong>'.$port_path.$env{'form.currentpath'}.'</strong></span>'.   '<br />To upload, rename or delete existing '.$fname.' in '.$port_path.$path;
                   '<br />To upload, rename or delete existing '.$fname.' in '.$port_path.$env{'form.currentpath'});      return ('file_exists',$msg);
             $r->print(&done('Back',$url));   }
         }      }
     } else {  }
         my $result=&Apache::lonnet::userfileupload('uploaddoc','',  
          $port_path.$env{'form.currentpath'});  sub upload {
         if ($result !~ m|^/uploaded/|) {      my ($r,$url,$group)=@_;
             $r->print('<span class="LC_error">'.'An errror occured ('.$result.      my $fname=&Apache::lonnet::clean_filename($env{'form.uploaddoc.filename'});
               ') while trying to upload '.&display_file().'</span><br />');  
     $r->print(&done('Back',$url));      my ($state,$msg) = &check_for_upload($env{'form.currentpath'},
         } else {   $fname,$group,'uploaddoc');
             $r->print(&done(undef,$url));  
         }      if ($state eq 'will_exceed_quota'
    || $state eq 'file_locked'
    || $state eq 'file_exists' ) {
    $r->print($msg.&done('Back',$url));
    return;
       }
   
       my $port_path = &get_port_path();
       my (%allfiles,%codebase,$mode);
       if ($env{'form.uploaddoc.filename'} =~ m/(\.htm|\.html|\.shtml)$/i) {
    $mode = 'parse';
   
       }
       my $result=
    &Apache::lonnet::userfileupload('uploaddoc','',
    $port_path.$env{'form.currentpath'},
    $mode,\%allfiles,\%codebase);
       if ($result !~ m|^/uploaded/|) {
    $r->print('<span class="LC_error">'.'An errror occured ('.$result.
     ') while trying to upload '.&display_file().'</span><br />');
    $r->print(&done('Back',$url));
       } else {
    if (%allfiles) {
       my $state = <<STATE;
       <input type="hidden" name="action"      value="upload_embedded" />
       <input type="hidden" name="currentpath" value="$env{'form.currentpath'}" />
       <input type="hidden" name="fieldname"   value="$env{'form.fieldname'}" />
       <input type="hidden" name="mode"        value="$env{'form.mode'}" />
   STATE
       $r->print("<p>Completed upload of the file. This file contained references to other files. You can upload these now: </p>");
       $r->print(&Apache::londocs::ask_for_embedded_content('/adm/portfolio',$state,\%allfiles,\%codebase,{'error_on_invalid_names' => 1}));
       $r->print('<p>Or '.&done('Return to directory listing',$url).'</p>');
    } else {
       $r->print(&done(undef,$url));
    }
     }      }
 }  }
   
   sub upload_embedded {
       my ($r,$url,$group)=@_;
       for (my $i=0; $i<$env{'form.number_embedded_items'}; $i++) {
    next if (!exists($env{'form.embedded_item_'.$i.'.filename'}));
   
    $env{'form.embedded_orig_'.$i} = 
       &unescape($env{'form.embedded_orig_'.$i});
    my ($path,$fname) = 
       ($env{'form.embedded_orig_'.$i} =~ m{(.*/)([^/]*)});
    $path = $env{'form.currentpath'}.$path;
    $fname = &Apache::lonnet::clean_filename($fname);
   
    my ($state,$msg) = &check_for_upload($path,$fname,$group,
        'embedded_item_'.$i);
   
    if ($state eq 'will_exceed_quota'
       || $state eq 'file_locked'
       || $state eq 'file_exists' ) {
       $r->print($msg);
       next;
    }
   
    my $port_path = &get_port_path();
    my $src_path = $env{'form.embedded_orig_'.$i};
    $env{'form.embedded_item_'.$i.'.filename'}=$fname;
   
    my $result=
       &Apache::lonnet::userfileupload('embedded_item_'.$i,'',
       $port_path.$path);
    if ($result !~ m|^/uploaded/|) {
       $r->print('<span class="LC_error">'.'An errror occured ('.$result.
         ') while trying to upload '.&display_file($path,$fname).'</span><br />');
       next;
    } else {
       $r->print("<p> Uploaded ".
         &display_file($port_path.$path,$fname).'</p>');
    }
       }
       $r->print(&done(undef,$url));
   }
   
 sub lock_info {  sub lock_info {
     my ($r,$url,$group) = @_;      my ($r,$url,$group) = @_;
     my ($uname,$udom) = &get_name_dom();      my ($uname,$udom) = &get_name_dom();
Line 1921  sub get_group_quota { Line 1996  sub get_group_quota {
 }   } 
   
 sub get_dir_list {  sub get_dir_list {
     my ($portfolio_root) = @_;      my ($portfolio_root,$path) = @_;
       $path ||= $env{'form.currentpath'};
     my ($uname,$udom) = &get_name_dom();      my ($uname,$udom) = &get_name_dom();
     return &Apache::lonnet::dirlist($env{'form.currentpath'},      return &Apache::lonnet::dirlist($path,$udom,$uname,$portfolio_root);
                                           $udom,$uname,$portfolio_root);  
 }  }
   
 sub get_name_dom {  sub get_name_dom {
Line 2162  sub handler { Line 2237  sub handler {
         } else {          } else {
             &missing_priv($r,$url,'upload');              &missing_priv($r,$url,'upload');
         }          }
       } elsif ($env{'form.action'} eq 'upload_embedded') {
    if ($can_upload) {
       &upload_embedded($r,$url,$group);
           } else {
               &missing_priv($r,$url,'upload');
           }
     } elsif ($env{'form.action'} eq 'delete' && $env{'form.confirmed'}) {      } elsif ($env{'form.action'} eq 'delete' && $env{'form.confirmed'}) {
         if ($can_delete) {          if ($can_delete) {
     &delete_confirmed($r,$url,$group);      &delete_confirmed($r,$url,$group);

Removed from v.1.175  
changed lines
  Added in v.1.176


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