Diff for /loncom/auth/lonroles.pm between versions 1.267 and 1.272

version 1.267, 2012/06/01 16:00:29 version 1.272, 2012/08/15 14:37:23
Line 225  sub handler { Line 225  sub handler {
         $updateresult .= &update_session_roles();          $updateresult .= &update_session_roles();
         &Apache::lonnet::appenv({'user.update.time'  => $now});          &Apache::lonnet::appenv({'user.update.time'  => $now});
         $update = $now;          $update = $now;
           &Apache::loncoursequeueadmin::reqauthor_check();
       }
   
   # -------------------------------------------------- Check for author requests
       my $reqauthor;
       if ($env{'form.requestauthor'}) {
          $reqauthor = &Apache::loncoursequeueadmin::process_reqauthor(\$update);
     }      }
   
     my $envkey;      my $envkey;
Line 266  sub handler { Line 273  sub handler {
  "request.course.fn"   => '',   "request.course.fn"   => '',
  "request.course.uri"  => '',   "request.course.uri"  => '',
  "request.course.sec"  => '',   "request.course.sec"  => '',
                                    "request.course.tied" => '',
  "request.role"        => 'cm',   "request.role"        => 'cm',
                                  "request.role.adv"    => $env{'user.adv'},                                   "request.role.adv"    => $env{'user.adv'},
  "request.role.domain" => $env{'user.domain'}});   "request.role.domain" => $env{'user.domain'}});
Line 519  ENDENTERKEY Line 527  ENDENTERKEY
                                 if ($dest =~ m{^/adm/coursedocs\?folderpath}) {                                  if ($dest =~ m{^/adm/coursedocs\?folderpath}) {
                                     if ($env{'request.course.id'} eq $cdom.'_'.$cnum) {                                       if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { 
                                         my $chome = &Apache::lonnet::homeserver($cnum,$cdom);                                          my $chome = &Apache::lonnet::homeserver($cnum,$cdom);
                                         &update_content_constraints($cdom,$cnum,$chome,$cdom.'_'.$cnum);                                          &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,
                                                                                          $cdom.'_'.$cnum);
                                     }                                      }
                                 }                                  }
  $r->internal_redirect($dest);   $r->internal_redirect($dest);
Line 682  function setToUpdate(thisform) { Line 691  function setToUpdate(thisform) {
     thisform.submit();      thisform.submit();
 }  }
   
   function setToRequestAuthor(thisform) {
       thisform.requestauthor.value='1';
       thisform.selectrole.value='';
       thisform.submit(); 
   }
   
 // ]]>  // ]]>
 </script>  </script>
 ENDHEADER  ENDHEADER
Line 748  ENDHEADER Line 763  ENDHEADER
   &Apache::loncommon::end_page());    &Apache::loncommon::end_page());
  return OK;   return OK;
     } else {      } else {
         $r->print($updateresult);           if ($updateresult || $reqauthor) {
               $r->print('<div>'.
                         $updateresult.
                         $reqauthor.
                         '</div>');
           }
         if (($ENV{'REDIRECT_QUERY_STRING'}) && ($fn)) {          if (($ENV{'REDIRECT_QUERY_STRING'}) && ($fn)) {
        $fn.='?'.$ENV{'REDIRECT_QUERY_STRING'};         $fn.='?'.$ENV{'REDIRECT_QUERY_STRING'};
         }          }
Line 776  ENDHEADER Line 796  ENDHEADER
                      '<input type="button" name="update" value="'.                       '<input type="button" name="update" value="'.
                      $updatebutton.'" onclick="javascript:setToUpdate(this.form)" />';                       $updatebutton.'" onclick="javascript:setToUpdate(this.form)" />';
     }      }
       my ($requestauthor,$requestcrs);
       unless ($reqauthor) {
           if ($env{'environment.canrequest.author'}) {
               unless (&is_active_author()) {
                   my ($status,$timestamp) = split(/:/,$env{'environment.requestauthorqueued'});
                   if ($status eq 'approval') {
                       $requestauthor = &mt('A request for authoring space submitted on [_1] is awaiting approval',&Apache::lonlocal::locallocaltime($timestamp)); 
                   } elsif (($status eq 'approved') && ($do_update)) {
                       my %roleshash = &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles',
                                                                     ['active'],['au'],[$env{'user.domain'}]);
                       if (keys(%roleshash)) {
                           $requestauthor = &mt('Your request for an author role has been approved.').'<br />';
                           if ($show_course) {
                               $requestauthor .= &mt('Use the "Check for new courses" button to update your list of roles.');
                           } else {
                               $requestauthor .= &mt('Use the "Check for new roles" button to update your list of roles.'); 
                           }
                           $requestauthor = '<span class="LC_info">'.$requestauthor.'</span>';
                       }
                   }
                   unless ($requestauthor) {
                       $requestauthor = 
                           '<input type="hidden" name="requestauthor" value="" />'.
                           '<input type="button" name="reqauthor" value="'.
                           &mt('Request author space').'" '. 
                           'onclick="javascript:setToRequestAuthor(this.form)" />';
                   }
               }
           }
       }
       my $do_update;
       unless (($env{'form.source'} eq 'login') || ($env{'form.doupdate'})) {
           $do_update = '<input type="hidden" name="doupdate" value="" />'.
                        '<input type="button" name="update" value="'.
                        $updatebutton.'" onclick="javascript:setToUpdate(this.form)" />';
       }
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
         my $showall = '<label><input type="checkbox" name="showall"';          my $showall = '<label><input type="checkbox" name="showall"';
         if ($env{'form.showall'}) {           if ($env{'form.showall'}) { 
Line 783  ENDHEADER Line 839  ENDHEADER
         }          }
         $showall .= ' />'.&mt('Show all roles').'</label>&nbsp;'.          $showall .= ' />'.&mt('Show all roles').'</label>&nbsp;'.
                     '<input type="submit" value="'.&mt('Update display').'" />';                      '<input type="submit" value="'.&mt('Update display').'" />';
         if ($do_update) {          if ($do_update || $requestauthor) {
             $r->print('<div class="LC_left_float"><fieldset>'.              $r->print('<div class="LC_left_float"><fieldset>'.
                       '<legend>'. &mt('Display').'</legend>'.                        '<legend>'. &mt('Display').'</legend>'.
                       $showall.'</fieldset></div>'.                        $showall.'</fieldset></div>');
                       '<div class="LC_left_float"><fieldset><legend>'.              if ($do_update) {
                       &mt('Changes?').'</legend>'.                  $r->print('<div class="LC_left_float">'.
                       $do_update.'</fieldset></div><br clear="all" />');                            '<fieldset><legend>'.&mt('Changes?').'</legend>'.
                             $do_update.'</fieldset></div>');
               }
               if ($requestauthor) {
                   $r->print('<div class="LC_left_float">'.
                             '<fieldset><legend>'.&mt('Add author role').'</legend>'.
                             $requestauthor.'</fieldset>');
               }
               $r->print('</div><br clear="all" />');
         } else {          } else {
             $r->print($showall);              $r->print($showall);
         }          }
     } else {      } else {
         $r->print('<p>'.$do_update.'</p>');          if ($do_update && $requestauthor) {
               $r->print('<div class="LC_left_float">'.
                         '<fieldset><legend>'.&mt('Changes?').'</legend>'.
                         $do_update.'</fieldset></div>'.
                         '<div class="LC_left_float">'.
                         '<fieldset><legend>'.&mt('Add author role').'</legend>'.
                         $requestauthor.'</fieldset></div><br clear="all" />');
           } elsif ($do_update) {
               $r->print('<p>'.$do_update.'</p>');
           } elsif ($requestauthor) {
               $r->print('<p>'.$requestauthor.'</p>');
           }
         if ($countactive > 0) {          if ($countactive > 0) {
             $r->print(&Apache::loncoursequeueadmin::queued_selfenrollment());              $r->print(&Apache::loncoursequeueadmin::queued_selfenrollment());
             my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');              my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
Line 974  ENDHEADER Line 1049  ENDHEADER
     return OK;      return OK;
 }  }
   
   sub is_active_author {
       if ($env{'user.role.au./'.$env{'user.domain'}.'/'} =~ /^(\d*)\.(\d*)$/) {
           if ((!$1 || $1 < time) &&
               (!$2 || $2 > time)) {
               return 1;
           }
       }
       return;
   }
   
   sub reqauthor_check {
       my $queued = $env{'environment.requestauthorqueued'};
       my %reqauthor = &Apache::lonnet::get('requestauthor',['author_status','author'],
                                            $env{'user.domain'},$env{'user.name'});
       my $reqstatus = $reqauthor{'author_status'};
       if (($reqstatus eq '' && $queued ne '') || 
           ($env{'environment.requestauthorqueued'} !~ /^\Q$reqstatus\E/)) {
           if (ref($reqauthor{'author'}) eq 'HASH') {
               $queued = $reqstatus.':'.$reqauthor{'author'}{'timestamp'};
           } else {
               undef($queued);
           }
           &Apache::lonnet::appenv({'environment.requestauthorqueued' => $queued});
       }
       return $queued;
   }
   
 sub gather_roles {  sub gather_roles {
     my ($update,$refresh,$now,$reinit,$nochoose,$roletext,$sortrole,$roleclass,$futureroles,$timezones,$loncaparev) = @_;      my ($update,$refresh,$now,$reinit,$nochoose,$roletext,$sortrole,$roleclass,$futureroles,$timezones,$loncaparev) = @_;
     my ($countactive,$countfuture,$inrole,$possiblerole) = (0,0,0,'');      my ($countactive,$countfuture,$inrole,$possiblerole) = (0,0,0,'');
Line 1686  sub check_release_required { Line 1788  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
Line 1924  sub update_session_roles { Line 1989  sub update_session_roles {
         }          }
         if ($env{$envkey} eq '') {          if ($env{$envkey} eq '') {
             my $status_in_db =              my $status_in_db =
                 &curr_role_status($tstart,$tend,$refresh,$now);                  &curr_role_status($tstart,$tend,$now,$now);
                 &gather_roleprivs(\%allroles,\%allgroups,\%userroles,$where,$role,$tstart,$tend,$status_in_db);                  &gather_roleprivs(\%allroles,\%allgroups,\%userroles,$where,$role,$tstart,$tend,$status_in_db);
             if (($role eq 'st') && ($env{'request.role'} =~ m{^\Q$role\E\.\Q/$udom/$uname\E})) {              if (($role eq 'st') && ($env{'request.role'} =~ m{^\Q$role\E\.\Q/$udom/$uname\E})) {
                 if ($status_in_db eq 'active') {                  if ($status_in_db eq 'active') {
Line 1968  sub update_session_roles { Line 2033  sub update_session_roles {
                 my $status_in_env =                  my $status_in_env =
                     &curr_role_status($currstart,$currend,$refresh,$update);                      &curr_role_status($currstart,$currend,$refresh,$update);
                 my $status_in_db =                  my $status_in_db =
                     &curr_role_status($tstart,$tend,$refresh,$now);                      &curr_role_status($tstart,$tend,$now,$now);
                 if ($status_in_env ne $status_in_db) {                  if ($status_in_env ne $status_in_db) {
                     if ($status_in_env eq 'active') {                      if ($status_in_env eq 'active') {
                         if ($role eq 'st') {                          if ($role eq 'st') {
Line 2239  sub update_session_roles { Line 2304  sub update_session_roles {
                 }                  }
                 $msg .= '</ul>';                  $msg .= '</ul>';
             } else {              } else {
                 $msg = '&nbsp;<span class="LC_cusr_emph">'.$rolesmsg.'</span><br /><br />';                  $msg = '&nbsp;<span class="LC_cusr_emph">'.$rolesmsg.'</span><br />';
             }              }
             return $msg;              return $msg;
         }          }
Line 2293  sub update_session_roles { Line 2358  sub update_session_roles {
         }          }
         if (keys(%deletedroles) > 0) {          if (keys(%deletedroles) > 0) {
             $changemsg .= '<li>'.              $changemsg .= '<li>'.
                           &mt('Existing roles deleted').'</li>'.                            &mt('Existing roles now expired').'</li>'.
                           '<ul>';                            '<ul>';
             foreach my $item (sort(keys(%deletedroles))) {              foreach my $item (sort(keys(%deletedroles))) {
                 $changemsg .= '<li>'.$item.'</li>';                  $changemsg .= '<li>'.$item.'</li>';

Removed from v.1.267  
changed lines
  Added in v.1.272


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