Diff for /loncom/interface/portfolio.pm between versions 1.154 and 1.163

version 1.154, 2006/08/12 06:18:44 version 1.163, 2006/09/19 14:02:42
Line 164  TABLE Line 164  TABLE
 }  }
   
 sub display_directory_line {  sub display_directory_line {
     my ($r,$select_mode,$fullpath, $filename, $mtime, $size, $css_class,      my ($r,$select_mode, $filename, $mtime, $size, $css_class,
  $line, $access_controls, $curr_access, $now, $version_flag,   $line, $access_controls, $curr_access, $now, $version_flag,
  $href_location, $url, $current_path, $access_admin_text, $versions)=@_;   $href_location, $url, $current_path, $access_admin_text, $versions)=@_;
     # my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);   
       my $fullpath =  &prepend_group($current_path.$filename);
     $r->print('<tr class="'.$css_class.'">');      $r->print('<tr class="'.$css_class.'">');
     $r->print($line); # contains first two cells of table      $r->print($line); # contains first two cells of table
     if ($$version_flag{$filename}) { # versioned can't be versioned, so TRUE when root file      my $lock_info;
       if ($version_flag) { # versioned can't be versioned, so TRUE when root file
         $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{$filename}.'</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();
         my $permissions_hash = &Apache::lonnet::get_portfile_permissions($domain,$user);          my $permissions_hash = &Apache::lonnet::get_portfile_permissions($domain,$user);
         my $lock_info;          if (defined($$permissions_hash{$fullpath})) {
         foreach my $key (keys(%$permissions_hash)) {              foreach my $array_item (@{$$permissions_hash{$fullpath}}) {
             $key =~ s|^/||;                  if (ref($array_item) eq 'ARRAY') {
             if ($key =~ /$filename/) {                      if ($$array_item[-1] eq 'handback') {
                 &Apache::lonnet::logthis("filename match");                          $lock_info = 'Handback';
                 my $value = $$permissions_hash{$key};                      } elsif ($$array_item[-1] eq 'graded') {
                 if (ref($value) eq 'ARRAY') {                          $lock_info = 'Graded';
                     my $info = pop(@$value);  
                     my $info2 = pop(@$info);  
                     &Apache::lonnet::logthis("the info2 is $info2");  
                     $lock_info = $info2;  
                     #foreach my $key2(keys(%hash)){  
                      #   &Apache::lonnet::logthis("a key2 is $key2");  
                     #}  
                     foreach my $value_element (@$value) {  
                         #&Apache::lonnet::logthis("and the array element is $value_element");  
                         foreach my $sub_value (@$value_element) {  
                             #&Apache::lonnet::logthis("subvalue is $sub_value");  
                         }  
                     }                      }
                 }                   }
             }              }
         }          }
         $r->print('<td colspan="2">'.$lock_info.'</td>');   if ($lock_info) {
       my %anchor_fields = ('lockinfo' => $fullpath);
       if ($versions) { # hold the folder open
           my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($fullpath);
           $fname =~ s|^/||;
           $anchor_fields{'showversions'} = $fname.'.'.$extension;
       }
       $lock_info = &make_anchor(undef,\%anchor_fields,$lock_info);
    }
    $r->print('<td colspan="2">'.$lock_info.'</td>');
     }      }
     # $r->print('<td>'.$$version_flag{$filename}.'</td><td>');      # $r->print('<td>'.$$version_flag{$filename}.'</td><td>');
     $r->print('<td>'.&make_anchor($href_location.$filename,undef,$filename).'</td>');       $r->print('<td>'.&make_anchor($href_location.$filename,undef,$filename).'</td>'); 
Line 268  sub display_directory { Line 267  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 @dir_lines;
     my @version_lines;  
     my %versioned;      my %versioned;
     foreach my $dir_line (sort       foreach my $dir_line (sort 
       {         { 
Line 282  sub display_directory { Line 280  sub display_directory {
     $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);
     if ($version) {      if ($version) {
        push(@version_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]);      my $fullpath = &prepend_group($current_path.$fname.'.'.$extension);
        $versioned{$fname.'.'.$extension} .= $version.",";         push(@{ $versioned{$fullpath} },
    [$filename,$dom,$testdir,$size,$mtime,$obs,]);
     } else {      } else {
        push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]);         push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]);
     }      }
Line 292  sub display_directory { Line 291  sub display_directory {
         my ($filename,$dom,$testdir,$size,$mtime,$obs) = @$dir_line;          my ($filename,$dom,$testdir,$size,$mtime,$obs) = @$dir_line;
         my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);          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+)\.([^\.]*)$/)) {
        my %version_flag;         my $version_flag;
        my $show_versions;         my $show_versions;
        if ($env{'form.showversions'} eq $filename) {      my $fullpath =  &prepend_group($current_path.$filename);
          if ($env{'form.showversions'} =~ /$filename/) {
            $show_versions = 'true';             $show_versions = 'true';
        }         }
        if (exists($versioned{$filename})) {         if (exists($versioned{$fullpath})) {
            my %anchor_fields = (             my %anchor_fields = (
                'selectfile' => $filename,                 'selectfile' => $fullpath,
                'continue' => 'false',                 'continue' => 'false',
                'currentpath' => $current_path,                 'currentpath' => $current_path,
            );             );
            if ($show_versions) {             if ($show_versions) {
                     $version_flag{$filename} = &make_anchor('portfolio',\%anchor_fields,                 # 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,
                         '<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
                     $version_flag{$filename} = &make_anchor('portfolio',\%anchor_fields,                 $anchor_fields{'showversions'} = $env{'form.showversions'}.','.$filename;
                       $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" />');
                 }                  }
        } else {         } else {
            $version_flag{$filename} = '&nbsp;';             $version_flag = '&nbsp;';
        }         }
             if ($dirptr&$testdir) {              if ($dirptr&$testdir) {
  my $colspan='colspan="2"';   my $colspan='colspan="2"';
Line 328  sub display_directory { Line 333  sub display_directory {
                     'fieldname'     => $env{"form.fieldname"},                      'fieldname'     => $env{"form.fieldname"},
                     'continue'      => $env{"form.continue"}                      'continue'      => $env{"form.continue"}
                 );                    );  
                 $r->print('<td>'.$version_flag{$filename}.'</td><td>'.&make_anchor($url,\%anchor_fields,$filename.'/').'</td>');                   $r->print('<td>'.$version_flag.'</td><td>'.&make_anchor($url,\%anchor_fields,$filename.'/').'</td>'); 
                 $r->print('</tr>');                   $r->print('</tr>'); 
             } else {              } else {
  my $css_class = 'LC_browser_file';   my $css_class = 'LC_browser_file';
  my $line;   my $line;
                 my $fullpath = $current_path.$filename;  
                 $fullpath = &prepend_group($fullpath);  
                 if ($select_mode eq 'true') {                  if ($select_mode eq 'true') {
                     $line='<td><input type="checkbox" name="checkfile" value="'.$filename.'"';                      $line='<td><input type="checkbox" name="checkfile" value="'.$filename.'"';
     if ($$checked_files{$filename} eq 'selected') {      if ($$checked_files{$filename} eq 'selected') {
Line 344  sub display_directory { Line 347  sub display_directory {
                 } else {                  } else {
                     if (exists $locked_files{$fullpath}) {                      if (exists $locked_files{$fullpath}) {
                         my %anchor_fields = (                          my %anchor_fields = (
                             'lockinfo' => $current_path.$filename                              'lockinfo' => $fullpath
                         );                          );
                         $line.='<td colspan="2">'.&make_anchor($url,\%anchor_fields,'Locked').'</td>';                          $line.='<td colspan="2">'.&make_anchor($url,\%anchor_fields,'Locked').'</td>';
  $css_class= 'LC_browser_file_locked';   $css_class= 'LC_browser_file_locked';
Line 365  sub display_directory { Line 368  sub display_directory {
                                 currentpath => $current_path                                  currentpath => $current_path
                             );                              );
                             $line .= &make_anchor($url,\%anchor_fields,'Rename');                              $line .= &make_anchor($url,\%anchor_fields,'Rename');
                             $line .= '</td><td>'.&make_anchor($href_edit_location.$filename.'.meta',undef,$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 .= '</td>';                          $line .= '</td>';
Line 404  sub display_directory { Line 407  sub display_directory {
  $curr_access = join('+ ',@allaccesses);   $curr_access = join('+ ',@allaccesses);
     }      }
  }   }
                 &display_directory_line($r,$select_mode,$fullpath, $filename, $mtime, $size, $css_class, $line,                   &display_directory_line($r,$select_mode, $filename, $mtime, $size, $css_class, $line, 
                                         \%access_controls, $curr_access,$now, \%version_flag, $href_location,                                           \%access_controls, $curr_access,$now, $version_flag, $href_location, 
                                         $url, $current_path, $access_admin_text);                                          $url, $current_path, $access_admin_text);
  if ($show_versions) {   if ($show_versions) {
     foreach my $dir_line (@version_lines) {      foreach my $dir_line (@{ $versioned{$fullpath} }) {
         my ($v_filename,$dom,$testdir,$size,$mtime,$obs) = @$dir_line;          my ($v_filename,$dom,$testdir,$size,$mtime,$obs) =
                         my ($v_fname,$version,$v_extension) = &Apache::grades::file_name_version_ext($v_filename);      @$dir_line;
                         $line = '<td colspan="2">&nbsp;</td>';                          $line = '<td colspan="2">&nbsp;</td>';
                         if (($v_fname eq $fname)&&($v_extension eq $extension)) {   &display_directory_line($r,$select_mode, $v_filename, $mtime, $size, 
             &display_directory_line($r,$select_mode,$fullpath, $v_filename, $mtime, $size,    $css_class, $line, \%access_controls, $curr_access, $now,
                             $css_class, $line, \%access_controls, $curr_access, $now,   undef, $href_location, $url, $current_path, $access_admin_text, 1);
                              \%version_flag, $href_location, $url, $current_path, $access_admin_text, 1);  
         }  
     }      }
  }   }
             }              }
Line 505  sub done { Line 506  sub done {
         $message='Done';          $message='Done';
     }      }
     my %anchor_fields = (      my %anchor_fields = (
           'showversions' => $env{'form.showversions'},
         'currentpath' => $env{'form.currentpath'},          'currentpath' => $env{'form.currentpath'},
         'fieldname' => $env{'form.fieldname'},          'fieldname' => $env{'form.fieldname'},
         'mode'      => $env{'form.mode'}          'mode'      => $env{'form.mode'}
Line 645  sub display_access { Line 647  sub display_access {
     my %access_controls = &Apache::lonnet::get_access_controls($current_permissions,$group,$file_name);      my %access_controls = &Apache::lonnet::get_access_controls($current_permissions,$group,$file_name);
     my $aclcount = keys(%access_controls);      my $aclcount = keys(%access_controls);
     my $header = '<h3>'.&mt('Allowing others to retrieve file: [_1]',$port_path.$env{'form.currentpath'}.$env{'form.access'}).'</h3>';      my $header = '<h3>'.&mt('Allowing others to retrieve file: [_1]',$port_path.$env{'form.currentpath'}.$env{'form.access'}).'</h3>';
     my $info .= &mt('Access to this file by others can be set to be one or ');      my $info .= &mt('Access to this file by others can be set to be one or more of the following types: public, passphrase-protected or conditional.');
     $info .= &mt('more of the following types: public, passphrase-protected or conditional.');  
     $info .= '<br /><ul><li>'.&mt('Public files are available to anyone without the need for login.');      $info .= '<br /><ul><li>'.&mt('Public files are available to anyone without the need for login.');
     $info .= '</li><li>'.&mt('Passphrase-protected files do not require log-in, but will require ');      $info .= '</li><li>'.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.');
     $info .= &mt('the viewer to enter the passphrase you set.');      $info .= '</li><li>'.&mt('Conditional files are accessible to logged-in users with accounts in the LON-CAPA network, who satisfy the conditions you set.').'<br />';
     $info .= '</li><li>'.&mt('Conditional files are accessible to logged-in users with accounts ');      $info .= &mt('The conditions can include affiliation with a particular course or group, or a user account in a specific domain.').'<br />';
     $info .= &mt('in the LON-CAPA network, who satisfy the conditions you set.').'<br />';  
     $info .= &mt('The conditions can include affiliation with a particular course or group, ');  
     $info .= &mt('or a user account in a specific domain.').'<br />';  
     $info .= &mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.').'</li></ul>';      $info .= &mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.').'</li></ul>';
     if ($group eq '') {      if ($group eq '') {
         $info .= (&mt("Direct others to the 'Display file listing' link (shown 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>"));          $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) {
Line 1616  sub lock_info { Line 1614  sub lock_info {
     $file_name = &prepend_group($file_name);      $file_name = &prepend_group($file_name);
     if (defined($file_name) && defined($$current_permissions{$file_name})) {      if (defined($file_name) && defined($$current_permissions{$file_name})) {
         foreach my $array_item (@{$$current_permissions{$file_name}}) {          foreach my $array_item (@{$$current_permissions{$file_name}}) {
             if (ref($array_item) eq 'ARRAY') {              next if (ref($array_item) ne 'ARRAY');
                 my $filetext;  
                 if (defined($group)) {      my $filetext;
                     $filetext = '<strong>'.$env{'form.lockinfo'}.      if (defined($group)) {
                                     '</strong> (group: '.$group.')';    $filetext = '<strong>'.$env{'form.lockinfo'}.
                 } else {      '</strong> (group: '.$group.')'; 
                     $filetext = '<strong>'.$file_name.'</strong>';      } else {
                 }    $filetext = '<strong>'.$file_name.'</strong>';
                 $r->print(&mt('[_1] was submitted in response to problem: ',      } 
                               $filetext).      
                           '<strong>'.&Apache::lonnet::gettitle($$array_item[0]).      my $title ='<strong>'.&Apache::lonnet::gettitle($$array_item[0]).
                           '</strong><br />');   '</strong><br />';
                 my %course_description = &Apache::lonnet::coursedescription($$array_item[1]);      if ($$array_item[-1] eq 'graded') {
                 $r->print(&mt('In the course: <strong>[_1]</strong><br />',   $r->print(&mt('[_1] was submitted in response to problem: [_2]',
                               $course_description{'description'}));                                $filetext,$title));
                 # $r->print('the third is '.$$array_item[2].'<br>');      } elsif ($$array_item[-1] eq 'handback') {
                 # $r->print("item is $$array_item[0]<br> and $$array_item[0]");   $r->print(&mt('[_1] was handed back in response to problem: [_2]',
             }                                $filetext,$title));
       } else {
    # submission style lock
    $r->print(&mt('[_1] was submitted in response to problem: [_2]',
                                 $filetext,$title));
       }
       my %course_description = 
    &Apache::lonnet::coursedescription($$array_item[1]);
       if ( $course_description{'description'} ne '') {
    $r->print(&mt('In the course: <strong>[_1]</strong><br />',
         $course_description{'description'}));
       }
         }          }
     }      }
     $r->print(&done('Back',$url));      $r->print(&done('Back',$url));
Line 1679  sub createdir { Line 1688  sub createdir {
 }  }
   
 sub get_portfolio_root {  sub get_portfolio_root {
     my ($uname,$udom) = &get_name_dom();      my ($udom,$uname,$group) = @_;
     my $path;      if (!(defined($udom)) || !(defined($uname))) {
     if (defined($env{'form.group'})) {          ($uname,$udom) = &get_name_dom();
         $path = '/userfiles/groups/'.$env{'form.group'}.'/portfolio';      }
     } else {      my $path = '/userfiles/portfolio';
         $path = '/userfiles/portfolio';      if (!defined($group)) { 
           if (defined($env{'form.group'})) {
               $group = $env{'form.group'};      
           }
     }      }
       if (defined($group)) {
           $path = '/userfiles/groups/'.$group.'/portfolio';
       } 
     return (&Apache::loncommon::propath($udom,$uname).$path);      return (&Apache::loncommon::propath($udom,$uname).$path);
 }  }
   

Removed from v.1.154  
changed lines
  Added in v.1.163


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