Diff for /loncom/auth/lonroles.pm between versions 1.282 and 1.292

version 1.282, 2013/04/03 20:46:55 version 1.292, 2014/01/05 11:02:49
Line 139  use Apache::lonpageflip(); Line 139  use Apache::lonpageflip();
 use Apache::lonnavdisplay();  use Apache::lonnavdisplay();
 use Apache::loncoursequeueadmin;  use Apache::loncoursequeueadmin;
 use Apache::longroup;  use Apache::longroup;
   use Apache::lonrss;
 use GDBM_File;  use GDBM_File;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
 use HTML::Entities;  use HTML::Entities;
Line 310  sub handler { Line 311  sub handler {
                             my $trolecode = 'au./'.$domain.'/';                              my $trolecode = 'au./'.$domain.'/';
                             my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;                              my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;
                             $r->internal_redirect($switchserver);                              $r->internal_redirect($switchserver);
                               return OK;
                         }                          }
                         last;                          last;
                     }                      }
Line 321  sub handler { Line 323  sub handler {
                                 my $trolecode = 'ca./'.$domain.'/'.$user;                                  my $trolecode = 'ca./'.$domain.'/'.$user;
                                 my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;                                  my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;
                                 $r->internal_redirect($switchserver);                                  $r->internal_redirect($switchserver);
                                   return OK;
                             }                              }
                             last;                              last;
                         }                          }
Line 342  sub handler { Line 345  sub handler {
                                 my $switchserver = '/adm/switchserver?'                                  my $switchserver = '/adm/switchserver?'
                                                   .'otherserver='.$home.'&role='.$trolecode;                                                    .'otherserver='.$home.'&role='.$trolecode;
                                 $r->internal_redirect($switchserver);                                  $r->internal_redirect($switchserver);
                                   return OK;
                             }                              }
                         } else {                          } else {
                             delete($env{$envkey});                              delete($env{$envkey});
Line 518  ENDENTERKEY Line 522  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'}) ||                          unless ($ferr) {
                                 ($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) {                              unless (($env{'form.switchrole'}) || 
                             &Apache::lonnet::put('nohist_crslastlogin',                                      ($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) {
                                 {$env{'user.name'}.':'.$env{'user.domain'}.                                  &Apache::lonnet::put('nohist_crslastlogin',
                                 ':'.$csec.':'.$role => $now},$cdom,$cnum);                                      {$env{'user.name'}.':'.$env{'user.domain'}.
                                        ':'.$csec.':'.$role => $now},$cdom,$cnum);
                               }
                               my ($feeds,$syllabus_time);
                               &Apache::lonrss::advertisefeeds($cnum,$cdom,undef,\$feeds);
                               &Apache::lonnet::appenv({'request.course.feeds' => $feeds});
                               &Apache::lonnet::get_numsuppfiles($cnum,$cdom,1);
                               unless ($env{'course.'.$cdom.'_'.$cnum.'.updatedsyllabus'}) {
                                   unless (($env{'course.'.$cdom.'_'.$cnum.'.externalsyllabus'}) ||
                                           ($env{'course.'.$cdom.'_'.$cnum.'.uploadedsyllabus'})) {
                                       my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum);
                                       $syllabus_time = $syllabus{'uploaded.lastmodified'};
                                       if ($syllabus_time) {
                                           &Apache::lonnet::appenv({'request.course.syllabustime' => $syllabus_time});
                                       }
                                   }
                               }
                         }                          }
  if (($env{'form.orgurl'}) &&    if (($env{'form.orgurl'}) && 
     ($env{'form.orgurl'}!~/^\/adm\/flip/)) {      ($env{'form.orgurl'}!~/^\/adm\/flip/) &&
       ($env{'form.orgurl'} ne '/adm/roles')) {
     my $dest=$env{'form.orgurl'};      my $dest=$env{'form.orgurl'};
                             if ($env{'form.symb'}) {                              if ($env{'form.symb'}) {
                                 if ($dest =~ /\?/) {                                  if ($dest =~ /\?/) {
                                     $dest .= '&';                                      $dest .= '&';
                                 } else {                                  } else {
                                     $dest .= '?'                                      $dest .= '?';
                                 }                                  }
                                 $dest .= 'symb='.$env{'form.symb'};                                  $dest .= 'symb='.$env{'form.symb'};
                             }                              }
Line 672  ENDENTERKEY Line 693  ENDENTERKEY
                             $redirect_url .= $where;                              $redirect_url .= $where;
                         }                          }
                         $redirect_url .= '/';                          $redirect_url .= '/';
                         &redirect_user($r,&mt('Entering Construction Space'),                          &redirect_user($r,&mt('Entering Authoring Space'),
                                        $redirect_url);                                         $redirect_url);
                         return OK;                          return OK;
                     }                      }
Line 704  ENDENTERKEY Line 725  ENDENTERKEY
     my $crumbtext = 'User Roles';      my $crumbtext = 'User Roles';
     my $pagetitle = 'My Roles';      my $pagetitle = 'My Roles';
     my $recent = &mt('Recent Roles');      my $recent = &mt('Recent Roles');
       my $standby = &mt('Role selected. Please stand by.');
     my $show_course=&Apache::loncommon::show_course();      my $show_course=&Apache::loncommon::show_course();
     if ($show_course) {      if ($show_course) {
         $crumbtext = 'Courses';          $crumbtext = 'Courses';
         $pagetitle = 'My Courses';          $pagetitle = 'My Courses';
         $recent = &mt('Recent Courses');          $recent = &mt('Recent Courses');
           $standby = &mt('Course selected. Please stand by.'); 
     }      }
     my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}];      my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}];
   
Line 718  ENDENTERKEY Line 741  ENDENTERKEY
     my $swinfo=&Apache::lonmenu::rawconfig();      my $swinfo=&Apache::lonmenu::rawconfig();
     my $start_page=&Apache::loncommon::start_page($pagetitle,undef,{bread_crumbs=>$brcrum});      my $start_page=&Apache::loncommon::start_page($pagetitle,undef,{bread_crumbs=>$brcrum});
     my $funcs = &get_roles_functions($showcount);      my $funcs = &get_roles_functions($showcount);
     my $standby=&mt('Role selected. Please stand by.');  
     $standby=~s/\n/\\n/g;      $standby=~s/\n/\\n/g;
     my $noscript='<br /><span class="LC_error">'.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'<br />'.&mt('As this is not the case, most functionality in the system will be unavailable.').'</span><br />';      my $noscript='<br /><span class="LC_error">'.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'<br />'.&mt('As this is not the case, most functionality in the system will be unavailable.').'</span><br />';
   
Line 1136  sub gather_roles { Line 1158  sub gather_roles {
                     }                      }
                     #next if ($home eq 'no_host');                      #next if ($home eq 'no_host');
                     $home = &Apache::lonnet::hostname($home);                      $home = &Apache::lonnet::hostname($home);
                     $ttype='Construction Space';                      $ttype='Authoring Space';
                     $twhere=&mt('User').': '.$trest.'<br />'.&mt('Domain').                      $twhere=&mt('User').': '.$trest.'<br />'.&mt('Domain').
                         ': '.$tdom.'<br />'.                          ': '.$tdom.'<br />'.
                         ' '.&mt('Server').':&nbsp;'.$home;                          ' '.&mt('Server').':&nbsp;'.$home;
Line 1155  sub gather_roles { Line 1177  sub gather_roles {
                     }                      }
                     #next if ($home eq 'no_host');                      #next if ($home eq 'no_host');
                     $home = &Apache::lonnet::hostname($home);                      $home = &Apache::lonnet::hostname($home);
                     $ttype='Construction Space';                      $ttype='Authoring Space';
                     $twhere=&mt('Domain').': '.$tdom.'<br />'.&mt('Server').                      $twhere=&mt('Domain').': '.$tdom.'<br />'.&mt('Server').
                         ':&nbsp;'.$home;                          ':&nbsp;'.$home;
                     $env{'course.'.$tdom.'_'.$trest.'.description'}='ca';                      $env{'course.'.$tdom.'_'.$trest.'.description'}='ca';
Line 1328  sub roletable_headers { Line 1350  sub roletable_headers {
 }  }
   
 sub roletypes {  sub roletypes {
     my @types = ('Domain','Construction Space','Course','Community','Unavailable','System');      my @types = ('Domain','Authoring Space','Course','Community','Unavailable','System');
     return @types;       return @types; 
 }  }
   
Line 1467  sub privileges_info { Line 1489  sub privileges_info {
  my (undef,$tdom,$trest,$tsec)=split(m{/},$where);   my (undef,$tdom,$trest,$tsec)=split(m{/},$where);
  if ($trest) {   if ($trest) {
     if ($env{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') {      if ($env{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') {
  $ttype='Construction Space';   $ttype='Authoring Space';
  $twhere='User: '.$trest.', Domain: '.$tdom;   $twhere='User: '.$trest.', Domain: '.$tdom;
     } else {      } else {
  $ttype= &Apache::loncommon::course_type($tdom.'_'.$trest);   $ttype= &Apache::loncommon::course_type($tdom.'_'.$trest);
Line 2421  sub update_session_roles { Line 2443  sub update_session_roles {
                                 &unescape($groupinfo{'description'});                                  &unescape($groupinfo{'description'});
                         }                          }
                         $groupdesc = $groupdescs{$cdom.'_'.$cnum}{$group};                          $groupdesc = $groupdescs{$cdom.'_'.$cnum}{$group};
                         $groupmsg .= '<li>'.                          if ($groupdesc) {
                                      &mt('[_1] with status: [_2].',                              $groupmsg .= '<li>'.
                                      '<b>'.$groupdesc.'</b>',$newgroup{$item}).'</li>';                                           &mt('[_1] with status: [_2].',
                                            '<b>'.$groupdesc.'</b>',$newgroup{$item}).'</li>';
                           }
                     }                      }
                 }                  }
                 if ($groupmsg) {                  if ($groupmsg) {
Line 2437  sub update_session_roles { Line 2461  sub update_session_roles {
             }              }
         }          }
         if (keys(%newrole) > 0) {          if (keys(%newrole) > 0) {
             $changemsg .= '<li>'.&mt('New roles').              my $newmsg;
                           '<ul>';  
             foreach my $item (sort(keys(%newrole))) {              foreach my $item (sort(keys(%newrole))) {
                 my $desc = &role_desc($item,$update,$refresh,$now);                  my $desc = &role_desc($item,$update,$refresh,$now);
                 $changemsg .= '<li>'.                  if ($desc) {
                               &mt('[_1] with status: [_2].',                      $newmsg .= '<li>'.
                               $desc,$newrole{$item}).'</li>';                                 &mt('[_1] with status: [_2].',
                                  $desc,$newrole{$item}).'</li>';
                   }
               }
               if ($newmsg) {
                   $changemsg .= '<li>'.&mt('New roles').
                                 '<ul>'.$newmsg.'</ul>'.
                                 '</li>';
             }              }
             $changemsg .= '</ul></li>';  
         }          }
         if (keys(%customprivchg) > 0) {          if (keys(%customprivchg) > 0) {
             $changemsg .= '<li>'.              my $privmsg;
                           &mt('Custom roles with privilege changes').  
                           '<ul>';  
             foreach my $item (sort(keys(%customprivchg))) {              foreach my $item (sort(keys(%customprivchg))) {
                 my $desc = &role_desc($item,$update,$refresh,$now);                  my $desc = &role_desc($item,$update,$refresh,$now);
                 $changemsg .= '<li>'.$desc.'</li>';                  if ($desc) {
                       $privmsg .= '<li>'.$desc.'</li>';
                   }
             }              }
             $changemsg .= '</ul></li>';              if ($privmsg) {
                   $changemsg .= '<li>'.
                                 &mt('Custom roles with privilege changes').
                                 '<ul>'.$privmsg.'</ul>'.
                                 '</li>';
                }
         }          }
         if (keys(%rolechange) > 0) {          if (keys(%rolechange) > 0) {
             $changemsg .= '<li>'.              my $rolemsg;
                           &mt('Existing roles with status changes').'</li>'.  
                           '<ul>';  
             foreach my $item (sort(keys(%rolechange))) {              foreach my $item (sort(keys(%rolechange))) {
                 my $desc = &role_desc($item,$update,$refresh,$now);                    my $desc = &role_desc($item,$update,$refresh,$now);  
                   if ($desc) {
                       $rolemsg .= '<li>'.
                                   &mt('[_1] status now: [_2].',$desc,
                                   $rolechange{$item}).'</li>';
                   }
               }
               if ($rolemsg) {
                 $changemsg .= '<li>'.                  $changemsg .= '<li>'.
                               &mt('[_1] status now: [_2].',$desc,                                &mt('Existing roles with status changes').'</li>'.
                               $rolechange{$item}).'</li>';                                '<ul>'.$rolemsg.'</ul>'.
                                 '</li>';
             }              }
             $changemsg .= '</ul></li>';  
         }          }
         if (keys(%deletedroles) > 0) {          if (keys(%deletedroles) > 0) {
             $changemsg .= '<li>'.              my $delmsg;
                           &mt('Existing roles now expired').'</li>'.  
                           '<ul>';  
             foreach my $item (sort(keys(%deletedroles))) {              foreach my $item (sort(keys(%deletedroles))) {
                 my $desc = &role_desc($item,$update,$refresh,$now);                  my $desc = &role_desc($item,$update,$refresh,$now);
                 $changemsg .= '<li>'.$desc.'</li>';                  if ($desc) {
                       $delmsg .= '<li>'.$desc.'</li>';
                   }
               }
               if ($delmsg) {
                   $changemsg .= '<li>'.
                                 &mt('Existing roles now expired').'</li>'.
                                 '<ul>'.$delmsg.'</ul>'.
                                 '</li>';
             }              }
             $changemsg .= '</ul></li>';  
         }          }
     }      }
     if ((keys(%changed_groups) > 0) || (keys(%groupchange) > 0)) {      if ((keys(%changed_groups) > 0) || (keys(%groupchange) > 0)) {
Line 2537  sub update_session_roles { Line 2581  sub update_session_roles {
     }      }
     if ($changemsg) {      if ($changemsg) {
         $msg .= '<ul>'.$changemsg.'</ul>';          $msg .= '<ul>'.$changemsg.'</ul>';
       } else {
           if (&Apache::loncommon::show_course()) {
               $msg = &mt('No new courses or communities');
           } else {
               $msg = &mt('No role changes');
           }
     }      }
     return $msg;      return $msg;
 }  }
Line 2548  sub role_desc { Line 2598  sub role_desc {
     &Apache::lonnet::role_status('user.role.'.$item,$update,$refresh,      &Apache::lonnet::role_status('user.role.'.$item,$update,$refresh,
                                  $now,\$role,\$where,\$trolecode,                                   $now,\$role,\$where,\$trolecode,
                                  \$tstatus,\$tstart,\$tend);                                   \$tstatus,\$tstart,\$tend);
       return unless ($role);
     if ($role =~ /^cr\//) {      if ($role =~ /^cr\//) {
         my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role);          my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role);
         $tremark = &mt('Customrole defined by [_1].',$rauthor.':'.$rdomain);          $tremark = &mt('Customrole defined by [_1].',$rauthor.':'.$rdomain);
Line 2589  sub role_desc { Line 2640  sub role_desc {
     } elsif ($tdom) {      } elsif ($tdom) {
         $twhere = &mt('Domain').':&nbsp;'.$tdom;          $twhere = &mt('Domain').':&nbsp;'.$tdom;
     }      }
     my $output = "$trole -- $twhere";      my $output;
     if ($tremark) {      if ($trole) {
         $output .= '<br />'.$tremark;          $output = $trole;
           if ($twhere) {
               $output .= " -- $twhere";
           }
           if ($tremark) {
               $output .= '<br />'.$tremark;
           }
     }      }
     return $output;      return $output;
 }  }
Line 2677  sub get_roles_functions { Line 2734  sub get_roles_functions {
     }      }
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
         if ($env{'form.display'} eq 'showall') {          if ($env{'form.display'} eq 'showall') {
             push(@links,["javascript:rolesView('noshowall');",'edit-redo-22x22',&mt('Exclude expired roles')]);              push(@links,["javascript:rolesView('noshowall');",'edit-redo-22x22',&mt('Exclude expired')]);
         } else {          } else {
             push(@links,["javascript:rolesView('showall');",'edit-undo-22x22',&mt('Include expired roles')]);              push(@links,["javascript:rolesView('showall');",'edit-undo-22x22',&mt('Include expired')]);
         }          }
     }      }
       if (&Apache::loncommon::designparm('login.coursecatalog',$env{'user.domain'})) {
           push(@links,['/adm/coursecatalog','ccat-22x22',&mt('Course catalog')]);
       }
     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(

Removed from v.1.282  
changed lines
  Added in v.1.292


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