--- loncom/interface/portfolio.pm 2007/06/21 20:25:18 1.185 +++ loncom/interface/portfolio.pm 2009/01/03 19:39:37 1.196.2.2 @@ -1,7 +1,7 @@ # The LearningOnline Network # portfolio browser # -# $Id: portfolio.pm,v 1.185 2007/06/21 20:25:18 banghart Exp $ +# $Id: portfolio.pm,v 1.196.2.2 2009/01/03 19:39:37 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -80,7 +80,7 @@ sub make_anchor { my $dirptr=16384; sub display_common { - my ($r,$url,$current_path,$is_empty,$dir_list,$can_upload)=@_; + my ($r,$url,$current_path,$is_empty,$dir_list,$can_upload,$group)=@_; my $namespace = &get_namespace(); my $port_path = &get_port_path(); if ($can_upload) { @@ -93,15 +93,27 @@ sub display_common { 'Upload file to current directory:', 'createdir' => 'Create Subdirectory', 'createdir_label' => - 'Create subdirectory in current directory:'); + 'Create subdirectory in current directory:', + 'parse' => 'If HTML file, upload embedded images/multimedia/css/linked files' + ); my $escuri = &HTML::Entities::encode($r->uri,'&<>"'); my $help_fileupload = &Apache::loncommon::help_open_topic('Portfolio AddFiles'); my $help_createdir = &Apache::loncommon::help_open_topic('Portfolio CreateDirectory'); - - # FIXME: This line should be deleted once Portfolio uses breadcrumbs - $r->print(&Apache::loncommon::help_open_topic('Portfolio About', 'Help on the portfolio')); - - $r->print(<<"TABLE"); + my $help_portfolio = &Apache::loncommon::help_open_topic('Portfolio About', &mt('Help on the portfolio')); + $r->print(&display_usage($group)); + my $parse_check; + if (!&suppress_embed_prompt()) { + $parse_check = <<"END"; +
+ + + +END + } + $r->print(<<"TABLE"); +$help_portfolio @@ -125,7 +139,7 @@ sub display_common { '); $r->print(''); } else { # this is a graded or handed back file - my ($user,$domain) = &get_name_dom(); + my ($user,$domain) = &get_name_dom($env{'form.group'}); my $permissions_hash = &Apache::lonnet::get_portfile_permissions($domain,$user); if (defined($$permissions_hash{$fullpath})) { foreach my $array_item (@{$$permissions_hash{$fullpath}}) { @@ -212,7 +268,7 @@ sub display_directory_line { $r->print(''); $r->print(''); if ($select_mode ne 'true') { - $r->print(''); @@ -1214,7 +1273,7 @@ sub standard_settings { $r->print(&Apache::loncommon::end_data_table_row()); $r->print(&Apache::loncommon::end_data_table()); $r->print(''.$role_selects.''); + $r->print(''.$role_selects.''); } $r->print('
@@ -115,7 +127,9 @@ sub display_common { - $help_fileupload + +$help_fileupload +$parse_check
- $groupitem + $groupitem @@ -170,6 +184,48 @@ TABLE $r->print("
"); } +sub display_usage { + my ($group) = @_; + 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 $disk_meter; +} + sub display_directory_line { my ($r,$select_mode, $filename, $mtime, $size, $css_class, $line, $access_controls, $curr_access, $now, $version_flag, @@ -183,7 +239,7 @@ sub display_directory_line { $r->print('
'.$version_flag.''.$size.''.&Apache::lonlocal::locallocaltime($mtime).''. + $r->print(''. &mt($curr_access).'   '); my %anchor_fields = ( 'access' => $filename, @@ -231,7 +287,7 @@ sub display_directory { my $select_mode; my $checked_files; my $port_path = &get_port_path(); - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); my $access_admin_text = &mt('View Status'); if ($can_setacl) { $access_admin_text = &mt('View/Change Status'); @@ -267,15 +323,16 @@ sub display_directory { } else { $r->print('
'); $r->print(&Apache::loncommon::help_open_topic('Portfolio FileList', - 'Using the portfolio file list')); + &mt('Using the portfolio file list'))); $r->print(''. - ''); + '' + .'' + .'' + .'' + .'' + .'' + .'' + .''); } $r->print("\n".&group_form_data()."\n"); @@ -338,7 +395,7 @@ sub display_directory { undef($colspan); } $r->print(''); - $r->print(''); + $r->print(''); my %anchor_fields = ( 'selectfile' => $filename.'/', 'currentpath' => $current_path.$filename.'/', @@ -362,7 +419,7 @@ sub display_directory { my %anchor_fields = ( 'lockinfo' => $fullpath ); - $line.=''; + $line.=''; $css_class= 'LC_browser_file_locked'; } else { if (!$can_modify) { @@ -380,7 +437,7 @@ sub display_directory { 'rename' => $filename, currentpath => $current_path ); - $line .= &make_anchor($url,\%anchor_fields,'Rename'); + $line .= &make_anchor($url,\%anchor_fields,&mt('Rename')); $line .= '
Actions'. - &Apache::loncommon::help_open_topic('Portfolio FileAction'). - '  Name'. - &Apache::loncommon::help_open_topic('Portfolio OpenFile'). - 'SizeLast ModifiedCurrent Access Status'. - &Apache::loncommon::help_open_topic('Portfolio ShareFile'). - '
'.&mt('Actions'). &Apache::loncommon::help_open_topic('Portfolio FileAction').'  '.&mt('Name').&Apache::loncommon::help_open_topic('Portfolio OpenFile').''.&mt('Size').''.&mt('Last Modified').''.&mt('Current Access Status').&Apache::loncommon::help_open_topic('Portfolio ShareFile').'
'.&mt('closed folder').'Go to ...'.&mt('Go to ...').''.&make_anchor($url,\%anchor_fields,'Locked').''.&make_anchor($url,\%anchor_fields,&mt('Locked')).''.&make_anchor($href_edit_location.$filename.'.meta',\%anchor_fields,$cat); # ''.$cat.''; } @@ -449,7 +506,7 @@ sub display_directory { $r->print('
'); if ($can_delete) { $r->print(' - '. + '. &Apache::loncommon::help_open_topic('Portfolio DeleteFile').' @@ -530,19 +587,19 @@ sub done { } sub delete { - my ($r,$url)=@_; + my ($r,$url,$group)=@_; my @check; my $file_name = $env{'form.currentpath'}.$env{'form.selectfile'}; $file_name = &prepend_group($file_name); my @files=&Apache::loncommon::get_env_multiple('form.selectfile'); - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { - $r->print("The file is locked and cannot be deleted.
"); + $r->print(&mt('The file is locked and cannot be deleted.').'
'); $r->print(&done('Back',$url)); } else { if (scalar(@files)) { &open_form($r,$url); - $r->print('

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

'); + $r->print('

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

'); &close_form($r,$url); } else { $r->print("No file was checked to delete.
"); @@ -555,7 +612,7 @@ sub delete_confirmed { my ($r,$url,$group)=@_; my @files=&Apache::loncommon::get_env_multiple('form.selectfile'); my $result; - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); my $port_path = &get_port_path(); my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom, $uname); @@ -564,10 +621,10 @@ sub delete_confirmed { $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)). - '

'); + $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))); @@ -609,23 +666,25 @@ sub delete_confirmed { sub delete_dir { my ($r,$url)=@_; &open_form($r,$url); - $r->print('

'.&mt('Delete').' '.&display_file().'?

'); + $r->print('

'.&mt('Delete [_1]?',&display_file()).'

'); &close_form($r,$url); } sub delete_dir_confirmed { - my ($r,$url)=@_; + my ($r,$url,$group)=@_; my $directory_name = $env{'form.currentpath'}; $directory_name =~ s|/$||; # remove any trailing slash - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); my $namespace = &get_namespace(); my $port_path = &get_port_path(); my $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path. $directory_name); if ($result ne 'ok') { - $r->print(' An error occurred (dir) ('.$result. - ') while trying to delete '.$directory_name.'
'); + $r->print('' + .&mt('An error occurred (dir) ([_1]) while trying to delete [_2].' + ,$result,$directory_name) + .'
'); } else { # now remove from recent &Apache::lonhtmlcommon::remove_recent($namespace,[$directory_name.'/']); @@ -640,17 +699,17 @@ sub delete_dir_confirmed { } sub rename { - my ($r,$url)=@_; + my ($r,$url,$group)=@_; my $file_name = $env{'form.currentpath'}.$env{'form.rename'}; - my ($uname,$udom) = &get_name_dom(); + 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(&done(undef,$url)); } else { &open_form($r,$url); - $r->print('

'.&mt('Rename').' '.&display_file().' to - ?

'); + $r->print('

'.&mt('Rename [_1] to [_2]?', &display_file() + , '').'

'); &close_form($r,$url); } } @@ -658,7 +717,7 @@ sub rename { sub rename_confirmed { my ($r,$url,$group)=@_; my $filenewname=&Apache::lonnet::clean_filename($env{'form.filenewname'}); - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); my $port_path = &get_port_path(); if ($filenewname eq '') { $r->print(''. @@ -676,9 +735,9 @@ sub rename_confirmed { $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)).'
'); + &mt('An error occurred ([_1]) while trying to rename [_2] to [_3].' + ,$result,&display_file(),&display_file('',$filenewname)) + .'

'); return; } if ($filenewname ne $env{'form.filenewname'}) { @@ -742,7 +801,7 @@ sub access_for_renamed { sub display_access { my ($r,$url,$group,$can_setacl,$port_path,$action) = @_; - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); my $file_name = $env{'form.currentpath'}.$env{'form.access'}; $file_name = &prepend_group($file_name); my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom, @@ -757,13 +816,13 @@ sub display_access { $info .= '
  • '.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.'); $info .= '
  • '.&explain_conditionals(); $info .= '
  • '. - &mt('A listing of files viewable without log-in is available at: ')."http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme/portfolio.
    "; + &mt('A listing of files viewable without log-in is available at: ')."".&Apache::lonnet::absolute_url($ENV{'SERVER_NAME'})."/adm/$udom/$uname/aboutme/portfolio.
    "; if ($group eq '') { $info .= &mt("For logged in users a 'Display file listing' link will also appear (when there are viewable files) on your personal information page:"); } else { $info .= &mt("For logged in users a 'Display file listing' link will also appear (when there are viewable files) on the course information page:"); } - $info .= "
    http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme
    "; + $info .= "
    ".&Apache::lonnet::absolute_url($ENV{'SERVER_NAME'})."/adm/$udom/$uname/aboutme
    "; if ($group ne '') { $info .= &mt("Users with privileges to edit course contents may add a course information page to a course using the 'Course Info' button in DOCS").'
    '; } @@ -774,14 +833,14 @@ sub display_access { if ($can_setacl) { &open_form($r,$url); $r->print($header.$info); - $r->print('
    '.&Apache::loncommon::help_open_topic('Portfolio ShareFile SetAccess', 'Help on setting up share access')); - $r->print(&Apache::loncommon::help_open_topic('Portfolio ShareFile ChangeSetting', 'Help on changing settings')); - $r->print(&Apache::loncommon::help_open_topic('Portfolio ShareFile StopAccess', 'Help on removing share access')); + $r->print('
    '.&Apache::loncommon::help_open_topic('Portfolio ShareFile SetAccess', &mt('Help on setting up share access'))); + $r->print(&Apache::loncommon::help_open_topic('Portfolio ShareFile ChangeSetting', &mt('Help on changing settings'))); + $r->print(&Apache::loncommon::help_open_topic('Portfolio ShareFile StopAccess', &mt('Help on removing share access'))); &access_setting_table($r,$url,$file_name,$access_controls{$file_name}, $action); my $button_text = { 'continue' => &mt('Proceed'), - 'cancel' => &mt('Back to directory listing'), + 'cancel' => &mt('Return to directory'), }; &close_form($r,$url,$button_text); } else { @@ -809,7 +868,7 @@ sub view_access_settings { $todisplay{$scope}{$key} = $$access_controls{$key}; } if ($aclcount) { - $r->print(&mt('

    Current access controls defined for this file:

    ')); + $r->print('

    '.&mt('Current access controls defined for this file:').'

    '); $r->print(&Apache::loncommon::start_data_table()); $r->print(&Apache::loncommon::start_data_table_header_row()); $r->print('
    '.&mt('Access control').''.&mt('Dates available'). @@ -820,12 +879,12 @@ sub view_access_settings { &build_access_summary($r,$count,$chg,%todisplay); $r->print(&Apache::loncommon::end_data_table()); } else { - $r->print(&mt('No access control settings currently exist for this file.
    ' )); + $r->print(&mt('No access control settings currently exist for this file.').'
    '); } my %anchor_fields = ( 'currentpath' => $env{'form.currentpath'} ); - $r->print('
    '.&make_anchor($url, \%anchor_fields, &mt('Return to directory listing'))); + $r->print('
    '.&make_anchor($url, \%anchor_fields, &mt('Return to directory'))); return; } @@ -956,7 +1015,7 @@ sub update_access { $r->print('

    '.&mt('Allowing others to retrieve file: [_1]', $port_path.$file_name).'

    '."\n"); $file_name = &prepend_group($file_name); - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); my ($errors,$outcome,$deloutcome,$new_values,$translation); if ($totalprocessed) { ($outcome,$deloutcome,$new_values,$translation) = @@ -1030,7 +1089,7 @@ sub update_access { &open_form($r,$url); foreach my $newitem ('course','domains','users') { if ($env{'form.new'.$newitem} > 0) { - $r->print('
    '.&mt('Add new [_1]-based access control for portfolio file: [_2]',$newitem,$env{'form.currentpath'}.$env{'form.selectfile'}).'

    '); + $r->print('
    '.&mt('Add new [_1]-based access control for portfolio file: [_2]',&mt($newitem),$env{'form.currentpath'}.$env{'form.selectfile'}).'

    '); $firstitem = $totalnew; $lastitem = $totalnew + $env{'form.new'.$newitem}; $totalnew = $lastitem; @@ -1050,7 +1109,7 @@ sub update_access { ); $r->print('
    '.&make_anchor($url, \%anchor_fields, &mt('Display all access settings for this file'))); delete $anchor_fields{'access'}; - $r->print('     '.&make_anchor($url,\%anchor_fields,&mt('Return to directory listing'))); + $r->print('     '.&make_anchor($url,\%anchor_fields,&mt('Return to directory'))); } return; } @@ -1198,7 +1257,7 @@ sub access_setting_table { sub standard_settings { my ($r,$now,$then,$url,$filename,$acl_count,$start,$end,$public,$publicnum, $publictext,$guest,$guestnum,$guesttext,$access_controls,%conditionals)=@_; - $r->print('

    '.&mt('Public access: [_1]',$publictext).'

    '); + $r->print('

    '.&mt('Public access: [_1]',&mt($publictext)).'

    '); $r->print(&Apache::loncommon::start_data_table()); $r->print(&Apache::loncommon::start_data_table_header_row()); $r->print('
    '.&mt('Action').''.&mt('Dates available').' '); - $r->print('

    '.&mt('Passphrase-protected access: [_1]',$guesttext).'

    '); + $r->print('

    '.&mt('Passphrase-protected access: [_1]',&mt($guesttext)).'

    '); $r->print(&Apache::loncommon::start_data_table()); $r->print(&Apache::loncommon::start_data_table_header_row()); $r->print('
    '.&mt('Action').''.&mt('Dates available'). @@ -1260,7 +1319,7 @@ sub standard_settings { 'action' => 'chgconditions', 'currentpath' => $env{'form.currentpath'}, ); - $r->print('

    '.&mt('Conditional access: [_1]',$conditionstext).'

    '); + $r->print('

    '.&mt('Conditional access: [_1]',&mt($conditionstext)).'

    '); if ($numconditionals > 0) { my $count = 1; my $chg = 'none'; @@ -1310,7 +1369,7 @@ sub access_element { my $title = $type; $title =~ s/s$//; $title =~ s/^(\w)/uc($1)/e; - $r->print('

    '.&mt('[_1]-based conditional access: ',$title)); + $r->print('

    '.&mt('[_1]-based conditional access: ',&mt($title))); if ($$acl_count{$type}) { $r->print($$acl_count{$type}.' '); if ($$acl_count{$type} > 1) { @@ -1365,8 +1424,8 @@ sub display_access_row { } $r->print(&Apache::loncommon::end_data_table()); } else { - $r->print(&mt('No [_1]-based conditions defined.
    ',$type). - &additional_item($type)); + $r->print(&mt('No [_1]-based conditions defined.',&mt($type)).'
    ' + .&additional_item($type)); } return; } @@ -1456,7 +1515,7 @@ sub course_row { } $max_id ++; my $role_selects = &role_selectors($num,$role_id,$type,$content,'display'); - $r->print('



    '); } @@ -1525,13 +1584,13 @@ sub users_row { sub additional_item { my ($type) = @_; - my $output = &mt('Add new [_1] condition(s)?',$type).' '.&mt('Number to add: ').''; + my $output = &mt('Add new [_1] condition(s)?',&mt($type)).' '.&mt('Number to add: ').''; return $output; } sub actionbox { my ($status,$num,$scope) = @_; - my $output = '
    '. '