Diff for /loncom/interface/portfolio.pm between versions 1.181 and 1.191

version 1.181, 2007/06/11 20:56:38 version 1.191, 2008/04/16 23:11:06
Line 99  sub display_common { Line 99  sub display_common {
  my $help_createdir = &Apache::loncommon::help_open_topic('Portfolio CreateDirectory');   my $help_createdir = &Apache::loncommon::help_open_topic('Portfolio CreateDirectory');
   
  # FIXME: This line should be deleted once Portfolio uses breadcrumbs   # 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')));
   
         $r->print(<<"TABLE");           $r->print(<<"TABLE"); 
 <table id="LC_portfolio_actions">  <table id="LC_portfolio_actions">
Line 183  sub display_directory_line { Line 183  sub display_directory_line {
         $r->print('<td><img alt="" src="'.&Apache::loncommon::icon($filename).'" /></td>');          $r->print('<td><img alt="" src="'.&Apache::loncommon::icon($filename).'" /></td>');
         $r->print('<td>'.$version_flag.'</td>');          $r->print('<td>'.$version_flag.'</td>');
     } else { # this is a graded or handed back file      } 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);          my $permissions_hash = &Apache::lonnet::get_portfile_permissions($domain,$user);
         if (defined($$permissions_hash{$fullpath})) {          if (defined($$permissions_hash{$fullpath})) {
             foreach my $array_item (@{$$permissions_hash{$fullpath}}) {              foreach my $array_item (@{$$permissions_hash{$fullpath}}) {
Line 231  sub display_directory { Line 231  sub display_directory {
     my $select_mode;      my $select_mode;
     my $checked_files;      my $checked_files;
     my $port_path = &get_port_path();      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');      my $access_admin_text = &mt('View Status');
     if ($can_setacl) {      if ($can_setacl) {
         $access_admin_text = &mt('View/Change Status');          $access_admin_text = &mt('View/Change Status');
Line 267  sub display_directory { Line 267  sub display_directory {
     } else {      } else {
         $r->print('<form method="post" action="'.$url.'">');          $r->print('<form method="post" action="'.$url.'">');
  $r->print(&Apache::loncommon::help_open_topic('Portfolio FileList',   $r->print(&Apache::loncommon::help_open_topic('Portfolio FileList',
       'Using the portfolio file list'));        &mt('Using the portfolio file list')));
         $r->print('<table id="LC_browser">'.          $r->print('<table id="LC_browser">'.
   '<tr><th colspan="2">Actions'.                    '<tr>'
   &Apache::loncommon::help_open_topic('Portfolio FileAction').                   .'<th colspan="2">'.&mt('Actions'). &Apache::loncommon::help_open_topic('Portfolio FileAction').'</th>'
   '</th><th>&nbsp;</th><th>&nbsp;</th><th>Name'.                   .'<th>&nbsp;</th><th>&nbsp;</th>'
   &Apache::loncommon::help_open_topic('Portfolio OpenFile').                   .'<th>'.&mt('Name').&Apache::loncommon::help_open_topic('Portfolio OpenFile').'</th>'
   '</th><th>Size</th><th>Last Modified</th><th>Current Access Status'.                   .'<th>'.&mt('Size').'</th>'
   &Apache::loncommon::help_open_topic('Portfolio ShareFile').                   .'<th>'.&mt('Last Modified').'</th>'
   '</th></tr>');                   .'<th>'.&mt('Current Access Status').&Apache::loncommon::help_open_topic('Portfolio ShareFile').'</th>'
                    .'</tr>');
     }      }
     $r->print("\n".&group_form_data()."\n");      $r->print("\n".&group_form_data()."\n");
   
Line 289  sub display_directory { Line 290  sub display_directory {
   my ($bfile)=split('&',$b,2);    my ($bfile)=split('&',$b,2);
   return (lc($afile) cmp lc($bfile));    return (lc($afile) cmp lc($bfile));
       } (@$dir_list)) {        } (@$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);       my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); 
     $filename =~ s/\s+$//;      $filename =~ s/\s+$//;
     my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);      my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);
Line 340  sub display_directory { Line 339  sub display_directory {
     undef($colspan);      undef($colspan);
                 }                  }
  $r->print('<tr class="LC_browser_folder"><td '.$colspan.'><img alt="'.&mt('closed folder').'" src="'.$iconpath.'folder_closed.gif" /></td>');   $r->print('<tr class="LC_browser_folder"><td '.$colspan.'><img alt="'.&mt('closed folder').'" src="'.$iconpath.'folder_closed.gif" /></td>');
                 $r->print('<td>Go to ...</td>');                  $r->print('<td>'.&mt('Go to ...').'</td>');
                 my %anchor_fields = (                  my %anchor_fields = (
                     'selectfile'    => $filename.'/',                      'selectfile'    => $filename.'/',
                     'currentpath'   => $current_path.$filename.'/',                      'currentpath'   => $current_path.$filename.'/',
Line 364  sub display_directory { Line 363  sub display_directory {
                         my %anchor_fields = (                          my %anchor_fields = (
                             'lockinfo' => $fullpath                              'lockinfo' => $fullpath
                         );                          );
                         $line.='<td colspan="2">'.&make_anchor($url,\%anchor_fields,'Locked').'</td>';                          $line.='<td colspan="2">'.&make_anchor($url,\%anchor_fields,&mt('Locked')).'</td>';
  $css_class= 'LC_browser_file_locked';   $css_class= 'LC_browser_file_locked';
                     } else {                      } else {
                         if (!$can_modify) {                          if (!$can_modify) {
Line 382  sub display_directory { Line 381  sub display_directory {
                                 'rename' => $filename,                                  'rename' => $filename,
                                 currentpath => $current_path                                  currentpath => $current_path
                             );                              );
                             $line .= &make_anchor($url,\%anchor_fields,'Rename');                              $line .= &make_anchor($url,\%anchor_fields,&mt('Rename'));
                             $line .= '</td><td>'.&make_anchor($href_edit_location.$filename.'.meta',\%anchor_fields,$cat);                              $line .= '</td><td>'.&make_anchor($href_edit_location.$filename.'.meta',\%anchor_fields,$cat);
                             # '<a href="'.$href_edit_location.$filename.'.meta">'.$cat.'</a>';                              # '<a href="'.$href_edit_location.$filename.'.meta">'.$cat.'</a>';
                         }                          }
Line 451  sub display_directory { Line 450  sub display_directory {
         $r->print('</table>');          $r->print('</table>');
         if ($can_delete) {          if ($can_delete) {
             $r->print('              $r->print('
         <input type="submit" name="doit" value="Delete Checked Files" />'.          <input type="submit" name="doit" value="'.&mt('Delete Checked Files').'" />'.
  &Apache::loncommon::help_open_topic('Portfolio DeleteFile').'   &Apache::loncommon::help_open_topic('Portfolio DeleteFile').'
         <input type="hidden" name="action" value="delete" />          <input type="hidden" name="action" value="delete" />
         <input type="hidden" name="currentpath" value="'.$current_path.'" />          <input type="hidden" name="currentpath" value="'.$current_path.'" />
Line 532  sub done { Line 531  sub done {
 }  }
   
 sub delete {  sub delete {
     my ($r,$url)=@_;      my ($r,$url,$group)=@_;
     my @check;      my @check;
     my $file_name = $env{'form.currentpath'}.$env{'form.selectfile'};      my $file_name = $env{'form.currentpath'}.$env{'form.selectfile'};
     $file_name = &prepend_group($file_name);      $file_name = &prepend_group($file_name);
     my @files=&Apache::loncommon::get_env_multiple('form.selectfile');      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') {      if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {
         $r->print("The file is locked and cannot be deleted.<br />");          $r->print(&mt('The file is locked and cannot be deleted.').'<br />');
         $r->print(&done('Back',$url));          $r->print(&done('Back',$url));
     } else {      } else {
         if (scalar(@files)) {          if (scalar(@files)) {
             &open_form($r,$url);              &open_form($r,$url);
             $r->print('<p>'.&mt('Delete').' '.&display_file(undef,\@files).'?</p>');              $r->print('<p>'.&mt('Delete [_1]?',&display_file(undef,\@files)).'</p>');
             &close_form($r,$url);              &close_form($r,$url);
         } else {          } else {
             $r->print("No file was checked to delete.<br />");              $r->print("No file was checked to delete.<br />");
Line 557  sub delete_confirmed { Line 556  sub delete_confirmed {
     my ($r,$url,$group)=@_;      my ($r,$url,$group)=@_;
     my @files=&Apache::loncommon::get_env_multiple('form.selectfile');      my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
     my $result;      my $result;
     my ($uname,$udom) = &get_name_dom();      my ($uname,$udom) = &get_name_dom($group);
     my $port_path = &get_port_path();      my $port_path = &get_port_path();
     my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,      my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
                                                                         $uname);                                                                          $uname);
Line 566  sub delete_confirmed { Line 565  sub delete_confirmed {
        $env{'form.currentpath'}.         $env{'form.currentpath'}.
        $delete_file);         $delete_file);
         if ($result ne 'ok') {          if ($result ne 'ok') {
     $r->print('<span class="LC_error">'.      $r->print('<span class="LC_error">'
                      &mt('An error occured ([_1]) while trying to delete                         .&mt('An error occurred ([_1]) while trying to delete [_2].'
                          [_2].',$result,&display_file(undef, $delete_file)).                           ,$result,&display_file(undef, $delete_file))
                       '</span><br /><br />');                        .'</span><br /><br />');
         } else {          } else {
             $r->print(&mt('File: [_1] deleted.',              $r->print(&mt('File: [_1] deleted.',
                           &display_file(undef,$delete_file)));                            &display_file(undef,$delete_file)));
Line 588  sub delete_confirmed { Line 587  sub delete_confirmed {
                     &Apache::lonnet::modify_access_controls($file_name,\%changes,                      &Apache::lonnet::modify_access_controls($file_name,\%changes,
                                                             $udom,$uname);                                                              $udom,$uname);
                     if ($outcome ne 'ok') {                      if ($outcome ne 'ok') {
                            $r->print('<br />'.&mt("An error occured ([_1]) while ".                             $r->print('<br />'.&mt("An error occurred ([_1]) while ".
                                "trying to delete access controls for the file.",$outcome).                                 "trying to delete access controls for the file.",$outcome).
                                '</span><br /><br />');                                 '</span><br /><br />');
                     } else {                      } else {
Line 596  sub delete_confirmed { Line 595  sub delete_confirmed {
                             $r->print('<br />'.&mt('Access controls also deleted for the file.').'<br /><br />');                              $r->print('<br />'.&mt('Access controls also deleted for the file.').'<br /><br />');
                         } else {                          } else {
                             $r->print('<span class="LC_error">'.'<br />'.                              $r->print('<span class="LC_error">'.'<br />'.
                                &mt("An error occured ([_1]) while ".                                 &mt("An error occurred ([_1]) while ".
                                    "trying to delete access controls for the file.",$deloutcome).                                     "trying to delete access controls for the file.",$deloutcome).
                                    '</span><br /><br />');                                     '</span><br /><br />');
                         }                          }
Line 611  sub delete_confirmed { Line 610  sub delete_confirmed {
 sub delete_dir {  sub delete_dir {
     my ($r,$url)=@_;      my ($r,$url)=@_;
     &open_form($r,$url);      &open_form($r,$url);
     $r->print('<p>'.&mt('Delete').' '.&display_file().'?</p>');       $r->print('<p>'.&mt('Delete [_1]?',&display_file()).'</p>');
     &close_form($r,$url);      &close_form($r,$url);
 }   } 
   
 sub delete_dir_confirmed {  sub delete_dir_confirmed {
     my ($r,$url)=@_;      my ($r,$url,$group)=@_;
     my $directory_name = $env{'form.currentpath'};      my $directory_name = $env{'form.currentpath'};
     $directory_name =~ s|/$||; # remove any trailing slash      $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 $namespace = &get_namespace();
     my $port_path = &get_port_path();      my $port_path = &get_port_path();
     my $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path.      my $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path.
        $directory_name);         $directory_name);
                 
     if ($result ne 'ok') {      if ($result ne 'ok') {
  $r->print('<span class="LC_error"> An error occured (dir) ('.$result.   $r->print('<span class="LC_error">'
   ') while trying to delete '.$directory_name.'</span><br />');                    .&mt('An error occurred (dir) ([_1]) while trying to delete [_2].'
                          ,$result,$directory_name)
                     .'</span><br />');
     } else {      } else {
         # now remove from recent          # now remove from recent
 #        $r->print('<br /> removing '.$directory_name.'<br /');  
         &Apache::lonhtmlcommon::remove_recent($namespace,[$directory_name.'/']);          &Apache::lonhtmlcommon::remove_recent($namespace,[$directory_name.'/']);
         my @dirs = split m!/!, $directory_name;          my @dirs = split m!/!, $directory_name;
           
 #        $directory_name =~ m/^(\/*\/)(\/*.)$/;  
         $directory_name='/';          $directory_name='/';
         for (my $i=1; $i < (@dirs - 1); $i ++){          for (my $i=1; $i < (@dirs - 1); $i ++){
             $directory_name .= $dirs[$i].'/';              $directory_name .= $dirs[$i].'/';
Line 645  sub delete_dir_confirmed { Line 643  sub delete_dir_confirmed {
 }  }
   
 sub rename {  sub rename {
     my ($r,$url)=@_;      my ($r,$url,$group)=@_;
     my $file_name = $env{'form.currentpath'}.$env{'form.rename'};      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);      $file_name = &prepend_group($file_name);
     if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {      if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {
         $r->print("The file is locked and cannot be renamed.<br />");          $r->print("The file is locked and cannot be renamed.<br />");
         $r->print(&done(undef,$url));          $r->print(&done(undef,$url));
     } else {      } else {
         &open_form($r,$url);          &open_form($r,$url);
         $r->print('<p>'.&mt('Rename').' '.&display_file().' to           $r->print('<p>'.&mt('Rename [_1] to [_2]?', &display_file()
                    <input name="filenewname" type="input" size="50" />?</p>');                    , '<input name="filenewname" type="input" size="50" />').'</p>');
         &close_form($r,$url);          &close_form($r,$url);
     }      }
 }  }
Line 663  sub rename { Line 661  sub rename {
 sub rename_confirmed {  sub rename_confirmed {
     my ($r,$url,$group)=@_;      my ($r,$url,$group)=@_;
     my $filenewname=&Apache::lonnet::clean_filename($env{'form.filenewname'});      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();      my $port_path = &get_port_path();
     if ($filenewname eq '') {      if ($filenewname eq '') {
  $r->print('<span class="LC_error">'.   $r->print('<span class="LC_error">'.
Line 681  sub rename_confirmed { Line 679  sub rename_confirmed {
         $chg_access = &access_for_renamed($filenewname,$group,$udom,$uname);          $chg_access = &access_for_renamed($filenewname,$group,$udom,$uname);
     } else {            } else {      
  $r->print('<span class="LC_error">'.   $r->print('<span class="LC_error">'.
   &mt('An error occured ([_1]) while trying to rename [_2]'    &mt('An error occurred ([_1]) while trying to rename [_2] to [_3].'
       .' to [_3]',$result,&display_file(),                        ,$result,&display_file(),&display_file('',$filenewname))
       &display_file('',$filenewname)).'</span><br />');                    .'</span><br />');
         return;          return;
     }      }
     if ($filenewname ne $env{'form.filenewname'}) {      if ($filenewname ne $env{'form.filenewname'}) {
Line 718  sub access_for_renamed { Line 716  sub access_for_renamed {
             &Apache::lonnet::modify_access_controls($oldfile,\%change_old,              &Apache::lonnet::modify_access_controls($oldfile,\%change_old,
     $udom,$uname);      $udom,$uname);
         if ($outcome ne 'ok') {          if ($outcome ne 'ok') {
             $chg_text ='<br /><br />'.&mt("An error occured ([_1]) while ".              $chg_text ='<br /><br />'.&mt("An error occurred ([_1]) while ".
                 "trying to delete access control records for the old name.",$outcome).                  "trying to delete access control records for the old name.",$outcome).
                 '</span><br />';                  '</span><br />';
         } else {          } else {
             if ($deloutcome ne 'ok') {              if ($deloutcome ne 'ok') {
                 $chg_text = '<br /><br /><span class="LC_error"><br />'.                  $chg_text = '<br /><br /><span class="LC_error"><br />'.
     &mt("An error occured ([_1]) while ".      &mt("An error occurred ([_1]) while ".
  "trying to delete access control records for the old name.",$deloutcome).   "trying to delete access control records for the old name.",$deloutcome).
  '</span><br />';   '</span><br />';
             }              }
Line 734  sub access_for_renamed { Line 732  sub access_for_renamed {
                                                     $udom,$uname);                                                      $udom,$uname);
         if ($outcome ne 'ok') {          if ($outcome ne 'ok') {
             $chg_text .= '<br /><br />'.              $chg_text .= '<br /><br />'.
  &mt("An error occured ([_1]) while ".   &mt("An error occurred ([_1]) while ".
                 "trying to update access control records for the new name.",$outcome).                  "trying to update access control records for the new name.",$outcome).
                 '</span><br />';                  '</span><br />';
         }          }
Line 747  sub access_for_renamed { Line 745  sub access_for_renamed {
   
 sub display_access {  sub display_access {
     my ($r,$url,$group,$can_setacl,$port_path,$action) = @_;      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'};      my $file_name = $env{'form.currentpath'}.$env{'form.access'};
     $file_name = &prepend_group($file_name);      $file_name = &prepend_group($file_name);
     my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,      my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
Line 779  sub display_access { Line 777  sub display_access {
     if ($can_setacl) {      if ($can_setacl) {
         &open_form($r,$url);          &open_form($r,$url);
         $r->print($header.$info);          $r->print($header.$info);
  $r->print('<br />'.&Apache::loncommon::help_open_topic('Portfolio ShareFile SetAccess', 'Help on setting up share access'));   $r->print('<br />'.&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', 'Help on changing settings'));   $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', 'Help on removing share access'));   $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},          &access_setting_table($r,$url,$file_name,$access_controls{$file_name},
                               $action);                                $action);
         my $button_text = {          my $button_text = {
                         'continue' => &mt('Proceed'),                          'continue' => &mt('Proceed'),
                         'cancel' => &mt('Back to directory listing'),                          'cancel' => &mt('Return to directory'),
                       };                        };
         &close_form($r,$url,$button_text);          &close_form($r,$url,$button_text);
     } else {      } else {
Line 814  sub view_access_settings { Line 812  sub view_access_settings {
         $todisplay{$scope}{$key} = $$access_controls{$key};          $todisplay{$scope}{$key} = $$access_controls{$key};
     }      }
     if ($aclcount) {      if ($aclcount) {
         $r->print(&mt('<h4>Current access controls defined for this file:</h4>'));          $r->print('<h4>'.&mt('Current access controls defined for this file:').'</h4>');
         $r->print(&Apache::loncommon::start_data_table());          $r->print(&Apache::loncommon::start_data_table());
         $r->print(&Apache::loncommon::start_data_table_header_row());          $r->print(&Apache::loncommon::start_data_table_header_row());
         $r->print('<th>'.&mt('Access control').'</th><th>'.&mt('Dates available').          $r->print('<th>'.&mt('Access control').'</th><th>'.&mt('Dates available').
Line 825  sub view_access_settings { Line 823  sub view_access_settings {
         &build_access_summary($r,$count,$chg,%todisplay);          &build_access_summary($r,$count,$chg,%todisplay);
         $r->print(&Apache::loncommon::end_data_table());          $r->print(&Apache::loncommon::end_data_table());
     } else {      } else {
         $r->print(&mt('No access control settings currently exist for this file.<br />' ));          $r->print(&mt('No access control settings currently exist for this file.').'<br />');
     }      }
     my %anchor_fields = (      my %anchor_fields = (
         'currentpath' => $env{'form.currentpath'}          'currentpath' => $env{'form.currentpath'}
     );      );
     $r->print('<br />'.&make_anchor($url, \%anchor_fields, &mt('Return to directory listing')));      $r->print('<br />'.&make_anchor($url, \%anchor_fields, &mt('Return to directory')));
     return;      return;
 }  }
   
Line 961  sub update_access { Line 959  sub update_access {
     $r->print('<h3>'.&mt('Allowing others to retrieve file: [_1]',      $r->print('<h3>'.&mt('Allowing others to retrieve file: [_1]',
               $port_path.$file_name).'</h3>'."\n");                $port_path.$file_name).'</h3>'."\n");
     $file_name = &prepend_group($file_name);      $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);      my ($errors,$outcome,$deloutcome,$new_values,$translation);
     if ($totalprocessed) {      if ($totalprocessed) {
         ($outcome,$deloutcome,$new_values,$translation) =          ($outcome,$deloutcome,$new_values,$translation) =
Line 1035  sub update_access { Line 1033  sub update_access {
         &open_form($r,$url);          &open_form($r,$url);
         foreach my $newitem ('course','domains','users') {          foreach my $newitem ('course','domains','users') {
             if ($env{'form.new'.$newitem} > 0) {              if ($env{'form.new'.$newitem} > 0) {
                 $r->print('<br />'.&mt('Add new <b>[_1]-based</b> access control for portfolio file: <b>[_2]</b>',$newitem,$env{'form.currentpath'}.$env{'form.selectfile'}).'<br /><br />');                  $r->print('<br />'.&mt('Add new <b>[_1]-based</b> access control for portfolio file: <b>[_2]</b>',&mt($newitem),$env{'form.currentpath'}.$env{'form.selectfile'}).'<br /><br />');
                 $firstitem = $totalnew;                  $firstitem = $totalnew;
                 $lastitem = $totalnew + $env{'form.new'.$newitem};                  $lastitem = $totalnew + $env{'form.new'.$newitem};
                 $totalnew = $lastitem;                  $totalnew = $lastitem;
Line 1055  sub update_access { Line 1053  sub update_access {
         );          );
         $r->print('<br />'.&make_anchor($url, \%anchor_fields, &mt('Display all access settings for this file')));          $r->print('<br />'.&make_anchor($url, \%anchor_fields, &mt('Display all access settings for this file')));
         delete $anchor_fields{'access'};          delete $anchor_fields{'access'};
         $r->print('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&make_anchor($url,\%anchor_fields,&mt('Return to directory listing')));          $r->print('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&make_anchor($url,\%anchor_fields,&mt('Return to directory')));
     }      }
     return;      return;
 }  }
Line 1203  sub access_setting_table { Line 1201  sub access_setting_table {
 sub standard_settings {  sub standard_settings {
     my ($r,$now,$then,$url,$filename,$acl_count,$start,$end,$public,$publicnum,      my ($r,$now,$then,$url,$filename,$acl_count,$start,$end,$public,$publicnum,
       $publictext,$guest,$guestnum,$guesttext,$access_controls,%conditionals)=@_;        $publictext,$guest,$guestnum,$guesttext,$access_controls,%conditionals)=@_;
     $r->print('<h3>'.&mt('Public access: [_1]',$publictext).'</h3>');      $r->print('<h3>'.&mt('Public access: [_1]',&mt($publictext)).'</h3>');
     $r->print(&Apache::loncommon::start_data_table());      $r->print(&Apache::loncommon::start_data_table());
     $r->print(&Apache::loncommon::start_data_table_header_row());      $r->print(&Apache::loncommon::start_data_table_header_row());
     $r->print('<th>'.&mt('Action').'</th><th>'.&mt('Dates available').'</th>');      $r->print('<th>'.&mt('Action').'</th><th>'.&mt('Dates available').'</th>');
Line 1219  sub standard_settings { Line 1217  sub standard_settings {
     $r->print(&Apache::loncommon::end_data_table_row());      $r->print(&Apache::loncommon::end_data_table_row());
     $r->print(&Apache::loncommon::end_data_table());      $r->print(&Apache::loncommon::end_data_table());
     $r->print('</td><td width="40">&nbsp;</td><td valign="top">');      $r->print('</td><td width="40">&nbsp;</td><td valign="top">');
     $r->print('<h3>'.&mt('Passphrase-protected access: [_1]',$guesttext).'</h3>');      $r->print('<h3>'.&mt('Passphrase-protected access: [_1]',&mt($guesttext)).'</h3>');
     $r->print(&Apache::loncommon::start_data_table());      $r->print(&Apache::loncommon::start_data_table());
     $r->print(&Apache::loncommon::start_data_table_header_row());      $r->print(&Apache::loncommon::start_data_table_header_row());
     $r->print('<th>'.&mt('Action').'</th><th>'.&mt('Dates available').      $r->print('<th>'.&mt('Action').'</th><th>'.&mt('Dates available').
Line 1265  sub standard_settings { Line 1263  sub standard_settings {
             'action' => 'chgconditions',              'action' => 'chgconditions',
             'currentpath' => $env{'form.currentpath'},              'currentpath' => $env{'form.currentpath'},
         );          );
     $r->print('<h3>'.&mt('Conditional access: [_1]',$conditionstext).'</h3>');      $r->print('<h3>'.&mt('Conditional access: [_1]',&mt($conditionstext)).'</h3>');
     if ($numconditionals > 0) {      if ($numconditionals > 0) {
         my $count = 1;          my $count = 1;
         my $chg = 'none';          my $chg = 'none';
Line 1315  sub access_element { Line 1313  sub access_element {
     my $title = $type;      my $title = $type;
     $title =~ s/s$//;      $title =~ s/s$//;
     $title =~ s/^(\w)/uc($1)/e;      $title =~ s/^(\w)/uc($1)/e;
     $r->print('<h3>'.&mt('[_1]-based conditional access: ',$title));      $r->print('<h3>'.&mt('[_1]-based conditional access: ',&mt($title)));
     if ($$acl_count{$type}) {      if ($$acl_count{$type}) {
         $r->print($$acl_count{$type}.' ');          $r->print($$acl_count{$type}.' ');
         if ($$acl_count{$type} > 1) {          if ($$acl_count{$type} > 1) {
Line 1370  sub display_access_row { Line 1368  sub display_access_row {
         }          }
         $r->print(&Apache::loncommon::end_data_table());          $r->print(&Apache::loncommon::end_data_table());
     } else {      } else {
         $r->print(&mt('No [_1]-based conditions defined.<br />',$type).          $r->print(&mt('No [_1]-based conditions defined.',&mt($type)).'<br />'
                   &additional_item($type));                    .&additional_item($type));
     }      }
     return;      return;
 }  }
Line 1530  sub users_row { Line 1528  sub users_row {
   
 sub additional_item {  sub additional_item {
     my ($type) = @_;      my ($type) = @_;
     my $output = &mt('Add new [_1] condition(s)?',$type).'&nbsp;'.&mt('Number to add: ').'<input type="text" name="new'.$type.'" size="3" value="0" />';      my $output = &mt('Add new [_1] condition(s)?',&mt($type)).'&nbsp;'.&mt('Number to add: ').'<input type="text" name="new'.$type.'" size="3" value="0" />';
     return $output;      return $output;
 }  }
   
Line 1733  ENDSMP Line 1731  ENDSMP
                     fileList = fileList + document.forms.checkselect.currentpath.value + document.forms.checkselect[i].value + "," ;                      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();              self.close();
         }          }
         </script>          </script>
 ENDSMP  ENDSMP
     $r->print($javascript);      $r->print($javascript);
     $r->print("<h1>Select portfolio files</h1>      $r->print("<h1>".&mt('Select portfolio files')."</h1>".
                 Check as many as you wish in response to the problem.<br />");                  &mt('Check as many as you wish in response to the problem.')."<br />");
     my @otherfiles=&Apache::lonnet::files_not_in_path($env{'user.name'}, $env{'form.currentpath'});      my @otherfiles=&Apache::lonnet::files_not_in_path($env{'user.name'}, $env{'form.currentpath'});
     if (@otherfiles) {      if (@otherfiles) {
  $r->print("<strong>Files selected from other directories:</strong><br />");   $r->print("<strong>".&mt('Files selected from other directories:')."</strong><br />");
  foreach my $file (@otherfiles) {   foreach my $file (@otherfiles) {
     $r->print($file."<br />");      $r->print($file."<br />");
  }   }
Line 1755  sub check_for_upload { Line 1754  sub check_for_upload {
     my ($path,$fname,$group,$element) = @_;      my ($path,$fname,$group,$element) = @_;
     my $disk_quota = &get_quota($group);      my $disk_quota = &get_quota($group);
     my $filesize = (length($env{'form.'.$element})) / 1000; #express in k (1024?)      my $filesize = (length($env{'form.'.$element})) / 1000; #express in k (1024?)
   
     my $portfolio_root = &get_portfolio_root();      my $portfolio_root = &get_portfolio_root();
     my $port_path = &get_port_path();      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      # 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 $found_file = 0;
     my $locked_file = 0;      my $locked_file = 0;
     foreach my $line (@dir_list) {      foreach my $line (@dir_list) {
Line 1774  sub check_for_upload { Line 1772  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){      if (($current_disk_usage + $filesize) > $disk_quota){
         my $msg = '<span class="LC_error">Unable to upload <strong>'.$fname.' (size = '.$filesize.' kilobytes)</strong>. Disk quota will be exceeded.</span>'.          my $msg = '<span class="LC_error">'.
     '<br />Disk quota is '.$disk_quota.' kilobytes. Your current disk usage is '.$current_disk_usage.' kilobytes.';                  &mt('Unable to upload [_1]. (size = [_2] kilobytes). Disk quota will be exceeded.','<span class="LC_filename">'.$fname.'</span>',$filesize).'</span>'.
                     '<br />'.&mt('Disk quota is [_1] kilobytes. Your current disk usage is [_2] kilobytes.',$disk_quota,$current_disk_usage);
  return ('will_exceed_quota',$msg);   return ('will_exceed_quota',$msg);
     } elsif ($found_file) {      } elsif ($found_file) {
         if ($locked_file) {          if ($locked_file) {
             my $msg = '<span class="LC_error">'.'Unable to upload <strong>'.$fname.'</strong>, a <strong>locked</strong> file by that name was found in <strong>'.$port_path.$path.'</strong></span>'.              my $msg = '<span class="LC_error">';
  '<br />You will be able to rename or delete existing '.$fname.' after a grade has been assigned.';              $msg .= &mt('Unable to upload [_1]. A locked file by that name was found in [_2].','<span class="LC_filename">'.$fname.'</span>','<span class="LC_filename">'.$port_path.$env{'form.currentpath'}.'</span>');
               $msg .= '</span><br />';
               $msg .= &mt('You will be able to rename or delete existing [_1] after a grade has been assigned.','<span class="LC_filename">'.$fname.'</span>');
     return ('file_locked',$msg);      return ('file_locked',$msg);
  } else {   } else {
             my $msg = '<span class="LC_error">'.'Unable to upload <strong>'.$fname.'</strong>, a file by that name was found in <strong>'.$port_path.$path.'</strong></span>'.              my $msg = '<span class="LC_error">';
  '<br />To upload, rename or delete existing '.$fname.' in '.$port_path.$path;              $msg .= &mt('Unable to upload [_1]. A file by that name was found in [_2].','<span class="LC_filename">'.$fname.'</span>',$port_path.$env{'form.currentpath'});
               $msg .= '</span>';
               $msg .= '<br />';
               $msg .= &mt('To upload, rename or delete existing [_1] in [_2].','<span class="LC_filename">'.$fname.'</span>', $port_path.$env{'form.currentpath'});
     return ('file_exists',$msg);      return ('file_exists',$msg);
  }   }
     }      }
Line 1818  sub upload { Line 1823  sub upload {
  $port_path.$env{'form.currentpath'},   $port_path.$env{'form.currentpath'},
  $mode,\%allfiles,\%codebase);   $mode,\%allfiles,\%codebase);
     if ($result !~ m|^/uploaded/|) {      if ($result !~ m|^/uploaded/|) {
  $r->print('<span class="LC_error">'.'An error occured ('.$result.   $r->print('<span class="LC_error">'.&mt('An error occurred ([_1]) while trying to upload [_2].'
   ') while trying to upload '.&display_file().'</span><br />');                    ,$result,&display_file()).'</span><br />');
  $r->print(&done('Back',$url));   $r->print(&done('Back',$url));
     } else {      } else {
  if (%allfiles) {   if (%allfiles) {
Line 1829  sub upload { Line 1834  sub upload {
     <input type="hidden" name="fieldname"   value="$env{'form.fieldname'}" />      <input type="hidden" name="fieldname"   value="$env{'form.fieldname'}" />
     <input type="hidden" name="mode"        value="$env{'form.mode'}" />      <input type="hidden" name="mode"        value="$env{'form.mode'}" />
 STATE  STATE
     $r->print("<p>Completed upload of the file. This file contained references to other files. You can upload these now: </p>");              $r->print("<h2>".&mt("Reference Warning")."</h2>");
               $r->print("<p>".&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.")."</p>");
               $r->print("<p>".&mt("Please select the locations from which the referenced files are to be uploaded.")."</p>");
     $r->print(&Apache::londocs::ask_for_embedded_content('/adm/portfolio',$state,\%allfiles,\%codebase,      $r->print(&Apache::londocs::ask_for_embedded_content('/adm/portfolio',$state,\%allfiles,\%codebase,
       {'error_on_invalid_names'   => 1,        {'error_on_invalid_names'   => 1,
        'ignore_remote_references' => 1,}));         'ignore_remote_references' => 1,}));
     $r->print('<p>Or '.&done('Return to directory listing',$url).'</p>');      $r->print('<p>Or '.&done('Return to directory',$url).'</p>');
  } else {   } else {
     $r->print(&done(undef,$url));      $r->print(&done(undef,$url));
  }   }
Line 1844  sub upload_embedded { Line 1851  sub upload_embedded {
     my ($r,$url,$group)=@_;      my ($r,$url,$group)=@_;
     for (my $i=0; $i<$env{'form.number_embedded_items'}; $i++) {      for (my $i=0; $i<$env{'form.number_embedded_items'}; $i++) {
  next if (!exists($env{'form.embedded_item_'.$i.'.filename'}));   next if (!exists($env{'form.embedded_item_'.$i.'.filename'}));
    my $orig_uploaded_filename = 
       $env{'form.embedded_item_'.$i.'.filename'};
   
  $env{'form.embedded_orig_'.$i} =    $env{'form.embedded_orig_'.$i} = 
     &unescape($env{'form.embedded_orig_'.$i});      &unescape($env{'form.embedded_orig_'.$i});
  my ($path,$fname) =    my ($path,$fname) = 
     ($env{'form.embedded_orig_'.$i} =~ m{(.*/)([^/]*)});      ($env{'form.embedded_orig_'.$i} =~ m{(.*/)([^/]*)});
    # no path, whole string is fname
    if (!$fname) { $fname = $env{'form.embedded_orig_'.$i} };
   
  $path = $env{'form.currentpath'}.$path;   $path = $env{'form.currentpath'}.$path;
  $fname = &Apache::lonnet::clean_filename($fname);   $fname = &Apache::lonnet::clean_filename($fname);
   
Line 1870  sub upload_embedded { Line 1882  sub upload_embedded {
     &Apache::lonnet::userfileupload('embedded_item_'.$i,'',      &Apache::lonnet::userfileupload('embedded_item_'.$i,'',
     $port_path.$path);      $port_path.$path);
  if ($result !~ m|^/uploaded/|) {   if ($result !~ m|^/uploaded/|) {
     $r->print('<span class="LC_error">'.'An error occured ('.$result.      $r->print('<span class="LC_error">'
       ') while trying to upload '.&display_file($path,$fname).'</span><br />');                        .&mt('An error occurred ([_1]) while trying to upload [_2] for embedded element [_3].'
                              ,$result,$orig_uploaded_filename,$env{'form.embedded_orig_'.$i})
                         .'</span><br />');
     next;      next;
  } else {   } else {
     $r->print("<p> Uploaded ".      $r->print("<p> Uploaded ".
Line 1883  sub upload_embedded { Line 1897  sub upload_embedded {
   
 sub lock_info {  sub lock_info {
     my ($r,$url,$group) = @_;      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,      my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
                                                                        $uname);                                                                         $uname);
     my $file_name = $env{'form.lockinfo'};      my $file_name = $env{'form.lockinfo'};
Line 1916  sub lock_info { Line 1930  sub lock_info {
     my %course_description =       my %course_description = 
  &Apache::lonnet::coursedescription($$array_item[1]);   &Apache::lonnet::coursedescription($$array_item[1]);
     if ( $course_description{'description'} ne '') {      if ( $course_description{'description'} ne '') {
  $r->print(&mt('In the course: <strong>[_1]</strong><br />',   $r->print(&mt('In the course:').' <strong>'.$course_description{'description'}.'</strong><br />');
       $course_description{'description'}));  
     }      }
         }          }
     }      }
     $r->print(&done('Back',$url));      $r->print(&done(&mt('Back'),$url));
     return 'ok';      return 'ok';
 }  }
   
 sub createdir {  sub createdir {
     my ($r,$url)=@_;      my ($r,$url,$group)=@_;
     my $newdir=&Apache::lonnet::clean_filename($env{'form.newdir'});      my $newdir=&Apache::lonnet::clean_filename($env{'form.newdir'});
     if ($newdir eq '') {      if ($newdir eq '') {
     $r->print('<span class="LC_error">'.      $r->print('<span class="LC_error">'.
Line 1936  sub createdir { Line 1949  sub createdir {
     return;      return;
     }      }
     my $portfolio_root = &get_portfolio_root();       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;      my $found_file = 0;
     foreach my $line (@dir_list) {      foreach my $line (@dir_list) {
         my ($filename)=split(/\&/,$line,2);          my ($filename)=split(/\&/,$line,2);
Line 1945  sub createdir { Line 1958  sub createdir {
         }          }
     }      }
     if ($found_file){      if ($found_file){
        $r->print('<span class="LC_error">'.'Unable to create a directory named <strong>'.$newdir.         $r->print('<span class="LC_error">'
                ' </strong>a file or directory by that name already exists.</span><br />');                        .&mt('Unable to create a directory named [_1].','<strong>'.$newdir.'</strong>')
                         .' '.&mt('A file or directory by that name already exists.').'</span><br />');
     } else {      } else {
         my ($uname,$udom) = &get_name_dom();          my ($uname,$udom) = &get_name_dom($group);
         my $port_path = &get_port_path();          my $port_path = &get_port_path();
         my $result=&Apache::lonnet::mkdiruserfile($uname,$udom,          my $result=&Apache::lonnet::mkdiruserfile($uname,$udom,
          $port_path.$env{'form.currentpath'}.$newdir);           $port_path.$env{'form.currentpath'}.$newdir);
         if ($result ne 'ok') {          if ($result ne 'ok') {
        $r->print('<span class="LC_error">'.'An error occured ('.$result.         $r->print('<span class="LC_error">'
           ') while trying to create a new directory '.&display_file().'</span><br />');                        .&mt('An error occurred ([_1]) while trying to create a new directory [_2].'
                              ,$result,&display_file())
                         .'</span><br />');
         }          }
     }      }
     if ($newdir ne $env{'form.newdir'}) {      if ($newdir ne $env{'form.newdir'}) {
         $r->print("The new directory name was changed from:<br /><strong>".$env{'form.newdir'}."</strong> to <strong>$newdir </strong>");            $r->print(&mt('The new directory name was changed from [_1] to [_2].'
                         ,'<strong>'.$env{'form.newdir'}.'</strong>','<strong>'.$newdir.'</strong>'));  
     }      }
     $r->print(&done(undef,$url));      $r->print(&done(undef,$url));
 }  }
Line 1966  sub createdir { Line 1983  sub createdir {
 sub get_portfolio_root {  sub get_portfolio_root {
     my ($udom,$uname,$group) = @_;      my ($udom,$uname,$group) = @_;
     if (!(defined($udom)) || !(defined($uname))) {      if (!(defined($udom)) || !(defined($uname))) {
         ($uname,$udom) = &get_name_dom();          ($uname,$udom) = &get_name_dom($group);
     }      }
     my $path = '/userfiles/portfolio';      my $path = '/userfiles/portfolio';
     if (!defined($group)) {       if (!defined($group)) { 
Line 1977  sub get_portfolio_root { Line 1994  sub get_portfolio_root {
     if (defined($group)) {      if (defined($group)) {
         $path = '/userfiles/groups/'.$group.'/portfolio';          $path = '/userfiles/groups/'.$group.'/portfolio';
     }       } 
     return (&Apache::loncommon::propath($udom,$uname).$path);      return $path;
 }  }
   
 sub get_group_quota {  sub get_group_quota {
Line 1992  sub get_group_quota { Line 2009  sub get_group_quota {
         $group_quota = $group_info{'quota'}; #expressed in Mb          $group_quota = $group_info{'quota'}; #expressed in Mb
         if ($group_quota) {          if ($group_quota) {
             $group_quota = 1000 * $group_quota; #expressed in k              $group_quota = 1000 * $group_quota; #expressed in k
         }           }
     }      }
     return $group_quota;      return $group_quota;
 }   }
   
 sub get_dir_list {  sub get_dir_list {
     my ($portfolio_root,$path) = @_;      my ($portfolio_root,$path,$group) = @_;
     $path ||= $env{'form.currentpath'};      $path ||= $env{'form.currentpath'};
     my ($uname,$udom) = &get_name_dom();      my ($uname,$udom) = &get_name_dom($group);
     return &Apache::lonnet::dirlist($path,$udom,$uname,$portfolio_root);      my $getpropath = 1;
       return &Apache::lonnet::dirlist($portfolio_root.$path,$udom,$uname,$getpropath);
 }  }
   
 sub get_name_dom {  sub get_name_dom {
       my ($group) = @_;
     my ($uname,$udom);      my ($uname,$udom);
     if (defined($env{'form.group'})) {      if (defined($group)) {
         $udom = $env{'course.'.$env{'request.course.id'}.'.domain'};          $udom = $env{'course.'.$env{'request.course.id'}.'.domain'};
         $uname = $env{'course.'.$env{'request.course.id'}.'.num'};          $uname = $env{'course.'.$env{'request.course.id'}.'.num'};
     } else {      } else {
Line 2027  sub prepend_group { Line 2046  sub prepend_group {
 sub get_namespace {  sub get_namespace {
     my $namespace = 'portfolio';      my $namespace = 'portfolio';
     if (defined($env{'form.group'})) {      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'};          $namespace .= '_'.$udom.'_'.$uname.'_'.$env{'form.group'};
     }      }
     return $namespace;      return $namespace;
Line 2059  sub missing_priv { Line 2078  sub missing_priv {
         $rtnlink .= '?';          $rtnlink .= '?';
     }      }
     $rtnlink .= 'currentpath='.$escpath;      $rtnlink .= 'currentpath='.$escpath;
     $r->print(&mt('<h3>Action disallowed</h3>'));      $r->print('<h3>'.&mt('Action disallowed').'</h3>');
     $r->print(&mt('You do not have sufficient privileges to [_1] ',      $r->print(&mt('You do not have sufficient privileges to [_1] ',
                   $longtext->{$priv}));                    $longtext->{$priv}));
     if (defined($env{'form.group'})) {      if (defined($env{'form.group'})) {
Line 2068  sub missing_priv { Line 2087  sub missing_priv {
     } else {      } else {
         $r->print(&mt('in this portfolio.'));          $r->print(&mt('in this portfolio.'));
     }      }
     $rtnlink .= '">'.&mt('Return to directory listing page').'</a>';      $rtnlink .= '">'.&mt('Return to directory').'</a>';
     $r->print('<br />'.$rtnlink);      $r->print('<br />'.$rtnlink);
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
     return;      return;
Line 2141  sub handler { Line 2160  sub handler {
            &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));             &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
         $env{'form.group'} =~ s/\W//g;          $env{'form.group'} =~ s/\W//g;
  $group = $env{'form.group'};   $group = $env{'form.group'};
         if ($group) {          if ($group ne '') {
             ($uname,$udom) = &get_name_dom();              ($uname,$udom) = &get_name_dom($group);
             my %curr_groups = &Apache::longroup::coursegroups($udom,$uname,              my %curr_groups = &Apache::longroup::coursegroups($udom,$uname,
        $group);          $group); 
             if (%curr_groups) {              if (%curr_groups) {
Line 2153  sub handler { Line 2172  sub handler {
                                       $env{'request.course.id'}.'/'.$group))) {                                        $env{'request.course.id'}.'/'.$group))) {
                     $portfolio_root = &get_portfolio_root();                      $portfolio_root = &get_portfolio_root();
                 } else {                  } 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;                      $earlyout = 1;
                 }                  }
             } else {              } else {
                 $r->print('Not a valid group for this course');                  $r->print(&mt('Not a valid group for this course'));
                 $earlyout = 1;                  $earlyout = 1;
             }              }
             $title = &mt('Group files').' for '.$group;               $title = &mt('Group files for [_1]', $group); 
         } else {          } else {
             $r->print('Invalid group');              $r->print(&mt('Invalid group'));
             $earlyout = 1;              $earlyout = 1;
         }          }
         if ($earlyout) { return OK; }          if ($earlyout) { return OK; }
Line 2218  sub handler { Line 2237  sub handler {
          return OK;           return OK;
     }      }
  if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){   if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){
        $r->print('<span class="LC_error">'.         $r->print('<span class="LC_error">');
       'No file was selected to upload.'.         $r->print(&mt('No file was selected to upload.').' ');
       'To upload a file, click <strong>Browse...</strong>'.      $r->print(&mt('To upload a file, click <strong>Browse...</strong> and select a file, then click <strong>Upload</strong>.'));
       ', select a file, then click <strong>Upload</strong>.'.      $r->print('</span>');
       '</span>');  
  }   }
     if ($env{'form.meta'}) {      if ($env{'form.meta'}) {
         &open_form($r,$url);          &open_form($r,$url);
 #        $r->print(&edit_meta_data($r, $env{'form.currentpath'}.$env{'form.selectfile'}));          $r->print(&mt('Edit the meta data').'<br />');
         $r->print('Edit the meta data<br />');  
         &close_form($r,$url);          &close_form($r,$url);
     }      }
     if ($env{'form.store'}) {      if ($env{'form.store'}) {
Line 2253  sub handler { Line 2270  sub handler {
         }          }
     } elsif ($env{'form.action'} eq 'delete') {      } elsif ($env{'form.action'} eq 'delete') {
         if ($can_delete) {          if ($can_delete) {
     &delete($r,$url);      &delete($r,$url,$group);
         } else {          } else {
             &missing_priv($r,$url,'delete');              &missing_priv($r,$url,'delete');
         }          }
     } elsif ($env{'form.action'} eq 'deletedir' && $env{'form.confirmed'}) {      } elsif ($env{'form.action'} eq 'deletedir' && $env{'form.confirmed'}) {
         if ($can_delete) {          if ($can_delete) {
     &delete_dir_confirmed($r,$url);      &delete_dir_confirmed($r,$url,$group);
         } else {          } else {
             &missing_priv($r,$url,'delete');              &missing_priv($r,$url,'delete');
         }          }
Line 2279  sub handler { Line 2296  sub handler {
         $env{'form.selectfile'} = $env{'form.rename'};          $env{'form.selectfile'} = $env{'form.rename'};
         $env{'form.action'} = 'rename';          $env{'form.action'} = 'rename';
         if ($can_modify) {          if ($can_modify) {
     &rename($r,$url);      &rename($r,$url,$group);
         } else {          } else {
             &missing_priv($r,$url,'rename');              &missing_priv($r,$url,'rename');
         }          }
Line 2304  sub handler { Line 2321  sub handler {
         }          }
     } elsif ($env{'form.createdir'}) {      } elsif ($env{'form.createdir'}) {
         if ($can_upload) {          if ($can_upload) {
     &createdir($r,$url);      &createdir($r,$url,$group);
         } else {          } else {
             &missing_priv($r,$url,'upload');              &missing_priv($r,$url,'upload');
         }          }
Line 2319  sub handler { Line 2336  sub handler {
             &Apache::lonhtmlcommon::clear_breadcrumbs();              &Apache::lonhtmlcommon::clear_breadcrumbs();
             $r->print(&coursegrp_portfolio_header($udom,$uname,$grp_desc));              $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,undef,$group);
  if ($dir_list[0] eq 'no_such_dir'){   if ($dir_list[0] eq 'no_such_dir'){
     # two main reasons for this:      # two main reasons for this:
             #    1) never been here, so directory structure not created              #    1) never been here, so directory structure not created
Line 2335  sub handler { Line 2352  sub handler {
  $current_path = '/'; # force it back to the root           $current_path = '/'; # force it back to the root        
     }      }
     # now grab the directory list again, for the first time      # now grab the directory list again, for the first time
     @dir_list=&Apache::lonnet::dirlist($current_path,      @dir_list=
     $udom,$uname,$portfolio_root);                  &Apache::lonnet::dirlist($portfolio_root.$current_path,
                                            $udom,$uname,$getpropath);
         }          }
  # need to know if directory is empty so it can be removed if desired   # need to know if directory is empty so it can be removed if desired
  my $is_empty=(@dir_list == 2);   my $is_empty=(@dir_list == 2);

Removed from v.1.181  
changed lines
  Added in v.1.191


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>