version 1.52.2.3.2.1, 2020/01/13 17:19:09
|
version 1.61, 2021/06/15 20:52:26
|
Line 304 sub send_selfserve_notification {
|
Line 304 sub send_selfserve_notification {
|
my $stamp = time; |
my $stamp = time; |
my $msgcount = &Apache::lonmsg::get_uniq(); |
my $msgcount = &Apache::lonmsg::get_uniq(); |
my $sender_lh = &Apache::loncommon::user_lang($uname,$udom,$cid); |
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 = ''; |
$message = ''; |
foreach my $item (@rawmsg) { |
foreach my $item (@rawmsg) { |
if (ref($item) eq 'HASH') { |
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, |
&Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message, |
Line 322 sub send_selfserve_notification {
|
Line 322 sub send_selfserve_notification {
|
foreach my $recip (sort(keys(%{$msgcc}))) { |
foreach my $recip (sort(keys(%{$msgcc}))) { |
my ($ccname,$ccdom) = split(/:/,$recip); |
my ($ccname,$ccdom) = split(/:/,$recip); |
my $recip_lh = &Apache::loncommon::user_lang($ccname,$ccdom,$cid); |
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 = ''; |
my $message = ''; |
foreach my $item (@rawmsg) { |
foreach my $item (@rawmsg) { |
if (ref($item) eq 'HASH') { |
if (ref($item) eq 'HASH') { |
$message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt}, |
$message .= &mt_user($sender_lh,$item->{mt}, |
@{$item->{args}})."\n"; |
@{$item->{args}})."\n"; |
} |
} |
} |
} |
if ($context eq 'coursemanagers') { |
if ($context eq 'coursemanagers') { |
if ($approvedlist) { |
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) { |
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') { |
} elsif ($context eq 'domainmanagers') { |
if ($approvedlist) { |
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) { |
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') { |
} elsif ($context eq 'authormanagers') { |
if ($approvedlist) { |
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) { |
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') { |
} elsif ($context eq 'usernamemanagers') { |
if ($approvedlist) { |
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) { |
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, |
$status .= &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,1, |
Line 506 sub build_queue_display {
|
Line 506 sub build_queue_display {
|
my %crstypes; |
my %crstypes; |
my $output = &Apache::loncommon::start_data_table(). |
my $output = &Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(); |
&Apache::loncommon::start_data_table_header_row(); |
unless (($context eq 'pending') || ($context eq 'displaypending') || ($context eq 'helpdesk')) { |
unless (($context eq 'pending') || ($context eq 'displaypending') || ($context eq 'helpdesk')) { |
$output .= '<th>'.&mt('Action').'</th>'; |
$output .= '<th>'.&mt('Action').'</th>'; |
} |
} |
$output .= '<th>'.&mt('Requestor').'</th>'; |
$output .= '<th>'.&mt('Requestor').'</th>'; |
Line 528 sub build_queue_display {
|
Line 528 sub build_queue_display {
|
unofficial => 'Unofficial course', |
unofficial => 'Unofficial course', |
community => 'Community', |
community => 'Community', |
textbook => 'Textbook course', |
textbook => 'Textbook course', |
|
placement => 'Placement test', |
); |
); |
$output .= '<th>'.&mt('Type').'</th>'. |
$output .= '<th>'.&mt('Type').'</th>'. |
'<th>'.&mt('Date requested').'</th>'. |
'<th>'.&mt('Date requested').'</th>'. |
Line 609 sub build_queue_display {
|
Line 610 sub build_queue_display {
|
} elsif ($context eq 'requestusername') { |
} elsif ($context eq 'requestusername') { |
$row .= '<td>'.$showtime.'</td>'."\n". |
$row .= '<td>'.$showtime.'</td>'."\n". |
'<td>'.$detailslink.'</td>'."\n"; |
'<td>'.$detailslink.'</td>'."\n"; |
} else { |
} else { |
if ($context eq 'pending' || $context eq 'displaypending' || $context eq 'stillpending') { |
if ($context eq 'pending' || $context eq 'displaypending' || $context eq 'stillpending') { |
$row .= '<td>'.$instcode.'</td>'."\n"; |
$row .= '<td>'.$instcode.'</td>'."\n"; |
} else { |
} else { |
Line 981 sub update_request_queue {
|
Line 982 sub update_request_queue {
|
$ownerdom,$ownername); |
$ownerdom,$ownername); |
if ((ref($history{'details'}) eq 'HASH') && |
if ((ref($history{'details'}) eq 'HASH') && |
($history{'disposition'} eq $queue)) { |
($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 $fullname = ''; |
my $inprocess = &Apache::lonnet::auto_crsreq_update($cdom,$cnum,$crstype,'process',$ownername, |
my $inprocess = &Apache::lonnet::auto_crsreq_update($cdom,$cnum,$crstype,'process',$ownername, |
$ownerdom,$fullname,$coursedesc); |
$ownerdom,$fullname,$coursedesc); |
Line 995 sub update_request_queue {
|
Line 998 sub update_request_queue {
|
if ($history{'details'}{'clonecrs'}) { |
if ($history{'details'}{'clonecrs'}) { |
$customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'}; |
$customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'}; |
} |
} |
my ($result,$postprocess) = &course_creation($cdom,$cnum,$context,$history{'details'},\$logmsg, |
my ($result,$postprocess) = &course_creation($cdom,$cnum,$context,$history{'details'}, |
\$newusermsg,\$addresult,\$enrollcount, |
\$logmsg,$clonemsg,\$newusermsg,\$addresult,\$enrollcount, |
\$response,\$keysmsg,\%domdefs,$longroles,\$code,\%customitems); |
\$response,\$keysmsg,\%domdefs,$longroles,\$code,\%customitems); |
if ($result eq 'created') { |
if ($result eq 'created') { |
if ($crstype eq 'community') { |
if ($crstype eq 'community') { |
Line 1009 sub update_request_queue {
|
Line 1012 sub update_request_queue {
|
if (ref($approvedmsg->[1]) eq 'HASH') { |
if (ref($approvedmsg->[1]) eq 'HASH') { |
$approvedmsg->[1]->{'args'} = [$firsturl]; |
$approvedmsg->[1]->{'args'} = [$firsturl]; |
} |
} |
|
if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) { |
|
push(@{$approvedmsg},@{$clonemsg}); |
|
} |
if ($code) { |
if ($code) { |
push(@{$approvedmsg}, |
push(@{$approvedmsg}, |
{ |
{ |
Line 1607 sub get_student_counts {
|
Line 1613 sub get_student_counts {
|
} |
} |
|
|
sub course_creation { |
sub course_creation { |
my ($dom,$cnum,$context,$details,$logmsg,$newusermsg,$addresult,$enrollcount,$output, |
my ($dom,$cnum,$context,$details,$logmsg,$clonemsg,$newusermsg,$addresult, |
$keysmsg,$domdefs,$longroles,$coderef,$customhash) = @_; |
$enrollcount,$output,$keysmsg,$domdefs,$longroles,$coderef,$customhash, |
|
$callercontext,$user_lh) = @_; |
unless ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH') && |
unless ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH') && |
(ref($longroles) eq 'HASH')) { |
(ref($longroles) eq 'HASH')) { |
return ('error: Invalid request'); |
return ('error: Invalid request'); |
Line 1640 sub course_creation {
|
Line 1647 sub course_creation {
|
$owneremail = $emails{$email}; |
$owneremail = $emails{$email}; |
last if ($owneremail ne ''); |
last if ($owneremail ne ''); |
} |
} |
my %reqdetails = &build_batchcreatehash($dom,$context,$details,$owneremail,$domdefs); |
my %reqdetails = &build_batchcreatehash($dom,$cnum,$context,$details,$owneremail,$domdefs); |
my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses', |
my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses', |
\%reqdetails,$longroles,$logmsg,$newusermsg,$addresult, |
\%reqdetails,$longroles,$logmsg,$clonemsg,$newusermsg,$addresult, |
$enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,$coderef); |
$enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype, |
|
$coderef,$callercontext,$user_lh); |
my $postprocess; |
my $postprocess; |
if ($cid eq "/$dom/$cnum") { |
if ($cid eq "/$dom/$cnum") { |
$result = 'created'; |
$result = 'created'; |
Line 1661 sub course_creation {
|
Line 1669 sub course_creation {
|
} |
} |
|
|
sub build_batchcreatehash { |
sub build_batchcreatehash { |
my ($dom,$context,$details,$owneremail,$domdefs) = @_; |
my ($dom,$cnum,$context,$details,$owneremail,$domdefs) = @_; |
my %batchhash; |
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 users uniquecode}; |
if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) { |
if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) { |
my $emailenc = &escape($owneremail); |
my $emailenc = &escape($owneremail); |
my $owner = $details->{'owner'}.':'.$details->{'domain'}; |
my $owner = $details->{'owner'}.':'.$details->{'domain'}; |
foreach my $item (@items) { |
foreach my $item (@items) { |
$batchhash{$item} = $details->{$item}; |
$batchhash{$item} = $details->{$item}; |
} |
} |
|
if (ref($details->{'crosslists'}) eq 'HASH') { |
|
foreach my $key (keys(%{$details->{'crosslists'}})) { |
|
if (ref($details->{'crosslists'}->{$key}) eq 'HASH') { |
|
my $instsec = $details->{crosslists}->{$key}->{instsec}; |
|
$batchhash{'crosslists'}{$key}{'inst'} = $details->{crosslists}->{$key}->{instcode}; |
|
my $crskey = $cnum.':'.$batchhash{'crosslists'}{$key}{'inst'}; |
|
my %formatted = &Apache::lonnet::auto_instsec_reformat($dom,'clutter', |
|
{$crskey => [$instsec]}); |
|
if (ref($formatted{$crskey}) eq 'ARRAY') { |
|
$batchhash{'crosslists'}{$key}{'inst'} .= $formatted{$crskey}->[0]; |
|
} |
|
$batchhash{'crosslists'}{$key}{'loncapa'} = $details->{crosslists}->{$key}->{loncapa}; |
|
} |
|
} |
|
} |
$batchhash{'title'} = $details->{'cdescr'}; |
$batchhash{'title'} = $details->{'cdescr'}; |
$batchhash{'coursecode'} = $details->{'instcode'}; |
$batchhash{'coursecode'} = $details->{'instcode'}; |
if ($domdefs->{'officialcredits'} || $domdefs->{'unofficialcredits'}) { |
if ($domdefs->{'officialcredits'} || $domdefs->{'unofficialcredits'}) { |
Line 1682 sub build_batchcreatehash {
|
Line 1705 sub build_batchcreatehash {
|
$batchhash{'authparam'} = $domdefs->{'auth_arg_def'}; |
$batchhash{'authparam'} = $domdefs->{'auth_arg_def'}; |
if ($details->{'crstype'} eq 'community') { |
if ($details->{'crstype'} eq 'community') { |
$batchhash{'crstype'} = 'Community'; |
$batchhash{'crstype'} = 'Community'; |
|
} elsif ($details->{'crstype'} eq 'placement') { |
|
$batchhash{'crstype'} = 'Placement'; |
} else { |
} else { |
if ($details->{'crstype'} eq 'textbook') { |
if ($details->{'crstype'} eq 'textbook') { |
if ($details->{'clonecrs'} && $details->{'clonedom'}) { |
if ($details->{'clonecrs'} && $details->{'clonedom'}) { |
Line 2014 sub process_official_reqs {
|
Line 2039 sub process_official_reqs {
|
$longroles{$role}=&Apache::lonnet::plaintext($role); |
$longroles{$role}=&Apache::lonnet::plaintext($role); |
} |
} |
my %domdefs = &Apache::lonnet::get_domain_defaults($dom); |
my %domdefs = &Apache::lonnet::get_domain_defaults($dom); |
my ($output,$linefeed); |
my ($output,$linefeed,$user_lh); |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$linefeed = "\n"; |
$linefeed = "\n"; |
|
$user_lh = &Apache::loncommon::user_lang($dcname,$dcdom); |
} else { |
} else { |
$linefeed = '<br />'."\n"; |
$linefeed = '<br />'."\n"; |
} |
} |
Line 2078 sub process_official_reqs {
|
Line 2104 sub process_official_reqs {
|
$reqstatus = $disposition; |
$reqstatus = $disposition; |
if ($disposition eq 'process') { |
if ($disposition eq 'process') { |
my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code); |
my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code); |
|
my $clonemsg = []; |
my %customitems; |
my %customitems; |
my $fullname = &Apache::loncommon::plainname($ownername,$ownerdom); |
my $fullname = &Apache::loncommon::plainname($ownername,$ownerdom); |
my $inprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'process',$ownername, |
my $inprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'process',$ownername, |
Line 2093 sub process_official_reqs {
|
Line 2120 sub process_official_reqs {
|
$customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'}; |
$customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'}; |
} |
} |
my ($result,$postprocess) = |
my ($result,$postprocess) = |
&course_creation($dom,$cnum,'domain',$history{'details'},\$logmsg,\$newusermsg,\$addresult, |
&course_creation($dom,$cnum,'domain',$history{'details'},\$logmsg,$clonemsg,\$newusermsg, |
\$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles,\$code,\%customitems); |
\$addresult,\$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles, |
|
\$code,\%customitems,$context,$user_lh); |
if ($result eq 'created') { |
if ($result eq 'created') { |
$disposition = 'created'; |
$disposition = 'created'; |
$reqstatus = 'created'; |
$reqstatus = 'created'; |
Line 2109 sub process_official_reqs {
|
Line 2137 sub process_official_reqs {
|
[{ |
[{ |
mt => 'Your requested course: [_1], (queued pending validation) has now been created.', |
mt => 'Your requested course: [_1], (queued pending validation) has now been created.', |
args => [$cdescr], |
args => [$cdescr], |
}, |
}]; |
|
if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) { |
|
push(@{$approvedmsg},@{$clonemsg}); |
|
} |
|
push(@{$approvedmsg}, |
{ |
{ |
mt => 'Visit [_1] to log-in and access the course.', |
mt => 'Visit [_1] to log-in and access the course.', |
args => [$firsturl], |
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; |
my $sender = $dcname.':'.$dcdom; |
if (ref($postprocess) eq 'HASH') { |
if (ref($postprocess) eq 'HASH') { |
if (ref($postprocess->{'createdmsg'}) eq 'ARRAY') { |
if (ref($postprocess->{'createdmsg'}) eq 'ARRAY') { |