Diff for /loncom/interface/loncreateuser.pm between versions 1.428 and 1.432

version 1.428, 2017/01/02 19:44:06 version 1.432, 2017/01/28 03:48:44
Line 860  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 1435  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 1455  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 1526  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 1760  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 1905  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 4384  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 5025  sub handler { Line 5024  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 5045  sub handler { Line 5044  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 5306  sub print_main_menu { Line 5305  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 6062  ENDSCRIPT Line 6060  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 6596  ENDSCRIPT Line 6594  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 6686  sub print_useraccesslogs_display { Line 6684  sub print_useraccesslogs_display {
   
 # set breadcrumbs  # set breadcrumbs
     my %breadcrumb_text = &singleuser_breadcrumb('','domain',$udom);      my %breadcrumb_text = &singleuser_breadcrumb('','domain',$udom);
     push (@{$brcrum},      my $prevphasestr;
         {href => "javascript:backPage($form)",      if ($env{'form.popup'}) {
          text => $breadcrumb_text{'search'}});          $brcrum = [];
     my (@prevphases,$prevphasestr);      } else {
     if ($env{'form.prevphases'}) {          push (@{$brcrum},
         @prevphases = split(/,/,$env{'form.prevphases'});              {href => "javascript:backPage($form)",
         $prevphasestr = $env{'form.prevphases'};               text => $breadcrumb_text{'search'}});
     }          my @prevphases;
     if (($env{'form.phase'} eq 'userpicked') || (grep(/^userpicked$/,@prevphases))) {          if ($env{'form.prevphases'}) {
         push(@{$brcrum},              @prevphases = split(/,/,$env{'form.prevphases'});
               {href => "javascript:backPage($form,'get_user_info','select')",              $prevphasestr = $env{'form.prevphases'};
                text => $breadcrumb_text{'userpicked'}});          }
         if ($env{'form.phase'} eq 'userpicked') {          if (($env{'form.phase'} eq 'userpicked') || (grep(/^userpicked$/,@prevphases))) {
             $prevphasestr = 'userpicked';              push(@{$brcrum},
                     {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 6711  sub print_useraccesslogs_display { Line 6714  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 6736  ENDSCRIPT Line 6740  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>');
                  .&earlyout_accesslog_form($formname,$prevphasestr,$udom));          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;          return;
     }      }
   
Line 6803  ENDSCRIPT Line 6811  ENDSCRIPT
     my ($nav_script,$nav_links);      my ($nav_script,$nav_links);
   
 # table header  # table header
     my $tableheader =      my $tableheader = '<h3>'.
         &Apache::loncommon::start_data_table_header_row()          &mt('User access logs for: [_1]',
               &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 7003  sub activity_display_filter { Line 7013  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>';                .'</p><hr />';
     return $output;      return $output;
 }  }
   
Line 7201  sub print_helpdeskaccess_display { Line 7211  sub print_helpdeskaccess_display {
     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']);      my %domhelpdesk = &Apache::lonnet::get_active_domroles($cdom,['dh','da']);
     if (keys(%domhelpdesk)) {      if (keys(%domhelpdesk)) {
        push(@accesstypes,('inc','exc'));         push(@accesstypes,('inc','exc'));
        push(@jsarray,('notinc','notexc'));         push(@jsarray,('notinc','notexc'));
Line 7251  sub print_helpdeskaccess_display { Line 7261  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 7315  function switchRoleTab(caller,role) { Line 7325  function switchRoleTab(caller,role) {
         }          }
     }      }
     return false;      return false;
 }           }
   
 function helpdeskAccess(role) {  function helpdeskAccess(role) {
     var curraccess = null;      var curraccess = null;
Line 7329  function helpdeskAccess(role) { Line 7339  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 7352  function helpdeskAccess(role) { Line 7362  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 7377  function toggleAccess(role) { Line 7387  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 7409  ENDJS Line 7419  ENDJS
                     'all'    => 'All',                      'all'    => 'All',
                     '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 7445  ENDJS Line 7455  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'}.': <b>'.join('</b>, <b>',map { $description{$_}; } @roles_by_num).'</b>.');          $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>');
             $r->print('<input type="hidden" name="state" value="process" />'.              $r->print('<input type="hidden" name="state" value="process" />'.
Line 7468  ENDJS Line 7478  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 7488  ENDJS Line 7498  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 7519  ENDJS Line 7529  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 7572  ENDJS Line 7582  ENDJS
                       &role_priv_table($role,$permission,$crstype,\%full,\%levels,\%levelscurrent,$overridden{$role}).                        &role_priv_table($role,$permission,$crstype,\%full,\%levels,\%levelscurrent,$overridden{$role}).
                       '</fieldset></div><div style="padding:0;clear:both;margin:0;border:0"></div>');                        '</fieldset></div><div style="padding:0;clear:both;margin:0;border:0"></div>');
         }          }
           if ($permission->{'owner'}) {
               $r->print('<p><input type="submit" value="'.&mt('Save changes').'" /></p>');
           }
     } else {      } else {
         $r->print(&mt('Helpdesk roles have not yet been created in this domain.'));          $r->print(&mt('Helpdesk roles have not yet been created in this domain.'));
     }      }
Line 7590  sub domain_adhoc_access { Line 7603  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] role',&Apache::lonnet::plaintext('dh'));                  $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] 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 7606  sub domain_adhoc_access { Line 7620  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] role, and institutional status: [_2]',                          $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role, and institutional status: [_3]',
                                                &Apache::lonnet::plaintext('dh'),$shownstatus);                                                 &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$shownstatus);
                     } else {                      } else {
                         $domusage{$role} = &mt('No one in the domain');                          $domusage{$role} = &mt('No one in the domain');
                     }                      }
Line 7621  sub domain_adhoc_access { Line 7635  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] role, except: [_2]',                          $domusage{$role} = &mt('Include any user in domain with active [_1] or [_2] role, except: [_3]',
                                                &Apache::lonnet::plaintext('dh'),$showninc);                                                 &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$showninc);
                     } else {                      } else {
                         $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));                          $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role',
                                                  &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'));
                     }                      }
                 }                  }
             } elsif ($access eq 'exc') {              } elsif ($access eq 'exc') {
Line 7637  sub domain_adhoc_access { Line 7652  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] role: [_2]',                      $domusage{$role} = &mt('Only the following in the domain with active [_1] or [_2] role: [_3]',
                                            &Apache::lonnet::plaintext('dh'),$shownexc);                                             &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$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 'all') {              } elsif ($access eq 'all') {
                 $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));                  $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role',
                                          &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'));
             }              }
         } else {          } else {
             $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));              $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role',
                                      &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'));
         }          }
     }      }
     return %domusage;      return %domusage;
Line 7716  sub role_priv_table { Line 7733  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 7737  sub role_priv_table { Line 7754  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 7839  sub update_helpdeskaccess { Line 7856  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']);      my %domhelpdesk = &Apache::lonnet::get_active_domroles($cdom,['dh','da']);
     my (%changed,%storehash,@todelete);      my (%changed,%storehash,@todelete);
   
     if (keys(%customroles)) {      if (keys(%customroles)) {
Line 7866  sub update_helpdeskaccess { Line 7883  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 7902  sub update_helpdeskaccess { Line 7919  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 7948  sub update_helpdeskaccess { Line 7965  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 7961  sub update_helpdeskaccess { Line 7978  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 8069  sub update_helpdeskaccess { Line 8086  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') {
Line 8085  sub update_helpdeskaccess { Line 8102  sub update_helpdeskaccess {
                             } 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 8120  sub update_helpdeskaccess { Line 8137  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 8137  sub update_helpdeskaccess { Line 8154  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 8616  sub build_search_response { Line 8633  sub build_search_response {
                                         ,' <a'.$helplink.'>'                                          ,' <a'.$helplink.'>'
                                         ,'</a>')                                          ,'</a>')
                                      .'<br />';                                       .'<br />';
                       
                     }                      }
                 }                  }
             }              }

Removed from v.1.428  
changed lines
  Added in v.1.432


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