Diff for /loncom/interface/loncreateuser.pm between versions 1.417 and 1.425

version 1.417, 2016/10/22 17:56:12 version 1.425, 2016/11/29 13:17:25
Line 160  END_SCRIPT Line 160  END_SCRIPT
                  '<h3>'.$lt{'usrt'}.'</h3>'."\n".                   '<h3>'.$lt{'usrt'}.'</h3>'."\n".
                  &Apache::loncommon::start_data_table();                   &Apache::loncommon::start_data_table();
   
     if (&Apache::lonnet::allowed('mut',$ccdomain)) {      if ((&Apache::lonnet::allowed('mut',$ccdomain)) ||
           (&Apache::lonnet::allowed('udp',$ccdomain))) {
         $output .= &build_tools_display($ccuname,$ccdomain,'tools');          $output .= &build_tools_display($ccuname,$ccdomain,'tools');
     }      }
   
Line 267  sub build_tools_display { Line 268  sub build_tools_display {
         $colspan = ' colspan="2"';          $colspan = ' colspan="2"';
         %domconfig =          %domconfig =
             &Apache::lonnet::get_dom('configuration',['requestcourses'],$ccdomain);              &Apache::lonnet::get_dom('configuration',['requestcourses'],$ccdomain);
         $isadv = &Apache::lonnet::is_advanced_user($ccuname,$ccdomain);          $isadv = &Apache::lonnet::is_advanced_user($ccdomain,$ccuname);
     } elsif ($context eq 'requestauthor') {      } elsif ($context eq 'requestauthor') {
         %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,          %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
                                                     'requestauthor');                                                      'requestauthor');
Line 334  sub build_tools_display { Line 335  sub build_tools_display {
                    '   <td'.$colspan.'>'.$lt{$item}.'</td>'."\n".                     '   <td'.$colspan.'>'.$lt{$item}.'</td>'."\n".
                    '  </tr>'."\n".                     '  </tr>'."\n".
                    &Apache::loncommon::start_data_table_row()."\n";                     &Apache::loncommon::start_data_table_row()."\n";
     
         if (($context eq 'requestcourses') || ($context eq 'requestauthor')) {          if (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
             my ($curroption,$currlimit);              my ($curroption,$currlimit);
             my $envkey = $context.'.'.$item;              my $envkey = $context.'.'.$item;
Line 428  sub build_tools_display { Line 430  sub build_tools_display {
         }          }
         $output .= '  <td'.$colspan.'>'.$custom_access.('&nbsp;'x4).          $output .= '  <td'.$colspan.'>'.$custom_access.('&nbsp;'x4).
                    $lt{'avai'}.': '.$currdisp.'</td>'."\n".                     $lt{'avai'}.': '.$currdisp.'</td>'."\n".
                    &Apache::loncommon::end_data_table_row()."\n".                     &Apache::loncommon::end_data_table_row()."\n";
           unless (&Apache::lonnet::allowed('udp',$ccdomain)) {
               $output .=
                    &Apache::loncommon::start_data_table_row()."\n".                     &Apache::loncommon::start_data_table_row()."\n".
                    '  <td style="vertical-align:top;"><span class="LC_nobreak">'.                     '  <td style="vertical-align:top;"><span class="LC_nobreak">'.
                    $lt{'chse'}.': <label>'.                     $lt{'chse'}.': <label>'.
Line 437  sub build_tools_display { Line 441  sub build_tools_display {
                    '<label><input type="radio" name="custom'.$item.'" value="1" '.                     '<label><input type="radio" name="custom'.$item.'" value="1" '.
                    $cust_on.'/>'.$lt{'uscu'}.'</label>'.$custradio.'</td>'.                     $cust_on.'/>'.$lt{'uscu'}.'</label>'.$custradio.'</td>'.
                    &Apache::loncommon::end_data_table_row()."\n";                     &Apache::loncommon::end_data_table_row()."\n";
           }
     }      }
     return $output;      return $output;
 }  }
Line 536  sub domadhocroles { Line 541  sub domadhocroles {
     my $confname = &Apache::lonnet::get_domainconfiguser($env{'request.role.domain'});      my $confname = &Apache::lonnet::get_domainconfiguser($env{'request.role.domain'});
     my %existing=&Apache::lonnet::dump('roles',$env{'request.role.domain'},      my %existing=&Apache::lonnet::dump('roles',$env{'request.role.domain'},
                                        $confname,'rolesdef_');                                         $confname,'rolesdef_');
     my $output;      my ($output,$canmodify);
       if (&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) {
           $canmodify = 1;
       }
     if (keys(%existing) > 0) {      if (keys(%existing) > 0) {
         my @current;          my @current;
         my $curradhoc = 'adhocroles.'.$env{'request.role.domain'};          my $curradhoc = 'adhocroles.'.$env{'request.role.domain'};
Line 544  sub domadhocroles { Line 552  sub domadhocroles {
         if ($userenv{$curradhoc}) {          if ($userenv{$curradhoc}) {
             @current = split(/,/,$userenv{$curradhoc});              @current = split(/,/,$userenv{$curradhoc});
         }          }
           if (!$canmodify && !@current) {
               return;
           }
         my %customroles;          my %customroles;
         foreach my $key (keys(%existing)) {          foreach my $key (keys(%existing)) {
             if ($key=~/^rolesdef\_(\w+)$/) {              if ($key=~/^rolesdef\_(\w+)$/) {
Line 557  sub domadhocroles { Line 568  sub domadhocroles {
                   &mt('Ad Hoc Course Roles Selectable via Helpdesk Role').                    &mt('Ad Hoc Course Roles Selectable via Helpdesk Role').
                   '</h3>'."\n".                    '</h3>'."\n".
                   &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>'.&mt('Action').'</th><th>'.&mt('Role').'</th>'.          if ($canmodify) {
                   '<th>'.&mt('Privileges in Course').'<th>'.              $output .= '<th>'.&mt('Action').'</th>';
                   &Apache::loncommon::end_data_table_header_row();          }
           $output .= '<th>'.&mt('Role').'</th>'.
                      '<th>'.&mt('Privileges in Course').'<th>'.
                      &Apache::loncommon::end_data_table_header_row();
         foreach my $key (sort(keys(%customroles))) {          foreach my $key (sort(keys(%customroles))) {
               next if ((!$canmodify) && (!grep(/^\Q$key\E$/,@current)));
             $output .= &Apache::loncommon::start_data_table_row();              $output .= &Apache::loncommon::start_data_table_row();
             if (grep(/^\Q$key\E$/,@current)) {              if ($canmodify) {
                 $output .= '<td><label>'.                  if (grep(/^\Q$key\E$/,@current)) {
                            '<input type="checkbox" name="adhocroledel" value="'.$key.'" />'.                      $output .= '<td><label>'.
                            &mt('Delete').'</label>'.                                 '<input type="checkbox" name="adhocroledel" value="'.$key.'" />'.
                            '</td>';                                 &mt('Delete').'</label>'.
             } else {                                 '</td>';
                 $output .= '<td><label>'.                  } else {
                            '<input type="checkbox" name="adhocroleadd" value="'.$key.'" />'.                      $output .= '<td><label>'.
                            &mt('Add').'</label>'.                                 '<input type="checkbox" name="adhocroleadd" value="'.$key.'" />'.
                            '</td>';                                 &mt('Add').'</label>'.
                                  '</td>';
                   }
             }              }
             $output .= '<td>'.$key.'</td><td>';              $output .= '<td>'.$key.'</td><td>';
             foreach my $level ('course','domain','system') {              foreach my $level ('course','domain','system') {
Line 740  sub print_username_entry_form { Line 757  sub print_username_entry_form {
     } elsif ($env{'form.action'} eq 'accesslogs') {      } elsif ($env{'form.action'} eq 'accesslogs') {
         $helpitem = 'Domain_User_Access_Logs';          $helpitem = 'Domain_User_Access_Logs';
     }      }
     my %breadcrumb_text = &singleuser_breadcrumb($crstype);      my %breadcrumb_text = &singleuser_breadcrumb($crstype,$context,$defdom);
     if ($env{'form.action'} eq 'custom') {      if ($env{'form.action'} eq 'custom') {
         push(@{$brcrum},          push(@{$brcrum},
                  {href=>"javascript:backPage(document.crtuser)",                          {href=>"javascript:backPage(document.crtuser)",       
Line 768  sub print_username_entry_form { Line 785  sub print_username_entry_form {
                     'srst' => 'Search for a user and enroll as a student',                      'srst' => 'Search for a user and enroll as a student',
                     'srme' => 'Search for a user and enroll as a member',                      'srme' => 'Search for a user and enroll as a member',
                     'srad' => 'Search for a user and modify/add user information or roles',                      'srad' => 'Search for a user and modify/add user information or roles',
                       'srvu' => 'Search for a user and view user information and roles',
                     'srva' => 'Search for a user and view access log information',                      'srva' => 'Search for a user and view access log information',
     'usr'  => "Username",      'usr'  => "Username",
                     'dom'  => "Domain",                      'dom'  => "Domain",
Line 823  sub print_username_entry_form { Line 841  sub print_username_entry_form {
             }              }
         } elsif ($env{'form.action'} eq 'accesslogs') {          } elsif ($env{'form.action'} eq 'accesslogs') {
             $actiontext = $lt{'srva'};              $actiontext = $lt{'srva'};
           } elsif (($env{'form.action'} eq 'singleuser') &&
                    ($context eq 'domain') && (!&Apache::lonnet::allowed('mau',$defdom))) {
               $actiontext = $lt{'srvu'};
         }          }
         $r->print("<h3>$actiontext</h3>");          $r->print("<h3>$actiontext</h3>");
         if ($env{'form.origform'} ne 'crtusername') {          if ($env{'form.origform'} ne 'crtusername') {
Line 916  ENDBLOCK Line 937  ENDBLOCK
     } else {      } else {
         $output = '<p>'.$userpicker.'</p>';          $output = '<p>'.$userpicker.'</p>';
     }      }
     if (($env{'form.phase'} eq '') && ($env{'form.action'} ne 'accesslogs')) {      if (($env{'form.phase'} eq '') && ($env{'form.action'} ne 'accesslogs') &&
           (!(($env{'form.action'} eq 'singleuser') && ($context eq 'domain') && 
           (!&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))))) {
         my $defdom=$env{'request.role.domain'};          my $defdom=$env{'request.role.domain'};
         my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');          my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');
         my %lt=&Apache::lonlocal::texthash(          my %lt=&Apache::lonlocal::texthash(
Line 1033  ENDSCRIPT Line 1056  ENDSCRIPT
                                        'stusrch'        => "User Search to enroll student",                                         'stusrch'        => "User Search to enroll student",
                                        'memsrch'        => "User Search to enroll member",                                         'memsrch'        => "User Search to enroll member",
                                        'srcva'          => "Search for a user and view access log information",                                         'srcva'          => "Search for a user and view access log information",
                                          'usrvu'          => "User Search to view user roles",
                                        'usel'           => "Select a user to add/modify roles",                                         'usel'           => "Select a user to add/modify roles",
                                          'suvr'           => "Select a user to view roles",
                                        'stusel'         => "Select a user to enroll as a student",                                         'stusel'         => "Select a user to enroll as a student",
                                        'memsel'         => "Select a user to enroll as a member",                                         'memsel'         => "Select a user to enroll as a member",
                                        'vacsel'         => "Select a user to view access log",                                         'vacsel'         => "Select a user to view access log",
Line 1046  ENDSCRIPT Line 1071  ENDSCRIPT
     if ($context eq 'requestcrs') {      if ($context eq 'requestcrs') {
         $r->print('<div>');          $r->print('<div>');
     } else {      } else {
         my %breadcrumb_text = &singleuser_breadcrumb($crstype);          my %breadcrumb_text = &singleuser_breadcrumb($crstype,$context,$srch->{'srchdomain'});
         my $helpitem;          my $helpitem;
         if ($env{'form.action'} eq 'singleuser') {          if ($env{'form.action'} eq 'singleuser') {
             $helpitem = 'Course_Change_Privileges';              $helpitem = 'Course_Change_Privileges';
Line 1066  ENDSCRIPT Line 1091  ENDSCRIPT
                   );                    );
         $r->print(&Apache::loncommon::start_page('User Management',$jscript,{bread_crumbs => $brcrum}));          $r->print(&Apache::loncommon::start_page('User Management',$jscript,{bread_crumbs => $brcrum}));
         if ($env{'form.action'} eq 'singleuser') {          if ($env{'form.action'} eq 'singleuser') {
             $r->print("<b>$lt{'usrch'}</b><br />");              my $readonly;
               if (($context eq 'domain') && (!&Apache::lonnet::allowed('mau',$srch->{'srchdomain'}))) {
                   $readonly = 1;
                   $r->print("<b>$lt{'usrvu'}</b><br />");
               } else {
                   $r->print("<b>$lt{'usrch'}</b><br />");
               }
             $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context,undef,$crstype));              $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context,undef,$crstype));
             $r->print('<h3>'.$lt{'usel'}.'</h3>');              if ($readonly) {
                   $r->print('<h3>'.$lt{'suvr'}.'</h3>');
               } else {
                   $r->print('<h3>'.$lt{'usel'}.'</h3>');
               }
         } elsif ($env{'form.action'} eq 'singlestudent') {          } elsif ($env{'form.action'} eq 'singlestudent') {
             $r->print($jscript."<b>");              $r->print($jscript."<b>");
             if ($crstype eq 'Community') {              if ($crstype eq 'Community') {
Line 1207  sub print_user_modification_page { Line 1242  sub print_user_modification_page {
             }              }
             $response .= '<p class="LC_warning">'              $response .= '<p class="LC_warning">'
                         .&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.")                          .&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.")
                         .' '                          .' ';
                         .&mt('Please contact the [_1]helpdesk[_2] for assistance.'              if ($context eq 'domain') {
                             ,'<a href="'.$helplink.'">','</a>')                  $response .= &mt('Please contact a [_1] for assistance.',
                         .'</p><br />';                                   &Apache::lonnet::plaintext('dc'));
               } else {
                   $response .= &mt('Please contact the [_1]helpdesk[_2] for assistance.'
                                   ,'<a href="'.$helplink.'">','</a>');
               }
               $response .= '</p><br />';
             $env{'form.phase'} = '';              $env{'form.phase'} = '';
             &print_username_entry_form($r,$context,$response,undef,undef,$crstype,$brcrum);              &print_username_entry_form($r,$context,$response,undef,undef,$crstype,$brcrum);
             return;              return;
Line 1257  sub print_user_modification_page { Line 1297  sub print_user_modification_page {
   
     my $js = &validation_javascript($context,$ccdomain,$pjump_def,$crstype,      my $js = &validation_javascript($context,$ccdomain,$pjump_def,$crstype,
                                $groupslist,$newuser,$formname,\%loaditem);                                 $groupslist,$newuser,$formname,\%loaditem);
     my %breadcrumb_text = &singleuser_breadcrumb($crstype);      my %breadcrumb_text = &singleuser_breadcrumb($crstype,$context,$ccdomain);
     my $helpitem = 'Course_Change_Privileges';      my $helpitem = 'Course_Change_Privileges';
     if ($env{'form.action'} eq 'singlestudent') {      if ($env{'form.action'} eq 'singlestudent') {
         $helpitem = 'Course_Add_Student';          $helpitem = 'Course_Add_Student';
Line 1467  ENDAUTH Line 1507  ENDAUTH
                                  '"'.$ccuname.'"','"'.$ccdomain.'"');                                   '"'.$ccuname.'"','"'.$ccdomain.'"');
             }              }
         } else {          } else {
             $title = &mt('Modify existing user: [_1] in domain [_2]',              if ($permission->{'cusr'}) {
                   $title = &mt('Modify existing user: [_1] in domain [_2]',
                                '"'.$ccuname.'"','"'.$ccdomain.'"');
               } else {
                   $title = &mt('Existing user: [_1] in domain [_2]',
                              '"'.$ccuname.'"','"'.$ccdomain.'"');                               '"'.$ccuname.'"','"'.$ccdomain.'"');
               }
         }          }
         $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">');
         $r->print(&personal_data_display($ccuname,$ccdomain,$newuser,$context,          $r->print(&personal_data_display($ccuname,$ccdomain,$newuser,$context,
                                          $inst_results{$ccuname.':'.$ccdomain}));                                           $inst_results{$ccuname.':'.$ccdomain}));
         if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {          if ((&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) || 
               (&Apache::lonnet::allowed('udp',$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());
             if ($env{'request.role.domain'} eq $ccdomain) {              if ($env{'request.role.domain'} eq $ccdomain) {
Line 1489  ENDAUTH Line 1535  ENDAUTH
         my @order = ('auth','quota','tools','requestauthor','adhocroles');          my @order = ('auth','quota','tools','requestauthor','adhocroles');
         my %user_text;          my %user_text;
         my ($isadv,$isauthor) =           my ($isadv,$isauthor) = 
             &Apache::lonnet::is_advanced_user($ccuname,$ccdomain);              &Apache::lonnet::is_advanced_user($ccdomain,$ccuname);
         if ((!$isauthor) &&           if ((!$isauthor) && 
             (&Apache::lonnet::allowed('cau',$env{'request.role.domain'}))              ((&Apache::lonnet::allowed('cau',$env{'request.role.domain'})) ||
             && ($env{'request.role.domain'} eq $ccdomain)) {               (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) &&
               ($env{'request.role.domain'} eq $ccdomain)) {
             $user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain);              $user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain);
         }          }
         if (&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) {          if ((&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) || 
               (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) {
             $user_text{'adhocroles'} = &domadhocroles($ccuname,$ccdomain);              $user_text{'adhocroles'} = &domadhocroles($ccuname,$ccdomain);
         }          }
         $user_text{'auth'} =  &user_authentication($ccuname,$ccdomain,$formname);          $user_text{'auth'} =  &user_authentication($ccuname,$ccdomain,$formname);
         if ((&Apache::lonnet::allowed('mpq',$ccdomain)) ||          if ((&Apache::lonnet::allowed('mpq',$ccdomain)) ||
             (&Apache::lonnet::allowed('mut',$ccdomain))) {              (&Apache::lonnet::allowed('mut',$ccdomain)) ||
               (&Apache::lonnet::allowed('udp',$ccdomain))) {
             # Current user has quota modification privileges              # Current user has quota modification privileges
             $user_text{'quota'} = &user_quotas($ccuname,$ccdomain);              $user_text{'quota'} = &user_quotas($ccuname,$ccdomain);
         }          }
Line 1558  ENDNOTOOLSPRIV Line 1607  ENDNOTOOLSPRIV
         if ($gotdiv) {          if ($gotdiv) {
             $r->print('</div><div class="LC_clear_float_footer"></div>');              $r->print('</div><div class="LC_clear_float_footer"></div>');
         }          }
           my $statuses;
           if (($context eq 'domain') && (&Apache::lonnet::allowed('udp',$ccdomain)) &&
               (!&Apache::lonnet::allowed('mau',$ccdomain))) {
               $statuses = ['active'];
           } elsif (($context eq 'course') && ((&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) ||
                    ($env{'request.course.sec'} &&
                     &Apache::lonnet::allowed('vcl',$env{'request.course.id'}.'/'.$env{'request.course.sec'})))) {
               $statuses = ['active'];   
           }
         if ($env{'form.action'} ne 'singlestudent') {          if ($env{'form.action'} ne 'singlestudent') {
             &display_existing_roles($r,$ccuname,$ccdomain,\%inccourses,$context,              &display_existing_roles($r,$ccuname,$ccdomain,\%inccourses,$context,
                                     $roledom,$crstype);                                      $roledom,$crstype,$showcredits,$statuses);
         }          }
     } ## End of new user/old user logic      } ## End of new user/old user logic
     if ($env{'form.action'} eq 'singlestudent') {      if ($env{'form.action'} eq 'singlestudent') {
Line 1571  ENDNOTOOLSPRIV Line 1629  ENDNOTOOLSPRIV
             $btntxt = &mt('Enroll Student');              $btntxt = &mt('Enroll Student');
         }          }
         $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 {      } elsif ($permission->{'cusr'}) {
         $r->print('<div class="LC_left_float">'.          $r->print('<div class="LC_left_float">'.
                   '<fieldset><legend>'.&mt('Add Roles').'</legend>');                    '<fieldset><legend>'.&mt('Add Roles').'</legend>');
         my $addrolesdisplay = 0;          my $addrolesdisplay = 0;
Line 1614  ENDNOTOOLSPRIV Line 1672  ENDNOTOOLSPRIV
 }  }
   
 sub singleuser_breadcrumb {  sub singleuser_breadcrumb {
     my ($crstype) = @_;      my ($crstype,$context,$domain) = @_;
     my %breadcrumb_text;      my %breadcrumb_text;
     if ($env{'form.action'} eq 'singlestudent') {      if ($env{'form.action'} eq 'singlestudent') {
         if ($crstype eq 'Community') {          if ($crstype eq 'Community') {
Line 1622  sub singleuser_breadcrumb { Line 1680  sub singleuser_breadcrumb {
         } else {          } else {
             $breadcrumb_text{'search'} = 'Enroll a student';              $breadcrumb_text{'search'} = 'Enroll a student';
         }          }
         $breadcrumb_text{'userpicked'} = 'Select a user',          $breadcrumb_text{'userpicked'} = 'Select a user';
         $breadcrumb_text{'modify'} = 'Set section/dates',          $breadcrumb_text{'modify'} = 'Set section/dates';
     } elsif ($env{'form.action'} eq 'accesslogs') {      } elsif ($env{'form.action'} eq 'accesslogs') {
         $breadcrumb_text{'search'} = 'View access logs for a user';          $breadcrumb_text{'search'} = 'View access logs for a user';
         $breadcrumb_text{'userpicked'} = 'Select a user',          $breadcrumb_text{'userpicked'} = 'Select a user';
         $breadcrumb_text{'activity'} = 'Activity',          $breadcrumb_text{'activity'} = 'Activity';
       } elsif (($env{'form.action'} eq 'singleuser') && ($context eq 'domain') &&
                (!&Apache::lonnet::allowed('mau',$domain))) {
           $breadcrumb_text{'search'} = "View user's roles";
           $breadcrumb_text{'userpicked'} = 'Select a user';
           $breadcrumb_text{'modify'} = 'User roles';
     } else {      } else {
         $breadcrumb_text{'search'} = 'Create/modify a user';          $breadcrumb_text{'search'} = 'Create/modify a user';
         $breadcrumb_text{'userpicked'} = 'Select a user',          $breadcrumb_text{'userpicked'} = 'Select a user';
         $breadcrumb_text{'modify'} = 'Set user role',          $breadcrumb_text{'modify'} = 'Set user role';
     }      }
     return %breadcrumb_text;      return %breadcrumb_text;
 }  }
Line 1701  sub validation_javascript { Line 1764  sub validation_javascript {
   
 sub display_existing_roles {  sub display_existing_roles {
     my ($r,$ccuname,$ccdomain,$inccourses,$context,$roledom,$crstype,      my ($r,$ccuname,$ccdomain,$inccourses,$context,$roledom,$crstype,
         $showcredits) = @_;          $showcredits,$statuses) = @_;
     my $now=time;      my $now=time;
       my $showall = 1;
       my ($showexpired,$showactive);
       if ((ref($statuses) eq 'ARRAY') && (@{$statuses} > 0)) {
           $showall = 0;
           if (grep(/^expired$/,@{$statuses})) {
               $showexpired = 1;
           }
           if (grep(/^active$/,@{$statuses})) {
               $showactive = 1;
           }
           if ($showexpired && $showactive) {
               $showall = 1;
           }
       }
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                     'rer'  => "Existing Roles",                      'rer'  => "Existing Roles",
                     'rev'  => "Revoke",                      'rev'  => "Revoke",
Line 1766  sub display_existing_roles { Line 1843  sub display_existing_roles {
         $area =~ s/\_\w\w$//;          $area =~ s/\_\w\w$//;
         my ($role_code,$role_end_time,$role_start_time) =          my ($role_code,$role_end_time,$role_start_time) =
             split(/_/,$role);              split(/_/,$role);
           my $active=1;
           $active=0 if (($role_end_time) && ($now>$role_end_time));
           if ($active) {
               next unless($showall || $showactive);
           } else {
               next unless($showall || $showexpired); 
           }
 # Is this a custom role? Get role owner and title.  # Is this a custom role? Get role owner and title.
         my ($croleudom,$croleuname,$croletitle)=          my ($croleudom,$croleuname,$croletitle)=
             ($role_code=~m{^cr/($match_domain)/($match_username)/(\w+)$});              ($role_code=~m{^cr/($match_domain)/($match_username)/(\w+)$});
Line 1774  sub display_existing_roles { Line 1858  sub display_existing_roles {
         my $sortkey=$role_code;          my $sortkey=$role_code;
         my $class='Unknown';          my $class='Unknown';
         my $credits='';          my $credits='';
         if ($area =~ m{^/($match_domain)/($match_courseid)} ) {          my $csec;
           if ($area =~ m{^/($match_domain)/($match_courseid)}) {
             $class='Course';              $class='Course';
             my ($coursedom,$coursedir) = ($1,$2);              my ($coursedom,$coursedir) = ($1,$2);
             my $cid = $1.'_'.$2;              my $cid = $1.'_'.$2;
             # $1.'_'.$2 is the course id (eg. 103_12345abcef103l3).              # $1.'_'.$2 is the course id (eg. 103_12345abcef103l3).
               next if ($envkey =~ m{^/$match_domain/$match_courseid/[A-Za-z0-9]+_gr$});
             my %coursedata=              my %coursedata=
                 &Apache::lonnet::coursedescription($cid);                  &Apache::lonnet::coursedescription($cid);
             if ($coursedir =~ /^$match_community$/) {              if ($coursedir =~ /^$match_community$/) {
Line 1836  sub display_existing_roles { Line 1922  sub display_existing_roles {
                     $thisrole.='.'.$role_code;                      $thisrole.='.'.$role_code;
                 }                  }
             }              }
             if ($area=~m{^/($match_domain)/($match_courseid)/(\w+)}) {              if ($area=~m{^/($match_domain/$match_courseid/(\w+))}) {
                 $carea.='<br />'.&mt('Section: [_1]',$3);                  $csec = $2;
                 $sortkey.="\0$3";                  $carea.='<br />'.&mt('Section: [_1]',$csec);
                   $sortkey.="\0$csec";
                 if (!$allowed) {                  if (!$allowed) {
                     if ($env{'request.course.sec'} eq $3) {                      if ($env{'request.course.sec'} eq $csec) {
                         if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2.'/'.$3)) {                          if (&Apache::lonnet::allowed('c'.$role_code,$1)) {
                             $allowed = 1;                              $allowed = 1;
                         }                          }
                     }                      }
Line 1883  sub display_existing_roles { Line 1970  sub display_existing_roles {
             }              }
         }          }
         my $row = '';          my $row = '';
         $row.= '<td>';          if ($showall) {
         my $active=1;              $row.= '<td>';
         $active=0 if (($role_end_time) && ($now>$role_end_time));              if (($active) && ($allowed)) {
         if (($active) && ($allowed)) {                  $row.= '<input type="checkbox" name="rev:'.$thisrole.'" />';
             $row.= '<input type="checkbox" name="rev:'.$thisrole.'" />';  
         } else {  
             if ($active) {  
                $row.='&nbsp;';  
             } else {              } else {
                $row.=&mt('expired or revoked');                  if ($active) {
                       $row.='&nbsp;';
                   } else {
                       $row.=&mt('expired or revoked');
                   }
             }              }
         }              $row.='</td><td>';
         $row.='</td><td>';              if ($allowed && !$active) {
         if ($allowed && !$active) {                  $row.= '<input type="checkbox" name="ren:'.$thisrole.'" />';
             $row.= '<input type="checkbox" name="ren:'.$thisrole.'" />';              } else {
         } else {                  $row.='&nbsp;';
             $row.='&nbsp;';              }
         }              $row.='</td><td>';
         $row.='</td><td>';              if ($delallowed) {
         if ($delallowed) {                  $row.= '<input type="checkbox" name="del:'.$thisrole.'" />';
             $row.= '<input type="checkbox" name="del:'.$thisrole.'" />';              } else {
         } else {                  $row.='&nbsp;';
             $row.='&nbsp;';              }
               $row.= '</td>'; 
         }          }
         my $plaintext='';          my $plaintext='';
         if (!$croletitle) {          if (!$croletitle) {
Line 1923  sub display_existing_roles { Line 2011  sub display_existing_roles {
                         '<br />',                          '<br />',
                         $croleuname.':'.$croleudom);                          $croleuname.':'.$croleudom);
         }          }
         $row.= '</td><td>'.$plaintext.          $row.= '<td>'.$plaintext.'</td>'.
                '</td><td>'.$area.                 '<td>'.$area.'</td>'.
                '</td><td>'.($role_start_time?&Apache::lonlocal::locallocaltime($role_start_time)                 '<td>'.($role_start_time?&Apache::lonlocal::locallocaltime($role_start_time)
                                             : '&nbsp;' ).                                              : '&nbsp;' ).'</td>'.
                '</td><td>'.($role_end_time  ?&Apache::lonlocal::locallocaltime($role_end_time)                 '<td>'.($role_end_time  ?&Apache::lonlocal::locallocaltime($role_end_time)
                                             : '&nbsp;' )                                              : '&nbsp;' ).'</td>';
                ."</td>";  
         $sortrole{$sortkey}=$envkey;          $sortrole{$sortkey}=$envkey;
         $roletext{$envkey}=$row;          $roletext{$envkey}=$row;
         $roleclass{$envkey}=$class;          $roleclass{$envkey}=$class;
         $rolepriv{$envkey}=$allowed;          if ($allowed) {
               $rolepriv{$envkey}='edit';
           } else {
               if ($context eq 'domain') {
                   if ((&Apache::lonnet::allowed('vur',$ccdomain)) &&
                       ($envkey=~m{^/$ccdomain/})) {
                       $rolepriv{$envkey}='view';
                   }
               } elsif ($context eq 'course') {
                   if ((&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) ||
                       ($env{'request.course.sec'} && ($env{'request.course.sec'} eq $csec) &&
                        &Apache::lonnet::allowed('vcl',$env{'request.course.id'}.'/'.$env{'request.course.sec'}))) {
                       $rolepriv{$envkey}='view';
                   }
               }
           }
     } # end of foreach        (table building loop)      } # end of foreach        (table building loop)
   
     my $rolesdisplay = 0;      my $rolesdisplay = 0;
Line 1966  sub display_existing_roles { Line 2068  sub display_existing_roles {
         } elsif ($env{'request.role'} =~ /^au\./) {          } elsif ($env{'request.role'} =~ /^au\./) {
             $contextrole = &mt('Existing Co-Author Roles in your Authoring Space');              $contextrole = &mt('Existing Co-Author Roles in your Authoring Space');
         } else {          } else {
             $contextrole = &mt('Existing Roles in this Domain');              if ($showall) {
                   $contextrole = &mt('Existing Roles in this Domain');
               } elsif ($showactive) {
                   $contextrole = &mt('Unexpired Roles in this Domain');
               } elsif ($showexpired) {
                   $contextrole = &mt('Expired or Revoked Roles in this Domain');
               }
         }          }
         $r->print('<div class="LC_left_float">'.          $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());
 '<th>'.$lt{'rev'}.'</th><th>'.$lt{'ren'}.'</th><th>'.$lt{'del'}.          if ($showall) {
 '</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}.              $r->print(
 '</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'.  '<th>'.$lt{'rev'}.'</th><th>'.$lt{'ren'}.'</th><th>'.$lt{'del'}.'</th>'
               );
           } elsif ($showexpired) {
               $r->print('<th>'.$lt{'rev'}.'</th>');
           }
           $r->print(
   '<th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}.'</th>'.
   '<th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'.
 &Apache::loncommon::end_data_table_header_row());  &Apache::loncommon::end_data_table_header_row());
         foreach my $type ('Authoring Space','Course','Community','Domain','System','Unknown') {          foreach my $type ('Authoring Space','Course','Community','Domain','System','Unknown') {
             if ($output{$type}) {              if ($output{$type}) {
Line 2112  sub user_authentication { Line 2227  sub user_authentication {
     my ($ccuname,$ccdomain,$formname) = @_;      my ($ccuname,$ccdomain,$formname) = @_;
     my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);      my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
     my $outcome;      my $outcome;
       my %lt=&Apache::lonlocal::texthash(
                      'err'   => "ERROR",
                      'uuas'  => "This user has an unrecognized authentication scheme",
                      'adcs'  => "Please alert a domain coordinator of this situation",
                      'sldb'  => "Please specify login data below",
                      'ld'    => "Login Data"
       );
     # Check for a bad authentication type      # Check for a bad authentication type
     if ($currentauth !~ /^(krb4|krb5|unix|internal|localauth):/) {      if ($currentauth !~ /^(krb4|krb5|unix|internal|localauth):/) {
         # bad authentication scheme          # bad authentication scheme
         my %lt=&Apache::lonlocal::texthash(  
                        'err'   => "ERROR",  
                        'uuas'  => "This user has an unrecognized authentication scheme",  
                        'adcs'  => "Please alert a domain coordinator of this situation",  
                        'sldb'  => "Please specify login data below",  
                        'ld'    => "Login Data"  
         );  
         if (&Apache::lonnet::allowed('mau',$ccdomain)) {          if (&Apache::lonnet::allowed('mau',$ccdomain)) {
             &initialize_authen_forms($ccdomain,$formname);              &initialize_authen_forms($ccdomain,$formname);
   
Line 2147  $lt{'uuas'} ($currentauth). $lt{'adcs'}. Line 2262  $lt{'uuas'} ($currentauth). $lt{'adcs'}.
 ENDBADAUTH  ENDBADAUTH
         }          }
     } else { # Authentication type is valid      } else { # Authentication type is valid
           
         &initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');          &initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');
         my ($authformcurrent,$can_modify,@authform_others) =          my ($authformcurrent,$can_modify,@authform_others) =
             &modify_login_block($ccdomain,$currentauth);              &modify_login_block($ccdomain,$currentauth);
         if (&Apache::lonnet::allowed('mau',$ccdomain)) {          if (&Apache::lonnet::allowed('mau',$ccdomain)) {
             # Current user has login modification privileges              # Current user has login modification privileges
             my %lt=&Apache::lonlocal::texthash (  
                            'ld'    => "Login Data",  
                            'ccld'  => "Change Current Login Data",  
                            'enld'  => "Enter New Login Data"  
                                                );  
             $outcome =              $outcome =
                        '<script type="text/javascript" language="Javascript">'."\n".                         '<script type="text/javascript" language="Javascript">'."\n".
                        '// <![CDATA['."\n".                         '// <![CDATA['."\n".
Line 2167  ENDBADAUTH Line 2278  ENDBADAUTH
                        &Apache::loncommon::start_data_table().                         &Apache::loncommon::start_data_table().
                        &Apache::loncommon::start_data_table_row().                         &Apache::loncommon::start_data_table_row().
                        '<td>'.$authformnop;                         '<td>'.$authformnop;
             if ($can_modify) {              if (($can_modify) && (&Apache::lonnet::allowed('mau',$ccdomain))) {
                 $outcome .= '</td>'."\n".                  $outcome .= '</td>'."\n".
                             &Apache::loncommon::end_data_table_row().                              &Apache::loncommon::end_data_table_row().
                             &Apache::loncommon::start_data_table_row().                              &Apache::loncommon::start_data_table_row().
Line 2177  ENDBADAUTH Line 2288  ENDBADAUTH
                 $outcome .= '&nbsp;('.$authformcurrent.')</td>'.                  $outcome .= '&nbsp;('.$authformcurrent.')</td>'.
                             &Apache::loncommon::end_data_table_row()."\n";                              &Apache::loncommon::end_data_table_row()."\n";
             }              }
             foreach my $item (@authform_others) {               if (&Apache::lonnet::allowed('mau',$ccdomain)) {
                 $outcome .= &Apache::loncommon::start_data_table_row().                  foreach my $item (@authform_others) { 
                             '<td>'.$item.'</td>'.                      $outcome .= &Apache::loncommon::start_data_table_row().
                             &Apache::loncommon::end_data_table_row()."\n";                                  '<td>'.$item.'</td>'.
                                   &Apache::loncommon::end_data_table_row()."\n";
                   }
             }              }
             $outcome .= &Apache::loncommon::end_data_table();              $outcome .= &Apache::loncommon::end_data_table();
         } else {          } else {
             if (&Apache::lonnet::allowed('mau',$env{'request.role.domain'})) {              if (&Apache::lonnet::allowed('udp',$ccdomain)) {
                   # Current user has rights to view domain preferences for user's domain
                   my $result;
                   if ($currentauth =~ /^krb(4|5):([^:]*)$/) {
                       my ($krbver,$krbrealm) = ($1,$2);
                       if ($krbrealm eq '') {
                           $result = &mt('Currently Kerberos authenticated, Version [_1].',$krbver);
                       } else {
                           $result = &mt('Currently Kerberos authenticated with domain [_1] Version [_2].',
                                         $krbver,$krbrealm);
                       }
                   } elsif ($currentauth =~ /^internal:/) {
                       $result = &mt('Currently internally authenticated.');
                   } elsif ($currentauth =~ /^localauth:/) {
                       $result = &mt('Currently using local (institutional) authentication.');
                   } elsif ($currentauth =~ /^unix:/) {
                       $result = &mt('Currently Filesystem Authenticated.');
                   }
                   $outcome = '<h3>'.$lt{'ld'}.'</h3>'.
                              &Apache::loncommon::start_data_table().
                              &Apache::loncommon::start_data_table_row().
                              '<td>'.$result.'</td>'.
                              &Apache::loncommon::end_data_table_row()."\n".
                              &Apache::loncommon::end_data_table();
               } elsif (&Apache::lonnet::allowed('mau',$env{'request.role.domain'})) {
                 my %lt=&Apache::lonlocal::texthash(                  my %lt=&Apache::lonlocal::texthash(
                            'ccld'  => "Change Current Login Data",                             'ccld'  => "Change Current Login Data",
                            'yodo'  => "You do not have privileges to modify the authentication configuration for this user.",                             'yodo'  => "You do not have privileges to modify the authentication configuration for this user.",
Line 2575  sub update_user_data { Line 2712  sub update_user_data {
                   $jsback."\n".                    $jsback."\n".
                   '// ]]>'."\n".                    '// ]]>'."\n".
                   '</script>'."\n";                    '</script>'."\n";
     my %breadcrumb_text = &singleuser_breadcrumb($crstype);      my %breadcrumb_text = &singleuser_breadcrumb($crstype,$context,$env{'form.ccdomain'});
     push (@{$brcrum},      push (@{$brcrum},
              {href => "javascript:backPage(document.userupdate)",               {href => "javascript:backPage(document.userupdate)",
               text => $breadcrumb_text{'search'},                text => $breadcrumb_text{'search'},
Line 4628  sub handler { Line 4765  sub handler {
         }          }
     } elsif (((($env{'form.action'} eq 'singleuser') || ($env{'form.action'}      } elsif (((($env{'form.action'} eq 'singleuser') || ($env{'form.action'}
               eq 'singlestudent')) && ($permission->{'cusr'})) ||                eq 'singlestudent')) && ($permission->{'cusr'})) ||
                (($env{'form.action'} eq 'singleuser') && ($permission->{'view'})) ||
              (($env{'form.action'} eq 'accesslogs') && ($permission->{'activity'}))) {               (($env{'form.action'} eq 'accesslogs') && ($permission->{'activity'}))) {
         my $phase = $env{'form.phase'};          my $phase = $env{'form.phase'};
         my @search = ('srchterm','srchby','srchin','srchtype','srchdomain');          my @search = ('srchterm','srchby','srchin','srchtype','srchdomain');
Line 5035  sub handler { Line 5173  sub handler {
                      '<span class="LC_error">'.&mt('You do not have permission to configure self-enrollment').'</span>');                       '<span class="LC_error">'.&mt('You do not have permission to configure self-enrollment').'</span>');
         }          }
     } elsif ($env{'form.action'} eq 'selfenrollqueue') {      } elsif ($env{'form.action'} eq 'selfenrollqueue') {
         push(@{$brcrum},          if ($permission->{selfenrolladmin}) {
                  {href => '/adm/createuser?action=selfenrollqueue',  
                   text => 'Enrollment requests',  
                   help => 'Course_Self_Enrollment'});  
         $bread_crumbs_component = 'Enrollment requests';  
         if ($env{'form.state'} eq 'done') {  
             push(@{$brcrum},              push(@{$brcrum},
                      {href => '/adm/createuser?action=selfenrollqueue',                       {href => '/adm/createuser?action=selfenrollqueue',
                       text => 'Result',                        text => 'Enrollment requests',
                       help => 'Course_Self_Enrollment'});                        help => 'Course_Self_Enrollment'});
             $bread_crumbs_component = 'Enrollment result';              $bread_crumbs_component = 'Enrollment requests';
         }              if ($env{'form.state'} eq 'done') {
         $args = { bread_crumbs           => $brcrum,                  push(@{$brcrum},
                   bread_crumbs_component => $bread_crumbs_component};                           {href => '/adm/createuser?action=selfenrollqueue',
         $r->print(&header(undef,$args));                            text => 'Result',
         my $cid = $env{'request.course.id'};                            help => 'Course_Self_Enrollment'});
         my $cdom = $env{'course.'.$cid.'.domain'};                  $bread_crumbs_component = 'Enrollment result';
         my $cnum = $env{'course.'.$cid.'.num'};              }
         my $coursedesc = $env{'course.'.$cid.'.description'};              $args = { bread_crumbs           => $brcrum,
         if (!exists($env{'form.state'})) {                        bread_crumbs_component => $bread_crumbs_component};
             $r->print('<h3>'.&mt('Pending enrollment requests').'</h3>'."\n");              $r->print(&header(undef,$args));
             $r->print(&Apache::loncoursequeueadmin::display_queued_requests($context,              my $cid = $env{'request.course.id'};
                                                                        $cdom,$cnum));              my $cdom = $env{'course.'.$cid.'.domain'};
         } elsif ($env{'form.state'} eq 'done') {              my $cnum = $env{'course.'.$cid.'.num'};
             $r->print('<h3>'.&mt('Enrollment request processing').'</h3>'."\n");              my $coursedesc = $env{'course.'.$cid.'.description'};
             $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,              if (!exists($env{'form.state'})) {
                           $cdom,$cnum,$coursedesc));                  $r->print('<h3>'.&mt('Pending enrollment requests').'</h3>'."\n");
                   $r->print(&Apache::loncoursequeueadmin::display_queued_requests($context,
                                                                                   $cdom,$cnum));
               } elsif ($env{'form.state'} eq 'done') {
                   $r->print('<h3>'.&mt('Enrollment request processing').'</h3>'."\n");
                   $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
                                  $cdom,$cnum,$coursedesc));
               }
           } else {
               $r->print(&header(undef,{'no_nav_bar' => 1}).
                        '<span class="LC_error">'.&mt('You do not have permission to manage self-enrollment').'</span>');
         }          }
     } elsif ($env{'form.action'} eq 'changelogs') {      } elsif ($env{'form.action'} eq 'changelogs') {
         &print_userchangelogs_display($r,$context,$permission,$brcrum);          if ($permission->{cusr} || $permission->{view}) {
               &print_userchangelogs_display($r,$context,$permission,$brcrum);
           } else {
               $r->print(&header(undef,{'no_nav_bar' => 1}).
                        '<span class="LC_error">'.&mt('You do not have permission to view change logs').'</span>');
           }
     } else {      } else {
         $bread_crumbs_component = 'User Management';          $bread_crumbs_component = 'User Management';
         $args = { bread_crumbs           => $brcrum,          $args = { bread_crumbs           => $brcrum,
Line 5316  sub print_main_menu { Line 5464  sub print_main_menu {
                             listusers  => 'Show and manage users in this community.',                              listusers  => 'Show and manage users in this community.',
                            },                             },
                 );                  );
     if ($linkcontext eq 'domain') {
         unless ($permission->{'cusr'}) {
             $links{'domain'}{'singleuser'} = 'View a User'; 
             $linktitles{'domain'}{'singleuser'} = 'View information about a user in the domain';
             
         }
     } elsif ($linkcontext eq 'course') {
         unless ($permission->{'cusr'}) {
             $links{'course'}{'singleuser'} = 'View a Course User';
             $linktitles{'course'}{'singleuser'} = 'View information about a user in this course';
             $links{'course'}{'listusers'} = 'List Course Users';
             $linktitles{'course'}{'listusers'} = 'Show information about users in this course';
         }
     } elsif ($linkcontext eq 'community') {
         unless ($permission->{'cusr'}) {
             $links{'community'}{'singleuser'} = 'View a Community User';
             $linktitles{'community'}{'singleuser'} = 'View information about a user in this community';
             $links{'community'}{'listusers'} = 'List Community Users';
             $linktitles{'community'}{'listusers'} = 'Show information about users in this community';
         }
     }
   my @menu = ( {categorytitle => 'Single Users',     my @menu = ( {categorytitle => 'Single Users', 
          items =>           items =>
          [           [
Line 5324  sub print_main_menu { Line 5493  sub print_main_menu {
              icon => 'edit-redo.png',               icon => 'edit-redo.png',
              #help => 'Course_Change_Privileges',               #help => 'Course_Change_Privileges',
              url => '/adm/createuser?action=singleuser',               url => '/adm/createuser?action=singleuser',
              permission => $permission->{'cusr'},               permission => ($permission->{'view'} || $permission->{'cusr'}),
              linktitle => $linktitles{$linkcontext}{'singleuser'},               linktitle => $linktitles{$linkcontext}{'singleuser'},
             },              },
          ]},           ]},
Line 5360  sub print_main_menu { Line 5529  sub print_main_menu {
             {              {
              linktext => 'User Access Log',               linktext => 'User Access Log',
              icon => 'document-properties.png',               icon => 'document-properties.png',
              #help => 'User_Access_Logs',               #help => 'Domain_User_Access_Logs',
              url => '/adm/createuser?action=accesslogs',               url => '/adm/createuser?action=accesslogs',
              permission => $permission->{'activity'},               permission => $permission->{'activity'},
              linktitle => 'View user access log.',               linktitle => 'View user access log.',
Line 5397  sub print_main_menu { Line 5566  sub print_main_menu {
              icon => 'document-properties.png',               icon => 'document-properties.png',
              #help => 'Course_User_Logs',               #help => 'Course_User_Logs',
              url => '/adm/createuser?action=changelogs',               url => '/adm/createuser?action=changelogs',
              permission => $permission->{'cusr'},               permission => ($permission->{'cusr'} || $permission->{'view'}),
              linktitle => 'View change log.',               linktitle => 'View change log.',
             },              },
         );          );
Line 5477  sub print_main_menu { Line 5646  sub print_main_menu {
              icon => 'document-properties.png',               icon => 'document-properties.png',
              #help => 'Course_User_Logs',               #help => 'Course_User_Logs',
              url => '/adm/createuser?action=changelogs',               url => '/adm/createuser?action=changelogs',
              permission => $permission->{'cusr'},               permission => ($permission->{'view'} || $permission->{'cusr'}),
              linktitle => 'View change log.',               linktitle => 'View change log.',
             },              },
         );          );
Line 5502  sub print_main_menu { Line 5671  sub print_main_menu {
                      icon => 'roles.png',                       icon => 'roles.png',
                      #help => 'Course_Automated_Enrollment',                       #help => 'Course_Automated_Enrollment',
                      permission => (&Apache::lonnet::auto_run($cnum,$cdom)                       permission => (&Apache::lonnet::auto_run($cnum,$cdom)
                                          && $permission->{'cusr'}),                                           && (($permission->{'cusr'}) ||
                                                ($permission->{'view'}))),
                      url  => '/adm/populate',                       url  => '/adm/populate',
                      linktitle => 'Automated enrollment manager.',                       linktitle => 'Automated enrollment manager.',
                     }                      }
Line 5551  sub restore_prev_selections { Line 5721  sub restore_prev_selections {
 }  }
   
 sub print_selfenroll_menu {  sub print_selfenroll_menu {
     my ($r,$context,$cid,$cdom,$cnum,$currsettings,$additional) = @_;      my ($r,$context,$cid,$cdom,$cnum,$currsettings,$additional,$readonly) = @_;
     my $crstype = &Apache::loncommon::course_type();      my $crstype = &Apache::loncommon::course_type();
     my $formname = 'selfenroll';      my $formname = 'selfenroll';
     my $nolink = 1;      my $nolink = 1;
Line 5564  sub print_selfenroll_menu { Line 5734  sub print_selfenroll_menu {
         butn => 'but no user types have been checked.',          butn => 'but no user types have been checked.',
         wilf => "Please uncheck 'activate' or check at least one type.",          wilf => "Please uncheck 'activate' or check at least one type.",
     );      );
       my $disabled;
       if ($readonly) {
          $disabled = ' disabled="disabled"';
       }
     &js_escape(\%alerts);      &js_escape(\%alerts);
     my $selfenroll_js = <<"ENDSCRIPT";      my $selfenroll_js = <<"ENDSCRIPT";
 function update_types(caller,num) {  function update_types(caller,num) {
Line 5879  ENDSCRIPT Line 6053  ENDSCRIPT
                     $output .= ' checked="checked" ';                       $output .= ' checked="checked" '; 
                 }                  }
                 $output .= 'onchange="javascript:update_types('.                  $output .= 'onchange="javascript:update_types('.
                            "'selfenroll_all'".');" />'.&mt('Yes').'</label>'.                             "'selfenroll_all'".');"'.$disabled.' />'.&mt('Yes').'</label>'.
                            '&nbsp;&nbsp;<input type="radio" name="selfenroll_all" value="0" ';                             '&nbsp;&nbsp;<input type="radio" name="selfenroll_all" value="0" ';
                 if ($curr_types ne '*') {                  if ($curr_types ne '*') {
                     $output .= ' checked="checked" ';                      $output .= ' checked="checked" ';
                 }                  }
                 $output .= ' onchange="javascript:update_types('.                  $output .= ' onchange="javascript:update_types('.
                            "'selfenroll_all'".');"/>'.&mt('No').'</label></td>'.                             "'selfenroll_all'".');"'.$disabled.' />'.&mt('No').'</label></td>'.
                            &Apache::loncommon::end_data_table_row().                             &Apache::loncommon::end_data_table_row().
                            &Apache::loncommon::end_data_table().                             &Apache::loncommon::end_data_table().
                            &mt('Or').'<br />'.                             &mt('Or').'<br />'.
Line 5907  ENDSCRIPT Line 6081  ENDSCRIPT
                                        .'</b><input type="hidden" name="selfenroll_dom_'.$num                                         .'</b><input type="hidden" name="selfenroll_dom_'.$num
                                        .'" value="'.$currdom.'" /></span><br />'                                         .'" value="'.$currdom.'" /></span><br />'
                                        .'<span class="LC_nobreak"><label><input type="checkbox" '                                         .'<span class="LC_nobreak"><label><input type="checkbox" '
                                        .'name="selfenroll_delete" value="'.$num.'" onchange="javascript:update_types('."'selfenroll_delete','$num'".');" />'                                         .'name="selfenroll_delete" value="'.$num.'" onchange="javascript:update_types('."'selfenroll_delete','$num'".');"'.$disabled.' />'
                                        .&mt('Delete').'</label></span></td>';                                         .&mt('Delete').'</label></span></td>';
                             $output .= '<td valign="top">&nbsp;&nbsp;'.&mt('User types:').'<br />'                              $output .= '<td valign="top">&nbsp;&nbsp;'.&mt('User types:').'<br />'
                                        .&selfenroll_inst_types($num,$currdom,\@currinsttypes).'</td>'                                         .&selfenroll_inst_types($num,$currdom,\@currinsttypes,$readonly).'</td>'
                                        .&Apache::loncommon::end_data_table_row();                                         .&Apache::loncommon::end_data_table_row();
                             $num ++;                              $num ++;
                         }                          }
Line 5925  ENDSCRIPT Line 6099  ENDSCRIPT
                 $output .= &Apache::loncommon::start_data_table_row()                  $output .= &Apache::loncommon::start_data_table_row()
                            .'<td colspan="2"><span class="LC_nobreak">'.$add_domtitle.'</span><br />'                             .'<td colspan="2"><span class="LC_nobreak">'.$add_domtitle.'</span><br />'
                            .&Apache::loncommon::select_dom_form('','selfenroll_newdom',                             .&Apache::loncommon::select_dom_form('','selfenroll_newdom',
                                                                 $includeempty,$showdomdesc)                                                                  $includeempty,$showdomdesc,'','','',$readonly)
                            .'<input type="hidden" name="selfenroll_types_total" value="'.$num.'" />'                             .'<input type="hidden" name="selfenroll_types_total" value="'.$num.'" />'
                            .'</td>'.&Apache::loncommon::end_data_table_row()                             .'</td>'.&Apache::loncommon::end_data_table_row()
                            .&Apache::loncommon::end_data_table();                             .&Apache::loncommon::end_data_table();
Line 5946  ENDSCRIPT Line 6120  ENDSCRIPT
                 }                  }
                 if ($registered) {                  if ($registered) {
                     $regon = ' checked="checked" ';                      $regon = ' checked="checked" ';
                     $regoff = ' ';                      $regoff = '';
                 } else {                  } else {
                     $regon = ' ';                      $regon = '';
                     $regoff = ' checked="checked" ';                      $regoff = ' checked="checked" ';
                 }                  }
                 $output .= '<label>'.                  $output .= '<label>'.
                            '<input type="radio" name="selfenroll_registered" value="1"'.$regon.'/>'.                             '<input type="radio" name="selfenroll_registered" value="1"'.$regon.$disabled.' />'.
                            &mt('Yes').'</label>&nbsp;&nbsp;<label>'.                             &mt('Yes').'</label>&nbsp;&nbsp;<label>'.
                            '<input type="radio" name="selfenroll_registered" value="0"'.$regoff.'/>'.                             '<input type="radio" name="selfenroll_registered" value="0"'.$regoff.$disabled.' />'.
                            &mt('No').'</label>';                             &mt('No').'</label>';
             } elsif ($item eq 'enroll_dates') {              } elsif ($item eq 'enroll_dates') {
                 my ($starttime,$endtime);                  my ($starttime,$endtime);
Line 5976  ENDSCRIPT Line 6150  ENDSCRIPT
                 }                  }
                 my $startform =                  my $startform =
                     &Apache::lonhtmlcommon::date_setter($formname,'selfenroll_start_date',$starttime,                      &Apache::lonhtmlcommon::date_setter($formname,'selfenroll_start_date',$starttime,
                                       undef,undef,undef,undef,undef,undef,undef,$nolink);                                        $disabled,undef,undef,undef,undef,undef,undef,$nolink);
                 my $endform =                  my $endform =
                     &Apache::lonhtmlcommon::date_setter($formname,'selfenroll_end_date',$endtime,                      &Apache::lonhtmlcommon::date_setter($formname,'selfenroll_end_date',$endtime,
                                       undef,undef,undef,undef,undef,undef,undef,$nolink);                                        $disabled,undef,undef,undef,undef,undef,undef,$nolink);
                 $output .= &selfenroll_date_forms($startform,$endform);                  $output .= &selfenroll_date_forms($startform,$endform);
             } elsif ($item eq 'access_dates') {              } elsif ($item eq 'access_dates') {
                 my ($starttime,$endtime);                  my ($starttime,$endtime);
Line 6001  ENDSCRIPT Line 6175  ENDSCRIPT
                 }                  }
                 my $startform =                  my $startform =
                     &Apache::lonhtmlcommon::date_setter($formname,'selfenroll_start_access',$starttime,                      &Apache::lonhtmlcommon::date_setter($formname,'selfenroll_start_access',$starttime,
                                       undef,undef,undef,undef,undef,undef,undef,$nolink);                                        $disabled,undef,undef,undef,undef,undef,undef,$nolink);
                 my $endform =                  my $endform =
                     &Apache::lonhtmlcommon::date_setter($formname,'selfenroll_end_access',$endtime,                      &Apache::lonhtmlcommon::date_setter($formname,'selfenroll_end_access',$endtime,
                                       undef,undef,undef,undef,undef,undef,undef,$nolink);                                        $disabled,undef,undef,undef,undef,undef,undef,$nolink);
                 $output .= &selfenroll_date_forms($startform,$endform);                  $output .= &selfenroll_date_forms($startform,$endform);
             } elsif ($item eq 'section') {              } elsif ($item eq 'section') {
                 my $currsec;                  my $currsec;
Line 6028  ENDSCRIPT Line 6202  ENDSCRIPT
                     next;                      next;
                 }                  }
                 my $sections_select =                   my $sections_select = 
                     &Apache::lonuserutils::course_sections(\%sections_count,'st',$currsec);                      &Apache::lonuserutils::course_sections(\%sections_count,'st',$currsec,$disabled);
                 $output .= '<table class="LC_createuser">'."\n".                  $output .= '<table class="LC_createuser">'."\n".
                            '<tr class="LC_section_row">'."\n".                             '<tr class="LC_section_row">'."\n".
                            '<td align="center">'.&mt('Existing sections')."\n".                             '<td align="center">'.&mt('Existing sections')."\n".
                            '<br />'.$sections_select.'</td><td align="center">'.                             '<br />'.$sections_select.'</td><td align="center">'.
                            &mt('New section').'<br />'."\n".                             &mt('New section').'<br />'."\n".
                            '<input type="text" name="newsec" size="15" value="'.$newsecval.'" />'."\n".                             '<input type="text" name="newsec" size="15" value="'.$newsecval.'"'.$disabled.' />'."\n".
                            '<input type="hidden" name="sections" value="" />'."\n".                             '<input type="hidden" name="sections" value="" />'."\n".
                            '</td></tr></table>'."\n";                             '</td></tr></table>'."\n";
             } elsif ($item eq 'approval') {              } elsif ($item eq 'approval') {
Line 6056  ENDSCRIPT Line 6230  ENDSCRIPT
                 for my $i (0..2) {                  for my $i (0..2) {
                     $output .= '<label>'.                      $output .= '<label>'.
                                '<input type="radio" name="selfenroll_approval" value="'.$i.'"'.                                 '<input type="radio" name="selfenroll_approval" value="'.$i.'"'.
                                $appchecked{$i}.' onclick="toggleNotify();" />'.$selfdescs{'approval'}{$i}.                                 $appchecked{$i}.' onclick="toggleNotify();"'.$disabled.' />'.
                                '</label>'.('&nbsp;'x2);                                 $selfdescs{'approval'}{$i}.'</label>'.('&nbsp;'x2);
                 }                  }
                 my %advhash = &Apache::lonnet::get_course_adv_roles($cid,1);                  my %advhash = &Apache::lonnet::get_course_adv_roles($cid,1);
                 my (@ccs,%notified);                  my (@ccs,%notified);
Line 6098  ENDSCRIPT Line 6272  ENDSCRIPT
                                        &Apache::loncommon::start_data_table_row()                                         &Apache::loncommon::start_data_table_row()
                         }                          }
                         $output .= '<td><span class="LC_nobreak"><label>'.                          $output .= '<td><span class="LC_nobreak"><label>'.
                                    '<input type="checkbox" name="selfenroll_notify"'.$notifyon.' value="'.$cc.'" />'.                                     '<input type="checkbox" name="selfenroll_notify"'.$notifyon.' value="'.$cc.'"'.$disabled.' />'.
                                    &Apache::loncommon::plainname($ccuname,$ccudom).                                     &Apache::loncommon::plainname($ccuname,$ccudom).
                                    '</label></span></td>';                                     '</label></span></td>';
                         $count ++;                          $count ++;
Line 6148  ENDSCRIPT Line 6322  ENDSCRIPT
                     $nolimit = ' checked="checked" ';                      $nolimit = ' checked="checked" ';
                 }                  }
                 $output .= '<table><tr><td><label>'.                  $output .= '<table><tr><td><label>'.
                            '<input type="radio" name="selfenroll_limit" value="none"'.$nolimit.'/>'.                             '<input type="radio" name="selfenroll_limit" value="none"'.$nolimit.$disabled.'/>'.
                            &mt('No limit').'</label></td><td><label>'.                             &mt('No limit').'</label></td><td><label>'.
                            '<input type="radio" name="selfenroll_limit" value="allstudents"'.$crslimit.'/>'.                             '<input type="radio" name="selfenroll_limit" value="allstudents"'.$crslimit.$disabled.'/>'.
                            &mt('Limit by total students').'</label></td><td><label>'.                             &mt('Limit by total students').'</label></td><td><label>'.
                            '<input type="radio" name="selfenroll_limit" value="selfenrolled"'.$selflimit.'/>'.                             '<input type="radio" name="selfenroll_limit" value="selfenrolled"'.$selflimit.$disabled.'/>'.
                            &mt('Limit by total self-enrolled students').                             &mt('Limit by total self-enrolled students').
                            '</td></tr><tr>'.                             '</td></tr><tr>'.
                            '<td>&nbsp;</td><td colspan="2"><span class="LC_nobreak">'.                             '<td>&nbsp;</td><td colspan="2"><span class="LC_nobreak">'.
                            ('&nbsp;'x3).&mt('Maximum number allowed: ').                             ('&nbsp;'x3).&mt('Maximum number allowed: ').
                            '<input type="text" name="selfenroll_cap" size = "5" value="'.$currcap.'" /></td></tr></table>';                             '<input type="text" name="selfenroll_cap" size = "5" value="'.$currcap.'"'.$disabled.' /></td></tr></table>';
             }              }
             $output .= &Apache::lonhtmlcommon::row_closure(1);              $output .= &Apache::lonhtmlcommon::row_closure(1);
         }          }
     }      }
     $output .= &Apache::lonhtmlcommon::end_pick_box().      $output .= &Apache::lonhtmlcommon::end_pick_box().'<br />';
                '<br /><input type="button" name="selfenrollconf" value="'      unless ($readonly) {
                .&mt('Save').'" onclick="validate_types(this.form);" />'          $output .= '<input type="button" name="selfenrollconf" value="'
                .'<input type="hidden" name="action" value="selfenroll" />'                     .&mt('Save').'" onclick="validate_types(this.form);" />';
                .'<input type="hidden" name="state" value="done" />'."\n".      }
                $additional.'</form>';      $output .= '<input type="hidden" name="action" value="selfenroll" />'
                 .'<input type="hidden" name="state" value="done" />'."\n"
                 .$additional.'</form>';
     $r->print($output);      $r->print($output);
     return;      return;
 }  }
Line 6350  sub new_selfenroll_dom_row { Line 6526  sub new_selfenroll_dom_row {
 }  }
   
 sub selfenroll_inst_types {  sub selfenroll_inst_types {
     my ($num,$currdom,$currinsttypes) = @_;      my ($num,$currdom,$currinsttypes,$readonly) = @_;
     my $output;      my $output;
     my $numinrow = 4;      my $numinrow = 4;
     my $count = 0;      my $count = 0;
     my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($currdom);      my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($currdom);
     my $othervalue = 'any';      my $othervalue = 'any';
       my $disabled;
       if ($readonly) {
           $disabled = ' disabled="disabled"';
       }
     if ((ref($types) eq 'ARRAY') && (ref($usertypes) eq 'HASH')) {      if ((ref($types) eq 'ARRAY') && (ref($usertypes) eq 'HASH')) {
         if (keys(%{$usertypes}) > 0) {          if (keys(%{$usertypes}) > 0) {
             $othervalue = 'other';              $othervalue = 'other';
Line 6380  sub selfenroll_inst_types { Line 6560  sub selfenroll_inst_types {
                         $output .= 'checked="checked"';                          $output .= 'checked="checked"';
                     }                      }
                 }                  }
                 $output .= ' name="selfenroll_types_'.$num.'" />'.$usertypes->{$type}.'</label></span></td>';                  $output .= ' name="selfenroll_types_'.$num.'"'.$disabled.' />'.$usertypes->{$type}.'</label></span></td>';
             }              }
             $count ++;              $count ++;
         }          }
Line 6403  sub selfenroll_inst_types { Line 6583  sub selfenroll_inst_types {
         } else {          } else {
             $output .= ' checked="checked"';              $output .= ' checked="checked"';
         }          }
         $output .= ' name="selfenroll_types_'.$num.'" />'.$othertitle.'</label></span></td></tr></table>';          $output .= ' name="selfenroll_types_'.$num.'"'.$disabled.' />'.$othertitle.'</label></span></td></tr></table>';
     }      }
     return $output;      return $output;
 }  }
Line 6426  sub selfenroll_date_forms { Line 6606  sub selfenroll_date_forms {
 sub print_userchangelogs_display {  sub print_userchangelogs_display {
     my ($r,$context,$permission,$brcrum) = @_;      my ($r,$context,$permission,$brcrum) = @_;
     my $formname = 'rolelog';      my $formname = 'rolelog';
     my ($username,$domain,$crstype,%roleslog);      my ($username,$domain,$crstype,$viewablesec,%roleslog);
     if ($context eq 'domain') {      if ($context eq 'domain') {
         $domain = $env{'request.role.domain'};          $domain = $env{'request.role.domain'};
         %roleslog=&Apache::lonnet::dump_dom('nohist_rolelog',$domain);          %roleslog=&Apache::lonnet::dump_dom('nohist_rolelog',$domain);
Line 6435  sub print_userchangelogs_display { Line 6615  sub print_userchangelogs_display {
             $domain = $env{'course.'.$env{'request.course.id'}.'.domain'};              $domain = $env{'course.'.$env{'request.course.id'}.'.domain'};
             $username = $env{'course.'.$env{'request.course.id'}.'.num'};              $username = $env{'course.'.$env{'request.course.id'}.'.num'};
             $crstype = &Apache::loncommon::course_type();              $crstype = &Apache::loncommon::course_type();
               $viewablesec = &Apache::lonuserutils::viewable_section($permission);
             my %saveable_parameters = ('show' => 'scalar',);              my %saveable_parameters = ('show' => 'scalar',);
             &Apache::loncommon::store_course_settings('roles_log',              &Apache::loncommon::store_course_settings('roles_log',
                                                       \%saveable_parameters);                                                        \%saveable_parameters);
Line 6566  ENDSCRIPT Line 6747  ENDSCRIPT
                 next if ($roleslog{$id}{'logentry'}{'context'} ne $curr{'chgcontext'});                  next if ($roleslog{$id}{'logentry'}{'context'} ne $curr{'chgcontext'});
             }              }
         }          }
           if (($context eq 'course') && ($viewablesec ne '')) {
               next if ($roleslog{$id}{'logentry'}{'section'} ne $viewablesec); 
           }
         $count ++;          $count ++;
         next if ($count < $minshown);          next if ($count < $minshown);
         unless ($showntableheader) {          unless ($showntableheader) {
Line 6653  sub print_useraccesslogs_display { Line 6837  sub print_useraccesslogs_display {
     my $form = 'document.accesslog';      my $form = 'document.accesslog';
   
 # set breadcrumbs  # set breadcrumbs
     my %breadcrumb_text = &singleuser_breadcrumb();      my %breadcrumb_text = &singleuser_breadcrumb('','domain',$udom);
     push (@{$brcrum},      push (@{$brcrum},
         {href => "javascript:backPage($form)",          {href => "javascript:backPage($form)",
          text => $breadcrumb_text{'search'}});           text => $breadcrumb_text{'search'}});
Line 6673  sub print_useraccesslogs_display { Line 6857  sub print_useraccesslogs_display {
     push(@{$brcrum},      push(@{$brcrum},
              {href => '/adm/createuser?action=accesslogs',               {href => '/adm/createuser?action=accesslogs',
               text => 'User access logs',                text => 'User access logs',
               help => 'User_Access_Logs'});                help => 'Domain_User_Access_Logs'});
     my $bread_crumbs_component = 'User Access Logs';      my $bread_crumbs_component = 'User Access Logs';
     my $args = { bread_crumbs           => $brcrum,      my $args = { bread_crumbs           => $brcrum,
                  bread_crumbs_component => 'User Management'};                   bread_crumbs_component => 'User Management'};
       if ($env{'form.popup'}) {
           $args->{'no_nav_bar'} = 1;
       }
   
 # set javascript  # set javascript
     my ($jsback,$elements) = &crumb_utilities();      my ($jsback,$elements) = &crumb_utilities();
Line 6805  ENDSCRIPT Line 6992  ENDSCRIPT
                 $r->rflush();                  $r->rflush();
                 $showntableheader = 1;                  $showntableheader = 1;
             }              }
             my ($shown,$extra,);              my ($shown,$extra);
             my ($event,$data) = split(/\s+/,&unescape($event));              my ($event,$data) = split(/\s+/,&unescape($event));
             if ($event eq 'Role') {              if ($event eq 'Role') {
                 my ($rolecode,$extent) = split(/\./,$data,2);                  my ($rolecode,$extent) = split(/\./,$data,2);
                 next if ($extent eq '');                  next if ($extent eq '');
                 my ($crstype,$desc,$info);                  my ($crstype,$desc,$info);
                 if ($extent =~ m{^/($match_domain)/($match_courseid)$}) {                  if ($extent =~ m{^/($match_domain)/($match_courseid)(?:/(\w+)|)$}) {
                     my ($cdom,$cnum) = ($1,$2);                      my ($cdom,$cnum,$sec) = ($1,$2,$3);
                     my $cid = $cdom.'_'.$cnum;                      my $cid = $cdom.'_'.$cnum;
                     if (exists($courses{$cid})) {                      if (exists($courses{$cid})) {
                         $crstype = $courses{$cid}{'type'};                          $crstype = $courses{$cid}{'type'};
Line 6831  ENDSCRIPT Line 7018  ENDSCRIPT
                         }                          }
                     }                      }
                     $extra = &mt($crstype).': <a href="/public/'.$cdom.'/'.$cnum.'/syllabus">'.$desc.'</a>';                      $extra = &mt($crstype).': <a href="/public/'.$cdom.'/'.$cnum.'/syllabus">'.$desc.'</a>';
                       if ($sec ne '') {
                          $extra .= ' ('.&mt('Section: [_1]',$sec).')';
                       }
                 } elsif ($extent =~ m{^/($match_domain)/($match_username|$)}) {                  } elsif ($extent =~ m{^/($match_domain)/($match_username|$)}) {
                     my ($dom,$name) = ($1,$2);                      my ($dom,$name) = ($1,$2);
                     if ($rolecode eq 'au') {                      if ($rolecode eq 'au') {
Line 6879  ENDSCRIPT Line 7069  ENDSCRIPT
                  .'</p>');                   .'</p>');
     }      }
   
       if ($env{'form.popup'} == 1) {
           $r->print('<input type="hidden" name="popup" value="1" />'."\n");
       }
   
     # Form Footer      # Form Footer
     $r->print(      $r->print(
         '<input type="hidden" name="currstate" value="" />'          '<input type="hidden" name="currstate" value="" />'
Line 7598  sub build_search_response { Line 7792  sub build_search_response {
                                 .&mt("Click 'Search'")                                  .&mt("Click 'Search'")
                                 .'</li></ul><br />';                                  .'</li></ul><br />';
                 } else {                  } else {
                     my $helplink = ' href="javascript:helpMenu('."'display'".')"';                      unless (($context eq 'domain') && ($env{'form.action'} eq 'singleuser')) {
                     $response .= '<br /><br />';                          my $helplink = ' href="javascript:helpMenu('."'display'".')"';
                     if ($context eq 'requestcrs') {                          $response .= '<br /><br />';
                         $response .= &mt("You are not authorized to define new users in the new course's domain - [_1].",$targetdom);                          if ($context eq 'requestcrs') {
                     } else {                              $response .= &mt("You are not authorized to define new users in the new course's domain - [_1].",$targetdom);
                         $response .= &mt("You are not authorized to create new users in your current role's domain - [_1].",$targetdom);                          } else {
                               $response .= &mt("You are not authorized to create new users in your current role's domain - [_1].",$targetdom);
                           }
                           $response .= '<br />'
                                        .&mt('Please contact the [_1]helpdesk[_2] if you need to create a new user.'
                                           ,' <a'.$helplink.'>'
                                           ,'</a>')
                                        .'<br />';
                       
                     }                      }
                     $response .= '<br />'  
                                  .&mt('Please contact the [_1]helpdesk[_2] if you need to create a new user.'  
                                     ,' <a'.$helplink.'>'  
                                     ,'</a>')  
                                  .'<br />';  
                 }                  }
             }              }
         }          }

Removed from v.1.417  
changed lines
  Added in v.1.425


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