Diff for /loncom/interface/portfolio.pm between versions 1.96 and 1.107

version 1.96, 2006/03/19 21:54:41 version 1.107, 2006/06/20 03:13:08
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 159  sub display_directory { Line 166  sub display_directory {
     }      }
     my $href_location="/uploaded/$udom/$uname/$port_path".$current_path;      my $href_location="/uploaded/$udom/$uname/$port_path".$current_path;
     my $href_edit_location="/editupload/$udom/$uname/$port_path".$current_path;      my $href_edit_location="/editupload/$udom/$uname/$port_path".$current_path;
       my @dir_lines;
       my %versioned;
     foreach my $line (sort       foreach my $line (sort 
       {         { 
   my ($afile)=split('&',$a,2);    my ($afile)=split('&',$a,2);
Line 169  sub display_directory { Line 178  sub display_directory {
     #$dom       #$dom 
     my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);       my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16); 
     $filename =~ s/\s+$//;      $filename =~ s/\s+$//;
       my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);
       if ($version) {
          $versioned{$fname} .= $version.",";
       }
           push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]);
       }
       foreach my $line (@dir_lines) {
           my ($filename,$dom,$testdir,$size,$mtime,$obs) = @$line;
           my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);
     if (($filename ne '.') && ($filename ne '..') && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/)) {      if (($filename ne '.') && ($filename ne '..') && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/)) {
             if ($dirptr&$testdir) {              if ($dirptr&$testdir) {
                 if ($select_mode eq 'true'){                  if ($select_mode eq 'true'){
Line 181  sub display_directory { Line 199  sub display_directory {
                 $r->print('</tr>');                   $r->print('</tr>'); 
             } else {              } else {
                 $r->print('<tr bgcolor="#CCCCFF">');                  $r->print('<tr bgcolor="#CCCCFF">');
                   my $version_flag;
                   if (exists($versioned{$fname})) {
                      $version_flag = "*";
                   } else {
                       $version_flag = "";
                   }
                  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 225  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 =~ /^[^:]+:([a-z]+)_(\d*)_?(\d*)$/);
                       if (($now > $start) && (!$end || $end > $now)) {
                           if ($scope eq 'public')  {
                               $pub_access = 1;
                           }
                       }
                   }
                   if (!$pub_access) {
                       $curr_access = 'Private'
                   } else {
                       $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 274  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 343  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 419  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 457  sub rename_confirmed {
     }      }
     $r->print(&done(undef,$url,$group));      $r->print(&done(undef,$url,$group));
 }  }
   
   sub display_access {
       my ($r,$url,$group) = @_;
       my ($uname,$udom) = &get_name_dom($group);
       my $file_name = $env{'form.currentpath'}.$env{'form.access'};
       $file_name = &prepend_group($file_name,$group);
       my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
                                                                           $uname);
       my %access_controls = &Apache::lonnet::get_access_controls($current_permissions,$group,$file_name);
       &open_form($r,$url);
       $r->print('<h3>'.&mt('Allowing others to retrieve portfolio file: [_1]',$env{'form.currentpath'}.$env{'form.access'}).'</h3>'."\n");
       $r->print(&mt('Access to this file by others can be set to be one the following types: public.').'<br /><ul><li>'.&mt('Public files are available to anyone without the need for login.').'</li></ul><br />');
       &access_setting_table($r,$access_controls{$file_name});
       &close_form($r,$url,$group);
   }
   
   sub update_access {
       my ($r,$url,$group) = @_;
       my $totalprocessed = 0;
       my %processing;
       my %title  = (
                            'activate' => 'New controls added',
                            'delete'   => 'Existing controls deleted',
                            'update'   => 'Existing controls modified',
                        );
       my $changes;   
       foreach my $chg (sort(keys(%title))) {     
           @{$processing{$chg}} = &Apache::loncommon::get_env_multiple('form.'.$chg);
           $totalprocessed += @{$processing{$chg}};
           foreach my $num (@{$processing{$chg}}) {
               my $scope = $env{'form.scope_'.$num};
               my ($start,$end) = &get_dates_from_form($num);
               my $newkey = $num.':'.$scope.'_'.$end.'_'.$start;
               if ($chg eq 'delete') {
                   $$changes{$chg}{$newkey} = 1;
               } else {
                   $$changes{$chg}{$newkey} = 
                                    &build_access_record($num,$scope,$start,$end);
               }
           }
       }
       my $file_name = $env{'form.currentpath'}.$env{'form.selectfile'};
       $r->print('<h3>'.&mt('Allowing others to retrieve portfolio file: [_1]',$file_name).'</h3>'."\n");
       $file_name = &prepend_group($file_name,$group);
       my ($uname,$udom) = &get_name_dom($group);
       my ($errors,$outcome,$deloutcome,$new_values,$translation);
       if ($totalprocessed) {
           ($outcome,$deloutcome,$new_values,$translation) =
           &Apache::lonnet::modify_access_controls($file_name,$changes,$udom,$uname);
       }
       my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,                                                                    $uname);
       my %access_controls = &Apache::lonnet::get_access_controls($current_permissions,$group,$file_name);
       if ($totalprocessed) {
           if ($outcome eq 'ok') {
               my $updated_controls = $access_controls{$file_name};
               my ($showstart,$showend);
               $r->print(&Apache::loncommon::start_data_table());
               $r->print(&Apache::loncommon::start_data_table_row());
               $r->print('<th>'.&mt('Type of change').'</th><th>'.&mt('Access control').'</th><th>'.&mt('Start date').'</th><th>'.&mt('End date').'</th>');
               $r->print(&Apache::loncommon::end_data_table_row());
               foreach my $chg (sort(keys(%processing))) {
                   if (@{$processing{$chg}} > 0) {
                       if ($chg eq 'delete') {
                           if (!($deloutcome eq 'ok')) {
                               $errors .= &mt('A problem occurred deleting access controls: [_1]',$deloutcome);
                               next;
                           }
                       }
                       my $numchgs = @{$processing{$chg}};
                       $r->print(&Apache::loncommon::start_data_table_row());
                       $r->print('<td rowspan="'.$numchgs.'">'.&mt($title{$chg}).'.</td>');
                       my $count = 0;
                       foreach my $key (sort(keys(%{$$changes{$chg}}))) {
                           if ($count) {
                               $r->print(&Apache::loncommon::start_data_table_row());
                           }
                           my ($num,$scope,$end,$start) = 
                                      ($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/);
                           my $newkey = $key;
                           if ($chg eq 'activate') {
                               $newkey =~ s/^(\d+)/$$translation{$1}/;
                           }
                           my %content = &Apache::lonnet::parse_access_controls(
                                                        $$updated_controls{$newkey});
                           if ($chg eq 'delete') {
                               $showstart = &mt('Deleted');
                               $showend = $showstart;
                           } else {
                               $showstart = localtime($start);
                               if ($end == 0) {
                                   $showend = &mt('No end date');
                               } else {
                                   $showend = localtime($end);
                               }
                           }
                           $r->print('<td>'.&mt($scope).'</td><td>'.$showstart.
                                     '</td><td>'. $showend.'</td>');
                           $r->print(&Apache::loncommon::end_data_table_row());
                           $count ++;
                       }
                   }
               }
               $r->print(&Apache::loncommon::end_data_table());
           } else {
               if ((@{$processing{'activate'}} > 0) || (@{$processing{'update'}} > 0)) {
                   $errors .= &mt('A problem occurred storing access control settings: [_1]',$outcome);
               }
           }
           if ($errors) { 
               $r->print($errors);
           }
       }
       $r->print('<br /><a href="'.$url.'?access='.$env{'form.selectfile'}.'&currentpath='.$env{'form.currentpath'}.'">'.&mt('Display all access settings for this file').'</a>');
       return;
   }
   
   sub build_access_record {
       my ($num,$scope,$start,$end) = @_;
       my $record = '<scope type="'.$scope.'"><start>'.$start.'</start><end>'.$end.
                    '</end></scope>';
       return $record;
   }
   
   sub get_dates_from_form {
       my ($id) = @_;
       my $startdate;
       my $enddate;
       $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate_'.$id);
       $enddate   = &Apache::lonhtmlcommon::get_date_from_form('enddate_'.$id);
       if ( exists ($env{'form.noend_'.$id}) ) {
           $enddate = 0;
       }
       return ($startdate,$enddate);
   }
   
   sub access_setting_table {
       my ($r,$access_controls) = @_;
       my ($public,$publictext);
       $publictext = '<b>'.&mt('Off').'</b>';
       my ($guest,$guesttext);
       $guesttext = '<b>'.&mt('Off').'</b>';
       my @courses = ();
       my @groups = ();
       my @domains = ();
       my @users = ();
       my $now = time;
       my $then = $now + (60*60*24*180); # six months approx.
       foreach my $key (sort(keys(%{$access_controls}))) {
           my ($scope) = ($key =~ /^[^:]+:([a-z]+)_\d*_?\d*$/);
           if ($scope eq 'public') {
               $public = $key;
               $publictext = '<b>'.&mt('On').'</b>';
           }
       }
       $r->print(&Apache::loncommon::start_data_table());
       $r->print(&Apache::loncommon::start_data_table_row());
       $r->print('<th>'.&mt('Access Type').'</th><th colspan="3">'.
                 &mt('Settings').'</th>'."\n");
       $r->print(&Apache::loncommon::end_data_table_row());
       $r->print(&Apache::loncommon::start_data_table_row());
       $r->print('<td><b>Public</b><br />'.$publictext.'</td><td colspan="3">');
       $r->print(&Apache::loncommon::start_data_table());
       $r->print(&Apache::loncommon::start_data_table_row());
       my ($pub_startdate,$pub_enddate,$pub_action,$pub_noend);
       if ($public) {
           my ($num,$end,$start) = ($public =~ /^([^:]+):[a-z]+_(\d*)_?(\d*)$/);
           if ($end == 0) {
               $pub_noend = 'checked="checked"';
           }
           $pub_action = '<td><label>
                            <input type="checkbox" name="delete" value="'.$num.
                         '" />'.&mt('Delete').'
                         </label> <br />
                         <label><input type="checkbox" name="update" value="'.
         $num.'" />'.&mt('Update').
         '</label>'.
                         '<input type="hidden" name="scope_'.$num.'"'.
                         ' value="public" /></td>';
           $pub_startdate = &Apache::lonhtmlcommon::date_setter('portform',
                             'startdate_'.$num,$start,undef,undef,undef,1,undef,
                             undef,undef,1);
           $pub_enddate = &Apache::lonhtmlcommon::date_setter('portform',
                             'enddate_'.$num,$end,undef,undef,undef,1,undef,
                             undef,undef,1).
                          '&nbsp;&nbsp;<nobr><label>
                          <input type="checkbox" name="noend_'.
                          $num.'" '.$pub_noend.' />'.&mt('No end date').
          '</label></nobr>';
       } else {
           $pub_action = '<label>'.
                 '<input type="checkbox" name="activate" value="0" />'.
                         &mt('Activate').'</label>'.
                         '<input type="hidden" name="scope_0" value="public" />';
           $pub_startdate = &Apache::lonhtmlcommon::date_setter('portform',
                             'startdate_0',$now,undef,undef,undef,1,undef,
                             undef,undef,1);
           $pub_enddate = &Apache::lonhtmlcommon::date_setter('portform',
                             'enddate_0',$then,,undef,undef,undef,1,undef,
                             undef,undef,1).
                          '&nbsp;&nbsp<nobr><label><input type="checkbox" '.
                          'name="noend_0" />'.&mt('No end date').
                          '</label></nobr>';
   
       }
       $r->print('<td>'.$pub_action.'</td><td>'.&mt('Start: ').$pub_startdate.
                 '<br />'.&mt('End: ').$pub_enddate.'</td>');
       $r->print(&Apache::loncommon::end_data_table_row());
       $r->print(&Apache::loncommon::end_data_table());
       $r->print('</td>');
       $r->print(&Apache::loncommon::end_data_table_row());
       $r->print(&Apache::loncommon::end_data_table());
   }
   
 sub select_files {  sub select_files {
     my ($r,$group)=@_;      my ($r,$group) = @_;
     if ($env{'form.continue'} eq 'true') {      if ($env{'form.continue'} eq 'true') {
         # here we update the selections for the currentpath          # here we update the selections for the currentpath
         # eventually, have to handle removing those not checked, but . . .           # eventually, have to handle removing those not checked, but . . . 
Line 476  sub upload { Line 736  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 766  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 778  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 877  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 911  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 931  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 682  sub handler { Line 964  sub handler {
     # Give the LON-CAPA page header      # Give the LON-CAPA page header
     if ($env{"form.mode"} eq 'selectfile'){      if ($env{"form.mode"} eq 'selectfile'){
         $r->print(&Apache::loncommon::start_page($title,undef,          $r->print(&Apache::loncommon::start_page($title,undef,
  {'only_body' => 1});   {'only_body' => 1}));
     } else {      } else {
         $r->print(&Apache::loncommon::start_page($title);          $r->print(&Apache::loncommon::start_page($title));
     }      }
     $r->rflush();      $r->rflush();
  if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){   if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){
Line 717  sub handler { Line 999  sub handler {
         $env{'form.selectfile'} = $env{'form.rename'};          $env{'form.selectfile'} = $env{'form.rename'};
         $env{'form.action'} = 'rename';          $env{'form.action'} = 'rename';
  &rename($r,$url,$group);   &rename($r,$url,$group);
       } elsif ($env{'form.access'}) {
           $env{'form.selectfile'} = $env{'form.access'};
           $env{'form.action'} = 'chgaccess';
           &display_access($r,$url,$group);
       } elsif ($env{'form.action'} eq 'chgaccess') {
           &update_access($r,$url,$group);
     } elsif ($env{'form.createdir'}) {      } elsif ($env{'form.createdir'}) {
  &createdir($r,$url,$group);   &createdir($r,$url,$group);
     } elsif ($env{'form.lockinfo'}) {      } elsif ($env{'form.lockinfo'}) {
Line 732  sub handler { Line 1020  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.96  
changed lines
  Added in v.1.107


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