Diff for /loncom/interface/domainprefs.pm between versions 1.227 and 1.228

version 1.227, 2014/02/28 19:20:05 version 1.228, 2014/03/03 17:11:42
Line 3796  sub print_selfcreation { Line 3796  sub print_selfcreation {
         }          }
     }      }
     my %radiohash;      my %radiohash;
     my $rownum = 0;  
     my $numinrow = 4;      my $numinrow = 4;
     map { $radiohash{'cancreate_'.$_} = 1; } @selfcreate;      map { $radiohash{'cancreate_'.$_} = 1; } @selfcreate;
     if ($position eq 'top') {      if ($position eq 'top') {
Line 3809  sub print_selfcreation { Line 3808  sub print_selfcreation {
                                'cancreate_login' => 'off',                                 'cancreate_login' => 'off',
                                'cancreate_sso'   => 'off',                                 'cancreate_sso'   => 'off',
                              );                               );
         my $itemcount = 1;          my ($onclick,$itemcount);
         my $onclick;  
         ($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked,          ($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked,
                                                      \%choices,$itemcount,$onclick);                                                       \%choices,$itemcount,$onclick);
           $$rowtotal += $itemcount;
           
         my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);          my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
   
         if (ref($usertypes) eq 'HASH') {          if (ref($usertypes) eq 'HASH') {
             if (keys(%{$usertypes}) > 0) {              if (keys(%{$usertypes}) > 0) {
                 $datatable .= &insttypes_row($createsettings,$types,$usertypes,                  $datatable .= &insttypes_row($createsettings,$types,$usertypes,
                                              $dom,$numinrow,$othertitle,                                               $dom,$numinrow,$othertitle,
                                              'statustocreate',$rownum);                                               'statustocreate',$$rowtotal);
                 $rownum ++;  
                 $$rowtotal ++;                  $$rowtotal ++;
             }              }
         }          }
Line 3832  sub print_selfcreation { Line 3831  sub print_selfcreation {
             push(@{$types},'default');              push(@{$types},'default');
             $usertypes->{'default'} = $othertitle;              $usertypes->{'default'} = $othertitle;
             foreach my $status (@{$types}) {              foreach my $status (@{$types}) {
                 $rownum ++;  
                 $datatable .= &modifiable_userdata_row('selfcreate',$status,$domconf{'usermodification'},                  $datatable .= &modifiable_userdata_row('selfcreate',$status,$domconf{'usermodification'},
                                                        $numinrow,$rownum,$usertypes);                                                         $numinrow,$$rowtotal,$usertypes);
                 $$rowtotal ++;                  $$rowtotal ++;
             }              }
         }          }
     } else {      } else {
         my $css_class = $rownum%2?' class="LC_odd_row"':'';          my $css_class = $$rowtotal%2?' class="LC_odd_row"':'';
         my %choices =          my %choices =
             &Apache::lonlocal::texthash(              &Apache::lonlocal::texthash(
                                           email         => 'Approved automatically',                                            email         => 'Approved automatically',
Line 3871  sub print_selfcreation { Line 3869  sub print_selfcreation {
                           $choices{$option}.'</label>&nbsp;';                            $choices{$option}.'</label>&nbsp;';
         }          }
         $$rowtotal ++;          $$rowtotal ++;
         $rownum ++;  
         $datatable .= '</span></td></tr>'.          $datatable .= '</span></td></tr>'.
                       &print_requestmail($dom,'selfcreation',$createsettings,$rowtotal);                        &print_requestmail($dom,'selfcreation',$createsettings,$rowtotal);
         $rownum ++;  
         my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();  
         $numinrow = 2;  
         $datatable .= &modifiable_userdata_row('cancreate','emailusername',$settings,  
                                                $numinrow,$rownum,undef,$infofields,$infotitles);  
         $$rowtotal ++;          $$rowtotal ++;
         $rownum ++;          my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();
           $numinrow = 1;
           my ($othertitle,$usertypes,$types) =  &Apache::loncommon::sorted_inst_types($dom);
           $usertypes->{'default'} = $othertitle;
           if (ref($types) eq 'ARRAY') {
               push(@{$types},'default');
               $usertypes->{'default'} = $othertitle;
               foreach my $status (@{$types}) {
                   $datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings,
                                                          $numinrow,$$rowtotal,$usertypes,$infofields,$infotitles);
                   $$rowtotal ++;
               }
           }
         my ($emailrules,$emailruleorder) =          my ($emailrules,$emailruleorder) =
             &Apache::lonnet::inst_userrules($dom,'email');              &Apache::lonnet::inst_userrules($dom,'email');
         if (ref($emailrules) eq 'HASH') {          if (ref($emailrules) eq 'HASH') {
             if (keys(%{$emailrules}) > 0) {              if (keys(%{$emailrules}) > 0) {
                 $datatable .= &user_formats_row('email',$settings,$emailrules,                  $datatable .= &user_formats_row('email',$settings,$emailrules,
                                                 $emailruleorder,$numinrow,$rownum);                                                  $emailruleorder,$numinrow,$$rowtotal);
                 $rownum ++;  
                 $$rowtotal ++;                  $$rowtotal ++;
             }              }
         }          }
         $datatable .= &captcha_choice('cancreate',$createsettings,$rownum);          $datatable .= &captcha_choice('cancreate',$createsettings,$$rowtotal);
     }      }
     return $datatable;      return $datatable;
 }  }
Line 4857  sub build_category_rows { Line 4860  sub build_category_rows {
 }  }
   
 sub modifiable_userdata_row {  sub modifiable_userdata_row {
     my ($context,$role,$settings,$numinrow,$rowcount,$usertypes,$fieldsref,$titlesref) = @_;      my ($context,$item,$settings,$numinrow,$rowcount,$usertypes,$fieldsref,$titlesref) = @_;
     my $rolename;      my ($role,$rolename,$statustype);
       $role = $item;
     if ($context eq 'cancreate') {      if ($context eq 'cancreate') {
         if ($role eq 'emailusername') {          if ($item =~ /^emailusername_(.+)$/) {
             $rolename = &mt('Data user provides');              $statustype = $1;
               $role = 'emailusername';
               if (ref($usertypes) eq 'HASH') {
                   if ($usertypes->{$statustype}) {
                       $rolename = &mt('Data provided by [_1]',$usertypes->{$statustype});
                   } else {
                       $rolename = &mt('Data provided by user');
                   }
               }
         }          }
     } elsif ($context eq 'selfcreate') {      } elsif ($context eq 'selfcreate') {
         if (ref($usertypes) eq 'HASH') {          if (ref($usertypes) eq 'HASH') {
Line 4898  sub modifiable_userdata_row { Line 4910  sub modifiable_userdata_row {
     if (ref($settings) eq 'HASH') {      if (ref($settings) eq 'HASH') {
         if (ref($settings->{$context}) eq 'HASH') {          if (ref($settings->{$context}) eq 'HASH') {
             if (ref($settings->{$context}->{$role}) eq 'HASH') {              if (ref($settings->{$context}->{$role}) eq 'HASH') {
                 foreach my $field (@fields) {                  my $hashref = $settings->{$context}->{$role};
                     if ($settings->{$context}->{$role}->{$field}) {                  if ($role eq 'emailusername') {
                         $checks{$field} = ' checked="checked" ';                      if ($statustype) {
                           if (ref($settings->{$context}->{$role}->{$statustype}) eq 'HASH') {
                               $hashref = $settings->{$context}->{$role}->{$statustype};
                               if (ref($hashref) eq 'HASH') { 
                                   foreach my $field (@fields) {
                                       if ($hashref->{$field}) {
                                           $checks{$field} = $hashref->{$field};
                                       }
                                   }
                               }
                           }
                       }
                   } else {
                       if (ref($hashref) eq 'HASH') {
                           foreach my $field (@fields) {
                               if ($hashref->{$field}) {
                                   $checks{$field} = ' checked="checked" ';
                               }
                           }
                     }                      }
                 }                  }
             }              }
         }          }
     }      }
        
     for (my $i=0; $i<@fields; $i++) {      for (my $i=0; $i<@fields; $i++) {
         my $rem = $i%($numinrow);          my $rem = $i%($numinrow);
         if ($rem == 0) {          if ($rem == 0) {
Line 4915  sub modifiable_userdata_row { Line 4946  sub modifiable_userdata_row {
             $output .= '<tr>';              $output .= '<tr>';
         }          }
         my $check = ' ';          my $check = ' ';
         if (exists($checks{$fields[$i]})) {          unless ($role eq 'emailusername') {
             $check = $checks{$fields[$i]}              if (exists($checks{$fields[$i]})) {
         } else {                  $check = $checks{$fields[$i]}
             if ($role eq 'st') {              } else {
                 if (ref($settings) ne 'HASH') {                  if ($role eq 'st') {
                     $check = ' checked="checked" ';                       if (ref($settings) ne 'HASH') {
                           $check = ' checked="checked" '; 
                       }
                 }                  }
             }              }
         }          }
         $output .= '<td class="LC_left_item">'.          $output .= '<td class="LC_left_item">'.
                    '<span class="LC_nobreak"><label>'.                     '<span class="LC_nobreak">';
                    '<input type="checkbox" name="canmodify_'.$role.'" '.          if ($role eq 'emailusername') {
                    'value="'.$fields[$i].'"'.$check.'/>'.$fieldtitles{$fields[$i]}.              unless ($checks{$fields[$i]} =~ /^(required|optional)$/) {
                    '</label></span></td>';                  $checks{$fields[$i]} = 'omit';
               }
               foreach my $option ('required','optional','omit') {
                   my $checked='';
                   if ($checks{$fields[$i]} eq $option) {
                       $checked='checked="checked" ';
                   }
                   $output .= '<label>'.
                              '<input type="radio" name="canmodify_'.$item.'_'.$fields[$i].'" value="'.$option.'" '.$checked.'/>'.
                              &mt($option).'</label>'.('&nbsp;' x2);
               }
               $output .= '<i>'.$fieldtitles{$fields[$i]}.'</i>';
           } else {
               $output .= '<label>'.
                          '<input type="checkbox" name="canmodify_'.$role.'" '.
                          'value="'.$fields[$i].'"'.$check.'/>'.$fieldtitles{$fields[$i]}.
                          '</label>';
           }
           $output .= '</span></td>';
         $rem = @fields%($numinrow);          $rem = @fields%($numinrow);
     }      }
     my $colsleft = $numinrow - $rem;      my $colsleft = $numinrow - $rem;
Line 7661  sub modify_selfcreation { Line 7712  sub modify_selfcreation {
     my ($dom,%domconfig) = @_;      my ($dom,%domconfig) = @_;
     my ($resulttext,$warningmsg,%curr_usercreation,%curr_usermodify,%changes,%cancreate);      my ($resulttext,$warningmsg,%curr_usercreation,%curr_usermodify,%changes,%cancreate);
     my (%save_usercreate,%save_usermodify);      my (%save_usercreate,%save_usermodify);
       my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
       if (ref($types) eq 'ARRAY') {
           $usertypes->{'default'} = $othertitle;
           push(@{$types},'default');
       }
 #  #
 # Retrieve current domain configuration for self-creation of usernames from $domconfig{'usercreation'}.  # Retrieve current domain configuration for self-creation of usernames from $domconfig{'usercreation'}.
 #  #
Line 7712  sub modify_selfcreation { Line 7768  sub modify_selfcreation {
 # Populate $cancreate{'selfcreate'} array reference with types of user, for which self-creation of user accounts  # Populate $cancreate{'selfcreate'} array reference with types of user, for which self-creation of user accounts
 # is permitted.  # is permitted.
 #  #
     foreach my $item ('login','sso','email') {       foreach my $item ('login','sso','email') {
         if ($item eq 'email') {          if ($item eq 'email') {
             if ($env{'form.cancreate_email'} eq 'email') {              if ($env{'form.cancreate_email'} eq 'email') {
                 push(@{$cancreate{'selfcreate'}},'email');                  push(@{$cancreate{'selfcreate'}},'email');
Line 7728  sub modify_selfcreation { Line 7784  sub modify_selfcreation {
     my (@email_rule,%userinfo,%savecaptcha);      my (@email_rule,%userinfo,%savecaptcha);
     my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();      my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();
 #  #
 # Populate $cancreate{'emailusername'} hash ref with information types (if new user will provide data  # Populate $cancreate{'emailusername'}{$type} hash ref with information fields (if new user will provide data
 # value set to one), if self-creation with e-mail address permitted.  # value set to one), if self-creation with e-mail address permitted, where $type is user type: faculty, staff, student etc.
 #  #
     if (($env{'form.cancreate_email'} eq 'email') || ($env{'form.cancreate_email'} eq 'emailapproval')) {      if (($env{'form.cancreate_email'} eq 'email') || ($env{'form.cancreate_email'} eq 'emailapproval')) {
         push(@contexts,'emailusername');           push(@contexts,'emailusername');
         map { $userinfo{$_} = 1; } &Apache::loncommon::get_env_multiple('form.canmodify_emailusername');          if (ref($types) eq 'ARRAY') {
         if (ref($infofields) eq 'ARRAY') {              foreach my $type (@{$types}) {
             foreach my $field (@{$infofields}) {                  if (ref($infofields) eq 'ARRAY') {
                 if ($userinfo{$field}) {                      foreach my $field (@{$infofields}) {
                     $cancreate{'emailusername'}{$field} = 1;                          if ($env{'form.canmodify_emailusername_'.$type.'_'.$field} =~ /^(required|optional)$/) {
                               $cancreate{'emailusername'}{$type}{$field} = $1;
                           }
                       }
                 }                  }
             }              }
         }          }
   
 #  #
 # Populate $cancreate{'notify'} hash ref with names of Domain Coordinators who are to be notified of  # Populate $cancreate{'notify'} hash ref with names of Domain Coordinators who are to be notified of
 # queued requests for self-creation of account using e-mail address as username  # queued requests for self-creation of account using e-mail address as username
Line 7800  sub modify_selfcreation { Line 7858  sub modify_selfcreation {
                           &mt('You need to set the default authentication type to Kerberos 4 or 5 (with a Kerberos domain specified), or to Local authentication, if the localauth module has been customized in your domain to authenticate institutional logins.');                            &mt('You need to set the default authentication type to Kerberos 4 or 5 (with a Kerberos domain specified), or to Local authentication, if the localauth module has been customized in your domain to authenticate institutional logins.');
         }          }
     }      }
     my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);  
     my @fields = ('lastname','firstname','middlename','generation',      my @fields = ('lastname','firstname','middlename','generation',
                   'permanentemail','id');                    'permanentemail','id');
     my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles();      my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles();
Line 7813  sub modify_selfcreation { Line 7870  sub modify_selfcreation {
 #  #
     if (($env{'form.cancreate_login'}) || ($env{'form.cancreate_sso'})) {      if (($env{'form.cancreate_login'}) || ($env{'form.cancreate_sso'})) {
         if (ref($types) eq 'ARRAY') {          if (ref($types) eq 'ARRAY') {
             if (@{$types} > 0) {              if (@{$types} > 1) {
                 @{$cancreate{'statustocreate'}} = &Apache::loncommon::get_env_multiple('form.statustocreate');                  @{$cancreate{'statustocreate'}} = &Apache::loncommon::get_env_multiple('form.statustocreate');
                 push(@contexts,'statustocreate');                  push(@contexts,'statustocreate');
             } else {              } else {
                 undef($cancreate{'statustocreate'});                  undef($cancreate{'statustocreate'});
             }               } 
             push(@{$types},'default');  
             $usertypes->{'default'} = $othertitle;  
             foreach my $type (@{$types}) {              foreach my $type (@{$types}) {
                 my @modifiable =  &Apache::loncommon::get_env_multiple('form.canmodify_'.$type);                  my @modifiable =  &Apache::loncommon::get_env_multiple('form.canmodify_'.$type);
                 foreach my $field (@fields) {                  foreach my $field (@fields) {
Line 7873  sub modify_selfcreation { Line 7928  sub modify_selfcreation {
         } elsif (ref($curr_usercreation{'cancreate'}{$item}) eq 'HASH') {          } elsif (ref($curr_usercreation{'cancreate'}{$item}) eq 'HASH') {
             if (ref($cancreate{$item}) eq 'HASH') {              if (ref($cancreate{$item}) eq 'HASH') {
                 foreach my $curr (keys(%{$curr_usercreation{'cancreate'}{$item}})) {                  foreach my $curr (keys(%{$curr_usercreation{'cancreate'}{$item}})) {
                     if (!$cancreate{$item}{$curr}) {                      if (ref($curr_usercreation{'cancreate'}{$item}{$curr}) eq 'HASH') {
                         if (!grep(/^$item$/,@{$changes{'cancreate'}})) {                          foreach my $field (keys(%{$curr_usercreation{'cancreate'}{$item}{$curr}})) {
                             push(@{$changes{'cancreate'}},$item);                              unless ($curr_usercreation{'cancreate'}{$item}{$curr}{$field} eq $cancreate{$item}{$curr}{$field}) {
                                   if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
                                       push(@{$changes{'cancreate'}},$item);
                                   }
                               }
                           }
                       } else {
                           if (!$cancreate{$item}{$curr}) {
                               if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
                                   push(@{$changes{'cancreate'}},$item);
                               }
                         }                          }
                     }                      }
                 }                  }
                 foreach my $field (keys(%{$cancreate{$item}})) {                  foreach my $field (keys(%{$cancreate{$item}})) {
                     if (!$curr_usercreation{'cancreate'}{$item}{$field}) {                      if (ref($cancreate{$item}{$field}) eq 'HASH') {
                         if (!grep(/^$item$/,@{$changes{'cancreate'}})) {                          foreach my $inner (keys(%{$cancreate{$item}{$field}})) {
                             push(@{$changes{'cancreate'}},$item);                              if (ref($curr_usercreation{'cancreate'}{$item}{$field}) eq 'HASH') {
                                   unless ($curr_usercreation{'cancreate'}{$item}{$field}{$inner} eq $cancreate{$item}{$field}{$inner}) {
                                       if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
                                           push(@{$changes{'cancreate'}},$item);
                                       }
                                   }
                               } else {
                                   if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
                                       push(@{$changes{'cancreate'}},$item);
                                   }
                               }
                           }
                       } else {
                           if (!$curr_usercreation{'cancreate'}{$item}{$field}) {
                               if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
                                   push(@{$changes{'cancreate'}},$item);
                               }
                         }                          }
                     }                      }
                 }                  }
Line 7902  sub modify_selfcreation { Line 7983  sub modify_selfcreation {
                 }                  }
             }              }
         } elsif ($item eq 'emailusername') {          } elsif ($item eq 'emailusername') {
             if (keys(%userinfo) > 0) {              if (ref($cancreate{$item}) eq 'HASH') {
                 push(@{$changes{'cancreate'}},$item);                  foreach my $type (keys(%{$cancreate{$item}})) {
                       if (ref($cancreate{$item}{$type}) eq 'HASH') {
                           foreach my $field (keys(%{$cancreate{$item}{$type}})) {
                               if ($cancreate{$item}{$type}{$field}) {
                                   if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
                                       push(@{$changes{'cancreate'}},$item);
                                   }
                                   last;
                               }
                           }
                       }
                   }
             }              }
         }          }
     }      }
Line 8033  sub modify_selfcreation { Line 8125  sub modify_selfcreation {
                         $chgtext .= '</ul>';                          $chgtext .= '</ul>';
                     } elsif ($type eq 'emailusername') {                      } elsif ($type eq 'emailusername') {
                         if (ref($cancreate{'emailusername'}) eq 'HASH') {                          if (ref($cancreate{'emailusername'}) eq 'HASH') {
                             if (keys(%{$cancreate{'emailusername'}}) > 0) {                              if (ref($types) eq 'ARRAY') {
                                 $chgtext .= &mt('When self-creating account with e-mail as username, user will provide the following information:').                                  foreach my $type (@{$types}) {
                                             '<ul>';                                      if (ref($cancreate{'emailusername'}{$type}) eq 'HASH') {
                                 foreach my $field (@{$infofields}) {                                          if (keys(%{$cancreate{'emailusername'}{$type}}) > 0) {
                                     if ($cancreate{'emailusername'}{$field}) {                                              $chgtext .= &mt('When self-creating account with e-mail as username, the following information will be provided by [_1]:',$usertypes->{$type}).
                                         $chgtext .= '<li>'.$infotitles->{$field}.'</li>';                                                      '<ul>';
                                               foreach my $field (@{$infofields}) {
                                                   if ($cancreate{'emailusername'}{$type}{$field}) {
                                                       $chgtext .= '<li>'.$infotitles->{$field}.'</li>';
                                                   }
                                               }
                                           }
                                           $chgtext .= '</ul>';
                                       } else {
                                           $chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',$usertypes->{$type}).'<br />';
                                     }                                      }
                                 }                                  }
                                 $chgtext .= '</ul>';  
                             } else {  
                                 $chgtext .= &mt('When self creating account with e-mail as username, user will not provide any information besides e-mail address');  
                             }                              }
                         }                          }
                     } elsif ($type eq 'notify') {                      } elsif ($type eq 'notify') {

Removed from v.1.227  
changed lines
  Added in v.1.228


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>