--- loncom/interface/Attic/londropadd.pm	2003/07/21 17:54:43	1.76
+++ loncom/interface/Attic/londropadd.pm	2003/09/29 16:09:20	1.86
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to drop and add students in courses 
 #
-# $Id: londropadd.pm,v 1.76 2003/07/21 17:54:43 albertel Exp $
+# $Id: londropadd.pm,v 1.86 2003/09/29 16:09:20 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -32,7 +32,7 @@
 # (TeX Content Handler
 #
 ###############################################################
-###############################################################
+##############################################################
 
 package Apache::londropadd;
 
@@ -42,6 +42,7 @@ use Apache::loncommon();
 use Apache::lonhtmlcommon();
 use Apache::Constants qw(:common :http REDIRECT);
 use Spreadsheet::WriteExcel;
+use Apache::lonlocal;
 
 ###############################################################
 ###############################################################
@@ -185,6 +186,7 @@ sub print_upload_manager_header {
 	$javascript=&upload_manager_javascript_forward_associate();
     }
     my $javascript_validations=&javascript_validations($krbdefdom);
+    my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':'');
     $r->print(<<ENDPICK);
 <h3>Uploading Class List</h3>
 <hr>
@@ -198,6 +200,7 @@ to this page if the data selected is ins
 <input type="hidden" name="associate"  value="" />
 <input type="hidden" name="datatoken"  value="$datatoken" />
 <input type="hidden" name="fileupload" value="$ENV{'form.fileupload'}" />
+<input type="checkbox" name="noFirstLine" $checked />Ignore First Line
 <input type="hidden" name="upfiletype" value="$ENV{'form.upfiletype'}" />
 <input type="hidden" name="upfile_associate" 
                                        value="$ENV{'form.upfile_associate'}" />
@@ -505,7 +508,7 @@ ENDPICK
 # ======================================================= Menu Phase Two Upload
 sub print_upload_manager_form {
     my $r=shift;
-
+    my $firstLine;
     my $datatoken;
     if (!$ENV{'form.datatoken'}) {
       $datatoken=&Apache::loncommon::upfile_store($r);
@@ -514,11 +517,12 @@ sub print_upload_manager_form {
       &Apache::loncommon::load_tmp_file($r);
     }
     my @records=&Apache::loncommon::upfile_record_sep();
+    if($ENV{'form.noFirstLine'}){$firstLine=shift(@records);}
     my $total=$#records;
     my $distotal=$total+1;
     my $today=time;
     my $halfyear=$today+15552000;
-    my $defdom=$r->dir_config('lonDefDomain');
+    my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
     my ($krbdef,$krbdefdom) =
         &Apache::loncommon::get_kerberos_defaults($defdom);
     &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);
@@ -553,6 +557,8 @@ sub print_upload_manager_form {
 # ======================================================= Enroll single student
 sub enroll_single_student {
     my $r=shift;
+    # Remove non alphanumeric values from section
+    $ENV{'form.csec'}=~s/\W//g;
     #
     # 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
@@ -620,10 +626,14 @@ sub enroll_single_student {
                 $r->print("unable to enroll: ".$login_result);
             }
 	} else {
-            $r->print('<p><font color="#ff0000">ERROR</font>&nbsp;'.
-                      'Invalid login mode or password.  '.
-                      'Unable to enroll '.$ENV{'form.cuname'}.'.</p>');
-        }          
+            $r->print('<p><font color="#ff0000">ERROR</font>&nbsp;');
+            if ($amode =~ /^krb/) {
+                $r->print('Missing Kerberos domain information.  ');
+            } else {
+                $r->print('Invalid login mode or password.  ');
+            }
+            $r->print('<b>Unable to enroll '.$ENV{'form.cuname'}.'.</b></p>');
+        }
     } else {
         $r->print('Invalid username or domain');
     }    
@@ -714,7 +724,7 @@ sub make_dates_default {
 sub get_student_username_domain_form {
     my $r = shift;
     my $domform = &Apache::loncommon::select_dom_form
-        ($r->dir_config('lonDefDomain'),'cudomain',0);
+        ($ENV{'course.'.$ENV{'request.course.id'}.'.domain'},'cudomain',0);
     $r->print(<<END);
 <input type="hidden" name="action" value="enrollstudent" />
 <input type="hidden" name="state"  value="gotusername" />
@@ -750,7 +760,7 @@ sub print_enroll_single_student_form {
     my $user_data_html = '';
     my $javascript_validations = '';
     if ($new_user) {
-        my $defdom=$r->dir_config('lonDefDomain');
+        my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
         # Set up authentication forms
         my ($krbdef,$krbdefdom) =
             &Apache::loncommon::get_kerberos_defaults($domain);
@@ -1195,6 +1205,9 @@ END
 sub modify_single_student {
     my $r = shift;
     #
+    # Remove non alphanumeric values from the section
+    $ENV{'form.section'} =~ s/\W//g;
+    #
     # Do the date defaults first
     my ($starttime,$endtime) = &get_dates_from_form();
     if ($ENV{'form.makedatesdefault'}) {
@@ -1519,6 +1532,7 @@ $upfile_select
 <input type=submit name="fileupload" value="Upload Courselist">
 <input type="hidden" name="action" value="upload" />
 <input type="hidden" name="state"  value="got_file" />
+<input type="checkbox" name="noFirstLine" /> Ignore First Line<br />
 </p>
 $create_classlist_help <br />
 $create_csv_help
@@ -1532,6 +1546,7 @@ sub upfile_drop_add {
     my $r=shift;
     &Apache::loncommon::load_tmp_file($r);
     my @studentdata=&Apache::loncommon::upfile_record_sep();
+    if($ENV{'form.noFirstLine'}){shift(@studentdata);}
     my @keyfields = split(/\,/,$ENV{'form.keyfields'});
     my $cid = $ENV{'request.course.id'};
     my %fields=();
@@ -1580,6 +1595,14 @@ sub upfile_drop_add {
             $genpwd=$ENV{'form.locarg'};
         }
     }
+    if ($amode =~ /^krb/) {
+        if (! defined($genpwd) || $genpwd eq '') {
+            $r->print('<font color="red" size="+1">'.
+                      'Unable to enroll students:'.'</font>  '.
+                      'No Kerberos domain was specified.</p>');
+            $amode = ''; # This causes the loop below to be skipped
+        }
+    }
     unless (($domain=~/\W/) || ($amode eq '')) {
         #######################################
         ##         Enroll Students           ##
@@ -1625,6 +1648,8 @@ sub upfile_drop_add {
                             $sec=$entries{$fields{'sec'}};
                         }
                     }
+                    # remove non alphanumeric values from section
+                    $sec =~ s/\W//g;
                     # determine student id number
                     my $id='';
                     if (defined($fields{'id'})) {
@@ -1657,7 +1682,7 @@ sub upfile_drop_add {
                              \$lname,\$gen,\$sec) {
                         $$_ =~ s/(\s+$|^\s+)//g;
                     }
-                    if ($password) {
+                    if ($password || $ENV{'form.login'} eq 'loc') {
                         &modifystudent($domain,$username,$cid,$sec,
                                        $desiredhost);
                         my $reply=&Apache::lonnet::modifystudent
@@ -1777,7 +1802,7 @@ The response to the request is governed
 sub handler {
     my $r=shift;
     if ($r->header_only) {
-        $r->content_type('text/html');
+        &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;
         return OK;
     }
@@ -1798,7 +1823,7 @@ sub handler {
         $r->content_type('text/csv');
     } else {
         # Start page
-        $r->content_type('text/html');
+        &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;
         $r->print(&header());
     }