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

raeburn lon-capa-cvs-allow@mail.lon-capa.org
Thu, 17 Jul 2008 20:05:16 -0000


raeburn		Thu Jul 17 16:05:16 2008 EDT

  Modified files:              
    /loncom/interface	loncreateuser.pm 
  Log:
  - Moving evaluation of modifiable user information fields in selfcreate context to &selfcreate_canmodify().
  - Escaping institutional status types in form elements included in self-enrollment configuration screen.
  
  
Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.256 loncom/interface/loncreateuser.pm:1.257
--- loncom/interface/loncreateuser.pm:1.256	Wed Jul 16 08:06:28 2008
+++ loncom/interface/loncreateuser.pm	Thu Jul 17 16:05:14 2008
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.256 2008/07/16 12:06:28 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.257 2008/07/17 20:05:14 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1397,30 +1397,24 @@
 
 sub personal_data_display {
     my ($ccuname,$ccdomain,$newuser,$context,$inst_results,$rolesarray) = @_;
-    my ($output,$showforceid,%userenv,%canmodify,@inststatuses);
+    my ($output,$showforceid,%userenv,%canmodify);
     my @userinfo = ('firstname','middlename','lastname','generation',
                     'permanentemail','id');
     my $rowcount = 0;
     my $editable = 0;
-    if ($context eq 'selfcreate') {
-        if (ref($inst_results) eq 'HASH') {
-            @inststatuses = &get_inststatuses($inst_results);
-            if (@inststatuses == 0) {
-                @inststatuses = ('default');
-            }
-            $rolesarray = \@inststatuses;
-        }
-    }
     if (!$newuser) {
         # Get the users information
         %userenv = &Apache::lonnet::get('environment',
                    ['firstname','middlename','lastname','generation',
                     'permanentemail','id'],$ccdomain,$ccuname);
     }
-    if ((!$newuser) || ($context eq 'selfcreate')) {
+    if (!$newuser) {
         %canmodify =
             &Apache::lonuserutils::can_modify_userinfo($context,$ccdomain,
                                                        \@userinfo,$rolesarray);
+    } elsif ($context eq 'selfcreate') {
+        %canmodify = &selfcreate_canmodify($context,$ccdomain,\@userinfo,
+                                           $inst_results,$rolesarray);
     }
     my %lt=&Apache::lonlocal::texthash(
                 'pd'             => "Personal Data",
@@ -1506,6 +1500,21 @@
     }
 }
 
+sub selfcreate_canmodify {
+    my ($context,$dom,$userinfo,$inst_results,$rolesarray) = @_;
+    if (ref($inst_results) eq 'HASH') {
+        my @inststatuses = &get_inststatuses($inst_results);
+        if (@inststatuses == 0) {
+            @inststatuses = ('default');
+        }
+        $rolesarray = \@inststatuses;
+    }
+    my %canmodify =
+        &Apache::lonuserutils::can_modify_userinfo($context,$dom,$userinfo,
+                                                   $rolesarray);
+    return %canmodify;
+}
+
 sub get_inststatuses {
     my ($insthashref) = @_;
     my @inststatuses = ();
@@ -3738,13 +3747,14 @@
                 $output .= '</tr><tr>';
             }
             if (defined($usertypes->{$type})) {
+                my $esc_type = &escape($type);
                 $output .= '<td><span class="LC_nobreak"><label><input type = "checkbox" value="'.
-                           $type.'" ';
+                           $esc_type.'" ';
                 if (ref($currinsttypes) eq 'ARRAY') {
                     if (@{$currinsttypes} > 0) {
                         if (grep(/^any$/,@{$currinsttypes})) {
                             $output .= 'checked="checked"';
-                        } elsif (grep(/^\Q$type\E$/,@{$currinsttypes})) {
+                        } elsif (grep(/^\Q$esc_type\E$/,@{$currinsttypes})) {
                             $output .= 'checked="checked"';
                         }
                     } else {
@@ -4734,8 +4744,9 @@
                             my $othervalue = 'any';
                             if ((ref($types) eq 'ARRAY') && (ref($usertypes) eq 'HASH')) {
                                 if (@{$types} > 0) {
+                                    my @esc_types = map { &escape($_); } @{$types};
                                     $othervalue = 'other';
-                                    $typestr = join(',',(@{$types},$othervalue));
+                                    $typestr = join(',',($othervalue,@esc_types));
                                 }
                                 $typestr = $othervalue;
                             } else {