[LON-CAPA-cvs] cvs: loncom /interface londropadd.pm

matthew lon-capa-cvs@mail.lon-capa.org
Thu, 15 Jan 2004 19:27:06 -0000


matthew		Thu Jan 15 14:27:06 2004 EDT

  Modified files:              
    /loncom/interface	londropadd.pm 
  Log:
  Bug 2140: Classlist upload should remember field choices.
  
  
Index: loncom/interface/londropadd.pm
diff -u loncom/interface/londropadd.pm:1.98 loncom/interface/londropadd.pm:1.99
--- loncom/interface/londropadd.pm:1.98	Wed Jan 14 22:18:19 2004
+++ loncom/interface/londropadd.pm	Thu Jan 15 14:27:05 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to drop and add students in courses 
 #
-# $Id: londropadd.pm,v 1.98 2004/01/15 03:18:19 www Exp $
+# $Id: londropadd.pm,v 1.99 2004/01/15 19:27:05 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -190,6 +190,7 @@
 sub print_upload_manager_header {
     my ($r,$datatoken,$distotal,$krbdefdom)=@_;
     my $javascript;
+    #
     if (! exists($ENV{'form.upfile_associate'})) {
         $ENV{'form.upfile_associate'} = 'forward';
     }
@@ -205,7 +206,20 @@
     } else {
 	$javascript=&upload_manager_javascript_forward_associate();
     }
-    my $javascript_validations=&javascript_validations('auth',$krbdefdom);
+    #
+    # Deal with restored settings
+    my $password_choice = '';
+    if (exists($ENV{'form.ipwd_choice'}) &&
+        $ENV{'form.ipwd_choice'} ne '') {
+        # If a column was specified for password, assume it is for an
+        # internal password.  This is a bug waiting to be filed (could be
+        # local or krb auth instead of internal) but I do not have the 
+        # time to mess around with this now.
+        $password_choice = 'int';        
+    }
+    #
+    my $javascript_validations=&javascript_validations('auth',$krbdefdom,
+                                    $password_choice);
     my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':'');
     $r->print('<h3>'.&mt('Uploading Class List')."</h3>\n".
               "<hr>\n".
@@ -239,11 +253,13 @@
     my $authheader;
     if ($mode eq 'auth') {
         my %param = ( formname => 'studentform',
-                      kerb_def_dom => $krbdefdom );
+                      kerb_def_dom => $krbdefdom,
+                      curr_authtype => $curr_authtype);
         $authheader = &Apache::loncommon::authform_header(%param);
     } elsif ($mode eq 'createcourse') {
         my %param = ( formname => 'ccrs',
-                  kerb_def_dom => $krbdefdom );
+                  kerb_def_dom => $krbdefdom,
+                      curr_authtype => $curr_authtype );
         $authheader = &Apache::loncommon::authform_header(%param);
     } elsif ($mode eq 'modifycourse') {
         my %param = ( formname => 'cmod',
@@ -561,6 +577,11 @@
                   kerb_def_dom => $krbdefdom,
                   kerb_def_auth => $krbdef
                   );
+    if (exists($ENV{'form.ipwd_choice'}) &&
+        defined($ENV{'form.ipwd_choice'}) &&
+        $ENV{'form.ipwd_choice'} ne '') {
+        $param{'curr_authtype'} = 'int';
+    }
     my $krbform = &Apache::loncommon::authform_kerberos(%param);
     my $intform = &Apache::loncommon::authform_internal(%param);
     my $locform = &Apache::loncommon::authform_local(%param);
@@ -601,6 +622,7 @@
 ###############################################################
 sub print_upload_manager_form {
     my $r=shift;
+
     my $firstLine;
     my $datatoken;
     if (!$ENV{'form.datatoken'}) {
@@ -617,23 +639,41 @@
     my $distotal=$total+1;
     my $today=time;
     my $halfyear=$today+15552000;
+    #
+    # Restore memorized settings
+    &Apache::loncommon::restore_course_settings
+        ('enrollment_upload',{ 'username_choice' => 'scalar', # column settings
+                               'names_choice' => 'scalar',
+                               'fname_choice' => 'scalar',
+                               'mname_choice' => 'scalar',
+                               'lname_choice' => 'scalar',
+                               'gen_choice' => 'scalar',
+                               'id_choice' => 'scalar',
+                               'sec_choice' => 'scalar',
+                               'ipwd_choice' => 'scalar',
+                               'email_choice' => 'scalar',
+                           });
+    #
+    # Determine kerberos parameters as appropriate
     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);
     my $i;
     my $keyfields;
     if ($total>=0) {
-        my @field=(['username',&mt('Username')],
-                   ['names',&mt('Last Name, First Names')],
-                   ['fname',&mt('First Name')],
-                   ['mname',&mt('Middle Names/Initials')],
-                   ['lname',&mt('Last Name')],
-                   ['gen',&mt('Generation')],
-                   ['id',&mt('ID/Student Number')],
-                   ['sec',&mt('Group/Section')],
-                   ['ipwd',&mt('Initial Password')],
-                   ['email',&mt('EMail Address')]);
+        my @field=
+            (['username',&mt('Username'),     $ENV{'form.username_choice'}],
+             ['names',&mt('Last Name, First Names'),$ENV{'form.names_choice'}],
+             ['fname',&mt('First Name'),      $ENV{'form.fname_choice'}],
+             ['mname',&mt('Middle Names/Initials'),$ENV{'form.mname_choice'}],
+             ['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'}],
+             ['ipwd', &mt('Initial Password'),$ENV{'form.ipwd_choice'}],
+             ['email',&mt('EMail Address'),   $ENV{'form.email_choice'}]);
 	if ($ENV{'form.upfile_associate'} eq 'reverse') {	
 	    &Apache::loncommon::csv_print_samples($r,\@records);
 	    $i=&Apache::loncommon::csv_print_select_table($r,\@records,
@@ -1752,6 +1792,24 @@
             $fields{$ENV{'form.f'.$i}}=$keyfields[$i];
         }
     }
+    #
+    # Store the field choices away
+    foreach my $field (qw/username names 
+                       fname mname lname gen id sec ipwd email/) {
+        $ENV{'form.'.$field.'_choice'}=$fields{$field};
+    }
+    &Apache::loncommon::store_course_settings('enrollment_upload',
+                                              { 'username_choice' => 'scalar',
+                                                'names_choice' => 'scalar',
+                                                'fname_choice' => 'scalar',
+                                                'mname_choice' => 'scalar',
+                                                'lname_choice' => 'scalar',
+                                                'gen_choice' => 'scalar',
+                                                'id_choice' => 'scalar',
+                                                'sec_choice' => 'scalar',
+                                                'ipwd_choice' => 'scalar',
+                                                'email_choice' => 'scalar' });
+
     #
     my ($startdate,$enddate) = &get_dates_from_form();
     if ($ENV{'form.makedatesdefault'}) {