Diff for /loncom/interface/loncreateuser.pm between versions 1.392 and 1.397

version 1.392, 2014/02/15 19:31:22 version 1.397, 2014/03/26 18:18:24
Line 1271  ENDTITLE Line 1271  ENDTITLE
         }          }
         $r->print('<h2>'.$title.'</h2>'."\n");          $r->print('<h2>'.$title.'</h2>'."\n");
         $r->print('<div class="LC_left_float">');          $r->print('<div class="LC_left_float">');
         my $personal_table =           $r->print(&personal_data_display($ccuname,$ccdomain,$newuser,$context,
             &personal_data_display($ccuname,$ccdomain,$newuser,$context,                                           $inst_results{$ccuname.':'.$ccdomain}));
                                    $inst_results{$ccuname.':'.$ccdomain});          # Option to disable student/employee ID conflict checking not offerred for new users.
         # (Do not offer Disable Safeguard here)  
         $r->print($personal_table);  
         my ($home_server_pick,$numlib) =           my ($home_server_pick,$numlib) = 
             &Apache::loncommon::home_server_form_item($ccdomain,'hserver',              &Apache::loncommon::home_server_form_item($ccdomain,'hserver',
                                                       'default','hide');                                                        'default','hide');
Line 1376  ENDAUTH Line 1374  ENDAUTH
         }          }
         $r->print('<h2>'.$title.'</h2>'."\n");          $r->print('<h2>'.$title.'</h2>'."\n");
         $r->print('<div class="LC_left_float">');          $r->print('<div class="LC_left_float">');
         my $personal_table =           $r->print(&personal_data_display($ccuname,$ccdomain,$newuser,$context,
             &personal_data_display($ccuname,$ccdomain,$newuser,$context,                                           $inst_results{$ccuname.':'.$ccdomain}));
                                    $inst_results{$ccuname.':'.$ccdomain});  
         $r->print($personal_table);  
         if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {          if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
             $r->print('<br /><h3>'.&mt('User Can Request Creation of Courses/Communities in this Domain?').'</h3>'.              $r->print('<br /><h3>'.&mt('User Can Request Creation of Courses/Communities in this Domain?').'</h3>'.
                       &Apache::loncommon::start_data_table());                        &Apache::loncommon::start_data_table());
Line 1475  ENDNOTOOLSPRIV Line 1471  ENDNOTOOLSPRIV
         }          }
         $r->print('<br /><input type="button" value="'.$btntxt.'" onclick="setSections(this.form)" />'."\n");          $r->print('<br /><input type="button" value="'.$btntxt.'" onclick="setSections(this.form)" />'."\n");
     } else {      } else {
         $r->print('<fieldset><legend>'.&mt('Add Roles').'</legend>');          $r->print('<div class="LC_left_float">'.
                     '<fieldset><legend>'.&mt('Add Roles').'</legend>');
         my $addrolesdisplay = 0;          my $addrolesdisplay = 0;
         if ($context eq 'domain' || $context eq 'author') {          if ($context eq 'domain' || $context eq 'author') {
             $addrolesdisplay = &new_coauthor_roles($r,$ccuname,$ccdomain);              $addrolesdisplay = &new_coauthor_roles($r,$ccuname,$ccdomain);
Line 1486  ENDNOTOOLSPRIV Line 1483  ENDNOTOOLSPRIV
                 $addrolesdisplay = $add_domainroles;                  $addrolesdisplay = $add_domainroles;
             }              }
             $r->print(&course_level_dc($env{'request.role.domain'},$showcredits));              $r->print(&course_level_dc($env{'request.role.domain'},$showcredits));
             $r->print('</fieldset><br /><input type="button" value="'.&mt('Save').'" onclick="setCourse()" />'."\n");              $r->print('</fieldset></div><div class="LC_clear_float_footer"></div>'.
                         '<br /><input type="button" value="'.&mt('Save').'" onclick="setCourse()" />'."\n");
         } elsif ($context eq 'author') {          } elsif ($context eq 'author') {
             if ($addrolesdisplay) {              if ($addrolesdisplay) {
                 $r->print('</fieldset><br /><input type="button" value="'.&mt('Save').'"');                  $r->print('</fieldset></div><div class="LC_clear_float_footer"></div>'.
                             '<br /><input type="button" value="'.&mt('Save').'"');
                 if ($newuser) {                  if ($newuser) {
                     $r->print(' onclick="auth_check()" \>'."\n");                      $r->print(' onclick="auth_check()" \>'."\n");
                 } else {                  } else {
                     $r->print('onclick="this.form.submit()" \>'."\n");                      $r->print('onclick="this.form.submit()" \>'."\n");
                 }                  }
             } else {              } else {
                 $r->print('</fieldset><br /><a href="javascript:backPage(document.cu)">'.                  $r->print('</fieldset></div>'.
                             '<div class="LC_clear_float_footer"></div>'.
                             '<br /><a href="javascript:backPage(document.cu)">'.
                           &mt('Back to previous page').'</a>');                            &mt('Back to previous page').'</a>');
             }              }
         } else {          } else {
             $r->print(&course_level_table(\%inccourses,$showcredits,$defaultcredits));              $r->print(&course_level_table(\%inccourses,$showcredits,$defaultcredits));
             $r->print('</fieldset><br /><input type="button" value="'.&mt('Save').'" onclick="setSections(this.form)" />'."\n");              $r->print('</fieldset></div><div class="LC_clear_float_footer"></div>'.
                         '<br /><input type="button" value="'.&mt('Save').'" onclick="setSections(this.form)" />'."\n");
         }          }
     }      }
     $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain']));      $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain']));
     $r->print('<input type="hidden" name="currstate" value="" />');      $r->print('<input type="hidden" name="currstate" value="" />');
     $r->print('<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" /></form>');      $r->print('<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" /></form><br /><br />');
     return;      return;
 }  }
   
Line 1811  sub display_existing_roles { Line 1813  sub display_existing_roles {
             }              }
         } else {          } else {
             $plaintext=              $plaintext=
                 &mt('Customrole [_1][_2]defined by [_3]',                  &mt('Custom role [_1][_2]defined by [_3]',
                         '"'.$croletitle.'"',                          '"'.$croletitle.'"',
                         '<br />',                          '<br />',
                         $croleuname.':'.$croleudom);                          $croleuname.':'.$croleudom);
Line 1861  sub display_existing_roles { Line 1863  sub display_existing_roles {
         } else {          } else {
             $contextrole = &mt('Existing Roles in this Domain');              $contextrole = &mt('Existing Roles in this Domain');
         }          }
         $r->print('<div>'.          $r->print('<div class="LC_left_float">'.
 '<fieldset><legend>'.$contextrole.'</legend>'.  '<fieldset><legend>'.$contextrole.'</legend>'.
 &Apache::loncommon::start_data_table("LC_createuser").  &Apache::loncommon::start_data_table("LC_createuser").
 &Apache::loncommon::start_data_table_header_row().  &Apache::loncommon::start_data_table_header_row().
Line 2162  sub modify_login_block { Line 2164  sub modify_login_block {
   
 sub personal_data_display {  sub personal_data_display {
     my ($ccuname,$ccdomain,$newuser,$context,$inst_results,$rolesarray,      my ($ccuname,$ccdomain,$newuser,$context,$inst_results,$rolesarray,
         $now,$captchaform,$emailusername) = @_;          $now,$captchaform,$emailusername,$usertype) = @_;
     my ($output,%userenv,%canmodify,%canmodify_status);      my ($output,%userenv,%canmodify,%canmodify_status);
     my @userinfo = ('firstname','middlename','lastname','generation',      my @userinfo = ('firstname','middlename','lastname','generation',
                     'permanentemail','id');                      'permanentemail','id');
Line 2204  sub personal_data_display { Line 2206  sub personal_data_display {
                                                        \@userinfo,$rolesarray);                                                         \@userinfo,$rolesarray);
     } elsif ($context eq 'selfcreate') {      } elsif ($context eq 'selfcreate') {
         if ($newuser eq 'email') {          if ($newuser eq 'email') {
             if (ref($emailusername) eq 'HASH') {               if (ref($emailusername) eq 'HASH') {
                 my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();                  if (ref($emailusername->{$usertype}) eq 'HASH') {
                 @userinfo = ();                                my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();
                 if ((ref($infofields) eq 'ARRAY') && (ref($infotitles) eq 'HASH')) {                      @userinfo = ();          
                     foreach my $field (@{$infofields}) {                       if ((ref($infofields) eq 'ARRAY') && (ref($infotitles) eq 'HASH')) {
                         if ($emailusername->{$field}) {                          foreach my $field (@{$infofields}) { 
                             push(@userinfo,$field);                              if ($emailusername->{$usertype}->{$field}) {
                             $canmodify{$field} = 1;                                  push(@userinfo,$field);
                             unless ($textboxsize{$field}) {                                  $canmodify{$field} = 1;
                                 $textboxsize{$field} = 25;                                  unless ($textboxsize{$field}) {
                             }                                      $textboxsize{$field} = 25;
                             unless ($lt{$field}) {                                  }
                                 $lt{$field} = $infotitles->{$field};                                  unless ($lt{$field}) {
                                       $lt{$field} = $infotitles->{$field};
                                   }
                                   if ($emailusername->{$usertype}->{$field} eq 'required') {
                                       $lt{$field} .= '<b>*</b>';
                                   }
                             }                              }
                         }                          }
                     }                      }
Line 2232  sub personal_data_display { Line 2239  sub personal_data_display {
     $output = '<h3>'.$lt{'pd'}.'</h3>'.      $output = '<h3>'.$lt{'pd'}.'</h3>'.
               &Apache::lonhtmlcommon::start_pick_box();                &Apache::lonhtmlcommon::start_pick_box();
     if (($context eq 'selfcreate') && ($newuser eq 'email')) {      if (($context eq 'selfcreate') && ($newuser eq 'email')) {
         $output .= &Apache::lonhtmlcommon::row_title($lt{'email'},undef,          $output .= &Apache::lonhtmlcommon::row_title($lt{'email'}.'<b>*</b>',undef,
                                                      'LC_oddrow_value')."\n".                                                       'LC_oddrow_value')."\n".
                    '<input type="text" name="uname" size="25" value="" />';                     '<input type="text" name="uname" size="25" value="" autocomplete="off" />';
         $rowcount ++;          $rowcount ++;
         $output .= &Apache::lonhtmlcommon::row_closure(1);          $output .= &Apache::lonhtmlcommon::row_closure(1);
         my $upassone = '<input type="password" name="upass'.$now.'" size="10" />';          my $upassone = '<input type="password" name="upass'.$now.'" size="10" autocomplete="off" />';
         my $upasstwo = '<input type="password" name="upasscheck'.$now.'" size="10" />';          my $upasstwo = '<input type="password" name="upasscheck'.$now.'" size="10" autocomplete="off" />';
         $output .= &Apache::lonhtmlcommon::row_title(&mt('Password'),          $output .= &Apache::lonhtmlcommon::row_title(&mt('Password').'<b>*</b>',
                                                     'LC_pick_box_title',                                                      'LC_pick_box_title',
                                                     'LC_oddrow_value')."\n".                                                      'LC_oddrow_value')."\n".
                    $upassone."\n".                     $upassone."\n".
                    &Apache::lonhtmlcommon::row_closure(1)."\n".                     &Apache::lonhtmlcommon::row_closure(1)."\n".
                    &Apache::lonhtmlcommon::row_title(&mt('Confirm password'),                     &Apache::lonhtmlcommon::row_title(&mt('Confirm password').'<b>*</b>',
                                                      'LC_pick_box_title',                                                       'LC_pick_box_title',
                                                      'LC_oddrow_value')."\n".                                                       'LC_oddrow_value')."\n".
                    $upasstwo.                     $upasstwo.
Line 2264  sub personal_data_display { Line 2271  sub personal_data_display {
                 } else {                  } else {
                     if ($context eq 'selfcreate') {                      if ($context eq 'selfcreate') {
                         if ($canmodify{$item}) {                          if ($canmodify{$item}) {
                             $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';                              $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" autocomplete="off" />';
                             $editable ++;                              $editable ++;
                         } else {                          } else {
                             $hiderow = 1;                              $hiderow = 1;
Line 2280  sub personal_data_display { Line 2287  sub personal_data_display {
                     } else {                      } else {
                         if ($canmodify{$item}) {                          if ($canmodify{$item}) {
                             if ($newuser eq 'email') {                              if ($newuser eq 'email') {
                                 $row .= '<input type="text" name="'.$item.'" size="'.$textboxsize{$item}.'" value="" />';                                  $row .= '<input type="text" name="'.$item.'" size="'.$textboxsize{$item}.'" value="" autocomplete="off" />';
                             } else {                              } else {
                                 $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';                                  $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" autocomplete="off" />';
                             }                              }
                             $editable ++;                              $editable ++;
                         } else {                          } else {
Line 2296  sub personal_data_display { Line 2303  sub personal_data_display {
         } else {          } else {
             if ($canmodify{$item}) {              if ($canmodify{$item}) {
                 $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="'.$userenv{$item}.'" />';                  $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="'.$userenv{$item}.'" />';
                   if (($item eq 'id') && (!$newuser)) {
                       $row .= '<br />'.&Apache::lonuserutils::forceid_change($context);
                   }
             } else {              } else {
                 $row .= $userenv{$item};                  $row .= $userenv{$item};
             }              }
             if (($item eq 'id') && ($canmodify{$item})) {  
                  $row .= '<br />'.&Apache::lonuserutils::forceid_change($context);  
             }  
         }          }
         $row .= &Apache::lonhtmlcommon::row_closure(1);          $row .= &Apache::lonhtmlcommon::row_closure(1);
         if (!$hiderow) {          if (!$hiderow) {
Line 2358  sub personal_data_display { Line 2365  sub personal_data_display {
         $output .= &Apache::lonhtmlcommon::row_title()."\n".          $output .= &Apache::lonhtmlcommon::row_title()."\n".
                    '<br /><input type="submit" name="createaccount" value="'.                     '<br /><input type="submit" name="createaccount" value="'.
                    $submit_text.'" />'.                     $submit_text.'" />'.
                      '<input type="hidden" name="type" value="'.$usertype.'" />'.
                    &Apache::lonhtmlcommon::row_closure(1);                     &Apache::lonhtmlcommon::row_closure(1);
     }      }
     $output .= &Apache::lonhtmlcommon::end_pick_box();      $output .= &Apache::lonhtmlcommon::end_pick_box();
Line 2713  sub update_user_data { Line 2721  sub update_user_data {
     $r->print($error.'Invalid login mode or password'.$end.$rtnlink);          $r->print($error.'Invalid login mode or password'.$end.$rtnlink);    
     return;      return;
  }   }
  # Only allow authentification modification if the person has authority   # Only allow authentication modification if the person has authority
  if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) {   if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) {
     $r->print('Modifying authentication: '.      $r->print('Modifying authentication: '.
                       &Apache::lonnet::modifyuserauth(                        &Apache::lonnet::modifyuserauth(
Line 2723  sub update_user_data { Line 2731  sub update_user_data {
   ($env{'form.ccuname'},$env{'form.ccdomain'}));    ($env{'form.ccuname'},$env{'form.ccdomain'}));
  } else {   } else {
     # Okay, this is a non-fatal error.      # Okay, this is a non-fatal error.
     $r->print($error.&mt('You do not have the authority to modify this users authentification information').'.'.$end);          $r->print($error.&mt('You do not have the authority to modify this users authentication information.').$end);    
  }   }
     }      }
     $r->rflush(); # Finish display of header before time consuming actions start      $r->rflush(); # Finish display of header before time consuming actions start
Line 4177  sub custom_role_editor { Line 4185  sub custom_role_editor {
     my $dompriv='';      my $dompriv='';
     my $coursepriv='';      my $coursepriv='';
     my $body_top;      my $body_top;
       my $newrole;
     my ($rdummy,$roledef)=      my ($rdummy,$roledef)=
  &Apache::lonnet::get('roles',["rolesdef_$rolename"]);   &Apache::lonnet::get('roles',["rolesdef_$rolename"]);
 # ------------------------------------------------------- Does this role exist?  # ------------------------------------------------------- Does this role exist?
Line 4189  sub custom_role_editor { Line 4198  sub custom_role_editor {
             $syspriv =~ s/bre\&S//;                 $syspriv =~ s/bre\&S//;   
         }          }
     } else {      } else {
           $newrole = 1;
  $body_top .= &mt('New Role').' "';   $body_top .= &mt('New Role').' "';
  $roledef='';   $roledef='';
     }      }
Line 4458  sub set_custom_role { Line 4468  sub set_custom_role {
                  bread_crumbs_component => 'User Management'};                    bread_crumbs_component => 'User Management'}; 
     $r->print(&Apache::loncommon::start_page('Save Custom Role',$jscript,$args));      $r->print(&Apache::loncommon::start_page('Save Custom Role',$jscript,$args));
   
       my $newrole;
     my ($rdummy,$roledef)=      my ($rdummy,$roledef)=
  &Apache::lonnet::get('roles',["rolesdef_$rolename"]);   &Apache::lonnet::get('roles',["rolesdef_$rolename"]);
   
Line 4468  sub set_custom_role { Line 4479  sub set_custom_role {
     } else {      } else {
  $r->print(&mt('New Role').' "');   $r->print(&mt('New Role').' "');
  $roledef='';   $roledef='';
           $newrole = 1;
     }      }
     $r->print($rolename.'"</h3>');      $r->print($rolename.'"</h3>');
 # ------------------------------------------------------- What can be assigned?  # ------------------------------------------------------- What can be assigned?
Line 4810  sub handler { Line 4822  sub handler {
             if (ref($domconfig{'usercreation'}) eq 'HASH') {              if (ref($domconfig{'usercreation'}) eq 'HASH') {
                 if (ref($domconfig{'usercreation'}{'cancreate'}) eq 'HASH') {                  if (ref($domconfig{'usercreation'}{'cancreate'}) eq 'HASH') {
                     if (ref($domconfig{'usercreation'}{'cancreate'}{'emailusername'}) eq 'HASH') {                      if (ref($domconfig{'usercreation'}{'cancreate'}{'emailusername'}) eq 'HASH') {
                         my $count = scalar(keys(%{$domconfig{'usercreation'}{'cancreate'}{'emailusername'}}));  
                         my %info =                          my %info =
                             &Apache::lonnet::get('nohist_requestedusernames',[$uname],$dom,$domconfiguser);                              &Apache::lonnet::get('nohist_requestedusernames',[$uname],$dom,$domconfiguser);
                         if (ref($info{$uname}) eq 'HASH') {                          if (ref($info{$uname}) eq 'HASH') {
                             if ((ref($infofields) eq 'ARRAY') && (ref($infotitles) eq 'HASH')) {                              my $usertype = $info{$uname}{'inststatus'};
                                 $r->print('<div>'.&Apache::lonhtmlcommon::start_pick_box());                              unless ($usertype) {
                                 my $num;                                  $usertype = 'default';
                                 foreach my $field (@{$infofields}) {                              }
                                     next unless ($domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$field});                              if (ref($domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$usertype}) eq 'HASH') {
                                     next unless ($infotitles->{$field});                                  if ((ref($infofields) eq 'ARRAY') && (ref($infotitles) eq 'HASH')) {
                                     $r->print(&Apache::lonhtmlcommon::row_title($infotitles->{$field}).                                      $r->print('<div>'.&Apache::lonhtmlcommon::start_pick_box());
                                               $info{$uname}{$field});                                      my ($num,$count,$showstatus);
                                     $num ++;                                      $count = scalar(keys(%{$domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$usertype}}));
                                     if ($count == $num) {                                      unless ($usertype eq 'default') {
                                         $r->print(&Apache::lonhtmlcommon::row_closure(1));                                          my ($othertitle,$usertypes,$types) = 
                                     } else {                                              &Apache::loncommon::sorted_inst_types($dom);
                                         $r->print(&Apache::lonhtmlcommon::row_closure());                                          if (ref($usertypes) eq 'HASH') {
                                               if ($usertypes->{$usertype}) {
                                                   $showstatus = $usertypes->{$usertype};
                                                   $count ++;
                                               }
                                           }
                                       }
                                       foreach my $field (@{$infofields}) {
                                           next unless ($domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$usertype}{$field});
                                           next unless ($infotitles->{$field});
                                           $r->print(&Apache::lonhtmlcommon::row_title($infotitles->{$field}).
                                                     $info{$uname}{$field});
                                           $num ++;
                                           if ($count == $num) {
                                               $r->print(&Apache::lonhtmlcommon::row_closure(1));
                                           } else {
                                               $r->print(&Apache::lonhtmlcommon::row_closure());
                                           }
                                       }
                                       if ($showstatus) {
                                           $r->print(&Apache::lonhtmlcommon::row_title(&mt('Status type (self-reported)')).
                                                     $showstatus.
                                                     &Apache::lonhtmlcommon::row_closure(1));
                                     }                                      }
                                       $r->print(&Apache::lonhtmlcommon::end_pick_box().'</div>');
                                 }                                  }
                                 $r->print(&Apache::lonhtmlcommon::end_pick_box().'</div>');  
                             }                              }
                         }                          }
                     }                      }
Line 7184  sub course_level_dc { Line 7217  sub course_level_dc {
                  &Apache::loncommon::start_data_table().                   &Apache::loncommon::start_data_table().
                  &Apache::loncommon::start_data_table_header_row().                   &Apache::loncommon::start_data_table_header_row().
                  '<th>'.$lt{'scc'}.'</th><th>'.$lt{'rol'}.'</th>'."\n".                   '<th>'.$lt{'scc'}.'</th><th>'.$lt{'rol'}.'</th>'."\n".
                  '<th>'.$lt{'grs'}.'</th><th>'.$lt{'crd'}.'</th>'."\n".                   '<th>'.$lt{'grs'}.'</th>'."\n";
                  '<th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'."\n".      $header .=   '<th>'.$lt{'crd'}.'</th>'."\n" if ($showcredits);
       $header .=   '<th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'."\n".
                  &Apache::loncommon::end_data_table_header_row();                   &Apache::loncommon::end_data_table_header_row();
     my $otheritems = &Apache::loncommon::start_data_table_row()."\n".      my $otheritems = &Apache::loncommon::start_data_table_row()."\n".
                      '<td><br /><span class="LC_nobreak"><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc','','','','crstype'".')" />'.                       '<td><br /><span class="LC_nobreak"><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc','','','','crstype'".')" />'.
Line 7215  sub course_level_dc { Line 7249  sub course_level_dc {
                      '</tr></table></td>'."\n";                       '</tr></table></td>'."\n";
     if ($showcredits) {      if ($showcredits) {
         $otheritems .= '<td><br />'."\n".          $otheritems .= '<td><br />'."\n".
                        '<input type="text" size="3" name="credits" value="" />'."\n";                         '<input type="text" size="3" name="credits" value="" /></td>'."\n";
     }      }
     $otheritems .= <<ENDTIMEENTRY;      $otheritems .= <<ENDTIMEENTRY;
 <td><br /><input type="hidden" name="start" value='' />  <td><br /><input type="hidden" name="start" value='' />

Removed from v.1.392  
changed lines
  Added in v.1.397


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