--- loncom/interface/loncreateuser.pm 2008/01/02 09:16:59 1.228 +++ loncom/interface/loncreateuser.pm 2008/01/21 01:45:04 1.234 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.228 2008/01/02 09:16:59 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.234 2008/01/21 01:45:04 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -156,21 +156,21 @@ END_SCRIPT $custom_off = ' '; $showquota = $currquota; if ($longinsttype eq '') { - $defaultinfo = &mt('For this user, the default quota would be [_1] - Mb.',$defquota); + $defaultinfo = &mt('For this user, the default quota would be [_1]' + .' Mb.',$defquota); } else { - $defaultinfo = &mt("For this user, the default quota would be [_1] - Mb, as determined by the user's institutional - affiliation ([_2]).",$defquota,$longinsttype); + $defaultinfo = &mt("For this user, the default quota would be [_1]". + " Mb, as determined by the user's institutional". + " affiliation ([_2]).",$defquota,$longinsttype); } } else { if ($longinsttype eq '') { - $defaultinfo = &mt('For this user, the default quota is [_1] - Mb.',$defquota); + $defaultinfo = &mt('For this user, the default quota is [_1]' + .' Mb.',$defquota); } else { - $defaultinfo = &mt("For this user, the default quota of [_1] - Mb, is determined by the user's institutional - affiliation ([_2]).",$defquota,$longinsttype); + $defaultinfo = &mt("For this user, the default quota of [_1]". + " Mb, is determined by the user's institutional". + " affiliation ([_2]).",$defquota,$longinsttype); } } my $output = $quota_javascript. @@ -220,6 +220,7 @@ sub print_username_entry_form { my %loaditems = ( 'onload' => "javascript:setFormElements(document.$formtoset)", ); + my %breadcrumb_text = &singleuser_breadcrumb(); my $start_page = &Apache::loncommon::start_page('User Management', $jscript,{'add_entries' => \%loaditems,}); @@ -230,7 +231,7 @@ sub print_username_entry_form { } else { &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage(document.crtuser)", - text=>"Single user search", + text=>$breadcrumb_text{'search'}, faq=>282,bug=>'Instructor Interface',}); } my $helpitem = 'Course_Change_Privileges'; @@ -245,21 +246,14 @@ sub print_username_entry_form { my $choice=&Apache::loncommon::select_form('make new role','rolename', ('make new role' => 'Generate new role ...',%existingroles)); my %lt=&Apache::lonlocal::texthash( - 'srch' => "User Search", - or => "or", + 'srst' => 'Search for a user and enroll as a student', + 'srad' => 'Search for a user and modify/add user information or roles', 'usr' => "Username", 'dom' => "Domain", 'ecrp' => "Edit Custom Role Privileges", 'nr' => "Name of Role", 'cre' => "Custom Role Editor", - '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 $sellink=&Apache::loncommon::selectstudent_link('crtuser','srchterm','srchdomain'); - if ($sellink) { - $sellink = "$lt{'or'} ".$sellink; - } $r->print($start_page."\n".$crumbs); if ($env{'form.action'} eq 'custom') { if (&Apache::lonnet::allowed('mcr','/')) { @@ -274,12 +268,12 @@ $lt{'nr'}: $choice print(" -

$lt{'srch'} $sellink $actiontext

"); +

$actiontext

"); if ($env{'form.origform'} ne 'crtusername') { $r->print("\n".$response); } @@ -291,7 +285,7 @@ ENDCUSTOM sub entry_form { my ($dom,$srch,$forcenewuser,$context,$responsemsg) = @_; my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); - my $usertype; + my ($usertype,$inexact); if (ref($srch) eq 'HASH') { if (($srch->{'srchin'} eq 'dom') && ($srch->{'srchby'} eq 'uname') && @@ -301,6 +295,8 @@ sub entry_form { my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($srch->{'srchdomain'},'username'); $usertype = &Apache::lonuserutils::check_usertype($srch->{'srchdomain'},$srch->{'srchterm'},$rules); + } else { + $inexact = 1; } } my $cancreate = @@ -309,6 +305,11 @@ sub entry_form { &Apache::loncommon::user_picker($dom,$srch,$forcenewuser, 'document.crtuser',$cancreate,$usertype); my $srchbutton = &mt('Search'); + if ($env{'form.action'} eq 'singlestudent') { + $srchbutton = &mt('Search and Enroll'); + } elsif ($cancreate && $responsemsg ne '' && $inexact) { + $srchbutton = &mt('Search or Add New User'); + } my $output = <<"ENDBLOCK";
@@ -317,32 +318,56 @@ $userpicker
ENDBLOCK - if ($cancreate && $env{'form.phase'} eq '') { + if ($env{'form.phase'} eq '') { my $defdom=$env{'request.role.domain'}; my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain'); my %lt=&Apache::lonlocal::texthash( + 'enro' => 'Enroll one student', + 'admo' => 'Add/modify a single user', + 'crea' => 'create new user if required', + 'uskn' => "username is known", 'crnu' => 'Create a new user', 'usr' => 'Username', 'dom' => 'in domain', - 'cra' => 'Create user', + 'enrl' => 'Enroll', + 'cram' => 'Create/Modify user', ); + my $sellink=&Apache::loncommon::selectstudent_link('crtusername','srchterm','srchdomain'); + my ($title,$buttontext,$showresponse); + if ($env{'form.action'} eq 'singlestudent') { + $title = $lt{'enro'}; + $buttontext = $lt{'enrl'}; + } else { + $title = $lt{'admo'}; + $buttontext = $lt{'cram'}; + } + if ($cancreate) { + $title .= ' ('.$lt{'crea'}.')'; + } else { + $title .= ' ('.$lt{'uskn'}.')'; + } + if ($env{'form.origform'} eq 'crtusername') { + $showresponse = $responsemsg; + } $output .= <<"ENDDOCUMENT"; +
- + -

$lt{crnu}

-$responsemsg +

$title

+$showresponse - + +
$lt{'usr'}:  $lt{'dom'}:$domform  $sellink  
@@ -380,7 +405,7 @@ END # =================================================================== Phase two sub print_user_selection_page { - my ($r,$response,$srch,$srch_results,$operation,$srcharray,$context) = @_; + my ($r,$response,$srch,$srch_results,$srcharray,$context) = @_; my @fields = ('username','domain','lastname','firstname','permanentemail'); my $sortby = $env{'form.sortby'}; @@ -415,27 +440,22 @@ ENDSCRIPT 'permanentemail' => "permanent e-mail", ); $r->print(&Apache::loncommon::start_page('User Management',$jscript)); - if ($operation eq 'createuser') { - &Apache::lonhtmlcommon::add_breadcrumb - ({href=>"javascript:backPage(document.usersrchform,'','')", - text=>"Create/modify user", - faq=>282,bug=>'Instructor Interface',}, - {href=>"javascript:backPage(document.usersrchform,'get_user_info','select')", - text=>"Select User", - faq=>282,bug=>'Instructor Interface',}); + + my %breadcrumb_text = &singleuser_breadcrumb(); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.usersrchform,'','')", + text=>$breadcrumb_text{'search'}, + faq=>282,bug=>'Instructor Interface',}, + {href=>"javascript:backPage(document.usersrchform,'get_user_info','select')", + text=>$breadcrumb_text{'userpicked'}, + faq=>282,bug=>'Instructor Interface',}); + if ($env{'form.action'} eq 'singleuser') { $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', 'Course_Change_Privileges')); $r->print("$lt{'usrch'}
"); $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context)); $r->print('

'.$lt{'usel'}.'

'); - } 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',}); + } elsif ($env{'form.action'} eq 'singlestudent') { $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', 'Course_Add_Student')); $r->print($jscript."$lt{'stusrch'}
"); @@ -583,9 +603,12 @@ sub print_user_modification_page { my $js = &validation_javascript($context,$ccdomain,$pjump_def, $groupslist,$newuser,$formname,\%loaditem); + my $args = {'add_entries' => \%loaditem}; + if ($env{'form.popup'}) { + $args->{'no_nav_bar'} = 1; + } my $start_page = - &Apache::loncommon::start_page('User Management', - $js,{'add_entries' => \%loaditem,}); + &Apache::loncommon::start_page('User Management',$js,$args); my %breadcrumb_text = &singleuser_breadcrumb(); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage($form)", @@ -842,7 +865,7 @@ sub singleuser_breadcrumb { $breadcrumb_text{'userpicked'} = 'Select a user', $breadcrumb_text{'modify'} = 'Set section/dates', } else { - $breadcrumb_text{'search'} = 'Create/modify user'; + $breadcrumb_text{'search'} = 'Create/modify a user'; $breadcrumb_text{'userpicked'} = 'Select a user', $breadcrumb_text{'modify'} = 'Set user role', } @@ -1466,7 +1489,13 @@ sub update_user_data { my $jscript = ''."\n"; my %breadcrumb_text = &singleuser_breadcrumb(); - $r->print(&Apache::loncommon::start_page($title,$jscript)); + my $args; + if ($env{'form.popup'}) { + $args->{'no_nav_bar'} = 1; + } else { + $args = undef; + } + $r->print(&Apache::loncommon::start_page($title,$jscript,$args)); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage(document.userupdate)", text=>$breadcrumb_text{'search'}, @@ -1616,6 +1645,27 @@ sub update_user_data { $r->print(&mt('Generating user').': '.$result); $uhome = &Apache::lonnet::homeserver($env{'form.ccuname'}, $env{'form.ccdomain'}); + if (($uhome ne 'no_host') && ($env{'form.customquota'} == 1)) { + my (%changeHash,$newportfolioquota); + if ($env{'form.portfolioquota'} eq '') { + $newportfolioquota = 0; + } else { + $newportfolioquota = $env{'form.portfolioquota'}; + $newportfolioquota =~ s/[^\d\.]//g; + } + my $quotachanged = "a_admin($newportfolioquota,\%changeHash); + if ($quotachanged) { + $changeHash{'firstname'} = $env{'form.cfirstname'}; + $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 $quotachgresult = + &Apache::lonnet::put('environment',\%changeHash, + $env{'form.ccdomain'},$env{'form.ccuname'}); + } + } $r->print('
'.&mt('Home server').': '.$uhome.' '. &Apache::lonnet::hostname($uhome)); } elsif (($env{'form.login'} ne 'nochange') && @@ -2013,8 +2063,12 @@ END } } my $userinfo = &Apache::loncommon::plainname($env{'form.ccuname'}, - $env{'form.ccdomain'}); - $r->print('

'.&mt('Modify this user: ([_1])',$userinfo).''.(' 'x5).''.&mt('Create/Modify Another User').'

'); + $env{'form.ccdomain'}); + if ($env{'form.popup'}) { + $r->print('

'.&mt('Close window').'

'); + } else { + $r->print('

'.&mt('Modify this user: ([_1])',$userinfo).''.(' 'x5).''.&mt('Create/Modify Another User').'

'); + } } $r->print(&Apache::loncommon::end_page()); } @@ -2711,7 +2765,8 @@ sub handler { $context = 'domain'; } &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['action','state','callingform','roletype','showrole','bulkaction']); + ['action','state','callingform','roletype','showrole','bulkaction','popup','phase', + 'username','domain','srchterm','srchdomain','srchin','srchby','srchtype']); &Apache::lonhtmlcommon::clear_breadcrumbs(); if ($env{'form.action'} ne 'dateselect') { &Apache::lonhtmlcommon::add_breadcrumb @@ -2768,7 +2823,6 @@ sub handler { foreach my $item (@search) { $srch->{$item} = $env{'form.'.$item}; } - if (($phase eq 'get_user_info') || ($phase eq 'userpicked') || ($phase eq 'createnewuser')) { if ($env{'form.phase'} eq 'createnewuser') { @@ -2791,14 +2845,8 @@ 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, - $operation,\@search,$context); + \@search,$context); } elsif ($currstate eq 'modify') { my ($ccuname,$ccdomain); if (($srch->{'srchby'} eq 'uname') && @@ -2820,6 +2868,7 @@ sub handler { } elsif ($currstate eq 'query') { &print_user_query_page($r,'createuser'); } else { + $env{'form.phase'} = ''; &print_username_entry_form($r,$context,$response,$srch, $forcenewuser); } @@ -3042,6 +3091,10 @@ sub print_main_menu { foreach my $menu_item (@menu) { next if (! $menu_item->{'permission'}); $menu_html.='

'; + if (exists($menu_item->{'help'})) { + $menu_html.= + &Apache::loncommon::help_open_topic($menu_item->{'help'}); + } $menu_html.=''; if (exists($menu_item->{'url'})) { $menu_html.=qq{}; @@ -3050,10 +3103,6 @@ sub print_main_menu { qq{}; } $menu_html.= &mt($menu_item->{'text'}).''; - if (exists($menu_item->{'help'})) { - $menu_html.= - &Apache::loncommon::help_open_topic($menu_item->{'help'}); - } $menu_html.='

'; } return $menu_html; @@ -3311,11 +3360,15 @@ sub directorysrch_check { my ($insttypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($srch->{'srchdomain'}); my @longtypes; foreach my $item (@usertypes) { - push (@longtypes,$insttypes->{$item}); + if (defined($insttypes->{$item})) { + push (@longtypes,$insttypes->{$item}); + } elsif ($item eq 'default') { + push (@longtypes,&mt('other')); + } } my $insttype_str = join(', ',@longtypes); return &mt('Institutional directory search in domain: [_1] is not available to your user type: ',$showdom).$insttype_str; - } + } } else { $can_search = 1; } @@ -3436,7 +3489,7 @@ sub build_search_response { &Apache::lonuserutils::can_create_user($env{'request.role.domain'},$context); if ($cancreate) { my $showdom = &display_domain_info($env{'request.role.domain'}); - $response .= '

'.&mt("To add a new user (you can only create new users in your current role's domain - [_1]):",$env{'request.role.domain'}).'
'; + $response .= '

'.&mt("To add a new user (you can only create new users in your current role's domain - [_1]):",$env{'request.role.domain'}).'
'; } else { my $helplink = ' href="javascript:helpMenu('."'display'".')"'; $response .= '

'.&mt("You are not authorized to create new users in your current role's domain - [_1].",$env{'request.role.domain'}).'
'.&mt('Contact the helpdesk if you need to create a new user.',$helplink).'

';