--- loncom/interface/portfolio.pm 2007/03/20 15:36:14 1.178 +++ loncom/interface/portfolio.pm 2008/06/16 23:34:12 1.195 @@ -1,7 +1,7 @@ # The LearningOnline Network # portfolio browser # -# $Id: portfolio.pm,v 1.178 2007/03/20 15:36:14 albertel Exp $ +# $Id: portfolio.pm,v 1.195 2008/06/16 23:34:12 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -93,14 +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(&Apache::loncommon::help_open_topic('Portfolio About', &mt('Help on the portfolio'))); + my $parse_check; + if (!&suppress_embed_prompt()) { + $parse_check = <<"END"; +
+ + + +END + } $r->print(<<"TABLE"); @@ -115,7 +128,9 @@ sub display_common { - $help_fileupload + +$help_fileupload +$parse_check @@ -183,7 +198,7 @@ sub display_directory_line { $r->print(''); $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}}) { @@ -231,7 +246,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 +282,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('
'.$version_flag.'
'. - ''); + '' + .'' + .'' + .'' + .'' + .'' + .'' + .''); } $r->print("\n".&group_form_data()."\n"); @@ -289,8 +305,6 @@ sub display_directory { my ($bfile)=split('&',$b,2); return (lc($afile) cmp lc($bfile)); } (@$dir_list)) { - #$strip holds directory/file name - #$dom 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); @@ -340,7 +354,7 @@ sub display_directory { undef($colspan); } $r->print(''); - $r->print(''); + $r->print(''); my %anchor_fields = ( 'selectfile' => $filename.'/', 'currentpath' => $current_path.$filename.'/', @@ -364,7 +378,7 @@ sub display_directory { my %anchor_fields = ( 'lockinfo' => $fullpath ); - $line.=''; + $line.=''; $css_class= 'LC_browser_file_locked'; } else { if (!$can_modify) { @@ -382,7 +396,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.''; } @@ -451,7 +465,7 @@ sub display_directory { $r->print('
'); if ($can_delete) { $r->print(' - '. + '. &Apache::loncommon::help_open_topic('Portfolio DeleteFile').' @@ -532,19 +546,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.
"); @@ -557,7 +571,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); @@ -566,10 +580,10 @@ sub delete_confirmed { $env{'form.currentpath'}. $delete_file); if ($result ne 'ok') { - $r->print(''. - &mt('An error occured ([_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))); @@ -588,7 +602,7 @@ sub delete_confirmed { &Apache::lonnet::modify_access_controls($file_name,\%changes, $udom,$uname); if ($outcome ne 'ok') { - $r->print('
'.&mt("An error occured ([_1]) while ". + $r->print('
'.&mt("An error occurred ([_1]) while ". "trying to delete access controls for the file.",$outcome). '

'); } else { @@ -596,7 +610,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 +625,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 +676,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 +694,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 +731,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 +747,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 +760,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, @@ -779,14 +792,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 +827,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 +838,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 +974,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) = @@ -1014,7 +1027,7 @@ sub update_access { } else { if ((@{$processing{'activate'}} > 0) || (@{$processing{'update'}} > 0)) { $errors .= ''. - &mt('A problem occurred storing access control settings: [_1]',$outcome). + &mt('A problem occurred saving access control settings: [_1]',$outcome). ''; } } @@ -1035,7 +1048,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 +1068,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 +1216,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 +1232,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 +1278,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 +1328,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) { @@ -1370,8 +1383,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; } @@ -1530,7 +1543,7 @@ 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; } @@ -1733,17 +1746,18 @@ ENDSMP fileList = fileList + document.forms.checkselect.currentpath.value + document.forms.checkselect[i].value + "," ; } } - opener.document.forms.lonhomework.$env{'form.fieldname'}.value=fileList; + var hwfield = opener.document.getElementsByName('$env{'form.fieldname'}'); + hwfield[0].value = fileList; self.close(); } ENDSMP $r->print($javascript); - $r->print("

Select portfolio files

- Check as many as you wish in response to the problem.
"); + $r->print("

".&mt('Select portfolio files')."

". + &mt('Check as many as you wish in response to the problem.')."
"); my @otherfiles=&Apache::lonnet::files_not_in_path($env{'user.name'}, $env{'form.currentpath'}); if (@otherfiles) { - $r->print("Files selected from other directories:
"); + $r->print("".&mt('Files selected from other directories:')."
"); foreach my $file (@otherfiles) { $r->print($file."
"); } @@ -1755,12 +1769,11 @@ sub check_for_upload { my ($path,$fname,$group,$element) = @_; my $disk_quota = &get_quota($group); my $filesize = (length($env{'form.'.$element})) / 1000; #express in k (1024?) - my $portfolio_root = &get_portfolio_root(); my $port_path = &get_port_path(); - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); # Fixme --- Move the checking for existing file to LOND error return - my @dir_list=&get_dir_list($portfolio_root,$path); + my @dir_list=&get_dir_list($portfolio_root,$path,$group); my $found_file = 0; my $locked_file = 0; foreach my $line (@dir_list) { @@ -1774,20 +1787,27 @@ sub check_for_upload { } } } - my $current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$portfolio_root); + my $getpropath = 1; + my $current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath); if (($current_disk_usage + $filesize) > $disk_quota){ - my $msg = 'Unable to upload '.$fname.' (size = '.$filesize.' kilobytes). Disk quota will be exceeded.'. - '
Disk quota is '.$disk_quota.' kilobytes. Your current disk usage is '.$current_disk_usage.' kilobytes.'; + my $msg = ''. + &mt('Unable to upload [_1]. (size = [_2] kilobytes). Disk quota will be exceeded.',''.$fname.'',$filesize).''. + '
'.&mt('Disk quota is [_1] kilobytes. Your current disk usage is [_2] kilobytes.',$disk_quota,$current_disk_usage); return ('will_exceed_quota',$msg); } elsif ($found_file) { if ($locked_file) { - my $msg = ''.'Unable to upload '.$fname.', a locked file by that name was found in '.$port_path.$path.''. - '
You will be able to rename or delete existing '.$fname.' after a grade has been assigned.'; + my $msg = ''; + $msg .= &mt('Unable to upload [_1]. A locked file by that name was found in [_2].',''.$fname.'',''.$port_path.$env{'form.currentpath'}.''); + $msg .= '
'; + $msg .= &mt('You will be able to rename or delete existing [_1] after a grade has been assigned.',''.$fname.''); return ('file_locked',$msg); } else { - my $msg = ''.'Unable to upload '.$fname.', a file by that name was found in '.$port_path.$path.''. - '
To upload, rename or delete existing '.$fname.' in '.$port_path.$path; + my $msg = ''; + $msg .= &mt('Unable to upload [_1]. A file by that name was found in [_2].',''.$fname.'',$port_path.$env{'form.currentpath'}); + $msg .= ''; + $msg .= '
'; + $msg .= &mt('To upload, rename or delete existing [_1] in [_2].',''.$fname.'', $port_path.$env{'form.currentpath'}); return ('file_exists',$msg); } } @@ -1796,10 +1816,17 @@ sub check_for_upload { sub upload { my ($r,$url,$group)=@_; my $fname=&Apache::lonnet::clean_filename($env{'form.uploaddoc.filename'}); - - my ($state,$msg) = &check_for_upload($env{'form.currentpath'}, - $fname,$group,'uploaddoc'); - + my $disk_quota = &get_quota($group); + my $portfolio_root = &get_portfolio_root(); + my $port_path = &get_port_path(); + my ($uname,$udom) = &get_name_dom($group); + my $getpropath = 1; + my $current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath); + my ($state,$msg) = + &Apache::loncommon::check_for_upload($env{'form.currentpath'},$fname, + $group,'uploaddoc',$portfolio_root, + $port_path,$disk_quota, + $current_disk_usage,$uname,$udom); if ($state eq 'will_exceed_quota' || $state eq 'file_locked' || $state eq 'file_exists' ) { @@ -1807,81 +1834,46 @@ sub upload { return; } - my $port_path = &get_port_path(); my (%allfiles,%codebase,$mode); if ($env{'form.uploaddoc.filename'} =~ m/(\.htm|\.html|\.shtml)$/i) { - $mode = 'parse'; - + if ($env{'form.parserflag'}) { + $mode = 'parse'; + } } my $result= &Apache::lonnet::userfileupload('uploaddoc','', $port_path.$env{'form.currentpath'}, $mode,\%allfiles,\%codebase); if ($result !~ m|^/uploaded/|) { - $r->print(''.'An errror occured ('.$result. - ') while trying to upload '.&display_file().'
'); + $r->print(''.&mt('An error occurred ([_1]) while trying to upload [_2].' + ,$result,&display_file()).'
'); $r->print(&done('Back',$url)); } else { if (%allfiles) { - my $state = < STATE - $r->print("

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,{'error_on_invalid_names' => 1})); - $r->print('

Or '.&done('Return to directory listing',$url).'

'); + $r->print("

".&mt("Reference Warning")."

"); + $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',$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 errror occured ('.$result. - ') while trying to upload '.&display_file($path,$fname).'
'); - next; - } else { - $r->print("

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'}; @@ -1914,17 +1906,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]
', - $course_description{'description'})); + $r->print(&mt('In the course:').' '.$course_description{'description'}.'
'); } } } - $r->print(&done('Back',$url)); + $r->print(&done(&mt('Back'),$url)); return 'ok'; } sub createdir { - my ($r,$url)=@_; + my ($r,$url,$group)=@_; my $newdir=&Apache::lonnet::clean_filename($env{'form.newdir'}); if ($newdir eq '') { $r->print(''. @@ -1934,7 +1925,7 @@ sub createdir { return; } my $portfolio_root = &get_portfolio_root(); - my @dir_list=&get_dir_list($portfolio_root); + my @dir_list=&get_dir_list($portfolio_root,undef,$group); my $found_file = 0; foreach my $line (@dir_list) { my ($filename)=split(/\&/,$line,2); @@ -1943,20 +1934,24 @@ sub createdir { } } if ($found_file){ - $r->print(''.'Unable to create a directory named '.$newdir. - ' a file or directory by that name already exists.
'); + $r->print('' + .&mt('Unable to create a directory named [_1].',''.$newdir.'') + .' '.&mt('A file or directory by that name already exists.').'
'); } else { - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($group); my $port_path = &get_port_path(); my $result=&Apache::lonnet::mkdiruserfile($uname,$udom, $port_path.$env{'form.currentpath'}.$newdir); if ($result ne 'ok') { - $r->print(''.'An errror occured ('.$result. - ') while trying to create a new directory '.&display_file().'
'); + $r->print('' + .&mt('An error occurred ([_1]) while trying to create a new directory [_2].' + ,$result,&display_file()) + .'
'); } } if ($newdir ne $env{'form.newdir'}) { - $r->print("The new directory name was changed from:
".$env{'form.newdir'}." to $newdir "); + $r->print(&mt('The new directory name was changed from [_1] to [_2].' + ,''.$env{'form.newdir'}.'',''.$newdir.'')); } $r->print(&done(undef,$url)); } @@ -1964,7 +1959,7 @@ sub createdir { sub get_portfolio_root { my ($udom,$uname,$group) = @_; if (!(defined($udom)) || !(defined($uname))) { - ($uname,$udom) = &get_name_dom(); + ($uname,$udom) = &get_name_dom($group); } my $path = '/userfiles/portfolio'; if (!defined($group)) { @@ -1975,7 +1970,7 @@ sub get_portfolio_root { if (defined($group)) { $path = '/userfiles/groups/'.$group.'/portfolio'; } - return (&Apache::loncommon::propath($udom,$uname).$path); + return $path; } sub get_group_quota { @@ -1990,21 +1985,23 @@ sub get_group_quota { $group_quota = $group_info{'quota'}; #expressed in Mb if ($group_quota) { $group_quota = 1000 * $group_quota; #expressed in k - } + } } return $group_quota; -} +} sub get_dir_list { - my ($portfolio_root,$path) = @_; + my ($portfolio_root,$path,$group) = @_; $path ||= $env{'form.currentpath'}; - my ($uname,$udom) = &get_name_dom(); - return &Apache::lonnet::dirlist($path,$udom,$uname,$portfolio_root); + my ($uname,$udom) = &get_name_dom($group); + my $getpropath = 1; + return &Apache::lonnet::dirlist($portfolio_root.$path,$udom,$uname,$getpropath); } sub get_name_dom { + my ($group) = @_; my ($uname,$udom); - if (defined($env{'form.group'})) { + if (defined($group)) { $udom = $env{'course.'.$env{'request.course.id'}.'.domain'}; $uname = $env{'course.'.$env{'request.course.id'}.'.num'}; } else { @@ -2025,7 +2022,7 @@ sub prepend_group { sub get_namespace { my $namespace = 'portfolio'; if (defined($env{'form.group'})) { - my ($uname,$udom) = &get_name_dom(); + my ($uname,$udom) = &get_name_dom($env{'form.group'}); $namespace .= '_'.$udom.'_'.$uname.'_'.$env{'form.group'}; } return $namespace; @@ -2057,7 +2054,7 @@ sub missing_priv { $rtnlink .= '?'; } $rtnlink .= 'currentpath='.$escpath; - $r->print(&mt('

Action disallowed

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

'.&mt('Action disallowed').'

'); $r->print(&mt('You do not have sufficient privileges to [_1] ', $longtext->{$priv})); if (defined($env{'form.group'})) { @@ -2066,7 +2063,7 @@ sub missing_priv { } else { $r->print(&mt('in this portfolio.')); } - $rtnlink .= '">'.&mt('Return to directory listing page').''; + $rtnlink .= '">'.&mt('Return to directory').''; $r->print('
'.$rtnlink); $r->print(&Apache::loncommon::end_page()); return; @@ -2113,6 +2110,17 @@ sub get_quota { return $disk_quota; } +sub suppress_embed_prompt { + my $suppress_prompt = 0; + if (($env{'request.role'} =~ /^st/) && ($env{'request.course.id'} ne '')) { + if ($env{'course.'.$env{'request.course.id'}.'.suppress_embed_prompt'} eq 'yes') { + $suppress_prompt = 1; + } + } + return $suppress_prompt; +} + + sub handler { # this handles file management my $r = shift; @@ -2139,8 +2147,8 @@ sub handler { &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')); $env{'form.group'} =~ s/\W//g; $group = $env{'form.group'}; - if ($group) { - ($uname,$udom) = &get_name_dom(); + if ($group ne '') { + ($uname,$udom) = &get_name_dom($group); my %curr_groups = &Apache::longroup::coursegroups($udom,$uname, $group); if (%curr_groups) { @@ -2151,16 +2159,16 @@ sub handler { $env{'request.course.id'}.'/'.$group))) { $portfolio_root = &get_portfolio_root(); } else { - $r->print('You do not have the privileges required to access the shared files space for this group.'); + $r->print(&mt('You do not have the privileges required to access the shared files space for this group.')); $earlyout = 1; } } else { - $r->print('Not a valid group for this course'); + $r->print(&mt('Not a valid group for this course')); $earlyout = 1; } - $title = &mt('Group files').' for '.$group; + $title = &mt('Group files for [_1]', $group); } else { - $r->print('Invalid group'); + $r->print(&mt('Invalid group')); $earlyout = 1; } if ($earlyout) { return OK; } @@ -2216,16 +2224,14 @@ sub handler { return OK; } if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){ - $r->print(''. - 'No file was selected to upload.'. - 'To upload a file, click Browse...'. - ', select a file, then click Upload.'. - ''); + $r->print(''); + $r->print(&mt('No file was selected to upload.').' '); + $r->print(&mt('To upload a file, click Browse... and select a file, then click Upload.')); + $r->print(''); } if ($env{'form.meta'}) { &open_form($r,$url); -# $r->print(&edit_meta_data($r, $env{'form.currentpath'}.$env{'form.selectfile'})); - $r->print('Edit the meta data
'); + $r->print(&mt('Edit the meta data').'
'); &close_form($r,$url); } if ($env{'form.store'}) { @@ -2239,7 +2245,14 @@ sub handler { } } elsif ($env{'form.action'} eq 'upload_embedded') { if ($can_upload) { - &upload_embedded($r,$url,$group); + my $disk_quota = &get_quota($group); + my $getpropath = 1; + my $current_disk_usage = + &Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath); + $r->print( + &Apache::loncommon::upload_embedded('portfolio',$port_path,$uname,$udom, + $group,$portfolio_root,$group,$disk_quota,$current_disk_usage)); + $r->print(&done(undef,$url)); } else { &missing_priv($r,$url,'upload'); } @@ -2251,13 +2264,13 @@ sub handler { } } elsif ($env{'form.action'} eq 'delete') { if ($can_delete) { - &delete($r,$url); + &delete($r,$url,$group); } else { &missing_priv($r,$url,'delete'); } } elsif ($env{'form.action'} eq 'deletedir' && $env{'form.confirmed'}) { if ($can_delete) { - &delete_dir_confirmed($r,$url); + &delete_dir_confirmed($r,$url,$group); } else { &missing_priv($r,$url,'delete'); } @@ -2277,7 +2290,7 @@ sub handler { $env{'form.selectfile'} = $env{'form.rename'}; $env{'form.action'} = 'rename'; if ($can_modify) { - &rename($r,$url); + &rename($r,$url,$group); } else { &missing_priv($r,$url,'rename'); } @@ -2302,7 +2315,7 @@ sub handler { } } elsif ($env{'form.createdir'}) { if ($can_upload) { - &createdir($r,$url); + &createdir($r,$url,$group); } else { &missing_priv($r,$url,'upload'); } @@ -2317,7 +2330,7 @@ sub handler { &Apache::lonhtmlcommon::clear_breadcrumbs(); $r->print(&coursegrp_portfolio_header($udom,$uname,$grp_desc)); } - my @dir_list=&get_dir_list($portfolio_root); + my @dir_list=&get_dir_list($portfolio_root,$current_path,$group); if ($dir_list[0] eq 'no_such_dir'){ # two main reasons for this: # 1) never been here, so directory structure not created @@ -2333,8 +2346,7 @@ sub handler { $current_path = '/'; # force it back to the root } # now grab the directory list again, for the first time - @dir_list=&Apache::lonnet::dirlist($current_path, - $udom,$uname,$portfolio_root); + @dir_list=&get_dir_list($portfolio_root,$current_path,$group); } # need to know if directory is empty so it can be removed if desired my $is_empty=(@dir_list == 2); 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.