Diff for /loncom/interface/portfolio.pm between versions 1.97 and 1.102

version 1.97, 2006/03/19 22:08:38 version 1.102, 2006/06/07 18:41:48
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;
       my $curr_access;
       my $pub_access = 0;
       foreach my $key (sort(keys(%access_controls))) {
           my ($scope,$end,$start) = ($key =~ /^\d+:(\w+)_(\d*)_?(\d*)$/);
           if (($now > $start) && (!$end || $end > $now)) {
               if ($scope eq 'public')  {
                   $pub_access = 1;
               }
            }
       }
       if (!$pub_access) {
           $curr_access = 'Private'
       } elsif ($pub_access) {
           $curr_access = 'Public';
       }
     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 173  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 182  sub display_directory { Line 204  sub display_directory {
             } else {              } else {
                 $r->print('<tr bgcolor="#CCCCFF">');                  $r->print('<tr bgcolor="#CCCCFF">');
                 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");
                     }                      }
Line 204  sub display_directory { Line 226  sub display_directory {
     $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 255  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 324  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 400  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 438  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 505  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 535  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 547  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>'.                  if ($$array_item[0] eq 'access' ||
                             &Apache::lonnet::gettitle($$array_item[0]).'</strong><br />');                      $$array_item[0] eq 'accesscount' ) {
                     my %course_description = &Apache::lonnet::coursedescription($$array_item[1]);                      next;
                     $r->print('In the course: <strong>'.$course_description{'description'}.'</strong><br />');  
                     # $r->print('the third is '.$$array_item[2].'<br>');  
                     # $r->print("item is $$array_item[0]<br> and $$array_item[0]");  
                 }                  }
                   my $filetext;
                   if (defined($group)) {
                       $filetext = '<strong>'.$env{'form.lockinfo'}.
                                       '</strong> (group: '.$group.')'; 
                   } else {
                       $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 650  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 684  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 649  sub handler { Line 704  sub handler {
         $group = $env{'form.group'};          $group = $env{'form.group'};
         $group =~ s/\W//g;          $group =~ s/\W//g;
         if ($group) {          if ($group) {
             my %curr_groups = ();  
             ($uname,$udom) = &get_name_dom($group);              ($uname,$udom) = &get_name_dom($group);
             if (&Apache::loncommon::coursegroups(\%curr_groups,$udom,$uname,              my %curr_groups = &Apache::longroup::coursegroups($udom,$uname,
                                                        $group)) {         $group); 
               if (%curr_groups) {
                 if (($view_permission) || (&Apache::lonnet::allowed('rgf',                  if (($view_permission) || (&Apache::lonnet::allowed('rgf',
                                       $env{'request.course.id'}.'/'.$group))) {                                        $env{'request.course.id'}.'/'.$group))) {
                     $portfolio_root = &get_portfolio_root($group);                      $portfolio_root = &get_portfolio_root($group);
Line 732  sub handler { Line 787  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.97  
changed lines
  Added in v.1.102


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