--- loncom/interface/Attic/londropadd.pm	2003/08/26 04:56:29	1.84
+++ loncom/interface/Attic/londropadd.pm	2003/11/06 20:04:06	1.88
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to drop and add students in courses 
 #
-# $Id: londropadd.pm,v 1.84 2003/08/26 04:56:29 albertel Exp $
+# $Id: londropadd.pm,v 1.88 2003/11/06 20:04:06 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -42,15 +42,17 @@ use Apache::loncommon();
 use Apache::lonhtmlcommon();
 use Apache::Constants qw(:common :http REDIRECT);
 use Spreadsheet::WriteExcel;
+use Apache::lonlocal;
 
 ###############################################################
 ###############################################################
 sub header {
     my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager');
+    my $title = &mt('LON-CAPA Enrollment Manager');
     return(<<ENDHEAD);
 <html>
 <head>
-<title>LON-CAPA Enrollment Manager</title>
+<title>$title</title>
 </head>
 $bodytag
 <form method="post" enctype="multipart/form-data"  
@@ -79,7 +81,7 @@ sub modifystudent {
             # We are in this course
             my $section=$1;
             $section='' if ($course eq $courseid.'_st');
-            if ($section eq $csec) {
+            if (defined($csec) && $section eq $csec) {
                 $result .= 'ok:';
             } elsif ( ((!$section) && (!$csec)) || ($section ne $csec) ) {
                 my (undef,$end,$start)=split(/\_/,$roles{$course});
@@ -139,26 +141,33 @@ sub domain_form {
 #  Menu Phase One
 sub print_main_menu {
     my $r=shift;
+    my %Text = &Apache::lonlocal::texthash
+        ('upload'    => 'Upload a class list',
+         'enrollone' => 'Enroll a single student',
+         'modify'    => 'Modify student data',
+         'view'      => 'View Class List',
+         'drop'      => 'Drop Students');
+
     $r->print(<<END);
 <p>
 <font size="+1">
-    <a href="/adm/dropadd?action=upload">Upload a course list</a>
+    <a href="/adm/dropadd?action=upload">$Text{'upload'}</a>
 </font>
 </p><p>
 <font size="+1">
-    <a href="/adm/dropadd?action=enrollstudent">Enroll a single student</a>
+    <a href="/adm/dropadd?action=enrollstudent">$Text{'enrollone'}</a>
 </font>
 </p><p>
 <font size="+1">
-    <a href="/adm/dropadd?action=modifystudent">Modify student data</a>
+    <a href="/adm/dropadd?action=modifystudent">$Text{'modify'}</a>
 </font>
 </p><p>
 <font size="+1">
-    <a href="/adm/dropadd?action=classlist">View Class List</a>
+    <a href="/adm/dropadd?action=classlist">$Text{'view'}</a>
 </font>
 </p><p>
 <font size="+1">
-    <a href="/adm/dropadd?action=drop">Drop Students</a>
+    <a href="/adm/dropadd?action=drop">$Text{'drop'}</a>
 </font>
 </p>
 END
@@ -186,11 +195,14 @@ sub print_upload_manager_header {
     }
     my $javascript_validations=&javascript_validations($krbdefdom);
     my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':'');
+    $r->print('<h3>'.&mt('Uploading Class List')."</h3>\n".
+              "<hr>\n".
+              '<h3>'.&mt('Identify fields')."</h3>\n");
+    $r->print("<p>\n".
+              &mt('Total number of records found in file: [_1].',$distotal).
+              "\n".
+              "</p><hr>\n");
     $r->print(<<ENDPICK);
-<h3>Uploading Class List</h3>
-<hr>
-<h3>Identify fields</h3>
-Total number of records found in file: $distotal <hr />
 Enter as many fields as you can. The system will inform you and bring you back
 to this page if the data selected is insufficient to run your class.<hr />
 <input type="button" value="Reverse Association" onClick="javascript:this.form.associate.value='Reverse Association';submit(this.form);" />
@@ -473,8 +485,8 @@ sub print_upload_manager_footer {
     my $date_table = &date_setting_table();
     $r->print(<<ENDPICK);
 </table>
-<input type=hidden name=nfields value=$i>
-<input type=hidden name=keyfields value="$keyfields">
+<input type="hidden" name="nfields" value="$i">
+<input type="hidden" name="keyfields" value="$keyfields">
 <h3>Login Type</h3>
 <p>Note: this will not take effect if the user already exists</p>
 <p>
@@ -521,7 +533,7 @@ sub print_upload_manager_form {
     my $distotal=$total+1;
     my $today=time;
     my $halfyear=$today+15552000;
-    my $defdom=$ENV{'request.role.domain'};
+    my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
     my ($krbdef,$krbdefdom) =
         &Apache::loncommon::get_kerberos_defaults($defdom);
     &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);
@@ -723,7 +735,7 @@ sub make_dates_default {
 sub get_student_username_domain_form {
     my $r = shift;
     my $domform = &Apache::loncommon::select_dom_form
-        ($ENV{'request.role.domain'},'cudomain',0);
+        ($ENV{'course.'.$ENV{'request.course.id'}.'.domain'},'cudomain',0);
     $r->print(<<END);
 <input type="hidden" name="action" value="enrollstudent" />
 <input type="hidden" name="state"  value="gotusername" />
@@ -754,12 +766,11 @@ sub print_enroll_single_student_form {
     if ($home ne 'no_host') {
         $new_user = 0;
     }
-    &Apache::lonnet::logthis('home = '.$home);
     #
     my $user_data_html = '';
     my $javascript_validations = '';
     if ($new_user) {
-        my $defdom=$ENV{'request.role.domain'};
+        my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
         # Set up authentication forms
         my ($krbdef,$krbdefdom) =
             &Apache::loncommon::get_kerberos_defaults($domain);
@@ -1149,6 +1160,11 @@ sub print_modify_student_form {
     }
     # determine the students starting and ending times and section
     my ($starttime,$endtime,$section) = &get_enrollment_data($sname,$sdom);
+    if ($starttime =~ /^error/) {
+        $r->print('<h2>Error</h2>');
+        $r->print('<p>'.$starttime.'</p>');
+        return;
+    }
     # Deal with date forms
     my $date_table = &date_setting_table($starttime,$endtime);
     #
@@ -1348,7 +1364,7 @@ sub get_enrollment_data {
     my %roles = &Apache::lonnet::dump('roles',$sdomain,$sname);
     my ($tmp) = keys(%roles);
     # Bail out if we were unable to get the students roles
-    return "666" if ($tmp =~ /^(con_lost|error|no_such_host)/i);
+    return ('error'.$tmp) if ($tmp =~ /^(con_lost|error|no_such_host)/i);
     # Go through the roles looking for enrollment in this course
     my ($end,$start) = (undef,undef);
     my $section = '';
@@ -1516,27 +1532,25 @@ END
 #
 sub print_first_courselist_upload_form {
     my $r=shift;
-    my $upfile_select=&Apache::loncommon::upfile_select_html();
-    my $create_classlist_help = 
-	&Apache::loncommon::help_open_topic("Course_Create_Class_List",
-           "How do I create a class list from a spreadsheet");
-    my $create_csv_help =
-	&Apache::loncommon::help_open_topic("Course_Convert_To_CSV",
-           "How do I create a CSV file from a spreadsheet");
-    $r->print(<<ENDUPFORM);
-<input type=hidden name=phase value=two>
-<h3>Upload a courselist</h3>
-$upfile_select
-<p>
-<input type=submit name="fileupload" value="Upload Courselist">
-<input type="hidden" name="action" value="upload" />
-<input type="hidden" name="state"  value="got_file" />
-<input type="checkbox" name="noFirstLine" /> Ignore First Line<br />
-</p>
-$create_classlist_help <br />
-$create_csv_help
-</body></html>
-ENDUPFORM
+    my $str;
+    $str  = '<input type="hidden" name="phase" value="two">';
+    $str .= '<input type="hidden" name="action" value="upload" />';
+    $str .= '<input type="hidden"   name="state"  value="got_file" />';
+    $str .= "<h3>".&mt('Upload a class list')."</h3>\n";
+    $str .= &Apache::loncommon::upfile_select_html();
+    $str .= "<p>\n";
+    $str .= '<input type="submit" name="fileupload" value="'.
+        &mt('Upload class list').'">'."\n";
+    $str .= '<input type="checkbox" name="noFirstLine" /> '.
+        &mt('Ignore First Line')."</p>\n";
+    $str .= &Apache::loncommon::help_open_topic("Course_Create_Class_List",
+                         "How do I create a class list from a spreadsheet").
+                             "<br />\n";
+    $str .= &Apache::loncommon::help_open_topic("Course_Convert_To_CSV",
+                           "How do I create a CSV file from a spreadsheet").
+                               "<br />\n";
+    $str .= "</body>\n</html>\n";
+    $r->print($str);
     return;
 }
 
@@ -1571,8 +1585,9 @@ sub upfile_drop_add {
     } else {
         my %home_servers = &Apache::loncommon::get_library_servers($domain);
         if (! exists($home_servers{$desiredhost})) {
-            $r->print('<font color="#ff0000">Error:</font>'.
-                      'Invalid home server specified');
+            $r->print('<font color="#ff0000">'.&mt('Error').'</font>'.
+                      &mt('Invalid home server specified'));
+            $r->print("</body>\n</html>\n");
             return;
         }
     }
@@ -1597,8 +1612,8 @@ sub upfile_drop_add {
     if ($amode =~ /^krb/) {
         if (! defined($genpwd) || $genpwd eq '') {
             $r->print('<font color="red" size="+1">'.
-                      'Unable to enroll students:'.'</font>  '.
-                      'No Kerberos domain was specified.</p>');
+                      &mt('Unable to enroll students').'</font>  '.
+                      &mt('No Kerberos domain was specified.').'</p>');
             $amode = ''; # This causes the loop below to be skipped
         }
     }
@@ -1606,7 +1621,7 @@ sub upfile_drop_add {
         #######################################
         ##         Enroll Students           ##
         #######################################
-        $r->print('<h3>Enrolling Students</h3>'."\n".'<p>');
+        $r->print('<h3>'.&mt('Enrolling Students')."</h3>\n<p>\n");
         my $count=0;
         my $flushc=0;
         my %student=();
@@ -1635,9 +1650,10 @@ sub upfile_drop_add {
                     }
                 }
                 if ($entries{$fields{'username'}}=~/\W/) {
-                    $r->print('<br /><b>Unacceptable username: '.
-                              $entries{$fields{'username'}}.' for user '.
-                              $fname.' '.$mname.' '.$lname.' '.$gen.'</b>');
+                    $r->print('<br />'.
+      &mt('<b>[_1]</b>: Unacceptable username for user [_2] [_3] [_4] [_5]',
+          $entries{$fields{'username'}},$fname,$mname,$lname,$gen).
+                              '</b>');
                 } else {
                     # determine section number
                     my $sec='';
@@ -1691,8 +1707,8 @@ sub upfile_drop_add {
                              $email);
                         if ($reply ne 'ok') {
                             $reply =~ s/^error://;
-                            $r->print('<br /><b>'.$username.'</b>:'.
-                                      '  Unable to enroll: '.$reply);
+                            $r->print('<br />'.
+                &mt('<b>[_1]</b>:  Unable to enroll: [_2]',$username,$reply));
          		} else {
                             $count++; $flushc++;
                             $student{$username}=1;
@@ -1703,24 +1719,28 @@ sub upfile_drop_add {
                             }
                         }
                     } else {
-                        $r->print('<br /><b>'.$username.'</b>:'.
-                           '  Unable to enroll: No password specified.');
+                        $r->print('<br />'.
+      &mt('<b>[_1]</b>: Unable to enroll.  No password specified.',$username)
+                                  );
                     }
                 }
             }
         } # end of foreach (@studentdata)
-        $r->print('</p><p>Processed Students: '.$count.'</p>');
-        $r->print("<p>If active, the new role will be available when the ".
-                  "students next log in to LON-CAPA.</p>");
+        $r->print("</p>\n<p>\n".&mt('Processed [_1] student(s).',$count).
+                  "</p>\n");
+        $r->print("<p>\n".
+                  &mt('If active, the new role will be available when the '.
+                  'students next log in to LON-CAPA.')."</p>\n");
         #####################################
         #           Drop students           #
         #####################################
         if ($ENV{'form.fullup'} eq 'yes') {
-            $r->print('<h3>Dropping Students</h3>');
+            $r->print('<h3>'.&mt('Dropping Students')."</h3>\n");
             #  Get current classlist
             my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
             if (! defined($classlist)) {
-                $r->print("There are no students currently enrolled.\n");
+                $r->print(&mt('There are no students currently enrolled.').
+                          "\n");
             } else {
                 # Remove the students we just added from the list of students.
                 foreach (@studentdata) {
@@ -1753,15 +1773,16 @@ sub drop_student_list {
         # drop student
         my $result = &modifystudent($udom,$uname,$ENV{'request.course.id'});
         if ($result eq 'ok' || $result eq 'ok:') {
-            $r->print('Dropped '.$uname.' @ '.$udom.'<br>');
+            $r->print(&mt('Dropped [_1]',$uname.'@'.$udom).'<br>');
             $count++;
         } else {
-            $r->print('Error dropping '.$uname.' @ '.$udom.': '.$result.
+            $r->print(
+          &mt('Error dropping [_1]:[_2]',$uname.'@'.$udom,$result).
                       '<br />');
         }
     }
-    $r->print('<p><b>Dropped '.$count.' student(s).</b>');
-    $r->print('<p>Re-enrollment will re-activate data.') if ($count);
+    $r->print('<p><b>'.&mt('Dropped [_1] student(s).',$count).'</b></p>');
+    $r->print('<p>'.&mt('Re-enrollment will re-activate data.')) if ($count);
 }
 
 ###################################################################
@@ -1801,7 +1822,7 @@ The response to the request is governed
 sub handler {
     my $r=shift;
     if ($r->header_only) {
-        $r->content_type('text/html');
+        &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;
         return OK;
     }
@@ -1822,7 +1843,7 @@ sub handler {
         $r->content_type('text/csv');
     } else {
         # Start page
-        $r->content_type('text/html');
+        &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;
         $r->print(&header());
     }