Diff for /loncom/interface/loncreateuser.pm between versions 1.240 and 1.241

version 1.240, 2008/05/29 04:10:50 version 1.241, 2008/06/03 01:13:27
Line 2981  sub handler { Line 2981  sub handler {
         if (!exists($env{'form.state'})) {          if (!exists($env{'form.state'})) {
             $r->print(&Apache::lonhtmlcommon::breadcrumbs('Configure Self-enrollment',              $r->print(&Apache::lonhtmlcommon::breadcrumbs('Configure Self-enrollment',
                                                           'Course_Self_Enrollment'));                                                            'Course_Self_Enrollment'));
               $r->print('<h3>'.&mt('Self-enrollment with a student role').'</h3>'."\n");
             &print_selfenroll_menu($r,$context,$permission);              &print_selfenroll_menu($r,$context,$permission);
         } elsif ($env{'form.state'} eq 'done') {          } elsif ($env{'form.state'} eq 'done') {
             &Apache::lonhtmlcommon::add_breadcrumb              &Apache::lonhtmlcommon::add_breadcrumb
Line 2989  sub handler { Line 2989  sub handler {
               text=>"Result"});                text=>"Result"});
             $r->print(&Apache::lonhtmlcommon::breadcrumbs('Self-enrollment result',              $r->print(&Apache::lonhtmlcommon::breadcrumbs('Self-enrollment result',
                                                           'Course_Self_Enrollment'));                                                            'Course_Self_Enrollment'));
             &update_selfenroll_config($r,$context);              $r->print('<h3>'.&mt('Self-enrollment with a student role').'</h3>'."\n");
               &update_selfenroll_config($r,$context,$permission);
         }          }
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
     } elsif ($env{'form.action'} eq 'changelogs') {      } elsif ($env{'form.action'} eq 'changelogs') {
Line 3178  sub print_selfenroll_menu { Line 3179  sub print_selfenroll_menu {
                  $setsec_js."\n".                   $setsec_js."\n".
                  '</script>'."\n".                   '</script>'."\n".
                  '<h3>'.$lt->{'selfenroll'}.'</h3>'."\n".                   '<h3>'.$lt->{'selfenroll'}.'</h3>'."\n".
                  '<form name="'.$formname.'" method="post">'."\n".                   '<form name="'.$formname.'" method="post" action="/adm/createuser">'."\n".
                  &Apache::lonhtmlcommon::start_pick_box();                   &Apache::lonhtmlcommon::start_pick_box();
       my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       my $cnum = $env{'course.'.$env{'request.course.id'},'.num'};
     if (ref($row) eq 'ARRAY') {      if (ref($row) eq 'ARRAY') {
         foreach my $item (@{$row}) {          foreach my $item (@{$row}) {
             my $title = $item;               my $title = $item; 
Line 3191  sub print_selfenroll_menu { Line 3194  sub print_selfenroll_menu {
                              'LC_selfenroll_pick_box_title','LC_oddrow_value')."\n";                               'LC_selfenroll_pick_box_title','LC_oddrow_value')."\n";
             if ($item eq 'types') {              if ($item eq 'types') {
                 my $curr_types = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_types'};                  my $curr_types = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_types'};
                 $output .= '<input type="text" name="selfenroll_types" value="'.$curr_types.'" size="50" />';                  my $showdomdesc = 1;
                   my $includeempty = 1;
                   my $num = 0;
                   $output .= &Apache::loncommon::start_data_table().
                              &Apache::loncommon::start_data_table_row()
                              .'<td colspan="2"><span class="LC_nobreak"><label>'
                              .&mt('Any user in any domain:')
                              .'&nbsp;<input type="radio" name="selfenroll_all" value="1" ';
                   if ($curr_types eq '*') {
                       $output .= ' checked="checked" '; 
                   }
                   $output .= '/>'.&mt('Yes').'</label>&nbsp;&nbsp;<input type="radio" name="selfenroll_all" value="0" ';
                   if ($curr_types ne '*') {
                       $output .= ' checked="checked" ';
                   }
                   $output .= '/>'.&mt('No').'</label></td>'
                              .&Apache::loncommon::end_data_table_row();
                   my %currdoms;
                   if (($curr_types eq '') && ($env{'form.selfenroll_newdom'} eq '')) {
                       $output .= &new_selfenroll_dom_row($cdom,'0');
                   } elsif ($curr_types ne '*') {
                       my @entries = split(/;/,$curr_types);
                       if (@entries > 0) {
                           foreach my $entry (@entries) {
                               my ($currdom,$typestr) = split(/:/,$entry);
                               $currdoms{$currdom} = 1;
                               my $domdesc = &Apache::lonnet::domain($currdom);
                               my @currinsttypes = split(/,/,$typestr);
                               $output .= &Apache::loncommon::start_data_table_row()
                                          .'<td valign="top"><span class="LC_nobreak">'.&mt('Domain:').'<b>'
                                          .'&nbsp;'.$domdesc.' ('.$currdom.')'
                                          .'</b><input type="hidden" name="selfenroll_dom_'.$num
                                          .'" value="'.$currdom.'" /></span><br />'
                                          .'<span class="LC_nobreak"><label><input type="checkbox" '
                                          .'name="selfenroll_delete" value="'.$num.'" />'
                                          .&mt('Delete').'</label></span></td>';
                               $output .= '<td valign="top">'.&mt('User types:').'<br />'
                                          .&selfenroll_inst_types($num,$currdom,\@currinsttypes).'</td>'
                                          .&Apache::loncommon::end_data_table_row();
                               $num ++;
                           }
                       }
                   }
                   if ($env{'form.selfenroll_newdom'} ne '') {
                       if (!defined($currdoms{$env{'form.selfenroll_newdom'}})) {
                           $output .= &new_selfenroll_dom_row($env{'form.selfenroll_newdom'},$num); 
                           $num ++;
                       }
                   }
                   my $add_domtitle = &mt('Additional domain:');
                   if ($curr_types eq '*') { 
                       $add_domtitle = &mt('Specific Domain:');
                   } elsif ($curr_types eq '') {
                       $add_domtitle = &mt('Other domain:');
                   }
                   $output .= &Apache::loncommon::start_data_table_row()
                              .'<td colspan="2"><span class="LC_nobreak">'.$add_domtitle.'</span><br />'
                              .&Apache::loncommon::select_dom_form('','selfenroll_newdom',
                                                                   $includeempty,$showdomdesc)
                              .'<input type="hidden" name="selfenroll_types_total" value="'.$num.'" />'
                              .'</td>'.&Apache::loncommon::end_data_table_row()
                              .&Apache::loncommon::end_data_table();
             } elsif ($item eq 'registered') {              } elsif ($item eq 'registered') {
                 my ($regon,$regoff);                  my ($regon,$regoff);
                 if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_registered'}) {                  if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_registered'}) {
Line 3240  sub print_selfenroll_menu { Line 3304  sub print_selfenroll_menu {
                 $output .= &selfenroll_date_forms($startform,$endform);                  $output .= &selfenroll_date_forms($startform,$endform);
             } elsif ($item eq 'section') {              } elsif ($item eq 'section') {
                 my $currsec = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_section'};                   my $currsec = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_section'}; 
                 my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
                 my $cnum = $env{'course.'.$env{'request.course.id'},'.num'};  
                 my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);                  my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
                 my $newsecval;                  my $newsecval;
                 if ($currsec ne 'none' && $currsec ne '') {                  if ($currsec ne 'none' && $currsec ne '') {
Line 3265  sub print_selfenroll_menu { Line 3327  sub print_selfenroll_menu {
         }          }
     }      }
     $output .= &Apache::lonhtmlcommon::end_pick_box().      $output .= &Apache::lonhtmlcommon::end_pick_box().
                '<br /><input type="button" name="selfenrollconf" value="'.                 '<br /><input type="button" name="selfenrollconf" value="'
                &mt('Save changes').'" onclick="setSections(this.form);" /></form>';                 .&mt('Save changes').'" onclick="setSections(this.form);" />'
                  .'<input type="hidden" name="action" value="selfenroll" /></form>';
     $r->print($output);      $r->print($output);
     return;      return;
 }  }
   
   sub new_selfenroll_dom_row {
       my ($newdom,$num) = @_;
       my $domdesc = &Apache::lonnet::domain($newdom);
       my $output;
       if ($domdesc ne '') {
           $output .= &Apache::loncommon::start_data_table_row()
                      .'<td valign="top"><span class="LC_nobreak">'.&mt('Domain:').'&nbsp;<b>'.$domdesc
                      .' ('.$newdom.')</b><input type="hidden" name="selfenroll_dom_'.$num
                      .'" value="'.$newdom.'" /></span></td>';
           my @currinsttypes;
           $output .= '<td>'.&mt('User types:').'<br />'
                      .&selfenroll_inst_types($num,$newdom,\@currinsttypes).'</td>'
                      .&Apache::loncommon::end_data_table_row();
       }
       return $output;
   }
   
   sub selfenroll_inst_types {
       my ($num,$currdom,$currinsttypes) = @_;
       my $output;
       my $numinrow = 4;
       my $count = 0;
       my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($currdom);
       if ((ref($types) eq 'ARRAY') && (ref($usertypes) eq 'HASH')) {
           $output .= '<table><tr>';
           foreach my $type (@{$types}) {
               if (($count > 0) && ($count%$numinrow == 0)) {
                   $output .= '</tr><tr>';
               }
               if (defined($usertypes->{$type})) {
                   $output .= '<td><span class="LC_nobreak"><label><input type = "checkbox" value="'.
                              $type.'" ';
                   if (ref($currinsttypes) eq 'ARRAY') {
                       if (@{$currinsttypes} > 0) {
                           if (grep(/^\Q$type\E$/,@{$currinsttypes})) {
                               $output .= 'checked="checked"';
                           }
                       }
                   }
                   $output .= ' name="selfenroll_types_'.$num.'" />'.$usertypes->{$type}.'</label></span></td>';
               }
               $count ++;
           }
           if (($count > 0) && ($count%$numinrow == 0)) {
               $output .= '</tr><tr>';
           }
           $output .= '<td><span class="LC_nobreak"><label><input type = "checkbox" value="other" ';
           if (ref($currinsttypes) eq 'ARRAY') {
               if (@{$currinsttypes} > 0) {
                   if (grep(/^other$/,@{$currinsttypes})) {
                       $output .= 'checked="checked" ';
                   }
               }
           }
           $output .= ' name="selfenroll_types_'.$num.'" />'.$othertitle.'</label></span></td></tr></table>';
       }
       return $output;
   }
   
 sub selfenroll_date_forms {  sub selfenroll_date_forms {
     my ($startform,$endform) = @_;      my ($startform,$endform) = @_;
     my $output .= &Apache::lonhtmlcommon::start_pick_box()."\n".      my $output .= &Apache::lonhtmlcommon::start_pick_box()."\n".
Line 4138  ENDTIMEENTRY Line 4260  ENDTIMEENTRY
 }  }
   
 sub update_selfenroll_config {  sub update_selfenroll_config {
     my ($r,$context) = @_;      my ($r,$context,$permission) = @_;
     my ($row,$lt) = &get_selfenroll_titles();      my ($row,$lt) = &get_selfenroll_titles();
     my $groupslist = &Apache::lonuserutils::get_groupslist();      my %curr_groups = &Apache::longroup::coursegroups();
     my (%changes,%warning);      my (%changes,%warning);
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     $r->print('<h3>'.$lt->{'selfenroll'}.'</h3>'."\n");      my $curr_types;
     if (ref($row) eq 'ARRAY') {      if (ref($row) eq 'ARRAY') {
         foreach my $item (@{$row}) {          foreach my $item (@{$row}) {
             if ($item eq 'enroll_dates') {              if ($item eq 'enroll_dates') {
Line 4165  sub update_selfenroll_config { Line 4287  sub update_selfenroll_config {
                         $changes{'internal.selfenroll_'.$type.'_access'} = $newdate{$type};                          $changes{'internal.selfenroll_'.$type.'_access'} = $newdate{$type};
                     }                      }
                 }                  }
               } elsif ($item eq 'types') {
                   $curr_types =
                       $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_'.$item};
                   if ($env{'form.selfenroll_all'}) {
                       if ($curr_types ne '*') {
                           $changes{'internal.selfenroll_types'} = '*';
                       } else {
                           next;
                       }
                   } elsif ($curr_types eq '') {
                       my @types = &Apache::loncommon::get_env_multiple('form.selfenroll_types_0');
                       if (@types > 0) {
                           $changes{'internal.selfenroll_types'} = $env{'form.selfenroll_dom_0'}.':'.join(',',@types);
                       }
                   } else {
                       my @entries = split(/;/,$curr_types);
                       my $num = 0;
                       my @latesttypes;
                       my @deletedoms = &Apache::loncommon::get_env_multiple('form.selfenroll_delete');
                       my $newnum = 0;
                       for (my $j=0; $j<$env{'form.selfenroll_types_total'}; $j++) {
                           if (!grep(/^$j$/,@deletedoms)) {
                               my @types = &Apache::loncommon::get_env_multiple('form.selfenroll_types_'.$j);
                               @types = sort(@types);
                               my $typestr = join(',',@types);
                               $latesttypes[$newnum] = $env{'form.selfenroll_dom_'.$j}.':'.$typestr;
                               $newnum ++;
                           }
                       }
                       my $selfenroll_types = join(';',@latesttypes);
                       if ($selfenroll_types ne $curr_types) {
                           $changes{'internal.selfenroll_types'} = $selfenroll_types;
                       }
                   }
             } else {              } else {
                 my $curr_val =                   my $curr_val = 
                     $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_'.$item};                      $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_'.$item};
                 my $newval = $env{'form.selfenroll_'.$item};                  my $newval = $env{'form.selfenroll_'.$item};
                 if ($item eq 'section') {                  if ($item eq 'section') {
                     $newval = $env{'form.sections'};                      $newval = $env{'form.sections'};
                     if (grep(/^\Q$newval\E$/,keys(%{$groupslist}))) {                      if (defined($curr_groups{$newval})) {
                         $newval = $curr_val;                          $newval = $curr_val;
                         $warning{$item} = &mt('Section for self-enrolled users unchanged as the proposed section is a group').'<br />'.&mt('Group names and section names must be distinct');                          $warning{$item} = &mt('Section for self-enrolled users unchanged as the proposed section is a group').'<br />'.&mt('Group names and section names must be distinct');
                     } elsif ($newval eq 'all') {                      } elsif ($newval eq 'all') {
Line 4185  sub update_selfenroll_config { Line 4341  sub update_selfenroll_config {
                 if ($newval ne $curr_val) {                  if ($newval ne $curr_val) {
                     $changes{'internal.selfenroll_'.$item} = $newval;                      $changes{'internal.selfenroll_'.$item} = $newval;
                 }                  }
             }               }
         }          }
         if (keys(%warning) > 0) {          if (keys(%warning) > 0) {
             foreach my $item (@{$row}) {              foreach my $item (@{$row}) {
Line 4239  sub update_selfenroll_config { Line 4395  sub update_selfenroll_config {
                         }                          }
                     } else {                      } else {
                         if (exists($changes{'internal.selfenroll_'.$item})) {                          if (exists($changes{'internal.selfenroll_'.$item})) {
                             $r->print('<li>'.&mt('[_1] set to "[_2]".',$title,                              my $newval = $changes{'internal.selfenroll_'.$item};
                                       $changes{'internal.selfenroll_'.$item}).'</li>'."\n");                              if ($item eq 'types') {
                                   if ($newval eq '') {
                                       $newval = &mt('None');
                                   } elsif ($newval eq '*') {
                                       $newval = &mt('Any user in any domain');
                                   }
                               }
                               $r->print('<li>'.&mt('[_1] set to "[_2]".',$title,$newval).'</li>'."\n");
                         }                          }
                     }                      }
                 }                  }
Line 4259  sub update_selfenroll_config { Line 4422  sub update_selfenroll_config {
     } else {      } else {
         $r->print(&mt('No changes were needed to the existing self-enrollment settings in this course.'));          $r->print(&mt('No changes were needed to the existing self-enrollment settings in this course.'));
     }      }
       if ($env{'form.selfenroll_newdom'} ne '') {
           &print_selfenroll_menu($r,$context,$permission);
       }
     return;      return;
 }  }
   
 sub get_selfenroll_titles {  sub get_selfenroll_titles {
     my @row = ('types','registered','enroll_dates','access_dates','section');      my @row = ('types','registered','enroll_dates','access_dates','section');
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
                 selfenroll   => 'Self-enrollment with a student role',  
                 types        => 'Users allowed to self-enroll in this course',                  types        => 'Users allowed to self-enroll in this course',
                 registered   => 'Restrict self-enrollment to registered students?',                  registered   => 'Restrict self-enrollment to registered students?',
                 enroll_dates => 'Dates self-enrollment available',                  enroll_dates => 'Dates self-enrollment available',
                 access_dates => 'Access dates for self-enrolled users',                  access_dates => 'Access dates for self-enrolled users',
                 section      => 'Section',                  section      => 'Section assigned to self-enrolled users',
              );               );
     return (\@row,\%lt);      return (\@row,\%lt);
 }  }

Removed from v.1.240  
changed lines
  Added in v.1.241


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