Diff for /loncom/interface/loncreateuser.pm between versions 1.217 and 1.219

version 1.217, 2007/12/21 15:33:32 version 1.219, 2007/12/21 17:27:57
Line 809  ENDNOPORTPRIV Line 809  ENDNOPORTPRIV
             &display_existing_roles($r,$ccuname,$ccdomain,\%inccourses);              &display_existing_roles($r,$ccuname,$ccdomain,\%inccourses);
         }          }
     } ## End of new user/old user logic      } ## End of new user/old user logic
     my $addrolesdisplay = 0;  
     $r->print('<h3>'.&mt('Add Roles').'</h3>');      if ($env{'form.action'} eq 'singlestudent') {
 #          $r->print('<br /><input type="button" value="'.&mt('Enroll Student').'" onClick="setSections(this.form)" />'."\n");
 # Co-Author      } else {
 #           $r->print('<h3>'.&mt('Add Roles').'</h3>');
     if (&Apache::lonuserutils::authorpriv($env{'user.name'},          my $addrolesdisplay = 0;
                                           $env{'request.role.domain'}) &&          if ($context eq 'domain' || $context eq 'author') {
         ($env{'user.name'} ne $ccuname || $env{'user.domain'} ne $ccdomain)) {              $addrolesdisplay = &new_coauthor_roles($r,$ccuname,$ccdomain);
         # No sense in assigning co-author role to yourself          }
         $addrolesdisplay = 1;          if ($context eq 'domain') {
  my $cuname=$env{'user.name'};              my $add_domainroles = &new_domain_roles($r);
         my $cudom=$env{'request.role.domain'};              if (!$addrolesdisplay) {
    my %lt=&Apache::lonlocal::texthash(                  $addrolesdisplay = $add_domainroles;
     'cs'   => "Construction Space",  
                     'act'  => "Activate",                      
                     'rol'  => "Role",  
                     'ext'  => "Extent",  
                     'sta'  => "Start",  
                     'end'  => "End",  
                     'cau'  => "Co-Author",  
                     'caa'  => "Assistant Co-Author",  
                     'ssd'  => "Set Start Date",  
                     'sed'  => "Set End Date"  
        );  
        $r->print('<h4>'.$lt{'cs'}.'</h4>'."\n".   
            &Apache::loncommon::start_data_table()."\n".  
            &Apache::loncommon::start_data_table_header_row()."\n".  
            '<th>'.$lt{'act'}.'</th><th>'.$lt{'rol'}.'</th>'.  
            '<th>'.$lt{'ext'}.'</th><th>'.$lt{'sta'}.'</th>'.  
            '<th>'.$lt{'end'}.'</th>'."\n".  
            &Apache::loncommon::end_data_table_header_row()."\n".  
            &Apache::loncommon::start_data_table_row()."\n".  
            '<td>  
             <input type=checkbox name="act_'.$cudom.'_'.$cuname.'_ca" />  
            </td>  
            <td>'.$lt{'cau'}.'</td>  
            <td>'.$cudom.'_'.$cuname.'</td>  
            <td><input type="hidden" name="start_'.$cudom.'_'.$cuname.'_ca" value="" />  
              <a href=  
 "javascript:pjump('."'date_start','Start Date Co-Author',document.cu.start_$cudom\_$cuname\_ca.value,'start_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td>  
 <td><input type="hidden" name="end_'.$cudom.'_'.$cuname.'_ca" value="" />  
 <a href=  
 "javascript:pjump('."'date_end','End Date Co-Author',document.cu.end_$cudom\_$cuname\_ca.value,'end_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'."\n".  
           &Apache::loncommon::end_data_table_row()."\n".  
           &Apache::loncommon::start_data_table_row()."\n".  
 '<td><input type=checkbox name="act_'.$cudom.'_'.$cuname.'_aa" /></td>  
 <td>'.$lt{'caa'}.'</td>  
 <td>'.$cudom.'_'.$cuname.'</td>  
 <td><input type="hidden" name="start_'.$cudom.'_'.$cuname.'_aa" value="" />  
 <a href=  
 "javascript:pjump('."'date_start','Start Date Assistant Co-Author',document.cu.start_$cudom\_$cuname\_aa.value,'start_$cudom\_$cuname\_aa','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td>  
 <td><input type="hidden" name="end_'.$cudom.'_'.$cuname.'_aa" value="" />  
 <a href=  
 "javascript:pjump('."'date_end','End Date Assistant Co-Author',document.cu.end_$cudom\_$cuname\_aa.value,'end_$cudom\_$cuname\_aa','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'."\n".  
          &Apache::loncommon::end_data_table_row()."\n".  
          &Apache::loncommon::end_data_table());  
     } elsif ($env{'request.role'} =~ /^au\./) {  
         if (!(&Apache::lonuserutils::authorpriv($env{'user.name'},  
                                                 $env{'request.role.domain'}))) {  
             $r->print('<span class="LC_error">'.  
                       &mt('You do not have privileges to assign co-author roles.').  
                       '</span>');  
         } elsif (($env{'user.name'} eq $ccuname) &&   
              ($env{'user.domain'} eq $ccdomain)) {  
            $r->print(&mt('Assigning yourself a co-author or assistant co-author role in your own author area in Construction Space is not permitted'));  
         }  
     }  
 #  
 # Domain level  
 #  
     my $num_domain_level = 0;  
     my $domaintext =   
     '<h4>'.&mt('Domain Level').'</h4>'.  
     &Apache::loncommon::start_data_table().  
     &Apache::loncommon::start_data_table_header_row().  
     '<th>'.&mt('Activate').'</th><th>'.&mt('Role').'</th><th>'.  
     &mt('Extent').'</th>'.  
     '<th>'.&mt('Start').'</th><th>'.&mt('End').'</th>'.  
     &Apache::loncommon::end_data_table_header_row();  
     foreach my $thisdomain (sort(&Apache::lonnet::all_domains())) {  
         foreach my $role ('dc','li','dg','au','sc') {  
             if (&Apache::lonnet::allowed('c'.$role,$thisdomain)) {  
                my $plrole=&Apache::lonnet::plaintext($role);  
        my %lt=&Apache::lonlocal::texthash(  
                     'ssd'  => "Set Start Date",  
                     'sed'  => "Set End Date"  
        );  
                $num_domain_level ++;  
                $domaintext .=   
 &Apache::loncommon::start_data_table_row().  
 '<td><input type=checkbox name="act_'.$thisdomain.'_'.$role.'" /></td>  
 <td>'.$plrole.'</td>  
 <td>'.$thisdomain.'</td>  
 <td><input type="hidden" name="start_'.$thisdomain.'_'.$role.'" value="" />  
 <a href=  
 "javascript:pjump('."'date_start','Start Date $plrole',document.cu.start_$thisdomain\_$role.value,'start_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td>  
 <td><input type="hidden" name="end_'.$thisdomain.'_'.$role.'" value="" />  
 <a href=  
 "javascript:pjump('."'date_end','End Date $plrole',document.cu.end_$thisdomain\_$role.value,'end_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'.  
 &Apache::loncommon::end_data_table_row();  
             }              }
         }               $r->print(&course_level_dc($env{'request.role.domain'},'Course'));
     }              $r->print('<br /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()" />'."\n");
     $domaintext.= &Apache::loncommon::end_data_table();          } elsif ($context eq 'author') {
     if ($num_domain_level > 0) {              if ($addrolesdisplay) {
         $r->print($domaintext);                  $r->print('<br /><input type="button" value="'.&mt('Modify User').'"');
         $addrolesdisplay = 1;                  if ($newuser) {
     }                      $r->print(' onClick="verify_message(this.form)" \>'."\n");
 #                  } else {
 # Course level                      $r->print('onClick="this.form.submit()" \>'."\n");
 #                  }
   
     if ($env{'request.role'} =~ m{^dc\./($match_domain)/$}) {  
         $r->print(&course_level_dc($1,'Course'));  
         $r->print('<br /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()" />'."\n");  
     } elsif ($env{'request.role'} =~ m{^au\./($match_domain)/$}) {  
         if ($addrolesdisplay) {  
             $r->print('<br /><input type="button" value="'.&mt('Modify User').'"');  
             if ($newuser) {  
                 $r->print(' onClick="verify_message(this.form)" \>'."\n");  
             } else {              } else {
                 $r->print('onClick="this.form.submit()" \>'."\n");                   $r->print('<br /><a href="javascript:backPage(document.cu)">'.
                             &mt('Back to previous page').'</a>');
             }              }
         } else {          } else {
             $r->print('<br /><a href="javascript:backPage(document.cu)">'.              $r->print(&course_level_table(%inccourses));
                       &mt('Back to previous page').'</a>');              $r->print('<br /><input type="button" value="'.&mt('Modify User').'" onClick="setSections(this.form)" />'."\n");
         }          }
     } else {  
         $r->print(&course_level_table(%inccourses));  
         $r->print('<br /><input type="button" value="'.&mt('Modify User').'" 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'}.'" />');      $r->print('<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" />');
     $r->print("</form>".&Apache::loncommon::end_page());      $r->print("</form>".&Apache::loncommon::end_page());
       return;
 }  }
   
 sub singleuser_breadcrumb {  sub singleuser_breadcrumb {
Line 1208  sub display_existing_roles { Line 1111  sub display_existing_roles {
     return;      return;
 }  }
   
   sub new_coauthor_roles {
       my ($r,$ccuname,$ccdomain) = @_;
       my $addrolesdisplay = 0;
       #
       # Co-Author
       #
       if (&Apache::lonuserutils::authorpriv($env{'user.name'},
                                             $env{'request.role.domain'}) &&
           ($env{'user.name'} ne $ccuname || $env{'user.domain'} ne $ccdomain)) {
           # No sense in assigning co-author role to yourself
           $addrolesdisplay = 1;
           my $cuname=$env{'user.name'};
           my $cudom=$env{'request.role.domain'};
           my %lt=&Apache::lonlocal::texthash(
                       'cs'   => "Construction Space",
                       'act'  => "Activate",
                       'rol'  => "Role",
                       'ext'  => "Extent",
                       'sta'  => "Start",
                       'end'  => "End",
                       'cau'  => "Co-Author",
                       'caa'  => "Assistant Co-Author",
                       'ssd'  => "Set Start Date",
                       'sed'  => "Set End Date"
                                          );
           $r->print('<h4>'.$lt{'cs'}.'</h4>'."\n".
                     &Apache::loncommon::start_data_table()."\n".
                     &Apache::loncommon::start_data_table_header_row()."\n".
                     '<th>'.$lt{'act'}.'</th><th>'.$lt{'rol'}.'</th>'.
                     '<th>'.$lt{'ext'}.'</th><th>'.$lt{'sta'}.'</th>'.
                     '<th>'.$lt{'end'}.'</th>'."\n".
                     &Apache::loncommon::end_data_table_header_row()."\n".
                     &Apache::loncommon::start_data_table_row().'
              <td>
               <input type=checkbox name="act_'.$cudom.'_'.$cuname.'_ca" />
              </td>
              <td>'.$lt{'cau'}.'</td>
              <td>'.$cudom.'_'.$cuname.'</td>
              <td><input type="hidden" name="start_'.$cudom.'_'.$cuname.'_ca" value="" />
                <a href=
   "javascript:pjump('."'date_start','Start Date Co-Author',document.cu.start_$cudom\_$cuname\_ca.value,'start_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td>
   <td><input type="hidden" name="end_'.$cudom.'_'.$cuname.'_ca" value="" />
   <a href=
   "javascript:pjump('."'date_end','End Date Co-Author',document.cu.end_$cudom\_$cuname\_ca.value,'end_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'."\n".
                 &Apache::loncommon::end_data_table_row()."\n".
                 &Apache::loncommon::start_data_table_row()."\n".
   '<td><input type=checkbox name="act_'.$cudom.'_'.$cuname.'_aa" /></td>
   <td>'.$lt{'caa'}.'</td>
   <td>'.$cudom.'_'.$cuname.'</td>
   <td><input type="hidden" name="start_'.$cudom.'_'.$cuname.'_aa" value="" />
   <a href=
   "javascript:pjump('."'date_start','Start Date Assistant Co-Author',document.cu.start_$cudom\_$cuname\_aa.value,'start_$cudom\_$cuname\_aa','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td>
   <td><input type="hidden" name="end_'.$cudom.'_'.$cuname.'_aa" value="" />
   <a href=
   "javascript:pjump('."'date_end','End Date Assistant Co-Author',document.cu.end_$cudom\_$cuname\_aa.value,'end_$cudom\_$cuname\_aa','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'."\n".
                &Apache::loncommon::end_data_table_row()."\n".
                &Apache::loncommon::end_data_table());
       } elsif ($env{'request.role'} =~ /^au\./) {
           if (!(&Apache::lonuserutils::authorpriv($env{'user.name'},
                                                   $env{'request.role.domain'}))) {
               $r->print('<span class="LC_error">'.
                         &mt('You do not have privileges to assign co-author roles.').
                         '</span>');
           } elsif (($env{'user.name'} eq $ccuname) &&
                ($env{'user.domain'} eq $ccdomain)) {
               $r->print(&mt('Assigning yourself a co-author or assistant co-author role in your own author area in Construction Space is not permitted'));
           }
       }
       return $addrolesdisplay;;
   }
   
   sub new_domain_roles {
       my ($r) = @_;
       my $addrolesdisplay = 0;
       #
       # Domain level
       #
       my $num_domain_level = 0;
       my $domaintext =
       '<h4>'.&mt('Domain Level').'</h4>'.
       &Apache::loncommon::start_data_table().
       &Apache::loncommon::start_data_table_header_row().
       '<th>'.&mt('Activate').'</th><th>'.&mt('Role').'</th><th>'.
       &mt('Extent').'</th>'.
       '<th>'.&mt('Start').'</th><th>'.&mt('End').'</th>'.
       &Apache::loncommon::end_data_table_header_row();
       foreach my $thisdomain (sort(&Apache::lonnet::all_domains())) {
           foreach my $role ('dc','li','dg','au','sc') {
               if (&Apache::lonnet::allowed('c'.$role,$thisdomain)) {
                  my $plrole=&Apache::lonnet::plaintext($role);
                  my %lt=&Apache::lonlocal::texthash(
                       'ssd'  => "Set Start Date",
                       'sed'  => "Set End Date"
                                          );
                  $num_domain_level ++;
                  $domaintext .=
   &Apache::loncommon::start_data_table_row().
   '<td><input type=checkbox name="act_'.$thisdomain.'_'.$role.'" /></td>
   <td>'.$plrole.'</td>
   <td>'.$thisdomain.'</td>
   <td><input type="hidden" name="start_'.$thisdomain.'_'.$role.'" value="" />
   <a href=
   "javascript:pjump('."'date_start','Start Date $plrole',document.cu.start_$thisdomain\_$role.value,'start_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td>
   <td><input type="hidden" name="end_'.$thisdomain.'_'.$role.'" value="" />
   <a href=
   "javascript:pjump('."'date_end','End Date $plrole',document.cu.end_$thisdomain\_$role.value,'end_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'.
   &Apache::loncommon::end_data_table_row();
               }
           }
       }
       $domaintext.= &Apache::loncommon::end_data_table();
       if ($num_domain_level > 0) {
           $r->print($domaintext);
           $addrolesdisplay = 1;
       }
       return $addrolesdisplay;
   }
   
 sub user_authentication {  sub user_authentication {
     my ($ccuname,$ccdomain,$krbdefdom,$abv_auth) = @_;      my ($ccuname,$ccdomain,$krbdefdom,$abv_auth) = @_;
     my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);      my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
Line 1376  sub modify_login_block { Line 1397  sub modify_login_block {
   
 sub personal_data_display {  sub personal_data_display {
     my ($ccuname,$ccdomain,$newuser,$context,$inst_results) = @_;      my ($ccuname,$ccdomain,$newuser,$context,$inst_results) = @_;
     my ($output,$showforceid,%userenv,%domconfig);      my ($output,$showforceid,%userenv,%canmodify);
       my @userinfo = ('firstname','middlename','lastname','generation',
                       'permanentemail','id');
     if (!$newuser) {      if (!$newuser) {
         # Get the users information          # Get the users information
         %userenv = &Apache::lonnet::get('environment',          %userenv = &Apache::lonnet::get('environment',
                    ['firstname','middlename','lastname','generation',                     ['firstname','middlename','lastname','generation',
                     'permanentemail','id'],$ccdomain,$ccuname);                      'permanentemail','id'],$ccdomain,$ccuname);
         %domconfig =          %canmodify =
             &Apache::lonnet::get_dom('configuration',['usermodification'],              &Apache::lonuserutils::can_modify_userinfo($context,$ccdomain,
                                      $ccdomain);                                                         \@userinfo);
     }      }
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                 'pd'             => "Personal Data",                  'pd'             => "Personal Data",
Line 1396  sub personal_data_display { Line 1419  sub personal_data_display {
                 'id'             => "ID/Student Number",                  'id'             => "ID/Student Number",
                 'lg'             => "Login Data"                  'lg'             => "Login Data"
     );      );
     my @userinfo = ('firstname','middlename','lastname','generation',  
                     'permanentemail','id');  
     my %textboxsize = (      my %textboxsize = (
                        firstname      => '15',                         firstname      => '15',
                        middlename     => '15',                         middlename     => '15',
Line 1426  sub personal_data_display { Line 1447  sub personal_data_display {
                 $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';                  $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';
             }              }
         } else {          } else {
             my $canmodify = 0;              if ($canmodify{$item}) {
             if (&Apache::lonnet::allowed('mau',$ccdomain)) {  
                 $canmodify = 1;  
             } else {  
                 if (ref($domconfig{'usermodification'}) eq 'HASH') {  
                     if (ref($domconfig{'usermodification'}{$context}) eq 'HASH') {  
                         foreach my $key (keys(%{$domconfig{'usermodification'}{$context}})) {  
                             if (ref($domconfig{'usermodification'}{$context}{$key}) eq 'HASH') {  
                                 if ($domconfig{'usermodification'}{$context}{$key}{$item}) {   
                                     $canmodify = 1;  
                                     last;  
                                 }  
                             }  
                         }  
                     }  
                 } elsif ($context eq 'course') {  
                     $canmodify = 1;  
                 }  
             }  
             if ($canmodify) {  
                 $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="'.$userenv{$item}.'" />';                  $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="'.$userenv{$item}.'" />';
             } else {              } else {
                 $output .= $userenv{$item};                  $output .= $userenv{$item};
             }              }
             if ($item eq 'id') {              if ($item eq 'id') {
                 $showforceid = $canmodify;                   $showforceid = $canmodify{$item};
             }               }
         }          }
         $output .= &Apache::lonhtmlcommon::row_closure(1);          $output .= &Apache::lonhtmlcommon::row_closure(1);
     }      }
Line 1474  sub update_user_data { Line 1476  sub update_user_data {
     my $end       = '</span><br /><br />';      my $end       = '</span><br /><br />';
     my $rtnlink   = '<a href="javascript:backPage(document.userupdate,'.      my $rtnlink   = '<a href="javascript:backPage(document.userupdate,'.
                     "'$env{'form.prevphase'}','modify')".'" />'.                      "'$env{'form.prevphase'}','modify')".'" />'.
                     &mt('Return to previous page').'</a>'.&Apache::loncommon::end_page();                      &mt('Return to previous page').'</a>'.
                       &Apache::loncommon::end_page();
       my $now = time;
     my $title;      my $title;
     if (exists($env{'form.makeuser'})) {      if (exists($env{'form.makeuser'})) {
  $title='Set Privileges for New User';   $title='Set Privileges for New User';
Line 1499  sub update_user_data { Line 1503  sub update_user_data {
     }      }
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
        ({href=>"javascript:backPage(document.userupdate,'$env{'form.prevphase'}','modify')",         ({href=>"javascript:backPage(document.userupdate,'$env{'form.prevphase'}','modify')",
          text=>"Set user role",           text=>$breadcrumb_text{'modify'},
          faq=>282,bug=>'Instructor Interface',},           faq=>282,bug=>'Instructor Interface',},
         {href=>"/adm/createuser",          {href=>"/adm/createuser",
          text=>"Result",           text=>"Result",
          faq=>282,bug=>'Instructor Interface',});           faq=>282,bug=>'Instructor Interface',});
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
   
     my %disallowed;      my %disallowed;
     $r->print(&update_result_form($uhome));      $r->print(&update_result_form($uhome));
     # Check Inputs      # Check Inputs
Line 1531  sub update_user_data { Line 1534  sub update_user_data {
   $end.$rtnlink);    $end.$rtnlink);
  return;   return;
     }      }
       if ($uhome eq 'no_host') {
           $newuser = 1;
       }
     if (! exists($env{'form.makeuser'})) {      if (! exists($env{'form.makeuser'})) {
         # Modifying an existing user, so check the validity of the name          # Modifying an existing user, so check the validity of the name
         if ($uhome eq 'no_host') {          if ($uhome eq 'no_host') {
Line 1568  sub update_user_data { Line 1574  sub update_user_data {
     return;      return;
     }      }
   
   
     $r->print('<h3>'.&mt('User [_1] in domain [_2]',      $r->print('<h3>'.&mt('User [_1] in domain [_2]',
  $env{'form.ccuname'}, $env{'form.ccdomain'}).'</h3>');   $env{'form.ccuname'}, $env{'form.ccdomain'}).'</h3>');
     my (%alerts,%rulematch,%inst_results,%curr_rules);      my (%alerts,%rulematch,%inst_results,%curr_rules);
Line 1595  sub update_user_data { Line 1600  sub update_user_data {
         my %checkhash;          my %checkhash;
         my %checks = ('id' => 1);          my %checks = ('id' => 1);
         %{$checkhash{$env{'form.ccuname'}.':'.$env{'form.ccdomain'}}} = (          %{$checkhash{$env{'form.ccuname'}.':'.$env{'form.ccdomain'}}} = (
             'newuser' => 1,               'newuser' => $newuser, 
             'id' => $env{'form.cid'},              'id' => $env{'form.cid'},
         );          );
         if ($env{'form.cid'} ne '') {          if ($env{'form.cid'} ne '') {
Line 1629  sub update_user_data { Line 1634  sub update_user_data {
              $env{'form.cgeneration'},undef,$desiredhost,               $env{'form.cgeneration'},undef,$desiredhost,
              $env{'form.cpermanentemail'});               $env{'form.cpermanentemail'});
  $r->print(&mt('Generating user').': '.$result);   $r->print(&mt('Generating user').': '.$result);
         my $home = &Apache::lonnet::homeserver($env{'form.ccuname'},          $uhome = &Apache::lonnet::homeserver($env{'form.ccuname'},
                                                $env{'form.ccdomain'});                                                 $env{'form.ccdomain'});
         $r->print('<br />'.&mt('Home server').': '.$home.' '.          $r->print('<br />'.&mt('Home server').': '.$uhome.' '.
                   &Apache::lonnet::hostname($home));                    &Apache::lonnet::hostname($uhome));
     } elsif (($env{'form.login'} ne 'nochange') &&      } elsif (($env{'form.login'} ne 'nochange') &&
              ($env{'form.login'} ne ''        )) {               ($env{'form.login'} ne ''        )) {
  # Modify user privileges   # Modify user privileges
Line 1743  sub update_user_data { Line 1748  sub update_user_data {
                 push(@longroles,&Apache::lonnet::plaintext($role));                   push(@longroles,&Apache::lonnet::plaintext($role)); 
             }              }
         }          }
         foreach my $item ('firstname','middlename','lastname','generation','permanentemail','id') {          my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');
             my $canmodify = 0;          my %canmodify = &Apache::lonuserutils::can_modify_userinfo($context,$env{'form.ccdomain'},\@userinfo,\@userroles);
             if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) {          foreach my $item (@userinfo) {
                 $canmodify = 1;  
             } else {  
                 if ($context eq 'course' || $context eq 'author') {  
                     if (ref($domconfig{'usermodification'}) eq 'HASH') {  
                         if (ref($domconfig{'usermodification'}{$context}) eq 'HASH') {  
                             foreach my $role (@userroles) {  
                                 if (ref($domconfig{'usermodification'}{$context}{$role}) eq 'HASH') {  
                                     if ($domconfig{'usermodification'}{$context}{$role}{$item}) {  
                                         $canmodify = 1;  
                                         last;  
                                     }  
                                 }  
                             }  
                         }  
                     }  
                 } elsif ($context eq 'course') {  
                     if (grep(/^st$/,@userroles)) {  
                         $canmodify = 1;  
                     }  
                 }  
             }  
             # Strip leading and trailing whitespace              # Strip leading and trailing whitespace
             $env{'form.c'.$item} =~ s/(\s+$|^\s+)//g;              $env{'form.c'.$item} =~ s/(\s+$|^\s+)//g;
             if (!$canmodify) {              if (!$canmodify{$item}) {
                 if (defined($env{'form.c'.$item})) {                  if (defined($env{'form.c'.$item})) {
                     if ($env{'form.c'.$item} ne $userenv{$item}) {                      if ($env{'form.c'.$item} ne $userenv{$item}) {
                         push(@mod_disallowed,$item);                          push(@mod_disallowed,$item);

Removed from v.1.217  
changed lines
  Added in v.1.219


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