Diff for /loncom/interface/portfolio.pm between versions 1.254.2.6.2.4 and 1.267

version 1.254.2.6.2.4, 2024/09/07 03:48:34 version 1.267, 2023/12/28 15:57:27
Line 237  sub display_directory_line { Line 237  sub display_directory_line {
  if ($lock_info) {   if ($lock_info) {
     my %anchor_fields = ('lockinfo' => $fullpath);      my %anchor_fields = ('lockinfo' => $fullpath);
     if ($versions) { # hold the folder open      if ($versions) { # hold the folder open
         my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($fullpath);          my ($fname,$version,$extension) = &Apache::lonnet::file_name_version_ext($fullpath);
         $fname =~ s|^/||;          $fname =~ s|^/||;
         $anchor_fields{'showversions'} = $fname.'.'.$extension;          $anchor_fields{'showversions'} = $fname.'.'.$extension;
     }      }
Line 267  sub display_directory_line { Line 267  sub display_directory_line {
   
 sub display_directory {  sub display_directory {
     my ($r,$url,$current_path,$is_empty,$dir_list,$group,$can_upload,      my ($r,$url,$current_path,$is_empty,$dir_list,$group,$can_upload,
         $can_modify,$can_delete,$can_setacl,$can_viewacl,$caller)=@_;          $can_modify,$can_delete,$can_setacl,$can_viewacl)=@_;
     my $iconpath= $r->dir_config('lonIconsURL') . "/";      my $iconpath= $r->dir_config('lonIconsURL') . "/";
     my $select_mode;      my $select_mode;
     my $checked_files;      my $checked_files;
Line 314  sub display_directory { Line 314  sub display_directory {
                 &mt('Using the portfolio file list'))                  &mt('Using the portfolio file list'))
            .'</p>'             .'</p>'
         );          );
         my ($acl_helpfile,$acl_helplink);  
         if ($can_setacl) {  
             $acl_helpfile = 'Portfolio ShareFile';  
         } elsif ($caller eq 'coursegrp_portfolio') {  
             $acl_helpfile = 'Portfolio ShareFile Group';  
         }  
         unless ($can_setacl || $can_viewacl) {  
             $acl_helpfile = 'Portfolio ShareFile Off';  
         }  
         if ($acl_helpfile) {  
             $acl_helplink = &Apache::loncommon::help_open_topic($acl_helpfile);  
         }  
         $r->print(&Apache::loncommon::start_data_table()          $r->print(&Apache::loncommon::start_data_table()
                  .&Apache::loncommon::start_data_table_header_row()                   .&Apache::loncommon::start_data_table_header_row()
                  .'<th colspan="2">'.&mt('Actions'). &Apache::loncommon::help_open_topic('Portfolio FileAction').'</th>'                   .'<th colspan="2">'.&mt('Actions'). &Apache::loncommon::help_open_topic('Portfolio FileAction').'</th>'
Line 335  sub display_directory { Line 323  sub display_directory {
                  .'<th>'.&mt('Size').'</th>'                   .'<th>'.&mt('Size').'</th>'
                  .'<th>'.&mt('Last Modified').'</th>'                   .'<th>'.&mt('Last Modified').'</th>'
                  .'<th>&nbsp;</th>'                   .'<th>&nbsp;</th>'
                  .'<th>'.&mt('Current Access Status').$acl_helplink.'</th>'                   .'<th>'.&mt('Current Access Status').&Apache::loncommon::help_open_topic('Portfolio ShareFile').'</th>'
                  .&Apache::loncommon::end_data_table_header_row());                   .&Apache::loncommon::end_data_table_header_row());
     }      }
   
Line 385  sub display_directory { Line 373  sub display_directory {
           } (@{$dir_list})) {            } (@{$dir_list})) {
        my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16);          my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); 
        $filename =~ s/\s+$//;         $filename =~ s/\s+$//;
        my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);         my ($fname,$version,$extension) = &Apache::lonnet::file_name_version_ext($filename);
        if ($version) {         if ($version) {
         my $fullpath = &prepend_group($current_path.$fname.'.'.$extension);          my $fullpath = &prepend_group($current_path.$fname.'.'.$extension);
            push(@{ $versioned{$fullpath} },             push(@{ $versioned{$fullpath} },
Line 398  sub display_directory { Line 386  sub display_directory {
     my $zerobyte;      my $zerobyte;
     foreach my $dir_line (@dir_lines) {      foreach my $dir_line (@dir_lines) {
         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::lonnet::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;
Line 502  sub display_directory { Line 490  sub display_directory {
     my $cond_access = 0;      my $cond_access = 0;
     foreach my $key (sort(keys(%{$access_controls{$fullpath}}))) {      foreach my $key (sort(keys(%{$access_controls{$fullpath}}))) {
  my ($num,$scope,$end,$start) = &unpack_acc_key($key);   my ($num,$scope,$end,$start) = &unpack_acc_key($key);
                         next if ($scope eq 'ip');    
  if (($now > $start) && (!$end || $end > $now)) {   if (($now > $start) && (!$end || $end > $now)) {
     if ($scope eq 'public')  {      if ($scope eq 'public')  {
  $pub_access = 1;   $pub_access = 1;
Line 1018  sub build_access_summary { Line 1005  sub build_access_summary {
                       domains => 'Conditional: domain-based',                        domains => 'Conditional: domain-based',
                       users => 'Conditional: user-based',                        users => 'Conditional: user-based',
                       course => 'Conditional: course/community-based',                        course => 'Conditional: course/community-based',
                       userip => 'Conditional: IP-based',                        ip     => 'Conditional: IP-based',
                      );                       );
     my @allscopes = ('public','guest','domains','users','course','userip');      my @allscopes = ('public','guest','domains','users','course','ip');
     foreach my $scope (@allscopes) {      foreach my $scope (@allscopes) {
         if ((!(exists($todisplay{$scope}))) || (ref($todisplay{$scope}) ne 'HASH')) {          if ((!(exists($todisplay{$scope}))) || (ref($todisplay{$scope}) ne 'HASH')) {
             next;              next;
Line 1097  sub build_access_summary { Line 1084  sub build_access_summary {
                 } elsif ($scope eq 'users') {                  } elsif ($scope eq 'users') {
                     my $curr_user_list = &sort_users($content->{'users'});                      my $curr_user_list = &sort_users($content->{'users'});
                     $r->print(&mt('Users: ').$curr_user_list);                      $r->print(&mt('Users: ').$curr_user_list);
                 } elsif ($scope eq 'userip') {                  } elsif ($scope eq 'ip') {
                     my $curr_ips_list = &sort_ips($content->{'userip'});                      my $curr_ips_list = &sort_ips($content->{'ip'});
                     $r->print(&mt('IP(s):').' '.$curr_ips_list);                      $r->print(&mt('IP(s):').' '.$curr_ips_list);
                 } else {                  } else {
                     $r->print('&nbsp;');                      $r->print('&nbsp;');
Line 1208  sub update_access { Line 1195  sub update_access {
     my $totalnew = 0;      my $totalnew = 0;
     my $status = 'new';      my $status = 'new';
     my ($firstitem,$lastitem);      my ($firstitem,$lastitem);
     my @types = ('course','domains','users','userip');      my @types = ('course','domains','users','ip');
     foreach my $newitem (@types) {      foreach my $newitem (@types) {
         $allnew += $env{'form.new'.$newitem};          $allnew += $env{'form.new'.$newitem};
     }      }
Line 1220  sub update_access { Line 1207  sub update_access {
            course  => 'course/community',             course  => 'course/community',
            domains => 'domain',             domains => 'domain',
            users   => 'user',             users   => 'user',
            userip  => 'IP',             ip      => 'IP',
         );          );
         foreach my $newitem (@types) {          foreach my $newitem (@types) {
             next if ($env{'form.new'.$newitem} <= 0);              next if ($env{'form.new'.$newitem} <= 0);
Line 1324  sub build_access_record { Line 1311  sub build_access_record {
  'udom'  => $udom   'udom'  => $udom
  });   });
  }   }
     } elsif ($scope eq 'userip') {      } elsif ($scope eq 'ip') {
         my $ipslist = $env{'form.ips_'.$num};          my $ipslist = $env{'form.ips_'.$num};
         $ipslist =~ s/\s+//sg;          $ipslist =~ s/\s+//sg;
         my %ipshash = map { ($_,1) } (split(/,/,$ipslist));          my %ipshash = map { ($_,1) } (split(/,/,$ipslist));
Line 1395  sub access_setting_table { Line 1382  sub access_setting_table {
                 push(@domains,$key);                  push(@domains,$key);
             } elsif ($scope eq 'users') {              } elsif ($scope eq 'users') {
                 push(@users,$key);                  push(@users,$key);
             } elsif ($scope eq 'userip') {              } elsif ($scope eq 'ip') {
                 push(@ips,$key);                  push(@ips,$key);
             }              }
         }          }
Line 1457  sub standard_settings { Line 1444  sub standard_settings {
     my $numconditionals = 0;      my $numconditionals = 0;
     my $conditionstext;      my $conditionstext;
     my %cond_status;      my %cond_status;
     foreach my $scope ('domains','users','course','userip') {      foreach my $scope ('domains','users','course','ip') {
         $numconditionals += $acl_count->{$scope};           $numconditionals += $acl_count->{$scope}; 
         if ($acl_count->{$scope} > 0) {          if ($acl_count->{$scope} > 0) {
             if ($conditionstext ne 'Active') {              if ($conditionstext ne 'Active') {
Line 1504  sub condition_setting { Line 1491  sub condition_setting {
     $r->print('</td></tr><tr><td colspan="3"></td></tr><tr><td valign="top">');      $r->print('</td></tr><tr><td colspan="3"></td></tr><tr><td valign="top">');
     &access_element($r,'course',$acl_count,$courses,$access_controls,$now,$then);      &access_element($r,'course',$acl_count,$courses,$access_controls,$now,$then);
     $r->print('</td><td>&nbsp;</td><td valign="top">');      $r->print('</td><td>&nbsp;</td><td valign="top">');
     &access_element($r,'userip',$acl_count,$ips,$access_controls,$now,$then);      &access_element($r,'ip',$acl_count,$ips,$access_controls,$now,$then);
     $r->print('</td></tr></table>');      $r->print('</td></tr></table>');
 }  }
   
Line 1525  sub access_element { Line 1512  sub access_element {
         domains => 'Domain',          domains => 'Domain',
         users   => 'User',          users   => 'User',
         course  => 'Course/Community',          course  => 'Course/Community',
         userip  => 'IP',          ip      => 'IP',
     );      );
     $r->print('<h3>'.&mt($typetext{$type}.'-based conditional access:').' ');      $r->print('<h3>'.&mt($typetext{$type}.'-based conditional access:').' ');
     if ($$acl_count{$type}) {      if ($$acl_count{$type}) {
Line 1550  sub display_access_row { Line 1537  sub display_access_row {
     } elsif ($type eq 'users') {      } elsif ($type eq 'users') {
         $showtype = &mt('Users');          $showtype = &mt('Users');
         $infotype = 'User';          $infotype = 'User';
     } elsif ($type eq 'userip') {      } elsif ($type eq 'ip') {
         $showtype = &mt('IP-based');          $showtype = &mt('IP-based');
         $infotype = 'IP';            $infotype = 'IP';  
     }      }
Line 1578  sub display_access_row { Line 1565  sub display_access_row {
                             $then);                              $then);
             } elsif ($type eq 'users') {              } elsif ($type eq 'users') {
                 &users_row($r,$status,$key,$access_controls,$now,$then);                  &users_row($r,$status,$key,$access_controls,$now,$then);
             } elsif ($type eq 'userip') {              } elsif ($type eq 'ip') {
                 &ips_row($r,$status,$key,$access_controls,$now,$then);                  &ips_row($r,$status,$key,$access_controls,$now,$then);
             }              }
     $r->print(&Apache::loncommon::end_data_table_row());      $r->print(&Apache::loncommon::end_data_table_row());
Line 1761  sub users_row { Line 1748  sub users_row {
 sub ips_row {  sub ips_row {
     my ($r,$status,$item,$access_controls,$now,$then) = @_;      my ($r,$status,$item,$access_controls,$now,$then) = @_;
     my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then,      my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then,
                                                     'userip');                                                      'ip');
     my $curr_ips_list;      my $curr_ips_list;
     if ($status eq 'old') {      if ($status eq 'old') {
         my $content = $$access_controls{$item};          my $content = $$access_controls{$item};
         $curr_ips_list = &sort_ips($content->{'userip'});          $curr_ips_list = &sort_ips($content->{'ip'});
     }      }
     $r->print('<td>'.&actionbox($status,$num,$scope).'</td><td>'.&mt('Format for IP controls').'<br />'.      $r->print('<td>'.&actionbox($status,$num,$scope).'</td><td>'.&mt('Format for IP controls').'<br />'.
               &mt('[_1] or [_2] or [_3] or [_4] or [_5]','<tt>35.8.*</tt>','<tt>35.8.3.[34-56]</tt>',                &mt('[_1] or [_2] or [_3] or [_4] or [_5]','<tt>35.8.*</tt>','<tt>35.8.3.[34-56]</tt>',
Line 1784  sub additional_item { Line 1771  sub additional_item {
         $showtype = 'domain';          $showtype = 'domain';
     } elsif ($type eq 'users') {      } elsif ($type eq 'users') {
         $showtype = 'user';          $showtype = 'user';
     } elsif ($type eq 'userip') {      } elsif ($type eq 'ip') {
         $showtype = 'IP';          $showtype = 'IP';
     }      }
     return      return
Line 1798  sub actionbox { Line 1785  sub actionbox {
     my $output = '<span class="LC_nobreak"><label>';      my $output = '<span class="LC_nobreak"><label>';
     if ($status eq 'new') {      if ($status eq 'new') {
         my $checkstate;          my $checkstate;
         if ($scope eq 'domains' || $scope eq 'users' || $scope eq 'course' || $scope eq 'userip') {          if ($scope eq 'domains' || $scope eq 'users' || $scope eq 'course' || $scope eq 'ip') {
             $checkstate = 'checked="checked"';              $checkstate = 'checked="checked"';
         }          }
         $output .= '<input type="checkbox" name="activate" value="'.$num.'" '.          $output .= '<input type="checkbox" name="activate" value="'.$num.'" '.
Line 2780  sub handler { Line 2767  sub handler {
   
     my $js = '<script type="text/javascript"      my $js = '<script type="text/javascript"
                 src="/res/adm/includes/file_upload.js"></script>';                  src="/res/adm/includes/file_upload.js"></script>';
       
     if ($env{"form.mode"} eq 'selectfile'){      if ($env{"form.mode"} eq 'selectfile'){
         $r->print(&Apache::loncommon::start_page($title, $js,          $r->print(&Apache::loncommon::start_page($title, $js,
  {'only_body' => 1}));   {'only_body' => 1}));
Line 3031  sub handler { Line 3018  sub handler {
  $can_upload,$group);   $can_upload,$group);
         &display_directory($r,$url,$current_path,$is_empty,$dirlistref,$group,          &display_directory($r,$url,$current_path,$is_empty,$dirlistref,$group,
                            $can_upload,$can_modify,$can_delete,$can_setacl,                             $can_upload,$can_modify,$can_delete,$can_setacl,
                            $can_viewacl,$caller);                              $can_viewacl);
     }      }
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
     return OK;      return OK;

Removed from v.1.254.2.6.2.4  
changed lines
  Added in v.1.267


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