Diff for /loncom/interface/portfolio.pm between versions 1.98 and 1.103

version 1.98, 2006/05/09 14:38:10 version 1.103, 2006/06/07 21:15:01
Line 30  use Apache::lontexconvert; Line 30  use Apache::lontexconvert;
 use Apache::lonfeedback;  use Apache::lonfeedback;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::longroup;
   use lib '/home/httpd/lib/perl';
   use LONCAPA;
   
 # receives a file name and path stub from username/userfiles/portfolio/  # receives a file name and path stub from username/userfiles/portfolio/
 # returns an anchor tag consisting encoding filename and currentpath  # returns an anchor tag consisting encoding filename and currentpath
Line 123  sub display_directory { Line 126  sub display_directory {
     my $checked_files;      my $checked_files;
     my $port_path = &get_port_path($group);      my $port_path = &get_port_path($group);
     my ($uname,$udom) = &get_name_dom($group);      my ($uname,$udom) = &get_name_dom($group);
     my $namespace = &get_namespace($group);   
     if (defined($group)) {      if (defined($group)) {
        $groupitem = '<input type="hidden" name="group" value="'.$group.'" />';          $groupitem = '<input type="hidden" name="group" value="'.$group.'" />'; 
        $groupecho = '&amp;group='.$group;         $groupecho = '&amp;group='.$group;
     }      }
     my %locked_files = &Apache::lonnet::get_marked_as_readonly_hash ($namespace,$udom,$uname);      my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
                                                                           $uname);
       my %locked_files = &Apache::lonnet::get_marked_as_readonly_hash(
                                                     $current_permissions,$group);
       my %access_controls = &Apache::lonnet::get_access_controls($current_permissions,$group);
       my $now = time;
     if ($env{"form.mode"} eq 'selectfile'){      if ($env{"form.mode"} eq 'selectfile'){
  &select_files($r);   &select_files($r);
  $checked_files =&Apache::lonnet::files_in_path($uname,$env{'form.currentpath'});   $checked_files =&Apache::lonnet::files_in_path($uname,$env{'form.currentpath'});
Line 151  sub display_directory { Line 158  sub display_directory {
         $r->print('<form method="post" name="checkselect" action="'.$url.'">');          $r->print('<form method="post" name="checkselect" action="'.$url.'">');
     } else {      } else {
         $r->print('<table border="0" cellspacing="2" cellpadding="2">'.          $r->print('<table border="0" cellspacing="2" cellpadding="2">'.
             '<tr><th colspan="2">Actions</th><th>&nbsp;</th><th>Name</th><th>Size</th><th>Last Modified</th></tr>');              '<tr><th colspan="2">Actions</th><th>&nbsp;</th><th>Name</th><th>Size</th><th>Last Modified</th><th>Current Access Status</th></tr>');
         $r->print('<form method="post" action="'.$url.'">');          $r->print('<form method="post" action="'.$url.'">');
     }      }
     if (defined($group)) {      if (defined($group)) {
Line 181  sub display_directory { Line 188  sub display_directory {
                 $r->print('</tr>');                   $r->print('</tr>'); 
             } else {              } else {
                 $r->print('<tr bgcolor="#CCCCFF">');                  $r->print('<tr bgcolor="#CCCCFF">');
                   my $fullpath = $current_path.$filename;
                   $fullpath = &prepend_group($fullpath,$group);
                 if ($select_mode eq 'true'){                  if ($select_mode eq 'true'){
                     $r->print('<td><input type="checkbox" name="checkfile" value="'.$filename.'"');                       $r->print('<td><input type="checkbox" name="checkfile" value="'.$filename.'"');
                     if ($$checked_files{$filename} eq 'selected') {                      if ($$checked_files{$filename} eq 'selected') {
                         $r->print("CHECKED");                          $r->print("CHECKED");
                     }                      }
                     $r->print('></td>');                      $r->print('></td>');
                 } else {                  } else {
                     if (exists $locked_files{$current_path.$filename}){                      if (exists $locked_files{$fullpath}) {
                         $r->print('<td colspan="2"><a href="'.$url.'?lockinfo='.$current_path.$filename.$groupecho.'">Locked</a></td>');                          $r->print('<td colspan="2"><a href="'.$url.'?lockinfo='.$current_path.$filename.$groupecho.'">Locked</a></td>');
                     } else {                      } else {
  my $cat='<img alt="'.&mt('Catalog Information').   my $cat='<img alt="'.&mt('Catalog Information').
Line 199  sub display_directory { Line 208  sub display_directory {
                             </td>');                              </td>');
                     }                      }
                 }                  }
                   my $curr_access;
                   my $pub_access = 0;
                   foreach my $key (sort(keys(%{$access_controls{$fullpath}}))) {
                       my ($scope,$end,$start) = ($key =~ /^\d+:(\w+)_(\d*)_?(\d*)$/);
                       if (($now > $start) && (!$end || $end > $now)) {
                           if ($scope eq 'public')  {
                               $pub_access = 1;
                               last;
                           }
                       }
                   }
                   if (!$pub_access) {
                       $curr_access = 'Private'
                   } elsif ($pub_access) {
                       $curr_access = 'Public';
                   }
                 $r->print('<td><img src="'.&Apache::loncommon::icon($filename).'"></td>');                  $r->print('<td><img src="'.&Apache::loncommon::icon($filename).'"></td>');
                 $r->print('<td><a href="'.$href_location.$filename.'">'.                  $r->print('<td><a href="'.$href_location.$filename.'">'.
     $filename.'</a></td>');       $filename.'</a></td>'); 
                 $r->print('<td>'.$size.'</td>');                  $r->print('<td>'.$size.'</td>');
                 $r->print('<td>'.&Apache::lonlocal::locallocaltime($mtime).'</td>');                  $r->print('<td>'.&Apache::lonlocal::locallocaltime($mtime).'</td>');
                   $r->print('<td><nobr>'.&mt($curr_access).'&nbsp;&nbsp;&nbsp;'.
                             '<a href="'.$url.'?access='.$filename.
                             '&amp;currentpath='.$current_path.$groupecho.
                             '">'.&mt('View/Change').'</a></nobr></td>');
                 $r->print('</tr>');                   $r->print('</tr>'); 
             }              }
         }          }
Line 229  sub display_directory { Line 258  sub display_directory {
 sub open_form {  sub open_form {
     my ($r,$url)=@_;      my ($r,$url)=@_;
     my @files=&Apache::loncommon::get_env_multiple('form.selectfile');      my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
     $r->print('<form method="post" action="'.$url.'">');      $r->print('<form name="portform" method="post" action="'.$url.'">');
     $r->print('<input type="hidden" name="action" value="'.      $r->print('<input type="hidden" name="action" value="'.
       $env{'form.action'}.'" />');        $env{'form.action'}.'" />');
     $r->print('<input type="hidden" name="confirmed" value="1" />');      $r->print('<input type="hidden" name="confirmed" value="1" />');
Line 298  sub delete { Line 327  sub delete {
     my ($r,$url,$group)=@_;      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,$group);
     my @files=&Apache::loncommon::get_env_multiple('form.selectfile');      my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
     my ($uname,$udom) = &get_name_dom($group);      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') {
Line 373  sub rename { Line 403  sub rename {
     my ($r,$url,$group)=@_;      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($group);      my ($uname,$udom) = &get_name_dom($group);
       $file_name = &prepend_group($file_name,$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 renamed.<br />");          $r->print ("The file is locked and cannot be renamed.<br />");
         $r->print(&done(undef,$url,$group));          $r->print(&done(undef,$url,$group));
Line 410  sub rename_confirmed { Line 441  sub rename_confirmed {
     }      }
     $r->print(&done(undef,$url,$group));      $r->print(&done(undef,$url,$group));
 }  }
   
 sub select_files {  sub select_files {
     my ($r,$group)=@_;      my ($r,$group)=@_;
     if ($env{'form.continue'} eq 'true') {      if ($env{'form.continue'} eq 'true') {
Line 476  sub upload { Line 508  sub upload {
     foreach my $line (@dir_list) {      foreach my $line (@dir_list) {
         my ($file_name)=split(/\&/,$line,2);          my ($file_name)=split(/\&/,$line,2);
         if ($file_name eq $fname){          if ($file_name eq $fname){
               $file_name = $env{'form.currentpath'}.$file_name;
               $file_name = &prepend_group($file_name,$group);
             $found_file = 1;              $found_file = 1;
             if (&Apache::lonnet::is_locked($env{'form.currentpath'}.$file_name,$udom,$uname) eq 'true') {              if (defined($group)) {
                   $file_name = $group.'/'.$file_name;
               }
               if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {
                 $locked_file = 1;                  $locked_file = 1;
             }               } 
         }          }
Line 501  sub upload { Line 538  sub upload {
     } else {      } else {
         my $result=&Apache::lonnet::userfileupload('uploaddoc','',          my $result=&Apache::lonnet::userfileupload('uploaddoc','',
          $port_path.$env{'form.currentpath'});           $port_path.$env{'form.currentpath'});
         print STDERR "result was $result for $port_path.$env{'form.currentpath'}\n";  
         if ($result !~ m|^/uploaded/|) {          if ($result !~ m|^/uploaded/|) {
             $r->print('<font color="red"> An errror occured ('.$result.              $r->print('<font color="red"> An errror occured ('.$result.
               ') while trying to upload '.&display_file().'</font><br />');                ') while trying to upload '.&display_file().'</font><br />');
Line 514  sub upload { Line 550  sub upload {
 sub lock_info {  sub lock_info {
     my ($r,$url,$group) = @_;      my ($r,$url,$group) = @_;
     my ($uname,$udom) = &get_name_dom($group);      my ($uname,$udom) = &get_name_dom($group);
     my %current_permissions = &Apache::lonnet::dump('file_permissions',$udom,$uname);      my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
                                                                          $uname);
     my $file_name = $env{'form.lockinfo'};      my $file_name = $env{'form.lockinfo'};
     foreach my $key(keys(%current_permissions)) {      $file_name = &prepend_group($file_name,$group);
         if ($file_name eq $key) {      if (defined($file_name) && defined($$current_permissions{$file_name})) {
             foreach my $array_item (@{$current_permissions{$key}}) {          foreach my $array_item (@{$$current_permissions{$file_name}}) {
                 if (ref($array_item)) {              if (ref($array_item) eq 'ARRAY') {
                     $r->print('<strong>'.$key.'</strong> was submitted in response to problem: <strong>'.                  my $filetext;
                             &Apache::lonnet::gettitle($$array_item[0]).'</strong><br />');                  if (defined($group)) {
                     my %course_description = &Apache::lonnet::coursedescription($$array_item[1]);                      $filetext = '<strong>'.$env{'form.lockinfo'}.
                     $r->print('In the course: <strong>'.$course_description{'description'}.'</strong><br />');                                      '</strong> (group: '.$group.')'; 
                     # $r->print('the third is '.$$array_item[2].'<br>');                  } else {
                     # $r->print("item is $$array_item[0]<br> and $$array_item[0]");                      $filetext = '<strong>'.$file_name.'</strong>';
                 }                  } 
                   $r->print(&mt('[_1] was submitted in response to problem: ',
                                 $filetext).
                             '<strong>'.&Apache::lonnet::gettitle($$array_item[0]).
                             '</strong><br />');
                   my %course_description = &Apache::lonnet::coursedescription($$array_item[1]);
                   $r->print(&mt('In the course: <strong>[_1]</strong><br />',
                                 $course_description{'description'}));
                   # $r->print('the third is '.$$array_item[2].'<br>');
                   # $r->print("item is $$array_item[0]<br> and $$array_item[0]");
             }              }
         }              }
     }      }
     $r->print(&done('Back',$url,$group));      $r->print(&done('Back',$url,$group));
     return 'ok';      return 'ok';
Line 603  sub get_name_dom { Line 649  sub get_name_dom {
     return ($uname,$udom);      return ($uname,$udom);
 }  }
   
   sub prepend_group {
       my ($filename,$group) = @_;
       if (defined($group)) {
           $filename = $group.'/'.$filename;
       }
       return $filename;
   }
   
 sub get_namespace {  sub get_namespace {
     my ($group) = @_;      my ($group) = @_;
     my $namespace = 'portfolio';      my $namespace = 'portfolio';
Line 629  sub handler { Line 683  sub handler {
     my $r = shift;      my $r = shift;
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
          ['selectfile','currentpath','meta','lockinfo','currentfile',           ['selectfile','currentpath','meta','lockinfo','currentfile',
     'action','fieldname','mode','rename','continue','group']);    'action','fieldname','mode','rename','continue','group','access']);
     my ($uname,$udom,$portfolio_root,$url,$group,$caller,$title);      my ($uname,$udom,$portfolio_root,$url,$group,$caller,$title);
     if ($r->uri =~ m|^(/adm/)([^/]+)|) {      if ($r->uri =~ m|^(/adm/)([^/]+)|) {
         $url = $1.$2;          $url = $1.$2;
Line 650  sub handler { Line 704  sub handler {
         $group =~ s/\W//g;          $group =~ s/\W//g;
         if ($group) {          if ($group) {
             ($uname,$udom) = &get_name_dom($group);              ($uname,$udom) = &get_name_dom($group);
             my %curr_groups = &Apache::loncommon::coursegroups($udom,$uname,              my %curr_groups = &Apache::longroup::coursegroups($udom,$uname,
        $group);          $group); 
             if (%curr_groups) {              if (%curr_groups) {
                 if (($view_permission) || (&Apache::lonnet::allowed('rgf',                  if (($view_permission) || (&Apache::lonnet::allowed('rgf',
Line 732  sub handler { Line 786  sub handler {
             #    1) never been here, so directory structure not created              #    1) never been here, so directory structure not created
     #    2) back-button navigation after deleting a directory      #    2) back-button navigation after deleting a directory
     if ($current_path eq '/'){      if ($current_path eq '/'){
         &Apache::lonnet::mkdiruserfile($uname,$udom,'portfolio');          &Apache::lonnet::mkdiruserfile($uname,$udom,
          &get_port_path($group));
     } else {      } else {
                 # some directory that snuck in get rid of the directory                  # some directory that snuck in get rid of the directory
                 # from the recent pulldown, just in case                  # from the recent pulldown, just in case

Removed from v.1.98  
changed lines
  Added in v.1.103


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