--- loncom/auth/lonroles.pm 2010/07/26 21:52:15 1.254 +++ loncom/auth/lonroles.pm 2010/07/30 20:35:16 1.255 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.254 2010/07/26 21:52:15 raeburn Exp $ +# $Id: lonroles.pm,v 1.255 2010/07/30 20:35:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -210,7 +210,7 @@ sub handler { my %dcroles = (); my $numdc = &check_fordc(\%dcroles,$then); &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); - my $loncaparev = $Apache::lonnet::perlvar{'lonVersion'}; + my $loncaparev = $Apache::lonnet::perlvar{'lonVersion'}; # ================================================================== Roles Init if ($env{'form.selectrole'}) { @@ -324,6 +324,41 @@ sub handler { if ($tstatus eq 'is') { $where=~s/^\///; my ($cdom,$cnum,$csec)=split(/\//,$where); + if (($cnum) && ($role ne 'ca') && ($role ne 'aa')) { + my $home = $env{'course.'.$cdom.'_'.$cnum.'.home'}; + my @ids = &Apache::lonnet::current_machine_ids(); + unless ($loncaparev eq '' && $home && grep(/^\Q$home\E$/,@ids)) { + my %curr_reqd_hash = &Apache::lonnet::userenvironment($cdom,$cnum,'internal.releaserequired'); + if ($curr_reqd_hash{'internal.releaserequired'} && + $curr_reqd_hash{'internal.releaserequired'} > $loncaparev) { + my ($switchserver,$switchwarning) = + &check_release_required($loncaparev,$cdom.'_'.$cnum,$trolecode,$curr_reqd_hash{'internal.releaserequired'}); + &Apache::loncommon::content_type($r,'text/html'); + &Apache::loncommon::no_cache($r); + $r->send_http_header; + my $end_page=&Apache::loncommon::end_page(); + $r->print(&Apache::loncommon::start_page('Selected course unavailable on this server'). + '

'); + if ($switchwarning) { + $r->print($switchwarning.'
'); + if (&Apache::loncommon::show_course()) { + $r->print(&mt('Display courses')); + } else { + $r->print(&mt('Display roles')); + } + $r->print(''); + } elsif ($switchserver) { + $r->print(&mt('This course requires a newer version of LON-CAPA than is installed on this server.'). + '
'. + ''. + &mt('Switch Server'). + ''); + } + $r->print('

'.&Apache::loncommon::end_page()); + return OK; + } + } + } # check for course groups my %coursegroups = &Apache::lonnet::get_active_groups( $env{'user.domain'},$env{'user.name'},$cdom, $cnum); @@ -459,6 +494,12 @@ ENDENTERKEY if (($ferr) && ($tadv)) { &error_page($r,$ferr,$dest); } else { + if ($dest =~ m{^/adm/coursedocs\?folderpath}) { + if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { + my $chome = &Apache::lonnet::homeserver($cnum,$cdom); + &update_content_constraints($cdom,$cnum,$chome,$cdom.'_'.$cnum); + } + } $r->internal_redirect($dest); } return OK; @@ -989,8 +1030,9 @@ sub gather_roles { &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom). ''; unless ($home && grep(/^\Q$home\E$/,@ids) && $loncaparev eq '') { + my $required = $env{'course.'.$tcourseid.'.internal.releaserequired'}; ($switchserver,$switchwarning) = - &check_release_required($loncaparev,$tcourseid,$trolecode); + &check_release_required($loncaparev,$tcourseid,$trolecode,$required); if ($switchserver || $switchwarning) { $button = 0; } @@ -1009,8 +1051,9 @@ sub gather_roles { $trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid); my $home = $newhash{'home'}; unless ($home && grep(/^\Q$home\E$/,@ids) && $loncaparev eq '') { + my $required = $newhash{'internal.releaserequired'}; ($switchserver,$switchwarning) = - &check_release_required($loncaparev,$tcourseid,$trolecode); + &check_release_required($loncaparev,$tcourseid,$trolecode,$required); if ($switchserver || $switchwarning) { $button = 0; } @@ -1328,7 +1371,13 @@ sub build_roletext { } else { $roletext.=(' '); } - $tremark .= $switchwarning; + if ($switchwarning) { + if ($tremark eq '') { + $tremark = $switchwarning; + } else { + $tremark .= '
'.$switchwarning; + } + } } elsif ($tstatus eq 'is') { $roletext.=''. '