Diff for /loncom/interface/lonuserutils.pm between versions 1.35 and 1.47

version 1.35, 2007/12/26 13:55:32 version 1.47, 2008/01/07 03:00:00
Line 76  sub modifystudent { Line 76  sub modifystudent {
         }          }
     }      }
     if ($result eq '') {      if ($result eq '') {
         $result = 'Unable to find section for this student';          $result = &mt('Unable to find section for this student');
     } else {      } else {
         $result =~ s/(ok:)+/ok/g;          $result =~ s/(ok:)+/ok/g;
     }      }
Line 333  sub print_upload_manager_header { Line 333  sub print_upload_manager_header {
 sub javascript_validations {  sub javascript_validations {
     my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain,      my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain,
         $context,$groupslist)=@_;          $context,$groupslist)=@_;
   
     my %param = (      my %param = (
                   kerb_def_dom => $krbdefdom,                    kerb_def_dom => $krbdefdom,
                   curr_authtype => $curr_authtype,                    curr_authtype => $curr_authtype,
                 );                  );
     if ($mode eq 'createuser') {      if ($mode eq 'upload') {
         $param{'formname'} = 'cu';  
     } elsif ($mode eq 'upload') {  
         $param{'formname'} = 'studentform';          $param{'formname'} = 'studentform';
     } elsif ($mode eq 'singlestudent') {  
         $param{'formname'} = 'cu';  
     } elsif ($mode eq 'createcourse') {      } elsif ($mode eq 'createcourse') {
         $param{'formname'} = 'ccrs';          $param{'formname'} = 'ccrs';
     } elsif ($mode eq 'modifycourse') {      } elsif ($mode eq 'modifycourse') {
Line 367  sub javascript_validations { Line 362  sub javascript_validations {
                 }                  }
             } elsif ($context eq 'domain') {              } elsif ($context eq 'domain') {
                 $setsection_call = 'setCourse()';                  $setsection_call = 'setCourse()';
                 $setsections_js = &dc_setcourse_js($param{'formname'},$mode);                  $setsections_js = &dc_setcourse_js($param{'formname'},$mode,$context);
             }              }
             $finish = "  var checkSec = $setsection_call\n".              $finish = "  var checkSec = $setsection_call\n".
                       "  if (checkSec == 'ok') {\n".                        "  if (checkSec == 'ok') {\n".
Line 389  sub javascript_validations { Line 384  sub javascript_validations {
          role     => 'The optional role field was not specified.',           role     => 'The optional role field was not specified.',
          continue => 'Continue adding users?',           continue => 'Continue adding users?',
          );           );
       my $function_name = <<"END";
     my $function_name =(<<END);  
 $setsections_js  $setsections_js
   
 function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) {  function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) {
Line 456  END Line 450  END
     foundatype=1;      foundatype=1;
     if (current.argfield == null || current.argfield == '') {      if (current.argfield == null || current.argfield == '') {
         var alertmsg = '';          var alertmsg = '';
         switch (current.value) {          switch (current.radiovalue) {
             case 'krb':              case 'krb':
                 alertmsg = '$alert{'krb'}';                  alertmsg = '$alert{'krb'}';
                 break;                  break;
Line 521  END Line 515  END
 }  }
 END  END
     }      }
     my $result = $function_name;      my $result = $function_name.$auth_checks.$optional_checks."\n".
     if ( ($mode eq 'upload') || ($mode eq 'createcourse') || ($mode eq 'modifycourse')  ) {                   $section_checks.$authheader;
         $result .= $auth_checks;  
     }  
     $result .= $optional_checks."\n".$section_checks;  
     if ( ($mode eq 'upload') || ($mode eq 'createcourse') || ($mode eq 'modifycourse')  ) {  
         $result .= $authheader;  
     }  
     return $result;      return $result;
 }  }
 ###############################################################  ###############################################################
Line 761  sub print_upload_manager_footer { Line 749  sub print_upload_manager_footer {
                                      $permission,$context,'upload');                                       $permission,$context,'upload');
         $Str .= $secbox."<h3>".&mt('Full Update')."</h3>\n".          $Str .= $secbox."<h3>".&mt('Full Update')."</h3>\n".
                 '<p><label><input type="checkbox" name="fullup" value="yes">'.                  '<p><label><input type="checkbox" name="fullup" value="yes">'.
                 ' '.&mt('Display students with current/future access, who are  not in the uploaded file.').'<br />'.&mt('Students selected from this list can be dropped.');                  ' '.&mt('Display students with current/future access who are not in the uploaded file.').'</label><br />'.&mt('Students selected from this list can be dropped.').'</p>'."\n";
                 "</label></p>\n";  
     }      }
     if ($context eq 'course' || $context eq 'domain') {      if ($context eq 'course' || $context eq 'domain') {
         $Str .= &forceid_change($context);          $Str .= &forceid_change($context);
Line 1320  sub print_userlist { Line 1307  sub print_userlist {
     }      }
     $r->rflush();      $r->rflush();
     if ($context eq 'course') {      if ($context eq 'course') {
         my $classlist = &Apache::loncoursedata::get_classlist();          if (($env{'form.showrole'} eq 'st') || ($env{'form.showrole'} eq 'Any')) { 
         my $secidx = &Apache::loncoursedata::CL_SECTION();              my $classlist = &Apache::loncoursedata::get_classlist();
         my $viewablesec = &viewable_section($permission);              %userlist = %{$classlist};
         foreach my $student (keys(%{$classlist})) {          }
             my $section = $classlist->{$student}[$secidx];          if ($env{'form.showrole'} ne 'st') {
             if ($viewablesec ne '') {              my $showroles;
                 if ($section ne $viewablesec) {              if ($env{'form.showrole'} ne 'Any') {
                     next;                  $showroles = [$env{'form.showrole'}];
                 } else {  
                     $userlist{$student} = $classlist->{$student};  
                 }  
             } else {              } else {
                 $userlist{$student} = $classlist->{$student};                  $showroles = undef;
             }              }
               my $withsec = 1;
               my $hidepriv = 1;
               my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,
                                 \@statuses,$showroles,undef,$withsec,$hidepriv);
               &gather_userinfo($context,$format,\%userlist,$indexhash,\%userinfo,
                                \%advrolehash,$permission);
         }          }
         my $showroles;  
         if ($env{'form.showrole'} ne 'Any') {  
             $showroles = [$env{'form.showrole'}];  
         } else {  
             $showroles = undef;  
         }  
         my $withsec = 1;  
         my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,  
                                     \@statuses,$showroles,undef,$withsec);  
         &gather_userinfo($context,$format,\%userlist,$indexhash,\%userinfo,  
                          \%advrolehash,$permission);  
     } else {      } else {
         my (%cstr_roles,%dom_roles);          my (%cstr_roles,%dom_roles);
         if ($context eq 'author') {          if ($context eq 'author') {
Line 1394  sub print_userlist { Line 1373  sub print_userlist {
             } elsif ($env{'form.roletype'} eq 'course') {              } elsif ($env{'form.roletype'} eq 'course') {
                 if ($env{'form.coursepick'}) {                  if ($env{'form.coursepick'}) {
                     my %courses = &process_coursepick();                      my %courses = &process_coursepick();
                     my %allusers;                       my %allusers;
                       my $hidepriv = 1;
                     foreach my $cid (keys(%courses)) {                      foreach my $cid (keys(%courses)) {
                         my ($cnum,$cdom,$cdesc) = &get_course_identity($cid);                          my ($cnum,$cdom,$cdesc) = &get_course_identity($cid);
                         next if ($cnum eq '' || $cdom eq '');                          next if ($cnum eq '' || $cdom eq '');
Line 1412  sub print_userlist { Line 1392  sub print_userlist {
                         foreach my $type (@statuses) {                          foreach my $type (@statuses) {
                             $access{$type} = $type;                              $access{$type} = $type;
                         }                          }
                         &Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users,\%userdata,\%statushash);                          &Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users,\%userdata,\%statushash,$hidepriv);
                         foreach my $user (keys(%userdata)) {                          foreach my $user (keys(%userdata)) {
                             next if (ref($userinfo{$user}) eq 'HASH');                              next if (ref($userinfo{$user}) eq 'HASH');
                             foreach my $item ('fullname','id') {                              foreach my $item ('fullname','id') {
Line 1487  sub section_group_filter { Line 1467  sub section_group_filter {
                                               all  => 'all',                                                all  => 'all',
                                               none => 'none',                                                none => 'none',
                                             );                                              );
     my ($output,@options);      my $output;
     foreach my $item (@filters) {      foreach my $item (@filters) {
         my $markup;           my ($markup,@options); 
         if ($env{'form.'.$name{$item}} eq '') {          if ($env{'form.'.$name{$item}} eq '') {
             $env{'form.'.$name{$item}} = 'all';              $env{'form.'.$name{$item}} = 'all';
         }          }
Line 1810  sub make_keylist_array { Line 1790  sub make_keylist_array {
     $index->{'email'} = &Apache::loncoursedata::CL_PERMANENTEMAIL();      $index->{'email'} = &Apache::loncoursedata::CL_PERMANENTEMAIL();
     $index->{'role'} = &Apache::loncoursedata::CL_ROLE();      $index->{'role'} = &Apache::loncoursedata::CL_ROLE();
     $index->{'extent'} = &Apache::loncoursedata::CL_EXTENT();      $index->{'extent'} = &Apache::loncoursedata::CL_EXTENT();
       $index->{'photo'} = &Apache::loncoursedata::CL_PHOTO();
       $index->{'thumbnail'} = &Apache::loncoursedata::CL_THUMBNAIL();
     foreach my $key (keys(%{$index})) {      foreach my $key (keys(%{$index})) {
         $keylist->[$index->{$key}] = $key;          $keylist->[$index->{$key}] = $key;
     }      }
Line 1918  END Line 1900  END
         my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox");          my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox");
         my $singconfirm = &mt(' for a single user?');          my $singconfirm = &mt(' for a single user?');
         my $multconfirm = &mt(' for multiple users?');          my $multconfirm = &mt(' for multiple users?');
         my $date_sec_selector = &date_section_javascript($context,$setting,$statusmode);           my $date_sec_selector = &date_section_javascript($context,$setting,$statusmode);
           my %lt = &Apache::lonlocal::texthash( 
                 acwi => 'Access will be set to start immediately',
                 asyo => 'as you did not select an end date in the pop-up window',
                 accw => 'Access will be set to continue indefinitely',
                 asyd => 'as you did not select an end date in the pop-up window',
                 sewi => "Sections will be switched to 'No section'",
                 ayes => "as you either selected the 'No section' option",
                 oryo => 'or you did not select a section in the pop-up window',
                 arol => 'A role with no section will be added',
                 swbs => 'Sections will be switched to:',
                 rwba => 'Roles will be added for section(s):',
           );
         $r->print(<<END);          $r->print(<<END);
   
 <script type="text/javascript" language="Javascript">  <script type="text/javascript" language="Javascript">
Line 1944  function verify_action (field) { Line 1938  function verify_action (field) {
     }       } 
     else {      else {
         var message = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].text;          var message = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].text;
           var choice = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].value;
         if (numchecked == 1) {           if (numchecked == 1) { 
             message += singconf;              message += singconf;
         }           } 
         else {          else {
             message += multconf;               message += multconf; 
         }          }
           if (choice == 'chgdates' || choice == 'reenable' || choice == 'activate') {
               var datemsg = '';
               if ((document.studentform.startdate_month.value == '') && 
                   (document.studentform.startdate_day.value  == '') &&
                   (document.studentform.startdate_year.value == '')) {
                   datemsg = "\\n$lt{'acwi'},\\n$lt{'asyo'}.\\n";
               }
               if ((document.studentform.enddate_month.value == '') &&
                   (document.studentform.enddate_day.value  == '') &&
                   (document.studentform.enddate_year.value == '')) {
                   datemsg += "\\n$lt{'accw'},\\n$lt{'asyd'}.\\n";
               }
               if (datemsg != '') {
                   message += "\\n"+datemsg;
               }
           }
           if (choice == 'chgsec') {
               var rolefilter = document.studentform.showrole.options[document.studentform.showrole.selectedIndex].value;
               var retained =  document.studentform.retainsec.value;
               var secshow = document.studentform.newsecs.value;
               if (secshow == '') {
                   if (rolefilter == 'st' || retained == 0 || retained == "") {
                       message += "\\n\\n$lt{'sewi'},\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n"; 
                   } else {
                       message += "\\n\\n$lt{'arol'}\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n";
                   }
               } else {
                   if (rolefilter == 'st' || retained == 0 || retained == "") {
                       message += "\\n\\n$lt{'swbs'} "+secshow+".\\n";
                   } else {
                       message += "\\n\\n$lt{'rwba'} "+secshow+".\\n";
                   }
               }
           }
         if (confirm(message)) {          if (confirm(message)) {
             document.studentform.phase.value = 'bulkchange';              document.studentform.phase.value = 'bulkchange';
             document.studentform.submit();              document.studentform.submit();
Line 2000  END Line 2029  END
                        'clicker'    => "clicker id",                         'clicker'    => "clicker id",
                        'photo'      => "photo",                         'photo'      => "photo",
                        'extent'     => "extent",                         'extent'     => "extent",
                          'go'         => "go",
                        'pr'         => "Proceed",                         'pr'         => "Proceed",
                        'ca'         => "check all",                         'ca'         => "check all",
                        'ua'         => "uncheck all",                         'ua'         => "uncheck all",
Line 2082  END Line 2112  END
                 $output .= &mt("Click on a username to view the user's personal page.").'<br />';                  $output .= &mt("Click on a username to view the user's personal page.").'<br />';
             }              }
             if ($actionselect) {              if ($actionselect) {
                 $output .= <<"END";                   $output .= <<"END";
 $lt{'ac'}:&nbsp;$actionselect <input type="button" value="$lt{'pr'}" onclick="javascript:verify_action(document.studentform.actionlist)" /></p>  $lt{'ac'}:&nbsp;$actionselect <input type="button" value="$lt{'go'}" onclick="javascript:opendatebrowser(this.form,'studentform','go')" /></p>
 <p><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.studentform.actionlist)" /> &nbsp;  <p><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.studentform.actionlist)" /> &nbsp;
 <input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.actionlist)" />  <input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.actionlist)" /><br /><br /><input type="button" value="$lt{'pr'}" onclick="javascript:verify_action(document.studentform.actionlist)" />
 END  END
                 my @allroles;                  my @allroles;
                 if ($env{'form.showrole'} eq 'Any') {                  if ($env{'form.showrole'} eq 'Any') {
Line 2214  END Line 2244  END
     }      }
   
 # Done with header lines in all formats  # Done with header lines in all formats
   
     my %index;      my %index;
     my $i;      my $i;
     foreach my $idx (@$keylist) {      foreach my $idx (@$keylist) {
Line 2235  END Line 2264  END
     # Get groups, role, permanent e-mail so we can sort on them if      # Get groups, role, permanent e-mail so we can sort on them if
     # necessary.      # necessary.
     foreach my $user (keys(%{$userlist})) {      foreach my $user (keys(%{$userlist})) {
           if ($user eq '' ) {
               delete($userlist->{$user});
               next;
           }
         if ($context eq 'domain' &&  $user eq $env{'request.role.domain'}.'-domainconfig:'.$env{'request.role.domain'}) {          if ($context eq 'domain' &&  $user eq $env{'request.role.domain'}.'-domainconfig:'.$env{'request.role.domain'}) {
             delete($userlist->{$user});              delete($userlist->{$user});
             next;              next;
Line 2280  END Line 2313  END
             }              }
             if ($mode ne 'autoenroll') {              if ($mode ne 'autoenroll') {
                 my $section = $userlist->{$user}->[$index{'section'}];                  my $section = $userlist->{$user}->[$index{'section'}];
                   if (($env{'request.course.sec'} ne '') && 
                       ($section ne $env{'request.course.sec'})) {
                       if ($role eq 'st') {
                           delete($userlist->{$user});
                           next;
                       }
                   }
                 if ($secfilter eq 'none') {                  if ($secfilter eq 'none') {
                     if ($section ne '') {                      if ($section ne '') {
                         delete($userlist->{$user});                          delete($userlist->{$user});
Line 2302  END Line 2342  END
                         next;                          next;
                     }                      }
                 }                  }
                   if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
                       if (($displayphotos eq 'on') && ($role eq 'st')) {
                           $userlist->{$user}->[$index{'photo'}] =
                               &Apache::lonnet::retrievestudentphoto($udom,$uname,'jpg');
                           $userlist->{$user}->[$index{'thumbnail'}] =
                               &Apache::lonnet::retrievestudentphoto($udom,$uname,
                                                                   'gif','thumbnail');
                       }
                   }
             }              }
         }          }
         my %emails   = &Apache::loncommon::getemails($uname,$udom);          my %emails   = &Apache::loncommon::getemails($uname,$udom);
Line 2377  END Line 2426  END
                 $r->print("<td>$cellentry</td>\n");                  $r->print("<td>$cellentry</td>\n");
             } else {              } else {
                 $r->print("<td>$rowcount</td>\n");                  $r->print("<td>$rowcount</td>\n");
                 $checkval;  
                 if ($actionselect) {                  if ($actionselect) {
                     my $showcheckbox;                      my $showcheckbox;
                     if ($role =~ /^cr\//) {                      if ($role =~ /^cr\//) {
Line 2434  END Line 2482  END
                         $r->print('    <td>&nbsp;</td>  ');                          $r->print('    <td>&nbsp;</td>  ');
                     }                      }
                     if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {                      if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
                         if ($displayphotos eq 'on' && $sdata->[$index{'role'}] eq 'st') {                          if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') {
                             my $imgurl =                              $r->print('    <td align="right"><a href="javascript:photowindow('."'".$in{'photo'}."'".')"><img src="'.$in{'thumbnail'}.'" border="1"></a></td>');
                         &Apache::lonnet::retrievestudentphoto($in{'domain'},$in{'username'},  
                                                           'gif','thumbnail');  
                             $r->print('    <td align="right"><a href="javascript:photowindow('."'".&Apache::lonnet::studentphoto($in{'domain'},$in{'username'},'jpg')."'".')"><img src="'.$imgurl.'" border="1"></a></td>');  
                         } else {                          } else {
                             $r->print('    <td>&nbsp;</td>  ');                              $r->print('    <td>&nbsp;</td>  ');
                         }                          }
Line 2590  sub select_actions { Line 2635  sub select_actions {
         }          }
     }      }
     if ($options) {      if ($options) {
         $output = '<select name="bulkaction" onchange="javascript:opendatebrowser(this.form,'."'studentform'".')" />'."\n".          $output = '<select name="bulkaction" onchange="javascript:opendatebrowser(this.form,'."'studentform','change'".')" />'."\n".
                   '<option value="" selected="selected">'.                    '<option value="" selected="selected">'.
                   &mt('Please select').'</option>'."\n".$options."\n".'</select>';                    &mt('Please select').'</option>'."\n".$options."\n".'</select>';
         if ($choices{'dates'}) {          if ($choices{'dates'}) {
Line 2627  sub date_section_javascript { Line 2672  sub date_section_javascript {
     } else {      } else {
         $title = &mt('Date selector');          $title = &mt('Date selector');
     }      }
       my %nopopup = &Apache::lonlocal::texthash (
           revoke => "Check the boxes for any users for whom roles are to be revoked, and click 'Proceed'",
           delete => "Check the boxes for any users for whom roles are to be deleted, and click 'Proceed'",
           none   => "Choose an action to take for selected users",
       );  
     my $output = '      my $output = '
 <script type="text/javascript">  <script type="text/javascript">
     var stdeditbrowser;'."\n";      var stdeditbrowser;'."\n";
     $output .= <<"ENDONE";      $output .= <<"ENDONE";
     function opendatebrowser(callingform,formname) {      function opendatebrowser(callingform,formname,calledby) {
         var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value;          var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value;
         if (bulkaction == 'revoke' || bulkaction == 'delete' || bulkaction == '') {          if (bulkaction == 'revoke' || bulkaction == 'delete' || bulkaction == '') {
               if (calledby == 'go') {
                   if (bulkaction == 'revoke') {
                       alert("$nopopup{'revoke'}");
                   }
                   if (bulkaction == 'delete') {
                       alert("$nopopup{'delete'}"); 
                   }
                   if (bulkaction == '') {
                       alert("$nopopup{'none'}");
                   }
               }
             return;              return;
         }          }
         var url = '/adm/createuser?';          var url = '/adm/createuser?';
Line 2677  function saveselections(formname) { Line 2738  function saveselections(formname) {
 END  END
     if ($env{'form.bulkaction'} eq 'chgsec') {      if ($env{'form.bulkaction'} eq 'chgsec') {
         $output .= <<"END";          $output .= <<"END";
         opener.document.$callingform.retainsec.value = formname.retainsec.value;          if (formname.retainsec.length > 1) {  
               for (var i=0; i<formname.retainsec.length; i++) {
                   if (formname.retainsec[i].checked == true) {
                       opener.document.$callingform.retainsec.value = formname.retainsec[i].value;
                   }
               }
           } else {
               opener.document.$callingform.retainsec.value = formname.retainsec.value;
           }
         setSections(formname);          setSections(formname);
         if (seccheck == 'ok') {          if (seccheck == 'ok') {
             opener.document.$callingform.newsecs.value = formname.sections.value;              opener.document.$callingform.newsecs.value = formname.sections.value;
Line 3339  sub upfile_drop_add { Line 3408  sub upfile_drop_add {
                      );                       );
         my $flushc=0;          my $flushc=0;
         my %student=();          my %student=();
         my (%curr_groups,@sections,@cleansec,@secs,$defaultwarn,$groupwarn);          my (%curr_groups,@sections,@cleansec,$defaultwarn,$groupwarn);
         my %userchg;          my %userchg;
         if ($context eq 'course' || $setting eq 'course') {          if ($context eq 'course' || $setting eq 'course') {
             if ($context eq 'course') {              if ($context eq 'course') {
Line 3378  sub upfile_drop_add { Line 3447  sub upfile_drop_add {
         }          }
         my (%curr_rules,%got_rules,%alerts);          my (%curr_rules,%got_rules,%alerts);
         my %customroles = &my_custom_roles();          my %customroles = &my_custom_roles();
         my ($custom_ok,@permitted_roles) =          my @permitted_roles = &roles_on_upload($context,$setting,%customroles); 
             &roles_on_upload($context,%customroles);  
         # Get new users list          # Get new users list
         foreach my $line (@userdata) {          foreach my $line (@userdata) {
               my @secs;
             my %entries=&Apache::loncommon::record_sep($line);              my %entries=&Apache::loncommon::record_sep($line);
             # Determine user name              # Determine user name
             unless (($entries{$fields{'username'}} eq '') ||              unless (($entries{$fields{'username'}} eq '') ||
Line 3415  sub upfile_drop_add { Line 3484  sub upfile_drop_add {
                     my $username = $entries{$fields{'username'}};                      my $username = $entries{$fields{'username'}};
                     if (defined($fields{'sec'})) {                      if (defined($fields{'sec'})) {
                         if (defined($entries{$fields{'sec'}})) {                          if (defined($entries{$fields{'sec'}})) {
                               $entries{$fields{'sec'}} =~ s/\W//g;
                             my $item = $entries{$fields{'sec'}};                              my $item = $entries{$fields{'sec'}};
                             $item =~ s/(\s+$|^\s+)//g;  
                             if ($item eq "none" || $item eq 'all') {                              if ($item eq "none" || $item eq 'all') {
                                 $r->print('<br />'.&mt('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a reserved word.',$username,$fname,$mname,$lname,$gen,$item));                                  $r->print('<br />'.&mt('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a reserved word.',$username,$fname,$mname,$lname,$gen,$item));
                                 next;                                  next;
Line 3475  sub upfile_drop_add { Line 3544  sub upfile_drop_add {
                     my $role = '';                      my $role = '';
                     if (defined($fields{'role'})) {                      if (defined($fields{'role'})) {
                         if ($entries{$fields{'role'}}) {                          if ($entries{$fields{'role'}}) {
                             if (grep(/^\Q$entries{$fields{'role'}}\E$/,@permitted_roles)) {                              $entries{$fields{'role'}}  =~ s/(\s+$|^\s+)//g;
                                 $role=$entries{$fields{'role'}};                              if ($entries{$fields{'role'}} ne '') {
                                 $role =~ s/(\s+$|^\s+)//g;                                  if (grep(/^\Q$entries{$fields{'role'}}\E$/,@permitted_roles)) {
                             }                                      $role = $entries{$fields{'role'}};
                             if ($custom_ok) {  
                                 if ($customroles{$role}) {  
                                     $role = 'cr_'.$env{'user.domain'}.'_'.$env{'user.name'}.'_'.$entries{$fields{'role'}};  
                                 }                                  }
                             }                              }
                             if ($role eq '') {                              if ($role eq '') {
Line 3576  sub upfile_drop_add { Line 3642  sub upfile_drop_add {
                         my $multiple = 0;                          my $multiple = 0;
                         my ($userresult,$authresult,$roleresult,$idresult);                          my ($userresult,$authresult,$roleresult,$idresult);
                         my (%userres,%authres,%roleres,%idres);                          my (%userres,%authres,%roleres,%idres);
                           my $singlesec = '';
                         if ($role eq 'st') {                          if ($role eq 'st') {
                             my $sec;                              my $sec;
                             if ($cid) {                              if (@secs > 0) {
                                 if (@secs > 0) {                                  $sec = $secs[0];
                                     $sec = $secs[0];  
                                 }  
                                 &modifystudent($domain,$username,$cid,$sec,  
                                                $desiredhost);  
                                 $roleresult =  
                                     &Apache::lonnet::modifystudent  
                                         ($domain,$username,$id,$amode,$password,  
                                          $fname,$mname,$lname,$gen,$sec,$enddate,  
                                          $startdate,$env{'form.forceid'},  
                                          $desiredhost,$email,'manual','',$cid);  
                                 $userresult = $roleresult;  
                             }                              }
                               &modifystudent($domain,$username,$cid,$sec,
                                              $desiredhost);
                               $roleresult =
                                   &Apache::lonnet::modifystudent
                                       ($domain,$username,$id,$amode,$password,
                                        $fname,$mname,$lname,$gen,$sec,$enddate,
                                        $startdate,$env{'form.forceid'},
                                        $desiredhost,$email,'manual','',$cid);
                               $userresult = $roleresult;
                         } else {                          } else {
                             if (($context eq 'course') ||                               if ($role ne '') { 
                                 (grep(/^\Q$role\E$/,@courseroles))) {                                  if ($context eq 'course' || $setting eq 'course') {
                                 if (!$cid) {                                      if ($customroles{$role}) {
                                     next;                                          $role = 'cr_'.$env{'user.domain'}.'_'.
                                 }                                                  $env{'user.name'}.'_'.$role;
                             }                                      }
                             my $singlesec;                                      if ($role ne 'cc') { 
                             if ((grep(/^\Q$role\E$/,@courseroles)) && ($role ne 'cc')) {                                          if (@secs > 1) {
                                 if (@secs > 1) {                                              $multiple = 1;
                                     $multiple = 1;                                              foreach my $sec (@secs) {
                                     foreach my $sec (@secs) {                                                  ($userres{$sec},$authres{$sec},$roleres{$sec},$idres{$sec}) =
                                         ($userres{$sec},$authres{$sec},$roleres{$sec},$idres{$sec}) =                                                  &modifyuserrole($context,$setting,
                                             &modifyuserrole($context,$setting,                                                      $changeauth,$cid,$domain,$username,
                                                 $changeauth,$cid,$domain,$username,                                                      $id,$amode,$password,$fname,
                                                 $id,$amode,$password,$fname,                                                      $mname,$lname,$gen,$sec,
                                                 $mname,$lname,$gen,$sec,                                                      $env{'form.forceid'},$desiredhost,
                                                 $env{'form.forceid'},$desiredhost,                                                      $email,$role,$enddate,
                                                 $email,$role,$enddate,$startdate,$checkid);                                                      $startdate,$checkid);
                                               }
                                           } elsif (@secs > 0) {
                                               $singlesec = $secs[0];
                                           }
                                     }                                      }
                                 } elsif (@secs > 0) {  
                                     $singlesec = $secs[0];  
                                 }                                  }
                             }                              }
                             if (!$multiple) {                              if (!$multiple) {
                                 ($userresult,$authresult,$roleresult,$idresult) =                                   ($userresult,$authresult,$roleresult,$idresult) = 
                                     &modifyuserrole($context,$setting,                                      &modifyuserrole($context,$setting,
                                         $changeauth,$cid,$domain,$username,                                                       $changeauth,$cid,$domain,$username, 
                                         $id,$amode,$password,$fname,                                                      $id,$amode,$password,$fname,
                                         $mname,$lname,$gen,$singlesec,                                                      $mname,$lname,$gen,$singlesec,
                                         $env{'form.forceid'},$desiredhost,                                                      $env{'form.forceid'},$desiredhost,
                                         $email,$role,$enddate,$startdate,$checkid);                                                      $email,$role,$enddate,$startdate,$checkid);
                             }                              }
                         }                          }
                         if ($multiple) {                          if ($multiple) {
                             foreach my $sec (sort(keys(%userres))) {                              foreach my $sec (sort(keys(%userres))) {
                                $flushc =                                  $flushc =
                                 &user_change_result($r,$userres{$sec},$authres{$sec},                                  &user_change_result($r,$userres{$sec},$authres{$sec},
                                                     $roleres{$sec},$idres{$sec},\%counts,$flushc,                                                      $roleres{$sec},$idres{$sec},\%counts,$flushc,
                                                     $username,\%userchg);                                                      $username,\%userchg);
Line 3951  sub update_user_list { Line 4018  sub update_user_list {
                         if (@newsecs == 0) {                          if (@newsecs == 0) {
                             $result = &mt('No change in section assignment (none)');                              $result = &mt('No change in section assignment (none)');
                             $nochg = 1;                              $nochg = 1;
                         }                          } else {
                               $revresult =
                                   &Apache::lonnet::revokerole($udom,$uname,
                                                               $scope,$role);
                           } 
                     } else {                      } else {
                         if (@newsecs > 0) {                          if (@newsecs > 0) {
                             if (grep(/^\Q$sec\E$/,@newsecs)) {                              if (grep(/^\Q$sec\E$/,@newsecs)) {
Line 4170  sub get_groupslist { Line 4241  sub get_groupslist {
 }  }
   
 sub setsections_javascript {  sub setsections_javascript {
     my ($formname,$groupslist,$mode) = @_;      my ($formname,$groupslist,$mode,$checkauth) = @_;
     my ($checkincluded,$finish,$rolecode,$setsection_js);      my ($checkincluded,$finish,$rolecode,$setsection_js);
     if ($mode eq 'upload') {      if ($mode eq 'upload') {
         $checkincluded = 'formname.name == "'.$formname.'"';          $checkincluded = 'formname.name == "'.$formname.'"';
Line 4178  sub setsections_javascript { Line 4249  sub setsections_javascript {
         $rolecode = "var role = formname.defaultrole.options[formname.defaultrole.selectedIndex].value;\n";          $rolecode = "var role = formname.defaultrole.options[formname.defaultrole.selectedIndex].value;\n";
     } elsif ($formname eq 'cu') {      } elsif ($formname eq 'cu') {
         $checkincluded = 'formname.elements[i-1].checked == true';          $checkincluded = 'formname.elements[i-1].checked == true';
         $finish = 'formname.submit()';          if ($checkauth) {
               $finish = "var authcheck = auth_check();\n".
                         "   if (authcheck == 'ok') {\n".
                         "       formname.submit();\n".
                         "   }\n";
           } else {
               $finish = 'formname.submit()';
           }
         $rolecode = "var match = str.split('_');          $rolecode = "var match = str.split('_');
                 var role = match[3];\n";                  var role = match[3];\n";
     } elsif ($formname eq 'enrollstudent') {      } elsif ($formname eq 'enrollstudent') {
         $checkincluded = 'formname.name == "'.$formname.'"';          $checkincluded = 'formname.name == "'.$formname.'"';
         $finish = 'formname.submit()';          if ($checkauth) {
               $finish = "var authcheck = auth_check();\n".
                         "   if (authcheck == 'ok') {\n".
                         "       formname.submit();\n".
                         "   }\n";
           } else {
               $finish = 'formname.submit()';
           }
         $rolecode = "var match = str.split('_');          $rolecode = "var match = str.split('_');
                 var role = match[1];\n";                  var role = match[1];\n";
     } else {      } else {
Line 4478  sub authorpriv { Line 4563  sub authorpriv {
 }  }
   
 sub roles_on_upload {  sub roles_on_upload {
     my ($context,%customroles) = @_;      my ($context,$setting,%customroles) = @_;
     my (@possible_roles,@permitted_roles);      my (@possible_roles,@permitted_roles);
     if ($context eq 'domain') {      @possible_roles = &curr_role_permissions($context,$setting,1);
         @possible_roles = &curr_role_permissions($context,undef,1);  
         push(@possible_roles,&curr_role_permissions($context,'course',1));  
     } else {  
         @possible_roles = &curr_role_permissions($context,undef,1);  
     }  
     my $custom_ok = 0;  
     foreach my $role (@possible_roles) {      foreach my $role (@possible_roles) {
         if ($role eq 'cr') {          if ($role eq 'cr') {
             $custom_ok = 1;  
             push(@permitted_roles,keys(%customroles));              push(@permitted_roles,keys(%customroles));
         } else {          } else {
             push(@permitted_roles,$role);              push(@permitted_roles,$role);
         }          }
     }      }
     return ($custom_ok,@permitted_roles);      return @permitted_roles;
 }  }
   
 sub get_course_identity {  sub get_course_identity {
Line 4520  sub get_course_identity { Line 4598  sub get_course_identity {
 }  }
   
 sub dc_setcourse_js {  sub dc_setcourse_js {
     my ($formname,$mode) = @_;      my ($formname,$mode,$context) = @_;
     my $dc_setcourse_code;      my ($dc_setcourse_code,$authen_check);
     my $cctext = &Apache::lonnet::plaintext('cc');      my $cctext = &Apache::lonnet::plaintext('cc');
     my %alerts = &sectioncheck_alerts();      my %alerts = &sectioncheck_alerts();
     my $role = 'role';      my $role = 'role';
     if ($mode eq 'upload') {      if ($mode eq 'upload') {
         $role = 'courserole';          $role = 'courserole';
       } else {
           $authen_check = &verify_authen($formname,$context);
     }      }
     $dc_setcourse_code = (<<"SCRIPTTOP");      $dc_setcourse_code = (<<"SCRIPTTOP");
   $authen_check
   
 function setCourse() {  function setCourse() {
     var course = document.$formname.dccourse.value;      var course = document.$formname.dccourse.value;
     if (course != "") {      if (course != "") {
Line 4613  SCRIPTTOP Line 4695  SCRIPTTOP
             }              }
         }          }
     }      }
     document.$formname.submit();      var authcheck = auth_check();
       if (authcheck == 'ok') {
           document.$formname.submit();
       }
 }  }
   
 ENDSCRIPT  ENDSCRIPT
     } else {      } else {
         $dc_setcourse_code .=  "          $dc_setcourse_code .=  "
Line 4636  ENDSCRIPT Line 4720  ENDSCRIPT
         return -1;          return -1;
     }      }
 ENDSCRIPT  ENDSCRIPT
       return $dc_setcourse_code;
   }
   
   sub verify_authen {
       my ($formname,$context) = @_;
       my %alerts = &authcheck_alerts();
       my $finish = "return 'ok';";
       if ($context eq 'author') {
           $finish = "document.$formname.submit();";
       }
       my $outcome = <<"ENDSCRIPT";
   
   function auth_check() {
       var logintype;
       if (document.$formname.login.length) {
           if (document.$formname.login.length > 0) {
               var loginpicked = 0;
               for (var i=0; i<document.$formname.login.length; i++) {
                   if (document.$formname.login[i].checked == true) {
                       loginpicked = 1;
                       logintype = document.$formname.login[i].value;
                   }
               }
               if (loginpicked == 0) {
                   alert("$alerts{'authen'}");
                   return;
               }
           }
       } else {
           logintype = document.$formname.login.value;
       }
       if (logintype == 'nochange') {
           return 'ok';
       }
       var argpicked = document.$formname.elements[logintype+'arg'].value;
       if ((argpicked == null) || (argpicked == '') || (typeof argpicked == 'undefined')) {
           var alertmsg = '';
           switch (logintype) {
               case 'krb':
                   alertmsg = '$alerts{'krb'}';
                   break;
               case 'int':
                   alertmsg = '$alerts{'ipass'}';
               case 'fsys':
                   alertmsg = '$alerts{'ipass'}';
                   break;
               case 'loc':
                   alertmsg = '';
                   break;
               default:
                   alertmsg = '';
           }
           if (alertmsg != '') {
               alert(alertmsg);
               return;
           }
       }
       $finish
   }
   ENDSCRIPT
 }  }
   
 sub sectioncheck_alerts {  sub sectioncheck_alerts {
Line 4657  sub sectioncheck_alerts { Line 4801  sub sectioncheck_alerts {
     return %alerts;      return %alerts;
 }  }
   
   sub authcheck_alerts {
       my %alerts = 
           &Apache::lonlocal::texthash(
                       authen => 'You must choose an authentication type.',
                       krb    => 'You need to specify the Kerberos domain.',
                       ipass  => 'You need to specify the initial password.',
           );
       return %alerts;
   }
   
 1;  1;
   

Removed from v.1.35  
changed lines
  Added in v.1.47


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.