Diff for /loncom/interface/Attic/londropadd.pm between versions 1.66 and 1.76

version 1.66, 2003/05/21 16:06:09 version 1.76, 2003/07/21 17:54:43
Line 79  sub modifystudent { Line 79  sub modifystudent {
             # We are in this course              # We are in this course
             my $section=$1;              my $section=$1;
             $section='' if ($course eq $courseid.'_st');              $section='' if ($course eq $courseid.'_st');
             if ( ((!$section) && (!$csec)) || ($section ne $csec) ) {              if ($section eq $csec) {
                   $result .= 'ok:';
               } elsif ( ((!$section) && (!$csec)) || ($section ne $csec) ) {
                 my (undef,$end,$start)=split(/\_/,$roles{$course});                  my (undef,$end,$start)=split(/\_/,$roles{$course});
                 my $now=time;                  my $now=time;
                 # if this is an active role                   # if this is an active role 
                 if (!($start && ($now<$start)) || !($end && ($now>$end))) {                  if (!($start && ($now<$start)) || !($end && ($now>$end))) {
                     my $reply=&Apache::lonnet::modifystudent                      my $reply=&Apache::lonnet::modifystudent
                         ($udom,$unam,'','','','','','','',                          # dom  name  id mode pass     f     m     l     g
                           ($udom,$unam,'',  '',  '',undef,undef,undef,undef,
                          $section,time,undef,undef,$desiredhost);                           $section,time,undef,undef,$desiredhost);
                     $result .= $reply.':';                      $result .= $reply.':';
                 }                  }
Line 151  sub print_main_menu { Line 154  sub print_main_menu {
 </font>  </font>
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=classlist">View Classlist</a>      <a href="/adm/dropadd?action=classlist">View Class List</a>
 </font>  </font>
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
Line 215  sub javascript_validations { Line 218  sub javascript_validations {
     my $authheader = &Apache::loncommon::authform_header(%param);      my $authheader = &Apache::loncommon::authform_header(%param);
     my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();      my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();
     return (<<ENDPICK);      return (<<ENDPICK);
 function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec) {  function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) {
     var foundatype=0;      var foundatype=0;
     var message='';      var message='';
     if (founduname==0) {      if (founduname==0) {
Line 251  function verify_message (vf,founduname,f Line 254  function verify_message (vf,founduname,f
         }          }
     }      }
   
     if (foundname==0) { message='No name fields specified. '; }      if (foundname==0) { message='name fields'; }
     if (foundid==0) { message+='No ID or student number field specified. '; }      if (foundid==0) { if (message!='') { message+=', '; } message+='student number field'; }
     if (foundsec==0) { message+='No section or group field specified. '; }      if (foundsec==0) {  if (message!='') { message+=', '; } message+='section or group field'; }
     if (vf.startdate.value=='') {      if (foundemail==0) {  if (message!='') { message+=', '; } message+='email address field'; }
  message+='No starting date set. ';  
     }  
     if (vf.enddate.value=='') {  
         message+='No ending date set. ';  
     }  
     if ((vf.enddate.value!='') && (vf.startdate.value!='')) {  
        if (Math.round(vf.enddate.value)<Math.round(vf.startdate.value)) {  
           alert('Ending date is before starting date');  
           return;  
        }  
     }  
     if (message!='') {      if (message!='') {
        message+='Continue enrollment?';         message='Not specified (optional): '+message+'.  Continue enrollment?';
        if (confirm(message)) {         if (confirm(message)) {
   pclose();  
           vf.state.value='enrolling';            vf.state.value='enrolling';
   vf.submit();    vf.submit();
        }         }
     } else {      } else {
       pclose();  
       vf.state.value='enrolling';        vf.state.value='enrolling';
       vf.submit();        vf.submit();
     }      }
 }  }
   
   $authheader
   ENDPICK
   
     function pclose() {  }
         parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",  
                  "height=350,width=350,scrollbars=no,menubar=no");  
         parmwin.close();  
     }  
   
     $pjump_def  
   
     function dateset() {  sub javascript_validations_without_auth {
         if (document.studentform.pres_marker.value=='end') {      my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();
            document.studentform.enddate.value=      return (<<ENDPICK);
        document.studentform.pres_value.value;  function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) {
         }      var foundatype=0;
         if (document.studentform.pres_marker.value=='start') {      var message='';
            document.studentform.startdate.value=      if (founduname==0) {
        document.studentform.pres_value.value;   alert('You need to specify the username field');
         }          return;
         pclose();  
     }      }
       if (foundname==0) { message='name fields'; }
       if (foundid==0) { if (message!='') { message+=', '; } message+='student number field'; }
       if (foundsec==0) {  if (message!='') { message+=', '; } message+='section or group field'; }
       if (foundemail==0) {  if (message!='') { message+=', '; } message+='email address field'; }
       if (message!='') {
          message='Not specified (optional): '+message+'.  Continue enrollment?';
          if (confirm(message)) {
             vf.state.value='enrolling';
     vf.submit();
          }
       } else {
         vf.state.value='enrolling';
         vf.submit();
       }
   }
   
 $authheader  
 ENDPICK  ENDPICK
   
 }  }
Line 316  function verify(vf) { Line 315  function verify(vf) {
     var foundname=0;      var foundname=0;
     var foundid=0;      var foundid=0;
     var foundsec=0;      var foundsec=0;
       var foundemail=0;
     var tw;      var tw;
     for (i=0;i<=vf.nfields.value;i++) {      for (i=0;i<=vf.nfields.value;i++) {
         tw=eval('vf.f'+i+'.selectedIndex');          tw=eval('vf.f'+i+'.selectedIndex');
Line 324  function verify(vf) { Line 324  function verify(vf) {
         if (tw==7) { foundid=1; }          if (tw==7) { foundid=1; }
         if (tw==8) { foundsec=1; }          if (tw==8) { foundsec=1; }
         if (tw==9) { foundpwd=1; }          if (tw==9) { foundpwd=1; }
           if (tw==10) { foundemail=1; }
     }      }
     verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec);      verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail);
 }  }
   
 //  //
Line 344  function verify(vf) { Line 345  function verify(vf) {
 // 7 = id  // 7 = id
 // 8 = section  // 8 = section
 // 9 = ipwd  (password)  // 9 = ipwd  (password)
 //  // 10 = email address
   
 function flip(vf,tf) {  function flip(vf,tf) {
    var nw=eval('vf.f'+tf+'.selectedIndex');     var nw=eval('vf.f'+tf+'.selectedIndex');
    var i;     var i;
Line 466  sub print_upload_manager_footer { Line 468  sub print_upload_manager_footer {
     my $intform = &Apache::loncommon::authform_internal(%param);      my $intform = &Apache::loncommon::authform_internal(%param);
     my $locform = &Apache::loncommon::authform_local(%param);      my $locform = &Apache::loncommon::authform_local(%param);
     my $domform = &domain_form($defdom);      my $domform = &domain_form($defdom);
       my $date_table = &date_setting_table();
     $r->print(<<ENDPICK);      $r->print(<<ENDPICK);
 </table>  </table>
 <input type=hidden name=nfields value=$i>  <input type=hidden name=nfields value=$i>
Line 484  $locform Line 487  $locform
 <h3>LON-CAPA Domain for Students</h3>  <h3>LON-CAPA Domain for Students</h3>
 LON-CAPA domain: $domform <p>  LON-CAPA domain: $domform <p>
 <h3>Starting and Ending Dates</h3>  <h3>Starting and Ending Dates</h3>
 <input type="hidden" value=''          name="pres_value"  >  <p>
 <input type="hidden" value=''          name="pres_type"   >  $date_table
 <input type="hidden" value=''          name="pres_marker" >  </p>
 <input type="hidden" value='$today'    name="startdate"   >  
 <input type="hidden" value='$halfyear' name="enddate"     >  
 <a   
  href="javascript:pjump('date_start','Enrollment Starting Date',document.studentform.startdate.value,'start','studentform.pres','dateset');"  
 >Set Starting Date</a><p>  
   
 <a   
  href="javascript:pjump('date_end','Enrollment Ending Date',document.studentform.enddate.value,'end','studentform.pres','dateset');"  
 >Set Ending Date</a><p>  
 <h3>Full Update</h3>  <h3>Full Update</h3>
 <input type=checkbox name=fullup value=yes> Full update   <input type=checkbox name=fullup value=yes> Full update 
 (also print list of users not enrolled anymore)<p>  (also print list of users not enrolled anymore)<p>
Line 539  sub print_upload_manager_form { Line 533  sub print_upload_manager_form {
                ['gen','Generation'],                 ['gen','Generation'],
        ['id','ID/Student Number'],         ['id','ID/Student Number'],
                ['sec','Group/Section'],                 ['sec','Group/Section'],
        ['ipwd','Initial Password']);         ['ipwd','Initial Password'],
                  ['email','EMail Address']);
  if ($ENV{'form.upfile_associate'} eq 'reverse') {   if ($ENV{'form.upfile_associate'} eq 'reverse') {
     &Apache::loncommon::csv_print_samples($r,\@records);      &Apache::loncommon::csv_print_samples($r,\@records);
     $i=&Apache::loncommon::csv_print_select_table($r,\@records,\@d);      $i=&Apache::loncommon::csv_print_select_table($r,\@records,\@d);
Line 558  sub print_upload_manager_form { Line 553  sub print_upload_manager_form {
 # ======================================================= Enroll single student  # ======================================================= Enroll single student
 sub enroll_single_student {  sub enroll_single_student {
     my $r=shift;      my $r=shift;
       #
       # We do the dates first because the action of making them the defaul
       # in the course is entirely seperate from the action of enrolling the
       # student.  Also, a failure in setting the dates as default is not fatal
       # to the process of enrolling / modifying a student.
       my ($startdate,$enddate) = &get_dates_from_form();
       if ($ENV{'form.makedatesdefault'}) {
           $r->print(&make_dates_default($startdate,$enddate));
       }
   
     $r->print('<h3>Enrolling Student</h3>');      $r->print('<h3>Enrolling Student</h3>');
     $r->print('<p>Enrolling '.$ENV{'form.cuname'}." \@ ".      $r->print('<p>Enrolling '.$ENV{'form.cuname'}." \@ ".
               $ENV{'form.lcdomain'}.'</p>');                $ENV{'form.lcdomain'}.'</p>');
Line 604  sub enroll_single_student { Line 609  sub enroll_single_student {
                  $ENV{'form.cstid'},$amode,$genpwd,                   $ENV{'form.cstid'},$amode,$genpwd,
                  $ENV{'form.cfirst'},$ENV{'form.cmiddle'},                   $ENV{'form.cfirst'},$ENV{'form.cmiddle'},
                  $ENV{'form.clast'},$ENV{'form.cgen'},                   $ENV{'form.clast'},$ENV{'form.cgen'},
                  $ENV{'form.csec'},$ENV{'form.enddate'},                   $ENV{'form.csec'},$enddate,
                  $ENV{'form.startdate'},$ENV{'form.forceid'},                   $startdate,$ENV{'form.forceid'},
                  $desiredhost);                   $desiredhost);
             if ($login_result =~ /^ok/) {              if ($login_result =~ /^ok/) {
                 $r->print($login_result);                  $r->print($login_result);
Line 624  sub enroll_single_student { Line 629  sub enroll_single_student {
     }          }    
 }  }
   
 # ======================================================= Menu Phase Two Enroll  sub setup_date_selectors {
       my ($starttime,$endtime) = @_;
       if (! defined($starttime)) {
           $starttime = time;
           if (exists($ENV{'course.'.$ENV{'request.course.id'}.
                               '.default_enrollment_start_date'})) {
               $starttime = $ENV{'course.'.$ENV{'request.course.id'}.
                                     '.default_enrollment_start_date'};
           }
       }
       if (! defined($endtime)) {
           $endtime = time+(6*30*24*60*60); # 6 months from now, approx
           if (exists($ENV{'course.'.$ENV{'request.course.id'}.
                               '.default_enrollment_end_date'})) {
               $endtime = $ENV{'course.'.$ENV{'request.course.id'}.
                                   '.default_enrollment_end_date'};
           }
       }
       my $startdateform = &Apache::lonhtmlcommon::date_setter('studentform',
                                                               'startdate',
                                                               $starttime);
       my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform',
                                                             'enddate',
                                                             $endtime);
       return ($startdateform,$enddateform);
   }
   
   sub get_dates_from_form {
       my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate');
       my $enddate   = &Apache::lonhtmlcommon::get_date_from_form('enddate');
       if ($ENV{'form.no_end_date'}) {
           $enddate = 0;
       }
       return ($startdate,$enddate);
   }
   
   sub date_setting_table {
       my ($starttime,$endtime) = @_;
       my ($startform,$endform)=&setup_date_selectors($starttime,$endtime);
       my $dateDefault = '<nobr>'.
           '<input type="checkbox" name="makedatesdefault" />'.
           ' make these dates the default for future enrollment';
       my $perpetual = '<nobr><input type="checkbox" name="no_end_date"';
       if (defined($endtime) && $endtime == 0) {
           $perpetual .= ' checked';
       }
       $perpetual.= ' />'.' no ending date</nobr>';
       my $result = '';
       $result .= "<table>\n";
       $result .= '<tr><td align="right">Starting Date</td>'.
           '<td>'.$startform.'</td>'.
           '<td>'.$dateDefault.'</td>'."</tr>\n";
       $result .= '<tr><td align="right">Ending Date</td>'.
           '<td>'.$endform.'</td>'.
           '<td>'.$perpetual.'</td>'."</tr>\n";
       $result .= "</table>\n";
       return $result;
   }
   
   sub make_dates_default {
       my ($startdate,$enddate) = @_;
       my $result = '';
       my $dom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
       my $crs = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};
       my $put_result = &Apache::lonnet::put('environment',
               {'default_enrollment_start_date'=>$startdate,
                'default_enrollment_end_date'  =>$enddate},$dom,$crs);
       if ($put_result eq 'ok') {
           $result .= "Set default start and end dates for course<br />";
           #
           # Refresh the course environment
           &Apache::lonnet::coursedescription($ENV{'request.course.id'});
       } else {
           $result .= "Unable to set default dates for course:".$put_result.
               '<br />';
       }
       return $result;
   }
   
   ##
   ## Single student enrollment routines (some of them)
   ##
   sub get_student_username_domain_form {
       my $r = shift;
       my $domform = &Apache::loncommon::select_dom_form
           ($r->dir_config('lonDefDomain'),'cudomain',0);
       $r->print(<<END);
   <input type="hidden" name="action" value="enrollstudent" />
   <input type="hidden" name="state"  value="gotusername" />
   <h3>Enroll One Student</h3>
   <table>
   <tr><th>Username:</th>
       <td><input type="text" name="cuname"  size="15" /></td></tr>
   <tr><th>Domain:</th>
       <td>$domform</td></tr>
   <tr><th>&nbsp;</th>
       <td>
       <input type="submit" name="Begin Enrollment" value="Begin Enrollment" />
       </td></tr>
   </table>
   END
       return;
   }
   
 sub print_enroll_single_student_form {  sub print_enroll_single_student_form {
     my $r=shift;      my $r=shift;
     $r->print("<h3>Enroll One Student</h3>");      $r->print("<h3>Enroll One Student</h3>");
     my $today    = time;      #
     my $halfyear = $today+15552000;      my $username = $ENV{'form.cuname'};
     my $defdom=$r->dir_config('lonDefDomain');      my $domain   = $ENV{'form.cudomain'};
     # Set up authentication forms      my $home = &Apache::lonnet::homeserver($username,$domain);
     my ($krbdef,$krbdefdom) =      # $new_user flags whether we are creating a new user or using an old one
         &Apache::loncommon::get_kerberos_defaults($defdom);      my $new_user = 1;
     my $javascript_validations=&javascript_validations($krbdefdom);      if ($home ne 'no_host') {
     my %param = ( formname => 'document.studentform',          $new_user = 0;
                   kerb_def_dom => $krbdefdom,      }
                   kerb_def_auth => $krbdef      &Apache::lonnet::logthis('home = '.$home);
                   );      #
     my $krbform = &Apache::loncommon::authform_kerberos(%param);      my $user_data_html = '';
     my $intform = &Apache::loncommon::authform_internal(%param);      my $javascript_validations = '';
     my $locform = &Apache::loncommon::authform_local(%param);      if ($new_user) {
     # Set up domain selection form          my $defdom=$r->dir_config('lonDefDomain');
     my $domform = &domain_form($defdom);          # Set up authentication forms
     # Print it all out          my ($krbdef,$krbdefdom) =
               &Apache::loncommon::get_kerberos_defaults($domain);
           $javascript_validations=&javascript_validations($krbdefdom);
           my %param = ( formname => 'document.studentform',
                         kerb_def_dom => $krbdefdom,
                         kerb_def_auth => $krbdef
                         );
           my $krbform = &Apache::loncommon::authform_kerberos(%param);
           my $intform = &Apache::loncommon::authform_internal(%param);
           my $locform = &Apache::loncommon::authform_local(%param);
           #
           # Set up domain selection form
           my $homeserver_form = '';
           my %servers = &Apache::loncommon::get_library_servers($domain);
           $homeserver_form = '<select name="lcserver" size="1">'."\n".
               '<option value="default" selected>default</option>'."\n";
           while (my ($servername,$serverdescription) = each (%servers)) {
               $homeserver_form .= '<option value="'.$servername.'">'.
                   $serverdescription."</option>\n";
           }
           $homeserver_form .= "</select>\n";
           #
           #
           $user_data_html = <<END;
   <h3>User Data for $username\@$domain</h3>
   <table>
   <tr><th>First Name:</th>
       <td><input type="text" name="cfirst"  size="15"></td></tr>
   <tr><th>Middle Name:</th>
       <td><input type="text" name="cmiddle" size="15"></td></tr>
   <tr><th>Last Name:</th>
       <td><input type="text" name="clast"   size="15"></td></tr>
   <tr><th>Generation:</th>
       <td><input type="text" name="cgen"    size="5"> </td></tr>
   <tr><th>Home Server:</th>
       <td>$homeserver_form</td></tr>
   </table>
   <h3>Password</h3>
   Please select an authentication mechanism
   <table>
   <p>
   $krbform
   <br />
   $intform
   <br />
   $locform
   </p>
   END
       } else {
           # User already exists.  Do not worry about authentication
           my %uenv = &Apache::lonnet::dump('environment',$domain,$username);
           $javascript_validations = &javascript_validations_without_auth();
           $user_data_html = <<END;
   <h3>User Data for $username\@$domain</h3>
   <input type="hidden" name="lcserver" value="default" />
   <table>
   <tr><th>First Name:</th>
       <td>
       <input type="text" name="cfirst" value="$uenv{'firstname'}" size="15" />
       </td></tr>
   <tr><th>Middle Name:</th>
       <td>
       <input type="text" name="cmiddle" value="$uenv{'middlename'}" size="15" />
       </td></tr>
   <tr><th>Last Name:</th>
       <td>
       <input type="text" name="clast"value="$uenv{'lastname'}" size="15" />
       </td></tr>
   <tr><th>Generation:</th>
       <td>
       <input type="text" name="cgen" value="$uenv{'generation'}" size="5" />
       </td></tr>
   </table>
   END
       }
       my $date_table = &date_setting_table();
           # Print it all out
     $r->print(<<END);      $r->print(<<END);
 <input type="hidden" name="action" value="enrollstudent">  <input type="hidden" name="action" value="enrollstudent" />
 <input type="hidden" name="state"  value="done">  <input type="hidden" name="state"  value="done" />
   <input type="hidden" name="cuname" value="$username" />
   <input type="hidden" name="lcdomain" value="$domain" />
 <script type="text/javascript" language="Javascript">  <script type="text/javascript" language="Javascript">
 function verify(vf) {  function verify(vf) {
     var founduname=0;      var founduname=0;
Line 685  function clearpwd(vf) { Line 870  function clearpwd(vf) {
 }  }
   
 </script>  </script>
 <h3>Personal Data</h3>  
 <table>  
 <tr><td>First Name:</td><td> <input type="text" name="cfirst"  size="15"></td></tr>  
 <tr><td>Middle Name:</td><td> <input type="text" name="cmiddle" size="15"></td></tr>  
 <tr><td>Last Name: </td><td><input type="text" name="clast"   size="15"></td></tr>  
 <tr><td>Generation: </td><td><input type="text" name="cgen"    size="5"> </td></tr>  
 </table>  
   
 <h3>Login Data</h3>  $user_data_html
 <p>Username: <input type="text" name="cuname"  size="15"></p>  
 <p>Domain:   $domform</p>  
 <p>Note: login settings below  will not take effect if the user already exists  
 </p><p>  
 $krbform  
 </p><p>  
 $intform  
 </p><p>  
 $locform  
 </p><p>  
   
 <h3>Course Data</h3>  <h3>Course Data</h3>
   
 <p>Group/Section: <input type="text" name="csec" size="5" />  <p>Group/Section: <input type="text" name="csec" size="5" />
 <p>  <p>
 <!-- Date setting form elements -->  $date_table
 <input type="hidden" name="pres_value"  value='' />  
 <input type="hidden" name="pres_type"   value='' />  
 <input type="hidden" name="pres_marker" value='' />  
 <input type="hidden" name="startdate"   value='$today'    />  
 <input type="hidden" name="enddate"     value='$halfyear' />  
 </p><p>  
 <a   
  href="javascript:pjump('date_start','Enrollment Starting Date',document.studentform.startdate.value,'start','studentform.pres','dateset');"  
 >Set Starting Date</a>  
 </p><p>  
 <a   
  href="javascript:pjump('date_end','Enrollment Ending Date',document.studentform.enddate.value,'end','studentform.pres','dateset');"  
 >Set Ending Date</a>  
 </p>  </p>
 <h3>ID/Student Number</h3>  <h3>ID/Student Number</h3>
 <p>  <p>
Line 768  sub print_html_classlist { Line 923  sub print_html_classlist {
 <input type="hidden" name="action" value="$ENV{'form.action'}" />  <input type="hidden" name="action" value="$ENV{'form.action'}" />
 <input type="hidden" name="state"  value="" />  <input type="hidden" name="state"  value="" />
 <p>  <p>
 <font size="+1">Current Classlist</font>  <font size="+1">Current Class List</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 END  END
     if ($ENV{'form.action'} ne 'modifystudent') {      if ($ENV{'form.action'} ne 'modifystudent') {
Line 873  END Line 1028  END
         $excel_workbook->set_tempdir('/home/httpd/perl/tmp');          $excel_workbook->set_tempdir('/home/httpd/perl/tmp');
         $excel_sheet = $excel_workbook->addworksheet('classlist');          $excel_sheet = $excel_workbook->addworksheet('classlist');
         #          #
         my $description = 'Classlist for '.          my $description = 'Class List for '.
             $ENV{'course.'.$ENV{'request.course.id'}.'.description'};              $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
         $excel_sheet->write($row++,0,$description);          $excel_sheet->write($row++,0,$description);
         #          #
Line 986  sub print_modify_student_form { Line 1141  sub print_modify_student_form {
     # determine the students starting and ending times and section      # determine the students starting and ending times and section
     my ($starttime,$endtime,$section) = &get_enrollment_data($sname,$sdom);      my ($starttime,$endtime,$section) = &get_enrollment_data($sname,$sdom);
     # Deal with date forms      # Deal with date forms
     my $startdateform = &Apache::lonhtmlcommon::date_setter('studentform',      my $date_table = &date_setting_table($starttime,$endtime);
                                                             'startdate',  
                                                             $starttime);  
     my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform',  
                                                           'enddate',  
                                                           $endtime);  
     #      #
     if (! exists($ENV{'form.Status'}) ||       if (! exists($ENV{'form.Status'}) || 
         $ENV{'form.Status'} !~ /^(Any|Expired|Active)$/) {          $ENV{'form.Status'} !~ /^(Any|Expired|Active)$/) {
Line 1031  Disable ID/Student Number Safeguard and Line 1181  Disable ID/Student Number Safeguard and
 (only do if you know what you are doing)  (only do if you know what you are doing)
 </p><p>  </p><p>
 <b>Section</b>: <input type="text" name="section" value="$section" size="4"/>  <b>Section</b>: <input type="text" name="section" value="$section" size="4"/>
 </p><p>  
 <table>  
 <tr><td align="right"><b>Starting Date:</b></td><td>$startdateform</td></tr>  
 <tr><td align="right"><b>Ending Date:</b></td><td>$enddateform</td></tr>  
 </table>  
 </p>  </p>
   <p>$date_table</p>
 <input type="submit" value="Submit Modifications" />  <input type="submit" value="Submit Modifications" />
 </body></html>  </body></html>
 END  END
Line 1048  END Line 1194  END
 #  #
 sub modify_single_student {  sub modify_single_student {
     my $r = shift;      my $r = shift;
       #
       # Do the date defaults first
       my ($starttime,$endtime) = &get_dates_from_form();
       if ($ENV{'form.makedatesdefault'}) {
           $r->print(&make_dates_default($starttime,$endtime));
       }
     # Get the 'sortby' and 'Status' variables so the user goes back to their      # Get the 'sortby' and 'Status' variables so the user goes back to their
     # previous screen      # previous screen
     my $sortby = $ENV{'form.sortby'};      my $sortby = $ENV{'form.sortby'};
Line 1080  sub modify_single_student { Line 1232  sub modify_single_student {
     my $section    = $ENV{'form.section'};      my $section    = $ENV{'form.section'};
     my $courseid   = $ENV{'request.course.id'};      my $courseid   = $ENV{'request.course.id'};
     my $sid        = $ENV{'form.id'};      my $sid        = $ENV{'form.id'};
     my $starttime = &Apache::lonhtmlcommon::get_date_from_form('startdate');  
     my $endtime   = &Apache::lonhtmlcommon::get_date_from_form('enddate');  
     my $displayable_starttime = localtime($starttime);      my $displayable_starttime = localtime($starttime);
     my $displayable_endtime   = localtime($endtime);      my $displayable_endtime   = localtime($endtime);
     #       # 
Line 1132  sub modify_single_student { Line 1282  sub modify_single_student {
 </table>  </table>
 <h3>Role Information</h3>  <h3>Role Information</h3>
 <table>  <table>
 <tr><td>Start Time  </td><td> $displayable_starttime </td></tr>  <tr><td align="right"><b>Start Time:</b></td><td> $displayable_starttime </td></tr>
 <tr><td>End Time    </td><td> $displayable_endtime   </td></tr>  <tr><td align="right"><b>End Time:</b></td><td> $displayable_endtime   </td></tr>
 </table>  </table>
 <p>  <p>
 END  END
Line 1192  sub get_enrollment_data { Line 1342  sub get_enrollment_data {
     my $section = '';      my $section = '';
     my $count = scalar(keys(%roles));      my $count = scalar(keys(%roles));
     while (my ($course,$role) = each(%roles)) {      while (my ($course,$role) = each(%roles)) {
         &Apache::lonnet::logthis('course = '.$course.' role = '.$role);  
         if ($course=~ /^\/$courseid\/*\s*(\w+)*_st$/ ) {          if ($course=~ /^\/$courseid\/*\s*(\w+)*_st$/ ) {
             #              #
             # Get active role              # Get active role
Line 1396  sub upfile_drop_add { Line 1545  sub upfile_drop_add {
         }          }
     }      }
     #      #
     my $startdate = $ENV{'form.startdate'};      my ($startdate,$enddate) = &get_dates_from_form();
     my $enddate   = $ENV{'form.enddate'};      if ($ENV{'form.makedatesdefault'}) {
     if ($startdate=~/\D/) { $startdate=''; }          $r->print(&make_dates_default($startdate,$enddate));
     if ($enddate=~/\D/)   { $enddate=''; }      }
     # Determine domain and desired host (home server)      # Determine domain and desired host (home server)
     my $domain=$ENV{'form.lcdomain'};      my $domain=$ENV{'form.lcdomain'};
     my $desiredhost = $ENV{'form.lcserver'};      my $desiredhost = $ENV{'form.lcserver'};
Line 1435  sub upfile_drop_add { Line 1584  sub upfile_drop_add {
         #######################################          #######################################
         ##         Enroll Students           ##          ##         Enroll Students           ##
         #######################################          #######################################
         $r->print('<h3>Enrolling Students</h3>');          $r->print('<h3>Enrolling Students</h3>'."\n".'<p>');
         my $count=0;          my $count=0;
         my $flushc=0;          my $flushc=0;
         my %student=();          my %student=();
Line 1464  sub upfile_drop_add { Line 1613  sub upfile_drop_add {
                     }                      }
                 }                  }
                 if ($entries{$fields{'username'}}=~/\W/) {                  if ($entries{$fields{'username'}}=~/\W/) {
                     $r->print('<p><b>Unacceptable username: '.                      $r->print('<br /><b>Unacceptable username: '.
                               $entries{$fields{'username'}}.' for user '.                                $entries{$fields{'username'}}.' for user '.
                               $fname.' '.$mname.' '.$lname.' '.$gen.'</b><p>');                                $fname.' '.$mname.' '.$lname.' '.$gen.'</b>');
                 } else {                  } else {
                     # determine section number                      # determine section number
                     my $sec='';                      my $sec='';
Line 1484  sub upfile_drop_add { Line 1633  sub upfile_drop_add {
                         }                          }
                         $id=~tr/A-Z/a-z/;                          $id=~tr/A-Z/a-z/;
                     }                      }
                       # determine email address
                       my $email='';
                       if (defined($fields{'email'})) {
                           if (defined($entries{$fields{'email'}})) {
                               $email=$entries{$fields{'email'}};
                               unless ($email=~/^[^\@]+\@[^\@]+$/) { $email=''; }
                           }
                       }
                     # determine student password                      # determine student password
                     my $password='';                      my $password='';
                     if ($genpwd) {                       if ($genpwd) { 
Line 1506  sub upfile_drop_add { Line 1663  sub upfile_drop_add {
                         my $reply=&Apache::lonnet::modifystudent                          my $reply=&Apache::lonnet::modifystudent
                             ($domain,$username,$id,$amode,$password,                              ($domain,$username,$id,$amode,$password,
                              $fname,$mname,$lname,$gen,$sec,$enddate,                               $fname,$mname,$lname,$gen,$sec,$enddate,
                              $startdate,$ENV{'form.forceid'},$desiredhost);                               $startdate,$ENV{'form.forceid'},$desiredhost,
                                $email);
                         if ($reply ne 'ok') {                          if ($reply ne 'ok') {
                             $r->print('<p><b>'.                              $reply =~ s/^error://;
                                       'Error enrolling '.$username.': '.                              $r->print('<br /><b>'.$username.'</b>:'.
                                       $reply.'</b></p>');                                        '  Unable to enroll: '.$reply);
           } else {            } else {
                             $count++; $flushc++;                              $count++; $flushc++;
                             $student{$username}=1;                              $student{$username}=1;
Line 1521  sub upfile_drop_add { Line 1679  sub upfile_drop_add {
                             }                              }
                         }                          }
                     } else {                      } else {
                         $r->print("<p><b>No password for $username</b><p>");                          $r->print('<br /><b>'.$username.'</b>:'.
                              '  Unable to enroll: No password specified.');
                     }                      }
                 }                  }
             }              }
         } # end of foreach (@studentdata)          } # end of foreach (@studentdata)
         $r->print('<p>Processed Students: '.$count.'</p>');          $r->print('</p><p>Processed Students: '.$count.'</p>');
         $r->print("<p>If active, the new role will be available when the ".          $r->print("<p>If active, the new role will be available when the ".
                   "students next log in to LON-CAPA.</p>");                    "students next log in to LON-CAPA.</p>");
         #####################################          #####################################
Line 1602  The response to the request is governed Line 1761  The response to the request is governed
  upload           enrolling      enroll students based on upload   upload           enrolling      enroll students based on upload
  drop             undefined      print the classlist ready to drop   drop             undefined      print the classlist ready to drop
  drop             done           drop the selected students   drop             done           drop the selected students
  enrollstudent    undefined      print single student enroll menu   enrollstudent    undefined      print student username domain form
    enrollstudent    gotusername    print single student enroll menu
  enrollstudent    enrolling      enroll student   enrollstudent    enrolling      enroll student
  classlist        undefined      print html classlist   classlist        undefined      print html classlist
  classlist        csv            print csv classlist   classlist        csv            print csv classlist
Line 1670  sub handler { Line 1830  sub handler {
         }          }
     } elsif ($ENV{'form.action'} eq 'enrollstudent') {      } elsif ($ENV{'form.action'} eq 'enrollstudent') {
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
               &get_student_username_domain_form($r);
           } elsif ($ENV{'form.state'} eq 'gotusername') {
             &print_enroll_single_student_form($r);              &print_enroll_single_student_form($r);
         } elsif ($ENV{'form.state'} eq 'enrolling') {          } elsif ($ENV{'form.state'} eq 'enrolling') {
             &enroll_single_student($r);              &enroll_single_student($r);
         } else {          } else {
             &print_enroll_single_student_form($r);              &get_student_username_domain_form($r);
         }          }
     } elsif ($ENV{'form.action'} eq 'classlist') {      } elsif ($ENV{'form.action'} eq 'classlist') {
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {

Removed from v.1.66  
changed lines
  Added in v.1.76


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