--- loncom/interface/loncoursequeueadmin.pm 2013/07/24 18:21:39 1.36
+++ loncom/interface/loncoursequeueadmin.pm 2015/06/04 18:57:54 1.52
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Utilities to administer domain course requests and course self-enroll requests
#
-# $Id: loncoursequeueadmin.pm,v 1.36 2013/07/24 18:21:39 bisitz Exp $
+# $Id: loncoursequeueadmin.pm,v 1.52 2015/06/04 18:57:54 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 {
@@ -116,7 +117,7 @@ sub send_selfserve_notification {
push(@rawmsg,@{$textstr});
}
} elsif ($context eq 'authormanagers') {
- $rawsubj = 'Authoring space requests reviewed';
+ $rawsubj = 'Authoring Space requests reviewed';
push(@rawmsg,{
mt => 'Authoring requests in the following domain: "[_1]" have been reviewed.',
args => ["\n$contextdesc"],
@@ -124,6 +125,15 @@ sub send_selfserve_notification {
if (ref($textstr) eq 'ARRAY') {
push(@rawmsg,@{$textstr});
}
+ } elsif ($context eq 'usernamemanagers') {
+ $rawsubj = 'LON-CAPA account requests reviewed';
+ push(@rawmsg,{
+ mt => 'Account requests in the following domain: "[_1]" have been reviewed.',
+ args => ["\n$contextdesc"],
+ });
+ if (ref($textstr) eq 'ARRAY') {
+ push(@rawmsg,@{$textstr});
+ }
} elsif ($context eq 'enroller') {
$rawsubj = 'Enrollment request';
if ($crstype eq 'community') {
@@ -203,20 +213,19 @@ sub send_selfserve_notification {
args => [" \n\n","\n"],
});
} elsif ($context eq 'authorreq') {
- $rawsubj = 'Authoring space request to review';
+ $rawsubj = 'Authoring Space request to review';
$msgtxt = 'Assignment of an author role in the [_1] domain[_2]was requested by [_3] on [_4].';
push(@rawmsg,{
mt => $msgtxt,
args => [$contextdesc,"\n",$textstr,$timestamp],
},
{
- mt =>'[_1]As Domain Coordinator, use: [_2]Main Menu -> Create users or modify the roles and privileges of users -> Authoring space reqests[_3]to display a list of pending requests, which you can either approve or reject.',
+ mt =>'[_1]As Domain Coordinator, use: [_2]Main Menu -> Create users or modify the roles and privileges of users -> Authoring Space requests[_3]to display a list of pending requests, which you can either approve or reject.',
args => ["\n","\n\n ","\n\n"],
});
-
} elsif ($context eq 'requestauthor') {
- $rawsubj = 'Authoring space request';
- $msgtxt = 'Your request for an authoring space requested on [_1]has been reviewed by a Domain Coordinator.';
+ $rawsubj = 'Authoring Space request';
+ $msgtxt = 'Your request for an Authoring Space requested on [_1]has been reviewed by a Domain Coordinator.';
push(@rawmsg,{
mt => $msgtxt,
args => [$timestamp."\n"],
@@ -224,6 +233,43 @@ sub send_selfserve_notification {
if (ref($textstr) eq 'ARRAY') {
push(@rawmsg,@{$textstr});
}
+ } elsif ($context eq 'usernamereq') {
+ $rawsubj = 'LON-CAPA account request';
+ $msgtxt = 'Creation of a LON-CAPA account in the [_1] domain[_2]was requested by [_3] on [_4].';
+ push(@rawmsg,{
+ mt => $msgtxt,
+ args => [$contextdesc,"\n",$textstr,$timestamp],
+ },
+ {
+ mt =>'[_1]As Domain Coordinator, use: [_2]Main Menu -> Create users or modify the roles and privileges of users
+ -> LON-CAPA account requests[_3]to display a list of pending requests, which you can either approve or reject.',
+ args => ["\n","\n\n ","\n\n"],
+ });
+ } elsif ($context eq 'requestusername') {
+ $rawsubj = 'LON-CAPA account request';
+ $msgtxt = 'Your request for a LON-CAPA account requested on [_1]has been reviewed by a Domain Coordinator.';
+ push(@rawmsg,{
+ mt => $msgtxt,
+ args => [$timestamp."\n"],
+ });
+ if (ref($textstr) eq 'ARRAY') {
+ push(@rawmsg,@{$textstr});
+ }
+ } elsif ($context eq 'uniquecode') {
+ $rawsubj = 'Course Identifier';
+ if (ref($textstr) eq 'ARRAY') {
+ push(@rawmsg,@{$textstr});
+ }
+ } elsif ($context eq 'queuedcrsreq') {
+ $rawsubj = 'Course Request Queued';
+ if (ref($textstr) eq 'ARRAY') {
+ push(@rawmsg,@{$textstr});
+ }
+ } elsif ($context eq 'createdcrsreq') {
+ $rawsubj = 'Course Creation Information';
+ if (ref($textstr) eq 'ARRAY') {
+ push(@rawmsg,@{$textstr});
+ }
}
my @to_notify = split(/,/,$notifylist);
my $numsent = 0;
@@ -241,9 +287,14 @@ sub send_selfserve_notification {
my %reciphash = (
cc => $msgcc,
);
- my ($uname,$udom);
+ my ($uname,$udom,$need_temp_env);
if ($sender =~ /:/) {
($uname,$udom) = split(/:/,$sender);
+ if ($context eq 'usernamereq') {
+ unless ($env{'user.name'} && $env{'user.domain'}) {
+ $need_temp_env = 1;
+ }
+ }
} elsif ($context eq 'course') {
$uname = $sender;
my %courseinfo = &Apache::lonnet::coursedescription($cid);
@@ -260,9 +311,14 @@ sub send_selfserve_notification {
$message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n";
}
}
- &Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message,\@recusers,\@recudoms,undef,undef,undef,undef,$senderuname,$senderudom);
+ &Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message,
+ \@recusers,\@recudoms,undef,undef,undef,undef,$senderuname,$senderudom);
my ($recipid,$recipstatus) = &Apache::lonmsg::store_recipients($subject,$uname,$udom,\%reciphash);
my $status;
+ if ($need_temp_env) {
+ $env{'user.name'} = $uname;
+ $env{'user.domain'} = $udom;
+ }
foreach my $recip (sort(keys(%{$msgcc}))) {
my ($ccname,$ccdom) = split(/:/,$recip);
my $recip_lh = &Apache::loncommon::user_lang($ccname,$ccdom,$cid);
@@ -295,10 +351,22 @@ sub send_selfserve_notification {
if ($rejectedlist) {
$message .= "\n\n".&Apache::lonlocal::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;
+ }
+ if ($rejectedlist) {
+ $message .= "\n\n".&Apache::lonlocal::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,\%sentmessage,undef,undef,undef,1,$recipid).',';
+ $status .= &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,1,
+ \%sentmessage,undef,undef,undef,1,$recipid).',';
}
$status =~ s/,$//;
+ if ($need_temp_env) {
+ undef($env{'user.name'});
+ undef($env{'user.domain'});
+ }
return ($recipstatus,$status);
}
@@ -315,6 +383,11 @@ sub display_queued_requests {
$namespace = 'requestauthorqueue';
%requesthash = &Apache::lonnet::dump_dom($namespace,$dom);
$nextelement = '';
+ } elsif ($context eq 'requestusername') {
+ $formaction = '/adm/createuser';
+ $namespace = 'usernamequeue';
+ %requesthash = &Apache::lonnet::dump_dom($namespace,$dom);
+ $nextelement = '';
} else {
$formaction = '/adm/createcourse';
$namespace = 'courserequestqueue';
@@ -340,6 +413,9 @@ sub display_queued_requests {
} elsif ($context eq 'requestauthor') {
$timestamp = $requesthash{$item};
($entry) = ($item =~ /^($match_username)_approval$/);
+ } elsif ($context eq 'requestusername') {
+ $timestamp = $requesthash{$item};
+ ($entry) = (&unescape($item) =~ /^($match_username)_approval$/);
} else {
$timestamp = $requesthash{$item}{'timestamp'};
if (ref($requesthash{$item}) eq 'HASH') {
@@ -370,7 +446,9 @@ sub display_queued_requests {
'
'.&mt('Requests are validated against institutional data to confirm that the requestor is an instructor of record.').' '.
&mt('Validation is attempted when the request is submitted.').' '.&mt('If unvalidated, the request will be held in a queue.').' '.&mt('Validation of pending requests is automatically repeated daily.').'
'.&mt('Requests for LON-CAPA accounts queued pending approval by a Domain Coordinator').'
';
} else {
$output .= '
'.&mt('Course/Community requests queued pending approval by a Domain Coordinator').'
';
}
@@ -383,7 +461,9 @@ sub display_queued_requests {
} elsif ($context eq 'pending') {
$output .= &mt('There are currently no requests for official courses awaiting validation.');
} elsif ($context eq 'requestauthor') {
- $output .= &mt('There are currently no requests for authoring space awaiting approval.');
+ $output .= &mt('There are currently no requests for Authoring Space awaiting approval.');
+ } elsif ($context eq 'requestusername') {
+ $output .= &mt('There are currently no requests for LON-CAPA accounts awaiting approval.');
} elsif ($context eq 'domain') {
$output .= &mt('There are currently no course or community requests awaiting approval.');
}
@@ -403,6 +483,10 @@ sub display_queued_requests {
$output .= &mt('There are currently no enrollment requests awaiting approval.');
} elsif ($context eq 'pending') {
$output .= &mt('There are currently no requests for official courses awaiting validation.');
+ } elsif ($context eq 'requestauthor') {
+ $output .= &mt('There are currently no requests for Authoring Space awaiting approval.');
+ } elsif ($context eq 'requestusername') {
+ $output .= &mt('There are currently no requests for LON-CAPA accounts awaiting approval.');
} else {
$output .= &mt('There are currently no course or community requests awaiting approval.');
}
@@ -426,6 +510,9 @@ sub build_queue_display {
'
';
+ }
+ if ($notifylist ne '') {
+ &send_selfserve_notification($notifylist,$chgmsg,undef,$domdesc,
+ $now,'usernamemanagers',$sender,
+ $approvedlist,$rejectedlist);
+ }
} else {
$chgmsg = "'Action was taken on the following course and community requests by [_1].',$namelink";
if (@completed) {
@@ -1047,6 +1313,9 @@ sub update_request_queue {
}
my $syllabuslink =
&Apache::loncommon::syllabuswrapper($showcourse,$cnum,$cdom);
+ if ($codes{$cnum}) {
+ $syllabuslink .= ' '.&mt('Unique code: [_1]',$codes{$cnum});
+ }
$output .= '