--- loncom/publisher/lonupload.pm 2013/06/04 22:20:16 1.62 +++ loncom/publisher/lonupload.pm 2013/07/09 21:35:06 1.65 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to upload files into construction space # -# $Id: lonupload.pm,v 1.62 2013/06/04 22:20:16 raeburn Exp $ +# $Id: lonupload.pm,v 1.65 2013/07/09 21:35:06 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -161,7 +161,7 @@ sub upfile_store { } sub phaseone { - my ($r,$fn,$mode)=@_; + my ($r,$fn,$mode,$uname,$udom)=@_; my $action = '/adm/upload'; if ($mode eq 'testbank') { $action = '/adm/testbank'; @@ -173,7 +173,8 @@ sub phaseone { $env{'form.upfile.filename'}=~s/\\/\//g; $env{'form.upfile.filename'}=~s/^.*\/([^\/]+)$/$1/; if (!$env{'form.upfile.filename'}) { - $r->print('

'.&mt('No upload file specified.').'

'); + $r->print('

'.&mt('No upload file specified.').'

'. + &earlyout($fn,$uname,$udom)); return; } @@ -187,6 +188,26 @@ sub phaseone { $r->print('

'.&mt('Illegal filename.').'

'); return; } + # Check if quota exceeded + my $filesize = length($env{'form.upfile'}); + if (!$filesize) { + $r->print('

'. + &mt('Unable to upload [_1]. (size = [_2] bytes)', + ''.$env{'form.upfile.filename'}.'', + $filesize).'
'. + &mt('Either the file you attempted to upload was empty, or your web browser was unable to read its contents.').'
'. + '

'. + &earlyout($fn,$uname,$udom)); + return; + } + $filesize = int($filesize/1000); #expressed in kb + my $output = &Apache::loncommon::excess_filesize_warning($uname,$udom,'author', + $env{'form.upfile.filename'},$filesize,'upload'); + if ($output) { + $r->print($output.&earlyout($fn,$uname,$udom)); + return; + } + # Split part that I can change from the part that I cannot change my ($fn1,$fn2)=($fn=~/^(\/priv\/[^\/]+\/[^\/]+\/)(.*)$/); # Display additional options for upload @@ -457,6 +478,15 @@ sub phasefour { return $result; } +sub earlyout { + my ($fn,$uname,$udom) = @_; + if ($fn =~ m{^(/priv/$udom/$uname(?:.*)/)[^/]*}) { + return &Apache::lonhtmlcommon::actionbox( + [''.&mt('Return to Directory').'']); + } + return; +} + # ---------------------------------------------------------------- Main Handler sub handler { @@ -544,7 +574,7 @@ ENDJS my ($output,$returnflag) = &phasetwo($r,$fn); $r->print($output); } else { - &phaseone($r,$fn); + &phaseone($r,$fn,undef,$uname,$udom); } $r->print(&Apache::loncommon::end_page());