Diff for /loncom/interface/Attic/londropadd.pm between versions 1.83 and 1.88

version 1.83, 2003/08/25 14:31:20 version 1.88, 2003/11/06 20:04:06
Line 42  use Apache::loncommon(); Line 42  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::Constants qw(:common :http REDIRECT);  use Apache::Constants qw(:common :http REDIRECT);
 use Spreadsheet::WriteExcel;  use Spreadsheet::WriteExcel;
   use Apache::lonlocal;
   
 ###############################################################  ###############################################################
 ###############################################################  ###############################################################
 sub header {  sub header {
     my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager');      my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager');
       my $title = &mt('LON-CAPA Enrollment Manager');
     return(<<ENDHEAD);      return(<<ENDHEAD);
 <html>  <html>
 <head>  <head>
 <title>LON-CAPA Enrollment Manager</title>  <title>$title</title>
 </head>  </head>
 $bodytag  $bodytag
 <form method="post" enctype="multipart/form-data"    <form method="post" enctype="multipart/form-data"  
Line 79  sub modifystudent { Line 81  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 eq $csec) {              if (defined($csec) && $section eq $csec) {
                 $result .= 'ok:';                  $result .= 'ok:';
             } elsif ( ((!$section) && (!$csec)) || ($section ne $csec) ) {              } elsif ( ((!$section) && (!$csec)) || ($section ne $csec) ) {
                 my (undef,$end,$start)=split(/\_/,$roles{$course});                  my (undef,$end,$start)=split(/\_/,$roles{$course});
Line 139  sub domain_form { Line 141  sub domain_form {
 #  Menu Phase One  #  Menu Phase One
 sub print_main_menu {  sub print_main_menu {
     my $r=shift;      my $r=shift;
       my %Text = &Apache::lonlocal::texthash
           ('upload'    => 'Upload a class list',
            'enrollone' => 'Enroll a single student',
            'modify'    => 'Modify student data',
            'view'      => 'View Class List',
            'drop'      => 'Drop Students');
   
     $r->print(<<END);      $r->print(<<END);
 <p>  <p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=upload">Upload a course list</a>      <a href="/adm/dropadd?action=upload">$Text{'upload'}</a>
 </font>  </font>
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=enrollstudent">Enroll a single student</a>      <a href="/adm/dropadd?action=enrollstudent">$Text{'enrollone'}</a>
 </font>  </font>
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=modifystudent">Modify student data</a>      <a href="/adm/dropadd?action=modifystudent">$Text{'modify'}</a>
 </font>  </font>
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=classlist">View Class List</a>      <a href="/adm/dropadd?action=classlist">$Text{'view'}</a>
 </font>  </font>
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=drop">Drop Students</a>      <a href="/adm/dropadd?action=drop">$Text{'drop'}</a>
 </font>  </font>
 </p>  </p>
 END  END
Line 186  sub print_upload_manager_header { Line 195  sub print_upload_manager_header {
     }      }
     my $javascript_validations=&javascript_validations($krbdefdom);      my $javascript_validations=&javascript_validations($krbdefdom);
     my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':'');      my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':'');
       $r->print('<h3>'.&mt('Uploading Class List')."</h3>\n".
                 "<hr>\n".
                 '<h3>'.&mt('Identify fields')."</h3>\n");
       $r->print("<p>\n".
                 &mt('Total number of records found in file: [_1].',$distotal).
                 "\n".
                 "</p><hr>\n");
     $r->print(<<ENDPICK);      $r->print(<<ENDPICK);
 <h3>Uploading Class List</h3>  
 <hr>  
 <h3>Identify fields</h3>  
 Total number of records found in file: $distotal <hr />  
 Enter as many fields as you can. The system will inform you and bring you back  Enter as many fields as you can. The system will inform you and bring you back
 to this page if the data selected is insufficient to run your class.<hr />  to this page if the data selected is insufficient to run your class.<hr />
 <input type="button" value="Reverse Association" onClick="javascript:this.form.associate.value='Reverse Association';submit(this.form);" />  <input type="button" value="Reverse Association" onClick="javascript:this.form.associate.value='Reverse Association';submit(this.form);" />
Line 473  sub print_upload_manager_footer { Line 485  sub print_upload_manager_footer {
     my $date_table = &date_setting_table();      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">
 <input type=hidden name=keyfields value="$keyfields">  <input type="hidden" name="keyfields" value="$keyfields">
 <h3>Login Type</h3>  <h3>Login Type</h3>
 <p>Note: this will not take effect if the user already exists</p>  <p>Note: this will not take effect if the user already exists</p>
 <p>  <p>
Line 521  sub print_upload_manager_form { Line 533  sub print_upload_manager_form {
     my $distotal=$total+1;      my $distotal=$total+1;
     my $today=time;      my $today=time;
     my $halfyear=$today+15552000;      my $halfyear=$today+15552000;
     my $defdom=$ENV{'request.role.domain'};      my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
     my ($krbdef,$krbdefdom) =      my ($krbdef,$krbdefdom) =
         &Apache::loncommon::get_kerberos_defaults($defdom);          &Apache::loncommon::get_kerberos_defaults($defdom);
     &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);      &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);
Line 723  sub make_dates_default { Line 735  sub make_dates_default {
 sub get_student_username_domain_form {  sub get_student_username_domain_form {
     my $r = shift;      my $r = shift;
     my $domform = &Apache::loncommon::select_dom_form      my $domform = &Apache::loncommon::select_dom_form
         ($ENV{'request.role.domain'},'cudomain',0);          ($ENV{'course.'.$ENV{'request.course.id'}.'.domain'},'cudomain',0);
     $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="gotusername" />  <input type="hidden" name="state"  value="gotusername" />
Line 754  sub print_enroll_single_student_form { Line 766  sub print_enroll_single_student_form {
     if ($home ne 'no_host') {      if ($home ne 'no_host') {
         $new_user = 0;          $new_user = 0;
     }      }
     &Apache::lonnet::logthis('home = '.$home);  
     #      #
     my $user_data_html = '';      my $user_data_html = '';
     my $javascript_validations = '';      my $javascript_validations = '';
     if ($new_user) {      if ($new_user) {
         my $defdom=$ENV{'request.role.domain'};          my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
         # Set up authentication forms          # Set up authentication forms
         my ($krbdef,$krbdefdom) =          my ($krbdef,$krbdefdom) =
             &Apache::loncommon::get_kerberos_defaults($domain);              &Apache::loncommon::get_kerberos_defaults($domain);
Line 1149  sub print_modify_student_form { Line 1160  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);
       if ($starttime =~ /^error/) {
           $r->print('<h2>Error</h2>');
           $r->print('<p>'.$starttime.'</p>');
           return;
       }
     # Deal with date forms      # Deal with date forms
     my $date_table = &date_setting_table($starttime,$endtime);      my $date_table = &date_setting_table($starttime,$endtime);
     #      #
Line 1348  sub get_enrollment_data { Line 1364  sub get_enrollment_data {
     my %roles = &Apache::lonnet::dump('roles',$sdomain,$sname);      my %roles = &Apache::lonnet::dump('roles',$sdomain,$sname);
     my ($tmp) = keys(%roles);      my ($tmp) = keys(%roles);
     # Bail out if we were unable to get the students roles      # Bail out if we were unable to get the students roles
     return "666" if ($tmp =~ /^(con_lost|error|no_such_host)/i);      return ('error'.$tmp) if ($tmp =~ /^(con_lost|error|no_such_host)/i);
     # Go through the roles looking for enrollment in this course      # Go through the roles looking for enrollment in this course
     my ($end,$start) = (undef,undef);      my ($end,$start) = (undef,undef);
     my $section = '';      my $section = '';
Line 1516  END Line 1532  END
 #  #
 sub print_first_courselist_upload_form {  sub print_first_courselist_upload_form {
     my $r=shift;      my $r=shift;
     my $upfile_select=&Apache::loncommon::upfile_select_html();      my $str;
     my $create_classlist_help =       $str  = '<input type="hidden" name="phase" value="two">';
  &Apache::loncommon::help_open_topic("Course_Create_Class_List",      $str .= '<input type="hidden" name="action" value="upload" />';
            "How do I create a class list from a spreadsheet");      $str .= '<input type="hidden"   name="state"  value="got_file" />';
     my $create_csv_help =      $str .= "<h3>".&mt('Upload a class list')."</h3>\n";
  &Apache::loncommon::help_open_topic("Course_Convert_To_CSV",      $str .= &Apache::loncommon::upfile_select_html();
            "How do I create a CSV file from a spreadsheet");      $str .= "<p>\n";
     $r->print(<<ENDUPFORM);      $str .= '<input type="submit" name="fileupload" value="'.
 <input type=hidden name=phase value=two>          &mt('Upload class list').'">'."\n";
 <h3>Upload a courselist</h3>      $str .= '<input type="checkbox" name="noFirstLine" /> '.
 $upfile_select          &mt('Ignore First Line')."</p>\n";
 <p>      $str .= &Apache::loncommon::help_open_topic("Course_Create_Class_List",
 <input type=submit name="fileupload" value="Upload Courselist">                           "How do I create a class list from a spreadsheet").
 <input type="hidden" name="action" value="upload" />                               "<br />\n";
 <input type="hidden" name="state"  value="got_file" />      $str .= &Apache::loncommon::help_open_topic("Course_Convert_To_CSV",
 <input type="checkbox" name="noFirstLine" /> Ignore First Line<br />                             "How do I create a CSV file from a spreadsheet").
 </p>                                 "<br />\n";
 $create_classlist_help <br />      $str .= "</body>\n</html>\n";
 $create_csv_help      $r->print($str);
 </body></html>  
 ENDUPFORM  
     return;      return;
 }  }
   
Line 1571  sub upfile_drop_add { Line 1585  sub upfile_drop_add {
     } else {      } else {
         my %home_servers = &Apache::loncommon::get_library_servers($domain);          my %home_servers = &Apache::loncommon::get_library_servers($domain);
         if (! exists($home_servers{$desiredhost})) {          if (! exists($home_servers{$desiredhost})) {
             $r->print('<font color="#ff0000">Error:</font>'.              $r->print('<font color="#ff0000">'.&mt('Error').'</font>'.
                       'Invalid home server specified');                        &mt('Invalid home server specified'));
               $r->print("</body>\n</html>\n");
             return;              return;
         }          }
     }      }
Line 1597  sub upfile_drop_add { Line 1612  sub upfile_drop_add {
     if ($amode =~ /^krb/) {      if ($amode =~ /^krb/) {
         if (! defined($genpwd) || $genpwd eq '') {          if (! defined($genpwd) || $genpwd eq '') {
             $r->print('<font color="red" size="+1">'.              $r->print('<font color="red" size="+1">'.
                       'Unable to enroll students:'.'</font>  '.                        &mt('Unable to enroll students').'</font>  '.
                       'No Kerberos domain was specified.</p>');                        &mt('No Kerberos domain was specified.').'</p>');
             $amode = ''; # This causes the loop below to be skipped              $amode = ''; # This causes the loop below to be skipped
         }          }
     }      }
Line 1606  sub upfile_drop_add { Line 1621  sub upfile_drop_add {
         #######################################          #######################################
         ##         Enroll Students           ##          ##         Enroll Students           ##
         #######################################          #######################################
         $r->print('<h3>Enrolling Students</h3>'."\n".'<p>');          $r->print('<h3>'.&mt('Enrolling Students')."</h3>\n<p>\n");
         my $count=0;          my $count=0;
         my $flushc=0;          my $flushc=0;
         my %student=();          my %student=();
Line 1635  sub upfile_drop_add { Line 1650  sub upfile_drop_add {
                     }                      }
                 }                  }
                 if ($entries{$fields{'username'}}=~/\W/) {                  if ($entries{$fields{'username'}}=~/\W/) {
                     $r->print('<br /><b>Unacceptable username: '.                      $r->print('<br />'.
                               $entries{$fields{'username'}}.' for user '.        &mt('<b>[_1]</b>: Unacceptable username for user [_2] [_3] [_4] [_5]',
                               $fname.' '.$mname.' '.$lname.' '.$gen.'</b>');            $entries{$fields{'username'}},$fname,$mname,$lname,$gen).
                                 '</b>');
                 } else {                  } else {
                     # determine section number                      # determine section number
                     my $sec='';                      my $sec='';
Line 1681  sub upfile_drop_add { Line 1697  sub upfile_drop_add {
                              \$lname,\$gen,\$sec) {                               \$lname,\$gen,\$sec) {
                         $$_ =~ s/(\s+$|^\s+)//g;                          $$_ =~ s/(\s+$|^\s+)//g;
                     }                      }
                     if ($password) {                      if ($password || $ENV{'form.login'} eq 'loc') {
                         &modifystudent($domain,$username,$cid,$sec,                          &modifystudent($domain,$username,$cid,$sec,
                                        $desiredhost);                                         $desiredhost);
                         my $reply=&Apache::lonnet::modifystudent                          my $reply=&Apache::lonnet::modifystudent
Line 1691  sub upfile_drop_add { Line 1707  sub upfile_drop_add {
                              $email);                               $email);
                         if ($reply ne 'ok') {                          if ($reply ne 'ok') {
                             $reply =~ s/^error://;                              $reply =~ s/^error://;
                             $r->print('<br /><b>'.$username.'</b>:'.                              $r->print('<br />'.
                                       '  Unable to enroll: '.$reply);                  &mt('<b>[_1]</b>:  Unable to enroll: [_2]',$username,$reply));
           } else {            } else {
                             $count++; $flushc++;                              $count++; $flushc++;
                             $student{$username}=1;                              $student{$username}=1;
Line 1703  sub upfile_drop_add { Line 1719  sub upfile_drop_add {
                             }                              }
                         }                          }
                     } else {                      } else {
                         $r->print('<br /><b>'.$username.'</b>:'.                          $r->print('<br />'.
                            '  Unable to enroll: No password specified.');        &mt('<b>[_1]</b>: Unable to enroll.  No password specified.',$username)
                                     );
                     }                      }
                 }                  }
             }              }
         } # end of foreach (@studentdata)          } # end of foreach (@studentdata)
         $r->print('</p><p>Processed Students: '.$count.'</p>');          $r->print("</p>\n<p>\n".&mt('Processed [_1] student(s).',$count).
         $r->print("<p>If active, the new role will be available when the ".                    "</p>\n");
                   "students next log in to LON-CAPA.</p>");          $r->print("<p>\n".
                     &mt('If active, the new role will be available when the '.
                     'students next log in to LON-CAPA.')."</p>\n");
         #####################################          #####################################
         #           Drop students           #          #           Drop students           #
         #####################################          #####################################
         if ($ENV{'form.fullup'} eq 'yes') {          if ($ENV{'form.fullup'} eq 'yes') {
             $r->print('<h3>Dropping Students</h3>');              $r->print('<h3>'.&mt('Dropping Students')."</h3>\n");
             #  Get current classlist              #  Get current classlist
             my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();              my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
             if (! defined($classlist)) {              if (! defined($classlist)) {
                 $r->print("There are no students currently enrolled.\n");                  $r->print(&mt('There are no students currently enrolled.').
                             "\n");
             } else {              } else {
                 # Remove the students we just added from the list of students.                  # Remove the students we just added from the list of students.
                 foreach (@studentdata) {                  foreach (@studentdata) {
Line 1753  sub drop_student_list { Line 1773  sub drop_student_list {
         # drop student          # drop student
         my $result = &modifystudent($udom,$uname,$ENV{'request.course.id'});          my $result = &modifystudent($udom,$uname,$ENV{'request.course.id'});
         if ($result eq 'ok' || $result eq 'ok:') {          if ($result eq 'ok' || $result eq 'ok:') {
             $r->print('Dropped '.$uname.' @ '.$udom.'<br>');              $r->print(&mt('Dropped [_1]',$uname.'@'.$udom).'<br>');
             $count++;              $count++;
         } else {          } else {
             $r->print('Error dropping '.$uname.' @ '.$udom.': '.$result.              $r->print(
             &mt('Error dropping [_1]:[_2]',$uname.'@'.$udom,$result).
                       '<br />');                        '<br />');
         }          }
     }      }
     $r->print('<p><b>Dropped '.$count.' student(s).</b>');      $r->print('<p><b>'.&mt('Dropped [_1] student(s).',$count).'</b></p>');
     $r->print('<p>Re-enrollment will re-activate data.') if ($count);      $r->print('<p>'.&mt('Re-enrollment will re-activate data.')) if ($count);
 }  }
   
 ###################################################################  ###################################################################
Line 1801  The response to the request is governed Line 1822  The response to the request is governed
 sub handler {  sub handler {
     my $r=shift;      my $r=shift;
     if ($r->header_only) {      if ($r->header_only) {
         $r->content_type('text/html');          &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;          $r->send_http_header;
         return OK;          return OK;
     }      }
Line 1822  sub handler { Line 1843  sub handler {
         $r->content_type('text/csv');          $r->content_type('text/csv');
     } else {      } else {
         # Start page          # Start page
         $r->content_type('text/html');          &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;          $r->send_http_header;
         $r->print(&header());          $r->print(&header());
     }      }

Removed from v.1.83  
changed lines
  Added in v.1.88


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