--- loncom/interface/Attic/londropadd.pm 2003/07/25 18:05:06 1.77
+++ loncom/interface/Attic/londropadd.pm 2004/01/21 00:23:30 1.91.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.77 2003/07/25 18:05:06 matthew Exp $
+# $Id: londropadd.pm,v 1.91.2.1 2004/01/21 00:23:30 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -32,7 +32,7 @@
# (TeX Content Handler
#
###############################################################
-###############################################################
+##############################################################
package Apache::londropadd;
@@ -42,15 +42,18 @@ use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::Constants qw(:common :http REDIRECT);
use Spreadsheet::WriteExcel;
+use Apache::lonlocal;
+use localenroll();
###############################################################
###############################################################
sub header {
my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager');
+ my $title = &mt('LON-CAPA Enrollment Manager');
return(<
- Enroll a single student + $Text{'enrollone'}
- Modify student data + $Text{'modify'}
- View Class List + $Text{'view'}
- Drop Students + $Text{'drop'} -
+
END
+ if (&localenroll::run() ) {
+ $r->print(< \n".
+ &mt('Total number of records found in file: [_1].',$distotal).
+ "\n".
+ " Note: this will not take effect if the user already exists
-$krbform
-
-$intform
-
-$locform
-
-
-$date_table
-
-
- \n".
+ &mt('Note: this will not take effect if the user already exists').
+ " \n";
+ $Str .= $krbform."\n \n".
+ $intform."\n \n".
+ $locform."\n \n".&mt('LON-CAPA domain: [_1]',$domform)."\n \n".$date_table."
-Identify fields
-Total number of records found in file: $distotal
-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.
-
-
-
-
-
-
-
-
-
-
-ENDPICK
+ my $javascript_validations=&javascript_validations('auth',$krbdefdom);
+ my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':'');
+ $r->print(''.&mt('Uploading Class List')."
\n".
+ "
\n".
+ ''.&mt('Identify fields')."
\n");
+ $r->print("
\n");
+ $r->print(&mt('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 '.
+ 'enroll students in your class.')."
\n");
+ $r->print(&hidden_input('action','upload').
+ &hidden_input('state','got_file').
+ &hidden_input('associate','').
+ &hidden_input('datatoken',$datatoken).
+ &hidden_input('fileupload',$ENV{'form.fileupload'}).
+ &hidden_input('upfiletype',$ENV{'form.upfiletype'}).
+ &hidden_input('upfile_associate',$ENV{'form.upfile_associate'}));
+ $r->print('');
+ $r->print(''.
+ &mt('Ignore First Line'));
+ $r->print("
\n".
+ '');
}
###############################################################
###############################################################
sub javascript_validations {
- my ($krbdefdom)=@_;
- my %param = ( formname => 'studentform',
+ my ($mode,$krbdefdom)=@_;
+ my $authheader;
+ if ($mode eq 'auth') {
+ my %param = ( formname => 'studentform',
+ kerb_def_dom => $krbdefdom );
+ $authheader = &Apache::loncommon::authform_header(%param);
+ } elsif ($mode eq 'createcourse') {
+ my %param = ( formname => 'ccrs',
kerb_def_dom => $krbdefdom );
- my $authheader = &Apache::loncommon::authform_header(%param);
- my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();
- return (<Login Type
-LON-CAPA Domain for Students
-LON-CAPA domain: $domform Starting and Ending Dates
-Full Update
- Full update
-(also print list of users not enrolled anymore)ID/Student Number
-
-Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
-(only do if you know what you are doing)
-Note: for large courses, this operation may be time consuming.
-ENDPICK
+ my $Str = "\n";
+ $Str .= &hidden_input('nfields',$i);
+ $Str .= &hidden_input('keyfields',$keyfields);
+ $Str .= ''.&mt('Login Type')."
\n";
+ $Str .= "'.&mt('LON-CAPA Domain for Students')."
\n";
+ $Str .= "".&mt('Starting and Ending Dates')."
\n";
+ $Str .= "".&mt('Full Update')."
\n";
+ $Str .= ''.
+ ' '.&mt('Full update (also print list of users not enrolled anymore)').
+ "
\n".''; + $Str .= &mt('Disable ID/Student Number Safeguard and Force Change '. + 'of Conflicting IDs (only do if you know what you are doing)'). + "\n
\n";
+ $Str .= ''."
\n";
+ $Str .= &mt('Note: for large courses, this operation may be time '.
+ 'consuming');
+ $r->print($Str);
+ return;
}
-# ======================================================= 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);
+ $datatoken=&Apache::loncommon::upfile_store($r);
} else {
- $datatoken=$ENV{'form.datatoken'};
- &Apache::loncommon::load_tmp_file($r);
+ $datatoken=$ENV{'form.datatoken'};
+ &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);
my $i;
my $keyfields;
if ($total>=0) {
- my @d=(['username','Username'],
- ['names','Last Name, First Names'],
- ['fname','First Name'],
- ['mname','Middle Names/Initials'],
- ['lname','Last Name'],
- ['gen','Generation'],
- ['id','ID/Student Number'],
- ['sec','Group/Section'],
- ['ipwd','Initial Password'],
- ['email','EMail Address']);
+ my @field=(['username',&mt('Username')],
+ ['names',&mt('Last Name, First Names')],
+ ['fname',&mt('First Name')],
+ ['mname',&mt('Middle Names/Initials')],
+ ['lname',&mt('Last Name')],
+ ['gen',&mt('Generation')],
+ ['id',&mt('ID/Student Number')],
+ ['sec',&mt('Group/Section')],
+ ['ipwd',&mt('Initial Password')],
+ ['email',&mt('EMail Address')]);
if ($ENV{'form.upfile_associate'} eq 'reverse') {
&Apache::loncommon::csv_print_samples($r,\@records);
- $i=&Apache::loncommon::csv_print_select_table($r,\@records,\@d);
- foreach (@d) { $keyfields.=$_->[0].','; }
+ $i=&Apache::loncommon::csv_print_select_table($r,\@records,
+ \@field);
+ foreach (@field) {
+ $keyfields.=$_->[0].',';
+ }
chop($keyfields);
} else {
- unshift(@d,['none','']);
- $i=&Apache::loncommon::csv_samples_select_table($r,\@records,\@d);
+ unshift(@field,['none','']);
+ $i=&Apache::loncommon::csv_samples_select_table($r,\@records,
+ \@field);
my %sone=&Apache::loncommon::record_sep($records[0]);
$keyfields=join(',',sort(keys(%sone)));
}
@@ -550,11 +614,12 @@ sub print_upload_manager_form {
&print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear);
}
-# ======================================================= 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,31 +687,39 @@ 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'); } } sub setup_date_selectors { - my ($starttime,$endtime) = @_; + my ($starttime,$endtime,$mode) = @_; if (! defined($starttime)) { $starttime = time; - if (exists($ENV{'course.'.$ENV{'request.course.id'}. + unless ($mode eq 'createcourse') { + if (exists($ENV{'course.'.$ENV{'request.course.id'}. '.default_enrollment_start_date'})) { - $starttime = $ENV{'course.'.$ENV{'request.course.id'}. + $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'}. + unless ($mode eq 'createcourse') { + if (exists($ENV{'course.'.$ENV{'request.course.id'}. '.default_enrollment_end_date'})) { - $endtime = $ENV{'course.'.$ENV{'request.course.id'}. + $endtime = $ENV{'course.'.$ENV{'request.course.id'}. '.default_enrollment_end_date'}; + } } } my $startdateform = &Apache::lonhtmlcommon::date_setter('studentform', @@ -655,6 +728,14 @@ sub setup_date_selectors { my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform', 'enddate', $endtime); + if ($mode eq 'createcourse') { + $startdateform = &Apache::lonhtmlcommon::date_setter('ccrs', + 'startdate', + $starttime); + $enddateform = &Apache::lonhtmlcommon::date_setter('ccrs', + 'enddate', + $endtime); + } return ($startdateform,$enddateform); } @@ -668,11 +749,14 @@ sub get_dates_from_form { } sub date_setting_table { - my ($starttime,$endtime) = @_; - my ($startform,$endform)=&setup_date_selectors($starttime,$endtime); + my ($starttime,$endtime,$mode) = @_; + my ($startform,$endform)=&setup_date_selectors($starttime,$endtime,$mode); my $dateDefault = ''.$starttime.'
'); + return; + } # Deal with date forms my $date_table = &date_setting_table($starttime,$endtime); # @@ -1197,8 +1285,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 +1429,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 = ''; @@ -1509,26 +1597,25 @@ END # sub print_first_courselist_upload_form { my $r=shift; - my $upfile_select=&Apache::loncommon::upfile_select_html(); - my $create_classlist_help = - &Apache::loncommon::help_open_topic("Course_Create_Class_List", - "How do I create a class list from a spreadsheet"); - my $create_csv_help = - &Apache::loncommon::help_open_topic("Course_Convert_To_CSV", - "How do I create a CSV file from a spreadsheet"); - $r->print(<- - - -
-$create_classlist_help