Diff for /loncom/interface/loncreateuser.pm between versions 1.258 and 1.268.2.1

version 1.258, 2008/07/18 02:12:39 version 1.268.2.1, 2008/12/14 15:32:37
Line 33  package Apache::loncreateuser; Line 33  package Apache::loncreateuser;
   
 =head1 NAME  =head1 NAME
   
 Apache::loncreateuser - handler to create users and custom roles  Apache::loncreateuser.pm
   
 =head1 SYNOPSIS  =head1 SYNOPSIS
   
 Apache::loncreateuser provides an Apache handler for creating users,      Handler to create users and custom roles
   
       Provides an Apache handler for creating users,
     editing their login parameters, roles, and removing roles, and      editing their login parameters, roles, and removing roles, and
     also creating and assigning custom roles.      also creating and assigning custom roles.
   
Line 120  sub auth_abbrev { Line 122  sub auth_abbrev {
 sub portfolio_quota {  sub portfolio_quota {
     my ($ccuname,$ccdomain) = @_;      my ($ccuname,$ccdomain) = @_;
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
                    'disk' => "Disk space allocated to user's portfolio files",                     'usrt'      => "User Tools",
                    'cuqu' => "Current quota",                     'blog'      => "Personal User Blog",
                    'cust' => "Custom quota",                     'aboutme'   => "Personal Information Page",
                    'defa' => "Default",                     'portfolio' => "Personal User Portfolio",
                    'chqu' => "Change quota",                     'avai'      => "Available",
                      'cusa'      => "availability",
                      'chse'      => "Change setting",
                      'disk'      => "Disk space allocated to user's portfolio files",
                      'cuqu'      => "Current quota",
                      'cust'      => "Custom quota",
                      'defa'      => "Default",
                      'usde'      => "Use default",
                      'uscu'      => "Use custom",
                      'chqu'      => "Change quota",
     );      );
     my ($currquota,$quotatype,$inststatus,$defquota) =       my ($currquota,$quotatype,$inststatus,$defquota) = 
         &Apache::loncommon::get_user_quota($ccuname,$ccdomain);          &Apache::loncommon::get_user_quota($ccuname,$ccdomain);
Line 173  END_SCRIPT Line 184  END_SCRIPT
                                " affiliation ([_2]).",$defquota,$longinsttype);                                 " affiliation ([_2]).",$defquota,$longinsttype);
         }          }
     }      }
     my $output = $quota_javascript.  
                  '<h3>'.$lt{'disk'}.'</h3>'.      my $output = $quota_javascript."\n".
                  &Apache::loncommon::start_data_table().                   '<h3>'.$lt{'usrt'}.'</h3>'."\n".
                  &Apache::loncommon::start_data_table_row().                   &Apache::loncommon::start_data_table();
                  '<td>'.$lt{'cuqu'}.': '.$currquota.'&nbsp;Mb.&nbsp;&nbsp;'.  
                  $defaultinfo.'</td>'.      if (&Apache::lonnet::allowed('mut',$ccdomain)) {
                  &Apache::loncommon::end_data_table_row().          my %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
                  &Apache::loncommon::start_data_table_row().                            'tools.aboutme','tools.portfolio','tools.blog');
                  '<td><span class="LC_nobreak">'.$lt{'chqu'}.          my @usertools = ('aboutme','blog','portfolio');
                  ': <label>'.          foreach my $item (@usertools) {
                  '<input type="radio" name="customquota" value="0" '.              my ($custom_access,$curr_access,$cust_on,$cust_off,$tool_on,$tool_off);
                  $custom_off.' onchange="javascript:quota_changes('."'custom'".')"              $cust_off = 'checked="checked" ';
                   />'.$lt{'defa'}.'&nbsp;('.$defquota.' Mb).</label>&nbsp;'.              $tool_on = 'checked="checked" ';
                  '&nbsp;<label><input type="radio" name="customquota" value="1" '.               $curr_access = &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item);
                  $custom_on.'  onchange="javascript:quota_changes('."'custom'".')" />'.              if ($userenv{'tools.'.$item} eq '') {
                  $lt{'cust'}.':</label>&nbsp;'.                  $custom_access = 'default';
                  '<input type="text" name="portfolioquota" size ="5" value="'.                  if (!$curr_access) {
                  $showquota.'" onfocus="javascript:quota_changes('."'quota'".')" '.                      $tool_off = 'checked="checked" ';
                  '/>&nbsp;Mb</span></td>'.                      $tool_on = '';
                  &Apache::loncommon::end_data_table_row().                  }
                  &Apache::loncommon::end_data_table();              } else {
                   $custom_access = 'custom';
                   $cust_on = ' checked="checked" ';
                   $cust_off = '';
                   if ($userenv{'tools.'.$item} == 0) {
                       $tool_off = 'checked="checked" ';
                       $tool_on = '';
                   }
               }
               $curr_access = &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item);
               $output .= '  <tr class="LC_info_row">'."\n".
                          '   <td>'.$lt{$item}.'</td>'."\n".
                          '  </tr>'."\n".
                          &Apache::loncommon::start_data_table_row()."\n".
                          '  <td>'.&mt('Availability determined currently from [_1] setting.',$custom_access).
                          '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$lt{'avai'}.': '.
                          ($curr_access?&mt('Yes'):&mt('No')).'</td>'."\n".
                          &Apache::loncommon::end_data_table_row()."\n".
                          &Apache::loncommon::start_data_table_row()."\n".
                          '  <td><span class="LC_nobreak">'.$lt{'chse'}.': <label>'.
                          '<input type="radio" name="custom'.$item.'" value="0" '.
                          $cust_off.'/>'.$lt{'usde'}.'</label>&nbsp;&nbsp;&nbsp;'.
                          '<label><input type="radio" name="custom'.$item.'" value="1" '.
                          $cust_on.'/>'.$lt{'uscu'}.'</label>&nbsp;&nbsp;--&nbsp;&nbsp;'.
                          $lt{'cusa'}.':&nbsp;<label>'.
                          '<input type="radio" name="tools_'.$item.'" value="1" '.
                          $tool_on.'/>'.&mt('On').'</label>&nbsp;<label>'.
                          '<input type="radio" name="tools_'.$item.'" value="0" '.
                          $tool_off.'/>'.&mt('Off').'</label></span></td>'."\n".
                          &Apache::loncommon::end_data_table_row()."\n";
           }
       }
       if (&Apache::lonnet::allowed('mpq',$ccdomain)) {
           $output .= '<tr class="LC_info_row">'."\n".
                      '    <td>'.$lt{'disk'}.'</td>'."\n".
                      '  </tr>'."\n".
                      &Apache::loncommon::start_data_table_row()."\n".
                      '  <td>'.$lt{'cuqu'}.': '.
                      $currquota.'&nbsp;Mb.&nbsp;&nbsp;'.
                      $defaultinfo.'</td>'."\n".
                      &Apache::loncommon::end_data_table_row()."\n".
                      &Apache::loncommon::start_data_table_row()."\n".
                      '  <td><span class="LC_nobreak">'.$lt{'chqu'}.
                      ': <label>'.
                      '<input type="radio" name="customquota" value="0" '.
                      $custom_off.' onchange="javascript:quota_changes('."'custom'".')"'.
                      ' />'.$lt{'defa'}.'&nbsp;('.$defquota.' Mb).</label>&nbsp;'.
                      '&nbsp;<label><input type="radio" name="customquota" value="1" '. 
                      $custom_on.'  onchange="javascript:quota_changes('."'custom'".')" />'.
                      $lt{'cust'}.':</label>&nbsp;'.
                      '<input type="text" name="portfolioquota" size ="5" value="'.
                      $showquota.'" onfocus="javascript:quota_changes('."'quota'".')" '.
                      '/>&nbsp;Mb</span></td>'."\n".
                      &Apache::loncommon::end_data_table_row()."\n";
       }  
       $output .= &Apache::loncommon::end_data_table();
     return $output;      return $output;
 }  }
   
Line 649  ENDFORMINFO Line 715  ENDFORMINFO
     }      }
     if ($newuser) {      if ($newuser) {
         my $portfolioform;          my $portfolioform;
         if (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) {          if ((&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) ||
             # Current user has quota modification privileges              (&Apache::lonnet::allowed('mut',$env{'request.role.domain'}))) {
               # Current user has quota or user tools modification privileges
             $portfolioform = '<br />'.&portfolio_quota($ccuname,$ccdomain);              $portfolioform = '<br />'.&portfolio_quota($ccuname,$ccdomain);
         }          }
         &initialize_authen_forms($ccdomain,$formname);          &initialize_authen_forms($ccdomain,$formname);
Line 775  ENDCHANGEUSER Line 842  ENDCHANGEUSER
         }          }
         $r->print('</div>');          $r->print('</div>');
         my $user_auth_text =  &user_authentication($ccuname,$ccdomain,$formname);          my $user_auth_text =  &user_authentication($ccuname,$ccdomain,$formname);
         my $user_quota_text;          my ($user_quota_text,$user_tools_text);
         if (&Apache::lonnet::allowed('mpq',$ccdomain)) {          if ((&Apache::lonnet::allowed('mpq',$ccdomain)) ||
               (&Apache::lonnet::allowed('mut',$ccdomain))) {
             # Current user has quota modification privileges              # Current user has quota modification privileges
             $user_quota_text = &portfolio_quota($ccuname,$ccdomain);              $user_quota_text = &portfolio_quota($ccuname,$ccdomain);
         } elsif (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) {          }
             # Get the user's portfolio information          if (!&Apache::lonnet::allowed('mpq',$ccdomain)) {
             my %portq = &Apache::lonnet::get('environment',['portfolioquota'],              if (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) {
                                              $ccdomain,$ccuname);                  # Get the user's portfolio information
                   my %portq = &Apache::lonnet::get('environment',['portfolioquota'],
             my %lt=&Apache::lonlocal::texthash(                                                   $ccdomain,$ccuname);
                 'dska'  => "Disk space allocated to user's portfolio files",                  my %lt=&Apache::lonlocal::texthash(
                 'youd'  => "You do not have privileges to modify the portfolio quota for this user.",                      'dska'  => "Disk space allocated to user's portfolio files",
                 'ichr'  => "If a change is required, contact a domain coordinator for the domain",                      'youd'  => "You do not have privileges to modify the portfolio quota for this user.",
             );                      'ichr'  => "If a change is required, contact a domain coordinator for the domain",
             $user_quota_text = <<ENDNOPORTPRIV;                  );
                   $user_quota_text = <<ENDNOPORTPRIV;
 <h3>$lt{'dska'}</h3>  <h3>$lt{'dska'}</h3>
 $lt{'youd'} $lt{'ichr'}: $ccdomain  $lt{'youd'} $lt{'ichr'}: $ccdomain
 ENDNOPORTPRIV  ENDNOPORTPRIV
               }
           }
           if (!&Apache::lonnet::allowed('mut',$ccdomain)) {
               if (&Apache::lonnet::allowed('mut',$env{'request.role.domain'})) {
                   my %lt=&Apache::lonlocal::texthash(
                       'utav'  => "User Tools Availability",
                       'yodo'  => "You do not have privileges to modify Portfolio, Blog or Home Page settings for this user.",
                       'ifch'  => "If a change is required, contact a domain coordinator for the domain",
                   );
                   $user_tools_text = <<ENDNOTOOLSPRIV;
   <h3>$lt{'utav'}</h3>
   $lt{'yodo'} $lt{'ifch'}: $ccdomain
   ENDNOTOOLSPRIV
               }
         }          }
         if ($user_auth_text ne '') {          if ($user_auth_text ne '') {
             $r->print('<div class="LC_left_float">'.$user_auth_text);              $r->print('<div class="LC_left_float">'.$user_auth_text);
             if ($user_quota_text ne '') {              if ($user_quota_text ne '') {
                 $r->print($user_quota_text);                  $r->print($user_quota_text);
             }              }
               if ($user_tools_text ne '') {
                   $r->print($user_tools_text);
               }
             if ($env{'form.action'} eq 'singlestudent') {              if ($env{'form.action'} eq 'singlestudent') {
                 $r->print(&date_sections_select($context,$newuser,$formname));                  $r->print(&date_sections_select($context,$newuser,$formname));
             }              }
         } elsif ($user_quota_text ne '') {          } elsif ($user_quota_text ne '') {
             $r->print('<div class="LC_left_float">'.$user_quota_text);              $r->print('<div class="LC_left_float">'.$user_quota_text);
               if ($user_tools_text ne '') {
                   $r->print($user_tools_text);
               }
               if ($env{'form.action'} eq 'singlestudent') {
                   $r->print(&date_sections_select($context,$newuser,$formname));
               }
           } elsif ($user_tools_text ne '') {
               $r->print('<div class="LC_left_float">'.$user_tools_text);
             if ($env{'form.action'} eq 'singlestudent') {              if ($env{'form.action'} eq 'singlestudent') {
                 $r->print(&date_sections_select($context,$newuser,$formname));                  $r->print(&date_sections_select($context,$newuser,$formname));
             }              }
Line 833  ENDNOPORTPRIV Line 927  ENDNOPORTPRIV
                 $addrolesdisplay = $add_domainroles;                  $addrolesdisplay = $add_domainroles;
             }              }
             $r->print(&course_level_dc($env{'request.role.domain'},'Course'));              $r->print(&course_level_dc($env{'request.role.domain'},'Course'));
             $r->print('<br /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()" />'."\n");              $r->print('<br /><input type="button" value="'.&mt('Save').'" onClick="setCourse()" />'."\n");
         } elsif ($context eq 'author') {          } elsif ($context eq 'author') {
             if ($addrolesdisplay) {              if ($addrolesdisplay) {
                 $r->print('<br /><input type="button" value="'.&mt('Modify User').'"');                  $r->print('<br /><input type="button" value="'.&mt('Save').'"');
                 if ($newuser) {                  if ($newuser) {
                     $r->print(' onClick="auth_check()" \>'."\n");                      $r->print(' onClick="auth_check()" \>'."\n");
                 } else {                  } else {
Line 848  ENDNOPORTPRIV Line 942  ENDNOPORTPRIV
             }              }
         } else {          } else {
             $r->print(&course_level_table(%inccourses));              $r->print(&course_level_table(%inccourses));
             $r->print('<br /><input type="button" value="'.&mt('Modify User').'" onClick="setSections(this.form)" />'."\n");              $r->print('<br /><input type="button" value="'.&mt('Save').'" onClick="setSections(this.form)" />'."\n");
         }          }
     }      }
     $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain']));      $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain']));
Line 967  sub display_existing_roles { Line 1061  sub display_existing_roles {
                 if (defined($coursedata{'description'})) {                  if (defined($coursedata{'description'})) {
                     $carea=$coursedata{'description'}.                      $carea=$coursedata{'description'}.
                         '<br />'.&mt('Domain').': '.$coursedom.('&nbsp;'x8).                          '<br />'.&mt('Domain').': '.$coursedom.('&nbsp;'x8).
      &Apache::loncommon::syllabuswrapper('Syllabus',$coursedir,$coursedom);       &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$coursedir,$coursedom);
                     $sortkey.="\0".$coursedata{'description'};                      $sortkey.="\0".$coursedata{'description'};
                     $class=$coursedata{'type'};                      $class=$coursedata{'type'};
                 } else {                  } else {
Line 1421  sub personal_data_display { Line 1515  sub personal_data_display {
                 'lastname'       => "Last Name",                  'lastname'       => "Last Name",
                 'generation'     => "Generation",                  'generation'     => "Generation",
                 'permanentemail' => "Permanent e-mail address",                  'permanentemail' => "Permanent e-mail address",
                 'id'             => "ID/Student Number",                  'id'             => "Student/Employee ID",
                 'lg'             => "Login Data"                  'lg'             => "Login Data"
     );      );
     my %textboxsize = (      my %textboxsize = (
Line 1645  sub update_user_data { Line 1739  sub update_user_data {
     $r->print('<h3>'.&mt('User [_1] in domain [_2]',      $r->print('<h3>'.&mt('User [_1] in domain [_2]',
  $env{'form.ccuname'}, $env{'form.ccdomain'}).'</h3>');   $env{'form.ccuname'}, $env{'form.ccdomain'}).'</h3>');
     my (%alerts,%rulematch,%inst_results,%curr_rules);      my (%alerts,%rulematch,%inst_results,%curr_rules);
       my @usertools = ('aboutme','blog','portfolio');
     if ($env{'form.makeuser'}) {      if ($env{'form.makeuser'}) {
  $r->print('<h3>'.&mt('Creating new account.').'</h3>');   $r->print('<h3>'.&mt('Creating new account.').'</h3>');
         # Check for the authentication mode and password          # Check for the authentication mode and password
Line 1704  sub update_user_data { Line 1799  sub update_user_data {
  $r->print(&mt('Generating user').': '.$result);   $r->print(&mt('Generating user').': '.$result);
         $uhome = &Apache::lonnet::homeserver($env{'form.ccuname'},          $uhome = &Apache::lonnet::homeserver($env{'form.ccuname'},
                                                $env{'form.ccdomain'});                                                 $env{'form.ccdomain'});
         if (($uhome ne 'no_host') && ($env{'form.customquota'} == 1)) {          my (%changeHash,%newcustom,%changed);
             my (%changeHash,$newportfolioquota);          if ($uhome ne 'no_host') {
             if ($env{'form.portfolioquota'} eq '') {              if ($env{'form.customquota'} == 1) {
                 $newportfolioquota = 0;                  if ($env{'form.portfolioquota'} eq '') {
             } else {                      $newcustom{'quota'} = 0;
                 $newportfolioquota = $env{'form.portfolioquota'};                  } else {
                 $newportfolioquota =~ s/[^\d\.]//g;                      $newcustom{'quota'} = $env{'form.portfolioquota'};
                       $newcustom{'quota'} =~ s/[^\d\.]//g;
                   }
                   $changed{'quota'} = &quota_admin($newcustom{'quota'},\%changeHash);
             }              }
             my $quotachanged = &quota_admin($newportfolioquota,\%changeHash);              foreach my $item (@usertools) {
             if ($quotachanged) {                  if ($env{'form.custom'.$item} == 1) {
                       $newcustom{$item} = $env{'form.tools_'.$item};
                       $changed{$item} = &tool_admin($item,$newcustom{$item},\%changeHash);
                   }
               }
               if (keys(%changed)) {
                 $changeHash{'firstname'}  = $env{'form.cfirstname'};                  $changeHash{'firstname'}  = $env{'form.cfirstname'};
                 $changeHash{'middlename'} = $env{'form.cmiddlename'};                  $changeHash{'middlename'} = $env{'form.cmiddlename'};
                 $changeHash{'lastname'}   = $env{'form.clastname'};                  $changeHash{'lastname'}   = $env{'form.clastname'};
                 $changeHash{'generation'} = $env{'form.cgeneration'};                  $changeHash{'generation'} = $env{'form.cgeneration'};
                 $changeHash{'id'}         = $env{'form.cid'};                  $changeHash{'id'}         = $env{'form.cid'};
                 $changeHash{'permanentemail'} = $env{'form.cpermanentemail'};                  $changeHash{'permanentemail'} = $env{'form.cpermanentemail'};
                 my $quotachgresult =                  my $chgresult =
                     &Apache::lonnet::put('environment',\%changeHash,                       &Apache::lonnet::put('environment',\%changeHash,
                                          $env{'form.ccdomain'},$env{'form.ccuname'});                                            $env{'form.ccdomain'},$env{'form.ccuname'});
             }              } 
         }          }
         $r->print('<br />'.&mt('Home server').': '.$uhome.' '.          $r->print('<br />'.&mt('Home server').': '.$uhome.' '.
                   &Apache::lonnet::hostname($uhome));                    &Apache::lonnet::hostname($uhome));
Line 1756  sub update_user_data { Line 1859  sub update_user_data {
         # Check for need to change          # Check for need to change
         my %userenv = &Apache::lonnet::get          my %userenv = &Apache::lonnet::get
             ('environment',['firstname','middlename','lastname','generation',              ('environment',['firstname','middlename','lastname','generation',
              'id','permanentemail','portfolioquota','inststatus'],               'id','permanentemail','portfolioquota','inststatus','tools.aboutme',
                'tools.blog','tools.portfolio'],
               $env{'form.ccdomain'},$env{'form.ccuname'});                $env{'form.ccdomain'},$env{'form.ccuname'});
         my ($tmp) = keys(%userenv);          my ($tmp) = keys(%userenv);
         if ($tmp =~ /^(con_lost|error)/i) {           if ($tmp =~ /^(con_lost|error)/i) { 
Line 1847  sub update_user_data { Line 1951  sub update_user_data {
                 $env{'form.c'.$item} = $userenv{$item};                  $env{'form.c'.$item} = $userenv{$item};
             }              }
         }          }
         # Check to see if we can change the ID/student number          # Check to see if we can change the Student/Employee ID
         my $forceid = $env{'form.forceid'};          my $forceid = $env{'form.forceid'};
         my $recurseid = $env{'form.recurseid'};          my $recurseid = $env{'form.recurseid'};
         my (%alerts,%rulematch,%idinst_results,%curr_rules,%got_rules);          my (%alerts,%rulematch,%idinst_results,%curr_rules,%got_rules);
Line 1858  sub update_user_data { Line 1962  sub update_user_data {
             (!$forceid)) {              (!$forceid)) {
             if ($env{'form.cid'} ne $uidhash{$env{'form.ccuname'}}) {              if ($env{'form.cid'} ne $uidhash{$env{'form.ccuname'}}) {
                 $env{'form.cid'} = $userenv{'id'};                  $env{'form.cid'} = $userenv{'id'};
                 $no_forceid_alert = &mt('New student/employeeID does not match existing ID for this user.').'<br />'.&mt('Change is not permitted without checking the \'Force ID change\' checkbox on the previous page.').'<br />'."\n";                          $no_forceid_alert = &mt('New Student/Employee ID does not match existing ID for this user.')
                                      .'<br />'
                                      .&mt("Change is not permitted without checking the 'Force ID change' checkbox on the previous page.")
                                      .'<br />'."\n";
             }              }
         }          }
         if ($env{'form.cid'} ne $userenv{'id'}) {          if ($env{'form.cid'} ne $userenv{'id'}) {
Line 1878  sub update_user_data { Line 1985  sub update_user_data {
         }          }
         my ($quotachanged,$oldportfolioquota,$newportfolioquota,          my ($quotachanged,$oldportfolioquota,$newportfolioquota,
             $inststatus,$oldisdefault,$newisdefault,$olddefquotatext,              $inststatus,$oldisdefault,$newisdefault,$olddefquotatext,
             $newdefquotatext);              $newdefquotatext,%oldaccess,%oldaccesstext,%newaccess,%newaccesstext);
         my ($defquota,$settingstatus) =           my ($defquota,$settingstatus) = 
             &Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus);              &Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus);
         my $showquota;          my ($showquota,$showtools);
         if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {          if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
             $showquota = 1;              $showquota = 1;
         }          }
         my %changeHash;          if (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) {
               $showtools = 1;
           }
           my (%changeHash,%changed);
         $changeHash{'portfolioquota'} = $userenv{'portfolioquota'};          $changeHash{'portfolioquota'} = $userenv{'portfolioquota'};
         if ($userenv{'portfolioquota'} ne '') {          if ($userenv{'portfolioquota'} ne '') {
             $oldportfolioquota = $userenv{'portfolioquota'};              $oldportfolioquota = $userenv{'portfolioquota'};
Line 1897  sub update_user_data { Line 2007  sub update_user_data {
                     $newportfolioquota =~ s/[^\d\.]//g;                      $newportfolioquota =~ s/[^\d\.]//g;
                 }                  }
                 if ($newportfolioquota != $oldportfolioquota) {                  if ($newportfolioquota != $oldportfolioquota) {
                     $quotachanged = &quota_admin($newportfolioquota,\%changeHash);                      $changed{'quota'} = &quota_admin($newportfolioquota,\%changeHash);
                 }                  }
             } else {              } else {
                 $quotachanged = &quota_admin('',\%changeHash);                  $changed{'quota'} = &quota_admin('',\%changeHash);
                 $newportfolioquota = $defquota;                  $newportfolioquota = $defquota;
                 $newisdefault = 1;                   $newisdefault = 1; 
             }              }
Line 1914  sub update_user_data { Line 2024  sub update_user_data {
                     $newportfolioquota = $env{'form.portfolioquota'};                      $newportfolioquota = $env{'form.portfolioquota'};
                     $newportfolioquota =~ s/[^\d\.]//g;                      $newportfolioquota =~ s/[^\d\.]//g;
                 }                  }
                 $quotachanged = &quota_admin($newportfolioquota,\%changeHash);                  $changed{'quota'} = &quota_admin($newportfolioquota,\%changeHash);
             } else {              } else {
                 $newportfolioquota = $defquota;                  $newportfolioquota = $defquota;
                 $newisdefault = 1;                  $newisdefault = 1;
Line 1926  sub update_user_data { Line 2036  sub update_user_data {
         if ($newisdefault) {          if ($newisdefault) {
             $newdefquotatext = &get_defaultquota_text($settingstatus);              $newdefquotatext = &get_defaultquota_text($settingstatus);
         }          }
           
           foreach my $tool (@usertools) {
               if ($userenv{'tools.'.$tool} ne '') {
                   $oldaccess{$tool} = &mt('custom');
                   if ($userenv{'tools_'.$tool}) {
                       $oldaccesstext{$tool} = &mt("availability set to 'on'");
                   } else {
                       $oldaccesstext{$tool} = &mt("availability set to 'off'");
                   }
                   $changeHash{'tools.'.$tool} = $userenv{'tools.'.$tool};
                   if ($env{'form.custom'.$tool} == 1) {
                       if ($env{'form.tools_'.$tool} ne $userenv{'tools.'.$tool}) {
                           $changed{$tool} = &tool_admin($tool,$env{'form.tools_'.$tool},
                                                         \%changeHash);
                           if ($changed{$tool}) {
                               $newaccess{$tool} = &mt('custom');
                               if ($env{'form.tools_'.$tool}) { 
                                   $newaccesstext{$tool} = &mt("availability set to 'on'");
                               } else {
                                   $newaccesstext{$tool} = &mt("availability set to 'off'");
                               }
                           } else {
                               $newaccess{$tool} = $oldaccess{$tool};
                               if ($userenv{'tools.'.$tool}) {
                                   $newaccesstext{$tool} = &mt("availability set to 'on'");
                               } else {
                                   $newaccesstext{$tool} = &mt("availability set to 'off'");
                               }
                           }
                       } else {
                           $newaccess{$tool} = $oldaccess{$tool};
                           $newaccesstext{$tool} = $oldaccesstext{$tool};
                       }
                   } else {
                       $changed{$tool} = &tool_admin($tool,'',\%changeHash);
                       print STDERR "for $tool - changed is $changed{$tool}\n";
                       if ($changed{$tool}) {
                           $newaccess{$tool} = &mt('default');
                       } else {
                           $newaccess{$tool} = $oldaccess{$tool};
                           if ($userenv{'tools.'.$tool}) {
                                $newaccesstext{$tool} = &mt("availability set to 'on'");
                           } else {
                                $newaccesstext{$tool} = &mt("availability set to 'off'");
                           }
                       }
                   }
               } else {
                   $oldaccess{$tool} = &mt('default');
                   if ($env{'form.custom'.$tool} == 1) {
                       $changed{$tool} = &tool_admin($tool,$env{'form.tools_'.$tool},
                                                     \%changeHash);
                       if ($changed{$tool}) {
                           $newaccess{$tool} = &mt('custom');
                           if ($env{'form.tools_'.$tool}) {
                               $newaccesstext{$tool} = &mt("availability set to 'on'");
                           } else {
                               $newaccesstext{$tool} = &mt("availability set to 'off'");
                           }
                       } else {
                           $newaccess{$tool} = $oldaccess{$tool};
                       }
                   } else {
                       $newaccess{$tool} = $oldaccess{$tool};
                   }
               }
           }
   
         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'} ||
             $env{'form.clastname'}   ne $userenv{'lastname'}   ||              $env{'form.clastname'}   ne $userenv{'lastname'}   ||
Line 1934  sub update_user_data { Line 2112  sub update_user_data {
             $env{'form.cpermanentemail'} ne $userenv{'permanentemail'} ) {              $env{'form.cpermanentemail'} ne $userenv{'permanentemail'} ) {
             $namechanged = 1;              $namechanged = 1;
         }          }
         if ($namechanged || $quotachanged) {          if (($namechanged) || (keys(%changed) > 0)) {
             $changeHash{'firstname'}  = $env{'form.cfirstname'};              $changeHash{'firstname'}  = $env{'form.cfirstname'};
             $changeHash{'middlename'} = $env{'form.cmiddlename'};              $changeHash{'middlename'} = $env{'form.cmiddlename'};
             $changeHash{'lastname'}   = $env{'form.clastname'};              $changeHash{'lastname'}   = $env{'form.clastname'};
             $changeHash{'generation'} = $env{'form.cgeneration'};              $changeHash{'generation'} = $env{'form.cgeneration'};
             $changeHash{'id'}         = $env{'form.cid'};              $changeHash{'id'}         = $env{'form.cid'};
             $changeHash{'permanentemail'} = $env{'form.cpermanentemail'};              $changeHash{'permanentemail'} = $env{'form.cpermanentemail'};
             my ($quotachgresult,$namechgresult);              my ($chgresult,$namechgresult);
             if ($quotachanged) {              if (keys(%changed) > 0) {
                 $quotachgresult =                   $chgresult = 
                     &Apache::lonnet::put('environment',\%changeHash,                      &Apache::lonnet::put('environment',\%changeHash,
                                   $env{'form.ccdomain'},$env{'form.ccuname'});                                    $env{'form.ccdomain'},$env{'form.ccuname'});
                   if ($chgresult eq 'ok') {
                       my %newenvhash;
                       my $hashid="$env{'form.ccuname'}:$env{'form.ccdomain'}";
                       foreach my $key (keys(%changed)) {
                           if ($key ne 'quota') {
                               &Apache::lonnet::devalidate_cache_new('usertools.'.$key,$hashid);
                               $newenvhash{'environment.tools.'.$key} = 
                                   $changeHash{'tools.'.$key};
                           }
                       }
                       if (($env{'user.name'} eq $env{'form.ccuname'}) &&
                           ($env{'user.domain'} eq $env{'form.ccdomain'})) {
                           &Apache::lonnet::appenv(\%newenvhash);
                       }
                   }
             }              }
             if ($namechanged) {              if ($namechanged) {
             # Make the change              # Make the change
Line 1964  sub update_user_data { Line 2157  sub update_user_data {
                              );                               );
             }              }
             if (($namechanged && $namechgresult eq 'ok') ||               if (($namechanged && $namechgresult eq 'ok') || 
                 ($quotachanged && $quotachgresult eq 'ok')) {                  ((keys(%changed) > 0) && $chgresult eq 'ok')) {
             # Tell the user we changed the name              # Tell the user we changed the name
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
                              'uic'  => "User Information Changed",                                            'uic'       => "User Information Changed",             
                              'frst' => "first",                               'frst'      => "First",
                              'mddl' => "middle",                               'mddl'      => "Middle",
                              'lst'  => "last",                               'lst'       => "Last",
      'gen'  => "generation",       'gen'       => "Generation",
                              'id'   => "ID/Student number",                               'id'        => "Student/Employee ID",
                              'mail' => "permanent e-mail",                               'mail'      => "Permanent E-mail",
                              'disk' => "disk space allocated to portfolio files",                               'disk'      => "Disk space allocated to portfolio files",
                              'prvs' => "Previous",                               'blog'      => "Blog Availability",
                              'chto' => "Changed To"                               'aboutme'   => "Home Page Availability",
                                'portfolio' => "Portfolio Availability",
                                'prvs'      => "Previous",
                                'chto'      => "Changed To"
    );     );
                 $r->print('<h4>'.$lt{'uic'}.'</h4>'.                  $r->print('<h4>'.$lt{'uic'}.'</h4>'.
                           &Apache::loncommon::start_data_table().                            &Apache::loncommon::start_data_table().
Line 1994  END Line 2190  END
                     $r->print("                      $r->print("
     <th>$lt{'disk'}</th>\n");      <th>$lt{'disk'}</th>\n");
                 }                  }
                   if ($showtools) {
                       foreach my $item (@usertools) {
                           $r->print("
       <th>$lt{$item}</th>\n");
                       }
                   }
                 $r->print(&Apache::loncommon::end_data_table_header_row().                  $r->print(&Apache::loncommon::end_data_table_header_row().
                           &Apache::loncommon::start_data_table_row());                            &Apache::loncommon::start_data_table_row());
                 $r->print(<<"END");                  $r->print(<<"END");
Line 2009  END Line 2211  END
                     $r->print("                      $r->print("
     <td>$oldportfolioquota Mb $olddefquotatext </td>\n");      <td>$oldportfolioquota Mb $olddefquotatext </td>\n");
                 }                  }
                   if ($showtools) {
                       foreach my $item (@usertools) {
                           $r->print("
       <td>$oldaccess{$item} $oldaccesstext{$item} </td>\n");
                       }
                   }
                 $r->print(&Apache::loncommon::end_data_table_row().                  $r->print(&Apache::loncommon::end_data_table_row().
                           &Apache::loncommon::start_data_table_row());                            &Apache::loncommon::start_data_table_row());
                 $r->print(<<"END");                  $r->print(<<"END");
     <td><b>$lt{'chto'}</b></td>      <td><span class="LC_nobreak"><b>$lt{'chto'}</b></span></td>
     <td>$env{'form.cfirstname'}  </td>      <td>$env{'form.cfirstname'}  </td>
     <td>$env{'form.cmiddlename'} </td>      <td>$env{'form.cmiddlename'} </td>
     <td>$env{'form.clastname'}   </td>      <td>$env{'form.clastname'}   </td>
Line 2024  END Line 2232  END
                     $r->print("                      $r->print("
     <td>$newportfolioquota Mb $newdefquotatext </td>\n");      <td>$newportfolioquota Mb $newdefquotatext </td>\n");
                 }                  }
                   if ($showtools) {
                       foreach my $item (@usertools) {
                           $r->print("
       <td>$newaccess{$item} $newaccesstext{$item} </td>\n");
                       }
                   }
                 $r->print(&Apache::loncommon::end_data_table_row().                  $r->print(&Apache::loncommon::end_data_table_row().
                           &Apache::loncommon::end_data_table().'<br />');                            &Apache::loncommon::end_data_table().'<br />');
                 if ($env{'form.cid'} ne $userenv{'id'}) {                  if ($env{'form.cid'} ne $userenv{'id'}) {
Line 2052  END Line 2266  END
                       $env{'form.ccdomain'}.'</span><br />');                        $env{'form.ccdomain'}.'</span><br />');
             }              }
         }  else { # End of if ($env ... ) logic          }  else { # End of if ($env ... ) logic
             # They did not want to change the users name or quota but we can              # They did not want to change the users name, quota or tool availability,
             # still tell them what the name and quota are               # but we can still tell them what the name and quota and availabilities are  
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                            'id'   => "ID/Student number",                             'id'        => "Student/Employee ID",
                            'mail' => "Permanent e-mail",                             'mail'      => "Permanent e-mail",
                            'disk' => "Disk space allocated to user's portfolio files",                             'disk'      => "Disk space allocated to user's portfolio files",
                              'blog'      => "Blog Availability",
                              'aboutme'   => "Home Page Availability",
                              'portfolio' => "Portfolio Availability",
        );         );
             $r->print(<<"END");              $r->print(<<"END");
 <h4>$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'}  <h4>$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'}
Line 2066  END Line 2283  END
                 $r->print('<br />['.$lt{'mail'}.': '.                  $r->print('<br />['.$lt{'mail'}.': '.
                           $userenv{'permanentemail'}.']');                            $userenv{'permanentemail'}.']');
             }              }
               if ($showtools) {
                   foreach my $item (@usertools) {
                       $r->print('<br />['.$lt{$item}.': '.$newaccess{$item}.' '.
                                 $newaccesstext{$item}.']'."\n");
                   }
               }
             if ($showquota) {              if ($showquota) {
                 $r->print('<br />['.$lt{'disk'}.': '.$oldportfolioquota.' Mb '.                   $r->print('<br />['.$lt{'disk'}.': '.$oldportfolioquota.' Mb '.
                           $olddefquotatext.']');                            $olddefquotatext.']');
             }              }
             $r->print('</h4>');              $r->print('</h4>');
Line 2098  END Line 2321  END
             $r->print('<span class="LC_cusr_emph">'.$rolestr.'</span><br />'.              $r->print('<span class="LC_cusr_emph">'.$rolestr.'</span><br />'.
                       &mt('Contact your <a href="[_1]">helpdesk</a> for more information.',"javascript:helpMenu('display')").'<br />');                        &mt('Contact your <a href="[_1]">helpdesk</a> for more information.',"javascript:helpMenu('display')").'<br />');
         }          }
         $r->print($no_forceid_alert.          $r->print('<span class="LC_warning">'
                   &Apache::lonuserutils::print_namespacing_alerts($env{'form.ccdomain'},\%alerts,\%curr_rules));                    .$no_forceid_alert
                     .&Apache::lonuserutils::print_namespacing_alerts($env{'form.ccdomain'},\%alerts,\%curr_rules)
                     .'</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);
Line 2241  sub update_roles { Line 2466  sub update_roles {
     my $result=&Apache::lonnet::assignrole($env{'form.ccdomain'},      my $result=&Apache::lonnet::assignrole($env{'form.ccdomain'},
                                $env{'form.ccuname'},$url,$role,0,$now,'','',                                 $env{'form.ccuname'},$url,$role,0,$now,'','',
                                $context);                                 $context);
     $output = &mt('Re-enabling [_1] in [_2]: <b>[_3]</b>',      $output = &mt('Re-enabling [_1] in [_2]: [_3]',
       $role,$url,$result).'<br />';        $role,$url,'<b>'.$result.'</b>').'<br />';
  }   }
                 $r->print($output);                  $r->print($output);
                 if (!grep(/^\Q$role\E$/,@rolechanges)) {                  if (!grep(/^\Q$role\E$/,@rolechanges)) {
Line 2255  sub update_roles { Line 2480  sub update_roles {
                 my $result = &Apache::lonnet::assigncustomrole(                  my $result = &Apache::lonnet::assigncustomrole(
                                $env{'form.ccdomain'}, $env{'form.ccuname'},                                 $env{'form.ccdomain'}, $env{'form.ccuname'},
                                $url,$rdom,$rnam,$rolename,0,$now,undef,$context);                                 $url,$rdom,$rnam,$rolename,0,$now,undef,$context);
                 $r->print(&mt('Re-enabling custom role [_1] by [_2]@[_3] in [_4] : <b>[_5]</b>',                  $r->print(&mt('Re-enabling custom role [_1] by [_2]:[_3] in [_4] : [_5]',
                           $rolename,$rnam,$rdom,$url,$result).'<br />');                            $rolename,$rnam,$rdom,$url,'<b>'.$result.'</b>').'<br />');
                 if (!grep(/^cr$/,@rolechanges)) {                  if (!grep(/^cr$/,@rolechanges)) {
                     push(@rolechanges,'cr');                      push(@rolechanges,'cr');
                 }                  }
Line 2485  sub quota_admin { Line 2710  sub quota_admin {
     my $quotachanged;      my $quotachanged;
     if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {      if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
         # Current user has quota modification privileges          # Current user has quota modification privileges
         $quotachanged = 1;          if (ref($changeHash) eq 'HASH') {
         $changeHash->{'portfolioquota'} = $setquota;              $quotachanged = 1;
               $changeHash->{'portfolioquota'} = $setquota;
           }
     }      }
     return $quotachanged;      return $quotachanged;
 }  }
   
   sub tool_admin {
       my ($tool,$settool,$changeHash) = @_;
       my $toolchanged;
       if (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) {
           # Current user has quota modification privileges
           if (ref($changeHash) eq 'HASH') {
               $toolchanged = 1;
               $changeHash->{'tools.'.$tool} = $settool;
           }
       }
       return $toolchanged;
   }
   
 sub build_roles {  sub build_roles {
     my ($sectionstr,$sections,$role) = @_;      my ($sectionstr,$sections,$role) = @_;
     my $num_sections = 0;      my $num_sections = 0;
Line 2600  sub custom_role_editor { Line 2840  sub custom_role_editor {
     my @template_roles = ("cc","in","ta","ep","st");      my @template_roles = ("cc","in","ta","ep","st");
     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).' ';
     }      }
     $head_script .= "\n".$jsback."\n".'</script>'."\n";      $head_script .= "\n".$jsback."\n".'</script>'."\n";
     $r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script));      $r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script));
Line 2620  sub custom_role_editor { Line 2860  sub custom_role_editor {
     'crl'  => "Course Level",      'crl'  => "Course Level",
                     'dml'  => "Domain Level",                      'dml'  => "Domain Level",
                     'ssl'  => "System Level");                      'ssl'  => "System Level");
     $r->print(&mt('Select a Template').'<br />');  
     $r->print('<form action="">');      $r->print('<div>'
     $r->print($button_code);               .'<form action=""><fieldset>'
     $r->print('</form>');               .'<legend>'.&mt('Select a Template').'</legend>'
                .$button_code
                .'</fieldset></form>'
                .'</div>'
       );
   
     $r->print(<<ENDCCF);      $r->print(<<ENDCCF);
 <form name="form1" method="post">  <form name="form1" method="post">
 <input type="hidden" name="phase" value="set_custom_roles" />  <input type="hidden" name="phase" value="set_custom_roles" />
Line 2726  sub make_script_template { Line 2971  sub make_script_template {
 sub make_button_code {  sub make_button_code {
     my ($role) = @_;      my ($role) = @_;
     my $label = &Apache::lonnet::plaintext($role);      my $label = &Apache::lonnet::plaintext($role);
     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);
 }  }
 # ---------------------------------------------------------- Call to definerole  # ---------------------------------------------------------- Call to definerole
Line 3131  sub print_main_menu { Line 3376  sub print_main_menu {
             action => 'upload',              action => 'upload',
             permission => $permission->{'cusr'},              permission => $permission->{'cusr'},
             },              },
           { text => $links{$context}{'singleuser'},             { text => $links{$context}{'singleuser'},
             help => 'Course_Change_Privileges',              help => 'Course_Change_Privileges',
             action => 'singleuser',              action => 'singleuser',
             permission => $permission->{'cusr'},              permission => $permission->{'cusr'},
Line 3175  sub print_main_menu { Line 3420  sub print_main_menu {
                { text => 'Configure User Self-enrollment',                 { text => 'Configure User Self-enrollment',
                  help => 'Course_Self_Enrollment',                   help => 'Course_Self_Enrollment',
                  action => 'selfenroll',                   action => 'selfenroll',
                  permission => $permission->{'cusr'},                       permission => $permission->{'cusr'},
                });                 });
         }          }
         push(@courselinks,          push(@courselinks,
Line 3209  sub print_main_menu { Line 3454  sub print_main_menu {
             $menu_html.=qq{<a href="$menu_item->{'url'}">};              $menu_html.=qq{<a href="$menu_item->{'url'}">};
         } else {          } else {
             $menu_html.=              $menu_html.=
                 qq{<a href="/adm/createuser?action=$menu_item->{'action'}">};                  qq{<a href="/adm/createuser?action=$menu_item->{'action'}">};        }
         }  
         $menu_html.= &mt($menu_item->{'text'}).'</a></font>';          $menu_html.= &mt($menu_item->{'text'}).'</a></font>';
         $menu_html.='</p>';          $menu_html.='</p>';
     }      }
Line 3604  sub visible_in_cat { Line 3848  sub visible_in_cat {
                    dc_chgcat => 'Ask a domain coordinator to change the category assigned to the course, as the one currently assigned is no longer used in the domain',                     dc_chgcat => 'Ask a domain coordinator to change the category assigned to the course, as the one currently assigned is no longer used in the domain',
                    dc_addcat => 'Ask a domain coordinator to assign a category to the course.',                     dc_addcat => 'Ask a domain coordinator to assign a category to the course.',
     );      );
     $visactions{'unhide'} = &mt('Use [_1]Set course environment[_2] to change the "Exclude from course catalog" setting.','<a href="/adm/parmset?action=crsenv">','</a>');      $visactions{'unhide'} = &mt('Use [_1]Set course environment[_2] to change the "Exclude from course catalog" setting.','"<a href="/adm/parmset?action=crsenv">','</a>"');
     $visactions{'chgcat'} = &mt('Use [_1]Set course environment[_2] to change the category assigned to the course, as the one currently assigned is no longer used in the domain.','<a href="/adm/parmset?action=crsenv">','</a>');      $visactions{'chgcat'} = &mt('Use [_1]Set course environment[_2] to change the category assigned to the course, as the one currently assigned is no longer used in the domain.','"<a href="/adm/parmset?action=crsenv">','</a>"');
     $visactions{'addcat'} = &mt('Use [_1]Set course environment[_2] to assign a category to the course.','<a href="/adm/parmset?action=crsenv">','</a>');      $visactions{'addcat'} = &mt('Use [_1]Set course environment[_2] to assign a category to the course.','"<a href="/adm/parmset?action=crsenv">','</a>"');
     if (ref($domconf{'coursecategories'}) eq 'HASH') {      if (ref($domconf{'coursecategories'}) eq 'HASH') {
         if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {          if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
             $settable{'togglecats'} = 1;              $settable{'togglecats'} = 1;
Line 3616  sub visible_in_cat { Line 3860  sub visible_in_cat {
         }          }
         $cathash = $domconf{'coursecategories'}{'cats'};          $cathash = $domconf{'coursecategories'}{'cats'};
     }      }
     if ($settable{'togglecats'} && $settable{'categories'}) {      if ($settable{'togglecats'} && $settable{'categorize'}) {
         $cansetvis = &mt('You are able to both assign a course category and choose to exclude this course from the catalog.');             $cansetvis = &mt('You are able to both assign a course category and choose to exclude this course from the catalog.');   
     } elsif ($settable{'togglecats'}) {      } elsif ($settable{'togglecats'}) {
         $cansetvis = &mt('You are able to choose to exclude this course from the catalog, but only a Domain Coordinator may assign a course category.');           $cansetvis = &mt('You are able to choose to exclude this course from the catalog, but only a Domain Coordinator may assign a course category.'); 
     } elsif ($settable{'categories'}) {      } elsif ($settable{'categorize'}) {
         $cansetvis = &mt('You may assign a course category, but only a Domain Coordinator may choose to exclude this course from the catalog.');            $cansetvis = &mt('You may assign a course category, but only a Domain Coordinator may choose to exclude this course from the catalog.');  
     } else {      } else {
         $cansetvis = &mt('Only a Domain Coordinator may assign a course category or choose to exclude this course from the catalog.');           $cansetvis = &mt('Only a Domain Coordinator may assign a course category or choose to exclude this course from the catalog.'); 
Line 3674  sub visible_in_cat { Line 3918  sub visible_in_cat {
                         }                          }
                     }                      }
                     if (!$matched) {                      if (!$matched) {
                         if ($settable{'categories'}) {                           if ($settable{'categorize'}) { 
                             push(@vismsgs,'chgcat');                              push(@vismsgs,'chgcat');
                         } else {                          } else {
                             push(@vismsgs,'dc_chgcat');                              push(@vismsgs,'dc_chgcat');
Line 3687  sub visible_in_cat { Line 3931  sub visible_in_cat {
         if (ref($cathash) eq 'HASH') {          if (ref($cathash) eq 'HASH') {
             if ((keys(%{$cathash}) > 1) ||               if ((keys(%{$cathash}) > 1) || 
                 (keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} eq '')) {                  (keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} eq '')) {
                 if ($settable{'categories'}) {                  if ($settable{'categorize'}) {
                     push(@vismsgs,'addcat');                      push(@vismsgs,'addcat');
                 } else {                  } else {
                     push(@vismsgs,'dc_addcat');                      push(@vismsgs,'dc_addcat');
Line 4413  sub build_search_response { Line 4657  sub build_search_response {
                     &Apache::lonuserutils::can_create_user($env{'request.role.domain'},$context);                      &Apache::lonuserutils::can_create_user($env{'request.role.domain'},$context);
                 if ($cancreate) {                  if ($cancreate) {
                     my $showdom = &display_domain_info($env{'request.role.domain'});                       my $showdom = &display_domain_info($env{'request.role.domain'}); 
                     $response .= '<br /><br />'.&mt("<b>To add a new user</b> (you can only create new users in your current role's domain - <span class=\"LC_cusr_emph\">[_1]</span>):",$env{'request.role.domain'}).'<ul><li>'.&mt("Set 'Domain/institution to search' to: <span class=\"LC_cusr_emph\">[_1]</span>",$showdom).'<li>'.&mt("Set 'Search criteria' to: <span class=\"LC_cusr_emph\">'username is ...... in selected LON-CAPA domain'").'</span></li><li>'.&mt('Provide the proposed username').'</li><li>'.&mt('Search').'</li></ul><br />';                      $response .= '<br /><br />'
                                   .'<b>'.&mt('To add a new user:').'</b>'
                                   .'<br />'
                                   .&mt("(You can only create new users in your current role's domain - [_1])"
                                       ,'<span class="LC_cusr_emph">'.$env{'request.role.domain'}.'</span>')
                                   .'<ul><li>'
                                   .&mt("Set 'Domain/institution to search' to: [_1]",'<span class="LC_cusr_emph">'.$showdom.'</span>')
                                   .'</li><li>'
                                   .&mt("Set 'Search criteria' to: [_1]username is ..... in selected LON-CAPA domain[_2]",'<span class="LC_cusr_emph">','</span>')
                                   .'</li><li>'
                                   .&mt('Provide the proposed username')
                                   .'</li><li>'
                                   .&mt("Click 'Search'")
                                   .'</li></ul><br />';
                 } else {                  } else {
                     my $helplink = ' href="javascript:helpMenu('."'display'".')"';                      my $helplink = ' href="javascript:helpMenu('."'display'".')"';
                     $response .= '<br /><br />'.&mt("You are not authorized to create new users in your current role's domain - <span class=\"LC_cusr_emph\">[_1]</span>.",$env{'request.role.domain'}).'<br />'.&mt('Contact the <a[_1]>helpdesk</a> if you need to create a new user.',$helplink).'<br /><br />';                      $response .= '<br /><br />'
                                   .&mt("You are not authorized to create new users in your current role's domain - [_1]."
                                       ,'<span class="LC_cusr_emph">'.$env{'request.role.domain'}.'</span>')
                                   .'<br />'
                                   .&mt('Contact the [_1]helpdesk[_2] if you need to create a new user.'
                                       ,' <a'.$helplink.'>'
                                       ,'</a>')
                                   .'<br /><br />';
                 }                  }
             }              }
         }          }

Removed from v.1.258  
changed lines
  Added in v.1.268.2.1


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