Diff for /loncom/auth/lonroles.pm between versions 1.106 and 1.109

version 1.106, 2004/11/11 22:18:23 version 1.109, 2004/11/12 23:29:55
Line 82  sub handler { Line 82  sub handler {
     my $now=time;      my $now=time;
     my $then=$ENV{'user.login.time'};      my $then=$ENV{'user.login.time'};
     my $envkey;      my $envkey;
     my $dcselect='';      my %dcroles = ();
       my $numdc = &check_fordc(\%dcroles,$then);
   
 # ================================================================== Roles Init  # ================================================================== Roles Init
     if ($ENV{'form.selectrole'}) {      if ($ENV{'form.selectrole'}) {
         if ($ENV{'form.dcselected'}) {  
             my $dcdom = $ENV{'form.dcselected'};  
             my $dckey = 'user.role.dc./'.$dcdom.'/';  
             if ($ENV{$dckey}) {  
                 my ($dcstart,$dcend)=split(/\./,$ENV{$dckey});  
                 my $active_dc = 1;  
                 if ($dcstart) {  
                     if ($dcstart>$then) {  
                         $active_dc = 0;  
                     }  
                 }  
                 if ($dcend) {  
                     if ($dcend < $then) {  
                         $active_dc = 0;  
                     }  
                 }  
                 if ($active_dc) {  
                     $dcselect = $dcdom;  
                 }  
             }  
         }  
  if ($ENV{'request.course.id'}) {   if ($ENV{'request.course.id'}) {
     my %temp=('logout_'.$ENV{'request.course.id'} => time);      my %temp=('logout_'.$ENV{'request.course.id'} => time);
     &Apache::lonnet::put('email_status',\%temp);      &Apache::lonnet::put('email_status',\%temp);
Line 121  sub handler { Line 100  sub handler {
                                 "request.role.adv"    => $ENV{'user.adv'},                                  "request.role.adv"    => $ENV{'user.adv'},
  "request.role.domain" => $ENV{'user.domain'});   "request.role.domain" => $ENV{'user.domain'});
   
 # Check to see if the user is a DC trying to enter a course                              # Check to see if the user is a DC trying to enter a course and needs privs to be created
 # course selection page          if ($numdc > 0) {
         my $dcflag = 0;              foreach my $envkey (keys %ENV) {
         if ($ENV{'form.dccourse'}) {                  if ($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-) {
             my $dcdom = $ENV{'form.dcdomain'};                      if ($dcroles{$1}) {
             my $pickedcourse = $ENV{'form.dccourse'};                          my $cckey = 'user.role.cc./'.$1.'/'.$2;
             if ($dcdom && $pickedcourse) {                          if ($ENV{$cckey}) {
                 unless ($ENV{'user.role.cc./'.$dcdom.'/'.$pickedcourse}) {                              my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont);
                     if ($ENV{'user.role.dc./'.$dcdom.'/'}) {                              &role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend);
                         &set_privileges($dcdom,$pickedcourse);                              unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) {
                         my $msg=&mt('Entering course ...');                                  &set_privileges($1,$2);
                         my ($furl,$ferr)=&Apache::lonuserstate::readmap($dcdom.'/'.$pickedcourse);                              }
                         my $formaction = '/adm/roles/';                          } else {
                         my $courseid = $dcdom.'_'.$pickedcourse;                              &set_privileges($1,$2);
                         &Apache::lonhtmlcommon::store_recent('cc_pickby_dc_'.$dcdom,                          }
                             $courseid,$formaction);  
                         # Send the user to the course they selected  
                         &redirect_user($r,&mt('Entering Course'),  
                                 $furl,$msg,  
                                 $ENV{'environment.remotenavmap'});  
                         return OK;  
                     }                      }
                       last;
                 }                  }
             }              }
         }          }
Line 289  ENDENTERKEY Line 263  ENDENTERKEY
   '.course.helper.not.run'}) {    '.course.helper.not.run'}) {
  $furl = "/adm/helper/course.initialization.helper";   $furl = "/adm/helper/course.initialization.helper";
     }      }
                             # Check to see if the user is a DC coming from the                              # Check to see if the user is a DC selecting a course
                             # course selection page                              if (($numdc > 0) && ($role eq 'cc')) {
                             my $dcflag = 0;  
                             if ($ENV{'form.dccourse'}) {  
                                 my $formaction = '/adm/roles/';                                  my $formaction = '/adm/roles/';
                                 my ($dcdom,$pickedcourse) = split/_/,$courseid;                                  my ($dcdom,$pickedcourse) = split/_/,$courseid;
                                 if ($ENV{'user.role.dc./'.$dcdom.'/'}) {                                  if ($ENV{'user.role.dc./'.$dcdom.'/'}) {
                                     &Apache::lonhtmlcommon::store_recent('cc_pickby_dc_'.$dcdom,                                      &Apache::lonhtmlcommon::store_recent('recent_roles',
                                     $courseid,$formaction);                                      $courseid,$formaction);
                                 }                                  }
                             }                              }
Line 324  ENDENTERKEY Line 296  ENDENTERKEY
                         return OK;                          return OK;
                     }                      }
                     if ($role eq 'dc') {                      if ($role eq 'dc') {
                         unless ($dcselect) {                          my $redirect_url = '/adm/menu/';
                             my $redirect_url = '/adm/menu/';                          &redirect_user($r,&mt('Loading Domain Coordinator Menu'),
                             &redirect_user($r,&mt('Loading Domain Coordinator Menu'),  
                                        $redirect_url);                                         $redirect_url);
                             return OK;                          return OK;
                         }  
                     }                      }
  }   }
             }              }
Line 345  ENDENTERKEY Line 315  ENDENTERKEY
     return OK if $r->header_only;      return OK if $r->header_only;
   
     my $swinfo=&Apache::lonmenu::rawconfig();      my $swinfo=&Apache::lonmenu::rawconfig();
     my $setDCchoice = &dc_script();  
     my $bodytag=&Apache::loncommon::bodytag('User Roles');      my $bodytag=&Apache::loncommon::bodytag('User Roles');
     my $helptag='<table><tr><td>'.&Apache::loncommon::help_open_menu('','General Intro','General_Intro','User Roles',1,undef,undef,undef,undef,,&mt("Click here for help")).'</td></td></tr></table>';      my $helptag='<table><tr><td>'.&Apache::loncommon::help_open_menu('','General Intro','General_Intro','User Roles',1,undef,undef,undef,undef,,&mt("Click here for help")).'</td></td></tr></table>';
     $r->print(<<ENDHEADER);      $r->print(<<ENDHEADER);
Line 358  $helptag<br /> Line 327  $helptag<br />
 <script>  <script>
 $swinfo  $swinfo
 window.focus();  window.focus();
 $setDCchoice  
 </script>  </script>
 ENDHEADER  ENDHEADER
   
Line 377  ENDHEADER Line 345  ENDHEADER
     my $tryagain=$ENV{'form.tryagain'};      my $tryagain=$ENV{'form.tryagain'};
   
 # -------------------------------------------------------- Generate Page Output  # -------------------------------------------------------- Generate Page Output
 # -------------------------------------------------------- Domain Coordinator?   
     if ($dcselect ne '') {  
         &choosecourse_display($r,$dcselect,$then,$now);  
         return OK;  
     }  
   
 # --------------------------------------------------------------- Error Header?  # --------------------------------------------------------------- Error Header?
     if ($error) {      if ($error) {
  $r->print("<h1>LON-CAPA Access Control</h1>");   $r->print("<h1>LON-CAPA Access Control</h1>");
Line 435  ENDHEADER Line 397  ENDHEADER
  $r->print('><input type=submit value="'.&mt('Display').'">');   $r->print('><input type=submit value="'.&mt('Display').'">');
     }      }
   
     my %dcroles = ();  
     my $numdc = &check_fordc(\%dcroles,$then);  
   
     my (%roletext,%sortrole,%roleclass);      my (%roletext,%sortrole,%roleclass);
     my $countactive=0;      my $countactive=0;
     my $inrole=0;      my $inrole=0;
Line 673  ENDHEADER Line 632  ENDHEADER
  if ($haverole) { $doheaders++; }   if ($haverole) { $doheaders++; }
     }      }
     if ($numdc > 0) {      if ($numdc > 0) {
          $r->print('<tr bgcolor="#BBffBB">'.          &select_recent_courses($r,\%roletext);
                       '<td align="center" colspan="7">'.      }
                       '<input type="hidden" name="all_cc_roles" value="1"/>'.      foreach my $type ('Construction Space','Course','Domain','System') {
                       '<input type="hidden" name="dcselected" value=""/>'.   my $output;
                       &mt('Domain').'</td>');   foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {
          foreach my $dcdom (keys %dcroles) {      if ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/) { 
              my $output = $roletext{$dcroles{$dcdom}};   $output.=$roletext{$sortrole{$which}};
              my $ccrole = Apache::lonnet::plaintext('cc');                  if ($sortrole{$which} =~ m-dc\./(\w+)/-) {
              if ($ENV{'request.role'} =~ m-cc\./$dcdom/-) {                      if ($dcroles{$1}) {
                  $output.=$roletext{'user.role.'.$ENV{'request.role'}};                          $output .= &allcourses_row($1);
              }  
              $r->print($output);  
              $r->print('<tr bgcolor="#77FF77">');  
              $r->print('<td><input type="button" value="'.  
                       &mt('Select').'" name="dcpick_'.$dcdom.'/" '.  
                       'onClick="setDCchoice('."'$dcdom'".')"></td>'.  
                       '<td><font color="#002200">'.  
                       $ccrole.'</font></td><td>'.&mt('Course').'</td>'.  
                       '<td><font color="#002200"><b>'.&mt('All courses').'</b>'.  
                       '<br />'.&mt('Domain').':'.$dcdom.'</font>'.  
                       '<td colspan="4"><font color="#002200">'.  
                       &mt('Course Coordinator access to all courses in domain').  
                       ': <b>'.$dcdom.'</b></font></td></tr>'."\n");  
          }  
          foreach my $type ('Construction Space','Course','Domain','System') {  
              my $output;  
              foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {  
                 my $skiprole = 0;  
                 foreach my $dcdom (keys %dcroles) {  
                     if ($sortrole{$which} =~ m-(dc)\./$dcdom/-) {  
                         $skiprole = 1;  
                         last;  
                     }                      }
                 }                  }
                 if (($roleclass{$sortrole{$which}} =~ /^\Q$type\E/) && (!$skiprole)) {  
                     $output.=$roletext{$sortrole{$which}};  
                 }  
             }  
             if ($output) {  
                 if ($doheaders > 0) {  
                     $r->print("<tr bgcolor='#BBffBB'>".  
                           "<td align='center' colspan='7'>".&mt($type)."</td>  
 ");  
                 }  
                 $r->print($output);  
             }  
         }  
     } else {  
         foreach my $type ('Construction Space','Course','Domain','System') {  
     my $output;  
     foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {  
         if ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/) {   
     $output.=$roletext{$sortrole{$which}};  
         }  
     }      }
     if ($output) {   }
         if ($doheaders > 0) {   if ($output) {
     $r->print("<tr bgcolor='#BBffBB'>".      if ($doheaders > 0) {
       "<td align='center' colspan='7'>".&mt($type)."</td>");   $r->print("<tr bgcolor='#BBffBB'>".
         }    "<td align='center' colspan='7'>".&mt($type)."</td>");
         $r->print($output);  
     }      }
         }      $r->print($output);
    }
     }      }
     my $tremark='';      my $tremark='';
     my $tfont='#003300';      my $tfont='#003300';
Line 851  sub role_status { Line 768  sub role_status {
     }      }
 }  }
   
 sub dc_script {  
     my $response = (<<"END");  
 function setDCchoice(caller) {  
     var dcname = "dc./"+caller+"/"  
     document.rolechoice.dcselected.value = caller  
     document.rolechoice.elements[3].name = dcname  
     document.rolechoice.submit()  
 }  
 END  
     return $response;  
 }  
                                                                                    
 sub check_fordc {  sub check_fordc {
     my ($dcroles,$then) = @_;      my ($dcroles,$then) = @_;
     my $numdc = 0;      my $numdc = 0;
Line 884  sub check_fordc { Line 789  sub check_fordc {
     return $numdc;      return $numdc;
 }  }
   
 sub choosecourse_display {  sub courselink {
     my ($r,$dcdom,$then,$now) = @_;      my ($dcdom) = @_;
     my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'dom');      my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,$dcdom);
       my $verify_script = &coursepick_jscript($dcdom);
       my $courseform=&Apache::loncommon::selectcourse_link
                        ('rolechoice','dccourse_'.$dcdom,'dcdomain_'.$dcdom,'coursedesc_'.$dcdom);
       my $hiddenitems = '<input type="hidden" name="dcdomain_'.$dcdom.'" value="'.$dcdom.'" />'.
                         '<input type="hidden" name="origdom_'.$dcdom.'" value="'.$dcdom.'" />'.
                         '<input type="hidden" name="dccourse_'.$dcdom.'" value="" />'.
                         '<input type="hidden" name="coursedesc_'.$dcdom.'" value="" />';
       return $cb_jscript.$verify_script.$courseform.$hiddenitems;
   }
   
   sub coursepick_jscript {
       my ($dcdom) = @_;
     my $verify_script = <<"END";      my $verify_script = <<"END";
 <script>  <script>
 function verifyCoursePick() {  function verifyCoursePick(caller) {
     var pickedCourse = document.roles.dccourse.value      var numbutton = getIndex(caller)
     var pickedDomain = document.roles.dcdomain.value      var pickedCourse = document.rolechoice.dccourse_$dcdom.value
     if (document.roles.dcdomain.value == document.roles.origdom.value) {      var pickedDomain = document.rolechoice.dcdomain_$dcdom.value
       if (document.rolechoice.dcdomain_$dcdom.value == document.rolechoice.origdom_$dcdom.value) {
         if (pickedCourse != '') {          if (pickedCourse != '') {
             var courseTarget = "cc./"+pickedDomain+"/"+pickedCourse              if (numbutton != -1) {
             document.roles.elements[0].value = 1                  var courseTarget = "cc./"+pickedDomain+"/"+pickedCourse
             document.roles.elements[0].name = courseTarget                  document.rolechoice.elements[numbutton+1].name = courseTarget
             document.roles.selectrole.value = 1                  document.rolechoice.submit()
             document.roles.submit()              }
         }          }
         else {          else {
             alert("You must use the 'Select Course' link to open a separate pick course window which you can use to select the course you wish to enter");              alert("You must use the 'Select Course' link to open a separate pick course window which you can use to select the course you wish to enter");
Line 908  function verifyCoursePick() { Line 826  function verifyCoursePick() {
         alert("You can only use this screen to select courses in the current domain")          alert("You can only use this screen to select courses in the current domain")
     }      }
 }  }
   function getIndex(caller) {
       for (var i=0;i<document.rolechoice.elements.length;i++) {
           if (document.rolechoice.elements[i] == caller) {
               return i;
           }
       }
       return -1;
   }
 </script>  </script>
 END  END
     my $courseform=&Apache::loncommon::selectcourse_link      return $verify_script;
                      ('roles','dccourse','dcdomain','coursedesc');  }
     $r->print($cb_jscript.$verify_script);  
     my $formaction='/adm/roles';  sub processpick {
     $formaction=~s/\/+/\//g;      my $dcdom = shift;
     my $crs;      my $process_pick = <<"END";
     &select_recent_courses($r,$dcdom,$then,$now);  <script>
     $r->print('<br /><form name="roles" method="post" action="'.$formaction.'" />');  function process_pick(dom) {
     $r->print('<h3>'.&mt('Choose a course from domain').': '.$dcdom.'</h3><font size="+1">'.$courseform.'</font><br /><br />'.      var numbutton = getIndex(dom)
               '<input type="hidden" name="chosencourse" value=""/>'.      var pickedCourse = opener.document.rolechoice.dccourse_$dcdom.value
               'Course Title: <input type="text" size="20" name="coursedesc" value=""><br />'.      var pickedDomain = opener.document.rolechoice.dcdomain_$dcdom.value
               'Course ID: <input type="text" size="15" name="dccourse" />'.      if (opener.document.rolechoice.dcdomain_$dcdom.value == opener.document.rolechoice.origdom_$dcdom.value) {
               '<input type="hidden" name="dcdomain" value="'.$dcdom.'" />'.          if (pickedCourse != '') {
               '<input type="hidden" name="origdom" value="'.$dcdom.'" />'.              if (numbutton != -1) {
               '<input type="hidden" name="selectrole" value="" />'.                  var courseTarget = "cc./"+pickedDomain+"/"+pickedCourse
               '<br /><br /><input type="button" name="proceed" value="'.&mt('Enter this course').'" onClick="verifyCoursePick()" />'.                  opener.document.rolechoice.elements[numbutton+1].name = courseTarget
               '</form>');                  opener.document.rolechoice.submit()
     return;              }
           }
       }
   }
    
   function getIndex(dom) {
       var callername = 'ccpick_'+dom
       for (var i=0;i<opener.document.rolechoice.elements.length;i++) {
           var elemname = opener.document.rolechoice.elements[i].name
           if (elemname == callername) {
               return i;
           }
       }
       return -1;
   }
   </script>
   END
       return $process_pick;
 }  }
   
 sub select_recent_courses {  sub select_recent_courses {
     my ($r,$dcdom,$then,$now)=@_;      my ($r,$roletext)=@_;
     my $advanced = $ENV{'user.adv'};      my $advanced = $ENV{'user.adv'};
     my $tryagain = $ENV{'form.tryagain'};      my $tryagain = $ENV{'form.tryagain'};
     my %recent=&Apache::lonnet::dump(&recent_filename('cc_pickby_dc_'.$dcdom));      my %recent=&Apache::lonnet::dump(&recent_filename('recent_roles'));
     my $numrecent = 0;      my $numrecent = 0;
     my $roletext = '<h3>'.&mt('Enter a recently visited course').'</h3>'.      my $roledisplay = '<tr bgcolor="#BBffBB">'.
                    '<form name="rolechoice" action="/adm/roles" method="post">'.  
                    '<table><tr><th>&nbsp;</th>'.  
                    '<th>'.&mt('User Role').'</th><th colspan=2>'.&mt('Extent').  
                    '</th><th>'.&mt('Start').'</th><th>'.&mt('End').'</th><th>'.  
                    &mt('Remarks and Calendar Announcements').'</th></tr>'."\n".  
                    '<tr bgcolor="#BBffBB">'.  
                    '<td align="center" colspan="7">'.                     '<td align="center" colspan="7">'.
                    &mt('Domain').' - '.&mt('Recent courses accessed in this domain').                     &mt('Recent courses accessed by DC').
                     '</td></tr>'."\n";                      '</td></tr>'."\n";
     foreach my $courseid (sort keys %recent) {      foreach my $courseid (sort keys %recent) {
         unless ($courseid =~/^error\:/) {          unless ($courseid =~/^error\:/) {
               print STDERR "$courseid\n";
             my ($dom,$crs) = split/_/,$courseid;              my ($dom,$crs) = split/_/,$courseid;
             if ($dom eq $dcdom) {              $numrecent ++;
                 $numrecent ++;              my $crskey = 'user.role.cc./'.$dom.'/'.$crs;
                 my $crskey = 'user.role.cc./'.$dom.'/'.$crs;              $roledisplay.=$$roletext{$crskey};
                 my ($where,$trolecode,$role,$tstatus,$tend,$tstart,$tbg,$tfont,$tremark,$inrole,$tpstart,$tpend);  
                 my $button = 1;  
                 &role_status($crskey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend);  
                 if ($tstart) {  
                     $tpstart=&Apache::lonlocal::locallocaltime($tstart);  
                 }  
                 if ($tend) {  
                     $tpend=&Apache::lonlocal::locallocaltime($tend);  
                 }  
                 my $ttype = &mt('Course');  
                 my $twhere;  
                 if ($ENV{'course.'.$courseid.'.description'}) {  
                     $twhere=$ENV{'course.'.$courseid.'.description'};  
                 }  
                 my ($tdom,$trest,$tsection)=  
                     split(/\//,Apache::lonnet::declutter($where));  
                 if ($ENV{'request.role'} eq $trolecode) {  
                     $tstatus='selected';  
                 }  
                 if ($tstatus eq 'is') {  
                     $tbg='#77FF77';  
                     $tfont='#003300';  
                 } elsif ($tstatus eq 'future') {  
                     $tbg='#FFFF77';  
                     $button=0;  
                 } elsif ($tstatus eq 'will') {  
                     $tbg='#FFAA77';  
                     $tremark.=&mt('Active at next login. ');  
                 } elsif ($tstatus eq 'expired') {  
                     $tbg='#FF7777';  
                     $tfont='#330000';  
                     $button=0;  
                 } elsif ($tstatus eq 'will_not') {  
                     $tbg='#AAFF77';  
                     $tremark.=&mt('Expired after logout. ');  
                 } elsif ($tstatus eq 'selected') {  
                     $tbg='#11CC55';  
                     $tfont='#002200';  
                     $inrole=1;  
                     $tremark.=&mt('Currently selected. ');  
                 }  
                 my $trole=Apache::lonnet::plaintext($role);  
                 $roletext.='<tr bgcolor='.$tbg.'>';  
                 if (!$button) {  
                     $roletext.=('<td>&nbsp;</td>');  
                 } elsif ($tstatus eq 'is') {  
                     $roletext.=('<td><input type=submit value="'.  
                               &mt('Select').'" name="'.  
                               $trolecode.'"></td>');  
                 } elsif ($tryagain) {  
                     $roletext.=  
                         '<td><input type=submit value="'.  
                         &mt('Try Selecting Again').'" name="'.$trolecode.'"></td>';  
                 } elsif ($advanced) {  
                     $roletext.=  
                         '<td><input type=submit value="'.  
                         &mt('Re-Initialize').'" name="'.$trolecode.'"></td>';  
                 } else {  
                     $roletext.='<td>&nbsp;</td>';  
                 }  
                 $tremark.=&Apache::lonannounce::showday(time,1,  
                          &Apache::lonannounce::readcalendar($tdom.'_'.$trest));  
                                                                                     
                 $roletext.='<td><font color="'.$tfont.'">'.$trole.  
                       '</font></td><td><font color="'.$tfont.'">'.$ttype.  
                       '</font></td><td><font color="'.$tfont.'">'.$twhere.  
                       '</font></td><td><font color="'.$tfont.'">'.$tpstart.  
                       '</font></td><td><font color="'.$tfont.'">'.$tpend.  
                       '</font></td><td><font color="'.$tfont.'">'.$tremark.  
                       '&nbsp;</font></td></tr>'."\n";  
             }  
         }          }
     }      }
     if ($numrecent > 0) {      if ($numrecent > 0) {
         $r->print($roletext.'</table><input type="hidden" '.          $r->print("$roledisplay\n");
                   'name="selectrole" value="1" /></form>'."\n");  
     }      }
 }  }
   
   sub allcourses_row {
       my $dcdom = shift;
       my $ccrole = Apache::lonnet::plaintext('cc');
       my $selectlink = &courselink($dcdom);
       my $output = '<tr bgcolor="#77FF77">'.
                 '<td><input type="button" value="'.
                 &mt('Select').'" name="ccpick_'.$dcdom.'"'.
                 'onClick="verifyCoursePick(this)">'.
                 '<input type="hidden" name="pick_'.$dcdom.'" value="1"></td>'.
                 '<td><font color="#002200">'.
                 $ccrole.'</font></td><td>'.&mt('Course').'</td>'.
                 '<td><font color="#002200">'.&mt('All courses').':<b>&nbsp;'.
                 $selectlink.'</b>'.
                 '<br />'.&mt('Domain').':'.$dcdom.'</font>'.
                 '<td colspan="4"><font color="#002200">'.
                 &mt('Course Coordinator access to all courses in domain').
                 ': <b>'.$dcdom.'</b></font></td></tr>'."\n";
       return $output;
   }
   
 sub recent_filename {  sub recent_filename {
     my $area=shift;      my $area=shift;
     return 'nohist_recent_'.&Apache::lonnet::escape($area);      return 'nohist_recent_'.&Apache::lonnet::escape($area);
Line 1044  sub set_privileges { Line 930  sub set_privileges {
     my $userroles = &Apache::lonnet::set_arearole($role,$area,'','',$dcdom,$ENV{'user.name'});      my $userroles = &Apache::lonnet::set_arearole($role,$area,'','',$dcdom,$ENV{'user.name'});
     my %ccrole = ();      my %ccrole = ();
     &Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area);      &Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area);
     $userroles .= &Apache::lonnet::set_userprivs(\$userroles,\%ccrole);                        my @newprivs = split/\n/,$userroles;      my ($author,$adv)= &Apache::lonnet::set_userprivs(\$userroles,\%ccrole);
       my @newprivs = split/\n/,$userroles;
     my %newccroles = ();      my %newccroles = ();
     foreach (@newprivs) {      foreach (@newprivs) {
         my ($key,$val) = split/=/,$_;          my ($key,$val) = split/=/,$_;
Line 1055  sub set_privileges { Line 942  sub set_privileges {
                          $ENV{'user.name'},                           $ENV{'user.name'},
                          $ENV{'user.home'},                           $ENV{'user.home'},
                         "Role ".$role);                          "Role ".$role);
                                                                                              
     &Apache::lonnet::appenv(      &Apache::lonnet::appenv(
                           'request.role'        => $role,                            'request.role'        => $role,
                           'request.role.domain' => $dcdom,                            'request.role.domain' => $dcdom,

Removed from v.1.106  
changed lines
  Added in v.1.109


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