--- loncom/interface/Attic/londropadd.pm 2003/08/14 16:08:46 1.82
+++ loncom/interface/Attic/londropadd.pm 2004/05/19 17:53:43 1.112
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.82 2003/08/14 16:08:46 www Exp $
+# $Id: londropadd.pm,v 1.112 2004/05/19 17:53:43 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -25,11 +25,6 @@
#
# http://www.lon-capa.org/
#
-# (Handler to set parameters for assessments
-#
-# (Handler to resolve ambiguous file locations
-#
-# (TeX Content Handler
#
###############################################################
##############################################################
@@ -42,15 +37,18 @@ use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::Constants qw(:common :http REDIRECT);
use Spreadsheet::WriteExcel;
+use Apache::lonstathelpers();
+use Apache::lonlocal;
###############################################################
###############################################################
sub header {
my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager');
+ my $title = &mt('LON-CAPA Enrollment Manager');
return(<
- Enroll a single student - + $Text{'enrollone'} + $help{'Course_Add_Student'}
- Modify student data - + $Text{'modify'} + $help{'Course_Modify_Student_Data'}
- View Class List - + $Text{'view'} + $help{'Course_View_Class_List'} +
+ + $Text{'drop'} + $help{'Course_Drop_Student'}
- Drop Students + $Text{'populate'} -
END } ############################################################### ############################################################### +sub hidden_input { + my ($name,$value) = @_; + return ''."\n"; +} + sub print_upload_manager_header { my ($r,$datatoken,$distotal,$krbdefdom)=@_; my $javascript; + # if (! exists($ENV{'form.upfile_associate'})) { $ENV{'form.upfile_associate'} = 'forward'; } @@ -184,65 +205,150 @@ sub print_upload_manager_header { } else { $javascript=&upload_manager_javascript_forward_associate(); } - my $javascript_validations=&javascript_validations($krbdefdom); + # + # Deal with restored settings + my $password_choice = ''; + if (exists($ENV{'form.ipwd_choice'}) && + $ENV{'form.ipwd_choice'} ne '') { + # If a column was specified for password, assume it is for an + # internal password. This is a bug waiting to be filed (could be + # local or krb auth instead of internal) but I do not have the + # time to mess around with this now. + $password_choice = 'int'; + } + # + my $javascript_validations=&javascript_validations('auth',$krbdefdom, + $password_choice); my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':''); - $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 -
--
-
-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 .= '
\n". + &mt('Note: this will not take effect if the user already exists'). + "
\n"; + $Str .= $krbform."\n
\n". + $intform."\n
\n". + $locform."\n
\n"; + $Str .= '\n".&mt('LON-CAPA domain: [_1]',$domform)."\n
\n"; + $Str .= "\n".$date_table."
\n"; + $Str .= "\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);}
+ 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');
+ #
+ # Restore memorized settings
+ &Apache::loncommon::restore_course_settings
+ ('enrollment_upload',{ 'username_choice' => 'scalar', # column settings
+ 'names_choice' => 'scalar',
+ 'fname_choice' => 'scalar',
+ 'mname_choice' => 'scalar',
+ 'lname_choice' => 'scalar',
+ 'gen_choice' => 'scalar',
+ 'id_choice' => 'scalar',
+ 'sec_choice' => 'scalar',
+ 'ipwd_choice' => 'scalar',
+ 'email_choice' => 'scalar',
+ });
+ #
+ # Determine kerberos parameters as appropriate
+ 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'), $ENV{'form.username_choice'}],
+ ['names',&mt('Last Name, First Names'),$ENV{'form.names_choice'}],
+ ['fname',&mt('First Name'), $ENV{'form.fname_choice'}],
+ ['mname',&mt('Middle Names/Initials'),$ENV{'form.mname_choice'}],
+ ['lname',&mt('Last Name'), $ENV{'form.lname_choice'}],
+ ['gen', &mt('Generation'), $ENV{'form.gen_choice'}],
+ ['id', &mt('ID/Student Number'),$ENV{'form.id_choice'}],
+ ['sec', &mt('Group/Section'), $ENV{'form.sec_choice'}],
+ ['ipwd', &mt('Initial Password'),$ENV{'form.ipwd_choice'}],
+ ['email',&mt('EMail Address'), $ENV{'form.email_choice'}]);
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)));
}
@@ -553,14 +692,15 @@ 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 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
+ # in the course is entirely separate 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();
@@ -568,8 +708,8 @@ sub enroll_single_student {
$r->print(&make_dates_default($startdate,$enddate));
}
- $r->print('
Enrolling '.$ENV{'form.cuname'}." \@ ". + $r->print('
'.&mt('Enrolling').' '.$ENV{'form.cuname'}." \@ ". $ENV{'form.lcdomain'}.'
'); if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&& ($ENV{'form.lcdomain'})&&($ENV{'form.lcdomain'}!~/\W/)) { @@ -581,12 +721,12 @@ sub enroll_single_student { } else { my %home_servers =&Apache::loncommon::get_library_servers($domain); if (! exists($home_servers{$desiredhost})) { - $r->print('Error:'. - 'Invalid home server specified'); + $r->print(''.&mt('Error').':'. + &mt('Invalid home server specified')); return; } } - $r->print(" with server $desiredhost :") if (defined($desiredhost)); + $r->print(" ".&mt('with server')." $desiredhost :") if (defined($desiredhost)); # End of home server selection logic my $amode=''; my $genpwd=''; @@ -619,41 +759,44 @@ sub enroll_single_student { $desiredhost); if ($login_result =~ /^ok/) { $r->print($login_result); - $r->print("If active, the new role will be available ". - "when the student next logs in to LON-CAPA.
"); + $r->print("".&mt('If active, the new role will be available when the student next logs in to LON-CAPA.')."
"); } else { - $r->print("unable to enroll: ".$login_result); + $r->print(&mt('unable to enroll').": ".$login_result); } } else { - $r->print('ERROR '); + $r->print('
'.&mt('ERROR').' '); if ($amode =~ /^krb/) { - $r->print('Missing Kerberos domain information. '); + $r->print(&mt('Missing Kerberos domain information.').' '); } else { - $r->print('Invalid login mode or password. '); + $r->print(&mt('Invalid login mode or password.').' '); } - $r->print('Unable to enroll '.$ENV{'form.cuname'}.'.
'); + $r->print(''.&mt('Unable to enroll').' '.$ENV{'form.cuname'}.'.'); } } else { - $r->print('Invalid username or domain'); + $r->print(&mt('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', @@ -662,6 +805,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); } @@ -675,22 +826,25 @@ 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 = 'Starting Date | '. + $result .= '||
'.&mt('Starting Date').' | '. ''.$startform.' | '. ''.$dateDefault.' | '."
Ending Date | '. + $result .= '||
'.&mt('Ending Date').' | '. ''.$endform.' | '. ''.$perpetual.' | '."
Username: | +|
---|---|
$lt{'usr'}: | |
Domain: | +|
$lt{'dom'}: | $domform |
- + |
First Name: | +|
---|---|
$lt{'fn'}: | |
Middle Name: | +|
$lt{'mn'}: | |
Last Name: | +|
$lt{'ln'}: | |
Generation: | +|
$lt{'gen'}: | |
Home Server: | +|
$lt{'hs'}: | $homeserver_form |
First Name: | +|||||||
---|---|---|---|---|---|---|---|
$lt{'fn'}: | |||||||
Middle Name: | +|||||||
$lt{'mn'}: | |||||||
Last Name: | +|||||||
$lt{'ln'}: | |||||||
Generation: | +|||||||
$lt{'gen'}: |
'.$role.' | '); + foreach my $user (split(',',$coursepersonnel{$role})) { + my ($puname,$pudom)=split(':',$user); + $r->print(' '.&Apache::loncommon::aboutmewrapper( + &Apache::loncommon::plainname($puname, + $pudom), + $puname,$pudom)); + } + $r->print(' |
\n");
if ($ENV{'form.action'} ne 'modifystudent') {
- $r->print(<
- username + | |||||||
---|---|---|---|---|---|---|---|
Count + | + $lt{'usrn'} | - domain + $lt{'dom'} | ID | - student name + $lt{'sn'} | - section + $lt{'sec'} + | + $lt{'start'} + | + $lt{'end'} |
\n "); + if ($mode eq 'view' || $mode eq 'html') { + $start = &Apache::lonlocal::locallocaltime($start); + $end = &Apache::lonlocal::locallocaltime($end); + $r->print(" | |||||||
".(++$studentcount)." | \n "); if ($linkto eq 'nothing') { $r->print($username); } elsif ($linkto eq 'aboutme') { @@ -1092,32 +1340,48 @@ END | $id | $name | $section | +$start | +$end |
'. - 'Your Excel spreadsheet is ready for download.
'."\n"); + &mt('Your Excel spreadsheet').' '.&mt('is ready for download').'.'."\n"); + } elsif ($mode eq 'csv') { + close($CSVfile); + $r->print(''. + &mt('Your CSV file').' is ready for download.'. + "\n"); + $r->rflush(); } } @@ -1139,28 +1403,66 @@ sub print_modify_student_form { $sdom, $sname); my ($tmp) = keys(%info); if ($tmp =~ /^(con_lost|error|no_such_host)/i) { - $r->print('Error'. + $r->print(''.&mt('Error').''. ''. - 'Unable to retrieve environment data for '.$sname. - 'in domain '.$sdom.'
'. - 'Please contact your LON-CAPA administrator '. - 'regarding this situation.