--- loncom/interface/loncreateuser.pm 2009/04/06 14:52:04 1.290
+++ loncom/interface/loncreateuser.pm 2009/08/14 14:21:00 1.295.2.4
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.290 2009/04/06 14:52:04 bisitz Exp $
+# $Id: loncreateuser.pm,v 1.295.2.4 2009/08/14 14:21:00 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -143,6 +143,7 @@ sub portfolio_quota {
$custom_off = ' checked="checked" ';
my $quota_javascript = <<"END_SCRIPT";
END_SCRIPT
if ($quotatype eq 'custom') {
@@ -282,6 +284,94 @@ sub build_tools_display {
return $output;
}
+sub coursereq_externaluser {
+ my ($ccuname,$ccdomain,$cdom) = @_;
+ my (@usertools,@options,%validations,%userenv,$output);
+ my %lt = &Apache::lonlocal::texthash (
+ 'official' => 'Can request creation of official courses',
+ 'unofficial' => 'Can request creation of unofficial courses',
+ 'community' => 'Can request creation of communities',
+ );
+
+ %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
+ 'reqcrsotherdom.official','reqcrsotherdom.unofficial',
+ 'reqcrsotherdom.community');
+ @usertools = ('official','unofficial','community');
+ @options = ('approve','validate','autolimit');
+ %validations = &Apache::lonnet::auto_courserequest_checks($cdom);
+ my $optregex = join('|',@options);
+ my %reqtitles = &courserequest_titles();
+ foreach my $item (@usertools) {
+ my ($curroption,$currlimit,$tooloff);
+ if ($userenv{'reqcrsotherdom.'.$item} ne '') {
+ my @curr = split(',',$userenv{'reqcrsotherdom.'.$item});
+ if (grep(/^\Q$cdom\E:($optregex)=?(\d*)$/,@curr)) {
+ $curroption = $1;
+ $currlimit = $2;
+ if (!$curroption) {
+ $curroption = 'norequest';
+ }
+ }
+ } else {
+ $curroption = 'norequest';
+ $tooloff = ' checked="checked"';
+ }
+ $output.= &Apache::loncommon::start_data_table_row()."\n".
+ '
'.$lt{$item}.': '.
+ ' ';
+ foreach my $option (@options) {
+ if ($option eq 'validate') {
+ my $canvalidate = 0;
+ if (ref($validations{$item}) eq 'HASH') {
+ if ($validations{$item}{'_external_'}) {
+ $canvalidate = 1;
+ }
+ }
+ next if (!$canvalidate);
+ }
+ my $checked = '';
+ if ($option eq $curroption) {
+ $checked = ' checked="checked"';
+ }
+ $output .= ' ';
+ if ($option eq 'autolimit') {
+ $output .= '';
+ }
+ $output .= ' '
+ }
+ $output .= '
'."\n".
+ &Apache::loncommon::end_data_table_row()."\n";
+ }
+ return $output;
+}
+
+sub courserequest_titles {
+ my %titles = &Apache::lonlocal::texthash (
+ official => 'Official', unofficial => 'Unofficial',
+ community => 'Communities', norequest => 'Not allowed',
+ approve => 'Approval by Dom. Coord.',
+ validate => 'With validation',
+ autolimit => 'Numerical limit',
+ );
+ return %titles;
+}
+
+sub courserequest_display {
+ my %titles = &Apache::lonlocal::texthash (
+ approve => 'Yes, need approval',
+ validate => 'Yes, with validation',
+ norequest => 'No',
+ );
+ return %titles;
+}
+
# =================================================================== Phase one
sub print_username_entry_form {
@@ -299,7 +389,9 @@ sub print_username_entry_form {
my $jscript = &Apache::loncommon::studentbrowser_javascript()."\n".
''."\n";
my %loaditems = (
@@ -466,6 +558,7 @@ sub user_modification_js {
return <
+//
END
}
@@ -502,6 +595,7 @@ sub print_user_selection_page {
my $jscript = (<
+//
ENDSCRIPT
@@ -631,7 +726,7 @@ sub print_user_modification_page {
&Apache::lonuserutils::can_create_user($ccdomain,$context,
$usertype);
if (!$cancreate) {
- my $helplink = ' href="javascript:helpMenu('."'display'".')"';
+ my $helplink = 'javascript:helpMenu('."'display'".')';
my %usertypetext = (
official => 'institutional',
unofficial => 'non-institutional',
@@ -641,7 +736,12 @@ sub print_user_modification_page {
$response = ''.&mt('No match was found for the username ([_1]) in LON-CAPA domain: [_2]',$ccuname,$ccdomain).
' ';
}
- $response .= ''.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.").' '.&mt('Contact the helpdesk for assistance.',$helplink).'
';
+ $response .= '
'
+ .&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.")
+ .' '
+ .&mt('Please contact the [_1]helpdesk[_2] for assistance.'
+ ,'','')
+ .'
'.
&Apache::loncommon::start_data_table().
@@ -1756,7 +1871,10 @@ sub update_user_data {
my $newuser = 0;
my ($jsback,$elements) = &crumb_utilities();
my $jscript = ''."\n";
+ '// '."\n".
+ ''."\n";
my %breadcrumb_text = &singleuser_breadcrumb();
my $args;
if ($env{'form.popup'}) {
@@ -1993,7 +2111,9 @@ sub update_user_data {
('environment',['firstname','middlename','lastname','generation',
'id','permanentemail','portfolioquota','inststatus','tools.aboutme',
'tools.blog','tools.portfolio','requestcourses.official',
- 'requestcourses.unofficial'],
+ 'requestcourses.unofficial','requestcourses.community',
+ 'reqcrsotherdom.official','reqcrsotherdom.unofficial',
+ 'reqcrsotherdom.community'],
$env{'form.ccdomain'},$env{'form.ccuname'});
my ($tmp) = keys(%userenv);
if ($tmp =~ /^(con_lost|error)/i) {
@@ -2095,7 +2215,7 @@ sub update_user_data {
(!$forceid)) {
if ($env{'form.cid'} ne $uidhash{$env{'form.ccuname'}}) {
$env{'form.cid'} = $userenv{'id'};
- $no_forceid_alert = &mt('New Student/Employee ID does not match existing ID for this user.')
+ $no_forceid_alert = &mt('New student/employee ID does not match existing ID for this user.')
.' '
.&mt("Change is not permitted without checking the 'Force ID change' checkbox on the previous page.")
.' '."\n";
@@ -2122,7 +2242,7 @@ sub update_user_data {
$oldinststatuses,$newinststatuses);
my ($defquota,$settingstatus) =
&Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus);
- my ($showquota,$showtools,$showrequestcourses,$showinststatus);
+ my ($showquota,$showtools,$showrequestcourses,$showinststatus,$showreqotherdom);
if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
$showquota = 1;
}
@@ -2131,6 +2251,8 @@ sub update_user_data {
}
if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
$showrequestcourses = 1;
+ } elsif (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
+ $showreqotherdom = 1;
}
if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) {
$showinststatus = 1;
@@ -2214,8 +2336,14 @@ sub update_user_data {
}
&tool_changes('tools',\@usertools,\%oldaccess,\%oldaccesstext,\%userenv,
\%changeHash,\%changed,\%newaccess,\%newaccesstext);
- &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
- \%userenv, \%changeHash,\%changed,\%newaccess,\%newaccesstext);
+
+ if ($env{'form.ccdomain'} eq $env{'request.role.domain'}) {
+ &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
+ \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
+ } else {
+ &tool_changes('reqcrsotherdom',\@requestcourses,\%oldaccess,\%oldaccesstext,
+ \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
+ }
if ($env{'form.cfirstname'} ne $userenv{'firstname'} ||
$env{'form.cmiddlename'} ne $userenv{'middlename'} ||
$env{'form.clastname'} ne $userenv{'lastname'} ||
@@ -2328,6 +2456,11 @@ END
$r->print("
';
+ }
+ return $menu_html;
}
sub restore_prev_selections {
@@ -3985,7 +4202,9 @@ ENDSCRIPT
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
my $output = ''."\n".
'
'.$lt->{'selfenroll'}.'
'."\n";
my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum);
@@ -4877,6 +5096,7 @@ sub print_userchangelogs_display {
$r->print('');
$r->print(<<"ENDSCRIPT");
ENDSCRIPT
}
} else {
- $r->print(&mt('There are no records to display'));
+ $r->print('
'.
+ &mt('There are no records to display').
+ '
');
}
$r->print(''.
'');
@@ -4903,7 +5126,7 @@ sub role_display_filter {
my $context = 'course';
my $nolink = 1;
my $output = '
';
@@ -4944,7 +5167,7 @@ sub role_display_filter {
foreach my $chgtype ('any','auto','updatenow','createcourse','course','domain','selfenroll') {
my $selstr = '';
if ($curr->{'chgcontext'} eq $chgtype) {
- $output .= $selstr = ' selected="selected"';
+ $selstr = ' selected="selected"';
}
if (($chgtype eq 'auto') || ($chgtype eq 'updatenow')) {
next if (!&Apache::lonnet::auto_run($cnum,$cdom));
@@ -4957,7 +5180,7 @@ sub role_display_filter {
&mt('[_1]Note:[_2] Only changes made from servers running LON-CAPA 2.6.99.0 or later are displayed.');
if ($version) {
$output .= ' '.&mt('This server is version [_3].','','',$version); }
- $output .= ' ';
+ $output .= ' ';
return $output;
}
@@ -5370,7 +5593,7 @@ sub build_search_response {
.&mt("You are not authorized to create new users in your current role's domain - [_1]."
,''.$env{'request.role.domain'}.'')
.' '
- .&mt('Contact the [_1]helpdesk[_2] if you need to create a new user.'
+ .&mt('Please contact the [_1]helpdesk[_2] if you need to create a new user.'
,' '
,'')
.'
';
@@ -5586,7 +5809,7 @@ sub course_level_dc {
'
'.$courseform.'
'.$lt{'rol'}.'
'.$lt{'grs'}.'
'.$lt{'sta'}.'
'.$lt{'end'}.'
'.
&Apache::loncommon::end_data_table_header_row();
my $otheritems = &Apache::loncommon::start_data_table_row()."\n".
- '