Diff for /loncom/auth/lonroles.pm between versions 1.254 and 1.255

version 1.254, 2010/07/26 21:52:15 version 1.255, 2010/07/30 20:35:16
Line 210  sub handler { Line 210  sub handler {
     my %dcroles = ();      my %dcroles = ();
     my $numdc = &check_fordc(\%dcroles,$then);      my $numdc = &check_fordc(\%dcroles,$then);
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
     my $loncaparev = $Apache::lonnet::perlvar{'lonVersion'};       my $loncaparev = $Apache::lonnet::perlvar{'lonVersion'};
   
 # ================================================================== Roles Init  # ================================================================== Roles Init
     if ($env{'form.selectrole'}) {      if ($env{'form.selectrole'}) {
Line 324  sub handler { Line 324  sub handler {
  if ($tstatus eq 'is') {   if ($tstatus eq 'is') {
     $where=~s/^\///;      $where=~s/^\///;
     my ($cdom,$cnum,$csec)=split(/\//,$where);      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').
                                   '<p class="LC_warning">'); 
                                   if ($switchwarning) {
                                       $r->print($switchwarning.'<br /><a href="/adm/roles">');
                                       if (&Apache::loncommon::show_course()) {
                                           $r->print(&mt('Display courses'));
                                       } else {
                                           $r->print(&mt('Display roles'));
                                       }
                                       $r->print('</a>');
                                   } elsif ($switchserver) {
       $r->print(&mt('This course requires a newer version of LON-CAPA than is installed on this server.').
                                                 '<br />'.
                                                 '<a href="/adm/switchserver?'.$switchserver.'">'.
                                                 &mt('Switch Server').
                                                 '</a>');
                                   }
                                   $r->print('</p>'.&Apache::loncommon::end_page());
                                   return OK;
                               }
                           }
                       }
 # check for course groups  # check for course groups
                     my %coursegroups = &Apache::lonnet::get_active_groups(                      my %coursegroups = &Apache::lonnet::get_active_groups(
                           $env{'user.domain'},$env{'user.name'},$cdom, $cnum);                            $env{'user.domain'},$env{'user.name'},$cdom, $cnum);
Line 459  ENDENTERKEY Line 494  ENDENTERKEY
                             if (($ferr) && ($tadv)) {                              if (($ferr) && ($tadv)) {
  &error_page($r,$ferr,$dest);   &error_page($r,$ferr,$dest);
     } else {      } 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);   $r->internal_redirect($dest);
     }      }
     return OK;      return OK;
Line 989  sub gather_roles { Line 1030  sub gather_roles {
         &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom).          &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom).
                                     '</span>';                                      '</span>';
                             unless ($home && grep(/^\Q$home\E$/,@ids) && $loncaparev eq '') {                              unless ($home && grep(/^\Q$home\E$/,@ids) && $loncaparev eq '') {
                                   my $required = $env{'course.'.$tcourseid.'.internal.releaserequired'};
                                 ($switchserver,$switchwarning) =                                   ($switchserver,$switchwarning) = 
                                     &check_release_required($loncaparev,$tcourseid,$trolecode);                                      &check_release_required($loncaparev,$tcourseid,$trolecode,$required);
                                 if ($switchserver || $switchwarning) {                                  if ($switchserver || $switchwarning) {
                                     $button = 0;                                      $button = 0;
                                 }                                  }
Line 1009  sub gather_roles { Line 1051  sub gather_roles {
                             $trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid);                              $trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid);
                             my $home = $newhash{'home'};                              my $home = $newhash{'home'};
                             unless ($home && grep(/^\Q$home\E$/,@ids) && $loncaparev eq '') {                              unless ($home && grep(/^\Q$home\E$/,@ids) && $loncaparev eq '') {
                                   my $required = $newhash{'internal.releaserequired'};
                                 ($switchserver,$switchwarning) =                                  ($switchserver,$switchwarning) =
                                     &check_release_required($loncaparev,$tcourseid,$trolecode);                                      &check_release_required($loncaparev,$tcourseid,$trolecode,$required);
                                 if ($switchserver || $switchwarning) {                                  if ($switchserver || $switchwarning) {
                                     $button = 0;                                      $button = 0;
                                 }                                  }
Line 1328  sub build_roletext { Line 1371  sub build_roletext {
             } else {              } else {
                 $roletext.=('<td'.$rowspan.' class="'.$tbg.'">&nbsp;</td>');                  $roletext.=('<td'.$rowspan.' class="'.$tbg.'">&nbsp;</td>');
             }              }
             $tremark .= $switchwarning;              if ($switchwarning) {
                   if ($tremark eq '') {
                       $tremark = $switchwarning;
                   } else {
                       $tremark .= '<br />'.$switchwarning;
                   }
               }
         } elsif ($tstatus eq 'is') {          } elsif ($tstatus eq 'is') {
             $roletext.='<td'.$rowspan.' class="'.$tbg.'">'.              $roletext.='<td'.$rowspan.' class="'.$tbg.'">'.
                         '<input name="'.$buttonname.'" type="button" value="'.                          '<input name="'.$buttonname.'" type="button" value="'.
Line 1510  sub check_forcc { Line 1559  sub check_forcc {
 }  }
   
 sub check_release_required {  sub check_release_required {
     my ($loncaparev,$tcourseid,$trolecode) = @_;      my ($loncaparev,$tcourseid,$trolecode,$required) = @_;
     my ($switchserver,$warning);      my ($switchserver,$warning);
     if ($env{'course.'.$tcourseid.'.internal.releaserequired'} ne '') {      if ($required ne '') {
         my ($reqdmajor,$reqdminor) = ($env{'course.'.$tcourseid.'.internal.releaserequired'} =~ /^(\d+)\.(\d+)$/);          my ($reqdmajor,$reqdminor) = ($required =~ /^(\d+)\.(\d+)$/);
         my ($major,$minor) = ($loncaparev =~ /^\'?(\d+)\.(\d+)\.[\d.\-]+\'?$/);          my ($major,$minor) = ($loncaparev =~ /^\'?(\d+)\.(\d+)\.[\d.\-]+\'?$/);
         if ($reqdmajor ne '' && $reqdminor ne '') {          if ($reqdmajor ne '' && $reqdminor ne '') {
             my $otherserver;              my $otherserver;
Line 1561  sub check_release_required { Line 1610  sub check_release_required {
     return ($switchserver,$warning);      return ($switchserver,$warning);
 }  }
   
   sub update_content_constraints {
       my ($cdom,$cnum,$chome,$cid) = @_;
       my %curr_reqd_hash = &Apache::lonnet::userenvironment($cdom,$cnum,'internal.releaserequired');
       my ($reqdmajor,$reqdminor) = split(/\./,$curr_reqd_hash{'internal.releaserequired'}); 
       my %checkresponsetypes;
       foreach my $key (keys(%Apache::lonnet::needsrelease)) {
           my ($item,$name,$value) = split(/:/,$key);
           if ($item eq 'resourcetag') {
               if ($name eq 'responsetype') {
                   $checkresponsetypes{$value} = $Apache::lonnet::needsrelease{$key}
               }
           }
       }
       my $navmap = Apache::lonnavmaps::navmap->new();
       if (defined($navmap)) {
           my %allresponses;
           foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_problem() },1,0)) {
               my %responses = $res->responseTypes();
               foreach my $key (keys(%responses)) {
                   next unless(exists($checkresponsetypes{$key}));
                   $allresponses{$key} += $responses{$key};
               }
           }
           foreach my $key (keys(%allresponses)) {
               my ($major,$minor) = split(/\./,$checkresponsetypes{$key});
               if (($major > $reqdmajor) || ($major == $reqdmajor && $minor > $reqdminor)) { 
                   ($reqdmajor,$reqdminor) = ($major,$minor);
               } 
           }
           undef($navmap);
       }
       unless (($reqdmajor eq '') && ($reqdminor eq '')) {
           &Apache::lonnet::update_released_required($reqdmajor.'.'.$reqdminor,$cdom,$cnum,$chome,$cid);
       }
       return;
   }
   
 sub courselink {  sub courselink {
     my ($dcdom,$rowtype) = @_;      my ($dcdom,$rowtype) = @_;
     my $courseform=&Apache::loncommon::selectcourse_link      my $courseform=&Apache::loncommon::selectcourse_link

Removed from v.1.254  
changed lines
  Added in v.1.255


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>