--- loncom/interface/loncreateuser.pm 2009/11/28 21:33:53 1.329 +++ loncom/interface/loncreateuser.pm 2010/09/19 16:44:44 1.329.2.4 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.329 2009/11/28 21:33:53 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.329.2.4 2010/09/19 16:44:44 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -472,6 +472,7 @@ 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'}; @@ -497,8 +498,14 @@ 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('User Management', + &Apache::loncommon::start_page($title, $jscript,{'add_entries' => \%loaditems,}); if ($env{'form.action'} eq 'custom') { &Apache::lonhtmlcommon::add_breadcrumb @@ -516,7 +523,7 @@ sub print_username_entry_form { } elsif ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs($title, $helpitem); my %lt=&Apache::lonlocal::texthash( 'srst' => 'Search for a user and enroll as a student', @@ -660,7 +667,7 @@ $userpicker ENDBLOCK if ($env{'form.phase'} eq '') { my $defdom=$env{'request.role.domain'}; - my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain'); + my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain','',1); my %lt=&Apache::lonlocal::texthash( 'enro' => 'Enroll one student', 'enrm' => 'Enroll one member', @@ -709,7 +716,7 @@ $showresponse - + @@ -754,6 +761,7 @@ 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'; @@ -792,7 +800,13 @@ ENDSCRIPT if ($context eq 'requestcrs') { $r->print('
'); } else { - $r->print(&Apache::loncommon::start_page('User Management',$jscript)); + my $title = 'User Management'; + if ($context eq 'course') { + if ($is_custom) { + $title = 'Enrollment and Student Activity'; + } + } + $r->print(&Apache::loncommon::start_page($title,$jscript)); my %breadcrumb_text = &singleuser_breadcrumb($crstype); &Apache::lonhtmlcommon::add_breadcrumb @@ -803,13 +817,13 @@ ENDSCRIPT text=>$breadcrumb_text{'userpicked'}, faq=>282,bug=>'Instructor Interface',}); if ($env{'form.action'} eq 'singleuser') { - $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, '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('User Management', + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, 'Course_Add_Student')); $r->print($jscript.""); if ($crstype eq 'Community') { @@ -918,12 +932,21 @@ 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'); - $usertype = - &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules); + my $usertype = + &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules); my $cancreate = &Apache::lonuserutils::can_create_user($ccdomain,$context, $usertype); @@ -933,17 +956,26 @@ 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') { - $response = ''.&mt('No match was found for the username ([_1]) in LON-CAPA domain: [_2]',$ccuname,$ccdomain). - '
'; + 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("You are not authorized to create new $usertypetext{$usertype} users in this domain.") - .' ' - .&mt('Please contact the [_1]helpdesk[_2] for assistance.' - ,'','') - .'


'; + .'
'; + 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.' + ,'','') + .'


'; + } $env{'form.phase'} = ''; &print_username_entry_form($r,$context,$response,undef,undef,$crstype); return; @@ -994,8 +1026,14 @@ 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('User Management',$js,$args); + &Apache::loncommon::start_page($title,$js,$args); my %breadcrumb_text = &singleuser_breadcrumb($crstype); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage($form)", @@ -1016,7 +1054,7 @@ sub print_user_modification_page { if ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs($title, $helpitem); my $forminfo =<<"ENDFORMINFO"; @@ -2151,7 +2189,8 @@ sub get_inststatuses { # ================================================================= Phase Three sub update_user_data { - my ($r,$context,$crstype) = @_; + my ($r,$context,$crstype) = @_; + my $is_custom = &Apache::loncommon::needs_gci_custom(); my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'}, $env{'form.ccdomain'}); # Error messages @@ -2204,7 +2243,13 @@ sub update_user_data { if ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', + my $title = 'User Management'; + if ($context eq 'course') { + if ($is_custom) { + $title = 'Enrollment and Student Activity'; + } + } + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, $helpitem)); $r->print(&update_result_form($uhome)); # Check Inputs @@ -2695,7 +2740,8 @@ 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'); } } } @@ -3631,6 +3677,13 @@ 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=(); @@ -3746,7 +3799,7 @@ sub custom_role_editor { {href=>"javascript:backPage(document.form1,'','')", text=>"Edit custom role", faq=>282,bug=>'Instructor Interface',}); - $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, 'Course_Editing_Custom_Roles')); $r->print($body_top); @@ -3899,7 +3952,13 @@ 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','')", @@ -3911,7 +3970,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('User Management', + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, 'Course_Editing_Custom_Roles')); my ($rdummy,$roledef)= @@ -3989,6 +4048,13 @@ 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']); @@ -3996,7 +4062,7 @@ sub handler { if ($env{'form.action'} ne 'dateselect') { &Apache::lonhtmlcommon::add_breadcrumb ({href=>"/adm/createuser", - text=>"User Management", + text=>$title, 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 @@ -4016,7 +4082,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('User Management')); + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title)); $r->print(&print_main_menu($permission,$context,$crstype)); $r->print(&Apache::loncommon::end_page()); } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) { @@ -4032,8 +4098,12 @@ 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); + $permission,$crstype,$formname); } elsif ($env{'form.state'} eq 'enrolling') { if ($env{'form.datatoken'}) { &Apache::lonuserutils::upfile_drop_add($r,$context,$permission); @@ -4056,7 +4126,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 { @@ -4272,7 +4342,7 @@ sub handler { $r->print(&Apache::loncommon::end_page()); } else { $r->print(&header()); - $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management')); + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title)); $r->print(&print_main_menu($permission,$context,$crstype)); $r->print(&Apache::loncommon::end_page()); } @@ -4318,6 +4388,10 @@ 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')) { @@ -4539,6 +4613,82 @@ 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', @@ -5503,16 +5653,7 @@ 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; } @@ -5562,7 +5703,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') || @@ -5575,7 +5716,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 - . @').'

'; } } } @@ -5750,7 +5891,8 @@ 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.').
$lt{'usr'}:  $lt{'dom'}:$domform  $sellink