[LON-CAPA-cvs] cvs: loncom /publisher loncfile.pm
raeburn
raeburn at source.lon-capa.org
Mon Sep 7 09:18:58 EDT 2026
raeburn Mon Sep 7 13:18:58 2026 EDT
Modified files:
/loncom/publisher loncfile.pm
Log:
- If co-author managers have been given permission to create/export an
archive file from an Authoring Space then allow access.
Index: loncom/publisher/loncfile.pm
diff -u loncom/publisher/loncfile.pm:1.137 loncom/publisher/loncfile.pm:1.138
--- loncom/publisher/loncfile.pm:1.137 Fri Aug 21 02:53:53 2026
+++ loncom/publisher/loncfile.pm Mon Sep 7 13:18:58 2026
@@ -9,7 +9,7 @@
# and displays a page showing the results of the action.
#
#
-# $Id: loncfile.pm,v 1.137 2026/08/21 02:53:53 raeburn Exp $
+# $Id: loncfile.pm,v 1.138 2026/09/07 13:18:58 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1448,11 +1448,13 @@
} elsif ($env{'form.action'} eq 'decompress') {
&Decompress1($r, $uname, $udom, $fn);
} elsif ($env{'form.action'} eq 'archive') {
- if (($uname eq $env{'user.name'}) && ($udom eq $env{'user.domain'})) {
+ if ((($uname eq $env{'user.name'}) && ($udom eq $env{'user.domain'})) ||
+ (($env{"environment.internal.manager./$udom/$uname"}) &&
+ ($env{"environment.internal.archive./$udom/$uname"}))) {
&Archive1($r,$fn);
} else {
$r->print('<p class="LC_error">'
- .&mt('Archiving of Authoring Spaces is only permitted by Author')
+ .&mt('Archiving of Authoring Spaces is only permitted by Author or co-author Manager')
.'</p></form>'
);
}
@@ -1792,9 +1794,11 @@
sub Archive3 {
my ($hashref) = @_;
if (ref($hashref) eq 'HASH') {
- if (($hashref->{'uname'} eq $env{'user.name'}) &&
- ($hashref->{'udom'} eq $env{'user.domain'}) &&
- ($env{'environment.canarchive'}) &&
+ if ((($hashref->{'uname'} eq $env{'user.name'}) &&
+ ($hashref->{'udom'} eq $env{'user.domain'}) &&
+ ($env{'environment.canarchive'})) ||
+ (($env{'environment.internal.manager./'.$hashref->{'udom'}.'/'.$hashref->{'uname'}}) &&
+ ($env{'environment.internal.archive./'.$hashref->{'udom'}.'/'.$hashref->{'uname'}})) &&
($env{'form.delarchive'})) {
my $filesdest = $Apache::lonnet::perlvar{'lonPrtDir'}.'/'.$env{'user.name'}.'_'.$env{'user.domain'}.'_archive_'.$env{'form.delarchive'};
if (-e $filesdest) {
@@ -1889,9 +1893,11 @@
}
$dest = $dir."/.";
} elsif ($env{'form.action'} eq 'archive') {
- if (($env{'environment.canarchive'}) &&
- ($env{'user.name'} eq $uname) &&
- ($env{'user.domain'} eq $udom)) {
+ if ((($env{'environment.canarchive'}) &&
+ ($env{'user.name'} eq $uname) &&
+ ($env{'user.domain'} eq $udom)) ||
+ (($env{"environment.internal.manager./$udom/$uname"}) &&
+ ($env{"environment.internal.archive./$udom/$uname"}))) {
&Archive2($r,$uname,$udom,$fn,$identifier);
} else {
$r->print(&mt('You do not have permission to export to an archive file in this Authoring Space'));
@@ -2066,12 +2072,11 @@
$r->filename);
return HTTP_NOT_ACCEPTABLE;
}
- if (($env{'form.delarchive'}) &&
- ($env{'environment.canarchive'})) {
+ if ($env{'form.delarchive'}) {
&Apache::loncommon::content_type($r,'text/plain');
$r->send_http_header;
- if (($env{'user.name'} eq $uname) &&
- ($env{'user.domain'} eq $udom)) {
+ if ((($env{'environment.canarchive'}) && ($env{'user.name'} eq $uname) && ($env{'user.domain'} eq $udom)) ||
+ (($env{"environment.internal.manager./$udom/$uname"}) && ($env{"environment.internal.archive./$udom/$uname"}))) {
$r->print(&Archive3($archiveref));
} else {
$r->print(&mt('You do not have permission to export to an archive file in this Authoring Space'));
@@ -2103,10 +2108,13 @@
ENDJS
$args->{'add_entries'} = { onload => "writeDone()" };
} elsif (($env{'form.action'} eq 'archive') &&
- ($env{'environment.canarchive'})) {
-# Check if author already has an archive request in process
+ (($env{'environment.canarchive'}) &&
+ ($uname eq $env{'user.name'}) && ($udom eq $env{'user.domain'})) ||
+ (($env{"environment.internal.manager./$udom/$uname"}) &&
+ ($env{"environment.internal.archive./$udom/$uname"}))) {
+# Check if user already has an archive request in process
($archive_earlyout,$archive_idnum) = &archive_in_progress();
-# Check if archive request was in process which author wishes to terminate
+# Check if archive request was in process which user wishes to terminate
if ($env{'form.remove_archive_request'}) {
if ($env{'form.remove_archive_request'} eq $archive_idnum) {
if (exists($env{'cgi.'.$archive_idnum.'.archive'})) {
@@ -2399,7 +2407,10 @@
return OK;
}
} elsif ($env{'form.action'} eq 'archive') {
- if ($env{'environment.canarchive'}) {
+ if ((($env{'environment.canarchive'}) &&
+ ($uname eq $env{'user.name'}) && ($udom eq $env{'user.domain'})) ||
+ (($env{"environment.internal.manager./$udom/$uname"}) &&
+ ($env{"environment.internal.archive./$udom/$uname"}))) {
if ($archive_earlyout) {
my $fname = &url($fn);
my $title = $action{$env{'form.action'}};
More information about the LON-CAPA-cvs
mailing list