version 1.52.2.6, 2024/07/02 13:55:53
|
version 1.58, 2017/08/03 16:28:39
|
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 656 sub update_request_queue {
|
Line 657 sub update_request_queue {
|
$beneficiary = 'enroller'; |
$beneficiary = 'enroller'; |
$cid = $env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
$crstype = lc(&Apache::loncommon::course_type()); |
$crstype = lc(&Apache::loncommon::course_type()); |
$firsturl = &course_portal_url($cnum,$cdom); |
$firsturl = &Apache::lonnet::course_portal_url($cnum,$cdom); |
%requesthash = &Apache::lonnet::dump($namespace,$cdom,$cnum); |
%requesthash = &Apache::lonnet::dump($namespace,$cdom,$cnum); |
$access_start = $env{'course.'.$cid.'.internal.selfenroll_start_access'}; |
$access_start = $env{'course.'.$cid.'.internal.selfenroll_start_access'}; |
$access_end = $env{'course.'.$cid.'.internal.selfenroll_end_access'}; |
$access_end = $env{'course.'.$cid.'.internal.selfenroll_end_access'}; |
Line 685 sub update_request_queue {
|
Line 686 sub update_request_queue {
|
} |
} |
} |
} |
my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom); |
my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom); |
$firsturl = &course_portal_url($domconfiguser,$cdom); |
$firsturl = &Apache::lonnet::course_portal_url($domconfiguser,$cdom); |
$approvedmsg = [{ |
$approvedmsg = [{ |
mt => 'Your request for Authoring Space has been approved.', |
mt => 'Your request for Authoring Space has been approved.', |
}, |
}, |
Line 710 sub update_request_queue {
|
Line 711 sub update_request_queue {
|
} |
} |
} |
} |
my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom); |
my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom); |
$firsturl = &course_portal_url($domconfiguser,$cdom); |
$firsturl = &Apache::lonnet::course_portal_url($domconfiguser,$cdom); |
$approvedmsg = [{ |
$approvedmsg = [{ |
mt => 'Your request for a LON-CAPA account has been approved.', |
mt => 'Your request for a LON-CAPA account has been approved.', |
}, |
}, |
Line 1004 sub update_request_queue {
|
Line 1005 sub update_request_queue {
|
} else { |
} else { |
$approvedmsg = $approvalmsg{'course'}; |
$approvedmsg = $approvalmsg{'course'}; |
} |
} |
my $firsturl = &course_portal_url($cnum,$cdom); |
my $firsturl = &Apache::lonnet::course_portal_url($cnum,$cdom); |
if (ref($approvedmsg) eq 'ARRAY') { |
if (ref($approvedmsg) eq 'ARRAY') { |
if (ref($approvedmsg->[1]) eq 'HASH') { |
if (ref($approvedmsg->[1]) eq 'HASH') { |
$approvedmsg->[1]->{'args'} = [$firsturl]; |
$approvedmsg->[1]->{'args'} = [$firsturl]; |
Line 1588 sub update_request_queue {
|
Line 1589 sub update_request_queue {
|
return $output; |
return $output; |
} |
} |
|
|
sub course_portal_url { |
|
my ($cnum,$cdom) = @_; |
|
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
|
my $hostname = &Apache::lonnet::hostname($chome); |
|
my $protocol = $Apache::lonnet::protocol{$chome}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
|
my $firsturl; |
|
if ($domdefaults{'portal_def'}) { |
|
$firsturl = $domdefaults{'portal_def'}; |
|
} else { |
|
$firsturl = $protocol.'://'.$hostname; |
|
} |
|
return $firsturl; |
|
} |
|
|
|
sub get_student_counts { |
sub get_student_counts { |
my ($cdom,$cnum) = @_; |
my ($cdom,$cnum) = @_; |
my (%idx,%stucounts); |
my (%idx,%stucounts); |
Line 1629 sub course_creation {
|
Line 1614 sub course_creation {
|
(ref($longroles) eq 'HASH')) { |
(ref($longroles) eq 'HASH')) { |
return ('error: Invalid request'); |
return ('error: Invalid request'); |
} |
} |
my ($result,$ownername,$ownerdom,$autocoowner); |
my ($result,$ownername,$ownerdom); |
my $crstype = $details->{'crstype'}; |
my $crstype = $details->{'crstype'}; |
my $coursedesc = $details->{'cdescr'}; |
my $coursedesc = $details->{'cdescr'}; |
my $accessstart = $details->{'accessstart'}; |
my $accessstart = $details->{'accessstart'}; |
my $accessend = $details->{'accessend'}; |
my $accessend = $details->{'accessend'}; |
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses','autoenroll'],$dom); |
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$dom); |
if (ref($domconfig{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') { |
if ($domconfig{'requestcourses'}{'uniquecode'}{$crstype}) { |
if ($domconfig{'requestcourses'}{'uniquecode'}{$crstype}) { |
Line 1642 sub course_creation {
|
Line 1627 sub course_creation {
|
} |
} |
} |
} |
} |
} |
if (ref($domconfig{'autoenroll'}) eq 'HASH') { |
|
$autocoowner = $domconfig{'autoenroll'}{'co-owners'}; |
|
} |
|
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$ownername = $details->{'owner'}; |
$ownername = $details->{'owner'}; |
$ownerdom = $details->{'domain'}; |
$ownerdom = $details->{'domain'}; |
Line 1659 sub course_creation {
|
Line 1641 sub course_creation {
|
$owneremail = $emails{$email}; |
$owneremail = $emails{$email}; |
last if ($owneremail ne ''); |
last if ($owneremail ne ''); |
} |
} |
my %reqdetails = &build_batchcreatehash($dom,$cnum,$context,$details,$owneremail,$domdefs); |
my %reqdetails = &build_batchcreatehash($dom,$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,$newusermsg,$addresult, |
$enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,$coderef); |
$enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,$coderef); |
Line 1673 sub course_creation {
|
Line 1655 sub course_creation {
|
$postprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,$result,$ownername, |
$postprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,$result,$ownername, |
$ownerdom,$fullname,$coursedesc,$code, |
$ownerdom,$fullname,$coursedesc,$code, |
$accessstart,$accessend,$customhash); |
$accessstart,$accessend,$customhash); |
if ($autocoowner) { |
|
my $instcode = $details->{'instcode'}; |
|
if (($instcode ne '') && (ref($reqdetails{'users'}) eq 'HASH')) { |
|
my @posscoowners; |
|
my $now = time; |
|
foreach my $person (keys(%{$reqdetails{'users'}})) { |
|
my ($uname,$udom) = split(/:/,$person); |
|
next if (($udom ne $dom) || (($uname eq $ownername) && ($udom eq $ownerdom))); |
|
if ((&Apache::lonnet::homeserver($uname,$udom,1) ne 'no_host') && |
|
(ref($reqdetails{'users'}{$person}) eq 'HASH')) { |
|
if ((grep(/^cc$/,keys(%{$reqdetails{'users'}{$person}}))) && |
|
(ref($reqdetails{'users'}{$person}{'cc'}) eq 'HASH')) { |
|
my $start = $reqdetails{'users'}{$person}{'cc'}{'start'}; |
|
my $end = $reqdetails{'users'}{$person}{'cc'}{'end'}; |
|
if ((($start eq '') || ($start <= $now)) && |
|
(($end eq '') || ($end >= $now))) { |
|
push(@posscoowners,$person); |
|
} |
|
} |
|
} |
|
} |
|
my @coowners; |
|
if (@posscoowners) { |
|
foreach my $user (@posscoowners) { |
|
my ($checkcc,$desc) = |
|
&Apache::lonnet::auto_validate_instcode($cnum,$dom,$instcode,$user); |
|
unless ($checkcc eq 'valid') { |
|
if (ref($reqdetails{'crosslists'}) eq 'HASH') { |
|
foreach my $key (keys(%{$reqdetails{'crosslists'}})) { |
|
if (ref($reqdetails{'crosslists'}{$key}) eq 'HASH') { |
|
my $inst_crosslist = $reqdetails{'crosslists'}{$key}{'inst'}; |
|
if ($inst_crosslist ne '') { |
|
$checkcc = |
|
&Apache::lonnet::auto_validate_inst_crosslist($cnum,$dom,$instcode, |
|
$inst_crosslist,$user); |
|
last if ($checkcc eq 'valid'); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if ($checkcc eq 'valid') { |
|
if (@coowners > 0) { |
|
unless (grep(/^\Q$user\E$/,@coowners)) { |
|
push(@coowners,$user); |
|
} |
|
} else { |
|
push(@coowners,$user); |
|
} |
|
} |
|
} |
|
} |
|
if (@coowners > 0) { |
|
my $chome = &Apache::lonnet::homeserver($cnum,$dom); |
|
unless ($chome eq 'no_host') { |
|
&Apache::lonnet::store_coowners($dom,$cnum,$chome,'',@coowners); |
|
} |
|
} |
|
} |
|
} |
|
} else { |
} else { |
$result = 'error: '.$cid; |
$result = 'error: '.$cid; |
} |
} |
Line 1740 sub course_creation {
|
Line 1662 sub course_creation {
|
} |
} |
|
|
sub build_batchcreatehash { |
sub build_batchcreatehash { |
my ($dom,$cnum,$context,$details,$owneremail,$domdefs) = @_; |
my ($dom,$context,$details,$owneremail,$domdefs) = @_; |
my %batchhash; |
my %batchhash; |
my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections users uniquecode}; |
my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists 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 1776 sub build_batchcreatehash {
|
Line 1683 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 2195 sub process_official_reqs {
|
Line 2104 sub process_official_reqs {
|
my $cid = $dom.'_'.$cnum; |
my $cid = $dom.'_'.$cnum; |
push(@{$newcids{$instcode}},$cid); |
push(@{$newcids{$instcode}},$cid); |
if ($dcname && $dcdom) { |
if ($dcname && $dcdom) { |
my $firsturl = &course_portal_url($cnum,$dom); |
my $firsturl = &Apache::lonnet::course_portal_url($cnum,$dom); |
my $beneficiary = 'pendingrequestor'; |
my $beneficiary = 'pendingrequestor'; |
my $now = time; |
my $now = time; |
my $owner = $ownername.':'.$ownerdom; |
my $owner = $ownername.':'.$ownerdom; |
Line 2316 sub postprocess_crsenv {
|
Line 2225 sub postprocess_crsenv {
|
my %needcrsidput = ( |
my %needcrsidput = ( |
'internal.selfenroll_types' => 1, |
'internal.selfenroll_types' => 1, |
'internal.selfenroll_start_date' => 1, |
'internal.selfenroll_start_date' => 1, |
'internal.selfenroll_end_date' => 1, |
'internal. selfenroll_end_date' => 1, |
); |
); |
my (@needupdate,%newcrsenv); |
my (@needupdate,%newcrsenv); |
foreach my $key (keys(%{$postprocessenv})) { |
foreach my $key (keys(%{$postprocessenv})) { |