Diff for /loncom/interface/loncreateuser.pm between versions 1.312 and 1.320

version 1.312, 2009/09/05 01:13:02 version 1.320, 2009/10/30 18:32:25
Line 261  sub build_tools_display { Line 261  sub build_tools_display {
         }          }
         if ($context eq 'requestcourses') {          if ($context eq 'requestcourses') {
             if ($userenv{$context.'.'.$item} eq '') {              if ($userenv{$context.'.'.$item} eq '') {
                 $custom_access = &mt('Currently from default setting.');                   $custom_access = &mt('Currently from default setting.');
             } else {              } else {
                 $custom_access = &mt('Currently from custom setting.');                  $custom_access = &mt('Currently from custom setting.');
             }              }
         } else {          } else {
             if ($userenv{$context.'.'.$item} eq '') {              if ($userenv{$context.'.'.$item} eq '') {
                 $custom_access =                   $custom_access =
                     &mt('Availability determined currently from default setting.');                      &mt('Availability determined currently from default setting.');
                 if (!$curr_access) {                  if (!$curr_access) {
                     $tool_off = 'checked="checked" ';                      $tool_off = 'checked="checked" ';
                     $tool_on = '';                      $tool_on = '';
                 }                  }
             } else {              } else {
                 $custom_access =                   $custom_access =
                     &mt('Availability determined currently from custom setting.');                      &mt('Availability determined currently from custom setting.');
                 if ($userenv{$context.'.'.$item} == 0) {                  if ($userenv{$context.'.'.$item} == 0) {
                     $tool_off = 'checked="checked" ';                      $tool_off = 'checked="checked" ';
Line 294  sub build_tools_display { Line 294  sub build_tools_display {
             }              }
             if ($curroption =~ /^autolimit=(\d*)$/) {              if ($curroption =~ /^autolimit=(\d*)$/) {
                 $currlimit = $1;                  $currlimit = $1;
                 $currdisp = &mt('Yes, up to [quant,_1,request]/user',$currlimit);                   if ($currlimit eq '') {
                       $currdisp = &mt('Yes, automatic creation');
                   } else {
                       $currdisp = &mt('Yes, up to [quant,_1,request]/user',$currlimit);
                   }
             } else {              } else {
                 $currdisp = $reqdisplay{$curroption};                  $currdisp = $reqdisplay{$curroption};
             }              }
Line 328  sub build_tools_display { Line 332  sub build_tools_display {
                 if ($option eq 'autolimit') {                  if ($option eq 'autolimit') {
                     $custdisp .= '<input type="text" name="crsreq_'.                      $custdisp .= '<input type="text" name="crsreq_'.
                                  $item.'_limit" size="1" '.                                   $item.'_limit" size="1" '.
                                  'value="'.$currlimit.'" />';                                   'value="'.$currlimit.'" /></span><br />'.
                                    $reqtitles{'unlimited'};
                    } else {
                        $custdisp .= '</span>';
                  }                   }
                  $custdisp .= '</span></td></tr>';                   $custdisp .= '</td></tr>';
             }              }
             $custdisp .= '</table>';              $custdisp .= '</table>';
             $custradio = '</span></td><td>'.&mt('Custom setting').'<br />'.$custdisp;              $custradio = '</span></td><td>'.&mt('Custom setting').'<br />'.$custdisp;
         } else {          } else {
             $currdisp = ($curr_access?&mt('Yes'):&mt('No'));              $currdisp = ($curr_access?&mt('Yes'):&mt('No'));
             $custdisp = '<span class="LC_nobreak"><label>'.              $custdisp = '<span class="LC_nobreak"><label>'.
                         '<input type="radio" name="'.$context.'_'.$item.'"'.                           '<input type="radio" name="'.$context.'_'.$item.'"'.
                         ' value="1"'. $tool_on.'/>'.&mt('On').'</label>&nbsp;<label>'.                          ' value="1"'. $tool_on.'/>'.&mt('On').'</label>&nbsp;<label>'.
                         '<input type="radio" name="'.$context.'_'.$item.'" value="0" '.                          '<input type="radio" name="'.$context.'_'.$item.'" value="0" '.
                         $tool_off.'/>'.&mt('Off').'</label></span>';                          $tool_off.'/>'.&mt('Off').'</label></span>';
Line 380  sub coursereq_externaluser { Line 387  sub coursereq_externaluser {
         my ($curroption,$currlimit,$tooloff);          my ($curroption,$currlimit,$tooloff);
         if ($userenv{'reqcrsotherdom.'.$item} ne '') {          if ($userenv{'reqcrsotherdom.'.$item} ne '') {
             my @curr = split(',',$userenv{'reqcrsotherdom.'.$item});              my @curr = split(',',$userenv{'reqcrsotherdom.'.$item});
             if (grep(/^\Q$cdom\E:($optregex)=?(\d*)$/,@curr)) {              foreach my $req (@curr) {
                 $curroption = $1;                  if ($req =~ /^\Q$cdom\E\:($optregex)=?(\d*)$/) {
                 $currlimit = $2;                      $curroption = $1;
                 if (!$curroption) {                      $currlimit = $2;
                     $curroption = 'norequest';                      last;
                 }                  }
             }              }
               if (!$curroption) {
                   $curroption = 'norequest';
                   $tooloff = ' checked="checked"';
               }
         } else {          } else {
             $curroption = 'norequest';              $curroption = 'norequest';
             $tooloff = ' checked="checked"';              $tooloff = ' checked="checked"';
         }          }
         $output.= &Apache::loncommon::start_data_table_row()."\n".          $output.= &Apache::loncommon::start_data_table_row()."\n".
                   '  <td><span class="LC_nobreak">'.$lt{$item}.': '.                    '  <td><span class="LC_nobreak">'.$lt{$item}.': </span></td><td>'.
                     '<table><tr><td valign="top">'."\n".
                   '<label><input type="radio" name="reqcrsotherdom_'.$item.                    '<label><input type="radio" name="reqcrsotherdom_'.$item.
                   '" value="0"'.$tooloff.' />'.$reqtitles{'norequest'}.                    '" value=""'.$tooloff.' />'.$reqtitles{'norequest'}.
                   '</label>&nbsp;';                    '</label></td>';
         foreach my $option (@options) {          foreach my $option (@options) {
             if ($option eq 'validate') {              if ($option eq 'validate') {
                 my $canvalidate = 0;                  my $canvalidate = 0;
Line 410  sub coursereq_externaluser { Line 422  sub coursereq_externaluser {
             if ($option eq $curroption) {              if ($option eq $curroption) {
                 $checked = ' checked="checked"';                  $checked = ' checked="checked"';
             }              }
             $output .= '<span class="LC_nobreak"><label>'.              $output .= '<td valign="top"><span class="LC_nobreak"><label>'.
                        '<input type="radio" name="reqcrsotherdom_'.$item.                         '<input type="radio" name="reqcrsotherdom_'.$item.
                        '" value="'.$option.'"'.$checked.' />'.                         '" value="'.$option.'"'.$checked.' />'.
                        $reqtitles{$option}.'</label>&nbsp;';                         $reqtitles{$option}.'</label>';
             if ($option eq 'autolimit') {              if ($option eq 'autolimit') {
                 $output .= '<input type="text" name="reqcrsotherdom_'.                  $output .= '&nbsp;<input type="text" name="reqcrsotherdom_'.
                            $item.'_limit" size="1" '.                             $item.'_limit" size="1" '.
                            'value="'.$currlimit.'" />';                             'value="'.$currlimit.'" /></span>'.
                              '<br />'.$reqtitles{'unlimited'};
               } else {
                   $output .= '</span>';
             }              }
             $output .= '&nbsp;'              $output .= '</td>';
         }          }
         $output .= '</span></td>'."\n".          $output .= '</td></tr></table></td>'."\n".
                    &Apache::loncommon::end_data_table_row()."\n";                     &Apache::loncommon::end_data_table_row()."\n";
     }      }
     return $output;      return $output;
Line 436  sub courserequest_titles { Line 451  sub courserequest_titles {
                                    approval   => 'Approval by Dom. Coord.',                                     approval   => 'Approval by Dom. Coord.',
                                    validate   => 'With validation',                                     validate   => 'With validation',
                                    autolimit  => 'Numerical limit',                                     autolimit  => 'Numerical limit',
                                      unlimited  => '(blank for unlimited)',
                  );                   );
     return %titles;      return %titles;
 }  }
Line 452  sub courserequest_display { Line 468  sub courserequest_display {
 # =================================================================== Phase one  # =================================================================== Phase one
   
 sub print_username_entry_form {  sub print_username_entry_form {
     my ($r,$context,$response,$srch,$forcenewuser) = @_;      my ($r,$context,$response,$srch,$forcenewuser,$crstype) = @_;
     my $defdom=$env{'request.role.domain'};      my $defdom=$env{'request.role.domain'};
     my $formtoset = 'crtuser';      my $formtoset = 'crtuser';
     if (exists($env{'form.startrolename'})) {      if (exists($env{'form.startrolename'})) {
Line 474  sub print_username_entry_form { Line 490  sub print_username_entry_form {
     my %loaditems = (      my %loaditems = (
                 'onload' => "javascript:setFormElements(document.$formtoset)",                  'onload' => "javascript:setFormElements(document.$formtoset)",
                     );                      );
     my %breadcrumb_text = &singleuser_breadcrumb();      my %breadcrumb_text = &singleuser_breadcrumb($crstype);
     my $start_page =      my $start_page =
  &Apache::loncommon::start_page('User Management',   &Apache::loncommon::start_page('User Management',
        $jscript,{'add_entries' => \%loaditems,});         $jscript,{'add_entries' => \%loaditems,});
Line 501  sub print_username_entry_form { Line 517  sub print_username_entry_form {
  ('make new role' => 'Generate new role ...',%existingroles));   ('make new role' => 'Generate new role ...',%existingroles));
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                     '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',
                     'srad' => 'Search for a user and modify/add user information or roles',                      'srad' => 'Search for a user and modify/add user information or roles',
     'usr'  => "Username",      'usr'  => "Username",
                     'dom'  => "Domain",                      'dom'  => "Domain",
Line 524  ENDCUSTOM Line 541  ENDCUSTOM
     } else {      } else {
         my $actiontext = $lt{'srad'};          my $actiontext = $lt{'srad'};
         if ($env{'form.action'} eq 'singlestudent') {          if ($env{'form.action'} eq 'singlestudent') {
             $actiontext = $lt{'srst'};              if ($crstype eq 'Community') {
                   $actiontext = $lt{'srme'};
               } else {
                   $actiontext = $lt{'srst'};
               }
         }          }
         $r->print("          $r->print("
 <h3>$actiontext</h3>");  <h3>$actiontext</h3>");
         if ($env{'form.origform'} ne 'crtusername') {          if ($env{'form.origform'} ne 'crtusername') {
             $r->print("\n".$response);              $r->print("\n".$response);
         }          }
         $r->print(&entry_form($defdom,$srch,$forcenewuser,$context,$response));          $r->print(&entry_form($defdom,$srch,$forcenewuser,$context,$response,$crstype));
     }      }
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
 }  }
   
 sub entry_form {  sub entry_form {
     my ($dom,$srch,$forcenewuser,$context,$responsemsg) = @_;      my ($dom,$srch,$forcenewuser,$context,$responsemsg,$crstype) = @_;
     my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom);      my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom);
     my ($usertype,$inexact);      my ($usertype,$inexact);
     if (ref($srch) eq 'HASH') {      if (ref($srch) eq 'HASH') {
Line 577  ENDBLOCK Line 598  ENDBLOCK
         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(
                   'enro' => 'Enroll one student',                    'enro' => 'Enroll one student',
                     'enrm' => 'Enroll one member',
                   'admo' => 'Add/modify a single user',                    'admo' => 'Add/modify a single user',
                   'crea' => 'create new user if required',                    'crea' => 'create new user if required',
                   'uskn' => "username is known",                    'uskn' => "username is known",
Line 588  ENDBLOCK Line 610  ENDBLOCK
         );          );
         my $sellink=&Apache::loncommon::selectstudent_link('crtusername','srchterm','srchdomain');          my $sellink=&Apache::loncommon::selectstudent_link('crtusername','srchterm','srchdomain');
         my ($title,$buttontext,$showresponse);          my ($title,$buttontext,$showresponse);
         if ($env{'form.action'} eq 'singlestudent') {             if ($env{'form.action'} eq 'singlestudent') {
             $title = $lt{'enro'};              if ($crstype eq 'Community') {
                   $title = $lt{'enrm'};
               } else {
                   $title = $lt{'enro'};
               }
             $buttontext = $lt{'enrl'};              $buttontext = $lt{'enrl'};
         } else {          } else {
             $title = $lt{'admo'};              $title = $lt{'admo'};
Line 636  sub user_modification_js { Line 662  sub user_modification_js {
     return <<END;      return <<END;
 <script type="text/javascript" language="Javascript">  <script type="text/javascript" language="Javascript">
 // <![CDATA[  // <![CDATA[
   
     function pclose() {      function pclose() {
         parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",          parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",
                  "height=350,width=350,scrollbars=no,menubar=no");                   "height=350,width=350,scrollbars=no,menubar=no");
Line 659  END Line 686  END
   
 # =================================================================== Phase two  # =================================================================== Phase two
 sub print_user_selection_page {  sub print_user_selection_page {
     my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements) = @_;      my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype) = @_;
     my @fields = ('username','domain','lastname','firstname','permanentemail');      my @fields = ('username','domain','lastname','firstname','permanentemail');
     my $sortby = $env{'form.sortby'};      my $sortby = $env{'form.sortby'};
   
Line 687  ENDSCRIPT Line 714  ENDSCRIPT
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                                        'usrch'          => "User Search to add/modify roles",                                         'usrch'          => "User Search to add/modify roles",
                                        'stusrch'        => "User Search to enroll student",                                         'stusrch'        => "User Search to enroll student",
                                          'memsrch'        => "User Search to enroll member",
                                        'usel'           => "Select a user to add/modify roles",                                         'usel'           => "Select a user to add/modify 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",
                                        'username'       => "username",                                         'username'       => "username",
                                        'domain'         => "domain",                                         'domain'         => "domain",
                                        'lastname'       => "last name",                                         'lastname'       => "last name",
Line 700  ENDSCRIPT Line 729  ENDSCRIPT
     } else {      } else {
         $r->print(&Apache::loncommon::start_page('User Management',$jscript));          $r->print(&Apache::loncommon::start_page('User Management',$jscript));
   
         my %breadcrumb_text = &singleuser_breadcrumb();          my %breadcrumb_text = &singleuser_breadcrumb($crstype);
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>"javascript:backPage(document.usersrchform,'','')",              ({href=>"javascript:backPage(document.usersrchform,'','')",
               text=>$breadcrumb_text{'search'},                text=>$breadcrumb_text{'search'},
Line 712  ENDSCRIPT Line 741  ENDSCRIPT
             $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',              $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
                                                           'Course_Change_Privileges'));                                                            'Course_Change_Privileges'));
             $r->print("<b>$lt{'usrch'}</b><br />");              $r->print("<b>$lt{'usrch'}</b><br />");
             $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context));              $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context,undef,$crstype));
             $r->print('<h3>'.$lt{'usel'}.'</h3>');              $r->print('<h3>'.$lt{'usel'}.'</h3>');
         } elsif ($env{'form.action'} eq 'singlestudent') {          } elsif ($env{'form.action'} eq 'singlestudent') {
             $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',              $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
                                                           'Course_Add_Student'));                                                            'Course_Add_Student'));
             $r->print($jscript."<b>$lt{'stusrch'}</b><br />");              $r->print($jscript."<b>");
             $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context));              if ($crstype eq 'Community') {
             $r->print('</form><h3>'.$lt{'stusel'}.'</h3>');                  $r->print($lt{'memsrch'});
               } else {
                   $r->print($lt{'stusrch'});
               }
               $r->print("</b><br />");
               $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context,undef,$crstype));
               $r->print('</form><h3>');
               if ($crstype eq 'Community') {
                   $r->print($lt{'memsel'});
               } else {
                   $r->print($lt{'stusel'});
               }
               $r->print('</h3>');
         }          }
     }      }
     $r->print('<form name="usersrchform" method="post">'.      $r->print('<form name="usersrchform" method="post">'.
Line 747  ENDSCRIPT Line 788  ENDSCRIPT
         my ($uname,$udom) = split(/:/,$user);          my ($uname,$udom) = split(/:/,$user);
         my $onclick;          my $onclick;
         if ($context eq 'requestcrs') {          if ($context eq 'requestcrs') {
             $onclick =               $onclick =
                 'onclick="javascript:gochoose('."'$uname','$udom',".                  'onclick="javascript:gochoose('."'$uname','$udom',".
                                                "'$srch_results->{$user}->{firstname}',".                                                 "'$srch_results->{$user}->{firstname}',".
                                                "'$srch_results->{$user}->{lastname}',".                                                 "'$srch_results->{$user}->{lastname}',".
                                                "'$srch_results->{$user}->{permanentemail}'".');"';                                                 "'$srch_results->{$user}->{permanentemail}'".');"';
         } else {          } else {
             $onclick =               $onclick =
                 ' onclick="javascript:pickuser('."'".$uname."'".','."'".$udom."'".');"';                  ' onclick="javascript:pickuser('."'".$uname."'".','."'".$udom."'".');"';
         }          }
         $r->print(&Apache::loncommon::start_data_table_row().          $r->print(&Apache::loncommon::start_data_table_row().
Line 794  sub print_user_query_page { Line 835  sub print_user_query_page {
 }  }
   
 sub print_user_modification_page {  sub print_user_modification_page {
     my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission) = @_;      my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission,$crstype) = @_;
     if (($ccuname eq '') || ($ccdomain eq '')) {      if (($ccuname eq '') || ($ccdomain eq '')) {
         my $usermsg = &mt('No username and/or domain provided.');          my $usermsg = &mt('No username and/or domain provided.');
         $env{'form.phase'} = '';          $env{'form.phase'} = '';
  &print_username_entry_form($r,$context,$usermsg);   &print_username_entry_form($r,$context,$usermsg,'','',$crstype);
         return;          return;
     }      }
     my ($form,$formname);      my ($form,$formname);
Line 839  sub print_user_modification_page { Line 880  sub print_user_modification_page {
                             ,'<a href="'.$helplink.'">','</a>')                              ,'<a href="'.$helplink.'">','</a>')
                         .'</p><br />';                          .'</p><br />';
             $env{'form.phase'} = '';              $env{'form.phase'} = '';
             &print_username_entry_form($r,$context,$response);              &print_username_entry_form($r,$context,$response,undef,undef,$crstype);
             return;              return;
         }          }
         $newuser = 1;          $newuser = 1;
Line 863  sub print_user_modification_page { Line 904  sub print_user_modification_page {
                             'username');                              'username');
                     }                      }
                     $env{'form.phase'} = '';                      $env{'form.phase'} = '';
                     &print_username_entry_form($r,$context,$userchkmsg);                      &print_username_entry_form($r,$context,$userchkmsg,undef,undef,$crstype);
                     return;                      return;
                 }                  }
             }              }
Line 890  sub print_user_modification_page { Line 931  sub print_user_modification_page {
     }      }
     my $start_page =       my $start_page = 
  &Apache::loncommon::start_page('User Management',$js,$args);   &Apache::loncommon::start_page('User Management',$js,$args);
     my %breadcrumb_text = &singleuser_breadcrumb();      my %breadcrumb_text = &singleuser_breadcrumb($crstype);
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
      ({href=>"javascript:backPage($form)",       ({href=>"javascript:backPage($form)",
        text=>$breadcrumb_text{'search'},         text=>$breadcrumb_text{'search'},
Line 939  ENDFORMINFO Line 980  ENDFORMINFO
         my %lt=&Apache::lonlocal::texthash(          my %lt=&Apache::lonlocal::texthash(
                 'cnu'            => 'Create New User',                  'cnu'            => 'Create New User',
                 'ast'            => 'as a student',                  'ast'            => 'as a student',
                   'ame'            => 'as a member',
                 'ind'            => 'in domain',                  'ind'            => 'in domain',
                 'lg'             => 'Login Data',                  'lg'             => 'Login Data',
                 'hs'             => "Home Server",                  'hs'             => "Home Server",
Line 957  $loginscript Line 999  $loginscript
 <h2>$lt{'cnu'} "$ccuname" $lt{'ind'} $ccdomain  <h2>$lt{'cnu'} "$ccuname" $lt{'ind'} $ccdomain
 ENDTITLE  ENDTITLE
         if ($env{'form.action'} eq 'singlestudent') {          if ($env{'form.action'} eq 'singlestudent') {
             $r->print(' ('.$lt{'ast'}.')');              if ($crstype eq 'Community') {
                   $r->print(' ('.$lt{'ame'}.')');
               } else {
                   $r->print(' ('.$lt{'ast'}.')');
               }
         }          }
         $r->print('</h2>'."\n".'<div class="LC_left_float">');          $r->print('</h2>'."\n".'<div class="LC_left_float">');
         my $personal_table =           my $personal_table = 
             &personal_data_display($ccuname,$ccdomain,$newuser,$context,              &personal_data_display($ccuname,$ccdomain,$newuser,$context,
                                    $inst_results{$ccuname.':'.$ccdomain});                                     $inst_results{$ccuname.':'.$ccdomain});
         $r->print($personal_table);          $r->print($personal_table);
 #FIXME  
         my ($home_server_pick,$numlib) =           my ($home_server_pick,$numlib) = 
             &Apache::loncommon::home_server_form_item($ccdomain,'hserver',              &Apache::loncommon::home_server_form_item($ccdomain,'hserver',
                                                       'default','hide');                                                        'default','hide');
Line 977  $lt{'hs'}: $home_server_pick Line 1022  $lt{'hs'}: $home_server_pick
             $r->print($home_server_pick);              $r->print($home_server_pick);
         }          }
         if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {          if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
             $r->print('<br /><h3>'.&mt('User Can Request Creation of Courses 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().
                       &build_tools_display($ccuname,$ccdomain,                        &build_tools_display($ccuname,$ccdomain,
                                            'requestcourses').                                             'requestcourses').
Line 1051  ENDAUTH Line 1096  ENDAUTH
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
                     'cup'  => "Modify existing user: ",                      'cup'  => "Modify existing user: ",
                     'ens'  => "Enroll one student: ",                      'ens'  => "Enroll one student: ",
                       'enm'  => "Enroll one member: ",
                     'id'   => "in domain",                      'id'   => "in domain",
        );         );
  $r->print(<<ENDCHANGEUSER);   $r->print(<<ENDCHANGEUSER);
Line 1060  $forminfo Line 1106  $forminfo
 <h2>  <h2>
 ENDCHANGEUSER  ENDCHANGEUSER
         if ($env{'form.action'} eq 'singlestudent') {          if ($env{'form.action'} eq 'singlestudent') {
             $r->print($lt{'ens'});              if ($crstype eq 'Community') {
                   $r->print($lt{'enm'});
               } else {
                   $r->print($lt{'ens'});
               }
         } else {          } else {
             $r->print($lt{'cup'});              $r->print($lt{'cup'});
         }          }
Line 1074  ENDCHANGEUSER Line 1124  ENDCHANGEUSER
             $r->print(&Apache::lonuserutils::forceid_change($context));              $r->print(&Apache::lonuserutils::forceid_change($context));
         }          }
         if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {          if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
             $r->print('<h3>'.&mt('User Can Request Creation of Courses in this Domain?').'</h3>'.              $r->print('<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) {
                 $r->print(&build_tools_display($ccuname,$ccdomain,'requestcourses'));                  $r->print(&build_tools_display($ccuname,$ccdomain,'requestcourses'));
             } else {              } else {
                 $r->print(&coursereq_externaluser($ccuname,$ccdomain,                  $r->print(&coursereq_externaluser($ccuname,$ccdomain,
Line 1158  ENDNOTOOLSPRIV Line 1208  ENDNOTOOLSPRIV
     } ## 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') {
         $r->print('<br /><input type="button" value="'.&mt('Enroll Student').'" onclick="setSections(this.form)" />'."\n");          my $btntxt;
           if ($crstype eq 'Community') {
               $btntxt = &mt('Enroll Member');
           } else {
               $btntxt = &mt('Enroll Student');
           }
           $r->print('<br /><input type="button" value="'.$btntxt.'" onclick="setSections(this.form)" />'."\n");
     } else {      } else {
         $r->print('<h3>'.&mt('Add Roles').'</h3>');          $r->print('<h3>'.&mt('Add Roles').'</h3>');
         my $addrolesdisplay = 0;          my $addrolesdisplay = 0;
Line 1197  ENDNOTOOLSPRIV Line 1253  ENDNOTOOLSPRIV
 }  }
   
 sub singleuser_breadcrumb {  sub singleuser_breadcrumb {
       my ($crstype) = @_;
     my %breadcrumb_text;      my %breadcrumb_text;
     if ($env{'form.action'} eq 'singlestudent') {      if ($env{'form.action'} eq 'singlestudent') {
         $breadcrumb_text{'search'} = 'Enroll a student';          if ($crstype eq 'Community') {
               $breadcrumb_text{'search'} = 'Enroll a member';
           } else {
               $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',
     } else {      } else {
Line 1414  sub display_existing_roles { Line 1475  sub display_existing_roles {
             }              }
             $row.= '</td><td>'.$plaintext.              $row.= '</td><td>'.$plaintext.
                    '</td><td>'.$area.                     '</td><td>'.$area.
                    '</td><td>'.($role_start_time?localtime($role_start_time)                     '</td><td>'.($role_start_time?&Apache::lonlocal::locallocaltime($role_start_time)
                                                 : '&nbsp;' ).                                                  : '&nbsp;' ).
                    '</td><td>'.($role_end_time  ?localtime($role_end_time)                     '</td><td>'.($role_end_time  ?&Apache::lonlocal::locallocaltime($role_end_time)
                                                 : '&nbsp;' )                                                  : '&nbsp;' )
                    ."</td>";                     ."</td>";
             $sortrole{$sortkey}=$envkey;              $sortrole{$sortkey}=$envkey;
Line 1427  sub display_existing_roles { Line 1488  sub display_existing_roles {
         } # end of foreach        (table building loop)          } # end of foreach        (table building loop)
         my $rolesdisplay = 0;          my $rolesdisplay = 0;
         my %output = ();          my %output = ();
         foreach my $type ('Construction Space','Course','Group','Domain','System','Unknown') {          foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') {
             $output{$type} = '';              $output{$type} = '';
             foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {              foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {
                 if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) {                  if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) {
Line 1447  sub display_existing_roles { Line 1508  sub display_existing_roles {
         if ($rolesdisplay == 1) {          if ($rolesdisplay == 1) {
             my $contextrole='';              my $contextrole='';
             if ($env{'request.course.id'}) {              if ($env{'request.course.id'}) {
                 $contextrole = 'Existing Roles in this Course';                  my $crstype = &Apache::loncommon::course_type();
                   $contextrole = "Existing Roles in this $crstype";
             } elsif ($env{'request.role'} =~ /^au\./) {              } elsif ($env{'request.role'} =~ /^au\./) {
                 $contextrole = 'Existing Co-Author Roles in your Construction Space';                  $contextrole = 'Existing Co-Author Roles in your Construction Space';
             } else {              } else {
Line 1462  sub display_existing_roles { Line 1524  sub display_existing_roles {
 '</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}.  '</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}.
 '</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'.  '</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 ('Construction Space','Course','Group','Domain','System','Unknown') {             foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') {
                 if ($output{$type}) {                  if ($output{$type}) {
                     $r->print($output{$type}."\n");                      $r->print($output{$type}."\n");
                 }                  }
Line 1957  sub get_inststatuses { Line 2019  sub get_inststatuses {
   
 # ================================================================= Phase Three  # ================================================================= Phase Three
 sub update_user_data {  sub update_user_data {
     my ($r,$context) = @_;       my ($r,$context,$crstype) = @_; 
     my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'},      my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'},
                                           $env{'form.ccdomain'});                                            $env{'form.ccdomain'});
     # Error messages      # Error messages
Line 1981  sub update_user_data { Line 2043  sub update_user_data {
                   $jsback."\n".                    $jsback."\n".
                   '// ]]>'."\n".                    '// ]]>'."\n".
                   '</script>'."\n";                    '</script>'."\n";
     my %breadcrumb_text = &singleuser_breadcrumb();      my %breadcrumb_text = &singleuser_breadcrumb($crstype);
     my $args;      my $args;
     if ($env{'form.popup'}) {      if ($env{'form.popup'}) {
         $args->{'no_nav_bar'} = 1;          $args->{'no_nav_bar'} = 1;
Line 2213  sub update_user_data { Line 2275  sub update_user_data {
  }   }
     }      }
     ##      ##
     my (@userroles,%userupdate,$cnum,$cdom,$namechanged);      my (@userroles,%userupdate,$cnum,$cdom,$crstype,$namechanged);
     if ($context eq 'course') {      if ($context eq 'course') {
         ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();          ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();
           $crstype = &Apache::loncommon::course_type($cdom.'_'.$cnum);
     }      }
     if (! $env{'form.makeuser'} ) {      if (! $env{'form.makeuser'} ) {
         # Check for need to change          # Check for need to change
Line 2299  sub update_user_data { Line 2362  sub update_user_data {
             if ($role eq 'cr') {              if ($role eq 'cr') {
                 push(@longroles,'Custom');                  push(@longroles,'Custom');
             } else {              } else {
                 push(@longroles,&Apache::lonnet::plaintext($role));                   push(@longroles,&Apache::lonnet::plaintext($role,$crstype)); 
             }              }
         }          }
         my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');          my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');
Line 2453  sub update_user_data { Line 2516  sub update_user_data {
                           \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);                            \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
         } else {          } else {
             &tool_changes('reqcrsotherdom',\@requestcourses,\%oldaccess,\%oldaccesstext,              &tool_changes('reqcrsotherdom',\@requestcourses,\%oldaccess,\%oldaccesstext,
                           \%userenv,                            \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
                                   \%changeHash,\%changed,\%newaccess,\%newaccesstext);  
         }          }
         if ($env{'form.cfirstname'}  ne $userenv{'firstname'}  ||          if ($env{'form.cfirstname'}  ne $userenv{'firstname'}  ||
             $env{'form.cmiddlename'} ne $userenv{'middlename'} ||              $env{'form.cmiddlename'} ne $userenv{'middlename'} ||
Line 2769  END Line 2831  END
                   .'</span>');                    .'</span>');
     }      }
     if ($env{'form.action'} eq 'singlestudent') {      if ($env{'form.action'} eq 'singlestudent') {
         &enroll_single_student($r,$uhome,$amode,$genpwd,$now,$newuser,$context);          &enroll_single_student($r,$uhome,$amode,$genpwd,$now,$newuser,$context,$crstype);
         $r->print('<p><a href="javascript:backPage(document.userupdate)">'.          $r->print('<p><a href="javascript:backPage(document.userupdate)">');
                   &mt('Enroll Another Student').'</a></p>');          if ($crstype eq 'Community') {
               $r->print(&mt('Enroll Another Member'));
           } else {
               $r->print(&mt('Enroll Another Student'));
           }
           $r->print('</a></p>');
     } else {      } else {
         my @rolechanges = &update_roles($r,$context);          my @rolechanges = &update_roles($r,$context);
         if ($namechanged) {          if ($namechanged) {
Line 2818  sub tool_changes { Line 2885  sub tool_changes {
         my %reqdisplay = &courserequest_display();          my %reqdisplay = &courserequest_display();
         my $cdom = $env{'request.role.domain'};          my $cdom = $env{'request.role.domain'};
         foreach my $tool (@{$usertools}) {          foreach my $tool (@{$usertools}) {
             $oldaccesstext->{$tool} = &mt('no');              $oldaccesstext->{$tool} = &mt('No');
               $newaccesstext->{$tool} = $oldaccesstext->{$tool};
             $changeHash->{$context.'.'.$tool} = $userenv->{$context.'.'.$tool};              $changeHash->{$context.'.'.$tool} = $userenv->{$context.'.'.$tool};
               my $newop;
               if ($env{'form.'.$context.'_'.$tool}) {
                   $newop = $env{'form.'.$context.'_'.$tool};
                   if ($newop eq 'autolimit') {
                       my $limit = $env{'form.'.$context.'_'.$tool.'_limit'};
                       $limit =~ s/\D+//g;
                       $newop .= '='.$limit;
                   }
               }
             if ($userenv->{$context.'.'.$tool} eq '') {              if ($userenv->{$context.'.'.$tool} eq '') {
                 if ($env{'form.'.$context.'_'.$tool}) {                  if ($newop) {
                     $changed->{$tool}=&tool_admin($tool,$cdom,                      $changed->{$tool}=&tool_admin($tool,$cdom.':'.$newop,
                                                   $changeHash,$context);                                                    $changeHash,$context);
                     if ($changed->{$tool}) {                      if ($changed->{$tool}) {
                         $newaccesstext->{$tool} = &mt('yes');                          $newaccesstext->{$tool} = &mt('Yes');
                     } else {                      } else {
                         $newaccesstext->{$tool} = $oldaccesstext->{$tool};                          $newaccesstext->{$tool} = $oldaccesstext->{$tool};
                     }                      }
Line 2834  sub tool_changes { Line 2911  sub tool_changes {
                 my @curr = split(',',$userenv->{$context.'.'.$tool});                  my @curr = split(',',$userenv->{$context.'.'.$tool});
                 my @new;                  my @new;
                 my $changedoms;                  my $changedoms;
                 my $newop = $env{'form.'.$context.'_'.$tool};                  foreach my $req (@curr) {
                 if ($newop eq 'autolimit') {                      if ($req =~ /^\Q$cdom\E\:($optregex\=?\d*)$/) {
                     $newop .= '=';                          $oldaccesstext->{$tool} = &mt('Yes');
                     unless ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/) {                          my $oldop = $1;
                         $newop .= $env{'form.'.$context.'_'.$tool.'_limit'};                          if ($oldop ne $newop) {
                     }                              $changedoms = 1;
                 }                                foreach my $item (@curr) {
                 if (grep(/^\Q$cdom:($optregex\=?\d*)\E$/,@curr)) {                                  my ($reqdom,$option) = split(':',$item);
                     $oldaccesstext->{$tool} = &mt('yes');                                  unless ($reqdom eq $cdom) {
                     my $oldop = $1;                                      push(@new,$item);
                     if ($oldop ne $newop) {                                  }
                         $changedoms = 1;  
                         foreach my $dom (@curr) {  
                             unless ($dom eq $cdom) {  
                                 push(@new,$dom);  
                             }                              }
                               if ($newop) {
                                   push(@new,$cdom.':'.$newop);
                               }
                               @new = sort(@new);
                         }                          }
                         if ($newop) {                          last;
                             push(@new,$cdom.':'.$newop);  
                         }  
                         @new = sort(@new);  
                     }                      }
                 } elsif ($env{'form.'.$context.'_'.$tool}) {                  }
                   if ((!$changedoms) && ($newop)) {
                     $changedoms = 1;                      $changedoms = 1;
                     @new = sort(@curr,$cdom.':'.$newop);                      @new = sort(@curr,$cdom.':'.$newop);
                 }                  }
                 $newaccesstext->{$tool} = $oldaccesstext->{$tool};  
                 if ($changedoms) {                  if ($changedoms) {
                     my $newdomstr;                       my $newdomstr;
                     if (@new) {                      if (@new) {
                         $newdomstr = join(',',@new);                          $newdomstr = join(',',@new);
                     }                      }
Line 2871  sub tool_changes { Line 2945  sub tool_changes {
                     if ($changed->{$tool}) {                      if ($changed->{$tool}) {
                         if ($env{'form.'.$context.'_'.$tool}) {                          if ($env{'form.'.$context.'_'.$tool}) {
                             if ($env{'form.'.$context.'_'.$tool} eq 'autolimit') {                              if ($env{'form.'.$context.'_'.$tool} eq 'autolimit') {
                                 if ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/) {                                  my $limit = $env{'form.'.$context.'_'.$tool.'_limit'};
                                     $newaccesstext->{$tool} = &mt('Yes, processed automatically');                                  $limit =~ s/\D+//g;
                                   if ($limit) {
                                       $newaccesstext->{$tool} = &mt('Yes, up to limit of [quant,_1,request] per user.',$limit);
                                 } else {                                  } else {
                                     $newaccesstext->{$tool} = &mt('Yes, up to limit of [quant,_1,request] per user).',$env{'form.'.$context.'_'.$tool.'_limit'});                                      $newaccesstext->{$tool} = &mt('Yes, processed automatically');
                                 }                                  }
                             } else {                                } else {
                                 $newaccesstext->{$tool} = $reqdisplay{$env{'form.'.$context.'_'.$tool}};                                  $newaccesstext->{$tool} = $reqdisplay{$env{'form.'.$context.'_'.$tool}};
                             }                              }
                         } else {                          } else {
Line 2895  sub tool_changes { Line 2971  sub tool_changes {
             if ($newval eq 'autolimit') {              if ($newval eq 'autolimit') {
                 $newval .= '='.$env{'form.crsreq_'.$tool.'_limit'};                  $newval .= '='.$env{'form.crsreq_'.$tool.'_limit'};
             }              }
         } else {            } else {
             $newval = $env{'form.'.$context.'_'.$tool};              $newval = $env{'form.'.$context.'_'.$tool};
         }          }
         if ($userenv->{$context.'.'.$tool} ne '') {          if ($userenv->{$context.'.'.$tool} ne '') {
Line 3231  sub update_roles { Line 3307  sub update_roles {
 }  }
   
 sub enroll_single_student {  sub enroll_single_student {
     my ($r,$uhome,$amode,$genpwd,$now,$newuser,$context) = @_;      my ($r,$uhome,$amode,$genpwd,$now,$newuser,$context,$crstype) = @_;
     $r->print('<h3>'.&mt('Enrolling Student').'</h3>');      $r->print('<h3>');
       if ($crstype eq 'Community') {
           $r->print(&mt('Enrolling Member'));
       } else {
           $r->print(&mt('Enrolling Student'));
       }
       $r->print('</h3>');
   
     # Remove non alphanumeric values from section      # Remove non alphanumeric values from section
     $env{'form.sections'}=~s/\W//g;      $env{'form.sections'}=~s/\W//g;
Line 3265  sub enroll_single_student { Line 3347  sub enroll_single_student {
         }          }
         $r->print('.<br />'.$showstart.'; '.$showend);          $r->print('.<br />'.$showstart.'; '.$showend);
         if ($startdate <= $now && !$newuser) {          if ($startdate <= $now && !$newuser) {
             $r->print("<p> ".&mt('If the student is currently logged-in to LON-CAPA, the new role will be available when the student next logs in.')."</p>");              $r->print('<p> ');
               if ($crstype eq 'Community') {
                   $r->print(&mt('If the member is currently logged-in to LON-CAPA, the new role will be available when the member next logs in.'));
               } else {
                   $r->print(&mt('If the student is currently logged-in to LON-CAPA, the new role will be available when the student next logs in.'));
              }
              $r->print('</p>');
         }          }
     } else {      } else {
         $r->print(&mt('unable to enroll').": ".$enroll_result);          $r->print(&mt('unable to enroll').": ".$enroll_result);
Line 3460  sub custom_role_editor { Line 3548  sub custom_role_editor {
     my $head_script = "\n";      my $head_script = "\n";
     $head_script .= '<script type="text/javascript">'."\n"      $head_script .= '<script type="text/javascript">'."\n"
                    .'// <![CDATA['."\n";                     .'// <![CDATA['."\n";
     my @template_roles = ("cc","in","ta","ep","st");      my $crstype;
       if ($env{'request.course.id'}) {
           $crstype = &Apache::loncommon::course_type();
       }
       my @template_roles = ("in","ta","ep","st");
       if ($crstype eq 'Community') {
           unshift(@template_roles,'co');
       } else {
           unshift(@template_roles,'cc');
       }
     foreach my $role (@template_roles) {      foreach my $role (@template_roles) {
         $head_script .= &make_script_template($role);          $head_script .= &make_script_template($role);
         $button_code .= &make_button_code($role).' ';          $button_code .= &make_button_code($role,$crstype).' ';
     }      }
     $head_script .= "\n".$jsback."\n"      $head_script .= "\n".$jsback."\n"
                    .'// ]]>'."\n"                     .'// ]]>'."\n"
Line 3505  ENDCCF Line 3602  ENDCCF
 '</th><th>'.$lt{'ssl'}.'</th>'.  '</th><th>'.$lt{'ssl'}.'</th>'.
               &Apache::loncommon::end_data_table_header_row());                &Apache::loncommon::end_data_table_header_row());
     foreach my $priv (sort keys %full) {      foreach my $priv (sort keys %full) {
         my $privtext = &Apache::lonnet::plaintext($priv);          my $privtext = &Apache::lonnet::plaintext($priv,$crstype);
         $r->print(&Apache::loncommon::start_data_table_row().          $r->print(&Apache::loncommon::start_data_table_row().
           '<td>'.$privtext.'</td><td>'.            '<td>'.$privtext.'</td><td>'.
     ($courselevel{$priv}?'<input type="checkbox" name="'.$priv.'_c"'.      ($courselevel{$priv}?'<input type="checkbox" name="'.$priv.'_c"'.
Line 3595  sub make_script_template { Line 3692  sub make_script_template {
 }  }
 # ----------------------------------------------------------  # ----------------------------------------------------------
 sub make_button_code {  sub make_button_code {
     my ($role) = @_;      my ($role,$crstype) = @_;
     my $label = &Apache::lonnet::plaintext($role);      my $label = &Apache::lonnet::plaintext($role,$crstype);
     my $button_code = '<input type="button" onclick="set_'.$role.'()" value="'.$label.'" />';      my $button_code = '<input type="button" onclick="set_'.$role.'()" value="'.$label.'" />';
     return ($button_code);      return ($button_code);
 }  }
Line 3696  sub handler { Line 3793  sub handler {
        $r->send_http_header;         $r->send_http_header;
        return OK;         return OK;
     }      }
     my $context;      my ($context,$crstype);
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
         $context = 'course';          $context = 'course';
           $crstype = &Apache::loncommon::course_type();
     } elsif ($env{'request.role'} =~ /^au\./) {      } elsif ($env{'request.role'} =~ /^au\./) {
         $context = 'author';          $context = 'author';
     } else {      } else {
Line 3717  sub handler { Line 3815  sub handler {
     #SD Following files not added to help, because the corresponding .tex-files seem to      #SD Following files not added to help, because the corresponding .tex-files seem to
     #be missing: Course_Approve_Selfenroll,Course_User_Logs,      #be missing: Course_Approve_Selfenroll,Course_User_Logs,
     my ($permission,$allowed) =       my ($permission,$allowed) = 
         &Apache::lonuserutils::get_permission($context);          &Apache::lonuserutils::get_permission($context,$crstype);
     if (!$allowed) {      if (!$allowed) {
         $env{'user.error.msg'}=          $env{'user.error.msg'}=
             "/adm/createuser:cst:0:0:Cannot create/modify user data ".              "/adm/createuser:cst:0:0:Cannot create/modify user data ".
Line 3732  sub handler { Line 3830  sub handler {
     if (! exists($env{'form.action'})) {      if (! exists($env{'form.action'})) {
         $r->print(&header());          $r->print(&header());
         $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));          $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
         $r->print(&print_main_menu($permission,$context));          $r->print(&print_main_menu($permission,$context,$crstype));
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
     } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) {      } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) {
         $r->print(&header());          $r->print(&header());
Line 3748  sub handler { Line 3846  sub handler {
             &Apache::lonuserutils::print_first_users_upload_form($r,$context);              &Apache::lonuserutils::print_first_users_upload_form($r,$context);
         } elsif ($env{'form.state'} eq 'got_file') {          } elsif ($env{'form.state'} eq 'got_file') {
             &Apache::lonuserutils::print_upload_manager_form($r,$context,              &Apache::lonuserutils::print_upload_manager_form($r,$context,
                                                              $permission);                                                               $permission,$crstype);
         } elsif ($env{'form.state'} eq 'enrolling') {          } elsif ($env{'form.state'} eq 'enrolling') {
             if ($env{'form.datatoken'}) {              if ($env{'form.datatoken'}) {
                 &Apache::lonuserutils::upfile_drop_add($r,$context,$permission);                  &Apache::lonuserutils::upfile_drop_add($r,$context,$permission);
Line 3773  sub handler { Line 3871  sub handler {
                 if ($env{'form.srchterm'} !~ /^$match_username$/) {                  if ($env{'form.srchterm'} !~ /^$match_username$/) {
                     my $response = &mt('You must specify a valid username. Only the following are allowed: letters numbers - . @');                      my $response = &mt('You must specify a valid username. Only the following are allowed: letters numbers - . @');
                     $env{'form.phase'} = '';                      $env{'form.phase'} = '';
                     &print_username_entry_form($r,$context,$response,$srch);                      &print_username_entry_form($r,$context,$response,$srch,undef,$crstype);
                 } else {                  } else {
                     my $ccuname =&LONCAPA::clean_username($srch->{'srchterm'});                      my $ccuname =&LONCAPA::clean_username($srch->{'srchterm'});
                     my $ccdomain=&LONCAPA::clean_domain($srch->{'srchdomain'});                      my $ccdomain=&LONCAPA::clean_domain($srch->{'srchdomain'});
                     &print_user_modification_page($r,$ccuname,$ccdomain,                      &print_user_modification_page($r,$ccuname,$ccdomain,
                                                   $srch,$response,$context,                                                    $srch,$response,$context,
                                                   $permission);                                                    $permission,$crstype);
                 }                  }
             } elsif ($env{'form.phase'} eq 'get_user_info') {              } elsif ($env{'form.phase'} eq 'get_user_info') {
                 my ($currstate,$response,$forcenewuser,$results) =                   my ($currstate,$response,$forcenewuser,$results) = 
Line 3789  sub handler { Line 3887  sub handler {
                 }                  }
                 if ($currstate eq 'select') {                  if ($currstate eq 'select') {
                     &print_user_selection_page($r,$response,$srch,$results,                      &print_user_selection_page($r,$response,$srch,$results,
                                                \@search,$context);                                                 \@search,$context,undef,$crstype);
                 } elsif ($currstate eq 'modify') {                  } elsif ($currstate eq 'modify') {
                     my ($ccuname,$ccdomain);                      my ($ccuname,$ccdomain);
                     if (($srch->{'srchby'} eq 'uname') &&                       if (($srch->{'srchby'} eq 'uname') && 
Line 3807  sub handler { Line 3905  sub handler {
                     }                      }
                     &print_user_modification_page($r,$ccuname,$ccdomain,                      &print_user_modification_page($r,$ccuname,$ccdomain,
                                                   $srch,$response,$context,                                                    $srch,$response,$context,
                                                   $permission);                                                    $permission,$crstype);
                 } elsif ($currstate eq 'query') {                  } elsif ($currstate eq 'query') {
                     &print_user_query_page($r,'createuser');                      &print_user_query_page($r,'createuser');
                 } else {                  } else {
                     $env{'form.phase'} = '';                      $env{'form.phase'} = '';
                     &print_username_entry_form($r,$context,$response,$srch,                      &print_username_entry_form($r,$context,$response,$srch,
                                                $forcenewuser);                                                 $forcenewuser,$crstype);
                 }                  }
             } elsif ($env{'form.phase'} eq 'userpicked') {              } elsif ($env{'form.phase'} eq 'userpicked') {
                 my $ccuname = &LONCAPA::clean_username($env{'form.seluname'});                  my $ccuname = &LONCAPA::clean_username($env{'form.seluname'});
                 my $ccdomain = &LONCAPA::clean_domain($env{'form.seludom'});                  my $ccdomain = &LONCAPA::clean_domain($env{'form.seludom'});
                 &print_user_modification_page($r,$ccuname,$ccdomain,$srch,'',                  &print_user_modification_page($r,$ccuname,$ccdomain,$srch,'',
                                               $context,$permission);                                                $context,$permission,$crstype);
             }              }
         } elsif ($env{'form.phase'} eq 'update_user_data') {          } elsif ($env{'form.phase'} eq 'update_user_data') {
             &update_user_data($r,$context);              &update_user_data($r,$context,$crstype);
         } else {          } else {
             &print_username_entry_form($r,$context,undef,$srch);              &print_username_entry_form($r,$context,undef,$srch,undef,$crstype);
         }          }
     } elsif ($env{'form.action'} eq 'custom' && $permission->{'custom'}) {      } elsif ($env{'form.action'} eq 'custom' && $permission->{'custom'}) {
         if ($env{'form.phase'} eq 'set_custom_roles') {          if ($env{'form.phase'} eq 'set_custom_roles') {
Line 3883  sub handler { Line 3981  sub handler {
         }          }
     } elsif ($env{'form.action'} eq 'drop' && $permission->{'cusr'}) {      } elsif ($env{'form.action'} eq 'drop' && $permission->{'cusr'}) {
         $r->print(&header());          $r->print(&header());
           my $brtext;
           if ($crstype eq 'Community') {
               $brtext = 'Drop Members';
           } else {
               $brtext = 'Drop Students';
           }
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/createuser?action=drop',              ({href=>'/adm/createuser?action=drop',
               text=>"Drop Students"});                text=>$brtext});
         if (!exists($env{'form.state'})) {          if (!exists($env{'form.state'})) {
             $r->print(&Apache::lonhtmlcommon::breadcrumbs('Drop Students',              $r->print(&Apache::lonhtmlcommon::breadcrumbs($brtext,
                                                           'Course_Drop_Student'));                                                            'Course_Drop_Student'));
   
             &Apache::lonuserutils::print_drop_menu($r,$context,$permission);              &Apache::lonuserutils::print_drop_menu($r,$context,$permission,$crstype);
         } elsif ($env{'form.state'} eq 'done') {          } elsif ($env{'form.state'} eq 'done') {
             &Apache::lonhtmlcommon::add_breadcrumb              &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/createuser?action=drop',              ({href=>'/adm/createuser?action=drop',
               text=>"Result"});                text=>"Result"});
             $r->print(&Apache::lonhtmlcommon::breadcrumbs('Drop Students',              $r->print(&Apache::lonhtmlcommon::breadcrumbs($brtext,
                                                           'Course_Drop_Student'));                                                            'Course_Drop_Student'));
             &Apache::lonuserutils::update_user_list($r,$context,undef,              &Apache::lonuserutils::update_user_list($r,$context,undef,
                                                     $env{'form.action'});                                                      $env{'form.action'});
Line 3905  sub handler { Line 4009  sub handler {
         if ($permission->{'cusr'}) {          if ($permission->{'cusr'}) {
             $r->print(&header(undef,undef,{'no_nav_bar' => 1}).              $r->print(&header(undef,undef,{'no_nav_bar' => 1}).
                       &Apache::lonuserutils::date_section_selector($context,                        &Apache::lonuserutils::date_section_selector($context,
                                                                    $permission).                                                                     $permission,$crstype).
                       &Apache::loncommon::end_page());                        &Apache::loncommon::end_page());
         } else {          } else {
             $r->print(&header().              $r->print(&header().
Line 3970  sub handler { Line 4074  sub handler {
     } else {      } else {
         $r->print(&header());          $r->print(&header());
         $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));          $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
         $r->print(&print_main_menu($permission,$context));          $r->print(&print_main_menu($permission,$context,$crstype));
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
     }      }
     return OK;      return OK;
Line 4014  END Line 4118  END
 ###############################################################  ###############################################################
 #  Menu Phase One  #  Menu Phase One
 sub print_main_menu {  sub print_main_menu {
     my ($permission,$context) = @_;      my ($permission,$context,$crstype) = @_;
       my $linkcontext = $context;
       my $stuterm = lc(&Apache::lonnet::plaintext('st',$crstype));
       if (($context eq 'course') && ($crstype eq 'Community')) {
           $linkcontext = lc($crstype);
           $stuterm = 'Members';
       }
     my %links = (      my %links = (
                 domain => {                  domain => {
                             upload     => 'Upload a File of Users',                              upload     => 'Upload a File of Users',
Line 4031  sub print_main_menu { Line 4141  sub print_main_menu {
                             singleuser => 'Add/Modify a Course User',                              singleuser => 'Add/Modify a Course User',
                             listusers  => 'Manage Course Users',                              listusers  => 'Manage Course Users',
                             },                              },
                   community => {
                               upload     => 'Upload a File of Community Users',
                               singleuser => 'Add/Modify a Community User',
                               listusers  => 'Manage Community Users',
                              },
                   );
        my %linktitles = (
                   domain => {
                               singleuser => 'Add a user to the domain, and/or a course or community in the domain.',
                               listusers  => 'Show and manage users in this domain.',
                               },
                   author => {
                               singleuser => 'Add a user with a co- or assistant author role.',
                               listusers  => 'Show and manage co- or assistant authors.',
                               },
                   course => {
                               singleuser => 'Add a user with a certain role to this course.',
                               listusers  => 'Show and manage users in this course.',
                               },
                   community => {
                               singleuser => 'Add a user with a certain role to this community.',
                               listusers  => 'Show and manage users in this community.',
                              },
                 );                  );
   my @menu = ( {categorytitle => 'Single Users',     my @menu = ( {categorytitle => 'Single Users', 
          items =>           items =>
          [           [
             {              {
              linktext => $links{$context}{'singleuser'},               linktext => $links{$linkcontext}{'singleuser'},
              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->{'cusr'},
              linktitle => 'Add a user with a certain role to this course.',               linktitle => $linktitles{$linkcontext}{'singleuser'},
             },              },
          ]},           ]},
   
Line 4049  sub print_main_menu { Line 4182  sub print_main_menu {
          items =>            items => 
          [           [
             {              {
              linktext => $links{$context}{'upload'},               linktext => $links{$linkcontext}{'upload'},
              icon => 'sctr.png',               icon => 'sctr.png',
              #help => 'Course_Create_Class_List',               #help => 'Course_Create_Class_List',
              url => '/adm/createuser?action=upload',               url => '/adm/createuser?action=upload',
Line 4057  sub print_main_menu { Line 4190  sub print_main_menu {
              linktitle => 'Upload a CSV or a text file containing users.',               linktitle => 'Upload a CSV or a text file containing users.',
             },              },
             {              {
              linktext => $links{$context}{'listusers'},               linktext => $links{$linkcontext}{'listusers'},
              icon => 'edit-find.png',               icon => 'edit-find.png',
              #help => 'Course_View_Class_List',               #help => 'Course_View_Class_List',
              url => '/adm/createuser?action=listusers',               url => '/adm/createuser?action=listusers',
              permission => ($permission->{'view'} || $permission->{'cusr'}),               permission => ($permission->{'view'} || $permission->{'cusr'}),
              linktitle => 'Show and manage users of this course.',               linktitle => $linktitles{$linkcontext}{'listusers'}, 
             },              },
   
          ]},           ]},
Line 4086  sub print_main_menu { Line 4219  sub print_main_menu {
                   
     }elsif ($context eq 'course'){      }elsif ($context eq 'course'){
         my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();          my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();
       
           my %linktext = (
                            'Course'    => {
                                             single => 'Add/Modify a Student', 
                                             drop   => 'Drop Students',
                                             groups => 'Course Groups',
                                           },
                            'Community' => {
                                             single => 'Add/Modify a Member', 
                                             drop   => 'Drop Members',
                                             groups => 'Community Groups',
                                           },
                          );
   
           my %linktitle = (
               'Course' => {
                     single => 'Add a user with the role of student to this course',
                     drop   => 'Remove a student from this course.',
                     groups => 'Manage course groups',
                           },
               'Community' => {
                     single => 'Add a user with the role of member to this community',
                     drop   => 'Remove a member from this community.',
                     groups => 'Manage community groups',
                              },
           );
   
         push(@{ $menu[0]->{items} }, #Category: Single Users          push(@{ $menu[0]->{items} }, #Category: Single Users
             {                 {   
              linktext => 'Add/Modify a Student',               linktext => $linktext{$crstype}{'single'},
              #help => 'Course_Add_Student',               #help => 'Course_Add_Student',
              icon => 'list-add.png',               icon => 'list-add.png',
              url => '/adm/createuser?action=singlestudent',               url => '/adm/createuser?action=singlestudent',
              permission => $permission->{'cusr'},               permission => $permission->{'cusr'},
              linktitle => 'Add a user with the role student to this course.',               linktitle => $linktitle{$crstype}{'single'},
             },              },
         );          );
                   
         push(@{ $menu[1]->{items} }, #Category: Multiple Users           push(@{ $menu[1]->{items} }, #Category: Multiple Users 
             {              {
              linktext => 'Drop Students',               linktext => $linktext{$crstype}{'drop'},
              icon => 'edit-undo.png',               icon => 'edit-undo.png',
              #help => 'Course_Drop_Student',               #help => 'Course_Drop_Student',
              url => '/adm/createuser?action=drop',               url => '/adm/createuser?action=drop',
              permission => $permission->{'cusr'},               permission => $permission->{'cusr'},
              linktitle =>'Remove a student from this course.',               linktitle => $linktitle{$crstype}{'drop'},
             },              },
         );          );
         push(@{ $menu[2]->{items} }, #Category: Administration          push(@{ $menu[2]->{items} }, #Category: Administration
Line 4118  sub print_main_menu { Line 4277  sub print_main_menu {
              linktitle => 'Configure a custom role.',               linktitle => 'Configure a custom role.',
             },              },
             {              {
              linktext => 'Course Groups',               linktext => $linktext{$crstype}{'groups'},
              icon => 'conf.png',               icon => 'conf.png',
              #help => 'Course_Manage_Group',               #help => 'Course_Manage_Group',
              url => '/adm/coursegroups?refpage=cusr',               url => '/adm/coursegroups?refpage=cusr',
              permission => $permission->{'grp_manage'},               permission => $permission->{'grp_manage'},
              linktitle => 'Manage course groups.',               linktitle => $linktitle{$crstype}{'groups'},
             },              },
             {              {
              linktext => 'Change Logs',               linktext => 'Change Logs',
Line 4148  sub print_main_menu { Line 4307  sub print_main_menu {
         }          }
                   
         if (!exists($permission->{'cusr_section'})){          if (!exists($permission->{'cusr_section'})){
                           if ($crstype ne 'Community') {
             push(@{ $menu[2]->{items} },                  push(@{ $menu[2]->{items} },
                 {                      {
                  linktext => 'Automated Enrollment',                       linktext => 'Automated Enrollment',
                  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'}),
                  url  => '/adm/populate',                       url  => '/adm/populate',
                  linktitle => 'Automated enrollment manager.',                       linktitle => 'Automated enrollment manager.',
                 },                      }
                   );
               }
               push(@{ $menu[2]->{items} }, 
                 {                  {
                  linktext => 'User Self-Enrollment',                   linktext => 'User Self-Enrollment',
                  icon => 'cstr.png',                   icon => 'cstr.png',
                  #help => 'Course_Self_Enrollment',                   #help => 'Course_Self_Enrollment',
                  url => '/adm/createuser?action=selfenroll',                   url => '/adm/createuser?action=selfenroll',
                  permission => $permission->{'cusr'},                   permission => $permission->{'cusr'},
                  linktitle => 'Configure user self enrollment.',                   linktitle => 'Configure user self-enrollment.',
                 },                  },
             );              );
           
         }          }
     };      };
 return Apache::lonhtmlcommon::generate_menu(@menu);  return Apache::lonhtmlcommon::generate_menu(@menu);
Line 4641  sub visible_in_cat { Line 4802  sub visible_in_cat {
     my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);      my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
     my ($cathash,%settable,@vismsgs,$cansetvis);      my ($cathash,%settable,@vismsgs,$cansetvis);
     my %visactions = &Apache::lonlocal::texthash(      my %visactions = &Apache::lonlocal::texthash(
                    vis => 'Your course currently appears in the Course Catalog for this domain.',                     vis => 'Your course/community currently appears in the Course/Community Catalog for this domain.',
                    gen => 'Courses can be both self-cataloging, based on an institutional code (e.g., fs08phy231), or can be assigned categories from a hierarchy defined for the domain.',                     gen => 'Courses can be both self-cataloging, based on an institutional code (e.g., fs08phy231), or can be assigned categories from a hierarchy defined for the domain.',
                    miss => 'Your course does not currently appear in the Course Catalog for this domain.',                     miss => 'Your course/community does not currently appear in the Course/Community Catalog for this domain.',
                    yous => 'You should remedy this if you plan to allow self-enrollment, otherwise students will have difficulty finding your course.',                     yous => 'You should remedy this if you plan to allow self-enrollment, otherwise students will have difficulty finding your course.',
                    coca => 'Courses can be absent from the Catalog, because they do not have an institutional code, have no assigned category, or have been specifically excluded.',                     coca => 'Courses can be absent from the Catalog, because they do not have an institutional code, have no assigned category, or have been specifically excluded.',
                    make => 'Make any changes to self-enrollment settings below, click "Save", then take action to include the course in the Catalog:',                     make => 'Make any changes to self-enrollment settings below, click "Save", then take action to include the course in the Catalog:',
Line 4859  sub print_userchangelogs_display { Line 5020  sub print_userchangelogs_display {
     my $formname = 'roleslog';      my $formname = 'roleslog';
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
       my $crstype = &Apache::loncommon::course_type();
     my %roleslog=&Apache::lonnet::dump('nohist_rolelog',$cdom,$cnum);      my %roleslog=&Apache::lonnet::dump('nohist_rolelog',$cdom,$cnum);
     if ((keys(%roleslog))[0]=~/^error\:/) { undef(%roleslog); }      if ((keys(%roleslog))[0]=~/^error\:/) { undef(%roleslog); }
   
Line 4897  sub print_userchangelogs_display { Line 5059  sub print_userchangelogs_display {
     }      }
     my (%whodunit,%changed,$version);      my (%whodunit,%changed,$version);
     ($version) = ($r->dir_config('lonVersion') =~ /^([\d\.]+)\-/);      ($version) = ($r->dir_config('lonVersion') =~ /^([\d\.]+)\-/);
     $r->print(&role_display_filter($formname,$cdom,$cnum,\%curr,$version));      $r->print(&role_display_filter($formname,$cdom,$cnum,\%curr,$version,$crstype));
     my ($minshown,$maxshown);      my ($minshown,$maxshown);
     $minshown = 1;      $minshown = 1;
     my $count = 0;      my $count = 0;
Line 4966  sub print_userchangelogs_display { Line 5128  sub print_userchangelogs_display {
         if ($roleslog{$id}{'logentry'}{'selfenroll'}) {          if ($roleslog{$id}{'logentry'}{'selfenroll'}) {
             $chgcontext = 'selfenroll';              $chgcontext = 'selfenroll';
         }          }
         my %lt = &rolechg_contexts();          my %lt = &rolechg_contexts($crstype);
         if ($chgcontext ne '' && $lt{$chgcontext} ne '') {          if ($chgcontext ne '' && $lt{$chgcontext} ne '') {
             $chgcontext = $lt{$chgcontext};              $chgcontext = $lt{$chgcontext};
         }          }
Line 4976  sub print_userchangelogs_display { Line 5138  sub print_userchangelogs_display {
            .'<td>'.&Apache::lonlocal::locallocaltime($roleslog{$id}{'exe_time'}).'</td>'             .'<td>'.&Apache::lonlocal::locallocaltime($roleslog{$id}{'exe_time'}).'</td>'
            .'<td>'.$whodunit{$roleslog{$id}{'exe_uname'}.':'.$roleslog{$id}{'exe_udom'}}.'</td>'             .'<td>'.$whodunit{$roleslog{$id}{'exe_uname'}.':'.$roleslog{$id}{'exe_udom'}}.'</td>'
            .'<td>'.$changed{$roleslog{$id}{'uname'}.':'.$roleslog{$id}{'udom'}}.'</td>'             .'<td>'.$changed{$roleslog{$id}{'uname'}.':'.$roleslog{$id}{'udom'}}.'</td>'
            .'<td>'.&Apache::lonnet::plaintext($roleslog{$id}{'logentry'}{'role'}).'</td>'             .'<td>'.&Apache::lonnet::plaintext($roleslog{$id}{'logentry'}{'role'},$crstype).'</td>'
            .'<td>'.$sec.'</td>'             .'<td>'.$sec.'</td>'
            .'<td>'.$chgcontext.'</td>'             .'<td>'.$chgcontext.'</td>'
            .'<td>'.$rolestart.'</td>'             .'<td>'.$rolestart.'</td>'
Line 5068  ENDSCRIPT Line 5230  ENDSCRIPT
 }  }
   
 sub role_display_filter {  sub role_display_filter {
     my ($formname,$cdom,$cnum,$curr,$version) = @_;      my ($formname,$cdom,$cnum,$curr,$version,$crstype) = @_;
     my $context = 'course';      my $context = 'course';
       my $lctype = lc($crstype);
     my $nolink = 1;      my $nolink = 1;
     my $output = '<table><tr><td valign="top">'.      my $output = '<table><tr><td valign="top">'.
                  '<span class="LC_nobreak"><b>'.&mt('Changes/page:').'</b></span><br />'.                   '<span class="LC_nobreak"><b>'.&mt('Changes/page:').'</b></span><br />'.
Line 5084  sub role_display_filter { Line 5247  sub role_display_filter {
         &Apache::lonhtmlcommon::date_setter($formname,'rolelog_end_date',          &Apache::lonhtmlcommon::date_setter($formname,'rolelog_end_date',
                                             $curr->{'rolelog_end_date'},undef,                                              $curr->{'rolelog_end_date'},undef,
                                             undef,undef,undef,undef,undef,undef,$nolink);                                              undef,undef,undef,undef,undef,undef,$nolink);
     my %lt = &rolechg_contexts();      my %lt = &rolechg_contexts($crstype);
     $output .= '<td valign="top"><b>'.&mt('Window during which changes occurred:').'</b><br />'.      $output .= '<td valign="top"><b>'.&mt('Window during which changes occurred:').'</b><br />'.
                '<table><tr><td>'.&mt('After:').                 '<table><tr><td>'.&mt('After:').
                '</td><td>'.$startform.'</td></tr>'.                 '</td><td>'.$startform.'</td></tr>'.
Line 5098  sub role_display_filter { Line 5261  sub role_display_filter {
         $output .= ' selected="selected"';          $output .= ' selected="selected"';
     }      }
     $output .=  '>'.&mt('Any').'</option>'."\n";      $output .=  '>'.&mt('Any').'</option>'."\n";
     my @roles = &Apache::lonuserutils::course_roles($context,undef,1);      my @roles = &Apache::lonuserutils::course_roles($context,undef,1,$lctype);
     foreach my $role (@roles) {      foreach my $role (@roles) {
         my $plrole;          my $plrole;
         if ($role eq 'cr') {          if ($role eq 'cr') {
             $plrole = &mt('Custom Role');              $plrole = &mt('Custom Role');
         } else {          } else {
             $plrole=&Apache::lonnet::plaintext($role);              $plrole=&Apache::lonnet::plaintext($role,$crstype);
         }          }
         my $selstr = '';          my $selstr = '';
         if ($role eq $curr->{'role'}) {          if ($role eq $curr->{'role'}) {
Line 5116  sub role_display_filter { Line 5279  sub role_display_filter {
                '<td>&nbsp;&nbsp;</td>'.                 '<td>&nbsp;&nbsp;</td>'.
                '<td valign="top"><b>'.                 '<td valign="top"><b>'.
                &mt('Context:').'</b><br /><select name="chgcontext">';                 &mt('Context:').'</b><br /><select name="chgcontext">';
     foreach my $chgtype ('any','auto','updatenow','createcourse','course','domain','selfenroll') {      foreach my $chgtype ('any','auto','updatenow','createcourse','course','domain','selfenroll','requestcourses') {
         my $selstr = '';          my $selstr = '';
         if ($curr->{'chgcontext'} eq $chgtype) {          if ($curr->{'chgcontext'} eq $chgtype) {
             $selstr = ' selected="selected"';              $selstr = ' selected="selected"';
Line 5146  sub role_display_filter { Line 5309  sub role_display_filter {
 }  }
   
 sub rolechg_contexts {  sub rolechg_contexts {
       my ($crstype) = @_;
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
                                              any          => 'Any',                                               any          => 'Any',
                                              auto         => 'Automated enrollment',                                               auto         => 'Automated enrollment',
Line 5153  sub rolechg_contexts { Line 5317  sub rolechg_contexts {
                                              createcourse => 'Course Creation',                                               createcourse => 'Course Creation',
                                              course       => 'User Management in course',                                               course       => 'User Management in course',
                                              domain       => 'User Management in domain',                                               domain       => 'User Management in domain',
                                              selfenroll   => 'Self-enrolled',                                                selfenroll   => 'Self-enrolled',
                                                requestcourses => 'Course Request',
                                          );                                           );
       if ($crstype eq 'Community') {
           $lt{'createcourse'} = &mt('Community Creation');
           $lt{'course'} = &mt('User Management in community');
           $lt{'requestcourses'} = &mt('Community Request');
       }
     return %lt;      return %lt;
 }  }
   
Line 5571  sub build_search_response { Line 5741  sub build_search_response {
                     my $helplink = ' href="javascript:helpMenu('."'display'".')"';                      my $helplink = ' href="javascript:helpMenu('."'display'".')"';
                     $response .= '<br /><br />';                      $response .= '<br /><br />';
                     if ($context eq 'requestcrs') {                      if ($context eq 'requestcrs') {
                         $response .= &mt("You are not authorized to defined new users in the new course's domain - [_1].",$targetdom);                          $response .= &mt("You are not authorized to define new users in the new course's domain - [_1].",$targetdom);
                     } else {                      } else {
                         $response .= &mt("You are not authorized to create new users in your current role's domain - [_1].",$targetdom);                          $response .= &mt("You are not authorized to create new users in your current role's domain - [_1].",$targetdom);
                     }                      }
Line 5682  sub course_level_table { Line 5852  sub course_level_table {
         }          }
         my @roles = &Apache::lonuserutils::roles_by_context('course');          my @roles = &Apache::lonuserutils::roles_by_context('course');
  foreach my $role (@roles) {   foreach my $role (@roles) {
             my $plrole=&Apache::lonnet::plaintext($role);              my $plrole=&Apache::lonnet::plaintext($role,$type);
     if (&Apache::lonnet::allowed('c'.$role,$thiscourse)) {      if (&Apache::lonnet::allowed('c'.$role,$thiscourse)) {
                 $table .= &course_level_row($protectedcourse,$role,$area,$domain,                  $table .= &course_level_row($protectedcourse,$role,$area,$domain,
                                             $plrole,\%sections_count,\%lt);                                                  $plrole,\%sections_count,\%lt);    
Line 5775  sub course_level_dc { Line 5945  sub course_level_dc {
                       '<input type="hidden" name="dccourse" value="" />';                        '<input type="hidden" name="dccourse" value="" />';
     my $courseform='<b>'.&Apache::loncommon::selectcourse_link      my $courseform='<b>'.&Apache::loncommon::selectcourse_link
             ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course').'</b>';              ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course').'</b>';
     my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu');      my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu','role');
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                     'rol'  => "Role",                      'rol'  => "Role",
                     'grs'  => "Section",                      'grs'  => "Section",

Removed from v.1.312  
changed lines
  Added in v.1.320


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