--- loncom/interface/londocs.pm 2024/12/27 02:32:55 1.714 +++ loncom/interface/londocs.pm 2024/12/28 12:19:21 1.715 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.714 2024/12/27 02:32:55 raeburn Exp $ +# $Id: londocs.pm,v 1.715 2024/12/28 12:19:21 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -579,7 +579,8 @@ $contents{webreferences}.' $title=~s/[\/\s]+/\_/gs; $title=&clean($title); my $formname = 'dumpdoc'; - my $preamble = &authorspace_selector($r,$formname,$home,$title,%outhash); + my $preamble = &authorspace_selector($r,$formname,$home,$title,%outhash). + '
'."\n"; my %uploadedfiles; &tiehash(); foreach my $file (&Apache::lonclonecourse::crsdirlist($origcrsid,'userfiles')) { @@ -643,8 +644,8 @@ sub authorspace_selector { } $preamble .= ''.&mt('No author or co-author roles on this server.').'
'); $r->print(&endContentScreen()); return ''; } + my $docroot = $r->dir_config('lonDocRoot'); my $is_course_home; my @ids=&Apache::lonnet::current_machine_ids(); if (($coursehome ne '') && (grep(/^\Q$coursehome\E$/,@ids))) { $is_course_home = 1; } - my %origcrsdata=&Apache::lonnet::coursedescription($env{'request.course.id'}); my $exclude = &Apache::lonnet::priv_exclude(); my $srcurl = "/priv/$coursedom/$coursenum"; - my $srctop = $r->dir_config('lonDocRoot').$srcurl; + my $srctop = $docroot.$srcurl; + my $resurl = "/res/$coursedom/$coursenum"; + my $res_exclude = &Apache::lonnet::res_exclude(); if (($env{'form.authorspace'}) && ($env{'form.authorfolder'}=~/\w/)) { $r->print(''.&mt('Copy to: [_1]',
@@ -851,6 +926,39 @@ ENDJS
}
if (-e $desttop.'/'.$subdir) {
my $num = 0;
+ my ($copyright,$customdistfile);
+ if ($env{'form.copyright'} eq 'default' || $env{'form.copyright'} eq 'domain' || $env{'form.copyright'} eq 'public') {
+ $copyright = $env{'form.copyright'};
+ } elsif ($env{'form.copyright'} eq 'custom') {
+ if ($env{'form.customrights'} =~ m{^/res/$match_domain/$match_username/.+\.rights$}) {
+ my ($rightsdom,$rightsuname) = ($1,$2);
+ my $rightshome = &Apache::lonnet::homeserver($rightsdom,$rightsuname);
+ if (($rightshome eq 'no_host') || ($rightshome eq '')) {
+ $copyright = 'default';
+ } elsif (grep(/^\Q$rightshome\E$/,@ids)) {
+ if (-e $docroot.$env{'form.customrights'}) {
+ $copyright = 'custom';
+ $customdistfile = $env{'form.customrights'};
+ } else {
+ $copyright = 'default';
+ }
+ } else {
+ my $rightsfile = &Apache::lonnet::filelocation('',$env{'form.customrights'});
+ unless (&Apache::lonnet::getfile($rightsfile) eq '-1') {
+ $customdistfile = $env{'form.customrights'};
+ }
+ }
+ }
+ }
+ my $sourceavail;
+ if ($env{'form.sourceavail'} =~ /^(open|closed)$/) {
+ $sourceavail = $env{'form.sourceavail'};
+ }
+ my $respublish;
+ if ($env{'form.respublish'}) {
+ $respublish = 1;
+ }
+ my $nokeyref = &Apache::lonpublisher::getnokey($r->dir_config('lonIncludes'));
foreach my $file (keys(%files_to_copy)) {
my ($fail,$dup,$dir_is_file,$src,$dest,$path,$fname);
if ($file =~ m{/}) {
@@ -911,18 +1019,25 @@ ENDJS
}
if ($gotmeta) {
if (open(my $fh,'<',$dest.'.meta')) {
- my ($output,$now);
+ my ($output,$now,setsourceavail);
$now = time;
+ if (($file =~ /\.(xml|html|htm|xhtml|xhtm)$/i) || ($file =~ /$LONCAPA::assess_re/)) {
+ $setsourceavail = 1;
+ }
while (my $line=<$fh>) {
chomp($line);
if ($line eq "