--- loncom/auth/lonroles.pm 2009/09/23 16:55:53 1.209.4.1 +++ loncom/auth/lonroles.pm 2009/09/23 19:42:20 1.209.4.2 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.209.4.1 2009/09/23 16:55:53 raeburn Exp $ +# $Id: lonroles.pm,v 1.209.4.2 2009/09/23 19:42:20 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -549,6 +549,11 @@ ENDHEADER my %futureroles; my %roles_nextlogin; my %timezones; + my $numcourses; + if ($env{'user.adv'}) { + my %courses = &Apache::lonnet::courseiddump($env{'user.domain'},'.','.','.','.','.',undef,undef,'Course'); + $numcourses = keys(%courses); + } foreach $envkey (sort keys %env) { my $button = 1; my $switchserver=''; @@ -714,9 +719,12 @@ ENDHEADER $r->print(' />'); } else { if ($countactive > 0) { - my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); - my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); - $r->print('

'.&mt('[_1]Visit the [_2]Course Catalog[_3] to view all [_4] LON-CAPA courses.','','','',$domdesc).'
'.&mt('If a course is [_1]not[_2] in your list of current courses below, you may be able to enroll if self-enrollment is permitted.','','').'

'); + my $queuetotal = &queued_selfenrollment($r); + if (($numcourses-$queuetotal) > 1) { + my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); + my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); + $r->print('

'.&mt('[_1]Visit the [_2]Course Catalog[_3] to view all [_4] GCI WebCenter courses.','','','',$domdesc).'
'.&mt('If a course is [_1]not[_2] in your list of current courses below, you may be able to enroll if self-enrollment is permitted.','','').'

'); + } } } @@ -727,7 +735,7 @@ ENDHEADER } else { $r->print('

'.&mt('Currently no active roles or courses').'

'); } - &findcourse_advice($r); + &findcourse_advice($r,$numcourses); $r->print(''); if ($countfuture) { $r->print(&mt('The following [quant,_1,role,roles] will become active in the future:',$countfuture)); @@ -752,6 +760,27 @@ ENDHEADER } $r->print(&Apache::loncommon::end_page()); return OK; + } elsif ($countactive==1) { # Is there only one choice? + my $needs_switchserver; + if ($env{'user.author'}) { + $needs_switchserver = &check_needs_switchserver($possiblerole); + } + if ((!$needs_switchserver) && ($env{'request.role'} eq 'cm')) { + $r->print('

'.&mt('Please stand by.').'

'. + ''. + ''); + $r->print("\n"); + $r->rflush(); + $r->print(''); + $r->print(&Apache::loncommon::end_page()); + return OK; + } + if ($needs_switchserver) { + $r->print("

".&mt('Server Switch Required')."

\n". + &mt('Construction Space access is only available from '. + 'the home server of the corresponding Author.').'
'. + &mt("Click the 'Switch Server' link to go there.").'
'); + } } # ----------------------------------------------------------------------- Table unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) { @@ -826,10 +855,14 @@ ENDHEADER $r->print('

' .&mt('This is LON-CAPA [_1]',$r->dir_config('lonVersion')) .'
' - .''.&mt('Logout').'  ' - .'' - .&mt('Course Catalog') - .'

'); + .''.&mt('Logout').''); + if ($numcourses>1) { + $r->print('  '. + ''. + &mt('Course Catalog'). + ''); + } + $r->print('

'); } $r->print(&Apache::loncommon::end_page()); return OK; @@ -947,7 +980,7 @@ sub print_rolerows { } sub findcourse_advice { - my ($r) = @_; + my ($r,$numcourses) = @_; my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); if (&Apache::lonnet::auto_run(undef,$env{'user.domain'})) { @@ -962,11 +995,59 @@ sub findcourse_advice { } else { $r->print(&mt('If you were expecting to see an active role listed for a particular course, that course may not have been created yet.').'
'); } - $r->print('

'.&mt('The [_1]Course Catalog[_2] provides information about all [_3] classes for which LON-CAPA courses have been created.','','',$domdesc).'
'); - $r->print(&mt('You can search the course catalog for courses which permit self-enrollment, if you would like to enroll in a course.').'

'); + my $queuetotal = &queued_selfenrollment($r); + if (($numcourses - $queuetotal) > 0) { + $r->print('

'.&mt('The [_1]Course Catalog[_2] provides information about all [_3] classes for which LON-CAPA courses have been created.','','',$domdesc).'
'); + $r->print(&mt('You can search the course catalog for courses which permit self-enrollment, if you would like to enroll in a course.').'

'); + } return; } +sub queued_selfenrollment { + my ($r) = @_; + my %selfenrollrequests = &Apache::lonnet::dump('selfenrollrequests'); + my %reqs_by_date; + my $queuetotal = 0; + foreach my $item (keys(%selfenrollrequests)) { + if (ref($selfenrollrequests{$item}) eq 'HASH') { + if ($selfenrollrequests{$item}{'status'} eq 'request') { + if ($selfenrollrequests{$item}{'timestamp'}) { + push(@{$reqs_by_date{$selfenrollrequests{$item}{'timestamp'}}},$item); + } + } + } + } + if (keys(%reqs_by_date)) { + my $rolename = &Apache::lonnet::plaintext('st'); + $r->print(''.&mt('Enrollment requests pending Course Coordinator approval').'
'. + &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row(). + ''.&mt('Date requested').''.&mt('Course title').''. + ''.&mt('User role').''.&mt('Section').''. + &Apache::loncommon::end_data_table_header_row()); + my @sorted = sort { $a <=> $b } (keys(%reqs_by_date)); + foreach my $item (@sorted) { + if (ref($reqs_by_date{$item}) eq 'ARRAY') { + foreach my $crs (@{$reqs_by_date{$item}}) { + my %courseinfo = &Apache::lonnet::coursedescription($crs); + my $usec = $selfenrollrequests{$crs}{'section'}; + if ($usec eq '') { + $usec = &mt('No section'); + } + $r->print(&Apache::loncommon::start_data_table_row(). + ''.&Apache::lonlocal::locallocaltime($item).''. + ''.$courseinfo{'description'}.''. + ''.$rolename.''.$usec.''. + &Apache::loncommon::end_data_table_row()); + $queuetotal ++; + } + } + } + $r->print(&Apache::loncommon::end_data_table()); + } + return $queuetotal; +} + sub privileges_info { my ($which) = @_; my $output; @@ -1076,7 +1157,7 @@ sub build_roletext { } elsif ($advanced) { $roletext.= ''; } elsif ($reinit) { $roletext.= @@ -1086,7 +1167,7 @@ sub build_roletext { } else { $roletext.= ''; } }