--- loncom/interface/lonuserutils.pm 2010/11/09 14:14:55 1.109.2.8 +++ loncom/interface/lonuserutils.pm 2010/11/29 04:40:12 1.109.2.11 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.109.2.8 2010/11/09 14:14:55 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.109.2.11 2010/11/29 04:40:12 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -630,28 +630,43 @@ END ############################################################### sub upload_manager_javascript_forward_associate { my ($can_assign) = @_; - my $auth_update; + my ($auth_update,$numbuttons,$argreset); if (ref($can_assign) eq 'HASH') { - if (keys(%{$can_assign}) > 1) { + if ($can_assign->{'krb4'} || $can_assign->{'krb5'}) { + $argreset .= " vf.krbarg.value='';\n"; + $numbuttons ++ ; + } + if ($can_assign->{'int'}) { + $argreset .= " vf.intarg.value='';\n"; + $numbuttons ++; + } + if ($can_assign->{'loc'}) { + $argreset .= " vf.locarg.value='';\n"; + $numbuttons ++; + } + if (!$can_assign->{'int'}) { + my $warning = &mt('You may not specify an initial password for each user, as this is only available when new users use LON-CAPA internal authentication.\n'). + &mt('Your current role does not have rights to create users with that authentication type.'); + $auth_update = <<"END"; + // Currently the initial password field is only supported for internal auth + // (see bug 6368). + if (nw==2) { + eval('vf.f'+tf+'.selectedIndex=0;') + alert('$warning'); + } +END + } elsif ($numbuttons > 1) { $auth_update = <<"END"; // If we set the password, make the password form below correspond to // the new value. - if (nw==9) { + if (nw==2) { changed_radio('int',document.studentform); set_auth_radio_buttons('int',document.studentform); +$argreset + } + END } - if ($can_assign->{'krb'}) { - $auth_update .= " vf.krbarg.value='';\n"; - } - if ($can_assign->{'int'}) { - $auth_update .= " vf.intarg.value='';\n"; - } - if ($can_assign->{'loc'}) { - $auth_update .= " vf.locarg.value='';\n"; - } - $auth_update .= " - }\n"; } return(< 1) { - $auth_update = <<"END"; - // initial password specified, pick internal authentication - if (tf==8 && nw!=0) { - changed_radio('int',document.studentform); - set_auth_radio_buttons('int',document.studentform); -END - } - if ($can_assign->{'krb'}) { - $auth_update .= " vf.krbarg.value='';\n"; + if ($can_assign->{'krb4'} || $can_assign->{'krb5'}) { + $argreset .= " vf.krbarg.value='';\n"; + $numbuttons ++ ; } if ($can_assign->{'int'}) { - $auth_update .= " vf.intarg.value='';\n"; + $argreset .= " vf.intarg.value='';\n"; + $numbuttons ++; } if ($can_assign->{'loc'}) { - $auth_update .= " vf.locarg.value='';\n"; + $argreset .= " vf.locarg.value='';\n"; + $numbuttons ++; + } + if (!$can_assign->{'int'}) { + my $warning = &mt('You may not specify an initial password, as this is only available when new users use LON-CAPA internal authentication.\n'). + &mt('Your current role does not have rights to create users with that authentication type.'); + $auth_update = <<"END"; + // Currently the initial password field is only supported for internal auth + // (see bug 6368). + if (tf==1 && nw!=0) { + eval('vf.f'+tf+'.selectedIndex=0;') + alert('$warning'); + } +END + } elsif ($numbuttons > 1) { + $auth_update = <<"END"; + // initial password specified, pick internal authentication + if (tf==1 && nw!=0) { + changed_radio('int',document.studentform); + set_auth_radio_buttons('int',document.studentform); +$argreset + } + +END } - $auth_update .= " - }\n"; } + return(<print('
'. &mt('[_1]: Unacceptable username for user [_2] [_3] [_4] [_5]', - ''.$entries{$fields{'username'}}.'',$fname,$mname,$lname,$gen)); + ''.$entries{$fields{'username'}}.'',$fname,$mname,$lname,$gen). + $nowhitespace); next; } else { + $entries{$fields{'domain'}} =~ s/^\s+|\s+$//g; if ($entries{$fields{'domain'}} ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) { $r->print('
'. ''.$entries{$fields{'domain'}}. @@ -4249,6 +4288,7 @@ sub upfile_drop_add { # determine email address my $email=''; if (defined($fields{'email'})) { + $entries{$fields{'email'}} =~ s/^\s+|\s+$//g; if (defined($entries{$fields{'email'}})) { $email=$entries{$fields{'email'}}; unless ($email=~/^[^\@]+\@[^\@]+$/) { $email=''; } @@ -4295,7 +4335,7 @@ sub upfile_drop_add { $role = $defaultrole; } # Clean up whitespace - foreach (\$id,\$fname,\$mname,\$lname,\$gen) { + foreach (\$id,\$fname,\$mname,\$lname,\$gen,\$inststatus) { $$_ =~ s/(\s+$|^\s+)//g; } # check against rules @@ -4361,8 +4401,14 @@ sub upfile_drop_add { } } if (!$cancreate{$usertype}) { - $r->print('
'. - &mt("[_1]: The user does not exist, and you are not permitted to create users of type: $longtypes{$usertype}.",''.$username.'')); + my $showtype = $longtypes{$usertype}; + if ($usertype eq 'unofficial') { + $r->print('
'. + &mt("[_1]: The user does not exist, and the new user's username must be an e-mail address.",''.$username.'')); + } else { + $r->print('
'. + &mt("[_1]: The user does not exist, and you are not permitted to create users of type: [_2].",''.$username.'',$showtype)); + } next; } } else {