Diff for /loncom/interface/loncreateuser.pm between versions 1.406.2.13 and 1.429

version 1.406.2.13, 2017/03/26 23:33:46 version 1.429, 2017/01/18 21:00:05
Line 252  sub build_tools_display { Line 252  sub build_tools_display {
                    'unofficial' => 'Can request creation of unofficial courses',                     'unofficial' => 'Can request creation of unofficial courses',
                    'community'  => 'Can request creation of communities',                     'community'  => 'Can request creation of communities',
                    'textbook'   => 'Can request creation of textbook courses',                     'textbook'   => 'Can request creation of textbook courses',
                      'placement'  => 'Can request creation of placement tests',
                    'requestauthor'  => 'Can request author space',                     'requestauthor'  => 'Can request author space',
     );      );
     if ($context eq 'requestcourses') {      if ($context eq 'requestcourses') {
         %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,          %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
                       'requestcourses.official','requestcourses.unofficial',                        'requestcourses.official','requestcourses.unofficial',
                       'requestcourses.community','requestcourses.textbook');                        'requestcourses.community','requestcourses.textbook',
         @usertools = ('official','unofficial','community','textbook');                        'requestcourses.placement');
           @usertools = ('official','unofficial','community','textbook','placement');
         @options =('norequest','approval','autolimit','validate');          @options =('norequest','approval','autolimit','validate');
         %validations = &Apache::lonnet::auto_courserequest_checks($ccdomain);          %validations = &Apache::lonnet::auto_courserequest_checks($ccdomain);
         %reqtitles = &courserequest_titles();          %reqtitles = &courserequest_titles();
Line 333  sub build_tools_display { Line 335  sub build_tools_display {
                    '   <td'.$colspan.'>'.$lt{$item}.'</td>'."\n".                     '   <td'.$colspan.'>'.$lt{$item}.'</td>'."\n".
                    '  </tr>'."\n".                     '  </tr>'."\n".
                    &Apache::loncommon::start_data_table_row()."\n";                     &Apache::loncommon::start_data_table_row()."\n";
     
         if (($context eq 'requestcourses') || ($context eq 'requestauthor')) {          if (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
             my ($curroption,$currlimit);              my ($curroption,$currlimit);
             my $envkey = $context.'.'.$item;              my $envkey = $context.'.'.$item;
Line 451  sub coursereq_externaluser { Line 454  sub coursereq_externaluser {
                    'unofficial' => 'Can request creation of unofficial courses',                     'unofficial' => 'Can request creation of unofficial courses',
                    'community'  => 'Can request creation of communities',                     'community'  => 'Can request creation of communities',
                    'textbook'   => 'Can request creation of textbook courses',                     'textbook'   => 'Can request creation of textbook courses',
                      'placement'  => 'Can request creation of placement tests',
     );      );
   
     %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,      %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
                       'reqcrsotherdom.official','reqcrsotherdom.unofficial',                        'reqcrsotherdom.official','reqcrsotherdom.unofficial',
                       'reqcrsotherdom.community','reqcrsotherdom.textbook');                        'reqcrsotherdom.community','reqcrsotherdom.textbook',
     @usertools = ('official','unofficial','community','textbook');                        'reqcrsotherdom.placement');
       @usertools = ('official','unofficial','community','textbook','placement');
     @options = ('approval','validate','autolimit');      @options = ('approval','validate','autolimit');
     %validations = &Apache::lonnet::auto_courserequest_checks($cdom);      %validations = &Apache::lonnet::auto_courserequest_checks($cdom);
     my $optregex = join('|',@options);      my $optregex = join('|',@options);
Line 537  sub courserequest_titles { Line 542  sub courserequest_titles {
                                    unofficial => 'Unofficial',                                     unofficial => 'Unofficial',
                                    community  => 'Communities',                                     community  => 'Communities',
                                    textbook   => 'Textbook',                                     textbook   => 'Textbook',
                                      placement  => 'Placement Tests',
                                    norequest  => 'Not allowed',                                     norequest  => 'Not allowed',
                                    approval   => 'Approval by Dom. Coord.',                                     approval   => 'Approval by Dom. Coord.',
                                    validate   => 'With validation',                                     validate   => 'With validation',
Line 749  sub print_username_entry_form { Line 755  sub print_username_entry_form {
         }          }
     } else {      } else {
         my $actiontext = $lt{'srad'};          my $actiontext = $lt{'srad'};
         my $fixeddom;  
         if ($env{'form.action'} eq 'singlestudent') {          if ($env{'form.action'} eq 'singlestudent') {
             if ($crstype eq 'Community') {              if ($crstype eq 'Community') {
                 $actiontext = $lt{'srme'};                  $actiontext = $lt{'srme'};
Line 758  sub print_username_entry_form { Line 763  sub print_username_entry_form {
             }              }
         } elsif ($env{'form.action'} eq 'accesslogs') {          } elsif ($env{'form.action'} eq 'accesslogs') {
             $actiontext = $lt{'srva'};              $actiontext = $lt{'srva'};
             $fixeddom = 1;  
         } elsif (($env{'form.action'} eq 'singleuser') &&          } elsif (($env{'form.action'} eq 'singleuser') &&
                  ($context eq 'domain') && (!&Apache::lonnet::allowed('mau',$defdom))) {                   ($context eq 'domain') && (!&Apache::lonnet::allowed('mau',$defdom))) {
             $actiontext = $lt{'srvu'};              $actiontext = $lt{'srvu'};
Line 770  sub print_username_entry_form { Line 774  sub print_username_entry_form {
                          '<br clear="all" />');                           '<br clear="all" />');
             }              }
         }          }
         $r->print(&entry_form($defdom,$srch,$forcenewuser,$context,$response,$crstype,$fixeddom));          $r->print(&entry_form($defdom,$srch,$forcenewuser,$context,$response,$crstype,1));
     }      }
 }  }
   
Line 856  ENDBLOCK Line 860  ENDBLOCK
         $output = '<p>'.$userpicker.'</p>';          $output = '<p>'.$userpicker.'</p>';
     }      }
     if (($env{'form.phase'} eq '') && ($env{'form.action'} ne 'accesslogs') &&      if (($env{'form.phase'} eq '') && ($env{'form.action'} ne 'accesslogs') &&
         (!(($env{'form.action'} eq 'singleuser') && ($context eq 'domain') &&          (!(($env{'form.action'} eq 'singleuser') && ($context eq 'domain') && 
         (!&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))))) {          (!&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))))) {
         my $defdom=$env{'request.role.domain'};          my $defdom=$env{'request.role.domain'};
         my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');          my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');
Line 1431  ENDAUTH Line 1435  ENDAUTH
         $r->print('<div class="LC_left_float">');          $r->print('<div class="LC_left_float">');
         $r->print(&personal_data_display($ccuname,$ccdomain,$newuser,$context,          $r->print(&personal_data_display($ccuname,$ccdomain,$newuser,$context,
                                          $inst_results{$ccuname.':'.$ccdomain}));                                           $inst_results{$ccuname.':'.$ccdomain}));
         if ((&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) ||          if ((&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) || 
             (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) {              (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) {
             $r->print('<br /><h3>'.&mt('User Can Request Creation of Courses/Communities in this Domain?').'</h3>'.              $r->print('<br /><h3>'.&mt('User Can Request Creation of Courses/Communities in this Domain?').'</h3>'.
                       &Apache::loncommon::start_data_table());                        &Apache::loncommon::start_data_table());
Line 1451  ENDAUTH Line 1455  ENDAUTH
         if ((!$isauthor) &&           if ((!$isauthor) && 
             ((&Apache::lonnet::allowed('cau',$env{'request.role.domain'})) ||              ((&Apache::lonnet::allowed('cau',$env{'request.role.domain'})) ||
              (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) &&               (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) &&
              ($env{'request.role.domain'} eq $ccdomain)) {              ($env{'request.role.domain'} eq $ccdomain)) {
             $user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain);              $user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain);
         }          }
         $user_text{'auth'} =  &user_authentication($ccuname,$ccdomain,$formname);          $user_text{'auth'} =  &user_authentication($ccuname,$ccdomain,$formname);
Line 1522  ENDNOTOOLSPRIV Line 1526  ENDNOTOOLSPRIV
         } elsif (($context eq 'course') && ((&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) ||          } elsif (($context eq 'course') && ((&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) ||
                  ($env{'request.course.sec'} &&                   ($env{'request.course.sec'} &&
                   &Apache::lonnet::allowed('vcl',$env{'request.course.id'}.'/'.$env{'request.course.sec'})))) {                    &Apache::lonnet::allowed('vcl',$env{'request.course.id'}.'/'.$env{'request.course.sec'})))) {
             $statuses = ['active'];              $statuses = ['active'];   
         }          }
         if ($env{'form.action'} ne 'singlestudent') {          if ($env{'form.action'} ne 'singlestudent') {
             &display_existing_roles($r,$ccuname,$ccdomain,\%inccourses,$context,              &display_existing_roles($r,$ccuname,$ccdomain,\%inccourses,$context,
Line 1756  sub display_existing_roles { Line 1760  sub display_existing_roles {
         if ($active) {          if ($active) {
             next unless($showall || $showactive);              next unless($showall || $showactive);
         } else {          } else {
             next unless($showall || $showexpired);              next unless($showall || $showexpired); 
         }          }
 # Is this a custom role? Get role owner and title.  # Is this a custom role? Get role owner and title.
         my ($croleudom,$croleuname,$croletitle)=          my ($croleudom,$croleuname,$croletitle)=
Line 1901  sub display_existing_roles { Line 1905  sub display_existing_roles {
             } else {              } else {
                 $row.='&nbsp;';                  $row.='&nbsp;';
             }              }
             $row.= '</td>';              $row.= '</td>'; 
         }          }
         my $plaintext='';          my $plaintext='';
         if (!$croletitle) {          if (!$croletitle) {
Line 2170  $lt{'uuas'} ($currentauth). $lt{'adcs'}. Line 2174  $lt{'uuas'} ($currentauth). $lt{'adcs'}.
 ENDBADAUTH  ENDBADAUTH
         }          }
     } else { # Authentication type is valid      } else { # Authentication type is valid
           
         &initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');          &initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');
         my ($authformcurrent,$can_modify,@authform_others) =          my ($authformcurrent,$can_modify,@authform_others) =
             &modify_login_block($ccdomain,$currentauth);              &modify_login_block($ccdomain,$currentauth);
Line 2728  sub update_user_data { Line 2733  sub update_user_data {
     my (%alerts,%rulematch,%inst_results,%curr_rules);      my (%alerts,%rulematch,%inst_results,%curr_rules);
     my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');      my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');
     my @usertools = ('aboutme','blog','webdav','portfolio');      my @usertools = ('aboutme','blog','webdav','portfolio');
     my @requestcourses = ('official','unofficial','community','textbook');      my @requestcourses = ('official','unofficial','community','textbook','placement');
     my @requestauthor = ('requestauthor');      my @requestauthor = ('requestauthor');
     my ($othertitle,$usertypes,$types) =       my ($othertitle,$usertypes,$types) = 
         &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});          &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});
Line 2901  sub update_user_data { Line 2906  sub update_user_data {
              'requestcourses.community','requestcourses.textbook',               'requestcourses.community','requestcourses.textbook',
              'reqcrsotherdom.official','reqcrsotherdom.unofficial',               'reqcrsotherdom.official','reqcrsotherdom.unofficial',
              'reqcrsotherdom.community','reqcrsotherdom.textbook',               'reqcrsotherdom.community','reqcrsotherdom.textbook',
              'requestauthor'],               'reqcrsotherdom.placement','requestauthor'],
               $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 3192  sub update_user_data { Line 3197  sub update_user_data {
                         ($env{'user.domain'} eq $env{'form.ccdomain'})) {                          ($env{'user.domain'} eq $env{'form.ccdomain'})) {
                         my %newenvhash;                          my %newenvhash;
                         foreach my $key (keys(%changed)) {                          foreach my $key (keys(%changed)) {
                             if (($key eq 'official') || ($key eq 'unofficial')                              if (($key eq 'official') || ($key eq 'unofficial') ||
                                 || ($key eq 'community') || ($key eq 'textbook')) {                                  ($key eq 'community') || ($key eq 'textbook') ||
                                   ($key eq 'placement')) {
                                 $newenvhash{'environment.requestcourses.'.$key} =                                  $newenvhash{'environment.requestcourses.'.$key} =
                                     $changeHash{'requestcourses.'.$key};                                      $changeHash{'requestcourses.'.$key};
                                 if ($changeHash{'requestcourses.'.$key}) {                                  if ($changeHash{'requestcourses.'.$key}) {
Line 3259  sub update_user_data { Line 3265  sub update_user_data {
                                   \%newsettingstext);                                    \%newsettingstext);
                 if ($env{'form.cid'} ne $userenv{'id'}) {                  if ($env{'form.cid'} ne $userenv{'id'}) {
                     &Apache::lonnet::idput($env{'form.ccdomain'},                      &Apache::lonnet::idput($env{'form.ccdomain'},
                          {$env{'form.ccuname'} => $env{'form.cid'}});                           {$env{'form.ccuname'} => $env{'form.cid'}},$uhome,'ids');
                     if (($recurseid) &&                      if (($recurseid) &&
                         (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}))) {                          (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}))) {
                         my $idresult =                           my $idresult = 
Line 3402  sub display_userinfo { Line 3408  sub display_userinfo {
          'unofficial'     => 'Can Request Unofficial Courses',           'unofficial'     => 'Can Request Unofficial Courses',
          'community'      => 'Can Request Communities',           'community'      => 'Can Request Communities',
          'textbook'       => 'Can Request Textbook Courses',           'textbook'       => 'Can Request Textbook Courses',
            'placement'      => 'Can Request Placement Tests',
          'requestauthor'  => 'Can Request Author Role',           'requestauthor'  => 'Can Request Author Role',
          'inststatus'     => "Affiliation",           'inststatus'     => "Affiliation",
          'prvs'           => 'Previous Value:',           'prvs'           => 'Previous Value:',
Line 4377  sub custom_role_editor { Line 4384  sub custom_role_editor {
               );                );
     my $args = { bread_crumbs          => $brcrum,      my $args = { bread_crumbs          => $brcrum,
                  bread_crumbs_component => 'User Management'};                   bread_crumbs_component => 'User Management'};
    
     $r->print(&Apache::loncommon::start_page('Custom Role Editor',      $r->print(&Apache::loncommon::start_page('Custom Role Editor',
                                              $head_script,$args).                                               $head_script,$args).
               $body_top);                $body_top);
Line 5017  sub handler { Line 5025  sub handler {
             } elsif ($env{'form.state'} eq 'done') {              } elsif ($env{'form.state'} eq 'done') {
                 $r->print('<h3>'.&mt('Enrollment request processing').'</h3>'."\n");                  $r->print('<h3>'.&mt('Enrollment request processing').'</h3>'."\n");
                 $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,                  $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
                               $cdom,$cnum,$coursedesc));                                 $cdom,$cnum,$coursedesc));
             }              }
         } else {          } else {
             $r->print(&header(undef,{'no_nav_bar' => 1}).              $r->print(&header(undef,{'no_nav_bar' => 1}).
Line 5037  sub handler { Line 5045  sub handler {
                     &update_helpdeskaccess($r,$permission,$brcrum);                      &update_helpdeskaccess($r,$permission,$brcrum);
                 } else {                  } else {
                     &print_helpdeskaccess_display($r,$permission,$brcrum);                      &print_helpdeskaccess_display($r,$permission,$brcrum);
                 }                  }    
             } else {              } else {
                 &print_helpdeskaccess_display($r,$permission,$brcrum);                  &print_helpdeskaccess_display($r,$permission,$brcrum);
             }              }
Line 5298  sub print_main_menu { Line 5306  sub print_main_menu {
                 );                  );
   if ($linkcontext eq 'domain') {    if ($linkcontext eq 'domain') {
       unless ($permission->{'cusr'}) {        unless ($permission->{'cusr'}) {
           $links{'domain'}{'singleuser'} = 'View a User';            $links{'domain'}{'singleuser'} = 'View a User'; 
           $linktitles{'domain'}{'singleuser'} = 'View information about a user in the domain';            $linktitles{'domain'}{'singleuser'} = 'View information about a user in the domain';
             
       }        }
   } elsif ($linkcontext eq 'course') {    } elsif ($linkcontext eq 'course') {
       unless ($permission->{'cusr'}) {        unless ($permission->{'cusr'}) {
Line 5417  sub print_main_menu { Line 5426  sub print_main_menu {
                                           groups => 'Community Groups',                                            groups => 'Community Groups',
                                         },                                          },
                        );                         );
           $linktext{'Placement'} = $linktext{'Course'};
   
         my %linktitle = (          my %linktitle = (
             'Course' => {              'Course' => {
Line 5431  sub print_main_menu { Line 5441  sub print_main_menu {
                            },                             },
         );          );
   
           $linktitle{'Placement'} = $linktitle{'Course'};
   
         push(@{ $menu[0]->{items} }, #Category: Single Users          push(@{ $menu[0]->{items} }, #Category: Single Users
             {                 {   
              linktext => $linktext{$crstype}{'single'},               linktext => $linktext{$crstype}{'single'},
Line 6050  ENDSCRIPT Line 6062  ENDSCRIPT
             } elsif ($item eq 'approval') {              } elsif ($item eq 'approval') {
                 my ($currnotified,$currapproval,%appchecked);                  my ($currnotified,$currapproval,%appchecked);
                 my %selfdescs = &Apache::lonuserutils::selfenroll_default_descs();                  my %selfdescs = &Apache::lonuserutils::selfenroll_default_descs();
                 if (ref($currsettings) eq 'HASH') {                  if (ref($currsettings) eq 'HASH') { 
                     $currnotified = $currsettings->{'selfenroll_notifylist'};                      $currnotified = $currsettings->{'selfenroll_notifylist'};
                     $currapproval = $currsettings->{'selfenroll_approval'};                      $currapproval = $currsettings->{'selfenroll_approval'};
                 }                  }
Line 6584  ENDSCRIPT Line 6596  ENDSCRIPT
             }              }
         }          }
         if (($context eq 'course') && ($viewablesec ne '')) {          if (($context eq 'course') && ($viewablesec ne '')) {
             next if ($roleslog{$id}{'logentry'}{'section'} ne $viewablesec);              next if ($roleslog{$id}{'logentry'}{'section'} ne $viewablesec); 
         }          }
         $count ++;          $count ++;
         next if ($count < $minshown);          next if ($count < $minshown);
Line 6674  sub print_useraccesslogs_display { Line 6686  sub print_useraccesslogs_display {
   
 # set breadcrumbs  # set breadcrumbs
     my %breadcrumb_text = &singleuser_breadcrumb('','domain',$udom);      my %breadcrumb_text = &singleuser_breadcrumb('','domain',$udom);
     my $prevphasestr;      push (@{$brcrum},
     if ($env{'form.popup'}) {          {href => "javascript:backPage($form)",
         $brcrum = [];           text => $breadcrumb_text{'search'}});
     } else {      my (@prevphases,$prevphasestr);
         push (@{$brcrum},      if ($env{'form.prevphases'}) {
             {href => "javascript:backPage($form)",          @prevphases = split(/,/,$env{'form.prevphases'});
              text => $breadcrumb_text{'search'}});          $prevphasestr = $env{'form.prevphases'};
         my @prevphases;      }
         if ($env{'form.prevphases'}) {      if (($env{'form.phase'} eq 'userpicked') || (grep(/^userpicked$/,@prevphases))) {
             @prevphases = split(/,/,$env{'form.prevphases'});          push(@{$brcrum},
             $prevphasestr = $env{'form.prevphases'};                {href => "javascript:backPage($form,'get_user_info','select')",
         }                 text => $breadcrumb_text{'userpicked'}});
         if (($env{'form.phase'} eq 'userpicked') || (grep(/^userpicked$/,@prevphases))) {          if ($env{'form.phase'} eq 'userpicked') {
             push(@{$brcrum},              $prevphasestr = 'userpicked';
                   {href => "javascript:backPage($form,'get_user_info','select')",  
                    text => $breadcrumb_text{'userpicked'}});  
             if ($env{'form.phase'} eq 'userpicked') {  
                 $prevphasestr = 'userpicked';  
             }  
         }          }
     }      }
     push(@{$brcrum},      push(@{$brcrum},
Line 6704  sub print_useraccesslogs_display { Line 6711  sub print_useraccesslogs_display {
                  bread_crumbs_component => 'User Management'};                   bread_crumbs_component => 'User Management'};
     if ($env{'form.popup'}) {      if ($env{'form.popup'}) {
         $args->{'no_nav_bar'} = 1;          $args->{'no_nav_bar'} = 1;
         $args->{'bread_crumbs_nomenu'} = 1;  
     }      }
   
 # set javascript  # set javascript
Line 6730  ENDSCRIPT Line 6736  ENDSCRIPT
     unless ($permission->{'activity'}) {      unless ($permission->{'activity'}) {
         $r->print('<p class="LC_warning">'          $r->print('<p class="LC_warning">'
                  .&mt('You do not have rights to display user access logs.')                   .&mt('You do not have rights to display user access logs.')
                  .'</p>');                   .'</p>'
         if ($env{'form.popup'}) {                   .&earlyout_accesslog_form($formname,$prevphasestr,$udom));
             $r->print('<p><a href="javascript:window.close()">'.&mt('Close window').'</a></p>');  
         } else {  
             $r->print(&earlyout_accesslog_form($formname,$prevphasestr,$udom));  
         }  
         return;          return;
     }      }
   
Line 6755  ENDSCRIPT Line 6757  ENDSCRIPT
         return;          return;
     }      }
   
     if (&Apache::lonnet::privileged($uname,$udom,  
                                     [$env{'request.role.domain'}],['dc','su'])) {  
         unless (&Apache::lonnet::privileged($env{'user.name'},$env{'user.domain'},  
                                             [$env{'request.role.domain'}],['dc','su'])) {  
             $r->print('<p class="LC_warning">'  
                  .&mt('You need to be a privileged user to display user access logs for [_1]',  
                       &Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($uname,$udom),  
                                                          $uname,$udom))  
                  .'</p>');  
             if ($env{'form.popup'}) {  
                 $r->print('<p><a href="javascript:window.close()">'.&mt('Close window').'</a></p>');  
             } else {  
                 $r->print(&earlyout_accesslog_form($formname,$prevphasestr,$udom));  
             }  
             return;  
         }  
     }  
   
 # set defaults  # set defaults
     my $now = time();      my $now = time();
     my $defstart = $now - (7*24*3600);      my $defstart = $now - (7*24*3600);
Line 6819  ENDSCRIPT Line 6803  ENDSCRIPT
     my ($nav_script,$nav_links);      my ($nav_script,$nav_links);
   
 # table header  # table header
     my $tableheader = '<h3>'.      my $tableheader =
         &mt('User access logs for: [_1]',          &Apache::loncommon::start_data_table_header_row()
             &Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($uname,$udom),$uname,$udom)).'</h3>'  
        .&Apache::loncommon::start_data_table_header_row()  
        .'<th>&nbsp;</th>'         .'<th>&nbsp;</th>'
        .'<th>'.&mt('When').'</th>'         .'<th>'.&mt('When').'</th>'
        .'<th>'.&mt('HostID').'</th>'         .'<th>'.&mt('HostID').'</th>'
Line 6859  ENDSCRIPT Line 6841  ENDSCRIPT
                 $showntableheader = 1;                  $showntableheader = 1;
             }              }
             my ($shown,$extra);              my ($shown,$extra);
             my ($event,$data) = split(/\s+/,&unescape($event),2);              my ($event,$data) = split(/\s+/,&unescape($event));
             if ($event eq 'Role') {              if ($event eq 'Role') {
                 my ($rolecode,$extent) = split(/\./,$data,2);                  my ($rolecode,$extent) = split(/\./,$data,2);
                 next if ($extent eq '');                  next if ($extent eq '');
Line 6911  ENDSCRIPT Line 6893  ENDSCRIPT
                 $shown = &mt('Role selection: [_1]',$rolename);                  $shown = &mt('Role selection: [_1]',$rolename);
             } else {              } else {
                 $shown = &mt($event);                  $shown = &mt($event);
                 if ($data =~ /^webdav/) {                  if ($data ne '') {
                     my ($path,$clientip) = split(/\s+/,$data,2);                     $extra = &mt('Client IP address: [_1]',$data);
                     $path =~ s/^webdav//;  
                     if ($clientip ne '') {  
                         $extra = &mt('Client IP address: [_1]',$clientip);  
                     }  
                     if ($path ne '') {  
                         $shown .= ' '.&mt('(WebDAV access to [_1])',$path);  
                     }  
                 } elsif ($data ne '') {  
                     $extra = &mt('Client IP address: [_1]',$data);  
                 }                  }
             }              }
             $r->print(              $r->print(
Line 7030  sub activity_display_filter { Line 7003  sub activity_display_filter {
     # Update Display button      # Update Display button
     $output .= '<p>'      $output .= '<p>'
               .'<input type="submit" value="'.&mt('Update Display').'" />'                .'<input type="submit" value="'.&mt('Update Display').'" />'
               .'</p><hr />';                .'</p>';
     return $output;      return $output;
 }  }
   
Line 7224  sub print_helpdeskaccess_display { Line 7197  sub print_helpdeskaccess_display {
     my $confname = $cdom.'-domainconfig';      my $confname = $cdom.'-domainconfig';
     my $crstype = &Apache::loncommon::course_type();      my $crstype = &Apache::loncommon::course_type();
   
     my @accesstypes = ('all','dh','da','none');      my @accesstypes = ('all','none');
     my ($numstatustypes,@jsarray);      my ($numstatustypes,@jsarray);
     my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($cdom);      my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($cdom);
     if (ref($types) eq 'ARRAY') {      if (ref($types) eq 'ARRAY') {
         if (@{$types} > 0) {          if (@{$types} > 0) {                
             $numstatustypes = scalar(@{$types});              $numstatustypes = scalar(@{$types});
             push(@accesstypes,'status');              push(@accesstypes,'status');
             @jsarray = ('bystatus');              @jsarray = ('bystatus');
         }          }
     }      }
     my %customroles = &get_domain_customroles($cdom,$confname);      my %customroles = &get_domain_customroles($cdom,$confname);
     my %domhelpdesk = &Apache::lonnet::get_active_domroles($cdom,['dh','da']);      my %domhelpdesk = &Apache::lonnet::get_active_domroles($cdom,['dh']);
     if (keys(%domhelpdesk)) {      if (keys(%domhelpdesk)) {
        push(@accesstypes,('inc','exc'));         push(@accesstypes,('inc','exc'));
        push(@jsarray,('notinc','notexc'));         push(@jsarray,('notinc','notexc'));
Line 7278  sub print_helpdeskaccess_display { Line 7251  sub print_helpdeskaccess_display {
                 $elements{$role.'_staff_inc'} = 'checkbox';                  $elements{$role.'_staff_inc'} = 'checkbox';
                 $elements{$role.'_staff_exc'} = 'checkbox';                  $elements{$role.'_staff_exc'} = 'checkbox';
             }              }
             $elements{$role.'_override'} = 'checkbox';              $elements{$role.'_override'} = 'checkbox';      
             if (ref($settings{$role}) eq 'HASH') {              if (ref($settings{$role}) eq 'HASH') {
                 if ($settings{$role}{'access'} ne '') {                  if ($settings{$role}{'access'} ne '') {
                     my $curraccess = $settings{$role}{'access'};                      my $curraccess = $settings{$role}{'access'};
Line 7342  function switchRoleTab(caller,role) { Line 7315  function switchRoleTab(caller,role) {
         }          }
     }      }
     return false;      return false;
 }  }         
   
 function helpdeskAccess(role) {  function helpdeskAccess(role) {
     var curraccess = null;      var curraccess = null;
Line 7356  function helpdeskAccess(role) { Line 7329  function helpdeskAccess(role) {
     var shown = Array();      var shown = Array();
     var hidden = Array();      var hidden = Array();
     if (curraccess == 'none') {      if (curraccess == 'none') {
         hidden = Array ('$hiddenstr');          hidden = Array ('$hiddenstr'); 
     } else {      } else {
         if (curraccess == 'status') {          if (curraccess == 'status') {
             shown = Array ('bystatus','privs');              shown = Array ('bystatus','privs'); 
             hidden = Array ('notinc','notexc');              hidden = Array ('notinc','notexc');    
         } else {          } else {
             if (curraccess == 'exc') {              if (curraccess == 'exc') {
                 shown = Array ('notexc','privs');                  shown = Array ('notexc','privs');
Line 7379  function helpdeskAccess(role) { Line 7352  function helpdeskAccess(role) {
     if (hidden.length > 0) {      if (hidden.length > 0) {
         for (var i=0; i<hidden.length; i++) {          for (var i=0; i<hidden.length; i++) {
             if (document.getElementById(role+'_'+hidden[i])) {              if (document.getElementById(role+'_'+hidden[i])) {
                 document.getElementById(role+'_'+hidden[i]).style.display = 'none';                  document.getElementById(role+'_'+hidden[i]).style.display = 'none'; 
             }              }
         }          }
     }      }
Line 7404  function toggleAccess(role) { Line 7377  function toggleAccess(role) {
             if (document.$formname.elements[role+'_incrs'][i].checked) {              if (document.$formname.elements[role+'_incrs'][i].checked) {
                 if (document.$formname.elements[role+'_incrs'][i].value == 1) {                  if (document.$formname.elements[role+'_incrs'][i].value == 1) {
                     document.getElementById(role+'_setindom').style.display = 'none';                      document.getElementById(role+'_setindom').style.display = 'none';
                     document.getElementById(role+'_setincrs').style.display = 'block';                      document.getElementById(role+'_setincrs').style.display = 'block'; 
                 } else {                  } else {
                     document.getElementById(role+'_setincrs').style.display = 'none';                      document.getElementById(role+'_setincrs').style.display = 'none';
                     document.getElementById(role+'_setindom').style.display = 'block';                      document.getElementById(role+'_setindom').style.display = 'block';
Line 7433  ENDJS Line 7406  ENDJS
                     'rou'    => 'Role usage',                      'rou'    => 'Role usage',
                     'whi'    => 'Which helpdesk personnel may use this role?',                      'whi'    => 'Which helpdesk personnel may use this role?',
                     'udd'    => 'Use domain default',                      'udd'    => 'Use domain default',
                     'all'    => 'All with domain helpdesk or helpdesk assistant role',                      'all'    => 'All',
                     'dh'     => 'All with domain helpdesk role',  
                     'da'     => 'All with domain helpdesk assistant role',  
                     'none'   => 'None',                      'none'   => 'None',
                     'status' => 'Determined based on institutional status',                      'status' => 'Determined based on institutional status',
                     'inc'    => 'Include all, but exclude specific personnel',                      'inc'    => 'Include all, but exclude specific personnel',  
                     'exc'    => 'Exclude all, but include specific personnel',                      'exc'    => 'Exclude all, but include specific personnel',
                     'hel'    => 'Helpdesk',                      'hel'    => 'Helpdesk',
                     'rpr'    => 'Role privileges',                      'rpr'    => 'Role privileges',
Line 7474  ENDJS Line 7445  ENDJS
         my @roles_by_num = ();          my @roles_by_num = ();
         foreach my $item (sort {$a <=> $b } (keys(%ordered))) {          foreach my $item (sort {$a <=> $b } (keys(%ordered))) {
             push(@roles_by_num,$ordered{$item});              push(@roles_by_num,$ordered{$item});
         }          } 
         $r->print('<p>'.$lt{'tfh'}.': <i>'.join('</i>, <i>',map { $description{$_}; } @roles_by_num).'</i>.');          $r->print('<p>'.$lt{'tfh'}.': <i>'.join('</i>, <i>',map { $description{$_}; } @roles_by_num).'</i>.');
         if ($permission->{'owner'}) {          if ($permission->{'owner'}) {
             $r->print('<br />'.$lt{'aco'}.'</p><p>');              $r->print('<br />'.$lt{'aco'}.'</p><p>');
Line 7497  ENDJS Line 7468  ENDJS
             my $id;              my $id;
             if ($count == 0) {              if ($count == 0) {
                 $id=' id="LC_current_minitab"';                  $id=' id="LC_current_minitab"';
                 $visibility{$role} = ' style="display:block"';                  $visibility{$role} = ' style="display:block"';    
             } else {              } else {
                 $visibility{$role} = ' style="display:none"';                  $visibility{$role} = ' style="display:none"';
             }              }
Line 7517  ENDJS Line 7488  ENDJS
                                 priv   => 'block',                                  priv   => 'block',
                              );                               );
             my (%selected,$overridden,$incrscheck,$indomcheck,$indomvis,$incrsvis);              my (%selected,$overridden,$incrscheck,$indomcheck,$indomvis,$incrsvis);
             if (ref($settings{$role}) eq 'HASH') {              if (ref($settings{$role}) eq 'HASH') { 
                 if ($settings{$role}{'access'} ne '') {                  if ($settings{$role}{'access'} ne '') {
                     $indomvis = ' style="display:none"';                      $indomvis = ' style="display:none"';
                     $incrsvis = ' style="display:block"';                      $incrsvis = ' style="display:block"';
                     $incrscheck = ' checked="checked"';                      $incrscheck = ' checked="checked"'; 
                     if ($settings{$role}{'access'} ne 'all') {                      if ($settings{$role}{'access'} ne 'all') {
                         $usecheck{$settings{$role}{'access'}} = $usecheck{'all'};                          $usecheck{$settings{$role}{'access'}} = $usecheck{'all'};
                         delete($usecheck{'all'});                          delete($usecheck{'all'});
Line 7548  ENDJS Line 7519  ENDJS
                 }                  }
             } else {              } else {
                 $indomcheck = ' checked="checked"';                  $indomcheck = ' checked="checked"';
                 $indomvis = ' style="display:block"';                  $indomvis = ' style="display:block"'; 
                 $incrsvis = ' style="display:none"';                  $incrsvis = ' style="display:none"';
             }              }
             $r->print('<div class="LC_left_float" id="'.$role.'_maindiv"'.$visibility{$role}.'>'.              $r->print('<div class="LC_left_float" id="'.$role.'_maindiv"'.$visibility{$role}.'>'.
Line 7622  sub domain_adhoc_access { Line 7593  sub domain_adhoc_access {
             my $access = $domcurrent->{$role}{'access'};              my $access = $domcurrent->{$role}{'access'};
             if (($access eq '') || (!grep(/^\Q$access\E$/,@{$accesstypes}))) {              if (($access eq '') || (!grep(/^\Q$access\E$/,@{$accesstypes}))) {
                 $access = 'all';                  $access = 'all';
                 $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role',&Apache::lonnet::plaintext('dh'),                  $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));
                                                                                           &Apache::lonnet::plaintext('da'));  
             } elsif ($access eq 'status') {              } elsif ($access eq 'status') {
                 if (ref($domcurrent->{$role}{$access}) eq 'ARRAY') {                  if (ref($domcurrent->{$role}{$access}) eq 'ARRAY') {
                     my @shown;                      my @shown;
Line 7639  sub domain_adhoc_access { Line 7609  sub domain_adhoc_access {
                     }                      }
                     if (@shown) {                      if (@shown) {
                         my $shownstatus = join(' '.&mt('or').' ',@shown);                          my $shownstatus = join(' '.&mt('or').' ',@shown);
                         $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role, and institutional status: [_3]',                          $domusage{$role} = &mt('Any user in domain with active [_1] role, and institutional status: [_2]',
                                                &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$shownstatus);                                                 &Apache::lonnet::plaintext('dh'),$shownstatus);
                     } else {                      } else {
                         $domusage{$role} = &mt('No one in the domain');                          $domusage{$role} = &mt('No one in the domain');
                     }                      }
Line 7654  sub domain_adhoc_access { Line 7624  sub domain_adhoc_access {
                     }                      }
                     my $showninc = join(', ',@dominc);                      my $showninc = join(', ',@dominc);
                     if ($showninc ne '') {                      if ($showninc ne '') {
                         $domusage{$role} = &mt('Include any user in domain with active [_1] or [_2] role, except: [_3]',                          $domusage{$role} = &mt('Include any user in domain with active [_1] role, except: [_2]',
                                                &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$showninc);                                                 &Apache::lonnet::plaintext('dh'),$showninc);
                     } else {                      } else {
                         $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role',                          $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));
                                                &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'));  
                     }                      }
                 }                  }
             } elsif ($access eq 'exc') {              } elsif ($access eq 'exc') {
Line 7671  sub domain_adhoc_access { Line 7640  sub domain_adhoc_access {
                 }                  }
                 my $shownexc = join(', ',@domexc);                  my $shownexc = join(', ',@domexc);
                 if ($shownexc ne '') {                  if ($shownexc ne '') {
                     $domusage{$role} = &mt('Only the following in the domain with active [_1] or [_2] role: [_3]',                      $domusage{$role} = &mt('Only the following in the domain with active [_1] role: [_2]',
                                            &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$shownexc);                                             &Apache::lonnet::plaintext('dh'),$shownexc);
                 } else {                  } else {
                     $domusage{$role} = &mt('No one in the domain');                      $domusage{$role} = &mt('No one in the domain');
                 }                  }
             } elsif ($access eq 'none') {              } elsif ($access eq 'none') {
                 $domusage{$role} = &mt('No one in the domain');                  $domusage{$role} = &mt('No one in the domain');
             } elsif ($access eq 'dh') {  
                 $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));  
             } elsif ($access eq 'da') {  
                 $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('da'));  
             } elsif ($access eq 'all') {              } elsif ($access eq 'all') {
                 $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role',                  $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));
                                        &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'));  
             }              }
         } else {          } else {
             $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role',              $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));
                                    &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'));  
         }          }
     }      }
     return %domusage;      return %domusage;
Line 7756  sub role_priv_table { Line 7719  sub role_priv_table {
                 $checked = ' checked="checked"';                  $checked = ' checked="checked"';
             }              }
             $customstatus = '<img src="/adm/lonIcons/navmap.wrong.gif" alt="'.$lt{'dis'}.'" />';              $customstatus = '<img src="/adm/lonIcons/navmap.wrong.gif" alt="'.$lt{'dis'}.'" />';
             $ineffect = $customstatus;              $ineffect = $customstatus; 
         } elsif ((!$levelscurrent->{'course'}{$priv}) && ($on{$priv})) {          } elsif ((!$levelscurrent->{'course'}{$priv}) && ($on{$priv})) {
             if ($permission->{'owner'}) {              if ($permission->{'owner'}) {
                 $checked = ' checked="checked"';                  $checked = ' checked="checked"'; 
             }              }
             $customstatus = '<img src="/adm/lonIcons/navmap.correct.gif" alt="'.$lt{'ena'}.'" />';              $customstatus = '<img src="/adm/lonIcons/navmap.correct.gif" alt="'.$lt{'ena'}.'" />';
             $ineffect = $customstatus;              $ineffect = $customstatus; 
         }          }
         if ($permission->{'owner'}) {          if ($permission->{'owner'}) {
             $output .= '<input type="checkbox" name="'.$role.'_override" value="'.$priv.'"'.$checked.' />';              $output .= '<input type="checkbox" name="'.$role.'_override" value="'.$priv.'"'.$checked.' />';
Line 7777  sub role_priv_table { Line 7740  sub role_priv_table {
 }  }
   
 sub get_adhocrole_settings {  sub get_adhocrole_settings {
     my ($cid,$accesstypes,$types,$customroles,$settings,$overridden) = @_;      my ($cid,$accesstypes,$types,$customroles,$settings,$overridden) = @_;  
     return unless ((ref($accesstypes) eq 'ARRAY') && (ref($customroles) eq 'HASH') &&      return unless ((ref($accesstypes) eq 'ARRAY') && (ref($customroles) eq 'HASH') &&
                    (ref($settings) eq 'HASH') && (ref($overridden) eq 'HASH'));                     (ref($settings) eq 'HASH') && (ref($overridden) eq 'HASH'));
     foreach my $role (split(/,/,$env{'course.'.$cid.'.internal.adhocaccess'})) {      foreach my $role (split(/,/,$env{'course.'.$cid.'.internal.adhocaccess'})) {
Line 7869  sub update_helpdeskaccess { Line 7832  sub update_helpdeskaccess {
         $r->print('<p class="LC_error">'.&mt('You do not have permission to change helpdesk access.').'</p>');          $r->print('<p class="LC_error">'.&mt('You do not have permission to change helpdesk access.').'</p>');
         return;          return;
     }      }
     my @accesstypes = ('all','dh','da','none','status','inc','exc');      my @accesstypes = ('all','none','status','inc','exc');
     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 $confname = $cdom.'-domainconfig';      my $confname = $cdom.'-domainconfig';
Line 7879  sub update_helpdeskaccess { Line 7842  sub update_helpdeskaccess {
     my (%settings,%overridden);      my (%settings,%overridden);
     &get_adhocrole_settings($env{'request.course.id'},\@accesstypes,      &get_adhocrole_settings($env{'request.course.id'},\@accesstypes,
                             $types,\%customroles,\%settings,\%overridden);                              $types,\%customroles,\%settings,\%overridden);
     my %domhelpdesk = &Apache::lonnet::get_active_domroles($cdom,['dh','da']);      my %domhelpdesk = &Apache::lonnet::get_active_domroles($cdom,['dh']);
     my (%changed,%storehash,@todelete);      my (%changed,%storehash,@todelete);
   
     if (keys(%customroles)) {      if (keys(%customroles)) {
Line 7906  sub update_helpdeskaccess { Line 7869  sub update_helpdeskaccess {
                     push(@incrs,$role);                      push(@incrs,$role);
                     unless ($current{'access'} eq $access) {                      unless ($current{'access'} eq $access) {
                         $changed{$role}{'access'} = 1;                          $changed{$role}{'access'} = 1;
                         $storehash{'internal.adhoc.'.$role} = $access;                          $storehash{'internal.adhoc.'.$role} = $access; 
                     }                      }
                     if ($access eq 'status') {                      if ($access eq 'status') {
                         my @statuses = &Apache::loncommon::get_env_multiple('form.'.$role.'_status');                          my @statuses = &Apache::loncommon::get_env_multiple('form.'.$role.'_status');
Line 7942  sub update_helpdeskaccess { Line 7905  sub update_helpdeskaccess {
                         my @currstaff;                          my @currstaff;
                         foreach my $person (sort(@personnel)) {                          foreach my $person (sort(@personnel)) {
                             if ($domhelpdesk{$person}) {                              if ($domhelpdesk{$person}) {
                                 push(@stored,$person);                                  push(@stored,$person); 
                             }                              }
                         }                          }
                         if (ref($current{$access}) eq 'ARRAY') {                          if (ref($current{$access}) eq 'ARRAY') {
Line 7988  sub update_helpdeskaccess { Line 7951  sub update_helpdeskaccess {
                 &Apache::lonuserutils::custom_role_privs($customroles{$role},\%full,\%levels,\%levelscurrent);                  &Apache::lonuserutils::custom_role_privs($customroles{$role},\%full,\%levels,\%levelscurrent);
                 my (@updatedon,@updatedoff,@override);                  my (@updatedon,@updatedoff,@override);
                 @override = &Apache::loncommon::get_env_multiple('form.'.$role.'_override');                  @override = &Apache::loncommon::get_env_multiple('form.'.$role.'_override');
                 if (@override) {                  if (@override) { 
                     foreach my $priv (sort(keys(%full))) {                      foreach my $priv (sort(keys(%full))) {
                         next unless ($levels{'course'}{$priv});                          next unless ($levels{'course'}{$priv});
                         if (grep(/^\Q$priv\E$/,@override)) {                          if (grep(/^\Q$priv\E$/,@override)) {
Line 8001  sub update_helpdeskaccess { Line 7964  sub update_helpdeskaccess {
                     }                      }
                 }                  }
                 if (@updatedon) {                  if (@updatedon) {
                     $newsettings{$role}{'on'} = join('</li><li>', map { &Apache::lonnet::plaintext($_,$crstype) } (@updatedon));                      $newsettings{$role}{'on'} = join('</li><li>', map { &Apache::lonnet::plaintext($_,$crstype) } (@updatedon)); 
                 }                  }
                 if (@updatedoff) {                  if (@updatedoff) {
                     $newsettings{$role}{'off'} = join('</li><li>', map { &Apache::lonnet::plaintext($_,$crstype) } (@updatedoff));                      $newsettings{$role}{'off'} = join('</li><li>', map { &Apache::lonnet::plaintext($_,$crstype) } (@updatedoff));
Line 8109  sub update_helpdeskaccess { Line 8072  sub update_helpdeskaccess {
                     push(@roles_by_num,$ordered{$item});                      push(@roles_by_num,$ordered{$item});
                 }                  }
                 %domusage = &domain_adhoc_access(\%changed,\%domcurrent,\@accesstypes,$usertypes,$othertitle);                  %domusage = &domain_adhoc_access(\%changed,\%domcurrent,\@accesstypes,$usertypes,$othertitle);
                 $r->print(&mt('Helpdesk access settings have been changed as follows').'<br />');                  $r->print(&mt('Helpdesk access settings have been changed as follows').'<br />'); 
                 $r->print('<ul>');                  $r->print('<ul>');
                 foreach my $role (@roles_by_num) {                  foreach my $role (@roles_by_num) {
                     next unless (ref($changed{$role}) eq 'HASH');                      next unless (ref($changed{$role}) eq 'HASH');
                     $r->print('<li>'.&mt('Ad hoc role').': <b>'.$description{$role}.'</b>'.                      $r->print('<li>'.&mt('Ad hoc role').': <b>'.$description{$role}.'</b>'.
                               '<ul>');                                '<ul>');
                     if ($changed{$role}{'access'} || $changed{$role}{'status'} || $changed{$role}{'inc'} || $changed{$role}{'exc'}) {                      if ($changed{$role}{'access'} || $changed{$role}{'status'} || $changed{$role}{'inc'} || $changed{$role}{'exc'}) { 
                         $r->print('<li>');                          $r->print('<li>');
                         if ($env{'form.'.$role.'_incrs'}) {                          if ($env{'form.'.$role.'_incrs'}) {
                             if ($newsettings{$role}{'access'} eq 'all') {                              if ($newsettings{$role}{'access'} eq 'all') {
                                 $r->print(&mt('All helpdesk staff can access '.lc($crstype).' with this role.'));                                  $r->print(&mt('All helpdesk staff can access '.lc($crstype).' with this role.'));
                             } elsif ($newsettings{$role}{'access'} eq 'dh') {  
                                 $r->print(&mt('Helpdesk staff can use this role if they have an active [_1] role',  
                                               &Apache::lonnet::plaintext('dh')));  
                             } elsif ($newsettings{$role}{'access'} eq 'da') {  
                                 $r->print(&mt('Helpdesk staff can use this role if they have an active [_1] role',  
                                               &Apache::lonnet::plaintext('da')));  
                             } elsif ($newsettings{$role}{'access'} eq 'none') {                              } elsif ($newsettings{$role}{'access'} eq 'none') {
                                 $r->print(&mt('No helpdesk staff can access '.lc($crstype).' with this role.'));                                  $r->print(&mt('No helpdesk staff can access '.lc($crstype).' with this role.'));
                             } elsif ($newsettings{$role}{'access'} eq 'status') {                              } elsif ($newsettings{$role}{'access'} eq 'status') {
                                 if ($newsettings{$role}{'status'}) {                                  if ($newsettings{$role}{'status'}) {
                                     my ($access,$rest) = split(/=/,$storehash{'internal.adhoc.'.$role});                                      my ($access,$rest) = split(/=/,$storehash{'internal.adhoc.'.$role});
                                     if (split(/,/,$rest) > 1) {                                      if (split(/,/,$rest) > 1) {  
                                         $r->print(&mt('Helpdesk staff can use this role if their institutional type is one of: [_1].',                                          $r->print(&mt('Helpdesk staff can use this role if their institutional type is one of: [_1].',
                                                       $newsettings{$role}{'status'}));                                                        $newsettings{$role}{'status'}));
                                     } else {                                      } else {
Line 8166  sub update_helpdeskaccess { Line 8123  sub update_helpdeskaccess {
                                 $r->print('<li>'.&mt('Privileges which are available by default for this ad hoc role, but are disabled for this specific '.lc($crstype).':').                                  $r->print('<li>'.&mt('Privileges which are available by default for this ad hoc role, but are disabled for this specific '.lc($crstype).':').
                                           '<ul><li>'.$newsettings{$role}{'off'}.'</li></ul></li>');                                            '<ul><li>'.$newsettings{$role}{'off'}.'</li></ul></li>');
                             } else {                              } else {
                                 $r->print('<li>'.&mt('All privileges available by default for this ad hoc role are enabled.').'</li>');                                  $r->print('<li>'.&mt('All privileges available by default for this ad hoc role are enabled.').'</li>'); 
                             }                              }
                         }                          }
                         if ($changed{$role}{'on'}) {                          if ($changed{$role}{'on'}) {  
                             if ($newsettings{$role}{'on'}) {                              if ($newsettings{$role}{'on'}) {
                                 $r->print('<li>'.&mt('Privileges which are not available by default for this ad hoc role, but are enabled for this specific '.lc($crstype).':').                                  $r->print('<li>'.&mt('Privileges which are not available by default for this ad hoc role, but are enabled for this specific '.lc($crstype).':').
                                           '<ul><li>'.$newsettings{$role}{'on'}.'</li></ul></li>');                                            '<ul><li>'.$newsettings{$role}{'on'}.'</li></ul></li>');
                             } else {                              } else {
                                 $r->print('<li>'.&mt('None of the privileges unavailable by default for this ad hoc role are enabled.').'</li>');                                  $r->print('<li>'.&mt('None of the privileges unavailable by default for this ad hoc role are enabled.').'</li>'); 
                             }                              }
                         }                          }
                     }                      }
Line 8183  sub update_helpdeskaccess { Line 8140  sub update_helpdeskaccess {
                 $r->print('</ul>');                  $r->print('</ul>');
             }              }
         } else {          } else {
             $r->print(&mt('No changes made to helpdesk access settings.'));              $r->print(&mt('No changes made to helpdesk access settings.')); 
         }          }
     }      }
     return;      return;
Line 8662  sub build_search_response { Line 8619  sub build_search_response {
                                         ,' <a'.$helplink.'>'                                          ,' <a'.$helplink.'>'
                                         ,'</a>')                                          ,'</a>')
                                      .'<br />';                                       .'<br />';
                       
                     }                      }
                 }                  }
             }              }

Removed from v.1.406.2.13  
changed lines
  Added in v.1.429


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