[LON-CAPA-cvs] cvs: loncom(GCI_3) /interface lonuserutils.pm

raeburn raeburn@source.lon-capa.org
Mon, 15 Nov 2010 17:37:47 -0000


raeburn		Mon Nov 15 17:37:47 2010 EDT

  Modified files:              (Branch: GCI_3)
    /loncom/interface	lonuserutils.pm 
  Log:
  - Customization for GCI_3
    - Backport 1.128, 1.129, 1.132.
    - Modification for changed position (GCI_3) of password item in fields list. 
  
  
Index: loncom/interface/lonuserutils.pm
diff -u loncom/interface/lonuserutils.pm:1.109.2.8 loncom/interface/lonuserutils.pm:1.109.2.9
--- loncom/interface/lonuserutils.pm:1.109.2.8	Tue Nov  9 14:14:55 2010
+++ loncom/interface/lonuserutils.pm	Mon Nov 15 17:37:47 2010
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.109.2.8 2010/11/09 14:14:55 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.109.2.9 2010/11/15 17:37:47 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -630,28 +630,43 @@
 ###############################################################
 sub upload_manager_javascript_forward_associate {
     my ($can_assign) = @_;
-    my $auth_update;
+    my ($auth_update,$numbuttons,$argreset);
     if (ref($can_assign) eq 'HASH') {
-        if (keys(%{$can_assign}) > 1) {
+        if ($can_assign->{'krb4'} || $can_assign->{'krb5'}) {
+            $argreset .= "      vf.krbarg.value='';\n";
+            $numbuttons ++ ;
+        }
+        if ($can_assign->{'int'}) {
+            $argreset .= "      vf.intarg.value='';\n";
+            $numbuttons ++;
+        }
+        if ($can_assign->{'loc'}) {
+            $argreset .= "      vf.locarg.value='';\n";
+            $numbuttons ++;
+        }
+        if (!$can_assign->{'int'}) {
+            my $warning = &mt('You may not specify an initial password for each user, as this is only available when new users use LON-CAPA internal authentication.\n').
+                          &mt('Your current role does not have rights to create users with that authentication type.');
+            $auth_update = <<"END";
+   // Currently the initial password field is only supported for internal auth
+   // (see bug 6368).
+   if (nw==2) {
+       eval('vf.f'+tf+'.selectedIndex=0;')
+       alert('$warning');
+   }
+END
+        } elsif ($numbuttons > 1) {
             $auth_update = <<"END";
    // If we set the password, make the password form below correspond to
    // the new value.
-   if (nw==9) {
+   if (nw==2) {
       changed_radio('int',document.studentform);
       set_auth_radio_buttons('int',document.studentform);
+$argreset
+   }
+
 END
         }
-        if ($can_assign->{'krb'}) {
-           $auth_update .= "      vf.krbarg.value='';\n";
-        }
-        if ($can_assign->{'int'}) {
-           $auth_update .= "      vf.intarg.value='';\n";
-        }
-        if ($can_assign->{'loc'}) {
-           $auth_update .= "     vf.locarg.value='';\n";
-        }
-        $auth_update .= "
-   }\n";
     }
 
     return(<<ENDPICK);
@@ -749,28 +764,44 @@
 ###############################################################
 sub upload_manager_javascript_reverse_associate {
     my ($can_assign) = @_;
-    my $auth_update;
+    my ($auth_update,$numbuttons,$argreset);
     if (ref($can_assign) eq 'HASH') {
-        if (keys(%{$can_assign}) > 1) {
-            $auth_update = <<"END";
-    // initial password specified, pick internal authentication
-    if (tf==8 && nw!=0) {
-        changed_radio('int',document.studentform);
-        set_auth_radio_buttons('int',document.studentform);
-END
-        }
-        if ($can_assign->{'krb'}) {
-           $auth_update .= "        vf.krbarg.value='';\n";
+        if ($can_assign->{'krb4'} || $can_assign->{'krb5'}) {
+            $argreset .= "      vf.krbarg.value='';\n";
+            $numbuttons ++ ;
         }
         if ($can_assign->{'int'}) {
-           $auth_update .= "        vf.intarg.value='';\n";
+            $argreset .= "      vf.intarg.value='';\n";
+            $numbuttons ++;
         }
         if ($can_assign->{'loc'}) {
-           $auth_update .= "       vf.locarg.value='';\n";
+            $argreset .= "      vf.locarg.value='';\n";
+            $numbuttons ++;
+        }
+        if (!$can_assign->{'int'}) {
+            my $warning = &mt('You may not specify an initial password, as this is only available when new users use LON-CAPA internal authentication.\n').
+                          &mt('Your current role does not have rights to create users with that authentication type.');
+            $auth_update = <<"END";
+   // Currently the initial password field is only supported for internal auth
+   // (see bug 6368).
+   if (tf==1 && nw!=0) {
+       eval('vf.f'+tf+'.selectedIndex=0;')
+       alert('$warning');
+   }
+END
+        } elsif ($numbuttons > 1) {
+            $auth_update = <<"END";
+   // initial password specified, pick internal authentication
+   if (tf==1 && nw!=0) {
+      changed_radio('int',document.studentform);
+      set_auth_radio_buttons('int',document.studentform);
+$argreset
+   }
+
+END
         }
-        $auth_update .= "
-    }\n";
     }
+
     return(<<ENDPICK);
 function verify(vf,sec_caller) {
     var founduname=0;
@@ -4164,6 +4195,7 @@
             my @secs;
             my %entries=&Apache::loncommon::record_sep($line);
             # Determine user name
+            $entries{$fields{'username'}} =~ s/^\s+|\s+$//g;
             unless (($entries{$fields{'username'}} eq '') ||
                     (!defined($entries{$fields{'username'}}))) {
                 my ($fname, $mname, $lname,$gen) = ('','','','');
@@ -4184,13 +4216,20 @@
                         $gen=$entries{$fields{'gen'}};
                     }
                 }
+
                 if ($entries{$fields{'username'}}
                     ne &LONCAPA::clean_username($entries{$fields{'username'}})) {
+                    my $nowhitespace;
+                    if ($entries{$fields{'username'}} =~ /\s/) {
+                        $nowhitespace = ' - '.&mt('usernames may not contain spaces.');
+                    }
                     $r->print('<br />'.
       &mt('[_1]: Unacceptable username for user [_2] [_3] [_4] [_5]',
-          '<b>'.$entries{$fields{'username'}}.'</b>',$fname,$mname,$lname,$gen));
+          '<b>'.$entries{$fields{'username'}}.'</b>',$fname,$mname,$lname,$gen).
+                              $nowhitespace);
                     next;
                 } else {
+                    $entries{$fields{'domain'}} =~ s/^\s+|\s+$//g;
                     if ($entries{$fields{'domain'}} 
                         ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) {
                         $r->print('<br />'. '<b>'.$entries{$fields{'domain'}}.
@@ -4249,6 +4288,7 @@
                     # determine email address
                     my $email='';
                     if (defined($fields{'email'})) {
+                        $entries{$fields{'email'}} =~ s/^\s+|\s+$//g;
                         if (defined($entries{$fields{'email'}})) {
                             $email=$entries{$fields{'email'}};
                             unless ($email=~/^[^\@]+\@[^\@]+$/) { $email=''; }
@@ -4295,7 +4335,7 @@
                         $role = $defaultrole;
                     }
                     # Clean up whitespace
-                    foreach (\$id,\$fname,\$mname,\$lname,\$gen) {
+                    foreach (\$id,\$fname,\$mname,\$lname,\$gen,\$inststatus) {
                         $$_ =~ s/(\s+$|^\s+)//g;
                     }
                     # check against rules