--- loncom/interface/portfolio.pm 2007/06/11 20:56:38 1.181
+++ 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.181 2007/06/11 20:56:38 albertel 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
@@ -115,7 +127,9 @@ sub display_common { - $help_fileupload + +$help_fileupload +$parse_check |
");
}
+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(' | '); $r->print(' | '.$version_flag.' | '); } 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(''.$size.' | '); $r->print(''.&Apache::lonlocal::locallocaltime($mtime).' | '); if ($select_mode ne 'true') { - $r->print(''. + $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(' '); } else { @@ -596,7 +651,7 @@ sub delete_confirmed { $r->print(' '.&mt('Access controls also deleted for the file.').' '); } else { $r->print(''.' '. - &mt("An error occured ([_1]) while ". + &mt("An error occurred ([_1]) while ". "trying to delete access controls for the file.",$deloutcome). ' '); } @@ -611,30 +666,29 @@ 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 occured (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 -# $r->print(' removing '.$directory_name.' 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); } } @@ -663,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(''. @@ -681,9 +735,9 @@ sub rename_confirmed { $chg_access = &access_for_renamed($filenewname,$group,$udom,$uname); } else { $r->print(''. - &mt('An error occured ([_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'}) { @@ -718,13 +772,13 @@ sub access_for_renamed { &Apache::lonnet::modify_access_controls($oldfile,\%change_old, $udom,$uname); if ($outcome ne 'ok') { - $chg_text =' '.&mt("An error occured ([_1]) while ". + $chg_text =' '.&mt("An error occurred ([_1]) while ". "trying to delete access control records for the old name.",$outcome). ' '; } else { if ($deloutcome ne 'ok') { $chg_text = ' '. - &mt("An error occured ([_1]) while ". + &mt("An error occurred ([_1]) while ". "trying to delete access control records for the old name.",$deloutcome). ' '; } @@ -734,7 +788,7 @@ sub access_for_renamed { $udom,$uname); if ($outcome ne 'ok') { $chg_text .= ' '. - &mt("An error occured ([_1]) while ". + &mt("An error occurred ([_1]) while ". "trying to update access control records for the new name.",$outcome). ' '; } @@ -747,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, @@ -762,13 +816,13 @@ sub display_access { $info .= ' "; + &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").' '; } @@ -779,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 { @@ -814,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').
@@ -825,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; } @@ -961,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) = @@ -1035,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; @@ -1055,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; } @@ -1203,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').' | '); @@ -1219,7 +1273,7 @@ sub standard_settings { $r->print(&Apache::loncommon::end_data_table_row()); $r->print(&Apache::loncommon::end_data_table()); $r->print('');
- $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').
@@ -1265,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'; @@ -1315,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('',$type). - &additional_item($type)); + $r->print(&mt('No [_1]-based conditions defined.',&mt($type)).' ' + .&additional_item($type)); } return; } @@ -1461,7 +1515,7 @@ sub course_row { } $max_id ++; my $role_selects = &role_selectors($num,$role_id,$type,$content,'display'); - $r->print(' | '.$role_selects.' | '.$role_selects.' |
---|
Completed upload of the file. This file contained references to other files. You can upload these now:
"); - $r->print(&Apache::londocs::ask_for_embedded_content('/adm/portfolio',$state,\%allfiles,\%codebase, + $r->print("".&mt("Completed upload of the file. This file contained references to other files. You must upload the referenced files or else the uploaded file may not work properly.")."
"); + $r->print("".&mt("Please select the locations from which the referenced files are to be uploaded.")."
"); + $r->print(&Apache::loncommon::ask_for_embedded_content('/adm/portfolio',$state,\%allfiles,\%codebase, {'error_on_invalid_names' => 1, 'ignore_remote_references' => 1,})); - $r->print('Or '.&done('Return to directory listing',$url).'
'); + $r->print('Or '.&done('Return to directory',$url).'
'); + } } 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(''.'An error occured ('.$result. - ') while trying to upload '.&display_file($path,$fname).'Uploaded ". - &display_file($port_path.$path,$fname).'
'); - } - } - $r->print(&done(undef,$url)); -} - sub lock_info { my ($r,$url,$group) = @_; - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom, $uname); my $file_name = $env{'form.lockinfo'}; @@ -1916,17 +1947,16 @@ sub lock_info { my %course_description = &Apache::lonnet::coursedescription($$array_item[1]); if ( $course_description{'description'} ne '') { - $r->print(&mt('In the course: [_1]