Diff for /loncom/interface/portfolio.pm between versions 1.161 and 1.167

version 1.161, 2006/08/24 17:38:21 version 1.167, 2006/11/01 02:03:16
Line 95  sub display_common { Line 95  sub display_common {
  'createdir_label' =>    'createdir_label' => 
  'Create subdirectory in current directory:');   'Create subdirectory in current directory:');
         my $escuri = &HTML::Entities::encode($r->uri,'&<>"');          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');
   
    # TO BE DEPRECATED: This line should be deleted once Portfolio uses breadcrumbs
    $r->print(&Apache::loncommon::help_open_topic('Portfolio About', 'Help on the portfolio'));
    # END LINE TO BE DEPRECATED
   
         $r->print(<<"TABLE");           $r->print(<<"TABLE"); 
 <table id="LC_portfolio_actions">  <table id="LC_portfolio_actions">
   <tr id="LC_portfolio_upload">    <tr id="LC_portfolio_upload">
Line 109  sub display_common { Line 116  sub display_common {
  <input type="hidden" name="action" value="$env{"form.action"}" />   <input type="hidden" name="action" value="$env{"form.action"}" />
  <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"}" />
  <input type="submit" name="storeupl" value="$text{'upload'}" />   <input type="submit" name="storeupl" value="$text{'upload'}" />$help_fileupload
       </form>        </form>
     </td>      </td>
   </tr>    </tr>
Line 124  sub display_common { Line 131  sub display_common {
         <input type="hidden" name="action" value="$env{"form.action"}" />          <input type="hidden" name="action" value="$env{"form.action"}" />
         <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"}" />
         <input type="submit" name="createdir" value="$text{'createdir'}" />          <input type="submit" name="createdir" value="$text{'createdir'}" />$help_createdir
       </form>        </form>
     </td>      </td>
   </tr>    </tr>
Line 155  TABLE Line 162  TABLE
         }          }
     }      }
     $r->print('</span>');      $r->print('</span>');
    $r->print(&Apache::loncommon::help_open_topic('Portfolio ChangeDirectory'));
     &Apache::lonhtmlcommon::store_recent($namespace,$current_path,$current_path);      &Apache::lonhtmlcommon::store_recent($namespace,$current_path,$current_path);
     $r->print('<br /><form method="post" action="'.$url.'?mode='.$env{"form.mode"}.'&amp;fieldname='.$env{"form.fieldname"}.&group_args());      $r->print('<br /><form method="post" action="'.$url.'?mode='.$env{"form.mode"}.'&amp;fieldname='.$env{"form.fieldname"}.&group_args());
     $r->print('">'.      $r->print('">'.
Line 259  sub display_directory { Line 267  sub display_directory {
             '<tr><th>Select</th><th>&nbsp;</th><th>&nbsp;</th><th>Name</th><th>Size</th><th>Last Modified</th></tr>');              '<tr><th>Select</th><th>&nbsp;</th><th>&nbsp;</th><th>Name</th><th>Size</th><th>Last Modified</th></tr>');
     } 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', 'Using the portfolio file list'));
         $r->print('<table id="LC_browser">'.          $r->print('<table id="LC_browser">'.
             '<tr><th colspan="2">Actions</th><th>&nbsp;</th><th>&nbsp;</th><th>Name</th><th>Size</th><th>Last Modified</th><th>Current Access Status</th></tr>');              '<tr><th colspan="2">Actions</th><th>&nbsp;</th><th>&nbsp;</th><th>Name'.
    &Apache::loncommon::help_open_topic('Portfolio OpenFile').
    '</th><th>Size</th><th>Last Modified</th><th>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 294  sub display_directory { Line 307  sub display_directory {
        my $version_flag;         my $version_flag;
        my $show_versions;         my $show_versions;
     my $fullpath =  &prepend_group($current_path.$filename);      my $fullpath =  &prepend_group($current_path.$filename);
        if ($env{'form.showversions'} eq $filename) {         if ($env{'form.showversions'} =~ /$filename/) {
            $show_versions = 'true';             $show_versions = 'true';
        }         }
        if (exists($versioned{$fullpath})) {         if (exists($versioned{$fullpath})) {
Line 304  sub display_directory { Line 317  sub display_directory {
                'currentpath' => $current_path,                 'currentpath' => $current_path,
            );             );
            if ($show_versions) {             if ($show_versions) {
                  # Must preserve other possible showversion files
                  my $version_remainder = $env{'form.showversions'};
                  $version_remainder =~ s/$filename//g;                
                  $anchor_fields{'showversions'} = $version_remainder;
                     $version_flag = &make_anchor('portfolio',\%anchor_fields,                      $version_flag = &make_anchor('portfolio',\%anchor_fields,
                         '<img class="LC_icon" alt="'.&mt('opened folder').'" src="'.$iconpath.'folder_pointer_opened.gif" />');                          '<img class="LC_icon" alt="'.&mt('opened folder').'" src="'.$iconpath.'folder_pointer_opened.gif" />');
            } else {             } else {
                $anchor_fields{'showversions'} = $filename;                 # allow multiple files to show versioned
                  $anchor_fields{'showversions'} = $env{'form.showversions'}.','.$filename;
                     $version_flag = &make_anchor('portfolio',\%anchor_fields,                      $version_flag = &make_anchor('portfolio',\%anchor_fields,
                         '<img class="LC_icon" alt="'.&mt('closed folder').'" src="'.$iconpath.'folder_pointer_closed.gif" />');                          '<img class="LC_icon" alt="'.&mt('closed folder').'" src="'.$iconpath.'folder_pointer_closed.gif" />');
                 }                  }
Line 431  sub display_directory { Line 449  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="Delete Checked Files" />'.
    &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.'" />
         </form>'          </form>'
Line 533  sub delete { Line 552  sub delete {
 }   } 
   
 sub delete_confirmed {  sub delete_confirmed {
     my ($r,$url)=@_;      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();
     my $port_path = &get_port_path();      my $port_path = &get_port_path();
       my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
                                                                           $uname);
     foreach my $delete_file (@files) {      foreach my $delete_file (@files) {
         $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path.          $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path.
        $env{'form.currentpath'}.         $env{'form.currentpath'}.
        $delete_file);         $delete_file);
         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 delete '.&display_file(undef, $delete_file).'</span><br />');                       &mt('An error occured ([_1]) while trying to delete 
                            [_2].',$result,&display_file(undef, $delete_file)).
                         '</span><br /><br />');
           } else {
               $r->print(&mt('File: [_1] deleted.',
                             &display_file(undef,$delete_file)));
               my $file_name = $env{'form.currentpath'}.$delete_file;
               $file_name = &prepend_group($file_name);
               my %access_controls = 
                       &Apache::lonnet::get_access_controls($current_permissions,
                                                            $group,$file_name);
               if (keys(%access_controls) > 0) {
                   my %changes; 
                   foreach my $key (keys(%{$access_controls{$file_name}})) {
                       $changes{'delete'}{$key} = 1;
                   }
                   if (keys(%changes) > 0) {
                       my ($outcome,$deloutcome,$new_values,$translation) =
                       &Apache::lonnet::modify_access_controls($file_name,\%changes,
                                                               $udom,$uname);
                       if ($outcome ne 'ok') {
                              $r->print('<br />'.&mt("An error occured ([_1]) while ".
                                  "trying to delete access controls for the file.",$outcome).
                                  '</span><br /><br />');
                       } else {
                           if ($deloutcome eq 'ok') {
                               $r->print('<br />'.&mt('Access controls also deleted for the file.').'<br /><br />');
                           } else {
                               $r->print('<span class="LC_error">'.'<br />'.
                                  &mt("An error occured ([_1]) while ".
                                      "trying to delete access controls for the file.",$deloutcome).
                                      '</span><br /><br />');
                           }
                       }
                   }
               }
         }          }
     }      }
     $r->print(&done(undef,$url));      $r->print(&done(undef,$url));
Line 603  sub rename { Line 659  sub rename {
 }  }
   
 sub rename_confirmed {  sub rename_confirmed {
     my ($r,$url)=@_;      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();
     my $port_path = &get_port_path();      my $port_path = &get_port_path();
Line 614  sub rename_confirmed { Line 670  sub rename_confirmed {
  $r->print(&done(undef,$url));   $r->print(&done(undef,$url));
  return;   return;
     }       } 
       my $chg_access;
     my $result=      my $result=
  &Apache::lonnet::renameuserfile($uname,$udom,   &Apache::lonnet::renameuserfile($uname,$udom,
             $port_path.$env{'form.currentpath'}.$env{'form.selectfile'},              $port_path.$env{'form.currentpath'}.$env{'form.selectfile'},
             $port_path.$env{'form.currentpath'}.$filenewname);              $port_path.$env{'form.currentpath'}.$filenewname);
     if ($result ne 'ok') {      if ($result eq 'ok') {
           $chg_access = &access_for_renamed($filenewname,$group,$udom,$uname);
       } else {      
  $r->print('<span class="LC_error">'.   $r->print('<span class="LC_error">'.
   &mt('An errror occured ([_1]) while trying to rename [_2]'    &mt('An error occured ([_1]) while trying to rename [_2]'
       .' to [_3]',$result,&display_file(),        .' to [_3]',$result,&display_file(),
       &display_file('',$filenewname)).'</span><br />');        &display_file('',$filenewname)).'</span><br />');
           return;
     }      }
     if ($filenewname ne $env{'form.filenewname'}) {      if ($filenewname ne $env{'form.filenewname'}) {
         $r->print(&mt("The new file name was changed from:<br />[_1] to [_2]",          $r->print(&mt("The new file name was changed from:<br />[_1] to [_2]",
       '<strong>'.&display_file('',$env{'form.filenewname'}).'</strong>',        '<strong>'.&display_file('',$env{'form.filenewname'}).'</strong>',
       '<strong>'.&display_file('',$filenewname).'</strong>'));        '<strong>'.&display_file('',$filenewname).'</strong>'));
     }      }
       $r->print($chg_access);
     $r->print(&done(undef,$url));      $r->print(&done(undef,$url));
 }  }
   
   sub access_for_renamed {
       my ($filenewname,$group,$udom,$uname) = @_;
       my $oldfile = $env{'form.currentpath'}.$env{'form.selectfile'};
       $oldfile = &prepend_group($oldfile);
       my $newfile = $env{'form.currentpath'}.$filenewname;
       $newfile = &prepend_group($newfile);
       my $current_permissions =
    &Apache::lonnet::get_portfile_permissions($udom,$uname);
       my %access_controls =
    &Apache::lonnet::get_access_controls($current_permissions,
        $group,$oldfile);
       my $chg_text;
       if (keys(%access_controls) > 0) {
           my %change_old;
           my %change_new;
           foreach my $key (keys(%{$access_controls{$oldfile}})) {
               $change_old{'delete'}{$key} = 1;
               $change_new{'activate'}{$key} = $access_controls{$oldfile}{$key};
           }
           my ($outcome,$deloutcome,$new_values,$translation) =
               &Apache::lonnet::modify_access_controls($oldfile,\%change_old,
       $udom,$uname);
           if ($outcome ne 'ok') {
               $chg_text ='<br /><br />'.&mt("An error occured ([_1]) while ".
                   "trying to delete access control records for the old name.",$outcome).
                   '</span><br />';
           } else {
               if ($deloutcome ne 'ok') {
                   $chg_text = '<br /><br /><span class="LC_error"><br />'.
       &mt("An error occured ([_1]) while ".
    "trying to delete access control records for the old name.",$deloutcome).
    '</span><br />';
               }
           }
           ($outcome,$deloutcome,$new_values,$translation) =
               &Apache::lonnet::modify_access_controls($newfile,\%change_new,
                                                       $udom,$uname);
           if ($outcome ne 'ok') {
               $chg_text .= '<br /><br />'.
    &mt("An error occured ([_1]) while ".
                   "trying to update access control records for the new name.",$outcome).
                   '</span><br />';
           }
           if ($chg_text eq '') {
               $chg_text = '<br /><br />'.&mt('Access controls updated to reflect the name change.');
           }
       }
       return $chg_text;
   }
   
 sub display_access {  sub display_access {
     my ($r,$url,$group,$can_setacl,$port_path) = @_;      my ($r,$url,$group,$can_setacl,$port_path) = @_;
     my ($uname,$udom) = &get_name_dom();      my ($uname,$udom) = &get_name_dom();
Line 651  sub display_access { Line 762  sub display_access {
     if ($group eq '') {      if ($group eq '') {
         $info .= (&mt("A listing of files viewable without log-in is available at: <a href='/adm/$udom/$uname/aboutme/portfolio'>http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme/portfolio</a>.<br />For logged in users a 'Display file listing' link will also appear (when there are viewable files) on your personal information page:<br /><a href='/adm/$udom/$uname/aboutme'>http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme</a><br />"));          $info .= (&mt("A listing of files viewable without log-in is available at: <a href='/adm/$udom/$uname/aboutme/portfolio'>http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme/portfolio</a>.<br />For logged in users a 'Display file listing' link will also appear (when there are viewable files) on your personal information page:<br /><a href='/adm/$udom/$uname/aboutme'>http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme</a><br />"));
     }      }
       
     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 (&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'));
         &access_setting_table($r,$access_controls{$file_name});          &access_setting_table($r,$access_controls{$file_name});
         my $button_text = {          my $button_text = {
                         'continue' => &mt('Proceed'),                          'continue' => &mt('Proceed'),
Line 1683  sub createdir { Line 1796  sub createdir {
 }  }
   
 sub get_portfolio_root {  sub get_portfolio_root {
     my ($udom,$uname) = @_;      my ($udom,$uname,$group) = @_;
     if (!(defined($udom)) || !(defined($uname))) {      if (!(defined($udom)) || !(defined($uname))) {
         ($uname,$udom) = &get_name_dom();          ($uname,$udom) = &get_name_dom();
     }      }
     my $path;      my $path = '/userfiles/portfolio';
     if (defined($env{'form.group'})) {      if (!defined($group)) { 
         $path = '/userfiles/groups/'.$env{'form.group'}.'/portfolio';          if (defined($env{'form.group'})) {
     } else {              $group = $env{'form.group'};      
         $path = '/userfiles/portfolio';          }
     }      }
       if (defined($group)) {
           $path = '/userfiles/groups/'.$group.'/portfolio';
       } 
     return (&Apache::loncommon::propath($udom,$uname).$path);      return (&Apache::loncommon::propath($udom,$uname).$path);
 }  }
   
Line 1933  sub handler { Line 2049  sub handler {
         }          }
     } elsif ($env{'form.action'} eq 'delete' && $env{'form.confirmed'}) {      } elsif ($env{'form.action'} eq 'delete' && $env{'form.confirmed'}) {
         if ($can_delete) {          if ($can_delete) {
     &delete_confirmed($r,$url);      &delete_confirmed($r,$url,$group);
         } else {          } else {
             &missing_priv($r,$url,'delete');              &missing_priv($r,$url,'delete');
         }          }
Line 1957  sub handler { Line 2073  sub handler {
         }          }
     } elsif ($env{'form.action'} eq 'rename' && $env{'form.confirmed'}) {      } elsif ($env{'form.action'} eq 'rename' && $env{'form.confirmed'}) {
         if ($can_modify) {          if ($can_modify) {
     &rename_confirmed($r,$url);      &rename_confirmed($r,$url,$group);
         } else {          } else {
             &missing_priv($r,$url,'rename');              &missing_priv($r,$url,'rename');
         }          }

Removed from v.1.161  
changed lines
  Added in v.1.167


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