Diff for /loncom/interface/domainprefs.pm between versions 1.25 and 1.27

version 1.25, 2007/08/26 15:31:03 version 1.27, 2007/09/12 12:01:04
Line 67  sub handler { Line 67  sub handler {
     }      }
     my %domconfig =      my %domconfig =
       &Apache::lonnet::get_dom('configuration',['login','rolecolors',        &Apache::lonnet::get_dom('configuration',['login','rolecolors',
                 'quotas','autoenroll','autoupdate','directorysrch'],$dom);                  'quotas','autoenroll','autoupdate','directorysrch',
                   'usercreation'],$dom);
     my @prefs = (      my @prefs = (
       { text => 'Default color schemes',        { text => 'Default color schemes',
         help => 'Default_Color_Schemes',          help => 'Default_Color_Schemes',
Line 113  sub handler { Line 114  sub handler {
         header => [{col1 => 'Setting',          header => [{col1 => 'Setting',
                     col2 => 'Value',}],                      col2 => 'Value',}],
         },          },
         { text => 'User creation',
           help => 'Domain_User_Creation',
           action => 'usercreation',
           header => [{col1 => 'Setting',
                       col2 => 'Value',}],
           },
     );      );
     my @roles = ('student','coordinator','author','admin');      my @roles = ('student','coordinator','author','admin');
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
Line 197  sub process_changes { Line 204  sub process_changes {
         $output = &modify_autoupdate($dom,%domconfig);          $output = &modify_autoupdate($dom,%domconfig);
     } elsif ($action eq 'directorysrch') {      } elsif ($action eq 'directorysrch') {
         $output = &modify_directorysrch($dom,%domconfig);          $output = &modify_directorysrch($dom,%domconfig);
       } elsif ($action eq 'usercreation') {
           $output = &modify_user_creation($dom,%domconfig);
     }      }
     return $output;      return $output;
 }  }
Line 289  sub print_config_box { Line 298  sub print_config_box {
            $r->print(&print_autoenroll($dom,$settings));             $r->print(&print_autoenroll($dom,$settings));
         } elsif ($action eq 'directorysrch') {          } elsif ($action eq 'directorysrch') {
            $r->print(&print_directorysrch($dom,$settings));             $r->print(&print_directorysrch($dom,$settings));
         }            } elsif ($action eq 'usercreation') {
              $r->print(&print_usercreation($dom,$settings));
           }
     }      }
     $r->print('      $r->print('
    </table>     </table>
Line 745  sub print_quotas { Line 756  sub print_quotas {
     my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom);      my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom);
     my $typecount = 0;      my $typecount = 0;
     my $css_class;      my $css_class;
     if (@{$types} > 0) {      if (ref($types) eq 'ARRAY') {
         foreach my $type (@{$types}) {          foreach my $type (@{$types}) {
             if (defined($usertypes->{$type})) {              if (defined($usertypes->{$type})) {
                 $typecount ++;                  $typecount ++;
Line 768  sub print_quotas { Line 779  sub print_quotas {
     $typecount ++;      $typecount ++;
     $css_class = $typecount%2?' class="LC_odd_row"':'';      $css_class = $typecount%2?' class="LC_odd_row"':'';
     $datatable .= '<tr'.$css_class.'>'.      $datatable .= '<tr'.$css_class.'>'.
                   '<td>'.&mt($othertitle).'</td>'.                    '<td>'.$othertitle.'</td>'.
                   '<td class="LC_right_item"><span class="LC_nobreak">'.                    '<td class="LC_right_item"><span class="LC_nobreak">'.
                   '<input type="text" name="defaultquota" value="'.                    '<input type="text" name="defaultquota" value="'.
                   $defaultquota.'" size="5" /> Mb</span></td></tr>';                    $defaultquota.'" size="5" /> Mb</span></td></tr>';
Line 878  sub print_autoupdate { Line 889  sub print_autoupdate {
                             gen => 'Generation',                              gen => 'Generation',
                       );                        );
         my $numrows = 0;          my $numrows = 0;
         if (@{$types} > 0) {          if (ref($types) eq 'ARRAY') {
             $datatable =               if (@{$types} > 0) {
                 &usertype_update_row($settings,$usertypes,\%fieldtitles,                  $datatable = 
                                      \@fields,$types,\$numrows);                      &usertype_update_row($settings,$usertypes,\%fieldtitles,
                                            \@fields,$types,\$numrows);
               }
         }          }
         $datatable .=           $datatable .= 
             &usertype_update_row($settings,{'default' => $othertitle},              &usertype_update_row($settings,{'default' => $othertitle},
Line 932  sub print_directorysrch { Line 945  sub print_directorysrch {
     my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom);      my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom);
   
     my $numinrow = 4;      my $numinrow = 4;
       my $cansrchrow = 0;
     my $datatable='<tr class="LC_odd_row">'.      my $datatable='<tr class="LC_odd_row">'.
                   '<td colspan="2">'.&mt('Directory search available?').'</td>'.                    '<td colspan="2">'.&mt('Directory search available?').'</td>'.
                   '<td class="LC_right_item"><span class="LC_nobreak"><label>'.                    '<td class="LC_right_item"><span class="LC_nobreak"><label>'.
Line 947  sub print_directorysrch { Line 961  sub print_directorysrch {
                   '<label><input type="radio" name="dirsrch_localonly"'.                    '<label><input type="radio" name="dirsrch_localonly"'.
                   $localon.' value="1" />'.&mt('No').'</label></span></td>'.                    $localon.' value="1" />'.&mt('No').'</label></span></td>'.
                   '</tr>';                    '</tr>';
     $datatable .= &users_cansearch_row($settings,$types,$usertypes,$dom,      if (ref($usertypes) eq 'HASH') {
                                        $numinrow,$othertitle);          if (keys(%{$usertypes}) > 0) {
     $datatable .= '<tr>'.              $datatable .= &users_cansearch_row($settings,$types,$usertypes,$dom,
                   '<td>'.&mt('Supported search methods').                                                 $numinrow,$othertitle);
               $cansrchrow = 1;
           }
       }
       if ($cansrchrow) {
           $datatable .= '<tr>';
       } else {
           $datatable .= '<tr class="LC_odd_row">';
       }
       $datatable .= '<td>'.&mt('Supported search methods').
                   '</td><td class="LC_left_item" colspan="2"><table><tr>';                    '</td><td class="LC_left_item" colspan="2"><table><tr>';
     foreach my $title (@{$titleorder}) {      foreach my $title (@{$titleorder}) {
         if (defined($searchtitles->{$title})) {          if (defined($searchtitles->{$title})) {
Line 967  sub print_directorysrch { Line 990  sub print_directorysrch {
                           $searchtitles->{$title}.'</label></span></td>';                            $searchtitles->{$title}.'</label></span></td>';
         }          }
     }      }
     $datatable .= '</tr></table></td></tr><tr class="LC_odd_row">'.       $datatable .= '</tr></table></td></tr>';
                   '<td>'.&mt('Search latitude').'</td>'.      if ($cansrchrow) {
                   '<td class="LC_left_item"  colspan="2">'.          $datatable .= '<tr class="LC_odd_row">';
       } else {
           $datatable .= '<tr>';
       }
       $datatable .= '<td>'.&mt('Search latitude').'</td>'.   
                     '<td class="LC_left_item" colspan="2">'.
                   '<span class="LC_nobreak"><label>'.                    '<span class="LC_nobreak"><label>'.
                   '<input type="checkbox" name="searchtypes" '.                    '<input type="checkbox" name="searchtypes" '.
                   $exacton.' value="exact" />'.&mt('Exact match').                    $exacton.' value="exact" />'.&mt('Exact match').
Line 983  sub print_directorysrch { Line 1011  sub print_directorysrch {
     return $datatable;      return $datatable;
 }  }
   
   sub print_usercreation {
       my ($dom,$settings) = @_;
       my $numinrow = 4;
       my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($dom);
       my %checked;
       if (ref($settings) eq 'HASH') {
           if (ref($settings->{'cancreate'}) eq 'ARRAY') {
               foreach my $item (@{$settings->{'cancreate'}}) { 
                   $checked{$item} = ' checked="checked" ';
               }
           }
       }
       my $datatable = '<td>'.&mt('User creation other than by DC: ').'</td>'.
                       '<td class="LC_left_item"><table><tr><td>'.
                       '<span class="LC_nobreak"><label>'.
                       '<input type="checkbox" name="can_createuser" '.
                       $checked{'author'}.' value="author" />'.
                       &mt('When adding a co-author/assistant author').
               '</label><span></td></tr>'.
                       '<tr><td>'.
                       '<span class="LC_nobreak"><label>'.
                       '<input type="checkbox" name="can_createuser" '.
                       $checked{'course'}.' value="course" />'.
                       &mt('When adding users to a course').
                       '</label><span></td></tr></table></td></tr>';
       if (ref($rules) eq 'HASH') {
           if (keys(%{$rules}) > 0) {
               $datatable .= &username_formats_row($settings,$rules,$ruleorder,
                                                   $numinrow);
           }
       }
       return $datatable;
   }
   
   sub username_formats_row {
       my ($settings,$rules,$ruleorder,$numinrow) = @_;
       my $output =  '<tr class="LC_odd_row">'.
                     '<td>'.&mt('Format rules to check for new usernames').
                     '</td><td class="LC_left_item" colspan="2"><table>';
       my $rem;
       if (ref($ruleorder) eq 'ARRAY') {
           for (my $i=0; $i<@{$ruleorder}; $i++) {
               if (ref($rules->{$ruleorder->[$i]}) eq 'HASH') {
                   my $rem = $i%($numinrow);
                   if ($rem == 0) {
                       if ($i > 0) {
                           $output .= '</tr>';
                       }
                       $output .= '<tr>';
                   }
                   my $check = ' ';
                   if (ref($settings->{'username_rule'}) eq 'ARRAY') {
                       if (grep(/^\Q$ruleorder->[$i]\E$/,@{$settings->{'username_rule'}})) {
                           $check = ' checked="checked" ';
                       }
                   }
                   $output .= '<td class="LC_left_item">'.
                              '<span class="LC_nobreak"><label>'.
                              '<input type="checkbox" name="username_rule" '.
                              'value="'.$ruleorder->[$i].'"'.$check.'/>'.
                              $rules->{$ruleorder->[$i]}{'name'}.'</label></span></td>';
               }
           }
           $rem = @{$ruleorder}%($numinrow);
       }
       my $colsleft = $numinrow - $rem;
       if ($colsleft > 1 ) {
           $output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'.
                      '&nbsp;</td>';
       } elsif ($colsleft == 1) {
           $output .= '<td class="LC_left_item">&nbsp;</td>';
       }
       $output .= '</tr></table></td></tr>';
       return $output;
   }
   
 sub users_cansearch_row {  sub users_cansearch_row {
     my ($settings,$types,$usertypes,$dom,$numinrow,$othertitle) = @_;      my ($settings,$types,$usertypes,$dom,$numinrow,$othertitle) = @_;
     my $output =  '<tr class="LC_odd_row">'.      my $output =  '<tr class="LC_odd_row">'.
                   '<td>'.&mt('Users allowed to search').' ('.$dom.')'.                    '<td>'.&mt('Users allowed to search').' ('.$dom.')'.
                   '</td><td class="LC_left_item" colspan="2"><table>';                    '</td><td class="LC_left_item" colspan="2"><table>';
     for (my $i=0; $i<@{$types}; $i++) {      my $rem;
         if (defined($usertypes->{$types->[$i]})) {      if (ref($types) eq 'ARRAY') {
             my $rem = $i%($numinrow);          for (my $i=0; $i<@{$types}; $i++) {
             if ($rem == 0) {              if (defined($usertypes->{$types->[$i]})) {
                 if ($i > 0) {                  my $rem = $i%($numinrow);
                     $output .= '</tr>';                  if ($rem == 0) {
                       if ($i > 0) {
                           $output .= '</tr>';
                       }
                       $output .= '<tr>';
                 }                  }
                 $output .= '<tr>';                  my $check = ' ';
             }                  if (ref($settings->{'cansearch'}) eq 'ARRAY') {
             my $check = ' ';                      if (grep(/^\Q$types->[$i]\E$/,@{$settings->{'cansearch'}})) {
             if (ref($settings->{'cansearch'}) eq 'ARRAY') {                          $check = ' checked="checked" ';
                 if (grep(/^\Q$types->[$i]\E$/,@{$settings->{'cansearch'}})) {                      }
                     $check = ' checked="checked" ';  
                 }                  }
                   $output .= '<td class="LC_left_item">'.
                              '<span class="LC_nobreak"><label>'.
                              '<input type="checkbox" name="cansearch" '.
                              'value="'.$types->[$i].'"'.$check.'/>'.
                              $usertypes->{$types->[$i]}.'</label></span></td>';
             }              }
             $output .= '<td class="LC_left_item">'.  
                        '<span class="LC_nobreak"><label>'.  
                        '<input type="checkbox" name="cansearch" '.  
                        'value="'.$types->[$i].'"'.$check.'/>'.  
                        $usertypes->{$types->[$i]}.'</label></span></td>';  
         }          }
          
           $rem = @{$types}%($numinrow);
     }      }
   
     my $rem = @{$types}%($numinrow);  
     my $colsleft = $numinrow - $rem;      my $colsleft = $numinrow - $rem;
     if ($colsleft > 1) {      if ($colsleft > 1) {
         $output .= '<td colspan="'.$colsleft.'" class="LC_left_item">';          $output .= '<td colspan="'.$colsleft.'" class="LC_left_item">';
Line 1020  sub users_cansearch_row { Line 1127  sub users_cansearch_row {
     }      }
     my $defcheck = ' ';      my $defcheck = ' ';
     if (ref($settings->{'cansearch'}) eq 'ARRAY') {      if (ref($settings->{'cansearch'}) eq 'ARRAY') {
          if (grep(/^default$/,@{$settings->{'cansearch'}})) {          if (grep(/^default$/,@{$settings->{'cansearch'}})) {
               $defcheck = ' checked="checked" ';              $defcheck = ' checked="checked" ';
          }          }
     }      }
     $output .= '<span class="LC_nobreak"><label>'.      $output .= '<span class="LC_nobreak"><label>'.
                '<input type="checkbox" name="cansearch" '.                 '<input type="checkbox" name="cansearch" '.
Line 1035  sub users_cansearch_row { Line 1142  sub users_cansearch_row {
 sub sorted_inst_types {  sub sorted_inst_types {
     my ($dom) = @_;      my ($dom) = @_;
     my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);      my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);
     my $othertitle = "All users";      my $othertitle = &mt('All users');
     my @types;      my @types;
     if (ref($order) eq 'ARRAY') {      if (ref($order) eq 'ARRAY') {
         @types = @{$order};          @types = @{$order};
Line 1723  sub check_switchserver { Line 1830  sub check_switchserver {
 sub modify_quotas {  sub modify_quotas {
     my ($dom,%domconfig) = @_;      my ($dom,%domconfig) = @_;
     my ($resulttext,%changes);      my ($resulttext,%changes);
     my ($usertypes,$order) =       my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom);
         &Apache::lonnet::retrieve_inst_usertypes($dom);  
     my %formhash;      my %formhash;
     foreach my $key (keys(%env)) {      foreach my $key (keys(%env)) {
         if ($key =~ /^form\.quota_(.+)$/) {          if ($key =~ /^form\.quota_(.+)$/) {
Line 1758  sub modify_quotas { Line 1864  sub modify_quotas {
     if ($putresult eq 'ok') {      if ($putresult eq 'ok') {
         if (keys(%changes) > 0) {          if (keys(%changes) > 0) {
             $resulttext = &mt('Changes made:').'<ul>';              $resulttext = &mt('Changes made:').'<ul>';
             foreach my $item (sort(keys(%changes))) {              foreach my $type (@{$types},'default') {
                 $resulttext .= '<li>'.&mt('[_1] set to [_2] Mb',$usertypes->{$item},$formhash{$item}).'</li>';                  if (defined($changes{$type})) { 
                       my $typetitle = $usertypes->{$type};
                       if ($type eq 'default') {
                           $typetitle = $othertitle;
                       }
                       $resulttext .= '<li>'.&mt('[_1] set to [_2] Mb',$typetitle,$formhash{$type}).'</li>';
                   }
             }              }
             $resulttext .= '</ul>';              $resulttext .= '</ul>';
         } else {          } else {
Line 1853  sub modify_autoupdate { Line 1965  sub modify_autoupdate {
                    run => 'Auto-update:',                     run => 'Auto-update:',
                    classlists => 'Updates to user information in classlists?'                     classlists => 'Updates to user information in classlists?'
                 );                  );
     my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);      my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom);
     my %fieldtitles = &Apache::lonlocal::texthash (      my %fieldtitles = &Apache::lonlocal::texthash (
                         id => 'Student/Employee ID',                          id => 'Student/Employee ID',
                         permanentemail => 'E-mail address',                          permanentemail => 'E-mail address',
Line 1864  sub modify_autoupdate { Line 1976  sub modify_autoupdate {
                       );                        );
     my $othertitle = &mt('All users');      my $othertitle = &mt('All users');
     if (keys(%{$usertypes}) >  0) {      if (keys(%{$usertypes}) >  0) {
         $othertitle = "Other users";          $othertitle = &mt('Other users');
     }      }
     foreach my $key (keys(%env)) {      foreach my $key (keys(%env)) {
         if ($key =~ /^form\.updateable_(.+)_([^_]+)$/) {          if ($key =~ /^form\.updateable_(.+)_([^_]+)$/) {
Line 1886  sub modify_autoupdate { Line 1998  sub modify_autoupdate {
             }              }
         } elsif ($key eq 'fields') {          } elsif ($key eq 'fields') {
             if (ref($currautoupdate{$key}) eq 'HASH') {              if (ref($currautoupdate{$key}) eq 'HASH') {
                 foreach my $item (keys(%{$currautoupdate{$key}})) {                  foreach my $item (@{$types},'default') {
                     if (ref($currautoupdate{$key}{$item}) eq 'ARRAY') {                      if (ref($currautoupdate{$key}{$item}) eq 'ARRAY') {
                         my $change = 0;                          my $change = 0;
                         foreach my $type (@{$currautoupdate{$key}{$item}}) {                          foreach my $type (@{$currautoupdate{$key}{$item}}) {
                             if (!exists($fields{$item})) {                              if (!exists($fields{$item})) {
                                 $change = 1;                                  $change = 1;
                             } elsif (ref($fields{$item}) eq 'ARRAY') {                              } elsif (ref($fields{$item}) eq 'ARRAY') {
                                 if (!grep/^\Q$type\E$/,@{$fields{$item}}) {                                  if (!grep(/^\Q$type\E$/,@{$fields{$item}})) {
                                     $change = 1;                                      $change = 1;
                                 }                                  }
                             }                              }
Line 1901  sub modify_autoupdate { Line 2013  sub modify_autoupdate {
                         if ($change) {                          if ($change) {
                             push(@{$changes{$key}},$item);                              push(@{$changes{$key}},$item);
                         }                          }
                     }                      } 
                 }                  }
             }              }
         }          }
     }      }
     foreach my $key (keys(%fields)) {      foreach my $item (@{$types},'default') {
         if (ref($currautoupdate{'fields'}) eq 'HASH') {          if (defined($fields{$item})) {
             if (!exists($currautoupdate{'fields'}{$key})) {              if (ref($currautoupdate{'fields'}) eq 'HASH') {
                 push(@{$changes{'fields'}},$key);                  if (!exists($currautoupdate{'fields'}{$item})) {
                       push(@{$changes{'fields'}},$item);
                   }
               } else {
                   push(@{$changes{'fields'}},$item);
             }              }
         } else {  
             push(@{$changes{'fields'}},$key);  
         }          }
     }      }
     my $putresult = &Apache::lonnet::put_dom('configuration',\%updatehash,      my $putresult = &Apache::lonnet::put_dom('configuration',\%updatehash,
Line 1934  sub modify_autoupdate { Line 2048  sub modify_autoupdate {
                             $newvaluestr = &mt('none');                              $newvaluestr = &mt('none');
                         }                          }
                         if ($item eq 'default') {                          if ($item eq 'default') {
                             $resulttext .= '<li>'.&mt("Updates for $othertitle set to: [_1]",$newvaluestr).'</li>';                              $resulttext .= '<li>'.&mt("Updates for '[_1]' set to: '[_2]'",$othertitle,$newvaluestr).'</li>';
                         } else {                          } else {
                             $resulttext .= '<li>'.&mt("Updates for [_1] set to: [_2]",$usertypes->{$item},$newvaluestr).'</li>';                              $resulttext .= '<li>'.&mt("Updates for '[_1]' set to: '[_2]'",$usertypes->{$item},$newvaluestr).'</li>';
                         }                          }
                     }                      }
                 } else {                  } else {
Line 1970  sub modify_directorysrch { Line 2084  sub modify_directorysrch {
         }          }
     }      }
     my %title = ( available => 'Directory search available',      my %title = ( available => 'Directory search available',
                   cansearch => 'Users permitted to search',  
                   localonly => 'Other domains can search',                    localonly => 'Other domains can search',
                   searchby => 'Search types',                    searchby => 'Search types',
                   searchtypes => 'Search latitude');                    searchtypes => 'Search latitude');
Line 1981  sub modify_directorysrch { Line 2094  sub modify_directorysrch {
     my @cansearch = &Apache::loncommon::get_env_multiple('form.cansearch');      my @cansearch = &Apache::loncommon::get_env_multiple('form.cansearch');
     my @searchby = &Apache::loncommon::get_env_multiple('form.searchby');      my @searchby = &Apache::loncommon::get_env_multiple('form.searchby');
   
     if (ref($currdirsrch{'cansearch'}) eq 'ARRAY') {      my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom);
         foreach my $type (@{$currdirsrch{'cansearch'}}) {      if (keys(%{$usertypes}) == 0) {
             if (!grep(/^\Q$type\E$/,@cansearch)) {          @cansearch = ('default');
                 push(@{$changes{'cansearch'}},$type);      } else {
           if (ref($currdirsrch{'cansearch'}) eq 'ARRAY') {
               foreach my $type (@{$currdirsrch{'cansearch'}}) {
                   if (!grep(/^\Q$type\E$/,@cansearch)) {
                       push(@{$changes{'cansearch'}},$type);
                   }
             }              }
         }              foreach my $type (@cansearch) {
         foreach my $type (@cansearch) {                  if (!grep(/^\Q$type\E$/,@{$currdirsrch{'cansearch'}})) {
             if (!grep(/^\Q$type\E$/,@{$currdirsrch{'cansearch'}})) {                      push(@{$changes{'cansearch'}},$type);
                 push(@{$changes{'cansearch'}},$type);                  }
             }              }
           } else {
               push(@{$changes{'cansearch'}},@cansearch);
         }          }
     } else {  
         push(@{$changes{'cansearch'}},@cansearch);  
     }      }
   
     if (ref($currdirsrch{'searchby'}) eq 'ARRAY') {      if (ref($currdirsrch{'searchby'}) eq 'ARRAY') {
Line 2076  sub modify_directorysrch { Line 2194  sub modify_directorysrch {
             }              }
   
             if (ref($changes{'cansearch'}) eq 'ARRAY') {              if (ref($changes{'cansearch'}) eq 'ARRAY') {
                 my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom);  
                 my $chgtext;                  my $chgtext;
                 foreach my $type (@cansearch) {                  if (ref($usertypes) eq 'HASH') {
                     if (defined($usertypes->{$type})) {                      if (keys(%{$usertypes}) > 0) {
                         $chgtext .= $usertypes->{$type}.'; ';                          foreach my $type (@{$types}) {
                               if (grep(/^\Q$type\E$/,@cansearch)) {
                                   $chgtext .= $usertypes->{$type}.'; ';
                               }
                           }
                           if (grep(/^default$/,@cansearch)) {
                               $chgtext .= $othertitle;
                           } else {
                               $chgtext =~ s/\; $//;
                           }
                           $resulttext .= '<li>'.&mt("Users from domain '<span class=\"LC_cusr_emph\">[_1]</span>' permitted to search the institutional directory set to: [_2]",$dom,$chgtext).'</li>';
                     }                      }
                 }                  }
                 if (grep(/^default$/,@cansearch)) {  
                     $chgtext .= $othertitle;  
                 } else {  
                     $chgtext =~ s/\; $//;  
                 }  
                 $resulttext .= '<li>'.&mt("$title{'cansearch'} ([_1]) set to: [_2]",$dom,$chgtext).'</li>';  
             }              }
             if (ref($changes{'searchby'}) eq 'ARRAY') {              if (ref($changes{'searchby'}) eq 'ARRAY') {
                 my ($searchtitles,$titleorder) = &sorted_searchtitles();                  my ($searchtitles,$titleorder) = &sorted_searchtitles();
Line 2122  sub modify_directorysrch { Line 2243  sub modify_directorysrch {
         }          }
     } else {      } else {
         $resulttext = '<span class="LC_error">'.          $resulttext = '<span class="LC_error">'.
                         &mt('An error occurred: [_1]',$putresult).'</span>';
       }
       return $resulttext;
   }
   
   sub modify_user_creation {
       my ($dom,%domconfig) = @_;
       my ($resulttext,%curr_usercreation,%changes);
       if (ref($domconfig{'usercreation'}) eq 'HASH') {
           foreach my $key (keys(%{$domconfig{'usercreation'}})) {
               $curr_usercreation{$key} = $domconfig{'usercreation'}{$key};
           }
       }
       my %title = &Apache::lonlocal::texthash (
                      author => 'adding co-authors/assistant authors',
                      course => 'adding users to a course',
                   );
       my @username_rule = &Apache::loncommon::get_env_multiple('form.username_rule');
       my @cancreate = &Apache::loncommon::get_env_multiple('form.can_createuser');
       if (ref($curr_usercreation{'cancreate'}) eq 'ARRAY') {
           foreach my $type (@{$curr_usercreation{'cancreate'}}) {
               if (!grep(/^\Q$type\E$/,@cancreate)) {
                   push(@{$changes{'cancreate'}},$type);
               }
           }
           foreach my $type (@cancreate) {
               if (!grep(/^\Q$type\E$/,@{$curr_usercreation{'cancreate'}})) {
                   push(@{$changes{'cancreate'}},$type);
               }
           }
       } else {
           push(@{$changes{'cancreate'}},@cancreate);
       }
       if (ref($curr_usercreation{'username_rule'}) eq 'ARRAY') {
           foreach my $type (@{$curr_usercreation{'username_rule'}}) {
               if (!grep(/^\Q$type\E$/,@username_rule)) {
                   push(@{$changes{'username_rule'}},$type);
               }
           }
           foreach my $type (@username_rule) {
               if (!grep(/^\Q$type\E$/,@{$curr_usercreation{'username_rule'}})) {
                   push(@{$changes{'username_rule'}},$type);
               }
           }
       } else {
           push(@{$changes{'username_rule'}},@username_rule);
       }
   
       my %usercreation_hash =  (
               usercreation => { 
                                 cancreate     => \@cancreate,
                                 username_rule => \@username_rule,
                               }
               );
   
       my $putresult = &Apache::lonnet::put_dom('configuration',\%usercreation_hash,
                                                $dom);
       if ($putresult eq 'ok') {
           if (keys(%changes) > 0) {
               $resulttext = &mt('Changes made:').'<ul>';
               my $chgtext;
               if (ref($changes{'cancreate'}) eq 'ARRAY') {
                   my $chgtext = '<ul>';
                   foreach my $type (@cancreate) {
                       $chgtext .= '<li>'.$title{$type}.'</li>';
                   }
                   $chgtext .= '</ul>';
                   if (@cancreate > 0) {
                       $resulttext .= '<li>'.&mt('Creation of new users is permitted by a Domain Coordinator, and also by other users when: ').$chgtext.'</li>';
                   } else {
                       $resulttext .= '<li>'.&mt("Creation of new users is now only allowed when the user's role is Domain Coordinator.").'</li>';
                   }
               }
               if (ref($changes{'username_rule'}) eq 'ARRAY') {
                   my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($dom);
                   my $chgtext = '<ul>';
                   foreach my $type (@username_rule) {
                       if (ref($rules->{$type}) eq 'HASH') {
                           $chgtext .= '<li>'.$rules->{$type}{'name'}.'</li>';
                       }
                   }
                   $chgtext .= '</ul>';
                   if (@username_rule > 0) {
                       $resulttext .= '<li>'.&mt('Usernames with the following formats are restricted to verified users in the institutional directory: ').$chgtext.'</li>';     
                   } else {
                       $resulttext .= '<li>'.&mt('There are now no username formats currenty restricted to verified users in the institutional directory.').'</li>'; 
                   }
               }
               $resulttext .= '</ul>';
           } else {
               $resulttext = &mt('No changes made to log-in page settings');
           }
       } else {
           $resulttext = '<span class="LC_error">'.
             &mt('An error occurred: [_1]',$putresult).'</span>';              &mt('An error occurred: [_1]',$putresult).'</span>';
     }      }
     return $resulttext;      return $resulttext;

Removed from v.1.25  
changed lines
  Added in v.1.27


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