Diff for /loncom/auth/lonroles.pm between versions 1.269.2.5 and 1.274

version 1.269.2.5, 2012/12/27 22:48:01 version 1.274, 2012/08/16 17:02:46
Line 149  sub redirect_user { Line 149  sub redirect_user {
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
     &Apache::loncommon::no_cache($r);      &Apache::loncommon::no_cache($r);
     $r->send_http_header;      $r->send_http_header;
     my $swinfo=&Apache::lonmenu::rawconfig();  
   
     # Breadcrumbs      # Breadcrumbs
     my $brcrum = [{'href' => $url,      my $brcrum = [{'href' => $url,
Line 164  sub redirect_user { Line 163  sub redirect_user {
     $url=~s/ /\%20/g;      $url=~s/ /\%20/g;
     $r->print(<<ENDREDIR);      $r->print(<<ENDREDIR);
 $start_page  $start_page
 <script type="text/javascript">  
 // <![CDATA[  
 $swinfo  
 // ]]>  
 </script>  
 <p>$msg</p>  <p>$msg</p>
 $end_page  $end_page
 ENDREDIR  ENDREDIR
Line 219  sub handler { Line 213  sub handler {
   
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
   
 # -------------------------------------------------- Check if setting hot list  # -------------------------------------------------- Check if setting hot list 
     my $hotlist;      my $hotlist;
     if ($env{'form.action'} eq 'verify_and_change_rolespref') {      if ($env{'form.action'} eq 'verify_and_change_rolespref') {
         $hotlist = &Apache::lonpreferences::verify_and_change_rolespref($r);          $hotlist = &Apache::lonpreferences::verify_and_change_rolespref($r);
Line 297  sub handler { Line 291  sub handler {
                 if (my ($ccrole,$domain,$coursenum) =                  if (my ($ccrole,$domain,$coursenum) =
     ($envkey =~ m-^form\.(cc|co)\./($match_domain)/($match_courseid)$-)) {      ($envkey =~ m-^form\.(cc|co)\./($match_domain)/($match_courseid)$-)) {
                     if ($dcroles{$domain}) {                      if ($dcroles{$domain}) {
                         if (&Apache::lonnet::check_adhoc_privs($domain,$coursenum,                          &Apache::lonnet::check_adhoc_privs($domain,$coursenum,
                                                            $update,$refresh,$now,$ccrole)) {                                                             $update,$refresh,$now,$ccrole);
                             &Apache::lonnet::appenv({"environment.internal.$domain.$coursenum.$ccrole.adhoc" => time});  
                         }  
                     }                      }
                     last;                      last;
                 }                  }
Line 523  ENDENTERKEY Line 515  ENDENTERKEY
                         my $msg;                          my $msg;
  my ($furl,$ferr)=   my ($furl,$ferr)=
     &Apache::lonuserstate::readmap($cdom.'/'.$cnum);      &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
                         unless (($ferr) || ($env{'form.switchrole'}) ||  
                                 ($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) {  
                             &Apache::lonnet::put('nohist_crslastlogin',  
                                 {$env{'user.name'}.':'.$env{'user.domain'}.  
                                 ':'.$csec.':'.$role => $now},$cdom,$cnum);  
                         }  
  if (($env{'form.orgurl'}) &&    if (($env{'form.orgurl'}) && 
     ($env{'form.orgurl'}!~/^\/adm\/flip/)) {      ($env{'form.orgurl'}!~/^\/adm\/flip/)) {
     my $dest=$env{'form.orgurl'};      my $dest=$env{'form.orgurl'};
Line 585  ENDENTERKEY Line 571  ENDENTERKEY
     $furl = "/adm/helper/course.initialization.helper";      $furl = "/adm/helper/course.initialization.helper";
     # Send the user to the course they selected      # Send the user to the course they selected
  } elsif ($env{'request.course.id'}) {   } elsif ($env{'request.course.id'}) {
                                     my ($dest,$destsymb,$checkenc);                                      if ($env{'form.destinationurl'}) {
                                     $dest = $env{'form.destinationurl'};                                          my $dest = $env{'form.destinationurl'};
                                     $destsymb = $env{'form.destsymb'};                                          if ($env{'form.destsymb'} ne '') {
                                     if ($dest ne '') {                                              my $esc_symb = &HTML::Entities::encode($env{'form.destsymb'},'"<>&');
                                         if ($env{'form.switchrole'}) {                                              $dest .= '?symb='.$esc_symb;
                                             if ($destsymb ne '') {  
                                                 if ($destsymb !~ m{^/enc/}) {  
                                                     unless ($env{'request.role.adv'}) {  
                                                         $checkenc = 1;  
                                                     }  
                                                 }  
                                             }  
                                             if ($dest =~ m{^/enc/}) {  
                                                 if ($env{'request.role.adv'}) {  
                                                     $dest = &Apache::lonenc::unencrypted($dest);  
                                                     if ($destsymb eq '') {  
                                                         ($destsymb) = ($dest =~ /(?:\?|\&)symb=([^\&]*)/);   
                                                         $destsymb = &unescape($destsymb);  
                                                     }  
                                                 }  
                                             } else {  
                                                 if ($destsymb eq '') {  
                                                     ($destsymb) = ($dest =~ /(?:\?|\&)symb=([^\&]+)/);  
                                                     $destsymb = &unescape($destsymb);  
                                                 }  
                                                 unless ($env{'request.role.adv'}) {  
                                                     $checkenc = 1;  
                                                 }  
                                             }  
                                             if (($checkenc) && ($destsymb ne '')) {  
                                                 my ($encstate,$unencsymb,$res);  
                                                 my $unencsymb = &Apache::lonnet::symbclean($destsymb);  
                                                 (undef,undef,$res) = &Apache::lonnet::decode_symb($unencsymb);  
                                                 &Apache::lonnet::symbverify($unencsymb,$res,\$encstate);  
                                                 if ($encstate) {  
                                                     if (($dest ne '') && ($dest !~ m{^/enc/})) {  
                                                         $dest=&Apache::lonenc::encrypted($dest);  
                                                     }  
                                                 }  
                                             }  
                                         }  
                                         unless (($dest =~ m{^/enc/}) || ($dest =~ /(\?|\&)symb=.+___\d+___.+/)) {   
                                             if (($destsymb ne '') && ($destsymb !~ m{^/enc/})) {  
                                                 my $esc_symb = &escape($destsymb);  
                                                 $dest .= '?symb='.$esc_symb;  
                                             }  
                                         }                                          }
                                         &redirect_user($r, &mt('Entering [_1]',                                          &redirect_user($r, &mt('Entering [_1]',
                                                        $env{'course.'.$courseid.'.description'}),                                                         $env{'course.'.$courseid.'.description'}),
Line 757  function rolesView (caller) { Line 702  function rolesView (caller) {
         document.rolechoice.display.value = caller;          document.rolechoice.display.value = caller;
     } else {      } else {
         if ((caller == 'doupdate') || (caller == 'requestauthor') ||          if ((caller == 'doupdate') || (caller == 'requestauthor') ||
             (caller == 'queued')) {              (caller == 'queued')) { 
             document.rolechoice.state.value = caller;              document.rolechoice.state.value = caller;
         }          }
     }      }
Line 841  ENDHEADER Line 786  ENDHEADER
             }              }
             if ($hotlist) {              if ($hotlist) {
                 $showresult .= $hotlist;                  $showresult .= $hotlist;
             }              } 
             $showresult .= '</div>';              $showresult .= '</div>';
             $r->print($showresult);              $r->print($showresult);
         } elsif ($env{'form.state'} eq 'queued') {          } elsif ($env{'form.state'} eq 'queued') {
Line 866  ENDHEADER Line 811  ENDHEADER
                       \%sortrole,\%roleclass,\%futureroles,\%timezones,$loncaparev);                        \%sortrole,\%roleclass,\%futureroles,\%timezones,$loncaparev);
     $refresh = $now;      $refresh = $now;
     &Apache::lonnet::appenv({'user.refresh.time'  => $refresh});      &Apache::lonnet::appenv({'user.refresh.time'  => $refresh});
     unless ($env{'user.adv'}) {      unless ($env{'user.adv'}) { 
         if ($countactive > 0) {          if ($countactive > 0) {
             my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');              my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
             my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&');               my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); 
Line 1662  sub adhoc_course_role { Line 1607  sub adhoc_course_role {
                 $setprivs = 1;                  $setprivs = 1;
             }              }
         }          }
         unless ($setprivs) {  
             if (!exists($env{'user.priv.'.$env{'form.switchrole'}.'./'})) {  
                 $setprivs = 1;  
             }  
         }  
         if ($setprivs) {          if ($setprivs) {
             if ($env{'form.switchrole'} =~ m-^(in|ta|ep|ad|st|cr)([\w/]*)\./\Q$cdom\E/\Q$cnum\E/?(\w*)$-) {              if ($env{'form.switchrole'} =~ m-^(in|ta|ep|ad|st|cr)([\w/]*)\./\Q$cdom\E/\Q$cnum\E/?(\w*)$-) {
                 my $role = $1;                  my $role = $1;
Line 1694  sub adhoc_course_role { Line 1634  sub adhoc_course_role {
                     $spec .= '/'.$usec;                      $spec .= '/'.$usec;
                     $area .= '/'.$usec;                      $area .= '/'.$usec;
                 }                  }
                 if ($role =~ /^cr/) {                  &Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,$area);
                     &Apache::lonnet::custom_roleprivs(\%newrole,$role,$cdom,$cnum,$spec,$area);  
                 } else {  
                     &Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,$area);  
                 }  
                 &Apache::lonnet::set_userprivs(\%userroles,\%newrole,\%newgroups);                  &Apache::lonnet::set_userprivs(\%userroles,\%newrole,\%newgroups);
                 my $adhocstart = $refresh-1;                  my $adhocstart = $refresh-1;
                 $userroles{'user.role.'.$spec} = $adhocstart.'.';                  $userroles{'user.role.'.$spec} = $adhocstart.'.';
Line 2585  sub get_roles_functions { Line 2521  sub get_roles_functions {
     if (($rolescount > 3) || ($env{'environment.recentroles'})) {      if (($rolescount > 3) || ($env{'environment.recentroles'})) {
         push(@links,['/adm/preferences?action=changerolespref&amp;returnurl=/adm/roles','role_hotlist-22x22',&mt('Hotlist')]);          push(@links,['/adm/preferences?action=changerolespref&amp;returnurl=/adm/roles','role_hotlist-22x22',&mt('Hotlist')]);
     }      }
       
     my $funcs = &Apache::lonhtmlcommon::start_funclist();      my $funcs = &Apache::lonhtmlcommon::start_funclist();
     foreach my $link (@links) {      foreach my $link (@links) {
         $funcs .= &Apache::lonhtmlcommon::add_item_funclist(          $funcs .= &Apache::lonhtmlcommon::add_item_funclist(
Line 2620  sub get_queued { Line 2556  sub get_queued {
             if (ref($history{'details'}) eq 'HASH') {              if (ref($history{'details'}) eq 'HASH') {
                 $description = $history{details}{'cdescr'};                  $description = $history{details}{'cdescr'};
             }              }
             @{$reqcrs{$reqtime}} = ($description,$showtype);              @{$reqcrs{$reqtime}} = ($description,$showtype); 
         }          }
     }      }
     my @sortedtimes = sort {$a <=> $b} (keys(%reqcrs));      my @sortedtimes = sort {$a <=> $b} (keys(%reqcrs));

Removed from v.1.269.2.5  
changed lines
  Added in v.1.274


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