--- loncom/interface/loncreateuser.pm	2017/01/28 02:56:41	1.431
+++ loncom/interface/loncreateuser.pm	2017/01/28 21:35:49	1.433
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.431 2017/01/28 02:56:41 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.433 2017/01/28 21:35:49 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -7207,7 +7207,7 @@ sub print_helpdeskaccess_display {
     my $confname = $cdom.'-domainconfig';
     my $crstype = &Apache::loncommon::course_type();
 
-    my @accesstypes = ('all','none');
+    my @accesstypes = ('all','anydh','anyda','none');
     my ($numstatustypes,@jsarray);
     my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($cdom);
     if (ref($types) eq 'ARRAY') {
@@ -7218,7 +7218,7 @@ sub print_helpdeskaccess_display {
         }
     }
     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)) {
        push(@accesstypes,('inc','exc'));
        push(@jsarray,('notinc','notexc'));
@@ -7416,7 +7416,9 @@ ENDJS
                     'rou'    => 'Role usage',
                     'whi'    => 'Which helpdesk personnel may use this role?',
                     'udd'    => 'Use domain default',
-                    'all'    => 'All',
+                    'all'    => 'All with domain helpdesk or helpdesk assistant role',
+                    'anydh'  => 'All with domain helpdesk role',
+                    'anyda'  => 'All with domain helpdesk assistant role',
                     'none'   => 'None',
                     'status' => 'Determined based on institutional status',
                     'inc'    => 'Include all, but exclude specific personnel',
@@ -7603,7 +7605,8 @@ sub domain_adhoc_access {
             my $access = $domcurrent->{$role}{'access'};
             if (($access eq '') || (!grep(/^\Q$access\E$/,@{$accesstypes}))) {
                 $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') {
                 if (ref($domcurrent->{$role}{$access}) eq 'ARRAY') {
                     my @shown;
@@ -7619,8 +7622,8 @@ sub domain_adhoc_access {
                     }
                     if (@shown) {
                         my $shownstatus = join(' '.&mt('or').' ',@shown);
-                        $domusage{$role} = &mt('Any user in domain with active [_1] role, and institutional status: [_2]',
-                                               &Apache::lonnet::plaintext('dh'),$shownstatus);
+                        $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role, and institutional status: [_3]',
+                                               &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$shownstatus);
                     } else {
                         $domusage{$role} = &mt('No one in the domain');
                     }
@@ -7634,10 +7637,11 @@ sub domain_adhoc_access {
                     }
                     my $showninc = join(', ',@dominc);
                     if ($showninc ne '') {
-                        $domusage{$role} = &mt('Include any user in domain with active [_1] role, except: [_2]',
-                                               &Apache::lonnet::plaintext('dh'),$showninc);
+                        $domusage{$role} = &mt('Include any user in domain with active [_1] or [_2] role, except: [_3]',
+                                               &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$showninc);
                     } 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') {
@@ -7650,18 +7654,24 @@ sub domain_adhoc_access {
                 }
                 my $shownexc = join(', ',@domexc);
                 if ($shownexc ne '') {
-                    $domusage{$role} = &mt('Only the following in the domain with active [_1] role: [_2]',
-                                           &Apache::lonnet::plaintext('dh'),$shownexc);
+                    $domusage{$role} = &mt('Only the following in the domain with active [_1] or [_2] role: [_3]',
+                                           &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'),$shownexc);
                 } else {
                     $domusage{$role} = &mt('No one in the domain');
                 }
             } elsif ($access eq 'none') {
                 $domusage{$role} = &mt('No one in the domain');
-            } elsif ($access eq 'all') {
+            } elsif ($access eq 'anydh') {
                 $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('dh'));
+            } elsif ($access eq 'anyda') {
+                $domusage{$role} = &mt('Any user in domain with active [_1] role',&Apache::lonnet::plaintext('da'));
+            } elsif ($access eq 'all') {
+                $domusage{$role} = &mt('Any user in domain with active [_1] or [_2] role',
+                                       &Apache::lonnet::plaintext('dh'),&Apache::lonnet::plaintext('da'));
             }
         } 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;
@@ -7842,7 +7852,7 @@ sub update_helpdeskaccess {
         $r->print('<p class="LC_error">'.&mt('You do not have permission to change helpdesk access.').'</p>');
         return;
     }
-    my @accesstypes = ('all','none','status','inc','exc');
+    my @accesstypes = ('all','anydh','anyda','none','status','inc','exc');
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $confname = $cdom.'-domainconfig';
@@ -7852,7 +7862,7 @@ sub update_helpdeskaccess {
     my (%settings,%overridden);
     &get_adhocrole_settings($env{'request.course.id'},\@accesstypes,
                             $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);
 
     if (keys(%customroles)) {
@@ -8093,6 +8103,12 @@ sub update_helpdeskaccess {
                         if ($env{'form.'.$role.'_incrs'}) {
                             if ($newsettings{$role}{'access'} eq 'all') {
                                 $r->print(&mt('All helpdesk staff can access '.lc($crstype).' with this role.'));
+                            } elsif ($newsettings{$role}{'access'} eq 'anydh') {
+                                $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 'anyda') {
+                                $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') {
                                 $r->print(&mt('No helpdesk staff can access '.lc($crstype).' with this role.'));
                             } elsif ($newsettings{$role}{'access'} eq 'status') {