--- loncom/interface/londocs.pm	2025/01/04 01:34:57	1.717
+++ loncom/interface/londocs.pm	2025/01/07 03:51:55	1.720
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: londocs.pm,v 1.717 2025/01/04 01:34:57 raeburn Exp $
+# $Id: londocs.pm,v 1.720 2025/01/07 03:51:55 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -884,7 +884,7 @@ ENDJS
         if (keys(%tocopy)) {
             my (%resdirs,%resfiles);
             &Apache::lonnet::recursedirs($is_course_home,1,undef,$res_exclude,0,0,$resurl,'',\%resdirs,\%resfiles);
-            my ($notopdir,%newdir,%newfile,%checkdeps);
+            my ($notopdir,%newdir,%newfile,%checkdeps,%newresfile);
             $r->print('<p>'.&mt('Copy to: [_1]',
                                 '<span class="LC_filename">'.$desturl.'/'.$subdir.'</span>').
                       '</p>'."\n");
@@ -1026,7 +1026,7 @@ ENDJS
                                             }
                                         } else {
                                             if (&File::Copy::copy($src,$dest)) {
-                                                $newfile{$file} = 1;
+                                                $newfile{$file} = $desturl.'/'.$subdir.'/'.$file;
                                                 if ($embstyle eq 'ssi') {
                                                     &crsres_fixup($dest,$coursenum,$coursedom,$ca,$cd,$subdir);
                                                 }
@@ -1055,6 +1055,9 @@ ENDJS
                                         my $destresfile = $docroot.$destresurl.'/'.$subdir.'/'.$file;
                                         if (-e $dest) {
                                             my $output = &Apache::lonpublisher::batchpublish($r,$dest,$destresfile,$nokeyref,1);
+                                            if (-e $destresfile) {
+                                                $newresfile{$file} = $destresurl.'/'.$subdir.'/'.$file;
+                                            }
                                         }
                                     }
                                 } else {
@@ -1065,7 +1068,7 @@ ENDJS
                                 }
                                 if ($needpriv) {
                                     if (&File::Copy::copy($src,$dest)) {
-                                        $newfile{$file} = 1;
+                                        $newfile{$file} = $desturl.'/'.$subdir.'/'.$file;
                                         if ($embstyle eq 'ssi') {
                                             &crsres_fixup($dest,$coursenum,$coursedom,$ca,$cd,$subdir);
                                         }
@@ -1099,7 +1102,7 @@ ENDJS
                                                 if ($embstyle eq 'ssi') {
                                                     &crsres_fixup($dest,$coursenum,$coursedom,$ca,$cd,$subdir);
                                                 }
-                                                $newfile{$file} = 1;
+                                                $newfile{$file} = $desturl.'/'.$subdir.'/'.$file;
                                             }
                                         }
                                     } else {
@@ -1127,7 +1130,9 @@ ENDJS
                                         my $destresfile = $docroot.$destresurl.'/'.$subdir.'/'.$file;
                                         if (-e $dest) {
                                             my $output = &Apache::lonpublisher::batchpublish($r,$dest,$destresfile,$nokeyref,1);
-#FIXME publish meta file also?
+                                            if (-e $destresfile) {
+                                                $newresfile{$file} = $destresurl.'/'.$subdir.'/'.$file;
+                                            }
                                         }
                                     }
                                 } else {
@@ -1141,7 +1146,7 @@ ENDJS
                                         if ($embstyle eq 'ssi') {
                                             &crsres_fixup($dest,$coursenum,$coursedom,$ca,$cd,$subdir);
                                         }
-                                        $newfile{$file} = 1;
+                                        $newfile{$file} = $desturl.'/'.$subdir.'/'.$file;
                                     }
                                 }
                                 if ($needprivmeta) {
@@ -1172,6 +1177,16 @@ ENDJS
                 $r->print('<p>'.&mt('Copied the following files to [_1]:','<span class="LC_filename">'.$desturl.'/'.$subdir.'</span>').
                           '</p>'."\n".
                           '<ul><li>'.join('</li><li>',sort(keys(%newfile))).'</li></ul></p>'."\n");
+                foreach my $key (keys(%newfile)) {
+                    my %storehash = ( 
+                                      'priv' => $newfile{$key},
+                                      'who'  => $env{'user.name'}.':'.$env{'user.domain'},
+                                    );
+                    if (exists($newresfile{$file})) {
+                        $storehash{'res'} = 1;
+                    }
+                    &Apache::lonnet::store_userdata(\%storehash,$file,'copycourseauthor',$coursedom,$coursenum);
+                }
             }
             if (keys(%checkdeps)) {
                 my %missingdep;
@@ -8644,10 +8659,12 @@ sub generate_admin_menu {
                 if (grep(/^\Q$crshome\E$/,@ids)) {
                     $linkurl = $crsauthorurl;
                 } else {
-                    $linkurl =
-                        &Apache::lonhtmlcommon::jump_to_editres($crsauthorurl,$crshome,1);
+                    my $jscall = &Apache::lonhtmlcommon::jump_to_editres($crsauthorurl,$crshome,1);
+                    if ($jscall) {
+                        $linkurl = 'javascript:'.$jscall;
+                    }
                 }
-                if ((ref($menu[0]) eq 'HASH') && (ref($menu[0]->{'items'}) eq 'ARRAY')) {
+                if ((ref($menu[0]) eq 'HASH') && (ref($menu[0]->{'items'}) eq 'ARRAY') && ($linkurl)) {
                      push(@{$menu[0]->{items}},
                      {   linktext   => $lt{'ca'},
                          url        => $linkurl,