--- loncom/interface/portfolio.pm 2010/11/28 00:04:05 1.231 +++ loncom/interface/portfolio.pm 2018/09/14 21:01:02 1.254.2.3 @@ -1,7 +1,7 @@ # The LearningOnline Network # portfolio browser # -# $Id: portfolio.pm,v 1.231 2010/11/28 00:04:05 raeburn Exp $ +# $Id: portfolio.pm,v 1.254.2.3 2018/09/14 21:01:02 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -63,7 +63,7 @@ sub group_form_data { return $output; } -# receives a file name and path stub from username/userfiles/portfolio/ +# receives a filename and path stub from username/userfiles/portfolio/ # returns an anchor tag consisting encoding filename and currentpath sub make_anchor { my ($url, $anchor_fields, $inner_text) = @_; @@ -98,7 +98,7 @@ sub display_common { my $help_fileupload = &Apache::loncommon::help_open_topic('Portfolio AddFiles'); my $help_createdir = &Apache::loncommon::help_open_topic('Portfolio CreateDirectory'); my $help_portfolio = &Apache::loncommon::help_open_topic('Portfolio About', &mt('Help on the portfolio')); - $r->print(&display_usage($group)); + $r->print(&display_portfolio_usage($group,$help_portfolio)); my $parse_check; if (!&suppress_embed_prompt()) { $parse_check = <<"END"; @@ -112,7 +112,6 @@ sub display_common { END } - $r->print('
'.$help_portfolio); # Upload File $r->print('
' .'
' @@ -122,6 +121,7 @@ END .'' .'' .'' + .'' .'' .'' .'' @@ -139,6 +139,7 @@ END .''.$groupitem .'' .'' + .'' .'' .'' .'' @@ -147,7 +148,6 @@ END .'
' .'
' ); - $r->print('
'); } # end "if can_upload" my @tree = split (/\//,$current_path); @@ -155,6 +155,7 @@ END 'selectfile' => $port_path, 'currentpath' => '/', 'mode' => $env{"form.mode"}, + 'symb' => $env{"form.symb"}, 'fieldname' => $env{"form.fieldname"}, 'continue' => $env{"form.continue"} ); @@ -168,6 +169,7 @@ END 'selectfile' => $tree[$i], 'currentpath' => $newCurrentPath, 'mode' => $env{"form.mode"}, + 'symb' => $env{"form.symb"}, 'fieldname' => $env{"form.fieldname"}, 'continue' => $env{"form.continue"} ); @@ -177,53 +179,29 @@ END $r->print(''); $r->print(&Apache::loncommon::help_open_topic('Portfolio ChangeDirectory')); &Apache::lonhtmlcommon::store_recent($namespace,$current_path,$current_path); - $r->print('
print('">'. &Apache::lonhtmlcommon::select_recent($namespace,'currentpath', 'this.form.submit();')); $r->print("
"); } -sub display_usage { - my ($group) = @_; +sub display_portfolio_usage { + my ($group,$helpitem) = @_; my $disk_quota = &get_quota($group); my $getpropath = 1; my $portfolio_root = &get_portfolio_root(); my ($uname,$udom) = &get_name_dom($group); my $current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath); - my $usage = $current_disk_usage/1000; - my $quota = $disk_quota/1000; - my $percent; - if ($disk_quota == 0) { - $percent = 100.0; - } else { - $percent = 100*($current_disk_usage/$disk_quota); - } - $usage = sprintf("%.2f",$usage); - $quota = sprintf("%.2f",$quota); - $percent = sprintf("%.0f",$percent); - my ($color,$cssclass); - if ($percent <= 60) { - $color = '#00A000'; - } elsif ($percent > 60 && $percent < 90) { - $color = '#FFD300'; - $cssclass = 'class="LC_warning"'; - } elsif( $percent >= 90) { - $color = '#FF0000'; - $cssclass = 'class="LC_error"'; - } - my $prog_width = $percent; - if ($prog_width > 100) { - $prog_width = 100; - } - my $disk_meter = ' -
'.&mt('Currently using [_1] of the [_2] available.',$usage.' MB ('.$percent.'%)',$quota.' MB')."\n". -'
'."\n". -'
'."\n". -'
'."\n". -'
'; - return &Apache::loncommon::head_subbox($disk_meter); + return &Apache::loncommon::head_subbox( + '
' + .$helpitem + .'
' + .'
' + .&Apache::lonhtmlcommon::display_usage($current_disk_usage, + $disk_quota,'portfolio') + .'
'); } sub display_directory_line { @@ -379,22 +357,24 @@ sub display_directory { my $href_edit_location="/editupload/$udom/$uname/$port_path".$current_path; my @dir_lines; my %versioned; - foreach my $dir_line (sort - { - my ($afile)=split('&',$a,2); - my ($bfile)=split('&',$b,2); - return (lc($afile) cmp lc($bfile)); - } (@$dir_list)) { - my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); - $filename =~ s/\s+$//; - my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename); - if ($version) { - my $fullpath = &prepend_group($current_path.$fname.'.'.$extension); - push(@{ $versioned{$fullpath} }, - [$filename,$dom,$testdir,$size,$mtime,$obs,]); - } else { - push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]); - } + if (ref($dir_list) eq 'ARRAY') { + foreach my $dir_line (sort + { + my ($afile)=split('&',$a,2); + my ($bfile)=split('&',$b,2); + return (lc($afile) cmp lc($bfile)); + } (@{$dir_list})) { + my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); + $filename =~ s/\s+$//; + my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename); + if ($version) { + my $fullpath = &prepend_group($current_path.$fname.'.'.$extension); + push(@{ $versioned{$fullpath} }, + [$filename,$dom,$testdir,$size,$mtime,$obs,]); + } else { + push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]); + } + } } my $zerobyte; foreach my $dir_line (@dir_lines) { @@ -445,6 +425,7 @@ sub display_directory { 'selectfile' => $filename.'/', 'currentpath' => $current_path.$filename.'/', 'mode' => $env{"form.mode"}, + 'symb' => $env{"form.symb"}, 'fieldname' => $env{"form.fieldname"}, 'continue' => $env{"form.continue"} ); @@ -552,10 +533,11 @@ sub display_directory { $r->print(' +


- +

'); @@ -631,17 +613,19 @@ sub display_file { } sub done { - my ($message,$url)=@_; - unless (defined $message) { - $message='Done'; + my ($linktext,$url)=@_; + unless (defined($linktext)) { + $linktext='Return to directory'; } my %anchor_fields = ( 'showversions' => $env{'form.showversions'}, 'currentpath' => $env{'form.currentpath'}, 'fieldname' => $env{'form.fieldname'}, + 'symb' => $env{'form.symb'}, 'mode' => $env{'form.mode'} ); - my $result = '

'.&make_anchor($url,\%anchor_fields,&mt($message)).'

'; + my $result = &Apache::lonhtmlcommon::actionbox( + [&make_anchor($url,\%anchor_fields,&mt($linktext))]); return $result; } @@ -653,15 +637,19 @@ sub delete { my @files=&Apache::loncommon::get_env_multiple('form.selectfile'); my ($uname,$udom) = &get_name_dom($group); if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { - $r->print(&mt('The file is locked and cannot be deleted.').'
'); - $r->print(&done('Back',$url)); + $r->print( + '

' + .&mt('The file is locked and cannot be deleted.') + .'

' + .&done(undef,$url) + ); } else { if (scalar(@files)) { &open_form($r,$url); $r->print('

'.&mt('Delete [_1]?',&display_file(undef,\@files)).'

'); &close_form($r,$url); } else { - $r->print("No file was checked to delete.
"); + $r->print('

'.&mt('No file was checked to delete.').'

'); $r->print(&done(undef,$url)); } } @@ -675,18 +663,21 @@ sub delete_confirmed { my $port_path = &get_port_path(); my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom, $uname); + my @msg; foreach my $delete_file (@files) { - $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path. - $env{'form.currentpath'}. - $delete_file); + $result = + &Apache::lonnet::removeuserfile( + $uname,$udom,$port_path. + $env{'form.currentpath'}. + $delete_file); if ($result ne 'ok') { - $r->print('' - .&mt('An error occurred ([_1]) while trying to delete [_2].' - ,$result,&display_file(undef, $delete_file)) - .'

'); - } else { - $r->print(&mt('File: [_1] deleted.', - &display_file(undef,$delete_file))); + push(@msg, &Apache::lonhtmlcommon::confirm_success( + &mt('An error occurred ([_1]) while trying to delete [_2].' + ,$result,&display_file(undef, $delete_file)),1)); + } else { + push(@msg, &Apache::lonhtmlcommon::confirm_success( + &mt('File: [_1] deleted.' + ,&display_file(undef,$delete_file)))); my $file_name = $env{'form.currentpath'}.$delete_file; $file_name = &prepend_group($file_name); my %access_controls = @@ -702,23 +693,24 @@ sub delete_confirmed { &Apache::lonnet::modify_access_controls($file_name,\%changes, $udom,$uname); if ($outcome ne 'ok') { - $r->print('
'.&mt("An error occurred ([_1]) while ". - "trying to delete access controls for the file.",$outcome). - '

'); + push(@msg, &Apache::lonhtmlcommon::confirm_success( + &mt('An error occurred ([_1]) while '. + 'trying to delete access controls for the file.',$outcome),1)); } else { if ($deloutcome eq 'ok') { - $r->print('
'.&mt('Access controls also deleted for the file.').'

'); + push(@msg, &mt('Access controls also deleted for the file.')); # FIXME: Does the user really need this message? } else { - $r->print(''.'
'. - &mt("An error occurred ([_1]) while ". - "trying to delete access controls for the file.",$deloutcome). - '


'); + push(@msg, &Apache::lonhtmlcommon::confirm_success( + &mt('An error occurred ([_1]) while '. + 'trying to delete access controls for the file.' + ,$deloutcome),1)); } } } } } } + $r->print(&Apache::loncommon::confirmwrapper(join('
',@msg))); $r->print(&done(undef,$url)); } @@ -738,12 +730,15 @@ sub delete_dir_confirmed { my $port_path = &get_port_path(); my $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path. $directory_name); - + if ($result ne 'ok') { - $r->print('' - .&mt('An error occurred (dir) ([_1]) while trying to delete [_2].' - ,$result,$directory_name) - .'
'); + $r->print( + &Apache::loncommon::confirmwrapper( + &Apache::lonhtmlcommon::confirm_success( + &mt('An error occurred (dir) ([_1]) while trying to delete [_2].' + ,$result,$directory_name),1))); + $r->print(&done(undef,$url)); + return; } else { # now remove from recent &Apache::lonhtmlcommon::remove_recent($namespace,[$directory_name.'/']); @@ -754,6 +749,10 @@ sub delete_dir_confirmed { } $env{'form.currentpath'} = $directory_name; } + $r->print( + &Apache::loncommon::confirmwrapper( + &Apache::lonhtmlcommon::confirm_success( + &mt('Directory successfully deleted')))); $r->print(&done(undef,$url)); } @@ -763,7 +762,11 @@ sub rename { my ($uname,$udom) = &get_name_dom($group); $file_name = &prepend_group($file_name); if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { - $r->print("The file is locked and cannot be renamed.
"); + $r->print( + '

' + .&mt('The file is locked and cannot be renamed.') + .'

' + ); $r->print(&done(undef,$url)); } else { &open_form($r,$url); @@ -778,13 +781,32 @@ sub rename_confirmed { my $filenewname=&Apache::lonnet::clean_filename($env{'form.filenewname'}); my ($uname,$udom) = &get_name_dom($group); my $port_path = &get_port_path(); + + # Display warning in case of filename cleaning has changed the filename + if ($filenewname ne $env{'form.filenewname'}) { + $r->print( + '

' + .&mt('Invalid characters') + .'
' + .&mt('The new filename was changed from [_1] to [_2].' + ,''.&display_file('',$env{'form.filenewname'}).'' + ,''.&display_file('',$filenewname).'') + .'

' + ); + + } + + # Filename empty? if ($filenewname eq '') { - $r->print(''. - &mt("Error: no valid filename was provided to rename to."). - '
'); - $r->print(&done(undef,$url)); - return; + $r->print( + &Apache::loncommon::confirmwrapper( + &Apache::lonhtmlcommon::confirm_success( + &mt('Error: no valid filename was provided to rename to.'),1))); + $r->print(&done(undef,$url)); + return; } + + # Rename the file my $chg_access; my $result= &Apache::lonnet::renameuserfile($uname,$udom, @@ -793,18 +815,20 @@ sub rename_confirmed { if ($result eq 'ok') { $chg_access = &access_for_renamed($filenewname,$group,$udom,$uname); } else { - $r->print(''. - &mt('An error occurred ([_1]) while trying to rename [_2] to [_3].' - ,$result,&display_file(),&display_file('',$filenewname)) - .'
'); + $r->print( + &Apache::loncommon::confirmwrapper( + &Apache::lonhtmlcommon::confirm_success( + &mt('An error occurred ([_1]) while trying to rename [_2] to [_3].' + ,$result,&display_file(),&display_file('',$filenewname)) + ,1))); + $r->print(&done(undef,$url)); return; } - if ($filenewname ne $env{'form.filenewname'}) { - $r->print(&mt("The new file name was changed from:
[_1] to [_2]", - ''.&display_file('',$env{'form.filenewname'}).'', - ''.&display_file('',$filenewname).'')); - } $r->print($chg_access); + $r->print( + &Apache::loncommon::confirmwrapper( + &Apache::lonhtmlcommon::confirm_success( + &mt('File successfully renamed')))); $r->print(&done(undef,$url)); } @@ -869,7 +893,13 @@ sub display_access { my $aclcount = keys(%access_controls); my ($header,$info); if ($action eq 'chgaccess') { - $header = '

'.&mt('Allowing others to retrieve file: [_1]',$port_path.$env{'form.currentpath'}.$env{'form.access'}).'

'; + $header = + '

' + .&mt('Allowing others to retrieve file: [_1]' + ,'' + .$port_path.$env{'form.currentpath'}.$env{'form.access'} + .'') + .'

'; $info .= &mt('Access to this file by others can be set to be one or more of the following types: public, passphrase-protected or conditional.'); $info .= '