--- loncom/interface/Attic/londropadd.pm 2003/07/25 18:51:18 1.78 +++ loncom/interface/Attic/londropadd.pm 2003/11/05 20:55:59 1.87 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.78 2003/07/25 18:51:18 matthew Exp $ +# $Id: londropadd.pm,v 1.87 2003/11/05 20:55:59 matthew 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; ############################################################### ############################################################### @@ -79,7 +80,7 @@ sub modifystudent { # We are in this course my $section=$1; $section='' if ($course eq $courseid.'_st'); - if ($section eq $csec) { + if (defined($csec) && $section eq $csec) { $result .= 'ok:'; } elsif ( ((!$section) && (!$csec)) || ($section ne $csec) ) { my (undef,$end,$start)=split(/\_/,$roles{$course}); @@ -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(<Uploading Class List
@@ -198,6 +200,7 @@ to this page if the data selected is ins +Ignore First Line @@ -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,8 +557,8 @@ sub print_upload_manager_form { # ======================================================= Enroll single student sub enroll_single_student { my $r=shift; - # Remove whitespace from section - $ENV{'form.csec'}=~s/(\s|:)//g; + # 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 @@ -622,10 +626,14 @@ sub enroll_single_student { $r->print("unable to enroll: ".$login_result); } } else { - $r->print('

ERROR '. - 'Invalid login mode or password. '. - 'Unable to enroll '.$ENV{'form.cuname'}.'.

'); - } + $r->print('

ERROR '); + if ($amode =~ /^krb/) { + $r->print('Missing Kerberos domain information. '); + } else { + $r->print('Invalid login mode or password. '); + } + $r->print('Unable to enroll '.$ENV{'form.cuname'}.'.

'); + } } else { $r->print('Invalid username or domain'); } @@ -716,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(< @@ -747,12 +755,11 @@ sub print_enroll_single_student_form { if ($home ne 'no_host') { $new_user = 0; } - &Apache::lonnet::logthis('home = '.$home); # 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); @@ -1142,6 +1149,11 @@ sub print_modify_student_form { } # determine the students starting and ending times and section my ($starttime,$endtime,$section) = &get_enrollment_data($sname,$sdom); + if ($starttime =~ /^error/) { + $r->print('

Error

'); + $r->print('

'.$starttime.'

'); + return; + } # Deal with date forms my $date_table = &date_setting_table($starttime,$endtime); # @@ -1197,8 +1209,8 @@ END sub modify_single_student { my $r = shift; # - # Remove whitespace from the section - $ENV{'form.section'} =~ s/(\s|:)//g; + # 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(); @@ -1341,7 +1353,7 @@ sub get_enrollment_data { my %roles = &Apache::lonnet::dump('roles',$sdomain,$sname); my ($tmp) = keys(%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 my ($end,$start) = (undef,undef); my $section = ''; @@ -1524,6 +1536,7 @@ $upfile_select + Ignore First Line

$create_classlist_help
$create_csv_help @@ -1537,6 +1550,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=(); @@ -1585,6 +1599,14 @@ sub upfile_drop_add { $genpwd=$ENV{'form.locarg'}; } } + if ($amode =~ /^krb/) { + if (! defined($genpwd) || $genpwd eq '') { + $r->print(''. + 'Unable to enroll students:'.' '. + 'No Kerberos domain was specified.

'); + $amode = ''; # This causes the loop below to be skipped + } + } unless (($domain=~/\W/) || ($amode eq '')) { ####################################### ## Enroll Students ## @@ -1630,8 +1652,8 @@ sub upfile_drop_add { $sec=$entries{$fields{'sec'}}; } } - # remove whitespace from section - $sec =~ s/(\s|:)//g; + # remove non alphanumeric values from section + $sec =~ s/\W//g; # determine student id number my $id=''; if (defined($fields{'id'})) { @@ -1664,7 +1686,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 @@ -1784,7 +1806,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; } @@ -1805,7 +1827,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()); }