--- loncom/interface/loncreateuser.pm 2007/10/22 22:16:38 1.190 +++ loncom/interface/loncreateuser.pm 2007/12/05 16:49:55 1.198 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.190 2007/10/22 22:16:38 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.198 2007/12/05 16:49:55 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -440,31 +440,41 @@ sub print_user_query_page { } sub print_user_modification_page { - my ($r,$ccuname,$ccdomain,$srch,$response) = @_; + my ($r,$ccuname,$ccdomain,$srch,$response,$context) = @_; if (($ccuname eq '') || ($ccdomain eq '')) { my $usermsg = &mt('No username and/or domain provided.'); &print_username_entry_form($r,$usermsg); return; } my %abv_auth = &auth_abbrev(); - my ($curr_authtype,$instsrch,$rulematch,$rules,%inst_results, - $curr_kerb_ver,$newuser); + my ($curr_authtype,%rulematch,%inst_results,$curr_kerb_ver,$newuser, + %alerts,%curr_rules,%got_rules); my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain); if ($uhome eq 'no_host') { $newuser = 1; - $instsrch = - { - srchin => 'instd', - srchby => 'uname', - srchtype => 'exact', - srchterm => $ccuname, - srchdomain => $ccdomain, - }; - (my $usercheckmsg,$rulematch,$rules,%inst_results) = - &Apache::loncommon::username_rule_check($instsrch,'new'); - if ($usercheckmsg) { - &print_username_entry_form($r,$usercheckmsg); - return; + my $checkhash; + my $checks = { 'username' => 1 }; + $checkhash->{$ccuname.':'.$ccdomain} = { 'newuser' => $newuser }; + &Apache::loncommon::user_rule_check($checkhash,$checks, + \%alerts,\%rulematch,\%inst_results,\%curr_rules,\%got_rules); + if (ref($alerts{'username'}) eq 'HASH') { + if (ref($alerts{'username'}{$ccdomain}) eq 'HASH') { + my $domdesc = + &Apache::lonnet::domain($ccdomain,'description'); + if ($alerts{'username'}{$ccdomain}{$ccuname}) { + my $userchkmsg; + if (ref($curr_rules{$ccdomain}) eq 'HASH') { + $userchkmsg = + &Apache::loncommon::instrule_disallow_msg('username', + $domdesc,1). + &Apache::loncommon::user_rule_formats($ccdomain, + $domdesc,$curr_rules{$ccdomain}{'username'}, + 'username'); + } + &print_username_entry_form($r,$userchkmsg); + return; + } + } } } else { $newuser = 0; @@ -617,82 +627,8 @@ sub print_user_modification_page { } ENDSCRIPT } else { - $nondc_setsection_code = <<"ENDSECCODE"; - function setSections() { - var re1 = /^currsec_/; - var groups = new Array($groupslist); - for (var i=0;i 0) { - if (document.cu.elements[i+1].value != "" && document.cu.elements[i+1].value != null) { - sections = sections + "," + document.cu.elements[i+1].value; - } - } - else { - sections = document.cu.elements[i+1].value; - } - var newsecs = document.cu.elements[i+1].value; - var numsplit; - if (newsecs != null && newsecs != "") { - numsplit = newsecs.split(/,/g); - numsec = numsec + numsplit.length; - } - - if ((role == 'st') && (numsec > 1)) { - alert("In each course, each user may only have one student role at a time. You had selected "+numsec+" sections.\\nPlease modify your selections so they include no more than one section.") - return; - } - else if (numsplit != null) { - for (var j=0; j -

$lt{'cnu'} "$ccuname" $lt{'ind'} $ccdomain

+

$lt{'cnu'} "$ccuname" $lt{'ind'} $ccdomain

ENDTITLE $r->print('
'. &personal_data_display($ccuname,$ccdomain,$newuser, @@ -782,17 +718,23 @@ $lt{'hs'}: $home_server_pick } else { $r->print($home_server_pick); } + if ($context eq 'domain') { + $r->print(&Apache::lonuserutils::forceid_change()); + } $r->print('
'."\n".'

'. $lt{'lg'}.'

'); my ($fixedauth,$varauth,$authmsg); - if ($rulematch) { + if (ref($rulematch{$ccuname.':'.$ccdomain}) eq 'HASH') { + my $matchedrule = $rulematch{$ccuname.':'.$ccdomain}{'username'}; + my ($rules,$ruleorder) = + &Apache::lonnet::inst_userrules($ccdomain,'username'); if (ref($rules) eq 'HASH') { - if (ref($rules->{$rulematch}) eq 'HASH') { - my $authtype = $rules->{$rulematch}{'authtype'}; + if (ref($rules->{$matchedrule}) eq 'HASH') { + my $authtype = $rules->{$matchedrule}{'authtype'}; if ($authtype !~ /^(krb4|krb5|int|fsys|loc)$/) { $r->print(&Apache::lonuserutils::set_login($ccdomain,$authformkrb,$authformint,$authformloc)); } else { - my $authparm = $rules->{$rulematch}{'authparm'}; + my $authparm = $rules->{$matchedrule}{'authparm'}; if ($authtype =~ /^krb(4|5)$/) { my $ver = $1; if ($authparm ne '') { @@ -801,12 +743,12 @@ $lt{'hs'}: $home_server_pick KERB - $authmsg = $rules->{$rulematch}{'authmsg'}; + $authmsg = $rules->{$matchedrule}{'authmsg'}; } } else { $fixedauth = ''."\n"; - if ($rules->{$rulematch}{'authparmfixed'}) { + if ($rules->{$matchedrule}{'authparmfixed'}) { $fixedauth .= ''."\n"; } else { @@ -835,14 +777,14 @@ ENDAUTH ENDPORT } else { # user already exists my %lt=&Apache::lonlocal::texthash( - 'cup' => "Existing user ", + 'cup' => "Modify existing user: ", 'id' => "in domain", ); $r->print(<$lt{'cup'} "$ccuname" $lt{'id'} "$ccdomain" +

$lt{'cup'} "$ccuname" $lt{'id'} "$ccdomain"

ENDCHANGEUSER $r->print('
'. &personal_data_display($ccuname,$ccdomain,$newuser, @@ -886,7 +828,7 @@ ENDNOPORTPRIV unless ($tmp =~ /^(con_lost|error)/i) { my $now=time; my %lt=&Apache::lonlocal::texthash( - 'rer' => "Revoke Existing Roles", + 'rer' => "Existing Roles", 'rev' => "Revoke", 'del' => "Delete", 'ren' => "Re-Enable", @@ -1198,7 +1140,7 @@ ENDNOPORTPRIV } } else { $r->print(&course_level_table(%inccourses)); - $r->print('
'."\n"); + $r->print('
'."\n"); } $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain'])); $r->print(''); @@ -1255,8 +1197,6 @@ $lt{'uuas'} ($currentauth). $lt{'adcs'}. ENDBADAUTH } } else { # Authentication type is valid - my $authformcurrent=''; - my $authform_other=''; &initialize_authen_forms($ccdomain,$currentauth); my ($authformcurrent,$authform_other,$can_modify) = &modify_login_block($ccdomain,$currentauth); @@ -1450,8 +1390,8 @@ sub update_user_data { $env{'form.ccdomain'}); # Error messages my $error = ''.&mt('Error').': '; - my $end = '

'. - ''. &mt('Return to previous page').''.&Apache::loncommon::end_page(); my $title; @@ -1489,25 +1429,25 @@ sub update_user_data { $r->print(&update_result_form($uhome)); # Check Inputs if (! $env{'form.ccuname'} ) { - $r->print($error.&mt('No login name specified').'.'.$end); + $r->print($error.&mt('No login name specified').'.'.$end.$rtnlink); return; } if ( $env{'form.ccuname'} ne &LONCAPA::clean_username($env{'form.ccuname'}) ) { $r->print($error.&mt('Invalid login name').'. '. &mt('Only letters, numbers, periods, dashes, @, and underscores are valid').'.'. - $end); + $end.$rtnlink); return; } if (! $env{'form.ccdomain'} ) { - $r->print($error.&mt('No domain specified').'.'.$end); + $r->print($error.&mt('No domain specified').'.'.$end.$rtnlink); return; } if ( $env{'form.ccdomain'} ne &LONCAPA::clean_domain($env{'form.ccdomain'}) ) { $r->print($error.&mt ('Invalid domain name').'. '. &mt('Only letters, numbers, periods, dashes, and underscores are valid').'.'. - $end); + $end.$rtnlink); return; } if (! exists($env{'form.makeuser'})) { @@ -1543,19 +1483,19 @@ sub update_user_data { # If they are creating a new user but have not specified login # information this will be caught below. } else { - $r->print($error.&mt('Invalid login mode or password').$end); + $r->print($error.&mt('Invalid login mode or password').$end.$rtnlink); return; } $r->print('

'.&mt('User [_1] in domain [_2]', $env{'form.ccuname'}, $env{'form.ccdomain'}).'

'); - + my (%alerts,%rulematch,%inst_results,%curr_rules); if ($env{'form.makeuser'}) { $r->print('

'.&mt('Creating new account.').'

'); # Check for the authentication mode and password if (! $amode || ! $genpwd) { - $r->print($error.&mt('Invalid login mode or password').$end); + $r->print($error.&mt('Invalid login mode or password').$end.$rtnlink); return; } # Determine desired host @@ -1566,13 +1506,43 @@ sub update_user_data { my %home_servers = &Apache::lonnet::get_servers($env{'form.ccdomain'},'library'); if (! exists($home_servers{$desiredhost})) { - $r->print($error.&mt('Invalid home server specified')); + $r->print($error.&mt('Invalid home server specified').$end.$rtnlink); return; } } + # Check ID format + my %checkhash; + my %checks = ('id' => 1); + %{$checkhash{$env{'form.ccuname'}.':'.$env{'form.ccdomain'}}} = ( + 'newuser' => 1, + 'id' => $env{'form.cid'}, + ); + if ($env{'form.cid'} ne '') { + &Apache::loncommon::user_rule_check(\%checkhash,\%checks,\%alerts, + \%rulematch,\%inst_results,\%curr_rules); + if (ref($alerts{'id'}) eq 'HASH') { + if (ref($alerts{'id'}{$env{'form.ccdomain'}}) eq 'HASH') { + my $domdesc = + &Apache::lonnet::domain($env{'form.ccdomain'},'description'); + if ($alerts{'id'}{$env{'form.ccdomain'}}{$env{'form.cid'}}) { + my $userchkmsg; + if (ref($curr_rules{$env{'form.ccdomain'}}) eq 'HASH') { + $userchkmsg = + &Apache::loncommon::instrule_disallow_msg('id', + $domdesc,1). + &Apache::loncommon::user_rule_formats($env{'form.ccdomain'}, + $domdesc,$curr_rules{$env{'form.ccdomain'}}{'id'},'id'); + } + $r->print($error.&mt('Invalid ID format').$end. + $userchkmsg.$rtnlink); + return; + } + } + } + } # Call modifyuser my $result = &Apache::lonnet::modifyuser - ($env{'form.ccdomain'},$env{'form.ccuname'},$env{'form.cstid'}, + ($env{'form.ccdomain'},$env{'form.ccuname'},$env{'form.cid'}, $amode,$genpwd,$env{'form.cfirstname'}, $env{'form.cmiddlename'},$env{'form.clastname'}, $env{'form.cgeneration'},undef,$desiredhost, @@ -1586,7 +1556,7 @@ sub update_user_data { ($env{'form.login'} ne '' )) { # Modify user privileges if (! $amode || ! $genpwd) { - $r->print($error.'Invalid login mode or password'.$end); + $r->print($error.'Invalid login mode or password'.$end.$rtnlink); return; } # Only allow authentification modification if the person has authority @@ -1599,7 +1569,7 @@ sub update_user_data { ($env{'form.ccuname'},$env{'form.ccdomain'})); } else { # Okay, this is a non-fatal error. - $r->print($error.&mt('You do not have the authority to modify this users authentification information').'.'); + $r->print($error.&mt('You do not have the authority to modify this users authentification information').'.'.$end); } } ## @@ -1607,17 +1577,40 @@ sub update_user_data { # Check for need to change my %userenv = &Apache::lonnet::get ('environment',['firstname','middlename','lastname','generation', - 'permanentemail','portfolioquota','inststatus'], + 'id','permanentemail','portfolioquota','inststatus'], $env{'form.ccdomain'},$env{'form.ccuname'}); my ($tmp) = keys(%userenv); if ($tmp =~ /^(con_lost|error)/i) { %userenv = (); } # Check to see if we need to change user information - foreach my $item ('firstname','middlename','lastname','generation','permanentemail') { + foreach my $item ('firstname','middlename','lastname','generation','permanentemail','id') { # Strip leading and trailing whitespace $env{'form.c'.$item} =~ s/(\s+$|^\s+)//g; } + # Check to see if we can change the ID/student number + my $forceid = $env{'form.forceid'}; + my $recurseid = $env{'form.recurseid'}; + my $newuser = 0; + my $disallowed_id = 0; + my (%alerts,%rulematch,%idinst_results,%curr_rules,%got_rules); + if (!$forceid) { + $env{'form.cid'} = $userenv{'id'}; + } elsif ($env{'form.cid'} ne $userenv{'id'}) { + my $checkhash; + my $checks = { 'id' => 1 }; + $checkhash->{$env{'form.ccuname'}.':'.$env{'form.ccdomain'}} = + { 'newuser' => $newuser, + 'id' => $env{'form.cid'}, + }; + &Apache::loncommon::user_rule_check($checkhash,$checks, + \%alerts,\%rulematch,\%idinst_results,\%curr_rules,\%got_rules); + if (ref($alerts{'id'}) eq 'HASH') { + if (ref($alerts{'id'}{$env{'form.ccdomain'}}) eq 'HASH') { + $disallowed_id = 1; + } + } + } my ($quotachanged,$namechanged,$oldportfolioquota,$newportfolioquota, $inststatus,$isdefault,$defquotatext); my ($defquota,$settingstatus) = @@ -1673,6 +1666,7 @@ sub update_user_data { $env{'form.cmiddlename'} ne $userenv{'middlename'} || $env{'form.clastname'} ne $userenv{'lastname'} || $env{'form.cgeneration'} ne $userenv{'generation'} || + $env{'form.cid'} ne $userenv{'id'} || $env{'form.cpermanentemail'} ne $userenv{'permanentemail'} )) { $namechanged = 1; } @@ -1682,6 +1676,7 @@ sub update_user_data { $changeHash{'middlename'} = $env{'form.cmiddlename'}; $changeHash{'lastname'} = $env{'form.clastname'}; $changeHash{'generation'} = $env{'form.cgeneration'}; + $changeHash{'id'} = $env{'form.cid'}; $changeHash{'permanentemail'} = $env{'form.cpermanentemail'}; my $putresult = &Apache::lonnet::put ('environment',\%changeHash, @@ -1694,6 +1689,7 @@ sub update_user_data { 'mddl' => "middle", 'lst' => "last", 'gen' => "generation", + 'id' => "ID/Student number", 'mail' => "permanent e-mail", 'disk' => "disk space allocated to portfolio files", 'prvs' => "Previous", @@ -1707,6 +1703,7 @@ sub update_user_data { $lt{'mddl'} $lt{'lst'} $lt{'gen'} + $lt{'id'} $lt{'mail'} $lt{'disk'} $lt{'prvs'} @@ -1714,6 +1711,7 @@ sub update_user_data { $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'} + $userenv{'id'} $userenv{'permanentemail'} $oldportfolioquota Mb @@ -1722,10 +1720,24 @@ sub update_user_data { $env{'form.cmiddlename'} $env{'form.clastname'} $env{'form.cgeneration'} + $env{'form.cid'} $env{'form.cpermanentemail'} $newportfolioquota Mb $defquotatext END + if (($forceid) && ($recurseid) && (!$disallowed_id) && + (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}))) { + my %userupdate = ( + lastname => $env{'form.clasaname'}, + middlename => $env{'form.cmiddlename'}, + firstname => $env{'form.cfirstname'}, + generation => $env{'fora.cgeneration'}, + id => $env{'form.cid'}, + ); + my $idresult = &propagate_id_change($env{'form.ccname'}, + $env{'form.ccdomain'},\%userupdate); + $r->print('
'.$idresult.'
'); + } if (($env{'form.ccdomain'} eq $env{'user.domain'}) && ($env{'form.ccuname'} eq $env{'user.name'})) { my %newenvhash; @@ -1749,12 +1761,19 @@ END # They did not want to change the users name but we can # still tell them what the name is my %lt=&Apache::lonlocal::texthash( + 'id' => "ID/Student number", 'mail' => "Permanent e-mail", 'disk' => "Disk space allocated to user's portfolio files", ); $r->print(<<"END"); -

$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'}  ($lt{'mail'}: $userenv{'permanentemail'})

+

$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'} END + if ($userenv{'permanentemail'} eq '') { + $r->print('

'); + } else { + $r->print('  ('.$lt{'mail'}.': '. + $userenv{'permanentemail'}.')'); + } if ($putresult eq 'ok') { if ($oldportfolioquota != $newportfolioquota) { $r->print('

'.$lt{'disk'}.': '.$newportfolioquota.' Mb '. @@ -1766,6 +1785,7 @@ END } ## my $now=time; + my $rolechanges = 0; $r->print('

'.&mt('Modifying Roles').'

'); foreach my $key (keys (%env)) { next if (! $env{$key}); @@ -1782,12 +1802,14 @@ END $r->print(&mt('Revoking [_1] in [_2]: [_3]', $role,$scope,''.$result.'').'
'); if ($role eq 'st') { - my $result = &classlist_drop($scope,$env{'form.ccuname'}, - $env{'form.ccdomain'},$now); + my $result = + &Apache::lonuserutils::classlist_drop($scope, + $env{'form.ccuname'},$env{'form.ccdomain'}, + $now); $r->print($result); } - } - if ($key=~m{^form\.rev\:([^_]+)_cr\.cr/($match_domain)/($match_username)/(\w+)$ }s) { + } + if ($key=~m{^form\.rev\:([^_]+)_cr\.cr/($match_domain)/($match_username)/(\w+)$}s) { # Revoke custom role $r->print(&mt('Revoking custom role:'). ' '.$4.' by '.$3.':'.$2.' in '.$1.': '. @@ -1795,6 +1817,7 @@ END $env{'form.ccuname'},$1,$2,$3,$4). '
'); } + $rolechanges ++; } elsif ($key=~/^form\.del/) { if ($key=~/^form\.del\:([^\_]+)\_([^\_\.]+)$/) { # Delete standard role @@ -1806,8 +1829,10 @@ END $r->print(&mt('Deleting [_1] in [_2]: [_3]',$role,$scope, ''.$result.'').'
'); if ($role eq 'st') { - my $result = &classlist_drop($scope,$env{'form.ccuname'}, - $env{'form.ccdomain'},$now); + my $result = + &Apache::lonuserutils::classlist_drop($scope, + $env{'form.ccuname'},$env{'form.ccdomain'}, + $now); $r->print($result); } } @@ -1820,6 +1845,7 @@ END $env{'form.ccuname'},$url,$rdom,$rnam,$rolename,$now, 0,1).'
'); } + $rolechanges ++; } elsif ($key=~/^form\.ren/) { my $udom = $env{'form.ccdomain'}; my $uname = $env{'form.ccuname'}; @@ -1858,6 +1884,7 @@ END $r->print(&mt('Re-enabling custom role [_1] by [_2]@[_3] in [_4] : [_5]', $rolename,$rnam,$rdom,$url,$result).'
'); } + $rolechanges ++; } elsif ($key=~/^form\.act/) { my $udom = $env{'form.ccdomain'}; my $uname = $env{'form.ccuname'}; @@ -1971,10 +1998,14 @@ END } $r->print(' '.&mt('Please go back and choose a different section name.').'


'); } + $rolechanges ++; } } # End of foreach (keys(%env)) # Flush the course logs so reverse user roles immediately updated &Apache::lonnet::flushcourselogs(); + if (!$rolechanges) { + $r->print(&mt('No roles to modify')); + } $r->print(&Apache::loncommon::end_page()); } @@ -2000,30 +2031,6 @@ sub update_result_form { return $outcome; } -sub classlist_drop { - my ($scope,$uname,$udom,$now) = @_; - my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)}); - my $cid=$cdom.'_'.$cnum; - my $user = $uname.':'.$udom; - if (!&active_student_roles($cnum,$cdom,$uname,$udom)) { - my $result = - &Apache::lonnet::cput('classlist', - { $user => $now }, - $env{'course.'.$cid.'.domain'}, - $env{'course.'.$cid.'.num'}); - return &mt('Drop from classlist: [_1]', - ''.$result.'').'
'; - } -} - -sub active_student_roles { - my ($cnum,$cdom,$uname,$udom) = @_; - my %roles = - &Apache::lonnet::get_my_roles($uname,$udom,'userroles', - ['future','active'],['st']); - return exists($roles{"$cnum:$cdom:st"}); -} - sub quota_admin { my ($setquota,$changeHash) = @_; my $quotachanged; @@ -2434,12 +2441,13 @@ sub handler { } elsif ($env{'form.action'} eq 'singleuser' && $permission->{'cusr'}) { my $phase = $env{'form.phase'}; my @search = ('srchterm','srchby','srchin','srchtype','srchdomain'); + &Apache::loncreateuser::restore_prev_selections(); + my $srch; + foreach my $item (@search) { + $srch->{$item} = $env{'form.'.$item}; + } if (($phase eq 'get_user_info') || ($phase eq 'userpicked')) { - my $srch; - foreach my $item (@search) { - $srch->{$item} = $env{'form.'.$item}; - } if ($env{'form.phase'} eq 'get_user_info') { my ($currstate,$response,$forcenewuser,$results) = &user_search_result($srch); @@ -2465,7 +2473,7 @@ sub handler { $response = ''; } &print_user_modification_page($r,$ccuname,$ccdomain, - $srch,$response); + $srch,$response,$context); } elsif ($currstate eq 'query') { &print_user_query_page($r,'createuser'); } else { @@ -2475,12 +2483,13 @@ sub handler { } elsif ($env{'form.phase'} eq 'userpicked') { my $ccuname = &LONCAPA::clean_username($env{'form.seluname'}); my $ccdomain = &LONCAPA::clean_domain($env{'form.seludom'}); - &print_user_modification_page($r,$ccuname,$ccdomain,$srch); + &print_user_modification_page($r,$ccuname,$ccdomain,$srch,'', + $context); } } elsif ($env{'form.phase'} eq 'update_user_data') { &update_user_data($r); } else { - &print_username_entry_form($r); + &print_username_entry_form($r,undef,$srch); } } elsif ($env{'form.action'} eq 'custom' && $permission->{'custom'}) { if ($env{'form.phase'} eq 'set_custom_roles') { @@ -2489,21 +2498,30 @@ sub handler { &custom_role_editor($r); } } elsif ($env{'form.action'} eq 'listusers' && $permission->{'view'}) { - $r->print(&header()); + my ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles); + my $formname = 'studentform'; + if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { + ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles) = + &Apache::lonuserutils::courses_selector($env{'request.role.domain'}, + $formname); + my $js = &add_script($jscript).$cb_jscript; + my $loadcode = + &Apache::lonuserutils::course_selector_loadcode($formname); + if ($loadcode ne '') { + $r->print(&header($js,{'onload' => $loadcode,})); + } else { + $r->print(&header($js)); + } + } else { + $r->print(&header()); + } &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/createuser?action=listusers', - text=>"List Users' Roles"}); - $r->print(&Apache::lonhtmlcommon::breadcrumbs("List Users' Roles", + text=>"List Users"}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs("List Users", 'User_Management_List')); - if (! exists($env{'form.state'})) { - &Apache::lonuserutils::print_html_classlist($r,undef,$permission); - } elsif ($env{'form.state'} eq 'csv') { - &Apache::lonuserutils::print_html_classlist($r,'csv',$permission); - } elsif ($env{'form.state'} eq 'excel') { - &Apache::lonuserutils::print_html_classlist($r,'excel',$permission); - } else { - &Apache::lonuserutils::print_html_classlist($r,undef,$permission); - } + &Apache::lonuserutils::print_userlist($r,undef,$permission,$context, + $formname,$totcodes,$codetitles,$idlist,$idlist_titles); $r->print(&Apache::loncommon::end_page()); } elsif ($env{'form.action'} eq 'expire' && $permission->{'cusr'}) { $r->print(&header()); @@ -2539,6 +2557,11 @@ sub header { return $start_page; } +sub add_script { + my ($js) = @_; + return ''; +} + ############################################################### ############################################################### # Menu Phase One @@ -2546,22 +2569,22 @@ sub print_main_menu { my ($permission) = @_; my @menu = ( - { text => 'Upload a File of Users to Set Roles', + { text => 'Upload a File of Users to Modify/Create Users and/or Add roles', help => 'User_Management_Upload', action => 'upload', permission => $permission->{'cusr'}, }, - { text => 'Set User Roles for an Individual User', + { text => 'Create User/Set User Roles for a single user', help => 'User_Management_Single_User', action => 'singleuser', permission => $permission->{'cusr'}, }, -# { text => 'Display User Roles for Multiple Users', -# help => 'User_Management_List', -# action => 'listusers', -# permission => $permission->{'view'}, -# }, -# { text => 'Expire User Roles ', + { text => 'Display Lists of Users', + help => 'User_Management_List', + action => 'listusers', + permission => $permission->{'view'}, + }, +# { text => 'Expire User Roles', # help => 'User_Management_Drops', # action => 'expire', # permission => $permission->{'cusr'}, @@ -2763,7 +2786,8 @@ sub user_search_result { {&Apache::lonnet::get('environment', ['firstname', 'lastname', - 'permanentemail'])}; + 'permanentemail'], + $cudomain,$cuname)}; } } } @@ -3112,7 +3136,9 @@ sub course_level_table { '.$area.'
Domain: '.$domain.''."\n"; if ($role ne 'cc') { if (%sections_count) { - my $currsec = &course_sections(\%sections_count,$protectedcourse.'_'.$role); + my $currsec = + &Apache::lonuserutils::course_sections(\%sections_count, + $protectedcourse.'_'.$role); $table .= ''. ' @@ -3152,7 +3178,9 @@ ENDTIMEENTRY '."\n"; if (%sections_count) { - my $currsec = &course_sections(\%sections_count,$customrole); + my $currsec = + &Apache::lonuserutils::course_sections(\%sections_count, + $customrole); $table.= '
'.$plrole.' '.$area.''. '
'. @@ -3196,28 +3224,6 @@ $table. return $result; } -sub course_sections { - my ($sections_count,$role) = @_; - my $output = ''; - my @sections = (sort {$a <=> $b} keys %{$sections_count}); - if (scalar(@sections) == 1) { - $output = ''."\n"; - foreach my $sec (@sections) { - $output .= '\n"; - } - } - $output .= ''; - return $output; -} - sub course_level_dc { my ($dcdom) = @_; my %customroles=&Apache::lonuserutils::my_custom_roles();