--- loncom/interface/loncoursequeueadmin.pm 2014/02/12 20:47:40 1.43
+++ loncom/interface/loncoursequeueadmin.pm 2014/05/13 16:05:45 1.49
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Utilities to administer domain course requests and course self-enroll requests
#
-# $Id: loncoursequeueadmin.pm,v 1.43 2014/02/12 20:47:40 raeburn Exp $
+# $Id: loncoursequeueadmin.pm,v 1.49 2014/05/13 16:05:45 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -90,6 +90,7 @@ use Apache::loncommon;
use Apache::lonmsg;
use Apache::lonlocal;
use Apache::lonuserutils;
+use LONCAPA::batchcreatecourse;
use LONCAPA qw(:DEFAULT :match);
sub send_selfserve_notification {
@@ -876,7 +877,7 @@ sub update_request_queue {
if (ref($curr{$uname}) eq 'HASH') {
my ($username,$logtoken,$serverid,$encpass,$courseid,$id,$firstname,
- $middlename,$lastname,$generation);
+ $middlename,$lastname,$generation,$inststatus);
$curr{$uname}{'timestamp'} = $now;
$curr{$uname}{'adjudicator'} = $env{'user.name'}.':'.$env{'user.domain'};
$courseid = $curr{$uname}{'courseid'};
@@ -885,6 +886,7 @@ sub update_request_queue {
$middlename = $curr{$uname}{'middlename'};
$lastname = $curr{$uname}{'lastname'};
$generation = $curr{$uname}{'generation'};
+ $inststatus = $curr{$uname}{'inststatus'};
my ($key,$caller)=split(/&/,$curr{$uname}{'tmpinfo'});
if ($caller eq 'createaccount') {
@@ -901,6 +903,9 @@ sub update_request_queue {
if ($uhome eq 'no_host') {
push(@warn_approves,$uname);
} else {
+ unless (($inststatus eq 'default') || ($inststatus eq '')) {
+ &Apache::lonnet::put('environment',{inststatus => $inststatus},$cdom,$uname);
+ }
&send_selfserve_notification($uname.':'.$cdom,
$approvedmsg,undef,undef,$now,
$beneficiary,$sender);
@@ -1306,7 +1311,7 @@ sub update_request_queue {
my $syllabuslink =
&Apache::loncommon::syllabuswrapper($showcourse,$cnum,$cdom);
if ($codes{$cnum}) {
- $syllabuslink .= &mt('Unique code: [_1]',$codes{$cnum});
+ $syllabuslink .= ' '.&mt('Unique code: [_1]',$codes{$cnum});
}
$output .= '
'.$syllabuslink.'';
}
@@ -1600,7 +1605,9 @@ sub course_creation {
my ($result,$ownername,$ownerdom);
my $crstype = $details->{'crstype'};
my $coursedesc = $details->{'cdescr'};
- my %domconfig = &Apache::lonnet::get_dom('configuration',['requestauthor'],$dom);
+ my $accessstart = $details->{'accessstart'};
+ my $accessend = $details->{'accessend'};
+ my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$dom);
if (ref($domconfig{'requestcourses'}) eq 'HASH') {
if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') {
if ($domconfig{'requestcourses'}{'uniquecode'}{$crstype}) {
@@ -1634,7 +1641,8 @@ sub course_creation {
$code = $$coderef;
}
$postprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,$result,$ownername,
- $ownerdom,$fullname,$coursedesc,$code,$customhash);
+ $ownerdom,$fullname,$coursedesc,$code,
+ $accessstart,$accessend,$customhash);
} else {
$result = 'error: '.$cid;
}
@@ -2054,6 +2062,11 @@ sub process_official_reqs {
}
}
}
+ if (ref($postprocess->{'createdactions'}) eq 'HASH') {
+ if (ref($postprocess->{'createdactions'}{'environment'}) eq 'HASH') {
+ &postprocess_crsenv($dom,$cnum,$postprocess->{'createdactions'}{'environment'});
+ }
+ }
}
&send_selfserve_notification($owner,$approvedmsg,
$cid,$cdescr,$now,
@@ -2125,6 +2138,68 @@ sub process_official_reqs {
return $output;
}
+sub postprocess_crsenv {
+ my ($dom,$cnum,$postprocessenv) = @_;
+ if (ref($postprocessenv) eq 'HASH') {
+ my $cid = $dom.'_'.$cnum;
+ my %settablecrsenv = (
+ 'internal.selfenroll_types' => 1,
+ 'internal.selfenroll_registered' => 1,
+ 'internal.selfenroll_section' => 1,
+ 'internal.selfenroll_start_access' => 1,
+ 'internal.selfenroll_end_access' => 1,
+ 'internal.selfenroll_limit' => 1,
+ 'internal.selfenroll_cap' => 1,
+ 'internal.selfenroll_approval' => 1,
+ 'internal.selfenroll_notifylist' => 1,
+ );
+ my %needcrsidput = (
+ 'internal.selfenroll_types' => 1,
+ 'internal.selfenroll_start_date' => 1,
+ 'internal. selfenroll_end_date' => 1,
+ );
+ my (@needupdate,%newcrsenv);
+ foreach my $key (keys(%{$postprocessenv})) {
+ if ($settablecrsenv{$key}) {
+ $newcrsenv{$key} = $postprocessenv->{$key};
+ if ($needcrsidput{$key}) {
+ push(@needupdate,$key);
+ }
+ }
+ if (keys(%newcrsenv)) {
+ my $putresult = &Apache::lonnet::put('environment',\%newcrsenv,$dom,$cnum);
+ if ($putresult eq 'ok') {
+ if (@needupdate) {
+ my %crsinfo =
+ &Apache::lonnet::courseiddump($dom,'.',1,'.','.',$cnum,undef,undef,'.');
+ if (ref($crsinfo{$cid}) eq 'HASH') {
+ foreach my $key (@needupdate) {
+ $crsinfo{$cid}{$key} = $newcrsenv{$key};
+ }
+ my $chome = &Apache::lonnet::homeserver($cnum,$dom);
+ &Apache::lonnet::courseidput($dom,\%crsinfo,$chome,'notime');
+ }
+ }
+ }
+ }
+ }
+ }
+ return;
+}
+
+
+sub requestcourses_validation_types {
+ my @items = ('url','fields','button','markup');
+ my %names = &Apache::lonlocal::texthash (
+ url => 'Web address of validation server/script',
+ fields => 'Form fields to send to validator',
+ button => 'Text for validation button',
+ markup => 'Validation description (HTML)',
+ );
+ my @fields = ('owner','course','coursetype','description');
+ return (\@items,\%names,\@fields);
+}
+
sub is_active_author {
if ($env{'user.role.au./'.$env{'user.domain'}.'/'} =~ /^(\d*)\.(\d*)$/) {
if ((!$1 || $1 < time) &&