[LON-CAPA-cvs] cvs: loncom /auth lonroles.pm roles.tab rolesplain.tab /interface domainprefs.pm loncreateuser.pm lonmenu.pm lonpickcourse.pm lonuserutils.pm /lonnet/perl lonnet.pm
raeburn
raeburn at source.lon-capa.org
Fri Jan 27 22:49:01 EST 2017
raeburn Sat Jan 28 03:49:01 2017 EDT
Modified files:
/loncom/interface domainprefs.pm loncreateuser.pm lonmenu.pm
lonpickcourse.pm lonuserutils.pm
/loncom/auth roles.tab rolesplain.tab lonroles.pm
/loncom/lonnet/perl lonnet.pm
Log:
- Domain Helpdesk Assistant role for use by domain helpdesk student employees
- browse access to shared repository (including own domain) is excluded.
-------------- next part --------------
Index: loncom/interface/domainprefs.pm
diff -u loncom/interface/domainprefs.pm:1.289 loncom/interface/domainprefs.pm:1.290
--- loncom/interface/domainprefs.pm:1.289 Mon Jan 23 23:50:11 2017
+++ loncom/interface/domainprefs.pm Sat Jan 28 03:48:44 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.289 2017/01/23 23:50:11 raeburn Exp $
+# $Id: domainprefs.pm,v 1.290 2017/01/28 03:48:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3259,7 +3259,7 @@
@jsarray = ('bystatus');
}
}
- my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh']);
+ my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh','da']);
if (keys(%domhelpdesk)) {
push(@accesstypes,('inc','exc'));
push(@jsarray,('notinc','notexc'));
@@ -12458,7 +12458,7 @@
my (@allpos,%newsettings,%changedprivs,$newrole);
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
my @accesstypes = ('all','none','status','inc','exc');
- my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh']);
+ my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh','da']);
my %lt = &Apache::lonlocal::texthash(
s => 'system',
d => 'domain',
Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.431 loncom/interface/loncreateuser.pm:1.432
--- loncom/interface/loncreateuser.pm:1.431 Sat Jan 28 02:56:41 2017
+++ loncom/interface/loncreateuser.pm Sat Jan 28 03:48:44 2017
@@ -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.432 2017/01/28 03:48:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -7218,7 +7218,7 @@
}
}
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'));
@@ -7603,7 +7603,8 @@
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 +7620,8 @@
}
if (@shown) {
my $shownstatus = join(' '.&mt('or').' ', at 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 +7635,11 @@
}
my $showninc = join(', ', at 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 +7652,20 @@
}
my $shownexc = join(', ', at 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') {
- $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 {
- $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;
@@ -7852,7 +7856,7 @@
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, at todelete);
if (keys(%customroles)) {
Index: loncom/interface/lonmenu.pm
diff -u loncom/interface/lonmenu.pm:1.465 loncom/interface/lonmenu.pm:1.466
--- loncom/interface/lonmenu.pm:1.465 Mon Jan 2 19:44:06 2017
+++ loncom/interface/lonmenu.pm Sat Jan 28 03:48:44 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.465 2017/01/02 19:44:06 raeburn Exp $
+# $Id: lonmenu.pm,v 1.466 2017/01/28 03:48:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2340,78 +2340,85 @@
(ref($courseprivs) eq 'HASH') && (ref($roledesc) eq 'HASH')) {
return;
}
- if ($env{"user.role.dh./$cdom/"}) {
- my ($start,$end)=split(/\./,$env{"user.role.dh./$cdom/"});
- my $now = time;
- if (!($start && ($now<$start)) && !($end && ($now>$end))) {
- my ($possroles,$description) = &Apache::lonnet::get_my_adhocroles($cdom.'_'.$cnum);
- my %available;
- if (ref($possroles) eq 'ARRAY') {
- map { $available{$_} = 1; } @{$possroles};
- }
- my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
- if (ref($domdefaults{'adhocroles'}) eq 'HASH') {
- if (keys(%{$domdefaults{'adhocroles'}})) {
- my $numsec = 1;
- my @sections;
- my ($allseclist,$cached) =
- &Apache::lonnet::is_cached_new('courseseclist',$cdom.'_'.$cnum);
- if (defined($cached)) {
- if ($allseclist ne '') {
- @sections = split(/,/,$allseclist);
- $numsec += scalar(@sections);
- }
- } else {
- my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
- @sections = sort(keys(%sections_count));
+ my $is_helpdesk = 0;
+ my $now = time;
+ foreach my $role ('dh','da') {
+ if ($env{"user.role.$role./$cdom/"}) {
+ my ($start,$end)=split(/\./,$env{"user.role.$role./$cdom/"});
+ if (!($start && ($now<$start)) && !($end && ($now>$end))) {
+ $is_helpdesk = 1;
+ last;
+ }
+ }
+ }
+ if ($is_helpdesk) {
+ my ($possroles,$description) = &Apache::lonnet::get_my_adhocroles($cdom.'_'.$cnum);
+ my %available;
+ if (ref($possroles) eq 'ARRAY') {
+ map { $available{$_} = 1; } @{$possroles};
+ }
+ my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
+ if (ref($domdefaults{'adhocroles'}) eq 'HASH') {
+ if (keys(%{$domdefaults{'adhocroles'}})) {
+ my $numsec = 1;
+ my @sections;
+ my ($allseclist,$cached) =
+ &Apache::lonnet::is_cached_new('courseseclist',$cdom.'_'.$cnum);
+ if (defined($cached)) {
+ if ($allseclist ne '') {
+ @sections = split(/,/,$allseclist);
$numsec += scalar(@sections);
- $allseclist = join(',', at sections);
- &Apache::lonnet::do_cache_new('courseseclist',$cdom.'_'.$cnum,$allseclist);
}
- my (%adhoc,$gotprivs);
- my $prefix = "cr/$cdom/$cdom".'-domainconfig';
- foreach my $role (keys(%{$domdefaults{'adhocroles'}})) {
- next if (($role eq '') || ($role =~ /\W/));
- $seccount->{"$prefix/$role"} = $numsec;
- $roledesc->{"$prefix/$role"} = $description->{$role};
- if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) {
- if (exists($env{"user.priv.$prefix/$role./$cdom/$cnum./"})) {
- $courseprivs->{"$prefix/$role./$cdom/$cnum./"} =
- $env{"user.priv.$prefix/$role./$cdom/$cnum./"};
- $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"} =
- $env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/"};
- $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"} =
- $env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/$cnum"};
- } else {
- unless ($gotprivs) {
- my ($adhocroles,$privscached) =
- &Apache::lonnet::is_cached_new('adhocroles',$cdom);
- if ((defined($privscached)) && (ref($adhocroles) eq 'HASH')) {
- %adhoc = %{$adhocroles};
- } else {
- my $confname = &Apache::lonnet::get_domainconfiguser($cdom);
- my %roledefs = &Apache::lonnet::dump('roles',$cdom,$confname,'rolesdef_');
- foreach my $key (keys(%roledefs)) {
- (undef,my $rolename) = split(/_/,$key);
- if ($rolename ne '') {
- my ($systempriv,$domainpriv,$coursepriv) = split(/\_/,$roledefs{$key});
- $coursepriv = &Apache::lonnet::course_adhocrole_privs($rolename,$cdom,$cnum,$coursepriv);
- $adhoc{$rolename} = join('_',($systempriv,$domainpriv,$coursepriv));
- }
+ } else {
+ my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
+ @sections = sort(keys(%sections_count));
+ $numsec += scalar(@sections);
+ $allseclist = join(',', at sections);
+ &Apache::lonnet::do_cache_new('courseseclist',$cdom.'_'.$cnum,$allseclist);
+ }
+ my (%adhoc,$gotprivs);
+ my $prefix = "cr/$cdom/$cdom".'-domainconfig';
+ foreach my $role (keys(%{$domdefaults{'adhocroles'}})) {
+ next if (($role eq '') || ($role =~ /\W/));
+ $seccount->{"$prefix/$role"} = $numsec;
+ $roledesc->{"$prefix/$role"} = $description->{$role};
+ if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) {
+ if (exists($env{"user.priv.$prefix/$role./$cdom/$cnum./"})) {
+ $courseprivs->{"$prefix/$role./$cdom/$cnum./"} =
+ $env{"user.priv.$prefix/$role./$cdom/$cnum./"};
+ $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"} =
+ $env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/"};
+ $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"} =
+ $env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/$cnum"};
+ } else {
+ unless ($gotprivs) {
+ my ($adhocroles,$privscached) =
+ &Apache::lonnet::is_cached_new('adhocroles',$cdom);
+ if ((defined($privscached)) && (ref($adhocroles) eq 'HASH')) {
+ %adhoc = %{$adhocroles};
+ } else {
+ my $confname = &Apache::lonnet::get_domainconfiguser($cdom);
+ my %roledefs = &Apache::lonnet::dump('roles',$cdom,$confname,'rolesdef_');
+ foreach my $key (keys(%roledefs)) {
+ (undef,my $rolename) = split(/_/,$key);
+ if ($rolename ne '') {
+ my ($systempriv,$domainpriv,$coursepriv) = split(/\_/,$roledefs{$key});
+ $coursepriv = &Apache::lonnet::course_adhocrole_privs($rolename,$cdom,$cnum,$coursepriv);
+ $adhoc{$rolename} = join('_',($systempriv,$domainpriv,$coursepriv));
}
- &Apache::lonnet::do_cache_new('adhocroles',$cdom,\%adhoc);
}
- $gotprivs = 1;
+ &Apache::lonnet::do_cache_new('adhocroles',$cdom,\%adhoc);
}
- ($courseprivs->{"$prefix/$role./$cdom/$cnum./"},
- $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"},
- $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"}) =
- split(/\_/,$adhoc{$role});
+ $gotprivs = 1;
}
+ ($courseprivs->{"$prefix/$role./$cdom/$cnum./"},
+ $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"},
+ $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"}) =
+ split(/\_/,$adhoc{$role});
}
- if ($available{$role}) {
- $courseroles->{"$prefix/$role"} = \@sections;
- }
+ }
+ if ($available{$role}) {
+ $courseroles->{"$prefix/$role"} = \@sections;
}
}
}
Index: loncom/interface/lonpickcourse.pm
diff -u loncom/interface/lonpickcourse.pm:1.125 loncom/interface/lonpickcourse.pm:1.126
--- loncom/interface/lonpickcourse.pm:1.125 Thu Jan 5 16:17:11 2017
+++ loncom/interface/lonpickcourse.pm Sat Jan 28 03:48:44 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Pick a course
#
-# $Id: lonpickcourse.pm,v 1.125 2017/01/05 16:17:11 raeburn Exp $
+# $Id: lonpickcourse.pm,v 1.126 2017/01/28 03:48:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -89,13 +89,13 @@
$title = 'Selecting '.$type.'(s)';
}
- # if called when a DC or DH is selecting a course
+ # if called when a DC, DH or DA is selecting a course
my ($roledom,$rolename) = split(/:/,$env{'form.roleelement'});
if ($roledom) {
$roleelement = '<input type="hidden" name="roleelement" value="'.$env{'form.roleelement'}.'" />';
$submitopener = &processpick();
$autosubmit = 'process_pick("'.$roledom.'","'.$rolename.'")';
- if ($rolename eq 'dh') {
+ if (($rolename eq 'dh') || ($rolename eq 'da')) {
my %lt = &Apache::lonlocal::texthash(
title => 'Ad hoc role selection',
preamble => 'Please choose an ad hoc role in the course.',
@@ -958,7 +958,7 @@
document.courselist.cnum.value = cname;
document.courselist.cdom.value = cdom;
}
- if ((openerForm == 'rolechoice') && (openerRole == 'dh')) {
+ if ((openerForm == 'rolechoice') && ((openerRole == 'dh') || (openerRole == 'da'))) {
\$("#LC_choose_adhoc").empty();
var http = new XMLHttpRequest();
var url = "/adm/pickcourse";
Index: loncom/interface/lonuserutils.pm
diff -u loncom/interface/lonuserutils.pm:1.181 loncom/interface/lonuserutils.pm:1.182
--- loncom/interface/lonuserutils.pm:1.181 Wed Jan 18 21:07:31 2017
+++ loncom/interface/lonuserutils.pm Sat Jan 28 03:48:44 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility functions for managing LON-CAPA user accounts
#
-# $Id: lonuserutils.pm,v 1.181 2017/01/18 21:07:31 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.182 2017/01/28 03:48:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -5833,7 +5833,7 @@
} elsif ($context eq 'author') {
@allroles = ('ca','aa');
} elsif ($context eq 'domain') {
- @allroles = ('li','ad','dg','dh','sc','au','dc');
+ @allroles = ('li','ad','dg','dh','da','sc','au','dc');
}
return @allroles;
}
Index: loncom/auth/roles.tab
diff -u loncom/auth/roles.tab:1.69 loncom/auth/roles.tab:1.70
--- loncom/auth/roles.tab:1.69 Tue Nov 22 00:44:59 2016
+++ loncom/auth/roles.tab Sat Jan 28 03:48:52 2017
@@ -1,6 +1,6 @@
su:s csu&U:sma:mau:cdc&U:dro:psa:adv
dc:s bre:sma:adv:mcr:srm
-dc:d cli&UIK:cau&UIK:cca&UIK:caa&UIK:cdg&UIK:cdh&UIK:mau:ccc&U:cco&U:cin&UIK:cta&UIK:cep&UIK:ccr&UIK:cst&UIK:cad&UIK:csc&UIK:dro:mky:psa:usc:mpq:mut:vac:eco&U
+dc:d cli&UIK:cau&UIK:cca&UIK:caa&UIK:cdg&UIK:cdh&UIK:cda&UIK:mau:ccc&U:cco&U:cin&UIK:cta&UIK:cep&UIK:ccr&UIK:cst&UIK:cad&UIK:csc&UIK:dro:mky:psa:usc:mpq:mut:vac:eco&U
cc:s bre:sma:mcr:vsa:adv:vcl
cc:c cin&IK:cta&IK:cep&IK:ccr&IK:cst&IK:are:cre:ere:vgr:gan:dcm:evb:srm:dff:opa:mgr:mqg:mgq:rin:pch:plc:mdc:usc:vsa:vcl:mdg:vcg:pav:pfo:whn:las:pac:dch
co:s bro:sma:mcr:vsa:adv:vcl
@@ -30,6 +30,7 @@
aa:d are:ere
dg:d bre&R
dh:d sma:rar:dcd:dcc:vac:vur:udp:bre
+da:d sma:rar:dcd:dcc:vac:vur:udp
sc:d usc
Index: loncom/auth/rolesplain.tab
diff -u loncom/auth/rolesplain.tab:1.50 loncom/auth/rolesplain.tab:1.51
--- loncom/auth/rolesplain.tab:1.50 Tue Nov 22 00:44:59 2016
+++ loncom/auth/rolesplain.tab Sat Jan 28 03:48:52 2017
@@ -26,6 +26,7 @@
au:Author
dg:Domain Guest
dh:Domain Helpdesk
+da:Domain Helpdesk Assistant
ca:Co-Author
aa:Assistant Co-Author
sc:Bubblesheet Scanning Operator
Index: loncom/auth/lonroles.pm
diff -u loncom/auth/lonroles.pm:1.324 loncom/auth/lonroles.pm:1.325
--- loncom/auth/lonroles.pm:1.324 Sat Jan 21 19:58:05 2017
+++ loncom/auth/lonroles.pm Sat Jan 28 03:48:52 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.324 2017/01/21 19:58:05 raeburn Exp $
+# $Id: lonroles.pm,v 1.325 2017/01/28 03:48:52 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -255,8 +255,9 @@
my $envkey;
my %dcroles = ();
- my %dhroles = ();
- my ($numdc,$numdh,$numadhoc) = &check_for_adhoc(\%dcroles,\%dhroles,$update,$then);
+ my %helpdeskroles = ();
+ my ($numdc,$numhelpdesk,$numadhoc) =
+ &check_for_adhoc(\%dcroles,\%helpdeskroles,$update,$then);
my $loncaparev = $r->dir_config('lonVersion');
# ================================================================== Roles Init
@@ -268,9 +269,9 @@
my $custom_adhoc;
if ($env{'form.newrole'}) {
$env{'form.'.$env{'form.newrole'}}=1;
-# Check if this is a Domain Helpdesk role trying to enter a course
+# Check if this is a Domain Helpdesk or Domain Helpdesk Assistant role trying to enter a course
if ($env{'form.newrole'} =~ m{^cr/($match_domain)/\1\-domainconfig/\w+\./\1/$match_courseid$}) {
- if ($dhroles{$1}) {
+ if ($helpdeskroles{$1}) {
$custom_adhoc = 1;
}
}
@@ -321,9 +322,9 @@
}
}
}
- } elsif (($numdc > 0) || ($numdh > 0)) {
+ } elsif (($numdc > 0) || ($numhelpdesk > 0)) {
# Check if user is a DC trying to enter a course or author space and needs privs to be created
-# Check if user is a DH trying to enter a course and needs privs to be created
+# Check if user is a DH or DA trying to enter a course and needs privs to be created
foreach my $envkey (keys(%env)) {
# Is this an ad-hoc Coordinator role?
if ($numdc) {
@@ -393,10 +394,10 @@
last;
}
}
- if ($numdh) {
+ if ($numhelpdesk) {
# Is this an ad hoc custom role in a course/community?
if (my ($domain,$rolename,$coursenum,$sec) = ($envkey =~ m{^form\.cr/($match_domain)/\1\-domainconfig/(\w+)\./\1/($match_courseid)(?:/(\w+)|$)})) {
- if ($dhroles{$domain}) {
+ if ($helpdeskroles{$domain}) {
my ($possroles,$description) = &Apache::lonnet::get_my_adhocroles($domain.'_'.$coursenum,1);
if (ref($possroles) eq 'ARRAY') {
if (grep(/^\Q$rolename\E$/,@{$possroles})) {
@@ -783,6 +784,12 @@
$redirect_url);
return OK;
}
+ if ($role eq 'da') {
+ my $redirect_url = '/adm/menu/';
+ &redirect_user($r,&mt('Loading Domain Helpdesk Assistant Menu'),
+ $redirect_url);
+ return OK;
+ }
if ($role eq 'sc') {
my $redirect_url = '/adm/grades?command=scantronupload';
&redirect_user($r,&mt('Loading Data Upload Page'),
@@ -1080,7 +1087,7 @@
}
# ----------------------------------------------------------------------- Table
- if (($numdc > 0) || (($numdh > 0) && ($numadhoc > 0))) {
+ if (($numdc > 0) || (($numhelpdesk > 0) && ($numadhoc > 0))) {
$r->print(&coursepick_jscript());
$r->print(&Apache::loncommon::coursebrowser_javascript().
&Apache::loncommon::authorbrowser_javascript());
@@ -1116,7 +1123,7 @@
if ($role =~ m{^dc\./($match_domain)/$}
&& $dcroles{$1}) {
$output .= &adhoc_roles_row($1,'recent');
- } elsif ($role =~ m{^(dh)\./($match_domain)/$}) {
+ } elsif ($role =~ m{^(dh|da)\./($match_domain)/$}) {
$output .= &adhoc_customroles_row($1,$2,'recent',$update,$then);
}
} elsif ($numdc > 0) {
@@ -1548,7 +1555,7 @@
$output .= &adhoc_roles_row($1,'');
}
}
- } elsif ($sortrole->{$which} =~ m{^user\.role\.(dh)\./($match_domain)/}) {
+ } elsif ($sortrole->{$which} =~ m{^user\.role\.(dh|da)\./($match_domain)/}) {
$output .= &adhoc_customroles_row($1,$2,'',$update,$then);
}
}
@@ -1808,21 +1815,20 @@
}
sub check_for_adhoc {
- my ($dcroles,$dhroles,$update,$then) = @_;
+ my ($dcroles,$helpdeskroles,$update,$then) = @_;
my $numdc = 0;
- my $numdh = 0;
+ my $numhelpdesk = 0;
my $numadhoc = 0;
my $num_custom_adhoc = 0;
if ($env{'user.adv'}) {
foreach my $envkey (sort(keys(%env))) {
- if ($envkey=~/^user\.role\.(dc|dh)\.\/($match_domain)\/$/) {
+ if ($envkey=~/^user\.role\.(dc|dh|da)\.\/($match_domain)\/$/) {
my $role = $1;
my $roledom = $2;
my $liverole = 1;
my ($tstart,$tend)=split(/\./,$env{$envkey});
my $limit = $update;
- if ((($role eq 'dc') && ($env{'request.role'} eq 'dc./'.$roledom.'/')) ||
- (($role eq 'dh') && ($env{'request.role'} eq 'dh./'.$roledom.'/'))) {
+ if ($env{'request.role'} eq "$role./$roledom/") {
$limit = $then;
}
if ($tstart && $tstart>$limit) { $liverole = 0; }
@@ -1832,20 +1838,20 @@
$dcroles->{$roledom} = $envkey;
$numdc++;
} else {
- $dhroles->{$roledom} = $envkey;
+ $helpdeskroles->{$roledom} = $envkey;
my %domdefaults = &Apache::lonnet::get_domain_defaults($roledom);
if (ref($domdefaults{'adhocroles'}) eq 'HASH') {
if (keys(%{$domdefaults{'adhocroles'}})) {
$numadhoc ++;
}
}
- $numdh++;
+ $numhelpdesk++;
}
}
}
}
}
- return ($numdc,$numdh,$numadhoc);
+ return ($numdc,$numhelpdesk,$numadhoc);
}
sub adhoc_course_role {
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.1333 loncom/lonnet/perl/lonnet.pm:1.1334
--- loncom/lonnet/perl/lonnet.pm:1.1333 Thu Jan 5 18:44:41 2017
+++ loncom/lonnet/perl/lonnet.pm Sat Jan 28 03:49:00 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.1333 2017/01/05 18:44:41 raeburn Exp $
+# $Id: lonnet.pm,v 1.1334 2017/01/28 03:49:00 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -4116,7 +4116,7 @@
}
}
#
-# Reverse lookup of domain roles (dc, ad, li, sc, dh, au)
+# Reverse lookup of domain roles (dc, ad, li, sc, dh, da, au)
#
my %domrolebuffer = ();
foreach my $entry (keys(%domainrolehash)) {
@@ -4263,7 +4263,7 @@
{$trole.':'.$username.':'.$domain.':'.$env{'user.name'}.':'.$env{'user.domain'}.':'}
=$tend.':'.$tstart;
}
- if ($trole =~ /^(dc|ad|li|au|dg|sc|dh)/ ) {
+ if ($trole =~ /^(dc|ad|li|au|dg|sc|dh|da)/ ) {
my (undef,$rudom,$runame,$rsec)=split(/\//,$area);
$domainrolehash
{$trole.':'.$username.':'.$domain.':'.$runame.':'.$rudom.':'.$rsec}
@@ -4547,17 +4547,22 @@
}
}
if (($cdom ne '') && ($cnum ne '')) {
- if ($env{"user.role.dh./$cdom/"}) {
+ if (($env{"user.role.dh./$cdom/"}) || ($env{"user.role.da./$cdom/"})) {
my $then=$env{'user.login.time'};
my $update=$env{'user.update.time'};
my $liverole = 1;
- my ($tstart,$tend)=split(/\./,$env{'user.role.dh./'.$cdom});
- my $limit = $update;
- if ($env{'request.role'} eq 'dh./'.$cdom.'/') {
- $limit = $then;
+ foreach my $role ('dh','da') {
+ if ($env{"user.role.$role./$cdom/"}) {
+ my ($tstart,$tend)=split(/\./,$env{"user.role.$role./$cdom"});
+ my $limit = $update;
+ if ($env{'request.role'} eq "$role./$cdom/") {
+ $limit = $then;
+ }
+ if ($tstart && $tstart>$limit) { $liverole = 0; }
+ if ($tend && $tend <$limit) { $liverole = 0; }
+ last if ($liverole);
+ }
}
- if ($tstart && $tstart>$limit) { $liverole = 0; }
- if ($tend && $tend <$limit) { $liverole = 0; }
if ($liverole) {
if (&homeserver($cnum,$cdom) ne 'no_host') {
my ($accessref,$accessinfo,%access_in_dom);
@@ -9127,7 +9132,8 @@
&courserolelog($role,$uname,$udom,$url,$origstart,$origend,$delflag,
$selfenroll,$context);
} elsif (($role eq 'li') || ($role eq 'dg') || ($role eq 'sc') ||
- ($role eq 'au') || ($role eq 'dc') || ($role eq 'dh')) {
+ ($role eq 'au') || ($role eq 'dc') || ($role eq 'dh') ||
+ ($role eq 'da')) {
&domainrolelog($role,$uname,$udom,$url,$origstart,$origend,$delflag,
$context);
} elsif (($role eq 'ca') || ($role eq 'aa')) {
More information about the LON-CAPA-cvs
mailing list