--- loncom/interface/portfolio.pm 2023/01/23 18:09:36 1.254.2.6.2.1
+++ loncom/interface/portfolio.pm 2023/12/28 15:57:27 1.267
@@ -1,7 +1,7 @@
# The LearningOnline Network
# portfolio browser
#
-# $Id: portfolio.pm,v 1.254.2.6.2.1 2023/01/23 18:09:36 raeburn Exp $
+# $Id: portfolio.pm,v 1.267 2023/12/28 15:57:27 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -237,7 +237,7 @@ sub display_directory_line {
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);
+ my ($fname,$version,$extension) = &Apache::lonnet::file_name_version_ext($fullpath);
$fname =~ s|^/||;
$anchor_fields{'showversions'} = $fname.'.'.$extension;
}
@@ -267,13 +267,16 @@ sub display_directory_line {
sub display_directory {
my ($r,$url,$current_path,$is_empty,$dir_list,$group,$can_upload,
- $can_modify,$can_delete,$can_setacl)=@_;
+ $can_modify,$can_delete,$can_setacl,$can_viewacl)=@_;
my $iconpath= $r->dir_config('lonIconsURL') . "/";
my $select_mode;
my $checked_files;
my $port_path = &get_port_path();
my ($uname,$udom) = &get_name_dom($group);
- my $access_admin_text = &mt('View Status');
+ my $access_admin_text;
+ if ($can_viewacl) {
+ $access_admin_text = &mt('View Status');
+ }
if ($can_setacl) {
$access_admin_text = &mt('View/Change Status');
}
@@ -370,7 +373,7 @@ sub display_directory {
} (@{$dir_list})) {
my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16);
$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) {
my $fullpath = &prepend_group($current_path.$fname.'.'.$extension);
push(@{ $versioned{$fullpath} },
@@ -383,7 +386,7 @@ sub display_directory {
my $zerobyte;
foreach my $dir_line (@dir_lines) {
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+)\.([^\.]*)$/)) {
my $version_flag;
my $show_versions;
@@ -514,7 +517,7 @@ sub display_directory {
}
}
&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);
if ($show_versions) {
foreach my $dir_line (@{ $versioned{$fullpath} }) {
@@ -887,7 +890,7 @@ sub access_for_renamed {
}
sub display_access {
- my ($r,$url,$group,$can_setacl,$port_path,$action) = @_;
+ my ($r,$url,$group,$can_setacl,$can_viewacl,$port_path,$action) = @_;
my ($uname,$udom) = &get_name_dom($group);
my $file_name = $env{'form.currentpath'}.$env{'form.access'};
$file_name = &prepend_group($file_name);
@@ -938,13 +941,21 @@ sub display_access {
'cancel' => &mt('Return to directory'),
};
&close_form($r,$url,$button_text);
- } else {
+ } elsif ($can_viewacl) {
$r->print($header);
if ($aclcount) {
$r->print($info);
}
&view_access_settings($r,$url,$access_controls{$file_name},$aclcount);
+ } else {
+ $r->print($header);
+ $r->print(&mt('You do not have sufficient privileges to view access controls').'
');
}
+ my %anchor_fields = (
+ 'currentpath' => $env{'form.currentpath'}
+ );
+ $r->print('
'.&make_anchor($url, \%anchor_fields, &mt('Return to directory')));
+ return;
}
sub explain_conditionals {
@@ -2515,6 +2526,7 @@ sub missing_priv {
delete => 'delete files',
rename => 'rename files',
setacl => 'set access controls for files',
+ viewacl => 'view access controls for files',
);
my $escpath = &HTML::Entities::encode($env{'form.currentpath'},'&<>"');
my $rtnlink = '';
-
+
if ($env{"form.mode"} eq 'selectfile'){
$r->print(&Apache::loncommon::start_page($title, $js,
{'only_body' => 1}));
@@ -2916,10 +2936,14 @@ sub handler {
}
} elsif ($env{'form.access'}) {
$env{'form.selectfile'} = $env{'form.access'};
- if (!defined($env{'form.action'})) {
+ if (!defined($env{'form.action'})) {
$env{'form.action'} = 'chgaccess';
}
- &display_access($r,$url,$group,$can_setacl,$port_path,$env{'form.action'});
+ if (($can_viewacl) || ($can_setacl)) {
+ &display_access($r,$url,$group,$can_setacl,$can_viewacl,$port_path,$env{'form.action'});
+ } else {
+ &missing_priv($r,$url,'viewacl');
+ }
} elsif (($env{'form.action'} eq 'chgaccess') ||
($env{'form.action'} eq 'chgconditions')) {
if ($can_setacl) {
@@ -2993,7 +3017,8 @@ sub handler {
&display_common($r,$url,$current_path,$is_empty,$dirlistref,
$can_upload,$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);
}
$r->print(&Apache::loncommon::end_page());
return OK;