--- loncom/interface/loncoursequeueadmin.pm	2017/08/03 16:28:39	1.58
+++ loncom/interface/loncoursequeueadmin.pm	2020/07/01 20:08:54	1.59
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Utilities to administer domain course requests and course self-enroll requests
 #
-# $Id: loncoursequeueadmin.pm,v 1.58 2017/08/03 16:28:39 raeburn Exp $
+# $Id: loncoursequeueadmin.pm,v 1.59 2020/07/01 20:08:54 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -304,11 +304,11 @@ sub send_selfserve_notification {
     my $stamp = time;
     my $msgcount = &Apache::lonmsg::get_uniq();
     my $sender_lh = &Apache::loncommon::user_lang($uname,$udom,$cid);
-    $subject = &Apache::lonlocal::mt_user($sender_lh,$rawsubj);
+    $subject = &mt_user($sender_lh,$rawsubj);
     $message = '';
     foreach my $item (@rawmsg) {
         if (ref($item) eq 'HASH') {
-            $message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n";
+            $message .= &mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n";
         }
     }
     &Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message,
@@ -322,41 +322,41 @@ sub send_selfserve_notification {
     foreach my $recip (sort(keys(%{$msgcc}))) {
         my ($ccname,$ccdom) = split(/:/,$recip);
         my $recip_lh = &Apache::loncommon::user_lang($ccname,$ccdom,$cid);
-        my $subject = &Apache::lonlocal::mt_user($sender_lh,$rawsubj);
+        my $subject = &mt_user($sender_lh,$rawsubj);
         my $message = '';
         foreach my $item (@rawmsg) {
             if (ref($item) eq 'HASH') {
-                $message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt},
-                                                       @{$item->{args}})."\n";
+                $message .= &mt_user($sender_lh,$item->{mt},
+                                     @{$item->{args}})."\n";
             }
         }
         if ($context eq 'coursemanagers') {
             if ($approvedlist) {
-                $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist;
+                $message .= "\n\n".&mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist;
             }
             if ($rejectedlist) {
-                $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected enrollments:')."\n".$rejectedlist;
+                $message .= "\n\n".&mt_user($sender_lh,'Rejected enrollments:')."\n".$rejectedlist;
             }
         } elsif ($context eq 'domainmanagers') {
             if ($approvedlist) {
-                $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved course requests:')."\n".$approvedlist;
+                $message .= "\n\n".&mt_user($sender_lh,'Approved course requests:')."\n".$approvedlist;
             }
             if ($rejectedlist) {
-                $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected course requests:')."\n".$rejectedlist;
+                $message .= "\n\n".&mt_user($sender_lh,'Rejected course requests:')."\n".$rejectedlist;
             }
         } elsif ($context eq 'authormanagers') {
             if ($approvedlist) {
-                $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved author role requests:')."\n".$approvedlist;
+                $message .= "\n\n".&mt_user($sender_lh,'Approved author role requests:')."\n".$approvedlist;
             }
             if ($rejectedlist) {
-                $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected author role requests:')."\n".$rejectedlist;
+                $message .= "\n\n".&mt_user($sender_lh,'Rejected author role requests:')."\n".$rejectedlist;
             }
         } elsif ($context eq 'usernamemanagers') {
             if ($approvedlist) {
-                $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved LON-CAPA account requests:')."\n".$approvedlist;
+                $message .= "\n\n".&mt_user($sender_lh,'Approved LON-CAPA account requests:')."\n".$approvedlist;
             }
             if ($rejectedlist) {
-                $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected LON-CAPA account requests:')."\n".$rejectedlist;
+                $message .= "\n\n".&mt_user($sender_lh,'Rejected LON-CAPA account requests:')."\n".$rejectedlist;
             }
         }
         $status .= &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,1,
@@ -982,7 +982,9 @@ sub update_request_queue {
                                                      $ownerdom,$ownername);
                         if ((ref($history{'details'}) eq 'HASH') && 
                             ($history{'disposition'} eq $queue)) {
-                            my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code,%customitems);
+                            my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,
+                                $keysmsg,$code,%customitems);
+                            my $clonemsg = [];
                             my $fullname = '';
                             my $inprocess = &Apache::lonnet::auto_crsreq_update($cdom,$cnum,$crstype,'process',$ownername,
                                                                                 $ownerdom,$fullname,$coursedesc);
@@ -996,8 +998,8 @@ sub update_request_queue {
                             if ($history{'details'}{'clonecrs'}) {
                                 $customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'};
                             }
-                            my ($result,$postprocess) = &course_creation($cdom,$cnum,$context,$history{'details'},\$logmsg,
-                                                        \$newusermsg,\$addresult,\$enrollcount,
+                            my ($result,$postprocess) = &course_creation($cdom,$cnum,$context,$history{'details'},
+                                                        \$logmsg,$clonemsg,\$newusermsg,\$addresult,\$enrollcount,
                                                         \$response,\$keysmsg,\%domdefs,$longroles,\$code,\%customitems);
                             if ($result eq 'created') {
                                 if ($crstype eq 'community') {
@@ -1010,6 +1012,9 @@ sub update_request_queue {
                                     if (ref($approvedmsg->[1]) eq 'HASH') {
                                         $approvedmsg->[1]->{'args'} = [$firsturl];
                                     }
+                                    if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) {
+                                        push(@{$approvedmsg},@{$clonemsg});
+                                    }
                                     if ($code) {
                                         push(@{$approvedmsg},
                                             {
@@ -1608,8 +1613,9 @@ sub get_student_counts {
 }
 
 sub course_creation {
-    my ($dom,$cnum,$context,$details,$logmsg,$newusermsg,$addresult,$enrollcount,$output,
-        $keysmsg,$domdefs,$longroles,$coderef,$customhash) =  @_;
+    my ($dom,$cnum,$context,$details,$logmsg,$clonemsg,$newusermsg,$addresult,
+        $enrollcount,$output,$keysmsg,$domdefs,$longroles,$coderef,$customhash,
+        $callercontext,$user_lh) = @_;
     unless ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH') && 
             (ref($longroles) eq 'HASH')) {
         return ('error: Invalid request');
@@ -1643,8 +1649,9 @@ sub course_creation {
     }
     my %reqdetails = &build_batchcreatehash($dom,$context,$details,$owneremail,$domdefs);
     my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses',
-                  \%reqdetails,$longroles,$logmsg,$newusermsg,$addresult,
-                  $enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,$coderef);
+                  \%reqdetails,$longroles,$logmsg,$clonemsg,$newusermsg,$addresult,
+                  $enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,
+                  $coderef,$callercontext,$user_lh);
     my $postprocess;
     if ($cid eq "/$dom/$cnum") {
         $result = 'created';
@@ -1664,7 +1671,7 @@ sub course_creation {
 sub build_batchcreatehash {
     my ($dom,$context,$details,$owneremail,$domdefs) = @_;
     my %batchhash;
-    my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users uniquecode};
+    my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift tinyurls enrollstart enrollend accessstart accessend sections crosslists users uniquecode};
     if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {
         my $emailenc = &escape($owneremail);
         my $owner = $details->{'owner'}.':'.$details->{'domain'};
@@ -2017,9 +2024,10 @@ sub process_official_reqs {
         $longroles{$role}=&Apache::lonnet::plaintext($role);
     }
     my %domdefs = &Apache::lonnet::get_domain_defaults($dom);
-    my ($output,$linefeed);
+    my ($output,$linefeed,$user_lh);
     if ($context eq 'auto') {
         $linefeed = "\n";
+        $user_lh = &Apache::loncommon::user_lang($dcname,$dcdom);
     } else {
         $linefeed = '<br />'."\n";
     }
@@ -2081,6 +2089,7 @@ sub process_official_reqs {
                 $reqstatus = $disposition;
                 if ($disposition eq 'process') {
                     my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code);
+                    my $clonemsg = [];
                     my %customitems;
                     my $fullname = &Apache::loncommon::plainname($ownername,$ownerdom);
                     my $inprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'process',$ownername,
@@ -2096,8 +2105,9 @@ sub process_official_reqs {
                         $customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'};
                     }
                     my ($result,$postprocess) = 
-                        &course_creation($dom,$cnum,'domain',$history{'details'},\$logmsg,\$newusermsg,\$addresult,
-                                         \$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles,\$code,\%customitems);
+                        &course_creation($dom,$cnum,'domain',$history{'details'},\$logmsg,$clonemsg,\$newusermsg,
+                                         \$addresult,\$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles,
+                                         \$code,\%customitems,$context,$user_lh);
                     if ($result eq 'created') {
                         $disposition = 'created';
                         $reqstatus = 'created';
@@ -2112,14 +2122,20 @@ sub process_official_reqs {
                                 [{
                                     mt => 'Your requested course: [_1], (queued pending validation) has now been created.',
                                     args => [$cdescr],
-                                 },
+                                 }];
+                            if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) {
+                                push(@{$approvedmsg},@{$clonemsg});
+                            }
+                            push(@{$approvedmsg},
                                  {
                                     mt   => 'Visit [_1] to log-in and access the course.',
                                     args => [$firsturl],
                                  },
                                  {
-                                    mt => 'If currently logged-in to LON-CAPA, log-out and log-in again to select your new course role.'
-                                 }];
+                                    mt => 'If currently logged-in to LON-CAPA, log-out and log-in again to select your new course role.',
+                                    args => [],
+                                 }
+                            );
                             my $sender = $dcname.':'.$dcdom;
                             if (ref($postprocess) eq 'HASH') {
                                 if (ref($postprocess->{'createdmsg'}) eq 'ARRAY') {