--- loncom/interface/lonuserutils.pm	2008/08/20 21:28:14	1.62
+++ loncom/interface/lonuserutils.pm	2008/09/11 19:42:28	1.65
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.62 2008/08/20 21:28:14 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.65 2008/09/11 19:42:28 droeschl Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -169,7 +169,7 @@ sub propagate_id_change {
 }
 
 sub update_classlist {
-    my ($cdom,$cnum,$udom,$uname,$user) = @_;
+    my ($cdom,$cnum,$udom,$uname,$user,$newend) = @_;
     my ($uid,$classlistentry);
     my $fullname =
         &Apache::lonnet::format_name($user->{'firstname'},$user->{'middlename'},
@@ -180,15 +180,37 @@ sub update_classlist {
     my @classinfo = split(/:/,$classhash{$uname.':'.$udom});
     my $ididx=&Apache::loncoursedata::CL_ID() - 2;
     my $nameidx=&Apache::loncoursedata::CL_FULLNAME() - 2;
+    my $endidx = &Apache::loncoursedata::CL_END() - 2;
+    my $startidx = &Apache::loncoursedata::CL_START() - 2;
     for (my $i=0; $i<@classinfo; $i++) {
-        if ($i == $ididx) {
+        if ($i == $endidx) {
+            if ($newend ne '') {
+                $classlistentry .= $newend.':';
+            } else {
+                $classlistentry .= $classinfo[$i].':';
+            }
+        } elsif ($i == $startidx) {
+            if ($newend ne '') {
+                if ($classinfo[$i] > $newend) {
+                    $classlistentry .= $newend.':';
+                } else {
+                    $classlistentry .= $classinfo[$i].':';
+                }
+            } else {
+                $classlistentry .= $classinfo[$i].':';
+            }
+        } elsif ($i == $ididx) {
             if (defined($user->{'id'})) {
                 $classlistentry .= $user->{'id'}.':';
             } else {
                 $classlistentry .= $classinfo[$i].':';
             }
         } elsif ($i == $nameidx) {
-            $classlistentry .= $fullname.':';
+            if (defined($user->{'lastname'})) {
+                $classlistentry .= $fullname.':';
+            } else {
+                $classlistentry .= $classinfo[$i].':';
+            }
         } else {
             $classlistentry .= $classinfo[$i].':';
         }
@@ -2219,9 +2241,9 @@ END
                        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.");
+            $r->print(&mt('Problems occurred in writing the csv file. '
+                         .'This error has been logged. '
+                         .'Please alert your LON-CAPA administrator.'));
             $CSVfile = undef;
         }
         #
@@ -2537,9 +2559,8 @@ END
                   &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->print('<p><a href="'.$CSVfilename.'">'.
+                  &mt('Your CSV file').'</a> '.&mt('is ready for download').'.</p>'."\n");
         $r->rflush();
     }
     if ($mode eq 'autoenroll') {
@@ -4256,11 +4277,9 @@ sub classlist_drop {
     my ($scope,$uname,$udom,$now) = @_;
     my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)});
     if (&Apache::lonnet::is_course($cdom,$cnum)) {
-        my $user = $uname.':'.$udom;
         if (!&active_student_roles($cnum,$cdom,$uname,$udom)) {
-            my $result =
-                &Apache::lonnet::cput('classlist',
-                                      { $user => $now },$cdom,$cnum);
+            my %user;
+            my $result = &update_classlist($cdom,$cnum,$udom,$uname,\%user,$now);
             return &mt('Drop from classlist: [_1]',
                        '<b>'.$result.'</b>').'<br />';
         }