--- loncom/interface/loncreateuser.pm 2010/09/19 16:44:44 1.329.2.4 +++ loncom/interface/loncreateuser.pm 2010/01/20 09:49:54 1.333 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.329.2.4 2010/09/19 16:44:44 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.333 2010/01/20 09:49:54 wenzelju Exp $ # # Copyright Michigan State University Board of Trustees # @@ -219,7 +219,7 @@ END_SCRIPT sub build_tools_display { my ($ccuname,$ccdomain,$context) = @_; my (@usertools,%userenv,$output,@options,%validations,%reqtitles,%reqdisplay, - $colspan); + $colspan,$isadv,%domconfig); my %lt = &Apache::lonlocal::texthash ( 'blog' => "Personal User Blog", 'aboutme' => "Personal Information Page", @@ -243,6 +243,9 @@ sub build_tools_display { %reqtitles = &courserequest_titles(); %reqdisplay = &courserequest_display(); $colspan = ' colspan="2"'; + %domconfig = + &Apache::lonnet::get_dom('configuration',['requestcourses'],$ccdomain); + $isadv = &Apache::lonnet::is_advanced_user($ccuname,$ccdomain); } else { %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname, 'tools.aboutme','tools.portfolio','tools.blog'); @@ -289,7 +292,14 @@ sub build_tools_display { &Apache::loncommon::start_data_table_row()."\n"; if ($context eq 'requestcourses') { my ($curroption,$currlimit); - $curroption = $userenv{$context.'.'.$item}; + if ($userenv{$context.'.'.$item} ne '') { + $curroption = $userenv{$context.'.'.$item}; + } else { + my (@inststatuses); + $curroption = + &Apache::loncoursequeueadmin::get_processtype($ccuname,$ccdomain,$isadv,$ccdomain, + $item,\@inststatuses,\%domconfig); + } if (!$curroption) { $curroption = 'norequest'; } @@ -472,7 +482,6 @@ sub print_username_entry_form { my ($r,$context,$response,$srch,$forcenewuser,$crstype) = @_; my $defdom=$env{'request.role.domain'}; my $formtoset = 'crtuser'; - my $is_custom = &Apache::loncommon::needs_gci_custom(); if (exists($env{'form.startrolename'})) { $formtoset = 'docustom'; $env{'form.rolename'} = $env{'form.startrolename'}; @@ -498,14 +507,8 @@ sub print_username_entry_form { 'onload' => "javascript:setFormElements(document.$formtoset)", ); my %breadcrumb_text = &singleuser_breadcrumb($crstype); - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } my $start_page = - &Apache::loncommon::start_page($title, + &Apache::loncommon::start_page('User Management', $jscript,{'add_entries' => \%loaditems,}); if ($env{'form.action'} eq 'custom') { &Apache::lonhtmlcommon::add_breadcrumb @@ -523,7 +526,7 @@ sub print_username_entry_form { } elsif ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs($title, + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', $helpitem); my %lt=&Apache::lonlocal::texthash( 'srst' => 'Search for a user and enroll as a student', @@ -667,7 +670,7 @@ $userpicker ENDBLOCK if ($env{'form.phase'} eq '') { my $defdom=$env{'request.role.domain'}; - my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain','',1); + my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain'); my %lt=&Apache::lonlocal::texthash( 'enro' => 'Enroll one student', 'enrm' => 'Enroll one member', @@ -716,7 +719,7 @@ $showresponse - + @@ -761,7 +764,6 @@ sub print_user_selection_page { my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype) = @_; my @fields = ('username','domain','lastname','firstname','permanentemail'); my $sortby = $env{'form.sortby'}; - my $is_custom = &Apache::loncommon::needs_gci_custom(); if (!grep(/^\Q$sortby\E$/,@fields)) { $sortby = 'lastname'; @@ -800,13 +802,7 @@ ENDSCRIPT if ($context eq 'requestcrs') { $r->print('
'); } else { - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } - $r->print(&Apache::loncommon::start_page($title,$jscript)); + $r->print(&Apache::loncommon::start_page('User Management',$jscript)); my %breadcrumb_text = &singleuser_breadcrumb($crstype); &Apache::lonhtmlcommon::add_breadcrumb @@ -817,13 +813,13 @@ ENDSCRIPT text=>$breadcrumb_text{'userpicked'}, faq=>282,bug=>'Instructor Interface',}); if ($env{'form.action'} eq 'singleuser') { - $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', 'Course_Change_Privileges')); $r->print("$lt{'usrch'}
"); $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context,undef,$crstype)); $r->print('

'.$lt{'usel'}.'

'); } elsif ($env{'form.action'} eq 'singlestudent') { - $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', 'Course_Add_Student')); $r->print($jscript.""); if ($crstype eq 'Community') { @@ -932,21 +928,12 @@ sub print_user_modification_page { my %abv_auth = &auth_abbrev(); my (%rulematch,%inst_results,$newuser,%alerts,%curr_rules,%got_rules); my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain); - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if ($is_custom) { - if ($uhome eq 'no_host') { - my $lc_ccuname = lc($ccuname); - if ($lc_ccuname ne $ccuname) { - $uhome = &Apache::lonnet::homeserver($lc_ccuname,$ccdomain); - $ccuname = $lc_ccuname; - } - } - } if ($uhome eq 'no_host') { + my $usertype; my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($ccdomain,'username'); - my $usertype = - &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules); + $usertype = + &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules); my $cancreate = &Apache::lonuserutils::can_create_user($ccdomain,$context, $usertype); @@ -956,26 +943,17 @@ sub print_user_modification_page { official => 'institutional', unofficial => 'non-institutional', ); - if ($ccdomain eq 'gci') { - $usertypetext{'unofficial'} = 'institutional', - } my $response; if ($env{'form.origform'} eq 'crtusername') { - if ($is_custom) { - $response = ''.&mt('Invalid format for username for new user: [_1]',''.$ccuname.''). - '
'; - } else { - $response = ''.&mt('No match was found for the username ([_1]) in LON-CAPA domain: [_2]',$ccuname,$ccdomain).'
'; - } + $response = ''.&mt('No match 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.") - .'
'; - if ($ccdomain eq 'gcitest') { - $response .= &mt('Enter a valid e-mail address as the username for the new user.').' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.' - ,'','') - .'


'; - } + .' ' + .&mt('Please contact the [_1]helpdesk[_2] for assistance.' + ,'','') + .'


'; $env{'form.phase'} = ''; &print_username_entry_form($r,$context,$response,undef,undef,$crstype); return; @@ -1026,14 +1004,8 @@ sub print_user_modification_page { if ($env{'form.popup'}) { $args->{'no_nav_bar'} = 1; } - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } my $start_page = - &Apache::loncommon::start_page($title,$js,$args); + &Apache::loncommon::start_page('User Management',$js,$args); my %breadcrumb_text = &singleuser_breadcrumb($crstype); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage($form)", @@ -1054,7 +1026,7 @@ sub print_user_modification_page { if ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs($title, + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', $helpitem); my $forminfo =<<"ENDFORMINFO"; @@ -2189,8 +2161,7 @@ sub get_inststatuses { # ================================================================= Phase Three sub update_user_data { - my ($r,$context,$crstype) = @_; - my $is_custom = &Apache::loncommon::needs_gci_custom(); + my ($r,$context,$crstype) = @_; my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'}, $env{'form.ccdomain'}); # Error messages @@ -2243,13 +2214,7 @@ sub update_user_data { if ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } - $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', $helpitem)); $r->print(&update_result_form($uhome)); # Check Inputs @@ -2725,8 +2690,7 @@ sub update_user_data { $newenvhash{'environment.requestcourses.'.$key} = $changeHash{'requestcourses.'.$key}; if ($changeHash{'requestcourses.'.$key} ne '') { - $newenvhash{'environment.canrequest.'.$key} = - $changeHash{'requestcourses.'.$key}; + $newenvhash{'environment.canrequest.'.$key} = 1; } else { $newenvhash{'environment.canrequest.'.$key} = &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, @@ -2740,8 +2704,7 @@ sub update_user_data { $changeHash{'tools.'.$key}; } else { $newenvhash{'environment.availabletools.'.$key} = - &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, - $key,'reload','tools'); + &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, $key,'reload','tools'); } } } @@ -3677,13 +3640,6 @@ sub custom_role_editor { $context = 'domain'; $crstype = $env{'form.templatecrstype'}; } - my $is_custom = &Apache::loncommon::needs_gci_custom(); - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } # ------------------------------------------------------- What can be assigned? my %full=(); my %courselevel=(); @@ -3799,7 +3755,7 @@ sub custom_role_editor { {href=>"javascript:backPage(document.form1,'','')", text=>"Edit custom role", faq=>282,bug=>'Instructor Interface',}); - $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', 'Course_Editing_Custom_Roles')); $r->print($body_top); @@ -3952,13 +3908,7 @@ sub set_custom_role { .$jsback."\n" .'// ]]>'."\n" .''."\n"; - my $title = 'User Management'; - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } + $r->print(&Apache::loncommon::start_page('Save Custom Role'),$jscript); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage(document.customresult,'pickrole','')", @@ -3970,7 +3920,7 @@ sub set_custom_role { {href=>"javascript:backPage(document.customresult,'set_custom_roles','')", text=>"Result", faq=>282,bug=>'Instructor Interface',}); - $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', 'Course_Editing_Custom_Roles')); my ($rdummy,$roledef)= @@ -4048,13 +3998,6 @@ sub handler { } else { $context = 'domain'; } - my $title = 'User Management'; - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['action','state','callingform','roletype','showrole','bulkaction','popup','phase', 'username','domain','srchterm','srchdomain','srchin','srchby','srchtype']); @@ -4062,7 +4005,7 @@ sub handler { if ($env{'form.action'} ne 'dateselect') { &Apache::lonhtmlcommon::add_breadcrumb ({href=>"/adm/createuser", - text=>$title, + text=>"User Management", help=>'Course_Create_Class_List,Course_Change_Privileges,Course_View_Class_List,Course_Editing_Custom_Roles,Course_Add_Student,Course_Drop_Student,Course_Automated_Enrollment,Course_Self_Enrollment,Course_Manage_Group'}); } #SD Following files not added to help, because the corresponding .tex-files seem to @@ -4082,7 +4025,7 @@ sub handler { # Main switch on form.action and form.state, as appropriate if (! exists($env{'form.action'})) { $r->print(&header()); - $r->print(&Apache::lonhtmlcommon::breadcrumbs($title)); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management')); $r->print(&print_main_menu($permission,$context,$crstype)); $r->print(&Apache::loncommon::end_page()); } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) { @@ -4098,12 +4041,8 @@ sub handler { if (! exists($env{'form.state'})) { &Apache::lonuserutils::print_first_users_upload_form($r,$context); } elsif ($env{'form.state'} eq 'got_file') { - my $formname; - if ($env{'form.caller'} eq 'requestcrs') { - $formname = 'studentform'; - } &Apache::lonuserutils::print_upload_manager_form($r,$context, - $permission,$crstype,$formname); + $permission,$crstype); } elsif ($env{'form.state'} eq 'enrolling') { if ($env{'form.datatoken'}) { &Apache::lonuserutils::upfile_drop_add($r,$context,$permission); @@ -4126,7 +4065,7 @@ sub handler { if ($env{'form.phase'} eq 'createnewuser') { my $response; if ($env{'form.srchterm'} !~ /^$match_username$/) { - my $response = '

'.&mt('You must specify a valid username. Only the following are allowed: letters numbers - . @').'

'; + my $response = &mt('You must specify a valid username. Only the following are allowed: letters numbers - . @'); $env{'form.phase'} = ''; &print_username_entry_form($r,$context,$response,$srch,undef,$crstype); } else { @@ -4342,7 +4281,7 @@ sub handler { $r->print(&Apache::loncommon::end_page()); } else { $r->print(&header()); - $r->print(&Apache::lonhtmlcommon::breadcrumbs($title)); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management')); $r->print(&print_main_menu($permission,$context,$crstype)); $r->print(&Apache::loncommon::end_page()); } @@ -4388,10 +4327,6 @@ END # Menu Phase One sub print_main_menu { my ($permission,$context,$crstype) = @_; - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if (($context eq 'course') && ($is_custom)) { - return &print_gci_main_menu($permission,$context,$crstype) - } my $linkcontext = $context; my $stuterm = lc(&Apache::lonnet::plaintext('st',$crstype)); if (($context eq 'course') && ($crstype eq 'Community')) { @@ -4551,7 +4486,7 @@ sub print_main_menu { }, { linktext => $linktext{$crstype}{'groups'}, - icon => 'conf.png', + icon => 'grps.png', #help => 'Course_Manage_Group', url => '/adm/coursegroups?refpage=cusr', permission => $permission->{'grp_manage'}, @@ -4613,82 +4548,6 @@ return Apache::lonhtmlcommon::generate_m # }); } -sub print_gci_main_menu { - my ($permission,$context,$crstype) = @_; - my $stuterm = lc(&Apache::lonnet::plaintext('st',$crstype)); - my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity(); - my %links = ( - course => { - single => 'Add/Modify a Student', - drop => 'Drop Students', - upload => 'Upload a File of Course Users', - singleuser => 'Add/Modify a Course User', - listusers => 'Concept Test Roster and Student Activity', - }, - ); - my %linktitles = ( - course => { - singleuser => 'Add a user with a certain role to this course.', - listusers => 'Show and manage users in this course.', - single => 'Add a user with the role of student to this course', - drop => 'Remove a student from this course.', - upload => 'Upload a CSV or a text file containing users.', - }, - ); - my @menu = ( {categorytitle => 'Manage Users', - items => - [ - { - linktext => $links{$context}{'single'}, - #help => 'Course_Add_Student', - icon => 'list-add.png', - url => '/adm/createuser?action=singlestudent', - permission => $permission->{'cusr'}, - linktitle => $linktitles{$context}{'single'}, - - }, - { - linktext => $links{$context}{'drop'}, - icon => 'edit-undo.png', - #help => 'Course_Drop_Student', - url => '/adm/createuser?action=drop', - permission => $permission->{'cusr'}, - linktitle => $linktitles{$context}{'drop'}, - }, - { - linktext => $links{$context}{'upload'}, - icon => 'sctr.png', - #help => 'Course_Create_Class_List', - url => '/adm/createuser?action=upload', - permission => $permission->{'cusr'}, - linktitle => $linktitles{$context}{'upload'}, - }, - { - linktext => $links{$context}{'listusers'}, - icon => 'edit-find.png', - #help => 'Course_View_Class_List', - url => '/adm/createuser?action=listusers', - permission => ($permission->{'view'} || $permission->{'cusr'}), - linktitle => $linktitles{$context}{'listusers'}, - }, - ]}, - {categorytitle => 'Administration', - items => [ ]}, - ); - - push(@{ $menu[1]->{items} }, #Category: Administration - { - linktext => 'Change Log', - icon => 'document-properties.png', - #help => 'Course_User_Logs', - url => '/adm/createuser?action=changelogs', - permission => $permission->{'cusr'}, - linktitle => 'View change log.', - }, - ); - return Apache::lonhtmlcommon::generate_menu(@menu); -} - sub restore_prev_selections { my %saveable_parameters = ('srchby' => 'scalar', 'srchin' => 'scalar', @@ -5653,7 +5512,16 @@ sub role_display_filter { # Update Display button $output .= '

' .'' - .'


'; + .'

'; + + # Server version info + $output .= '

' + .&mt('Only changes made from servers running LON-CAPA [_1] or later are displayed.' + ,'2.6.99.0'); + if ($version) { + $output .= ' '.&mt('This LON-CAPA server is version [_1]',$version); + } + $output .= '


'; return $output; } @@ -5703,7 +5571,7 @@ sub user_search_result { if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'instd')) { if (($srch->{'srchdomain'} eq '') || ! (&Apache::lonnet::domain($srch->{'srchdomain'}))) { - $response = '

'.&mt('You must specify a valid domain when searching in a domain or institutional directory.').'

'; + $response = &mt('You must specify a valid domain when searching in a domain or institutional directory.') } } if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'crs') || @@ -5716,7 +5584,7 @@ sub user_search_result { } } if ($unamecheck !~ /^$match_username$/) { - $response = '

'.&mt('You must specify a valid username. Only the following are allowed: letters numbers - . @').'

'; + $response = &mt('You must specify a valid username. Only the following are allowed: letters numbers - . @'); } } } @@ -5891,8 +5759,7 @@ sub user_search_result { ($currstate,$response,$forcenewuser) = &build_search_response($context,$srch,%srch_results); } else { - my $showdom = &display_domain_info($srch->{'srchdomain'}); - $response = ''. + my $showdom = &display_domain_info($srch->{'srchdomain'}); $response = ''. &mt('Institutional directory search is not available in domain: [_1]',$showdom). '
'. &mt('You may want to search in the LON-CAPA domain instead of the institutional directory.'). @@ -6003,12 +5870,12 @@ sub build_search_response { my ($context,$srch,%srch_results) = @_; my ($currstate,$response,$forcenewuser); my %names = ( - 'uname' => 'username', - 'lastname' => 'last name', + 'uname' => 'username', + 'lastname' => 'last name', 'lastfirst' => 'last name, first name', - 'crs' => 'this course', - 'dom' => 'LON-CAPA domain: ', - 'instd' => 'the institutional directory for domain: ', + 'crs' => 'this course', + 'dom' => 'LON-CAPA domain', + 'instd' => 'the institutional directory for domain', ); my %single = ( @@ -6028,14 +5895,20 @@ sub build_search_response { $currstate = 'modify'; $response = &mt("$single{$srch->{'srchtype'}} was found for the $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}.",$srch->{'srchterm'}); if ($srch->{'srchin'} eq 'dom' || $srch->{'srchin'} eq 'instd') { - $response .= &display_domain_info($srch->{'srchdomain'}); + $response .= ': '.&display_domain_info($srch->{'srchdomain'}); } - } else { - $response = ''.&mt("$nomatch{$srch->{'srchtype'}} found for the $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}",$srch->{'srchterm'}); + } else { # Search has nothing found. Prepare message to user. + $response = ''; if ($srch->{'srchin'} eq 'dom' || $srch->{'srchin'} eq 'instd') { - $response .= &display_domain_info($srch->{'srchdomain'}); + $response .= &mt("$nomatch{$srch->{'srchtype'}} found for the $names{$srch->{'srchby'}} [_1] in $names{$srch->{'srchin'}}: [_2]", + ''.$srch->{'srchterm'}.'', + &display_domain_info($srch->{'srchdomain'})); + } else { + $response .= &mt("$nomatch{$srch->{'srchtype'}} found for the $names{$srch->{'srchby'}} [_1] in $names{$srch->{'srchin'}}.", + ''.$srch->{'srchterm'}.''); } $response .= ''; + if ($srch->{'srchin'} ne 'alc') { $forcenewuser = 1; my $cansrchinst = 0;
$lt{'usr'}:  $lt{'dom'}:$domform  $sellink