--- loncom/auth/lonroles.pm 2006/03/16 19:19:59 1.146 +++ loncom/auth/lonroles.pm 2006/05/30 19:47:36 1.151 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.146 2006/03/16 19:19:59 raeburn Exp $ +# $Id: lonroles.pm,v 1.151 2006/05/30 19:47:36 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -39,7 +39,10 @@ use Apache::loncommon; use Apache::lonhtmlcommon; use Apache::lonannounce; use Apache::lonlocal; +use Apache::lonpageflip(); use GDBM_File; +use LONCAPA; + sub redirect_user { my ($r,$title,$url,$msg,$launch_nav) = @_; @@ -55,28 +58,40 @@ sub redirect_user { } else { $navwindow.=&Apache::lonnavmaps::close(); } - my $bodytag=&Apache::loncommon::bodytag('Switching Role'); + my $start_page = &Apache::loncommon::start_page('Switching Role',undef, + {'redirect' => [1,$url],}); + my $end_page = &Apache::loncommon::end_page(); + # Note to style police: # This must only replace the spaces, nothing else, or it bombs elsewhere. $url=~s/ /\%20/g; $r->print(<$title - - - -$bodytag +$start_page $navwindow

$msg

-Continue - - +$end_page ENDREDIR return; } +sub error_page { + my ($r,$error,$dest)=@_; + &Apache::loncommon::content_type($r,'text/html'); + &Apache::loncommon::no_cache($r); + $r->send_http_header; + return OK if $r->header_only; + $r->print(&Apache::loncommon::start_page('Problems during Course Initialization'). + ''. + '

'.&mt('The following problems occurred:'). + $error. + '


$message
- +$end_page ENDENTEREDKEY return OK; } else { @@ -202,13 +216,11 @@ ENDENTEREDKEY &Apache::loncommon::no_cache($r); $r->send_http_header; my $swinfo=&Apache::lonmenu::rawconfig(); - my $bodytag=&Apache::loncommon::bodytag + my $start_page=&Apache::loncommon::start_page ('Enter Access Key to Unlock this Course'); + my $end_page=&Apache::loncommon::end_page(); $r->print(<Entering Course Access Key - - -$bodytag +$start_page @@ -218,7 +230,7 @@ $swinfo - +$end_page ENDENTERKEY return OK; } @@ -245,7 +257,11 @@ ENDENTERKEY my $dest=$env{'form.orgurl'}; if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } &Apache::lonnet::appenv('request.role.adv'=>$tadv); - $r->internal_redirect($dest); + if (($ferr) && ($tadv)) { + &error_page($r,$ferr,$dest); + } else { + $r->internal_redirect($dest); + } return OK; } else { unless ($env{'request.course.id'}) { @@ -259,38 +275,46 @@ ENDENTERKEY } if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } &Apache::lonnet::appenv('request.role.adv'=>$tadv); - - # Check to see if the user is a CC entering a course - # for the first time - my (undef, undef, $role, $courseid) = split(/\./, $envkey); - if (substr($courseid, 0, 1) eq '/') { - $courseid = substr($courseid, 1); - } - $courseid =~ s/\//_/; - if ($role eq 'cc' && $env{'course.' . $courseid . - '.course.helper.not.run'}) { - $furl = "/adm/helper/course.initialization.helper"; - # Send the user to the course they selected - } elsif ($env{'request.course.id'}) { - if (&Apache::lonnet::allowed('whn', - $env{'request.course.id'}) - || &Apache::lonnet::allowed('whn', - $env{'request.course.id'}.'/' - .$env{'request.course.sec'}) - ) { - my $startpage = &courseloadpage($courseid); - unless ($startpage eq 'firstres') { - $msg = &mt('Entering course ....'); - &redirect_user($r,&mt('New in course'), - '/adm/whatsnew?refpage=start',$msg, - $env{'environment.remotenavmap'}); - return OK; - } - } + if (($ferr) && ($tadv)) { + &error_page($r,$ferr,$furl); + } else { + # Check to see if the user is a CC entering a course + # for the first time + my (undef, undef, $role, $courseid) = split(/\./, $envkey); + if (substr($courseid, 0, 1) eq '/') { + $courseid = substr($courseid, 1); + } + $courseid =~ s/\//_/; + if ($role eq 'cc' && $env{'course.' . $courseid . + '.course.helper.not.run'}) { + $furl = "/adm/helper/course.initialization.helper"; + # Send the user to the course they selected + } elsif ($env{'request.course.id'}) { + if (&Apache::lonnet::allowed('whn', + $env{'request.course.id'}) + || &Apache::lonnet::allowed('whn', + $env{'request.course.id'}.'/' + .$env{'request.course.sec'}) + ) { + my $startpage = &courseloadpage($courseid); + unless ($startpage eq 'firstres') { + $msg = &mt('Entering course ....'); + &redirect_user($r,&mt('New in course'), + '/adm/whatsnew?refpage=start',$msg, + $env{'environment.remotenavmap'}); + return OK; + } + } + } +# Are we allowed to look at the first resource? + if (!&Apache::lonnet::allowed('bre',$furl)) { +# Guess not ... + $furl=&Apache::lonpageflip::first_accessible_resource(); + } + &redirect_user($r,&mt('Entering Course'), + $furl,$msg, + $env{'environment.remotenavmap'}); } - &redirect_user($r,&mt('Entering Course'), - $furl,$msg, - $env{'environment.remotenavmap'}); return OK; } } @@ -329,16 +353,12 @@ ENDENTERKEY return OK if $r->header_only; my $swinfo=&Apache::lonmenu::rawconfig(); - my $bodytag=&Apache::loncommon::bodytag('User Roles'); + my $start_page=&Apache::loncommon::start_page('User Roles'); my $standby=&mt('Role selected. Please stand by.'); $standby=~s/\n/\\n/g; my $helptag='
'.&Apache::loncommon::help_open_menu('','General Intro','General_Intro','User Roles',1,undef,undef,undef,undef,,&mt("Click here for help")).'
'; $r->print(< - -LON-CAPA User Roles - -$bodytag +$start_page $helptag
'); - $r->print(''); + $r->print(&Apache::loncommon::end_page()); return OK; } # More than one possible role @@ -767,7 +778,7 @@ ENDHEADER $r->dir_config('lonVersion').'
'. '
'.&mt('Logout').'

'); } - $r->print("\n"); + $r->print(&Apache::loncommon::end_page()); return OK; } @@ -999,7 +1010,7 @@ sub allcourses_row { sub recent_filename { my $area=shift; - return 'nohist_recent_'.&Apache::lonnet::escape($area); + return 'nohist_recent_'.&escape($area); } sub set_privileges {