--- 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("
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 {
username | domain | ID | -student name | generation | section | student name | section | 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('||
---|---|---|---|---|---|---|---|---|---|
'. - '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 |