--- loncom/interface/Attic/londropadd.pm 2006/03/21 18:34:23 1.138
+++ loncom/interface/Attic/londropadd.pm 2006/05/11 20:09:47 1.142
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.138 2006/03/21 18:34:23 albertel Exp $
+# $Id: londropadd.pm,v 1.142 2006/05/11 20:09:47 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -307,7 +307,7 @@ sub javascript_validations {
ipass => 'You need to specify the initial password.',
name => 'The optional name field was not specified.',
snum => 'The optional student number field was not specified.',
- section => 'The optional section or group field was not specified.',
+ section => 'The optional section field was not specified.',
email => 'The optional email address field was not specified.',
continue => 'Continue enrollment?',
);
@@ -393,6 +393,7 @@ END
}
END
}
+ my $section_checks;
my $optional_checks = '';
if ( ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) {
$optional_checks = (<\n
\n";
- $Str .= ''." \n";
$Str .= &mt('Note: for large courses, this operation may be time '.
'consuming');
@@ -701,7 +704,7 @@ sub print_upload_manager_form {
['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'}],
+ ['sec', &mt('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') {
@@ -905,7 +908,8 @@ sub make_dates_default {
$result .= "Set default start and end dates for course ";
#
# Refresh the course environment
- &Apache::lonnet::coursedescription($env{'request.course.id'});
+ &Apache::lonnet::coursedescription($env{'request.course.id'},
+ {'freshen_cache' => 1});
} else {
$result .= &mt('Unable to set default dates for course').":".$put_result.
' ';
@@ -1073,7 +1077,7 @@ END
# Print it all out
my %lt=&Apache::lonlocal::texthash(
'cd' => "Course Data",
- 'gs' => "Group/Section",
+ 'gs' => "Section",
'idsn' => "ID/Student Number",
'disn' => "Disable ID/Student Number Safeguard and Force Change of Conflicting IDs (only do if you know what you are doing)",
'eas' => "Enroll as student",
@@ -1084,7 +1088,7 @@ END
$lt{'odcc'}
@@ -1668,7 +1706,7 @@ $lt{'disn'}
$current_date_description
$date_table
-
+
END
$r->print(&Apache::loncommon::end_page());
return;
@@ -1892,9 +1930,13 @@ sub show_drop_list {
['sortby']);
}
my $sortby = $env{'form.sortby'};
- if ($sortby !~ /^(username|domain|section|fullname|id|start|end)$/) {
+ if ($sortby !~ /^(username|domain|section|groups|fullname|id|start|end)$/) {
$sortby = 'username';
}
+ my $cdom = $env{'course.'.$cid.'.domain'};
+ my $cnum = $env{'course.'.$cid,'.num'};
+ my ($classgroups) = &Apache::loncoursedata::get_group_memberships(
+ $classlist,$cdom,$cnum);
#
my $action = "drop";
$r->print(< "section",
'start' => "start date",
'end' => "end date",
+ 'groups' => "active groups",
);
if ($nosort) {
+ $r->print(&Apache::loncommon::start_data_table());
$r->print(<
$lt{'usrn'}
@@ -1935,12 +1978,13 @@ my %lt=&Apache::lonlocal::texthash('usrn
$lt{'sec'}
$lt{'start'}
$lt{'end'}
+
$lt{'groups'}
END
} else {
+ $r->print(&Apache::loncommon::start_data_table());
$r->print(<
END
@@ -1967,6 +2013,7 @@ END
foreach (@$keylist) {
$index{$_} = $i++;
}
+ $index{'groups'} = scalar(@$keylist);
my $index = $index{$sortby};
my $second = $index{'username'};
my $third = $index{'domain'};
@@ -1987,6 +2034,11 @@ END
my $id = $sdata->[$index{'id'}];
my $start = $sdata->[$index{'start'}];
my $end = $sdata->[$index{'end'}];
+ my $groups = $classgroups->{$student};
+ my $active_groups;
+ if (ref($groups->{active}) eq 'HASH') {
+ $active_groups = join(', ',keys(%{$groups->{'active'}}));
+ }
if (! defined($start) || $start == 0) {
$start = &mt('none');
} else {
@@ -2000,8 +2052,8 @@ END
my $status = $sdata->[$index{'status'}];
next if ($status ne 'Active');
#
+ $r->print(&Apache::loncommon::start_data_table_row());
$r->print(<<"END");
-
$username
$domain
@@ -2010,10 +2062,11 @@ END
$section
$start
$end
-
+
$active_groups
END
+ $r->print(&Apache::loncommon::end_data_table_row());
}
- $r->print(' ');
+ $r->print(&Apache::loncommon::end_data_table().' ');
%lt=&Apache::lonlocal::texthash(
'dp' => "Drop Students",
'ca' => "check all",
@@ -2144,6 +2197,8 @@ sub upfile_drop_add {
my $count=0;
my $flushc=0;
my %student=();
+ # Get information about course groups
+ my %curr_groups = &Apache::loncommon::coursegroups();
# Get new classlist
foreach (@studentdata) {
my %entries=&Apache::loncommon::record_sep($_);
@@ -2184,6 +2239,17 @@ sub upfile_drop_add {
}
# remove non alphanumeric values from section
$sec =~ s/\W//g;
+ if ($sec eq "none" || $sec eq 'all') {
+ $r->print(' '.
+ &mt('[_1]: Unable to enroll: section name "[_2]" for user [_3] [_4] [_5] [_6] is a reserved word.',
+ $username,$sec,$fname,$mname,$lname,$gen));
+ next;
+ } elsif (($sec ne '') && (exists($curr_groups{$sec}))) {
+ $r->print(' '.
+ &mt('[_1]: Unable to enroll: section name "[_2]" for user [_3] [_4] [_5] [_6] is a course group. Section names and group names must be distinct.',
+ $username,$sec,$fname,$mname,$lname,$gen));
+ next;
+ }
# determine student id number
my $id='';
if (defined($fields{'id'})) {
@@ -2299,6 +2365,33 @@ sub drop_student_list {
$r->print('
'.&mt('Re-enrollment will re-activate data.')) if ($count);
}
+sub section_check_js {
+ my $groupslist;
+ my %curr_groups = &Apache::loncommon::coursegroups();
+ if (%curr_groups) {
+ $groupslist = join('","',sort(keys(%curr_groups)));
+ }
+ return <<"END";
+function validate(caller) {
+ var groups = new Array("$groupslist");
+ var secname = caller.value;
+ if ((secname == 'all') || (secname == 'none')) {
+ alert("'"+secname+"' may not be used as the name for a section, as it is a reserved word.\\nPlease choose a different section name.");
+ return 'error';
+ }
+ if (secname != '') {
+ for (var k=0; kprint(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Enrollment Manager'));
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment Manager'));
&print_main_menu($r,$enrl_permission,$view_permission,$grp_manage_permission,
$grp_view_permission);
} elsif ($env{'form.action'} eq 'upload' && $enrl_permission) {
&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'));
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Upload Classlist',
+ 'Course_Create_Class_List'));
if (! exists($env{'form.state'})) {
&print_first_courselist_upload_form($r);
} elsif ($env{'form.state'} eq 'got_file') {
@@ -2413,8 +2505,8 @@ sub handler {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=drop',
text=>"Drop Students"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Drop Students','Course_Drop_Student'));
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Drop Students',
+ 'Course_Drop_Student'));
if (! exists($env{'form.state'})) {
&print_drop_menu($r);
} elsif ($env{'form.state'} eq 'done') {
@@ -2426,8 +2518,8 @@ sub handler {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=enrollstudent',
text=>"Enroll Student"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Enroll Student','Course_Add_Student'));
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enroll Student',
+ 'Course_Add_Student'));
if (! exists($env{'form.state'})) {
&get_student_username_domain_form($r);
} elsif ($env{'form.state'} eq 'gotusername') {
@@ -2441,8 +2533,8 @@ sub handler {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/dropadd?action=classlist',
text=>"View Classlist"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'View Classlist','Course_View_Class_List'));
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('View Classlist',
+ 'Course_View_Class_List'));
if (! exists($env{'form.state'})) {
&print_html_classlist($r,undef);
} elsif ($env{'form.state'} eq 'csv') {
@@ -2456,8 +2548,8 @@ sub handler {
&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'));
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Modify Student Data',
+ 'Course_Modify_Student_Data'));
if (! exists($env{'form.state'})) {
&print_html_classlist($r);
} elsif ($env{'form.state'} eq 'selected') {
@@ -2472,8 +2564,7 @@ sub handler {
&Apache::lonnet::logthis("Undetermined state in londropadd.pm. ".
"form.action = ".$env{'form.action'}.
"Someone should fix this.");
- $r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Enrollment Manager'));
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment Manager'));
&print_main_menu($r,$enrl_permission,$view_permission);
}
#