--- loncom/interface/lonuserutils.pm 2010/09/20 00:26:44 1.109.2.5 +++ 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.5 2010/09/20 00:26:44 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 # @@ -330,7 +330,7 @@ sub print_upload_manager_header { my ($sectionjs,$groupslist); if ($context eq 'course') { $groupslist = &get_groupslist(); - if ($env{'form.caller'} eq 'requestcrs') { + if ($env{'form.context'} eq 'requestcrs') { $sectionjs = <<"ENDJS"; function toggleSectionsDefault() { @@ -375,7 +375,7 @@ ENDJS &hidden_input('fileupload',$env{'form.fileupload'}). &hidden_input('upfiletype',$env{'form.upfiletype'}). &hidden_input('upfile_associate',$env{'form.upfile_associate'}). - &hidden_input('caller',$env{'form.caller'})); + &hidden_input('context',$env{'form.context'})); $r->print('

'); $r->print('
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(<=2) && (tw<=6)) { foundname=1; } - if (tw==7) { foundid=1; } - if (tw==8) { foundsec=1; } - if (tw==9) { foundpwd=1; } + if (tw==2) { foundpwd=1; } + if ((tw>=3) && (tw<=7)) { foundname=1; } + if (tw==8) { foundid=1; } + if (tw==9) { foundsec=1; } if (tw==10) { foundemail=1; } if (tw==11) { foundrole=1; } if (tw==12) { founddomain=1; } @@ -688,14 +704,14 @@ function verify(vf,sec_caller) { // // 0 = none // 1 = username -// 2 = names (lastname, firstnames) -// 3 = fname (firstname) -// 4 = mname (middlename) -// 5 = lname (lastname) -// 6 = gen (generation) -// 7 = id -// 8 = section -// 9 = ipwd (password) +// 2 = ipwd (password) +// 3 = names (lastname, firstnames) +// 4 = fname (firstname) +// 5 = mname (middlename) +// 6 = lname (lastname) +// 7 = gen (generation) +// 8 = id +// 9 = section // 10 = email address // 11 = role // 12 = domain @@ -711,20 +727,20 @@ function flip(vf,tf) { } } // If we set this to 'lastname, firstnames', clear out all the ones - // set to 'fname','mname','lname','gen' (3,4,5,6) currently. - if (nw==2) { + // set to 'fname','mname','lname','gen' (4,5,6,7) currently. + if (nw==3) { for (i=0;i<=vf.nfields.value;i++) { - if ((eval('vf.f'+i+'.selectedIndex')>=3) && - (eval('vf.f'+i+'.selectedIndex')<=6)) { + if ((eval('vf.f'+i+'.selectedIndex')>=4) && + (eval('vf.f'+i+'.selectedIndex')<=7)) { eval('vf.f'+i+'.selectedIndex=0;') } } } - // If we set this to one of 'fname','mname','lname','gen' (3,4,5,6), - // clear out any that are set to 'lastname, firstnames' (2) - if ((nw>=3) && (nw<=6)) { + // If we set this to one of 'fname','mname','lname','gen' (4,5,6,7), + // clear out any that are set to 'lastname, firstnames' (3) + if ((nw>=4) && (nw<=7)) { for (i=0;i<=vf.nfields.value;i++) { - if (eval('vf.f'+i+'.selectedIndex')==2) { + if (eval('vf.f'+i+'.selectedIndex')==3) { eval('vf.f'+i+'.selectedIndex=0;') } } @@ -735,7 +751,7 @@ function flip(vf,tf) { function clearpwd(vf) { var i; for (i=0;i<=vf.nfields.value;i++) { - if (eval('vf.f'+i+'.selectedIndex')==9) { + if (eval('vf.f'+i+'.selectedIndex')==2) { eval('vf.f'+i+'.selectedIndex=0;') } } @@ -748,28 +764,44 @@ ENDPICK ############################################################### sub upload_manager_javascript_reverse_associate { my ($can_assign) = @_; - my $auth_update; + my ($auth_update,$numbuttons,$argreset); if (ref($can_assign) eq 'HASH') { - if (keys(%{$can_assign}) > 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(<=1) && (i<=5)) && tw!=0 ) { foundname=1; } - if (i==6 && tw!=0) { foundid=1; } - if (i==7 && tw!=0) { foundsec=1; } - if (i==8 && tw!=0) { foundpwd=1; } - if (i==9 && tw!=0) { foundrole=1; } - if (i==10 && tw!=0) { founddomain=1; } - if (i==13 && tw!=0) { foundinstatus=1; } + if (i==1 && tw!=0) { foundpwd=1; } + if (((i>=2) && (i<=6)) && tw!=0 ) { foundname=1; } + if (i==7 && tw!=0) { foundid=1; } + if (i==8 && tw!=0) { foundsec=1; } + if (i==9 && tw!=0) { foundemail=1; } + if (i==10 && tw!=0) { foundrole=1; } + if (i==11 && tw!=0) { founddomain=1; } + if (i==12 && tw!=0) { foundinstatus=1; } } - verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundrole,founddomain,foundinststatus); + verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain,foundinststatus); } function flip(vf,tf) { var nw=eval('vf.f'+tf+'.selectedIndex'); var i; // picked the all one name field, reset the other name ones to blank - if (tf==1 && nw!=0) { - for (i=2;i<=5;i++) { + if (tf==2 && nw!=0) { + for (i=3;i<=6;i++) { eval('vf.f'+i+'.selectedIndex=0;') } } //picked one of the piecewise name fields, reset the all in //one field to blank - if ((tf>=2) && (tf<=5) && (nw!=0)) { - eval('vf.f1.selectedIndex=0;') + if ((tf>=3) && (tf<=6) && (nw!=0)) { + eval('vf.f2.selectedIndex=0;') } $auth_update } function clearpwd(vf) { var i; - if (eval('vf.f8.selectedIndex')!=0) { - eval('vf.f8.selectedIndex=0;') + if (eval('vf.f1.selectedIndex')!=0) { + eval('vf.f1.selectedIndex=0;') } } ENDPICK @@ -838,8 +872,8 @@ sub print_upload_manager_footer { $env{'form.ipwd_choice'} ne '') { $param{'curr_authtype'} = 'int'; } - if ($env{'form.caller'} eq 'requestcrs') { - $param{'caller'} = $env{'form.caller'}; + if ($env{'form.context'} eq 'requestcrs') { + $param{'context'} = $env{'form.context'}; } my $krbform = &Apache::loncommon::authform_kerberos(%param); my $intform = &Apache::loncommon::authform_internal(%param); @@ -853,7 +887,7 @@ sub print_upload_manager_footer { $Str .= '

'.&mt('Options').'

' .&Apache::lonhtmlcommon::start_pick_box(); - if ($env{'form.caller'} eq 'requestcrs') { + if ($env{'form.context'} eq 'requestcrs') { $Str .= &Apache::lonhtmlcommon::row_title(&mt('Default password')); } else { $Str .= &Apache::lonhtmlcommon::row_title(&mt('Login Type')); @@ -879,7 +913,7 @@ sub print_upload_manager_footer { $Str .= "

\n"; } $Str .= &set_login($defdom,$krbform,$intform,$locform); - if ($env{'form.caller'} eq 'requestcrs') { + if ($env{'form.context'} eq 'requestcrs') { $Str .= ''; } my ($home_server_pick,$numlib) = @@ -897,7 +931,7 @@ sub print_upload_manager_footer { &Apache::lonhtmlcommon::row_closure(); } - unless ($env{'form.caller'} eq 'requestcrs') { + unless ($env{'form.context'} eq 'requestcrs') { $Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain')) .&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1) .&Apache::lonhtmlcommon::row_closure() @@ -924,7 +958,7 @@ sub print_upload_manager_footer { &mt('Default role')) .&mt('Choose the role to assign to users without a value specified in the uploaded file.') } elsif ($context eq 'course') { - if ($env{'form.caller'} eq 'requestcrs') { + if ($env{'form.context'} eq 'requestcrs') { $Str .= &Apache::lonhtmlcommon::row_title(&mt('Default section')). &mt('Students can be assigned to different sections.').'
'. &mt('Will you be using sections?').' '. @@ -964,7 +998,7 @@ sub print_upload_manager_footer { } else { my ($cnum,$cdom) = &get_course_identity(); my ($rowtitle,$closure); - if ($env{'form.caller'} eq 'requestcrs') { + if ($env{'form.context'} eq 'requestcrs') { $closure = 1; $rowtitle = &mt('default section name (letters/numbers only)'); } else { @@ -972,9 +1006,9 @@ sub print_upload_manager_footer { } my $secbox = §ion_picker($cdom,$cnum,'Any',$rowtitle, $permission,$context,'upload',$crstype, - $env{'form.caller'}). + $env{'form.context'}). &Apache::lonhtmlcommon::row_closure($closure); - if ($env{'form.caller'} eq 'requestcrs') { + if ($env{'form.context'} eq 'requestcrs') { $Str .= ''; } else { $Str .= $secbox; @@ -991,7 +1025,7 @@ sub print_upload_manager_footer { stus => 'Students selected from this list can be dropped.' ); } - unless ($env{'form.caller'} eq 'requestcrs') { + unless ($env{'form.context'} eq 'requestcrs') { $Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update')) .'