Diff for /loncom/auth/lonroles.pm between versions 1.240.2.5 and 1.240.2.18

version 1.240.2.5, 2009/12/24 18:28:54 version 1.240.2.18, 2010/10/06 18:46:53
Line 138  use Apache::lonannounce; Line 138  use Apache::lonannounce;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonpageflip();  use Apache::lonpageflip();
 use Apache::lonnavdisplay();  use Apache::lonnavdisplay();
 use Apache::lonmainmenu();  use Apache::loncoursequeueadmin;
 use GDBM_File;  use GDBM_File;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
 use HTML::Entities;  use HTML::Entities;
Line 165  sub redirect_user { Line 165  sub redirect_user {
     my $start_page = &Apache::loncommon::start_page('Switching Role',undef,      my $start_page = &Apache::loncommon::start_page('Switching Role',undef,
                                                     {'redirect' => [1,$url],                                                      {'redirect' => [1,$url],
                                                      'bread_crumbs' => $brcrum,});                                                       'bread_crumbs' => $brcrum,});
       &Apache::lonhtmlcommon::clear_breadcrumbs();
     my $end_page   = &Apache::loncommon::end_page();      my $end_page   = &Apache::loncommon::end_page();
   
 # Note to style police:   # Note to style police: 
Line 453  ENDENTERKEY Line 454  ENDENTERKEY
                         &Apache::lonnet::appenv({'request.role.adv'=>$tadv});                          &Apache::lonnet::appenv({'request.role.adv'=>$tadv});
  my ($furl,$ferr)=   my ($furl,$ferr)=
     &Apache::lonuserstate::readmap($cdom.'/'.$cnum);      &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
                           if ($custommenu) {
                               unless (($ferr) || ($env{'form.switchrole'})) {
                                   &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 592  ENDENTERKEY
     return OK if $r->header_only;      return OK if $r->header_only;
   
     my ($crumbtext,$pagetitle,$recent,$show_course);      my ($crumbtext,$pagetitle,$recent,$show_course);
       $show_course=&Apache::loncommon::show_course();
     my $noscript='<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='<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 />';
     if ($custommenu) {      if ($custommenu) {
         my $start_page = &Apache::loncommon::start_page('Main Menu',undef,          my $brcrum = {'bread_crumbs' => 1};
                                                         {'bread_crumbs' => 1});          if ($env{'form.destinationurl'} eq '/adm/gci_info') {
               undef($brcrum); 
           }
           my $start_page = &Apache::loncommon::start_page('Main Menu',undef,$brcrum);
         $r->print(<<"ENDCUSTOM");          $r->print(<<"ENDCUSTOM");
 $start_page  $start_page
 <br />  <br />
Line 600  ENDCUSTOM Line 611  ENDCUSTOM
         $crumbtext = 'User Roles';          $crumbtext = 'User Roles';
         $pagetitle = 'My Roles';          $pagetitle = 'My Roles';
         $recent = &mt('Recent Roles');          $recent = &mt('Recent Roles');
         $show_course=&Apache::loncommon::show_course();          my $standby=&mt('Role selected. Please stand by.');
         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,},
                        ];
           my $args;
           if (($env{'user.domain'} eq 'gcitest') && (!$numdc)) {
               $args = {bread_crumbs        => $brcrum,
                        bread_crumbs_nomenu => 1};
           } else {
               $args = {bread_crumbs => $brcrum};
           }
           my $start_page=&Apache::loncommon::start_page($pagetitle,undef,$args);
         my $swinfo=&Apache::lonmenu::rawconfig();          my $swinfo=&Apache::lonmenu::rawconfig();
         my $start_page=&Apache::loncommon::start_page($pagetitle,undef,{bread_crumbs=>$brcrum});  
         my $standby=&mt('Role selected. Please stand by.');  
         $standby=~s/\n/\\n/g;          $standby=~s/\n/\\n/g;
         $r->print(<<ENDHEADER);          $r->print(<<ENDHEADER);
 $start_page  $start_page
Line 721  ENDHEADER Line 741  ENDHEADER
   
     $refresh = $now;      $refresh = $now;
     &Apache::lonnet::appenv({'user.refresh.time'  => $refresh});      &Apache::lonnet::appenv({'user.refresh.time'  => $refresh});
       if (!$countactive && !$countfuture) {
           if (&Apache::loncommon::new_roles_update()) {
               ($countactive,$countfuture,$inrole,$possiblerole) =
                   &gather_roles($then,$refresh,$now,$reinit,$nochoose,\%roletext,\%sortrole,
                                 \%roleclass,\%futureroles,\%timezones);
           }
       }
     if ($custommenu) {      if ($custommenu) {
         if ($env{'form.destinationurl'} eq '/adm/gci_info') {          if ($env{'form.destinationurl'} eq '/adm/gci_info') {
             $r->print(&gci_info_page()).              $r->print(&gci_info_page()).
             &Apache::loncommon::end_page();              &Apache::loncommon::end_page();
             return OK;              return OK;
         }          }
         my %courses = &Apache::loncommon::existing_gcitest_courses();          my %courses = &Apache::loncommon::existing_gcitest_courses('cc');
         $env{'browser.interface'}='faketextual';          $env{'browser.interface'}='faketextual';
         $env{'environment.remote'}='off';          $env{'environment.remote'}='off';
         my $numcourses = keys(%courses);          my $numcourses = keys(%courses);
         my $switcher;          my $switcher;
         if ($numcourses > 0) {          if ($numcourses > 0) {
             $switcher = &Apache::lonmainmenu::gcitest_switcher(%courses);              $switcher = &Apache::loncommon::gcitest_switcher('cc',%courses);
             my $current;              my $current;
             if ($env{'request.course.id'}) {              if ($env{'request.course.id'}) {
                 $current = 'cc./'.$env{'course.'.$env{'request.course.id'}.'.domain'}.                  $current = 'cc./'.$env{'course.'.$env{'request.course.id'}.'.domain'}.
                            '/'.$env{'course.'.$env{'request.course.id'}.'.num'};                             '/'.$env{'course.'.$env{'request.course.id'}.'.num'};
             }              }
             my $switcher_js = &Apache::lonmainmenu::gcitest_switcher_js($current,$numcourses);              my $switcher_js = &Apache::loncommon::gcitest_switcher_js($current,$numcourses);
             $r->print(<<"ENDSCRIPT");              $r->print(<<"ENDSCRIPT");
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
Line 751  ENDSCRIPT Line 778  ENDSCRIPT
         $r->print(&Apache::lonmenu::inlinemenu('gcicustom',$switcher).          $r->print(&Apache::lonmenu::inlinemenu('gcicustom',$switcher).
                   &Apache::loncommon::end_page());                    &Apache::loncommon::end_page());
         return OK;          return OK;
       } else {
           if ($env{'form.destinationurl'} eq '/adm/gci_info') {
               delete($env{'form.destinationurl'});
           }
     }      }
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
         $r->print('<p><label><input type="checkbox" name="showall"');          $r->print('<p><label><input type="checkbox" name="showall"');
Line 760  ENDSCRIPT Line 791  ENDSCRIPT
                  .'</p>');                   .'</p>');
     } else {      } else {
         if ($countactive > 0) {          if ($countactive > 0) {
             &queued_selfenrollment($r);              $r->print(&Apache::loncoursequeueadmin::queued_selfenrollment());
             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'},'"<>&'); 
             $r->print(              unless ($env{'user.domain'} eq 'gcitest') {
                 '<p>'                  $r->print(
                .&mt('[_1]Visit the [_2]Course/Community Catalog[_3]'                      '<p>'
                    .' to view all [_4] LON-CAPA courses and communities.'                     .&mt('[_1]Visit the [_2]Course/Community Catalog[_3]'
                    ,'<b>'                         .' to view all [_4] LON-CAPA courses and communities.'
                    ,'<a href="/adm/coursecatalog?showdom='.$esc_dom.'">'                         ,'<b>'
                    ,'</a></b>',$domdesc)                         ,'<a href="/adm/coursecatalog?showdom='.$esc_dom.'">'
                .'<br />'                         ,'</a></b>',$domdesc)
                .&mt('If a course or community is [_1]not[_2] in your list of current courses and communities below,'                     .'<br />'
                      .&mt('If a course or community is [_1]not[_2] in your list of current courses and communities below,'
                    .' you may be able to enroll if self-enrollment is permitted.'                     .' you may be able to enroll if self-enrollment is permitted.'
                    ,'<b>','</b>')                     ,'<b>','</b>')
                .'</p>'                     .'</p>'
             );                  );
               }
         }          }
     }      }
   
Line 784  ENDSCRIPT Line 817  ENDSCRIPT
  if ($inrole) {   if ($inrole) {
     $r->print('<h2>'.&mt('Currently no additional roles, courses or communities').'</h2>');      $r->print('<h2>'.&mt('Currently no additional roles, courses or communities').'</h2>');
  } else {   } else {
     $r->print('<h2>'.&mt('Currently no active roles, courses or communities').'</h2>');              if ($show_course) {
                   if ($env{'user.domain'} eq 'gcitest') {
                       $r->print('<h2>'.&mt('Currently no active Concept Tests').'</h2>');
                   } else { 
                       $r->print('<h2>'.&mt('Currently no active courses or communities').'</h2>');
                   }
               } else {
           $r->print('<h2>'.&mt('Currently no active roles, courses or communities').'</h2>');
               }
  }   }
         &findcourse_advice($r);          unless ($env{'user.domain'} eq 'gcitest') {
         &requestcourse_advice($r);               &findcourse_advice($r);
               &requestcourse_advice($r);
           }
  $r->print('</form>');   $r->print('</form>');
         if ($countfuture) {          if ($countfuture) {
             $r->print(&mt('The following [quant,_1,role,roles] will become active in the future:',$countfuture));              if ($show_course) {
                   if ($env{'user.domain'} eq 'gcitest') {
                       $r->print(&mt('The following [quant,_1,Concept Test] will be available in the future:',$countfuture));
                   } else {
                       $r->print(&mt('The following [quant,_1,course] will become active in the future:',$countfuture));
                   }
               } else {
                   $r->print(&mt('The following [quant,_1,role,roles] will become active in the future:',$countfuture));
               }
             my $doheaders = &roletable_headers($r,\%roleclass,\%sortrole,              my $doheaders = &roletable_headers($r,\%roleclass,\%sortrole,
                                                $nochoose);                                                 $nochoose);
             &print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,              &print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,
Line 839  ENDSCRIPT Line 890  ENDSCRIPT
         }          }
     }      }
 # ----------------------------------------------------------------------- Table  # ----------------------------------------------------------------------- Table
     unless ((!&Apache::loncommon::show_course()) || ($nochoose) || ($countactive==1)) {      unless ((!$show_course) || ($nochoose) || ($countactive==1)) {
  $r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n");   $r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n");
     }      }
     if ($env{'form.destinationurl'}) {      if ($env{'form.destinationurl'}) {
Line 947  sub gci_info_page { Line 998  sub gci_info_page {
 Use the tabs to navigate the WebCenter and...  Use the tabs to navigate the WebCenter and...
 <ul>  <ul>
 <li>Review and comment on existing GCI questions</li>  <li>Review and comment on existing GCI questions</li>
 <li>Submit a GCI question of your own</li>  <li>Submit GCI questions of your own</li>
 <li>Create an online test for your students</li>  <li>Create an online test for your students</li>
   <li>View tutorials on creating online tests</li>
 </ul>  </ul>
 </p>  </p>
 <p>For more information about writing and reviewing Concept Inventory questions  <p>For more information about writing and reviewing Concept Inventory questions
Line 1062  sub gather_roles { Line 1114  sub gather_roles {
                 } elsif ($trest) {                  } elsif ($trest) {
                     my $tcourseid=$tdom.'_'.$trest;                      my $tcourseid=$tdom.'_'.$trest;
                     $ttype = &Apache::loncommon::course_type($tcourseid);                      $ttype = &Apache::loncommon::course_type($tcourseid);
                     $trole = &Apache::lonnet::plaintext($role,$ttype);                      $trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid);
                     if ($env{'course.'.$tcourseid.'.description'}) {                      if ($env{'course.'.$tcourseid.'.description'}) {
                         $twhere=$env{'course.'.$tcourseid.'.description'};                          $twhere=$env{'course.'.$tcourseid.'.description'};
                         $sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey;                          $sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey;
Line 1081  sub gather_roles { Line 1133  sub gather_roles {
         &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom).          &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom).
                               '</span>';                                '</span>';
                             $ttype = $newhash{'type'};                              $ttype = $newhash{'type'};
                             $trole = &Apache::lonnet::plaintext($role,$ttype);                              $trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid);
                         } else {                          } else {
                             $twhere=&mt('Currently not available');                              $twhere=&mt('Currently not available');
                             $env{'course.'.$tcourseid.'.description'}=$twhere;                              $env{'course.'.$tcourseid.'.description'}=$twhere;
Line 1261  sub findcourse_advice { Line 1313  sub findcourse_advice {
     }      }
     $r->print('<h3>'.&mt('Self-Enrollment').'</h3>'.      $r->print('<h3>'.&mt('Self-Enrollment').'</h3>'.
               '<p>'.&mt('The [_1]Course/Community Catalog[_2] provides information about all [_3] classes for which LON-CAPA courses have been created, as well as any communities in the domain.','<a href="/adm/coursecatalog?showdom='.$esc_dom.'">','</a>',$domdesc).'<br />');                '<p>'.&mt('The [_1]Course/Community Catalog[_2] provides information about all [_3] classes for which LON-CAPA courses have been created, as well as any communities in the domain.','<a href="/adm/coursecatalog?showdom='.$esc_dom.'">','</a>',$domdesc).'<br />');
     $r->print(&mt('You can search for courses and communities which permit self-enrollment, if you would like to enroll in one.').'</p>');      $r->print(&mt('You can search for courses and communities which permit self-enrollment, if you would like to enroll in one.').'</p>'.
     &queued_selfenrollment($r);                &Apache::loncoursequeueadmin::queued_selfenrollment());
     return;      return;
 }  }
   
Line 1319  sub requestcourse_advice { Line 1371  sub requestcourse_advice {
     return;      return;
 }  }
   
 sub queued_selfenrollment {  
     my ($r) = @_;  
     my %selfenrollrequests = &Apache::lonnet::dump('selfenrollrequests');  
     my %reqs_by_date;  
     foreach my $item (keys(%selfenrollrequests)) {  
         if (ref($selfenrollrequests{$item}) eq 'HASH') {  
             if ($selfenrollrequests{$item}{'status'} eq 'request') {  
                 if ($selfenrollrequests{$item}{'timestamp'}) {  
                     push(@{$reqs_by_date{$selfenrollrequests{$item}{'timestamp'}}},$item);  
                 }  
             }   
         }  
     }  
     if (keys(%reqs_by_date)) {  
         my $rolename = &Apache::lonnet::plaintext('st');  
         $r->print('<b>'.&mt('Enrollment requests pending Course Coordinator approval').'</b><br />'.  
                   &Apache::loncommon::start_data_table().  
                   &Apache::loncommon::start_data_table_header_row().  
                   '<th>'.&mt('Date requested').'</th><th>'.&mt('Course title').'</th>'.  
                   '<th>'.&mt('User role').'</th><th>'.&mt('Section').'</th>'.  
                  &Apache::loncommon::end_data_table_header_row());  
         my @sorted = sort { $a <=> $b } (keys(%reqs_by_date));  
         foreach my $item (@sorted) {  
             if (ref($reqs_by_date{$item}) eq 'ARRAY') {  
                 foreach my $crs (@{$reqs_by_date{$item}}) {  
                     my %courseinfo = &Apache::lonnet::coursedescription($crs);  
                     my $usec = $selfenrollrequests{$crs}{'section'};  
                     if ($usec eq '') {  
                         $usec = &mt('No section');   
                     }  
                     $r->print(&Apache::loncommon::start_data_table_row().  
                              '<td>'.&Apache::lonlocal::locallocaltime($item).'</td>'.  
                              '<td>'.$courseinfo{'description'}.'</td>'.  
                              '<td>'.$rolename.'</td><td>'.$usec.'</td>'.  
                              &Apache::loncommon::end_data_table_row());  
                 }  
             }  
         }  
         $r->print(&Apache::loncommon::end_data_table());  
     }  
     return;  
 }  
   
 sub privileges_info {  sub privileges_info {
     my ($which) = @_;      my ($which) = @_;
     my $output;      my $output;
Line 1702  sub display_cc_role { Line 1711  sub display_cc_role {
                 $twhere=&mt('Currently not available');                  $twhere=&mt('Currently not available');
                 $env{'course.'.$tcourseid.'.description'}=$twhere;                  $env{'course.'.$tcourseid.'.description'}=$twhere;
             }              }
             my $trole = &Apache::lonnet::plaintext($ccrole,$ttype);              my $trole = &Apache::lonnet::plaintext($ccrole,$ttype,$tcourseid);
             $twhere.="<br />".&mt('Domain').":".$1;              $twhere.="<br />".&mt('Domain').":".$1;
             ($roletext,$roletext_end) = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$trole,$twhere,'','','',1,'');              ($roletext,$roletext_end) = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$trole,$twhere,'','','',1,'');
         }          }

Removed from v.1.240.2.5  
changed lines
  Added in v.1.240.2.18


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