Diff for /loncom/auth/lonroles.pm between versions 1.269 and 1.270

version 1.269, 2012/07/21 21:09:03 version 1.270, 2012/08/14 15:45:25
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;
           &reqauthor_check();
       }
   
   # -------------------------------------------------- Check for author requests
   
       my $reqauthor;
       if ($env{'form.requestauthor'}) {
           if ($env{'environment.canrequest.author'}) {
               unless (&is_active_author()) {
                   my $queued = &reqauthor_check();
                   my $skipreq;
                   if ($queued =~ /^approval:\d+$/) {
                       my ($status,$timestamp) = split(/:/,$env{'environment.requestauthorqueued'});
                       if ($status eq 'approval') {
                           $reqauthor = '<span class="LC_info">'.
                                        &mt('A request for authoring space submitted on [_1] is awaiting approval',
                                            &Apache::lonlocal::locallocaltime($timestamp)).
                                        '</span>';
                       }
                       $skipreq = 1;
                   } elsif ($queued =~ /^approved:\d+$/) {
                       my %roleshash = &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles',
                                                                     ['active'],['au'],[$env{'user.domain'}]);
                       if (keys(%roleshash) > 0) {
                           $skipreq = 1; 
                       }
                   }
                   unless ($skipreq) {
                       my (@inststatuses,%domconfig);
                       %domconfig =
                           &Apache::lonnet::get_dom('configuration',
                                                    ['requestauthor'],$env{'user.domain'});
                       my $val = &Apache::loncoursequeueadmin::get_processtype('requestauthor',$env{'user.name'},
                                                                               $env{'user.domain'},$env{'user.adv'},
                                                                               $env{'user.domain'},undef,
                                                                               \@inststatuses,\%domconfig);
                       if ($val eq 'automatic') {
                           if (&Apache::lonnet::assignrole($env{'user.domain'},$env{'user.name'},'/'.$env{'user.domain'}.'/',
                                                           'au',undef,$now,undef,undef,'requestauthor') eq 'ok') {
                               $reqauthor = '<span class="LC_info">'.
                                            &mt('Access to authoring space has been activated').'</span><br />';
                                            &update_session_roles();
                               &Apache::lonnet::appenv({'user.update.time'  => $now});
                               $update = $now;
                           } else {
                               $reqauthor = '<span class="LC_info">'.
                                            &mt('An error occurred while activating your access to authoring space');   
                           }
                       } elsif ($val eq 'approval') {
                           my $domconfiguser = &Apache::lonnet::get_domainconfiguser($env{'user.domain'});
                           if (&Apache::lonnet::put('requestauthorqueue',{ $env{'user.name'}.'_'.$val => $now },
                                                    $env{'user.domain'},$domconfiguser) eq 'ok') {
                               my %userrequest = (
                                   author => {
                                             timestamp   => $now,
                                             status      => $val,
                                           },
                                   author_status => $val,
                               );
                               my $req_notifylist;
                               if (ref($domconfig{'requestauthor'}) eq 'HASH') {
                                   if (ref($domconfig{'requestauthor'}{'notify'}) eq 'HASH') {
                                       my $req_notifylist = $domconfig{'requestauthor'}{'notify'}{'approval'};
                                       if ($req_notifylist) {
                                           my $fullname = &Apache::loncommon::plainname($env{'user.name'},
                                                                                        $env{'user.domain'});
                                           my $sender = $env{'user.name'}.':'.$env{'user.domain'};
                                           my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
                                           &Apache::loncoursequeueadmin::send_selfserve_notification($req_notifylist,
                                               "$fullname ($env{'user.name'}:$env{'user.domain'})",undef,$domdesc,
                                               $now,'authorreq',$sender);
                                       }
                                   }
                               }
                               my $userresult =
                                   &Apache::lonnet::put('requestauthor',\%userrequest,$env{'user.domain'},$env{'user.name'});
                               $reqauthor = '<span class="LC_info">'.
                                            &mt('Your request for authoring space has been submitted for approval.').
                                            '</span>';
                               &Apache::lonnet::appenv({'environment.requestauthorqueued' => $val.':'.$now});
                           } else {
                               $reqauthor = '<span class="LC_info">'.
                                            &mt('An error occurred saving your request for authoring space.').
                                            '</span>';
                           }
                       }
                   }
               }
           }
     }      }
   
     my $envkey;      my $envkey;
Line 684  function setToUpdate(thisform) { Line 773  function setToUpdate(thisform) {
     thisform.submit();      thisform.submit();
 }  }
   
   function setToRequestAuthor(thisform) {
       thisform.requestauthor.value='1';
       thisform.selectrole.value='';
       thisform.submit(); 
   }
   
 // ]]>  // ]]>
 </script>  </script>
 ENDHEADER  ENDHEADER
Line 750  ENDHEADER Line 845  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 778  ENDHEADER Line 878  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 785  ENDHEADER Line 921  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 976  ENDHEADER Line 1131  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 2204  sub update_session_roles { Line 2386  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;
         }          }

Removed from v.1.269  
changed lines
  Added in v.1.270


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