Diff for /loncom/interface/portfolio.pm between versions 1.146 and 1.158

version 1.146, 2006/08/04 22:22:32 version 1.158, 2006/08/14 21:35:35
Line 66  sub group_form_data { Line 66  sub group_form_data {
 # 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
 sub make_anchor {  sub make_anchor {
     my ($url, $filename, $current_path, $current_mode, $field_name,      my ($url, $anchor_fields, $inner_text) = @_;
         $continue_select) = @_;      if ($$anchor_fields{'continue'} ne 'true') {$$anchor_fields{'continue'} = 'false'};
     if ($continue_select ne 'true') {$continue_select = 'false'};      my $anchor = '<a href="'.$url.'?';
     my $anchor = '<a href="'.$url.'?selectfile='.$filename.'&amp;currentpath='.$current_path.'&amp;mode='.$current_mode.'&amp;continue='.$continue_select.'&amp;fieldname='.$field_name;      foreach my $field_name (keys(%$anchor_fields)) {
           $anchor .= $field_name.'='.$$anchor_fields{$field_name}.'&amp;';
       }
       $anchor =~ s/&amp;$//;
     $anchor .= &group_args();      $anchor .= &group_args();
     $anchor .= '">'.$filename.'</a>';      $anchor .= '">'.$inner_text.'</a>';
     return $anchor;      return $anchor;
 }  }
   
Line 129  sub display_common { Line 132  sub display_common {
 TABLE  TABLE
     }      }
     my @tree = split (/\//,$current_path);      my @tree = split (/\//,$current_path);
     $r->print('<span class="LC_current_location">'.&make_anchor($url,$port_path,'/',$env{"form.mode"},$env{"form.fieldname"},$env{"form.continue"}).'/');      my %anchor_fields = (
           'selectfile'    => $port_path,
           'currentpath'   => '/',
           'mode'          => $env{"form.mode"},
           'fieldname'     => $env{"form.fieldname"},
           'continue'      => $env{"form.continue"}
       );
       $r->print('<span class="LC_current_location">'.&make_anchor($url,\%anchor_fields,$port_path).'/');
     if (@tree > 1){      if (@tree > 1){
         my $newCurrentPath = '';          my $newCurrentPath = '';
         for (my $i = 1; $i< @tree; $i++){          for (my $i = 1; $i< @tree; $i++){
             $newCurrentPath .= $tree[$i].'/';              $newCurrentPath .= $tree[$i].'/';
             $r->print(&make_anchor($url,$tree[$i],'/'.$newCurrentPath, $env{"form.mode"},$env{"form.fieldname"}, $env{"form.continue"}).'/');              my %anchor_fields = (
                   'selectfile' => $tree[$i],
                   'currentpath' => '/',
                   'mode' => $env{"form.mode"},
                   'fieldname' => $env{"form.fieldname"},
                   'continue' => $env{"form.continue"}
               );
               $r->print(&make_anchor($url,\%anchor_fields,$tree[$i]).'/');
         }          }
     }      }
     $r->print('</span>');      $r->print('</span>');
Line 147  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);      $r->print($line); # contains first two cells of table
     $r->print('<td><img alt="" src="'.&Apache::loncommon::icon($filename).'" /></td>');      my $lock_info;
     $r->print('<td>'.$$version_flag{$filename}.'</td><td><a href="'.$href_location.$filename.'">'.      if ($version_flag) { # versioned can't be versioned, so TRUE when root file
       $filename.'</a></td>');           $r->print('<td><img alt="" src="'.&Apache::loncommon::icon($filename).'" /></td>');
           $r->print('<td>'.$version_flag.'</td>');
       } else { # this is a graded or handed back file
           my ($user,$domain) = &get_name_dom();
           my $permissions_hash = &Apache::lonnet::get_portfile_permissions($domain,$user);
           if (defined($$permissions_hash{$fullpath})) {
               foreach my $array_item (@{$$permissions_hash{$fullpath}}) {
                   if (ref($array_item) eq 'ARRAY') {
                       if ($$array_item[-1] eq 'handback') {
                           $lock_info = 'Handback';
                       } elsif ($$array_item[-1] eq 'graded') {
                           $lock_info = 'Graded';
                       }
                    }
               }
           }
    if ($lock_info) {
       my %anchor_fields = ('lockinfo' => $fullpath);
       $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>'.&make_anchor($href_location.$filename,undef,$filename).'</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>');
     if ($select_mode ne 'true') {      if ($select_mode ne 'true') {
  $r->print('<td><span style="white-space: nowrap">'.   $r->print('<td><span style="white-space: nowrap">'.
   &mt($curr_access).'&nbsp;&nbsp;&nbsp;');    &mt($curr_access).'&nbsp;&nbsp;&nbsp;');
  $r->print('<a href="'.$url.'?access='.$filename.          my %anchor_fields = (
   '&amp;currentpath='.$current_path.&group_args().              'access' => $filename,
   '">'.$access_admin_text.'</a></span></td>');              'currentpath' => $current_path
           );
    $r->print(&make_anchor($url, \%anchor_fields, $access_admin_text).'</span></td>');
     }      }
     $r->print('</tr>'.$/);      $r->print('</tr>'.$/);
 }  }
Line 219  sub display_directory { Line 262  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 233  sub display_directory { Line 275  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 243  sub display_directory { Line 286  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;
       my $fullpath =  &prepend_group($current_path.$filename);
        if ($env{'form.showversions'} eq $filename) {         if ($env{'form.showversions'} eq $filename) {
            $show_versions = 'true';             $show_versions = 'true';
        }         }
        if (exists($versioned{$filename})) {         if (exists($versioned{$fullpath})) {
              my %anchor_fields = (
                  'selectfile' => $fullpath,
                  'continue' => 'false',
                  'currentpath' => $current_path,
              );
            if ($show_versions) {             if ($show_versions) {
                     $version_flag{$filename} = '<a href="portfolio"><img class="LC_icon" alt="'.&mt('opened folder').'" src="'.$iconpath.'folder_pointer_opened.gif" /></a>';                      $version_flag = &make_anchor('portfolio',\%anchor_fields,
                           '<img class="LC_icon" alt="'.&mt('opened folder').'" src="'.$iconpath.'folder_pointer_opened.gif" />');
            } else {             } else {
                     $version_flag{$filename} = '<a href="portfolio?showversions='.$filename.'"><img class="LC_icon" alt="'.&mt('closed folder').'" src="'.$iconpath.'folder_pointer_closed.gif" /></a>';                 $anchor_fields{'showversions'} = $filename;
                       $version_flag = &make_anchor('portfolio',\%anchor_fields,
                           '<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 264  sub display_directory { Line 316  sub display_directory {
                 }                  }
  $r->print('<tr class="LC_browser_folder"><td '.$colspan.'><img alt="'.&mt('closed folder').'" src="'.$iconpath.'folder_closed.gif" /></td>');   $r->print('<tr class="LC_browser_folder"><td '.$colspan.'><img alt="'.&mt('closed folder').'" src="'.$iconpath.'folder_closed.gif" /></td>');
                 $r->print('<td>Go to ...</td>');                  $r->print('<td>Go to ...</td>');
                 $r->print('<td>'.$version_flag{$filename}.'</td><td>'.&make_anchor($url,$filename.'/',$current_path.$filename.'/',$env{'form.mode'},$env{"form.fieldname"},$env{'form.continue'}).'/</td>');                   my %anchor_fields = (
                       'selectfile'    => $filename.'/',
                       'currentpath'   => $current_path.$filename.'/',
                       'mode'          => $env{"form.mode"},
                       'fieldname'     => $env{"form.fieldname"},
                       'continue'      => $env{"form.continue"}
                   );  
                   $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 279  sub display_directory { Line 336  sub display_directory {
     $line.=' /></td>';      $line.=' /></td>';
                 } else {                  } else {
                     if (exists $locked_files{$fullpath}) {                      if (exists $locked_files{$fullpath}) {
                         $line.='<td colspan="2"><a href="'.$url.'?lockinfo='.$current_path.$filename.&group_args().'">Locked</a></td>';                          my %anchor_fields = (
                               'lockinfo' => $fullpath
                           );
                           $line.='<td colspan="2">'.&make_anchor($url,\%anchor_fields,'Locked').'</td>';
  $css_class= 'LC_browser_file_locked';   $css_class= 'LC_browser_file_locked';
                     } else {                      } else {
                         if (!$can_modify) {                          if (!$can_modify) {
Line 293  sub display_directory { Line 353  sub display_directory {
                         if ($can_modify) {                          if ($can_modify) {
                             my $cat='<img class="LC_icon" alt="'.&mt('Catalog Information').                              my $cat='<img class="LC_icon" alt="'.&mt('Catalog Information').
                             '" src="'.&Apache::loncommon::lonhttpdurl('/res/adm/pages/catalog.gif').'" />';                              '" src="'.&Apache::loncommon::lonhttpdurl('/res/adm/pages/catalog.gif').'" />';
                             $line .= '<a href="'.$url.'?rename='.$filename.'&amp;currentpath='.$current_path.&group_args().'">Rename</a>';                              my %anchor_fields = (
                             $line .= '</td><td>'.'<a href="'.$href_edit_location.$filename.'.meta">'.$cat.'</a>';                                  'rename' => $filename,
                                   currentpath => $current_path
                               );
                               $line .= &make_anchor($url,\%anchor_fields,'Rename');
                               $line .= '</td><td>'.&make_anchor($href_edit_location.$filename.'.meta',undef,$cat);
                               # '<a href="'.$href_edit_location.$filename.'.meta">'.$cat.'</a>';
                         }                          }
                         $line .= '</td>';                          $line .= '</td>';
                     }                      }
Line 332  sub display_directory { Line 397  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 432  sub done { Line 495  sub done {
     unless (defined $message) {      unless (defined $message) {
         $message='Done';          $message='Done';
     }      }
     my $result = '<h3><a href="'.$url.'?currentpath='.      my %anchor_fields = (
          $env{'form.currentpath'}.          'currentpath' => $env{'form.currentpath'},
          '&fieldname='.$env{'form.fieldname'}.          'fieldname' => $env{'form.fieldname'},
          '&mode='.$env{'form.mode'}.          'mode'      => $env{'form.mode'}
  &group_args();      );
     $result .= '">'.&mt($message).'</a></h3>';      my $result = '<h3>'.&make_anchor($url,\%anchor_fields,&mt($message)).'</h3>';
     return $result;      return $result;
 }  }
   
Line 573  sub display_access { Line 636  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 more of the following types: public, passphrase-protected or conditional.').'<br /><ul><li>'.&mt('Public files are available to anyone without the need for login.').'</li><li>'.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.').'</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 />'.&mt('The conditions can include affiliation with a particular course or group, or a user account in a specific domain.').'<br />'.&mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.').'</li></ul>';      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 .= '<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 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 .= &mt('The conditions can include affiliation with a particular course or group, 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>';
     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("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>"));
     }      }
Line 619  sub view_access_settings { Line 686  sub view_access_settings {
     } else {      } else {
         $r->print(&mt('No access control settings currently exist for this file.<br />' ));          $r->print(&mt('No access control settings currently exist for this file.<br />' ));
     }      }
     $r->print('<br /><a href="'.$url.'?currentpath='.$env{'form.currentpath'}.      my %anchor_fields = (
               &group_args().'">'.&mt('Return to directory listing').'</a>');          'currentpath' => $env{'form.currentpath'}
       );
       $r->print('<br />'.&make_anchor($url, \%anchor_fields, &mt('Return to directory listing')));
     return;      return;
 }  }
   
Line 844  sub update_access { Line 913  sub update_access {
         }          }
         &close_form($r,$url);          &close_form($r,$url);
     } else {      } else {
         $r->print('<br /><a href="'.$url.'?access='.$env{'form.selectfile'}.          my %anchor_fields = (
                   '&amp;currentpath='.$env{'form.currentpath'}.&group_args().'">'.              'currentpath' => $env{'form.currentpath'},
                    &mt('Display all access settings for this file').'</a>'.              'access' => $env{'form.selectfile'}
                   '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.          );
                   '<a href="'.$url.'?currentpath='.$env{'form.currentpath'}.          $r->print('<br />'.&make_anchor($url, \%anchor_fields, &mt('Display all access settings for this file')));
                   &group_args().'">'.&mt('Return to directory listing').'</a>');          delete $anchor_fields{'access'};
           $r->print('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&make_anchor($url,\%anchor_fields,&mt('Return to directory listing')));
     }      }
     return;      return;
 }  }
Line 1533  sub lock_info { Line 1603  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));

Removed from v.1.146  
changed lines
  Added in v.1.158


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