--- loncom/interface/loncreateuser.pm 2017/04/02 12:40:18 1.406.2.14
+++ loncom/interface/loncreateuser.pm 2017/07/26 19:45:45 1.442
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.406.2.14 2017/04/02 12:40:18 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.442 2017/07/26 19:45:45 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -252,13 +252,15 @@ sub build_tools_display {
'unofficial' => 'Can request creation of unofficial courses',
'community' => 'Can request creation of communities',
'textbook' => 'Can request creation of textbook courses',
+ 'placement' => 'Can request creation of placement tests',
'requestauthor' => 'Can request author space',
);
if ($context eq 'requestcourses') {
%userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
'requestcourses.official','requestcourses.unofficial',
- 'requestcourses.community','requestcourses.textbook');
- @usertools = ('official','unofficial','community','textbook');
+ 'requestcourses.community','requestcourses.textbook',
+ 'requestcourses.placement');
+ @usertools = ('official','unofficial','community','textbook','placement');
@options =('norequest','approval','autolimit','validate');
%validations = &Apache::lonnet::auto_courserequest_checks($ccdomain);
%reqtitles = &courserequest_titles();
@@ -333,6 +335,7 @@ sub build_tools_display {
'
'.$lt{$item}.' '."\n".
' '."\n".
&Apache::loncommon::start_data_table_row()."\n";
+
if (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
my ($curroption,$currlimit);
my $envkey = $context.'.'.$item;
@@ -451,12 +454,14 @@ sub coursereq_externaluser {
'unofficial' => 'Can request creation of unofficial courses',
'community' => 'Can request creation of communities',
'textbook' => 'Can request creation of textbook courses',
+ 'placement' => 'Can request creation of placement tests',
);
%userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
'reqcrsotherdom.official','reqcrsotherdom.unofficial',
- 'reqcrsotherdom.community','reqcrsotherdom.textbook');
- @usertools = ('official','unofficial','community','textbook');
+ 'reqcrsotherdom.community','reqcrsotherdom.textbook',
+ 'reqcrsotherdom.placement');
+ @usertools = ('official','unofficial','community','textbook','placement');
@options = ('approval','validate','autolimit');
%validations = &Apache::lonnet::auto_courserequest_checks($cdom);
my $optregex = join('|',@options);
@@ -537,6 +542,7 @@ sub courserequest_titles {
unofficial => 'Unofficial',
community => 'Communities',
textbook => 'Textbook',
+ placement => 'Placement Tests',
norequest => 'Not allowed',
approval => 'Approval by Dom. Coord.',
validate => 'With validation',
@@ -2202,6 +2208,7 @@ $lt{'uuas'} ($currentauth). $lt{'adcs'}.
ENDBADAUTH
}
} else { # Authentication type is valid
+
&initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');
my ($authformcurrent,$can_modify,@authform_others) =
&modify_login_block($ccdomain,$currentauth);
@@ -2345,7 +2352,7 @@ sub modify_login_block {
sub personal_data_display {
my ($ccuname,$ccdomain,$newuser,$context,$inst_results,$rolesarray,
- $now,$captchaform,$emailusername,$usertype) = @_;
+ $now,$captchaform,$emailusername,$usertype,$usernameset,$condition) = @_;
my ($output,%userenv,%canmodify,%canmodify_status);
my @userinfo = ('firstname','middlename','lastname','generation',
'permanentemail','id');
@@ -2372,6 +2379,7 @@ sub personal_data_display {
'inststatus' => "Affiliation",
'email' => 'E-mail address',
'valid' => 'Validation',
+ 'username' => 'Username',
);
%canmodify_status =
@@ -2390,7 +2398,7 @@ sub personal_data_display {
if (ref($emailusername) eq 'HASH') {
if (ref($emailusername->{$usertype}) eq 'HASH') {
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();
- @userinfo = ();
+ @userinfo = ();
if ((ref($infofields) eq 'ARRAY') && (ref($infotitles) eq 'HASH')) {
foreach my $field (@{$infofields}) {
if ($emailusername->{$usertype}->{$field}) {
@@ -2420,9 +2428,16 @@ sub personal_data_display {
$output = ''.$lt{'pd'}.' '.
&Apache::lonhtmlcommon::start_pick_box();
if (($context eq 'selfcreate') && ($newuser eq 'email')) {
+ if ($condition) {
+ if ($condition =~ /[-\w]+\.[-\w]+$/) {
+ $condition = '@'.$condition;
+ } else {
+ undef($condition);
+ }
+ }
$output .= &Apache::lonhtmlcommon::row_title($lt{'email'}.'* ',undef,
'LC_oddrow_value')."\n".
- ' ';
+ ' ';
$rowcount ++;
$output .= &Apache::lonhtmlcommon::row_closure(1);
my $upassone = ' ';
@@ -2437,6 +2452,19 @@ sub personal_data_display {
'LC_oddrow_value')."\n".
$upasstwo.
&Apache::lonhtmlcommon::row_closure()."\n";
+ if ($usernameset) {
+ my $onclick = "toggleDisplay(this,'selfcreateusername');";
+ $output .= &Apache::lonhtmlcommon::row_title($lt{'username'},undef,'LC_oddrow_value')."\n".
+ &mt('Use e-mail address: ').
+ ' '.&mt('Yes').' '."\n".
+ (' 'x2).
+ ' '.&mt('No').' '."\n".
+ ''.
+ ''.&mt('Preferred username').
+ ' '.
+ '
'."\n".&Apache::lonhtmlcommon::row_closure(1);
+ $rowcount ++;
+ }
}
foreach my $item (@userinfo) {
my $rowtitle = $lt{$item};
@@ -2764,7 +2792,7 @@ sub update_user_data {
my (%alerts,%rulematch,%inst_results,%curr_rules);
my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');
my @usertools = ('aboutme','blog','webdav','portfolio');
- my @requestcourses = ('official','unofficial','community','textbook');
+ my @requestcourses = ('official','unofficial','community','textbook','placement');
my @requestauthor = ('requestauthor');
my ($othertitle,$usertypes,$types) =
&Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});
@@ -2937,7 +2965,7 @@ sub update_user_data {
'requestcourses.community','requestcourses.textbook',
'reqcrsotherdom.official','reqcrsotherdom.unofficial',
'reqcrsotherdom.community','reqcrsotherdom.textbook',
- 'requestauthor'],
+ 'reqcrsotherdom.placement','requestauthor'],
$env{'form.ccdomain'},$env{'form.ccuname'});
my ($tmp) = keys(%userenv);
if ($tmp =~ /^(con_lost|error)/i) {
@@ -3228,8 +3256,9 @@ sub update_user_data {
($env{'user.domain'} eq $env{'form.ccdomain'})) {
my %newenvhash;
foreach my $key (keys(%changed)) {
- if (($key eq 'official') || ($key eq 'unofficial')
- || ($key eq 'community') || ($key eq 'textbook')) {
+ if (($key eq 'official') || ($key eq 'unofficial') ||
+ ($key eq 'community') || ($key eq 'textbook') ||
+ ($key eq 'placement')) {
$newenvhash{'environment.requestcourses.'.$key} =
$changeHash{'requestcourses.'.$key};
if ($changeHash{'requestcourses.'.$key}) {
@@ -3295,7 +3324,7 @@ sub update_user_data {
\%newsettingstext);
if ($env{'form.cid'} ne $userenv{'id'}) {
&Apache::lonnet::idput($env{'form.ccdomain'},
- {$env{'form.ccuname'} => $env{'form.cid'}});
+ {$env{'form.ccuname'} => $env{'form.cid'}},$uhome,'ids');
if (($recurseid) &&
(&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}))) {
my $idresult =
@@ -3438,6 +3467,7 @@ sub display_userinfo {
'unofficial' => 'Can Request Unofficial Courses',
'community' => 'Can Request Communities',
'textbook' => 'Can Request Textbook Courses',
+ 'placement' => 'Can Request Placement Tests',
'requestauthor' => 'Can Request Author Role',
'inststatus' => "Affiliation",
'prvs' => 'Previous Value:',
@@ -4910,47 +4940,73 @@ sub handler {
unless ($usertype) {
$usertype = 'default';
}
+ my ($showstatus,$showemail,$pickstart);
+ my $numextras = 0;
+ my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
+ if (ref($usertypes) eq 'HASH') {
+ if ($usertypes->{$usertype}) {
+ $showstatus = $usertypes->{$usertype};
+ } else {
+ $showstatus = $othertitle;
+ }
+ $numextras ++;
+ }
+ if (($info{$uname}{'email'} ne '') && ($info{$uname}{'email'} ne $uname)) {
+ $showemail = $info{$uname}{'email'};
+ $numextras ++;
+ }
if (ref($domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$usertype}) eq 'HASH') {
if ((ref($infofields) eq 'ARRAY') && (ref($infotitles) eq 'HASH')) {
+ $pickstart = 1;
$r->print(''.&Apache::lonhtmlcommon::start_pick_box());
- my ($num,$count,$showstatus);
+ my ($num,$count);
$count = scalar(keys(%{$domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$usertype}}));
- unless ($usertype eq 'default') {
- my ($othertitle,$usertypes,$types) =
- &Apache::loncommon::sorted_inst_types($dom);
- if (ref($usertypes) eq 'HASH') {
- if ($usertypes->{$usertype}) {
- $showstatus = $usertypes->{$usertype};
- $count ++;
- }
- }
- }
+ $count += $numextras;
foreach my $field (@{$infofields}) {
next unless ($domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$usertype}{$field});
next unless ($infotitles->{$field});
$r->print(&Apache::lonhtmlcommon::row_title($infotitles->{$field}).
$info{$uname}{$field});
$num ++;
- if ($count == $num) {
- $r->print(&Apache::lonhtmlcommon::row_closure(1));
- } else {
+ unless ($count == $num) {
$r->print(&Apache::lonhtmlcommon::row_closure());
}
}
- if ($showstatus) {
- $r->print(&Apache::lonhtmlcommon::row_title(&mt('Status type (self-reported)')).
- $showstatus.
- &Apache::lonhtmlcommon::row_closure(1));
+ }
+ }
+ if ($numextras) {
+ unless ($pickstart) {
+ $r->print('
'.&Apache::lonhtmlcommon::start_pick_box());
+ $pickstart = 1;
+ }
+ if ($showemail) {
+ my $closure = '';
+ unless ($showstatus) {
+ $closure = 1;
}
- $r->print(&Apache::lonhtmlcommon::end_pick_box().'
');
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('E-mail address')).
+ $showemail.
+ &Apache::lonhtmlcommon::row_closure($closure));
}
+ if ($showstatus) {
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('Status type[_1](self-reported)','
')).
+ $showstatus.
+ &Apache::lonhtmlcommon::row_closure(1));
+ }
+ }
+ if ($pickstart) {
+ $r->print(&Apache::lonhtmlcommon::end_pick_box().'
');
+ } else {
+ $r->print(''.&mt('No information to display for this account request.').'
');
}
+ } else {
+ $r->print(''.&mt('No information available for this account request.').'
');
}
}
}
}
- $r->print(&close_popup_form());
}
+ $r->print(&close_popup_form());
} elsif (($env{'form.action'} eq 'listusers') &&
($permission->{'view'} || $permission->{'cusr'})) {
my $helpitem = 'Course_View_Class_List';
@@ -5528,6 +5584,7 @@ sub print_main_menu {
groups => 'Community Groups',
},
);
+ $linktext{'Placement'} = $linktext{'Course'};
my %linktitle = (
'Course' => {
@@ -5542,6 +5599,8 @@ sub print_main_menu {
},
);
+ $linktitle{'Placement'} = $linktitle{'Course'};
+
push(@{ $menu[0]->{items} }, #Category: Single Users
{
linktext => $linktext{$crstype}{'single'},
@@ -5817,12 +5876,13 @@ function validate_types(form) {
}
function check_types(num,countfail,needaction) {
- var typeidx = getIndexByName('selfenroll_types_'+num);
+ var boxname = 'selfenroll_types_'+num;
+ var typeidx = getIndexByName(boxname);
var count = 0;
if (typeidx != -1) {
- if (document.$formname.elements[typeidx].length) {
- for (var k=0; k ';
if ($domd_chk eq 'ok') {
- $response .= &mt('You may want to search in the LON-CAPA domain instead of the institutional directory.');
+ $response .= &mt('You may want to search in the LON-CAPA domain instead of in the institutional directory.');
}
$response .= ' ';
}
@@ -8367,7 +8427,7 @@ sub user_search_result {
my $instd_chk = &instdirectorysrch_check($srch);
$response .= ''.$domd_chk.' ';
if ($instd_chk eq 'ok') {
- $response .= &mt('You may want to search in the institutional directory instead of the LON-CAPA domain.');
+ $response .= &mt('You may want to search in the institutional directory instead of in the LON-CAPA domain.');
}
$response .= ' ';
}
@@ -8468,7 +8528,7 @@ sub user_search_result {
$response = ''.
&mt('Institutional directory search is not available in domain: [_1]',$showdom).
' '.
- &mt('You may want to search in the LON-CAPA domain instead of the institutional directory.').
+ &mt('You may want to search in the LON-CAPA domain instead of in the institutional directory.').
' ';
}
}
@@ -8541,7 +8601,7 @@ sub user_search_result {
$response = ''.
&mt('Institutional directory search is not available in domain: [_1]',$showdom).
' '.
- &mt('You may want to search in the LON-CAPA domain instead of the institutional directory.').
+ &mt('You may want to search in the LON-CAPA domain instead of in the institutional directory.').
' ';
}
}