--- loncom/interface/loncreateuser.pm 2007/12/21 12:41:25 1.213 +++ loncom/interface/loncreateuser.pm 2007/12/21 14:35:42 1.215 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.213 2007/12/21 12:41:25 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.215 2007/12/21 14:35:42 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -223,15 +223,15 @@ sub print_username_entry_form { my $start_page = &Apache::loncommon::start_page('User Management', $jscript,{'add_entries' => \%loaditems,}); - if ($env{'form.action'} eq 'singleuser') { + if ($env{'form.action'} eq 'custom') { &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage(document.crtuser)", - text=>"Single user search", - faq=>282,bug=>'Instructor Interface',}); - } elsif ($env{'form.action'} eq 'custom') { + text=>"Pick custom role",}); + } else { &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage(document.crtuser)", - text=>"Pick custom role",}); + text=>"Single user search", + faq=>282,bug=>'Instructor Interface',}); } my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management'); my %existingroles=&Apache::lonuserutils::my_custom_roles(); @@ -245,7 +245,8 @@ sub print_username_entry_form { 'ecrp' => "Edit Custom Role Privileges", 'nr' => "Name of Role", 'cre' => "Custom Role Editor", - 'mod' => "to edit user information or add/modify roles", + 'mod' => "to modify user information or add/modify roles", + 'enrl' => "to enroll one student", ); my $help = &Apache::loncommon::help_open_menu(undef,undef,282,'Instructor Interface'); my $helpsiur=&Apache::loncommon::help_open_topic('Course_Change_Privileges'); @@ -256,12 +257,7 @@ sub print_username_entry_form { $sellink = "$lt{'or'} ".$sellink; } $r->print($start_page."\n".$crumbs); - if ($env{'form.action'} eq 'singleuser') { - $r->print(" -

$lt{'srch'} $sellink $lt{'mod'}$helpsiur

-$response"); - $r->print(&entry_form($defdom,$srch,$forcenewuser,$context)); - } elsif ($env{'form.action'} eq 'custom') { + if ($env{'form.action'} eq 'custom') { if (&Apache::lonnet::allowed('mcr','/')) { $r->print(< @@ -289,15 +285,25 @@ ENDCUSTOM } sub entry_form { - my ($dom,$srch,$forcenewuser,$context) = @_; + my ($dom,$srch,$forcenewuser,$context,$responsemsg) = @_; my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); - my $cancreate = &Apache::lonuserutils::can_create_user($dom,$context); - if (!$cancreate) { - $forcenewuser = ''; + my $usertype; + if (ref($srch) eq 'HASH') { + if (($srch->{'srchin'} eq 'dom') && + ($srch->{'srchby'} eq 'uname') && + ($srch->{'srchtype'} eq 'exact') && + ($srch->{'srchdomain'} ne '') && + ($srch->{'srchterm'} ne '')) { + my ($rules,$ruleorder) = + &Apache::lonnet::inst_userrules($srch->{'srchdomain'},'username'); + $usertype = &Apache::lonuserutils::check_usertype($srch->{'srchdomain'},$srch->{'srchterm'},$rules); + } } + my $cancreate = + &Apache::lonuserutils::can_create_user($dom,$context,$usertype); my $userpicker = &Apache::loncommon::user_picker($dom,$srch,$forcenewuser, - 'document.crtuser'); + 'document.crtuser',$cancreate,$usertype); my $srchbutton = &mt('Search'); my $output = <<"ENDBLOCK";
@@ -327,6 +333,7 @@ ENDBLOCK

$lt{crnu}$helpcrt

+$responsemsg @@ -404,8 +411,8 @@ ENDSCRIPT 'firstname' => "first name", 'permanentemail' => "permanent e-mail", ); + $r->print(&Apache::loncommon::start_page('User Management',$jscript)); if ($operation eq 'createuser') { - $r->print(&Apache::loncommon::start_page('User Management',$jscript)); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage(document.usersrchform,'','')", text=>"Create/modify user", @@ -417,9 +424,17 @@ ENDSCRIPT $r->print("$lt{'usrch'}
"); $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context)); $r->print('

'.$lt{'usel'}.'

'); - } else { + } elsif ($operation eq 'enrollstudent') { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.usersrchform,'','')", + text=>"Create/modify student", + faq=>282,bug=>'Instructor Interface',}, + {href=>"javascript:backPage(document.usersrchform,'get_user_info','select')", + text=>"Select Student", + faq=>282,bug=>'Instructor Interface',}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management')); $r->print($jscript."$lt{'stusrch'}
"); - $r->print(&Apache::londropadd::single_user_entry_form($srch->{'srchdomain'},$srch)); + $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context)); $r->print('

'.$lt{'stusel'}.'

'); } $r->print(''. @@ -465,14 +480,8 @@ ENDSCRIPT ' '."\n". ' '."\n". ' '."\n". - ' '."\n"); - $r->print($response); - if ($operation eq 'createuser') { - $r->print(''.&Apache::loncommon::end_page()); - } else { - $r->print(''."\n". - ''."\n"); - } + ' '."\n"); + $r->print($response.''.&Apache::loncommon::end_page()); } sub print_user_query_page { @@ -484,9 +493,10 @@ sub print_user_query_page { } sub print_user_modification_page { - my ($r,$ccuname,$ccdomain,$srch,$response,$context) = @_; + my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission) = @_; if (($ccuname eq '') || ($ccdomain eq '')) { - my $usermsg = &mt('No username and/or domain provided.'); + my $usermsg = &mt('No username and/or domain provided.'); + $env{'form.phase'} = ''; &print_username_entry_form($r,$context,$usermsg); return; } @@ -503,6 +513,30 @@ sub print_user_modification_page { %alerts,%curr_rules,%got_rules); my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain); if ($uhome eq 'no_host') { + my $usertype; + my ($rules,$ruleorder) = + &Apache::lonnet::inst_userrules($ccdomain,'username'); + $usertype = + &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules); + my $cancreate = + &Apache::lonuserutils::can_create_user($ccdomain,$context, + $usertype); + if (!$cancreate) { + my $helplink = ' href="javascript:helpMenu('."'display'".')"'; + my %usertypetext = ( + official => 'institutional', + unofficial => 'non-institutional', + ); + my $response; + if ($env{'form.origform'} eq 'crtusername') { + $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).'

'; + $env{'form.phase'} = ''; + &print_username_entry_form($r,$context,$response); + return; + } $newuser = 1; my $checkhash; my $checks = { 'username' => 1 }; @@ -523,9 +557,10 @@ sub print_user_modification_page { $domdesc,$curr_rules{$ccdomain}{'username'}, 'username'); } + $env{'form.phase'} = ''; &print_username_entry_form($r,$context,$userchkmsg); return; - } + } } } } else { @@ -540,7 +575,7 @@ sub print_user_modification_page { } } if ($response) { - $response = '
'.$response + $response = '
'.$response; } my $defdom=$env{'request.role.domain'}; @@ -560,7 +595,6 @@ sub print_user_modification_page { my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); my $dc_setcourse_code = ''; my $nondc_setsection_code = ''; - my %loaditem; my $groupslist; @@ -826,7 +860,12 @@ ENDAUTH } else { $r->print(&Apache::lonuserutils::set_login($ccdomain,$authformkrb,$authformint,$authformloc)); } - $r->print(''."\n".'
'); + $r->print($portfolioform); + if ($env{'form.action'} eq 'singlestudent') { + $r->print(&date_sections_select($context,$newuser,$formname, + $permission)); + } + $r->print('
'); } else { # user already exist- my %lt=&Apache::lonlocal::texthash( 'cup' => "Modify existing user: ", @@ -2754,8 +2793,14 @@ sub handler { $currstate = $env{'form.currstate'}; } if ($currstate eq 'select') { + my $operation; + if ($env{'form.action'} eq 'singleuser') { + $operation = 'createuser'; + } elsif ($env{'form.action'} eq 'singlestudent') { + $operation = 'enrollstudent'; + } &print_user_selection_page($r,$response,$srch,$results, - 'createuser',\@search,$context); + $operation,\@search,$context); } elsif ($currstate eq 'modify') { my ($ccuname,$ccdomain); if (($srch->{'srchby'} eq 'uname') &&
$lt{'usr'}: