--- loncom/interface/Attic/londropadd.pm 2002/09/17 15:52:44 1.50 +++ loncom/interface/Attic/londropadd.pm 2002/09/18 14:17:47 1.51 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.50 2002/09/17 15:52:44 matthew Exp $ +# $Id: londropadd.pm,v 1.51 2002/09/18 14:17:47 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -728,48 +728,33 @@ END # =================================================== get the current classlist sub get_current_classlist { - my ($domain,$identifier) = @_; - # domain is the domain the class is being run in - # identifier is the internal, unique identifier for the class. - my %currentlist=(); - my $now=time; - my %results=&Apache::lonnet::dump('classlist',$domain,$identifier); - my ($tmp) = keys(%results); - if ($tmp !~ /^(con_lost|error|no_such_host)/i) { - foreach my $student (keys(%results)) { - # Extract the start and end dates - my ($end,$start)=split(/\:/,$results{$student}); - # If the class isn't over, put it in the list - unless (($end) && ($now>$end)) { - $currentlist{$student}=1; - } - } - return (undef,%currentlist); - } else { - $tmp =~ s/^error://; - return ($tmp,undef); - } + my $r = shift; + # Call DownloadClasslist + my $cid = $ENV{'request.course.id'}; + my $c = $r->connection; + my $classlisthash = &Apache::loncoursedata::DownloadClasslist + ($cid,'Not downloaded',$c); + # Call ProcessClasslist + my %cache; + my @students = &Apache::loncoursedata::ProcessClasslist(\%cache, + $classlisthash, + $cid,$c); + return (\@students,\%cache); } # ========================================================= Menu Phase Two Drop -sub menu_phase_two_drop { +sub print_drop_menu { my $r=shift; $r->print("

Drop Students

"); my $cid=$ENV{'request.course.id'}; - my ($error,%currentlist)=&get_current_classlist - ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'}); - if (defined($error)) { - if ($error =~ /^No such file or directory/) { - $r->print("There are no students currently enrolled.\n"); - } else { - $r->print("
ERROR:$error
"); - } - } elsif (!defined(%currentlist)) { + my ($student_array,$student_data)=&get_current_classlist($r); + if (! scalar(@$student_array)) { $r->print("There are no students currently enrolled.\n"); - } else { - # Print out the available choices - &show_drop_list($r,%currentlist); + return; } + # Print out the available choices + &show_drop_list($student_array,$student_data,$r); + return; } # ============================================== view classlist @@ -782,22 +767,15 @@ sub print_html_classlist {

END my $cid=$ENV{'request.course.id'}; - my ($error,%currentlist)=&get_current_classlist - ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'}); - if (defined($error)) { - if ($error =~ /^No such file or directory/) { - $r->print("There are no students currently enrolled.\n"); - } else { - $r->print("
ERROR:$error
"); - } - } elsif (!defined(%currentlist)) { + my ($student_array,$student_data)=&get_current_classlist($r); + if (! scalar(@$student_array)) { $r->print("There are no students currently enrolled.\n"); } else { # Print out the available choices if ($ENV{'form.action'} eq 'modifystudent') { - &show_class_list($r,'view','modify',%currentlist); + &show_class_list($r,'view','modify',$student_array,$student_data); } else { - &show_class_list($r,'view','aboutme',%currentlist); + &show_class_list($r,'view','aboutme',$student_array,$student_data); } } } @@ -806,24 +784,17 @@ END sub print_csv_classlist { my $r=shift; my $cid=$ENV{'request.course.id'}; - my ($error,%currentlist)=&get_current_classlist - ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'}); - if (defined($error)) { - if ($error =~ /^No such file or directory/) { - $r->print("There are no students currently enrolled.\n"); - } else { - $r->print("
ERROR:$error
"); - } - } elsif (!defined(%currentlist)) { + my ($student_array,$student_data)=&get_current_classlist($r); + if (! scalar(@$student_array)) { $r->print("There are no students currently enrolled.\n"); } else { - &show_class_list($r,'csv','nolink',%currentlist); + &show_class_list($r,'csv','nolink',$student_array,$student_data); } } # =================================================== Show student list to drop sub show_class_list { - my ($r,$mode,$linkto,%currentlist)=@_; + my ($r,$mode,$linkto,$students,$student_data)=@_; my $cid=$ENV{'request.course.id'}; # Print out header if ($mode eq 'view') { @@ -836,66 +807,51 @@ sub show_class_list {

- + END } elsif ($mode eq 'csv') { - $r->print('"'.join('","',("username","domain","ID","last name", - "first name","middle name","generation", + $r->print('"'.join('","',("username","domain","ID","student name", "section")).'"'."\n"); } - foreach (sort keys %currentlist) { - my ($sname,$sdom)=split(/\:/,$_); - my %reply=&Apache::lonnet::idrget($sdom,$sname); - my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid); - my %info=&Apache::lonnet::get('environment', - ['firstname','middlename', - 'lastname','generation'], - $sdom, $sname); - my ($tmp) = keys(%info); - if ($tmp =~ /^(con_lost|error|no_such_host)/i) { - if ($mode eq 'view') { - $r->print(''); - } else { - $r->print('"Internal error: unable to get environment for '. - $sname.' in domain '.$sdom.'"'); + foreach my $student (@$students) { + my $username = $student_data->{$student.':username'}; + my $domain = $student_data->{$student.':domain'}; + my $section = $student_data->{$student.':section'}; + my $name = $student_data->{$student.':fullname'}; + my $status = $student_data->{$student.':Status'}; + my $id = $student_data->{$student.':id'}; + next if ($status ne 'Active'); + if ($mode eq 'view') { + $r->print("\n \n - - - - - + + + + END - } elsif ($mode eq 'csv') { - # no need to bother with $linkto - my @line = (); - foreach ($sname,$sdom,$reply{$sname}, - $info{'lastname'},$info{'firstname'}, - $info{'middlename'},$info{'generation'},$ssec) { - push @line,&Apache::loncommon::csv_translate($_); - } - my $tmp = $"; - $" = '","'; - $r->print("\"@line\"\n"); - $" = $tmp; + } elsif ($mode eq 'csv') { + # no need to bother with $linkto + my @line = (); + foreach ($username,$domain,$id,$name,$section) { + push @line,&Apache::loncommon::csv_translate($_); } + my $tmp = $"; + $" = '","'; + $r->print("\"@line\"\n"); + $" = $tmp; } } $r->print('
usernamedomainIDstudent namegenerationsection
student namesection
'. - 'Internal error: unable to get environment '. - 'for '.$sname.' in domain '.$sdom.'
\n "); + if ($linkto eq 'nothing') { + $r->print($username); + } elsif ($linkto eq 'aboutme') { + $r->print(&Apache::loncommon::aboutmewrapper($username, + $username, + $domain)); + } elsif ($linkto eq 'modify') { + $r->print(''.$username."\n"); } - } else { - if ($mode eq 'view') { - $r->print("
\n "); - if ($linkto eq 'nothing') { - $r->print($sname); - } elsif ($linkto eq 'aboutme') { - $r->print(&Apache::loncommon::aboutmewrapper($sname,$sname, - $sdom)); - } elsif ($linkto eq 'modify') { - $r->print(''.$sname."\n"); - } - $r->print(<<"END"); + $r->print(<<"END"); $sdom$reply{$sname}$info{'lastname'}, $info{'firstname'} $info{'middlename'}$info{'generation'}$ssec$domain$id$name$section

') if ($mode eq 'view'); @@ -1063,20 +1019,18 @@ sub get_enrollment_data { # =================================================== Show student list to drop sub show_drop_list { - my ($r,%currentlist)=@_; + my ($students,$student_data,$r)=@_; my $cid=$ENV{'request.course.id'}; $r->print(<<'END');