version 1.100, 2004/02/10 22:15:53
|
version 1.119, 2004/10/16 00:46:58
|
Line 37 use Apache::loncommon();
|
Line 37 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::lonstathelpers(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
|
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub header { |
sub header { |
my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager'). |
my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager'); |
&Apache::loncommon::help_open_faq(9). |
|
&Apache::loncommon::help_open_bug('Instructor Interface'); |
|
my $title = &mt('LON-CAPA Enrollment Manager'); |
my $title = &mt('LON-CAPA Enrollment Manager'); |
return(<<ENDHEAD); |
return(<<ENDHEAD); |
<html> |
<html> |
Line 174 sub print_main_menu {
|
Line 173 sub print_main_menu {
|
<a href="/adm/dropadd?action=drop">$Text{'drop'}</a> |
<a href="/adm/dropadd?action=drop">$Text{'drop'}</a> |
</font>$help{'Course_Drop_Student'} |
</font>$help{'Course_Drop_Student'} |
</p><p> |
</p><p> |
|
END |
|
my ($cdom,$cnum) = split/_/,$ENV{'request.course.id'}; |
|
if (&Apache::lonnet::auto_run($cnum,$cdom) ) { |
|
$r->print(<<END); |
<font size="+1"> |
<font size="+1"> |
<a href="/adm/populate">$Text{'populate'}</a> |
<a href="/adm/populate">$Text{'populate'}</a> |
</font> |
</font> |
END |
END |
|
} |
} |
} |
|
|
############################################################### |
############################################################### |
Line 305 END
|
Line 309 END
|
return; |
return; |
} |
} |
// alert('current.radiovalue = '+current.radiovalue); |
// alert('current.radiovalue = '+current.radiovalue); |
if (current.radiovalue == null || current.radiovalue == 'nochange') { |
if (current.radiovalue == null || current.radiovalue == '' || current.radiovalue == 'nochange') { |
// They did not check any of the login radiobuttons. |
// They did not check any of the login radiobuttons. |
alert('$alert{'authen'}'); |
alert('$alert{'authen'}'); |
return; |
return; |
Line 701 sub enroll_single_student {
|
Line 705 sub enroll_single_student {
|
$ENV{'form.csec'}=~s/\W//g; |
$ENV{'form.csec'}=~s/\W//g; |
# |
# |
# We do the dates first because the action of making them the defaul |
# 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 |
# student. Also, a failure in setting the dates as default is not fatal |
# to the process of enrolling / modifying a student. |
# to the process of enrolling / modifying a student. |
my ($startdate,$enddate) = &get_dates_from_form(); |
my ($startdate,$enddate) = &get_dates_from_form(); |
Line 782 sub setup_date_selectors {
|
Line 786 sub setup_date_selectors {
|
my ($starttime,$endtime,$mode) = @_; |
my ($starttime,$endtime,$mode) = @_; |
if (! defined($starttime)) { |
if (! defined($starttime)) { |
$starttime = time; |
$starttime = time; |
unless ($mode eq 'createcourse') { |
unless ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') { |
if (exists($ENV{'course.'.$ENV{'request.course.id'}. |
if (exists($ENV{'course.'.$ENV{'request.course.id'}. |
'.default_enrollment_start_date'})) { |
'.default_enrollment_start_date'})) { |
$starttime = $ENV{'course.'.$ENV{'request.course.id'}. |
$starttime = $ENV{'course.'.$ENV{'request.course.id'}. |
Line 806 sub setup_date_selectors {
|
Line 810 sub setup_date_selectors {
|
my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform', |
my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform', |
'enddate', |
'enddate', |
$endtime); |
$endtime); |
if ($mode eq 'createcourse') { |
if ($mode eq 'create_enrolldates') { |
$startdateform = &Apache::lonhtmlcommon::date_setter('ccrs', |
$startdateform = &Apache::lonhtmlcommon::date_setter('ccrs', |
'startdate', |
'startenroll', |
$starttime); |
$starttime); |
$enddateform = &Apache::lonhtmlcommon::date_setter('ccrs', |
$enddateform = &Apache::lonhtmlcommon::date_setter('ccrs', |
'enddate', |
'endenroll', |
|
$endtime); |
|
} |
|
if ($mode eq 'create_defaultdates') { |
|
$startdateform = &Apache::lonhtmlcommon::date_setter('ccrs', |
|
'startaccess', |
|
$starttime); |
|
$enddateform = &Apache::lonhtmlcommon::date_setter('ccrs', |
|
'endaccess', |
$endtime); |
$endtime); |
} |
} |
return ($startdateform,$enddateform); |
return ($startdateform,$enddateform); |
Line 832 sub date_setting_table {
|
Line 844 sub date_setting_table {
|
my $dateDefault = '<nobr>'. |
my $dateDefault = '<nobr>'. |
'<input type="checkbox" name="makedatesdefault" /> '. |
'<input type="checkbox" name="makedatesdefault" /> '. |
&mt('make these dates the default for future enrollment'); |
&mt('make these dates the default for future enrollment'); |
if ($mode eq 'createcourse') { |
if ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') { |
$dateDefault = ' '; |
$dateDefault = ' '; |
} |
} |
my $perpetual = '<nobr><input type="checkbox" name="no_end_date"'; |
my $perpetual = '<nobr><input type="checkbox" name="no_end_date"'; |
Line 840 sub date_setting_table {
|
Line 852 sub date_setting_table {
|
$perpetual .= ' checked'; |
$perpetual .= ' checked'; |
} |
} |
$perpetual.= ' /> '.&mt('no ending date').'</nobr>'; |
$perpetual.= ' /> '.&mt('no ending date').'</nobr>'; |
|
if ($mode eq 'create_enrolldates') { |
|
$perpetual = ' '; |
|
} |
my $result = ''; |
my $result = ''; |
$result .= "<table>\n"; |
$result .= "<table>\n"; |
$result .= '<tr><td align="right">'.&mt('Starting Date').'</td>'. |
$result .= '<tr><td align="right">'.&mt('Starting Date').'</td>'. |
Line 909 sub print_enroll_single_student_form {
|
Line 924 sub print_enroll_single_student_form {
|
# |
# |
my $username = $ENV{'form.cuname'}; |
my $username = $ENV{'form.cuname'}; |
my $domain = $ENV{'form.cudomain'}; |
my $domain = $ENV{'form.cudomain'}; |
|
$username=~s/[\W|_]//gs; |
|
$domain=~s/[\W|_]//gs; |
my $home = &Apache::lonnet::homeserver($username,$domain); |
my $home = &Apache::lonnet::homeserver($username,$domain); |
# $new_user flags whether we are creating a new user or using an old one |
# $new_user flags whether we are creating a new user or using an old one |
my $new_user = 1; |
my $new_user = 1; |
Line 1102 sub print_drop_menu {
|
Line 1119 sub print_drop_menu {
|
|
|
# ============================================== view classlist |
# ============================================== view classlist |
sub print_html_classlist { |
sub print_html_classlist { |
my $r=shift; |
my ($r,$mode) = @_; |
if (! exists($ENV{'form.sortby'})) { |
if (! exists($ENV{'form.sortby'})) { |
$ENV{'form.sortby'} = 'username'; |
$ENV{'form.sortby'} = 'username'; |
} |
} |
Line 1110 sub print_html_classlist {
|
Line 1127 sub print_html_classlist {
|
$ENV{'form.Status'} = 'Active'; |
$ENV{'form.Status'} = 'Active'; |
} |
} |
my $status_select = &Apache::lonhtmlcommon::StatusOptions |
my $status_select = &Apache::lonhtmlcommon::StatusOptions |
($ENV{'form.Status'},'studentform'); |
($ENV{'form.Status'}); |
my $cid=$ENV{'request.course.id'}; |
my $cid=$ENV{'request.course.id'}; |
my $cdom=$ENV{'course.'.$cid.'.domain'}; |
my $cdom=$ENV{'course.'.$cid.'.domain'}; |
my $cnum=$ENV{'course.'.$cid.'.num'}; |
my $cnum=$ENV{'course.'.$cid.'.num'}; |
# -------------------------------------------------------- Get course personnel |
# |
|
# List course personnel |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum); |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum); |
$r->print('<table border="2">'); |
# |
foreach (sort keys %coursepersonnel) { |
if (! defined($ENV{'form.output'}) || |
$r->print('<tr><td>'.$_.'</td><td>'); |
$ENV{'form.output'} !~ /^(csv|excel|html)$/ ) { |
foreach (split(/\,/,$coursepersonnel{$_})) { |
$ENV{'form.output'} = 'html'; |
my ($puname,$pudom)=split(/\:/,$_); |
} |
|
# |
|
$r->print('<br /><table border="2">'); |
|
foreach my $role (sort keys %coursepersonnel) { |
|
next if ($role =~ /^\s*$/); |
|
$r->print('<tr><td>'.$role.'</td><td>'); |
|
foreach my $user (split(',',$coursepersonnel{$role})) { |
|
my ($puname,$pudom)=split(':',$user); |
$r->print(' '.&Apache::loncommon::aboutmewrapper( |
$r->print(' '.&Apache::loncommon::aboutmewrapper( |
&Apache::loncommon::plainname($puname, |
&Apache::loncommon::plainname($puname, |
$pudom),$puname,$pudom)); |
$pudom), |
|
$puname,$pudom)); |
} |
} |
$r->print('</td></tr>'); |
$r->print('</td></tr>'); |
} |
} |
$r->print('</table>'); |
$r->print('</table>'); |
# --------------------------------------------------------------- Student roles |
# |
my $CCL=&mt('Current Class List'); |
# Interface output |
$r->print(<<END); |
$r->print('<input type="hidden" name="action" value="'. |
<input type="hidden" name="action" value="$ENV{'form.action'}" /> |
$ENV{'form.action'}.'" />'); |
<input type="hidden" name="state" value="" /> |
$r->print("<p>\n"); |
<p> |
|
<font size="+1">$CCL</font> |
|
|
|
END |
|
if ($ENV{'form.action'} ne 'modifystudent') { |
if ($ENV{'form.action'} ne 'modifystudent') { |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash('csv' => "CSV", |
'ef' => "Excel format", |
'excel' => "Excel", |
'ss' => "Student Status", |
'html' => 'HTML'); |
); |
my $output_selector = '<select size="1" name="output" >'; |
$r->print(<<END); |
foreach my $outputformat ('html','csv','excel') { |
<font size="+1"> |
my $option = '<option value="'.$outputformat.'" '; |
<a href="javascript:document.studentform.state.value='csv';document.studentform.submit();">CSV format</a> |
if ($outputformat eq $ENV{'form.output'}) { |
|
$option .= 'selected '; |
<a href="javascript:document.studentform.state.value='excel';document.studentform.submit();">$lt{'ef'}</a> |
} |
</font> |
$option .='>'.$lt{$outputformat}.'</option>'; |
|
$output_selector .= "\n".$option; |
$lt{'ss'}: |
} |
END |
$output_selector .= '</select>'; |
|
$r->print(&mt('Output Format: [_1]',$output_selector).(' 'x3)); |
} |
} |
$r->print($status_select."</p>\n"); |
$r->print(&mt('Student Status: [_1]',$status_select)."\n"); |
|
$r->print('<input type="submit" value="'.&mt('Update Display').'" />'. |
|
"\n</p>\n"); |
|
# |
|
# Print the classlist |
|
$r->print('<h2>'.&mt('Current Class List').'</h2>'); |
my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist(); |
my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist(); |
if (! defined($classlist)) { |
if (! defined($classlist)) { |
$r->print(&mt('There are no students currently enrolled.')."\n"); |
$r->print(&mt('There are no students currently enrolled.')."\n"); |
} else { |
} else { |
# Print out the available choices |
# Print out the available choices |
if ($ENV{'form.action'} eq 'modifystudent') { |
if ($ENV{'form.action'} eq 'modifystudent') { |
&show_class_list($r,'view','modify','modifystudent', |
&show_class_list($r,'view','modify', |
$ENV{'form.Status'},$classlist,$keylist); |
$ENV{'form.Status'},$classlist,$keylist); |
} else { |
} else { |
&show_class_list($r,'view','aboutme','classlist', |
&show_class_list($r,$ENV{'form.output'},'aboutme', |
$ENV{'form.Status'},$classlist,$keylist); |
$ENV{'form.Status'},$classlist,$keylist); |
} |
} |
} |
} |
} |
} |
|
|
# ============================================== view classlist |
|
sub print_formatted_classlist { |
|
my $r=shift; |
|
my $mode = shift; |
|
my $cid=$ENV{'request.course.id'}; |
|
my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist(); |
|
if (! defined($classlist)) { |
|
$r->print(&mt('There are no students currently enrolled.')."\n"); |
|
} else { |
|
&show_class_list($r,$mode,'nolink','csv', |
|
$ENV{'form.Status'},$classlist,$keylist); |
|
} |
|
} |
|
|
|
# =================================================== Show student list to drop |
# =================================================== Show student list to drop |
sub show_class_list { |
sub show_class_list { |
my ($r,$mode,$linkto,$action,$statusmode,$classlist,$keylist)=@_; |
my ($r,$mode,$linkto,$statusmode,$classlist,$keylist)=@_; |
my $cid=$ENV{'request.course.id'}; |
my $cid=$ENV{'request.course.id'}; |
# |
# |
# Variables for excel output |
# Variables for excel output |
my ($excel_workbook, $excel_sheet, $excel_filename,$row); |
my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format); |
|
# |
|
# Variables for csv output |
|
my ($CSVfile,$CSVfilename); |
# |
# |
my $sortby = $ENV{'form.sortby'}; |
my $sortby = $ENV{'form.sortby'}; |
if ($sortby !~ /^(username|domain|section|fullname|id)$/) { |
if ($sortby !~ /^(username|domain|section|fullname|id|start|end|type)$/) { |
$sortby = 'username'; |
$sortby = 'username'; |
} |
} |
# Print out header |
# Print out header |
if ($mode eq 'view') { |
unless ($mode eq 'autoenroll') { |
|
$r->print(<<END); |
|
<input type="hidden" name="state" value="$ENV{'form.state'}" /> |
|
END |
|
} |
|
$r->print(<<END); |
|
<input type="hidden" name="sortby" value="$sortby" /> |
|
END |
|
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') { |
if ($linkto eq 'aboutme') { |
if ($linkto eq 'aboutme') { |
$r->print(&mt('Select a user name to view the users personal page.')); |
$r->print(&mt('Select a user name to view the users personal page.')); |
} elsif ($linkto eq 'modify') { |
} elsif ($linkto eq 'modify') { |
$r->print(&mt('Select a user name to modify the students information')); |
$r->print(&mt('Select a user name to modify the students information')); |
} |
} |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'usrn' => "username", |
'usrn' => "username", |
'dom' => "domain", |
'dom' => "domain", |
'sn' => "student name", |
'sn' => "student name", |
'sec' => "section", |
'sec' => "section", |
|
'start' => "start date", |
|
'end' => "end date", |
|
'type' => "enroll type/action" |
); |
); |
$r->print(<<END); |
unless ($mode eq 'autoenroll') { |
|
$r->print(<<END); |
<input type="hidden" name="sortby" value="$sortby" /> |
|
<input type="hidden" name="sname" value="" /> |
<input type="hidden" name="sname" value="" /> |
<input type="hidden" name="sdom" value="" /> |
<input type="hidden" name="sdom" value="" /> |
|
END |
|
} |
|
$r->print(" |
<p> |
<p> |
<table border=2> |
<table border=2> |
<tr><th> |
<tr> |
|
"); |
|
if ($mode eq 'autoenroll') { |
|
$r->print(" |
|
<th><a href=\"javascript:document.studentform.sortby.value='type';document.studentform.submit();\">$lt{'type'}</a></th> |
|
"); |
|
} else { |
|
$r->print(" |
|
<th>Count</th> |
|
"); |
|
} |
|
$r->print(<<END); |
|
<th> |
<a href="javascript:document.studentform.sortby.value='username';document.studentform.submit();">$lt{'usrn'}</a> |
<a href="javascript:document.studentform.sortby.value='username';document.studentform.submit();">$lt{'usrn'}</a> |
</th><th> |
</th><th> |
<a href="javascript:document.studentform.sortby.value='domain';document.studentform.submit();">$lt{'dom'}</a> |
<a href="javascript:document.studentform.sortby.value='domain';document.studentform.submit();">$lt{'dom'}</a> |
Line 1224 sub show_class_list {
|
Line 1266 sub show_class_list {
|
<a href="javascript:document.studentform.sortby.value='fullname';document.studentform.submit();">$lt{'sn'}</a> |
<a href="javascript:document.studentform.sortby.value='fullname';document.studentform.submit();">$lt{'sn'}</a> |
</th><th> |
</th><th> |
<a href="javascript:document.studentform.sortby.value='section';document.studentform.submit();">$lt{'sec'}</a> |
<a href="javascript:document.studentform.sortby.value='section';document.studentform.submit();">$lt{'sec'}</a> |
|
</th><th> |
|
<a href="javascript:document.studentform.sortby.value='start';document.studentform.submit();">$lt{'start'}</a> |
|
</th><th> |
|
<a href="javascript:document.studentform.sortby.value='end';document.studentform.submit();">$lt{'end'}</a> |
</th> |
</th> |
</tr> |
</tr> |
END |
END |
} elsif ($mode eq 'csv') { |
} elsif ($mode eq 'csv') { |
|
# |
|
# Open a file |
|
$CSVfilename = '/prtspool/'. |
|
$ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'. |
|
time.'_'.rand(1000000000).'.csv'; |
|
unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) { |
|
$r->log_error("Couldn't open $CSVfilename for output $!"); |
|
$r->print("Problems occured in writing the csv file. ". |
|
"This error has been logged. ". |
|
"Please alert your LON-CAPA administrator."); |
|
$CSVfile = undef; |
|
} |
|
# |
|
# Write headers and data to file |
if($statusmode eq 'Expired') { |
if($statusmode eq 'Expired') { |
$r->print(&mt('Students with expired roles')); |
print $CSVfile '"'.&mt('Students with expired roles').'"'."\n"; |
} |
} |
if ($statusmode eq 'Any') { |
if ($statusmode eq 'Any') { |
$r->print('"'.join('","',(&mt("username"),&mt("domain"),"ID", |
print $CSVfile '"'.join('","',map { |
&mt("student name"),&mt("section"),&mt("status"))). |
&Apache::loncommon::csv_translate(&mt($_)) |
'"'."\n"); |
} ("username","domain","ID","student name", |
|
"section","start date","end date","status")).'"'."\n"; |
} else { |
} else { |
$r->print('"'.join('","',(&mt("username"),&mt("domain"),"ID", |
print $CSVfile '"'.join('","',map { |
&mt("student name"),&mt("section"))).'"'."\n"); |
&Apache::loncommon::csv_translate(&mt($_)) |
|
} ("username","domain","ID","student name", |
|
"section","start date","end date")).'"'."\n"; |
} |
} |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
# Create the excel spreadsheet |
# Create the excel spreadsheet |
Line 1247 END
|
Line 1310 END
|
$excel_workbook = Spreadsheet::WriteExcel->new('/home/httpd'. |
$excel_workbook = Spreadsheet::WriteExcel->new('/home/httpd'. |
$excel_filename); |
$excel_filename); |
$excel_workbook->set_tempdir('/home/httpd/perl/tmp'); |
$excel_workbook->set_tempdir('/home/httpd/perl/tmp'); |
|
# |
|
$format = &Apache::loncommon::define_excel_formats($excel_workbook); |
$excel_sheet = $excel_workbook->addworksheet('classlist'); |
$excel_sheet = $excel_workbook->addworksheet('classlist'); |
# |
# |
my $description = 'Class List for '. |
my $description = 'Class List for '. |
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; |
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; |
$excel_sheet->write($row++,0,$description); |
$excel_sheet->write($row++,0,$description,$format->{'h1'}); |
# |
# |
$excel_sheet->write($row++,0,["username","domain","ID", |
$excel_sheet->write($row++,0,["username","domain","ID", |
"student name","section","status"]); |
"student name","section", |
|
"start date","end date","status"], |
|
$format->{'bold'}); |
} |
} |
# |
# |
# Sort the students |
# Sort the students |
Line 1273 END
|
Line 1340 END
|
|| |
|| |
lc($classlist->{$a}->[$third]) cmp lc($classlist->{$b}->[$third]) |
lc($classlist->{$a}->[$third]) cmp lc($classlist->{$b}->[$third]) |
} (keys(%$classlist)); |
} (keys(%$classlist)); |
|
my $studentcount = 0; |
|
my $autocount = 0; |
|
my $manualcount = 0; |
|
my $unlockcount = 0; |
|
my $lockcount = 0; |
foreach my $student (@Sorted_Students) { |
foreach my $student (@Sorted_Students) { |
my $username = $classlist->{$student}->[$index{'username'}]; |
my $sdata = $classlist->{$student}; |
my $domain = $classlist->{$student}->[$index{'domain'}]; |
my $username = $sdata->[$index{'username'}]; |
my $section = $classlist->{$student}->[$index{'section'}]; |
my $domain = $sdata->[$index{'domain'}]; |
my $name = $classlist->{$student}->[$index{'fullname'}]; |
my $section = $sdata->[$index{'section'}]; |
my $id = $classlist->{$student}->[$index{'id'}]; |
my $name = $sdata->[$index{'fullname'}]; |
my $status = $classlist->{$student}->[$index{'status'}]; |
my $id = $sdata->[$index{'id'}]; |
|
my $status = $sdata->[$index{'status'}]; |
|
my $start = $sdata->[$index{'start'}]; |
|
my $end = $sdata->[$index{'end'}]; |
|
my $type = $sdata->[$index{'type'}]; |
next if (($statusmode ne 'Any') && ($status ne $statusmode)); |
next if (($statusmode ne 'Any') && ($status ne $statusmode)); |
if ($mode eq 'view') { |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { |
$r->print("<tr>\n <td>\n "); |
if (! defined($start) || $start == 0) { |
|
$start = &mt('none'); |
|
} else { |
|
$start = &Apache::lonlocal::locallocaltime($start); |
|
} |
|
if (! defined($end) || $end == 0) { |
|
$end = &mt('none'); |
|
} else { |
|
$end = &Apache::lonlocal::locallocaltime($end); |
|
} |
|
$r->print("<tr>\n "); |
|
if ($mode eq 'autoenroll') { |
|
my $lockedtype = $sdata->[$index{'lockedtype'}]; |
|
$studentcount++; |
|
my $cellentry; |
|
if ($type eq 'auto') { |
|
$cellentry = '<b>'.&mt('auto').'</b> <input type="checkbox" name="chgauto" value="'.$username.':'.$domain.'" /> Change'; |
|
$autocount ++; |
|
} else { |
|
$cellentry = '<table border="0" cellspacing="0"><tr><td rowspan="2"><b>'.&mt('manual').'</b></td><td><nobr><input type="checkbox" name="chgmanual" value="'.$username.':'.$domain.'" /> Change</nobr></td></tr><tr><td><nobr>'; |
|
$manualcount ++; |
|
if ($lockedtype) { |
|
$cellentry .= '<input type="checkbox" name="unlockchg" value="'.$username.':'.$domain.'" /> '.&mt('Unlock'); |
|
$unlockcount ++; |
|
} else { |
|
$cellentry .= '<input type="checkbox" name="lockchg" value="'.$username.':'.$domain.'" /> '.&mt('Lock'); |
|
$lockcount ++; |
|
} |
|
$cellentry .= '</nobr></td></tr></table>'; |
|
} |
|
$r->print("<td>$cellentry<td>\n "); |
|
} else { |
|
$r->print("<td>".(++$studentcount)."</td><td>\n "); |
|
} |
if ($linkto eq 'nothing') { |
if ($linkto eq 'nothing') { |
$r->print($username); |
$r->print($username); |
} elsif ($linkto eq 'aboutme') { |
} elsif ($linkto eq 'aboutme') { |
Line 1304 END
|
Line 1413 END
|
<td>$id</td> |
<td>$id</td> |
<td>$name</td> |
<td>$name</td> |
<td>$section</td> |
<td>$section</td> |
</tr> |
<td>$start</td> |
|
<td>$end</td> |
|
</tr> |
END |
END |
} elsif ($mode eq 'csv') { |
} elsif ($mode eq 'csv') { |
|
next if (! defined($CSVfile)); |
# no need to bother with $linkto |
# no need to bother with $linkto |
|
if (! defined($start) || $start == 0) { |
|
$start = &mt('none'); |
|
} else { |
|
$start = &Apache::lonlocal::locallocaltime($start); |
|
} |
|
if (! defined($end) || $end == 0) { |
|
$end = &mt('none'); |
|
} else { |
|
$end = &Apache::lonlocal::locallocaltime($end); |
|
} |
my @line = (); |
my @line = (); |
foreach ($username,$domain,$id,$name,$section) { |
foreach ($username,$domain,$id,$name,$section,$start,$end) { |
push @line,&Apache::loncommon::csv_translate($_); |
push @line,&Apache::loncommon::csv_translate($_); |
} |
} |
if ($statusmode eq 'Any') { |
if ($statusmode eq 'Any') { |
push @line,&Apache::loncommon::csv_translate($status); |
push @line,&Apache::loncommon::csv_translate($status); |
} |
} |
my $tmp = $"; |
print $CSVfile '"'.join('","',@line).'"'."\n"; |
$" = '","'; |
|
$r->print("\"@line\"\n"); |
|
$" = $tmp; |
|
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
$excel_sheet->write($row++,0,[$username,$domain,$id, |
$excel_sheet->write($row,0,[$username,$domain,$id, |
$name,$section,$status]); |
$name,$section]); |
|
my $col = 5; |
|
foreach my $time ($start,$end) { |
|
$excel_sheet->write($row,$col++, |
|
&Apache::lonstathelpers::calc_serial($time), |
|
$format->{'date'}); |
|
} |
|
$excel_sheet->write($row,$col++,$status); |
|
$row++; |
} |
} |
} |
} |
if ($mode eq 'view') { |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { |
$r->print('</table><br>'); |
$r->print('</table><br>'); |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
$excel_workbook->close(); |
$excel_workbook->close(); |
$r->print('<p><a href="'.$excel_filename.'">'. |
$r->print('<p><a href="'.$excel_filename.'">'. |
&mt('Your Excel spreadsheet').'</a> '.&mt('is ready for download').'.</p>'."\n"); |
&mt('Your Excel spreadsheet').'</a> '.&mt('is ready for download').'.</p>'."\n"); |
|
} elsif ($mode eq 'csv') { |
|
close($CSVfile); |
|
$r->print('<a href="'.$CSVfilename.'">'. |
|
&mt('Your CSV file').'</a> is ready for download.'. |
|
"\n"); |
|
$r->rflush(); |
} |
} |
|
if ($mode eq 'autoenroll') { |
|
return ($studentcount,$autocount,$manualcount,$lockcount,$unlockcount); |
|
} |
|
return; |
} |
} |
|
|
|
|
Line 1365 sub print_modify_student_form {
|
Line 1502 sub print_modify_student_form {
|
$r->print('<p>'.$starttime.'</p>'); |
$r->print('<p>'.$starttime.'</p>'); |
return; |
return; |
} |
} |
|
# |
# Deal with date forms |
# Deal with date forms |
|
my $current_date_description = ''; |
|
my $textdate = ''; |
|
|
|
if (! defined($starttime) || $starttime == 0) { |
|
$current_date_description = &mt('Current Starting Date: not set'). |
|
'<br />'; |
|
} else { |
|
$current_date_description = |
|
&mt('Current Starting Date: [_1]', |
|
&Apache::lonlocal::locallocaltime($starttime)).'<br />'; |
|
} |
|
if (! defined($endtime) || $endtime == 0) { |
|
$current_date_description.= &mt('Current Ending Date: not set'). |
|
'<br />'; |
|
} else { |
|
$current_date_description.= |
|
&mt('Current Ending Date: [_1]', |
|
&Apache::lonlocal::locallocaltime($endtime)).'<br />'; |
|
|
|
} |
my $date_table = &date_setting_table($starttime,$endtime); |
my $date_table = &date_setting_table($starttime,$endtime); |
# |
# |
if (! exists($ENV{'form.Status'}) || |
if (! exists($ENV{'form.Status'}) || |
Line 1398 $lt{'odcc'}
|
Line 1556 $lt{'odcc'}
|
<input type="hidden" name="state" value="done" /> |
<input type="hidden" name="state" value="done" /> |
<input type="hidden" name="sortby" value="$sortby" /> |
<input type="hidden" name="sortby" value="$sortby" /> |
<input type="hidden" name="Status" value="$ENV{'form.Status'}" /> |
<input type="hidden" name="Status" value="$ENV{'form.Status'}" /> |
|
|
<h2>$lt{'mef'} $info{'firstname'} $info{'middlename'} |
<h2>$lt{'mef'} $info{'firstname'} $info{'middlename'} |
$info{'lastname'} $info{'generation'}, $sname\@$sdom</h2> |
$info{'lastname'} $info{'generation'}, $sname\@$sdom</h2> |
<p> |
<p> |
Line 1417 $info{'lastname'} $info{'generation'}, $
|
Line 1574 $info{'lastname'} $info{'generation'}, $
|
<input type="checkbox" name="forceid" > |
<input type="checkbox" name="forceid" > |
$lt{'disn'} |
$lt{'disn'} |
</p><p> |
</p><p> |
<b>$lt{'sec'}</b>: <input type="text" name="section" value="$section" size="4"/> |
<b>$lt{'sec'}</b>: <input type="text" name="section" value="$section" size="14"/> |
</p> |
</p> |
|
<p>$current_date_description</p> |
<p>$date_table</p> |
<p>$date_table</p> |
<input type="submit" value="$lt{'sm'}" /> |
<input type="submit" value="$lt{'sm'}" /> |
</body></html> |
</body></html> |
Line 1644 sub show_drop_list {
|
Line 1802 sub show_drop_list {
|
['sortby']); |
['sortby']); |
} |
} |
my $sortby = $ENV{'form.sortby'}; |
my $sortby = $ENV{'form.sortby'}; |
if ($sortby !~ /^(username|domain|section|fullname|id)$/) { |
if ($sortby !~ /^(username|domain|section|fullname|id|start|end)$/) { |
$sortby = 'username'; |
$sortby = 'username'; |
} |
} |
# |
# |
Line 1668 function uncheckAll(field) {
|
Line 1826 function uncheckAll(field) {
|
<input type="hidden" name="phase" value="four"> |
<input type="hidden" name="phase" value="four"> |
END |
END |
|
|
|
my %lt=&Apache::lonlocal::texthash('usrn' => "username", |
|
'dom' => "domain", |
|
'sn' => "student name", |
|
'sec' => "section", |
|
'start' => "start date", |
|
'end' => "end date", |
|
); |
if ($nosort) { |
if ($nosort) { |
my %lt=&Apache::lonlocal::texthash( |
|
'usrn' => "username", |
|
'dom' => "domain", |
|
'sn' => "student name", |
|
'sec' => "section", |
|
); |
|
$r->print(<<END); |
$r->print(<<END); |
<table border=2> |
<table border=2> |
<tr> |
<tr> |
Line 1684 END
|
Line 1843 END
|
<th>ID</th> |
<th>ID</th> |
<th>$lt{'sn'}</th> |
<th>$lt{'sn'}</th> |
<th>$lt{'sec'}</th> |
<th>$lt{'sec'}</th> |
|
<th>$lt{'start'}</th> |
|
<th>$lt{'end'}</th> |
</tr> |
</tr> |
END |
END |
|
|
} else { |
} else { |
my %lt=&Apache::lonlocal::texthash( |
|
'usrn' => "username", |
|
'dom' => "domain", |
|
'sn' => "student name", |
|
'sec' => "section", |
|
); |
|
$r->print(<<END); |
$r->print(<<END); |
<table border=2> |
<table border=2> |
<tr><th> </th> |
<tr><th> </th> |
Line 1707 END
|
Line 1862 END
|
<a href="/adm/dropadd?action=$action&sortby=fullname">$lt{'sn'}</a> |
<a href="/adm/dropadd?action=$action&sortby=fullname">$lt{'sn'}</a> |
</th><th> |
</th><th> |
<a href="/adm/dropadd?action=$action&sortby=section">$lt{'sec'}</a> |
<a href="/adm/dropadd?action=$action&sortby=section">$lt{'sec'}</a> |
|
</th><th> |
|
<a href="/adm/dropadd?action=$action&sortby=start">$lt{'start'}</a> |
|
</th><th> |
|
<a href="/adm/dropadd?action=$action&sortby=end">$lt{'end'}</a> |
</th> |
</th> |
</tr> |
</tr> |
END |
END |
Line 1730 END
|
Line 1889 END
|
} (keys(%$classlist)); |
} (keys(%$classlist)); |
foreach my $student (@Sorted_Students) { |
foreach my $student (@Sorted_Students) { |
my $error; |
my $error; |
my $username = $classlist->{$student}->[$index{'username'}]; |
my $sdata = $classlist->{$student}; |
my $domain = $classlist->{$student}->[$index{'domain'}]; |
my $username = $sdata->[$index{'username'}]; |
my $section = $classlist->{$student}->[$index{'section'}]; |
my $domain = $sdata->[$index{'domain'}]; |
my $name = $classlist->{$student}->[$index{'fullname'}]; |
my $section = $sdata->[$index{'section'}]; |
my $id = $classlist->{$student}->[$index{'id'}]; |
my $name = $sdata->[$index{'fullname'}]; |
my $status = $classlist->{$student}->[$index{'status'}]; |
my $id = $sdata->[$index{'id'}]; |
|
my $start = $sdata->[$index{'start'}]; |
|
my $end = $sdata->[$index{'end'}]; |
|
if (! defined($start) || $start == 0) { |
|
$start = &mt('none'); |
|
} else { |
|
$start = &Apache::lonlocal::locallocaltime($start); |
|
} |
|
if (! defined($end) || $end == 0) { |
|
$end = &mt('none'); |
|
} else { |
|
$end = &Apache::lonlocal::locallocaltime($end); |
|
} |
|
my $status = $sdata->[$index{'status'}]; |
next if ($status ne 'Active'); |
next if ($status ne 'Active'); |
# |
# |
$r->print(<<"END"); |
$r->print(<<"END"); |
Line 1746 END
|
Line 1918 END
|
<td>$id</td> |
<td>$id</td> |
<td>$name</td> |
<td>$name</td> |
<td>$section</td> |
<td>$section</td> |
|
<td>$start</td> |
|
<td>$end</td> |
</tr> |
</tr> |
END |
END |
} |
} |
$r->print('</table><br>'); |
$r->print('</table><br>'); |
my %lt=&Apache::lonlocal::texthash( |
%lt=&Apache::lonlocal::texthash( |
'dp' => "Drop Students", |
'dp' => "Drop Students", |
'ca' => "check all", |
'ca' => "check all", |
'ua' => "uncheck all", |
'ua' => "uncheck all", |
Line 2083 sub handler {
|
Line 2257 sub handler {
|
} |
} |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['action','state']); |
['action','state']); |
|
|
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/dropadd", |
|
text=>"Enrollment Manager", |
|
faq=>9,bug=>'Instructor Interface',}); |
# Needs to be in a course |
# Needs to be in a course |
if (! (($ENV{'request.course.fn'}) && |
if (! (($ENV{'request.course.fn'}) && |
(&Apache::lonnet::allowed('cst',$ENV{'request.course.id'})))) { |
(&Apache::lonnet::allowed('cst',$ENV{'request.course.id'})))) { |
Line 2094 sub handler {
|
Line 2274 sub handler {
|
# |
# |
# Only output the header information if they did not request csv format |
# Only output the header information if they did not request csv format |
# |
# |
if (exists($ENV{'form.state'}) && ($ENV{'form.state'} eq 'csv')) { |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
$r->content_type('text/csv'); |
['state','action']); |
} else { |
# Start page |
# Start page |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
$r->print(&header()); |
$r->print(&header()); |
|
} |
|
# |
# |
# Main switch on form.action and form.state, as appropriate |
# Main switch on form.action and form.state, as appropriate |
if (! exists($ENV{'form.action'})) { |
if (! exists($ENV{'form.action'})) { |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Enrollment Manager')); |
&print_main_menu($r); |
&print_main_menu($r); |
} elsif ($ENV{'form.action'} eq 'upload') { |
} elsif ($ENV{'form.action'} eq 'upload') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>'/adm/dropadd?action=upload&state=', |
|
text=>"Upload Classlist"}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Upload Classlist','Course_Create_Class_List')); |
if (! exists($ENV{'form.state'})) { |
if (! exists($ENV{'form.state'})) { |
&print_first_courselist_upload_form($r); |
&print_first_courselist_upload_form($r); |
} elsif ($ENV{'form.state'} eq 'got_file') { |
} elsif ($ENV{'form.state'} eq 'got_file') { |
Line 2121 sub handler {
|
Line 2306 sub handler {
|
&print_first_courselist_upload_form($r); |
&print_first_courselist_upload_form($r); |
} |
} |
} elsif ($ENV{'form.action'} eq 'drop') { |
} elsif ($ENV{'form.action'} eq 'drop') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>'/adm/dropadd?action=drop', |
|
text=>"Drop Students"}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Drop Students','Course_Drop_Student')); |
if (! exists($ENV{'form.state'})) { |
if (! exists($ENV{'form.state'})) { |
&print_drop_menu($r); |
&print_drop_menu($r); |
} elsif ($ENV{'form.state'} eq 'done') { |
} elsif ($ENV{'form.state'} eq 'done') { |
Line 2129 sub handler {
|
Line 2319 sub handler {
|
&print_drop_menu($r); |
&print_drop_menu($r); |
} |
} |
} elsif ($ENV{'form.action'} eq 'enrollstudent') { |
} elsif ($ENV{'form.action'} eq 'enrollstudent') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>'/adm/dropadd?action=enrollstudent', |
|
text=>"Enroll Student"}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Enroll Student','Course_Add_Student')); |
if (! exists($ENV{'form.state'})) { |
if (! exists($ENV{'form.state'})) { |
&get_student_username_domain_form($r); |
&get_student_username_domain_form($r); |
} elsif ($ENV{'form.state'} eq 'gotusername') { |
} elsif ($ENV{'form.state'} eq 'gotusername') { |
Line 2139 sub handler {
|
Line 2334 sub handler {
|
&get_student_username_domain_form($r); |
&get_student_username_domain_form($r); |
} |
} |
} elsif ($ENV{'form.action'} eq 'classlist') { |
} elsif ($ENV{'form.action'} eq 'classlist') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>'/adm/dropadd?action=classlist', |
|
text=>"View Classlist"}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'View Classlist','Course_View_Class_List')); |
if (! exists($ENV{'form.state'})) { |
if (! exists($ENV{'form.state'})) { |
&print_html_classlist($r); |
&print_html_classlist($r,undef); |
} elsif ($ENV{'form.state'} eq 'csv') { |
} elsif ($ENV{'form.state'} eq 'csv') { |
&print_formatted_classlist($r,'csv'); |
&print_html_classlist($r,'csv'); |
} elsif ($ENV{'form.state'} eq 'excel') { |
} elsif ($ENV{'form.state'} eq 'excel') { |
&print_formatted_classlist($r,'excel'); |
&print_html_classlist($r,'excel'); |
} else { |
} else { |
&print_html_classlist($r); |
&print_html_classlist($r,undef); |
} |
} |
} elsif ($ENV{'form.action'} eq 'modifystudent') { |
} elsif ($ENV{'form.action'} eq 'modifystudent') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>'/adm/dropadd?action=modifystudent', |
|
text=>"Modify Student Data"}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Modify Student Data','Course_Modify_Student_Data')); |
if (! exists($ENV{'form.state'})) { |
if (! exists($ENV{'form.state'})) { |
&print_html_classlist($r); |
&print_html_classlist($r); |
} elsif ($ENV{'form.state'} eq 'selected') { |
} elsif ($ENV{'form.state'} eq 'selected') { |
Line 2163 sub handler {
|
Line 2368 sub handler {
|
&Apache::lonnet::logthis("Undetermined state in londropadd.pm. ". |
&Apache::lonnet::logthis("Undetermined state in londropadd.pm. ". |
"form.action = ".$ENV{'form.action'}. |
"form.action = ".$ENV{'form.action'}. |
"Someone should fix this."); |
"Someone should fix this."); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Enrollment Manager')); |
&print_main_menu($r); |
&print_main_menu($r); |
} |
} |
# |
# |
# Finish up |
# Finish up |
if (exists($ENV{'form.state'}) && ($ENV{'form.state'} eq 'csv')) { |
$r->print('</form></body></html>'); |
$r->print("\n"); |
|
} else { |
|
$r->print('</form></body></html>'); |
|
} |
|
return OK; |
return OK; |
} |
} |
|
|