Diff for /loncom/auth/lonroles.pm between versions 1.239 and 1.240.2.6

version 1.239, 2009/10/31 05:44:35 version 1.240.2.6, 2009/12/25 00:26:16
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 GDBM_File;  use GDBM_File;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
 use HTML::Entities;  use HTML::Entities;
Line 164  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 224  sub handler { Line 226  sub handler {
     my %dcroles = ();      my %dcroles = ();
     my $numdc = &check_fordc(\%dcroles,$then);      my $numdc = &check_fordc(\%dcroles,$then);
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
       my $custommenu = &Apache::loncommon::needs_gci_custom();
   
 # ================================================================== Roles Init  # ================================================================== Roles Init
     if ($env{'form.selectrole'}) {      if ($env{'form.selectrole'}) {
Line 255  sub handler { Line 258  sub handler {
 # Check if user is a DC trying to enter a course or author space and needs privs to be created  # Check if user is a DC trying to enter a course or author space and needs privs to be created
         if ($numdc > 0) {          if ($numdc > 0) {
             foreach my $envkey (keys %env) {              foreach my $envkey (keys %env) {
 # Is this an ad-hoc CC-role?  # Is this an ad-hoc Coordinator role?
                 if (my ($domain,$coursenum) =                  if (my ($ccrole,$domain,$coursenum) =
     ($envkey =~ m-^form\.cc\./($match_domain)/($match_courseid)$-)) {      ($envkey =~ m-^form\.(cc|co)\./($match_domain)/($match_courseid)$-)) {
                     if ($dcroles{$domain}) {                      if ($dcroles{$domain}) {
                         &Apache::lonnet::check_adhoc_privs($domain,$coursenum,                          &Apache::lonnet::check_adhoc_privs($domain,$coursenum,
                                                            $then,$refresh,$now,'cc');                                                             $then,$refresh,$now,$ccrole);
                     }                      }
                     last;                      last;
                 }                  }
Line 318  sub handler { Line 321  sub handler {
                 }                  }
             }              }
         }          }
           if (($env{'form.cm'}) && ($env{'form.orgurl'})) { 
               $r->internal_redirect($env{'form.orgurl'});
           }
         foreach $envkey (keys %env) {          foreach $envkey (keys %env) {
             next if ($envkey!~/^user\.role\./);              next if ($envkey!~/^user\.role\./);
             my ($where,$trolecode,$role,$tstatus,$tend,$tstart);              my ($where,$trolecode,$role,$tstatus,$tend,$tstart);
Line 445  ENDENTERKEY Line 450  ENDENTERKEY
   
     if (($cnum) && ($role ne 'ca') && ($role ne 'aa')) {      if (($cnum) && ($role ne 'ca') && ($role ne 'aa')) {
                         my $msg;                          my $msg;
                           if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }
                           &Apache::lonnet::appenv({'request.role.adv'=>$tadv});
  my ($furl,$ferr)=   my ($furl,$ferr)=
     &Apache::lonuserstate::readmap($cdom.'/'.$cnum);      &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
  if (($env{'form.orgurl'}) &&    if (($env{'form.orgurl'}) && 
Line 458  ENDENTERKEY Line 465  ENDENTERKEY
                                 }                                  }
                                 $dest .= 'symb='.$env{'form.symb'};                                  $dest .= 'symb='.$env{'form.symb'};
                             }                              }
     if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }  
     &Apache::lonnet::appenv({'request.role.adv'=>$tadv});  
                             if (($ferr) && ($tadv)) {                              if (($ferr) && ($tadv)) {
  &error_page($r,$ferr,$dest);   &error_page($r,$ferr,$dest);
     } else {      } else {
Line 478  ENDENTERKEY Line 483  ENDENTERKEY
                     .'<p>'.&mt('Please try again.').'</p>'                      .'<p>'.&mt('Please try again.').'</p>'
                     .'<p>'.$ferr.'</p>';                      .'<p>'.$ferr.'</p>';
     }      }
     if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }  
     &Apache::lonnet::appenv({'request.role.adv'=>$tadv});  
   
     if (($ferr) && ($tadv)) {      if (($ferr) && ($tadv)) {
  &error_page($r,$ferr,$furl);   &error_page($r,$ferr,$furl);
Line 491  ENDENTERKEY Line 494  ENDENTERKEY
     $courseid = substr($courseid, 1);      $courseid = substr($courseid, 1);
  }   }
  $courseid =~ s/\//_/;   $courseid =~ s/\//_/;
  if ($role eq 'cc' && $env{'course.' . $courseid .    if (($cdom ne 'gcitest') && (($role eq 'cc') || ($role eq 'co')) 
       '.course.helper.not.run'}) {                                      && ($env{'course.' . $courseid .'.course.helper.not.run'})) { 
     $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'}) {
Line 515  ENDENTERKEY Line 518  ENDENTERKEY
     .$env{'request.course.sec'})      .$env{'request.course.sec'})
  ) {   ) {
  my $startpage = &courseloadpage($courseid);   my $startpage = &courseloadpage($courseid);
  unless ($startpage eq 'firstres') {            unless (($startpage eq 'firstres') || ($cdom eq 'gcitest')) {
     $msg = &mt('Entering [_1] ...',      $msg = &mt('Entering [_1] ...',
        $env{'course.'.$courseid.'.description'});         $env{'course.'.$courseid.'.description'});
     &redirect_user($r,&mt('New in course'),      &redirect_user($r,&mt('New in course'),
Line 530  ENDENTERKEY Line 533  ENDENTERKEY
 # Guess not ...  # Guess not ...
     $furl=&Apache::lonpageflip::first_accessible_resource();      $furl=&Apache::lonpageflip::first_accessible_resource();
  }   }
                                   if (($cdom eq 'gcitest') && ($custommenu)) {
                                       $furl = '/adm/navmaps';
                                   }
                                 $msg = &mt('Entering [_1] ...',                                  $msg = &mt('Entering [_1] ...',
    $env{'course.'.$courseid.'.description'});     $env{'course.'.$courseid.'.description'});
  &redirect_user($r,&mt('Entering [_1]',   &redirect_user($r,&mt('Entering [_1]',
Line 572  ENDENTERKEY Line 578  ENDENTERKEY
         }          }
     }      }
   
   
 # =============================================================== No Roles Init  # =============================================================== No Roles Init
   
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
Line 580  ENDENTERKEY Line 585  ENDENTERKEY
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
     my $crumbtext = 'User Roles';      my ($crumbtext,$pagetitle,$recent,$show_course);
     my $pagetitle = 'My Roles';  
     my $recent = &mt('Recent Roles');  
     my $show_course=&Apache::loncommon::show_course();  
     if ($show_course) {  
         $crumbtext = 'Courses';  
         $pagetitle = 'My Courses';  
         $recent = &mt('Recent Courses');  
     }  
     my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}];  
     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;  
     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) {
     $r->print(<<ENDHEADER);          my $start_page = &Apache::loncommon::start_page('Main Menu',undef,
                                                           {'bread_crumbs' => 1});
           $r->print(<<"ENDCUSTOM");
   $start_page
   <br />
   <noscript>
   $noscript
   </noscript>
   ENDCUSTOM
       } else {
           $crumbtext = 'User Roles';
           $pagetitle = 'My Roles';
           $recent = &mt('Recent Roles');
           $show_course=&Apache::loncommon::show_course();
           if ($show_course) {
               $crumbtext = 'Courses';
               $pagetitle = 'My Courses';
               $recent = &mt('Recent Courses');
           }
           my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}];
           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;
           $r->print(<<ENDHEADER);
 $start_page  $start_page
 <br />  <br />
 <noscript>  <noscript>
Line 623  function enterrole (thisform,rolecode,bu Line 639  function enterrole (thisform,rolecode,bu
 // ]]>  // ]]>
 </script>  </script>
 ENDHEADER  ENDHEADER
       }
   
 # ------------------------------------------ Get Error Message from Environment  # ------------------------------------------ Get Error Message from Environment
   
Line 690  ENDHEADER Line 707  ENDHEADER
         if (($ENV{'REDIRECT_QUERY_STRING'}) && ($fn)) {          if (($ENV{'REDIRECT_QUERY_STRING'}) && ($fn)) {
        $fn.='?'.$ENV{'REDIRECT_QUERY_STRING'};         $fn.='?'.$ENV{'REDIRECT_QUERY_STRING'};
         }          }
         $r->print('<form method="post" name="rolechoice" action="'.(($fn)?$fn:$r->uri).'">');          unless ($custommenu) {
         $r->print('<input type="hidden" name="orgurl" value="'.$fn.'" />');              $r->print('<form method="post" name="rolechoice" action="'.(($fn)?$fn:$r->uri).'">');
         $r->print('<input type="hidden" name="selectrole" value="1" />');              $r->print('<input type="hidden" name="orgurl" value="'.$fn.'" />');
         $r->print('<input type="hidden" name="newrole" value="" />');              $r->print('<input type="hidden" name="selectrole" value="1" />');
               $r->print('<input type="hidden" name="newrole" value="" />');
           }
     }      }
   
     my (%roletext,%sortrole,%roleclass,%futureroles,%timezones);      my (%roletext,%sortrole,%roleclass,%futureroles,%timezones);
Line 703  ENDHEADER Line 722  ENDHEADER
   
     $refresh = $now;      $refresh = $now;
     &Apache::lonnet::appenv({'user.refresh.time'  => $refresh});      &Apache::lonnet::appenv({'user.refresh.time'  => $refresh});
       if ($custommenu) {
           if ($env{'form.destinationurl'} eq '/adm/gci_info') {
               $r->print(&gci_info_page()).
               &Apache::loncommon::end_page();
               return OK;
           }
           my %courses = &Apache::loncommon::existing_gcitest_courses();
           $env{'browser.interface'}='faketextual';
           $env{'environment.remote'}='off';
           my $numcourses = keys(%courses);
           my $switcher;
           if ($numcourses > 0) {
               $switcher = &Apache::lonmainmenu::gcitest_switcher(%courses);
               my $current;
               if ($env{'request.course.id'}) {
                   $current = 'cc./'.$env{'course.'.$env{'request.course.id'}.'.domain'}.
                              '/'.$env{'course.'.$env{'request.course.id'}.'.num'};
               }
               my $switcher_js = &Apache::lonmainmenu::gcitest_switcher_js($current,$numcourses);
               $r->print(<<"ENDSCRIPT");
   <script type="text/javascript">
   // <![CDATA[
   $switcher_js
   // ]]>
   </script>
   ENDSCRIPT
           }
           $r->print(&Apache::lonmenu::inlinemenu('gcicustom',$switcher).
                     &Apache::loncommon::end_page());
           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"');
         if ($env{'form.showall'}) { $r->print(' checked="checked" '); }          if ($env{'form.showall'}) { $r->print(' checked="checked" '); }
Line 767  ENDHEADER Line 821  ENDHEADER
         }          }
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
  return OK;   return OK;
       } elsif ($countactive==1) { # Is there only one choice?
           my $needs_switchserver;
           if ($env{'user.author'}) {
               $needs_switchserver = &check_needs_switchserver($possiblerole);
           }
           if ((!$needs_switchserver) && ($env{'request.role'} eq 'cm')) {
               $r->print('<h3>'.&mt('Please stand by.').'</h3>'.
                   '<input type="hidden" name="'.$possiblerole.'" value="1" />'.
               '<noscript><br /><input type="submit" name="submit" value="'.&mt('Continue').'" /></noscript>');
               $r->print("</form>\n");
               $r->rflush();
               $r->print('<script type="text/javascript">document.forms.rolechoice.submit();</script>');
               $r->print(&Apache::loncommon::end_page());
               return OK;
           }
           if ($needs_switchserver) {
               $r->print("<h2>".&mt('Server Switch Required')."</h2>\n".
                         &mt('Construction Space access is only available from '.
                             'the home server of the corresponding Author.').'<br />'.
                         &mt("Click the 'Switch Server' link to go there.").'<br />');
           }
     }      }
 # ----------------------------------------------------------------------- Table  # ----------------------------------------------------------------------- Table
     unless ((!&Apache::loncommon::show_course()) || ($nochoose) || ($countactive==1)) {      unless ((!&Apache::loncommon::show_course()) || ($nochoose) || ($countactive==1)) {
Line 870  ENDHEADER Line 945  ENDHEADER
     return OK;      return OK;
 }  }
   
   sub gci_info_page {
       return <<"END";
   <h2>Welcome to the Geoscience Concept Inventory WebCenter</h2>
   <p>
   Use the tabs to navigate the WebCenter and...
   <ul>
   <li>Review and comment on existing GCI questions</li>
   <li>Submit a GCI question of your own</li>
   <li>Create an online test for your students</li>
   </ul>
   </p>
   <p>For more information about writing and reviewing Concept Inventory questions
   please refer to the <a href="/res/gci/gci/internal/pdfs/GCIWorkbook.pdf">GCI Workbook</a>.
   
   END
   }
   
 sub gather_roles {  sub gather_roles {
     my ($then,$refresh,$now,$reinit,$nochoose,$roletext,$sortrole,$roleclass,$futureroles,$timezones) = @_;      my ($then,$refresh,$now,$reinit,$nochoose,$roletext,$sortrole,$roleclass,$futureroles,$timezones) = @_;
     my ($countactive,$countfuture,$inrole,$possiblerole) = (0,0,0,'');      my ($countactive,$countfuture,$inrole,$possiblerole) = (0,0,0,'');
Line 1597  sub display_cc_role { Line 1689  sub display_cc_role {
     my $advanced = $env{'user.adv'};      my $advanced = $env{'user.adv'};
     my $tryagain = $env{'form.tryagain'};      my $tryagain = $env{'form.tryagain'};
     unless ($rolekey =~/^error\:/) {      unless ($rolekey =~/^error\:/) {
         if ($rolekey =~ m-^user\.role.cc\./($match_domain)/($match_courseid)$-) {          if ($rolekey =~ m{^user\.role\.(cc|co)\./($match_domain)/($match_courseid)$}) {
             my $tcourseid = $1.'_'.$2;              my $ccrole = $1;
             my $trolecode = 'cc./'.$1.'/'.$2;              my $tcourseid = $2.'_'.$3;
               my $trolecode = $1.'./'.$2.'/'.$3;
             my $twhere;              my $twhere;
             my $ttype;              my $ttype;
             my $tbg='LC_roles_is';              my $tbg='LC_roles_is';
Line 1614  sub display_cc_role { Line 1707  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('cc',$ttype);              my $trole = &Apache::lonnet::plaintext($ccrole,$ttype);
             $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.239  
changed lines
  Added in v.1.240.2.6


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